From 1c91c02c99658c5bba6473b6336af3ad5c3094a2 Mon Sep 17 00:00:00 2001 From: Olavo Rocha Date: Tue, 16 Feb 2016 01:45:11 -0300 Subject: [PATCH 1/6] Setting ofx160 as native option; --- SGMLReader.nuspec | 2 +- SgmlReader.sln | 26 +++++++++++++------------- default.ps1 | 2 +- sgmlreaderdll/SgmlReader.cs | 11 +++++++++++ sgmlreaderdll/SgmlReaderDll.csproj | 7 +++---- 5 files changed, 29 insertions(+), 19 deletions(-) diff --git a/SGMLReader.nuspec b/SGMLReader.nuspec index f9e743d..fe4987d 100644 --- a/SGMLReader.nuspec +++ b/SGMLReader.nuspec @@ -2,7 +2,7 @@ SgmlReader - 1.8.12 + 1.8.13 Chris Lovett, Steve Bjorg Steve Bjorg, Andy Sherwood https://github.com/MindTouch/SGMLReader/blob/master/license.txt diff --git a/SgmlReader.sln b/SgmlReader.sln index a1a9a31..c2bcee0 100644 --- a/SgmlReader.sln +++ b/SgmlReader.sln @@ -1,6 +1,8 @@  -Microsoft Visual Studio Solution File, Format Version 11.00 -# Visual Studio 2010 +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 14 +VisualStudioVersion = 14.0.24720.0 +MinimumVisualStudioVersion = 10.0.40219.1 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SgmlReader", "SgmlReader\SgmlReader.csproj", "{606C348A-9A72-4179-9C55-4DD9914C22CC}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SgmlReaderDll", "SgmlReaderDll\SgmlReaderDll.csproj", "{499527FF-AE52-450F-B3E3-4AD53E1712AD}" @@ -11,10 +13,10 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution ProjectSection(SolutionItems) = preProject build.ps1 = build.ps1 default.ps1 = default.ps1 - SGMLReader.nuspec = SGMLReader.nuspec + Demo.aspx = Demo.aspx license.txt = license.txt ReadMe.md = ReadMe.md - Demo.aspx = Demo.aspx + SGMLReader.nuspec = SGMLReader.nuspec EndProjectSection EndProject Global @@ -24,16 +26,16 @@ Global Release|Any CPU = Release|Any CPU EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution - {499527FF-AE52-450F-B3E3-4AD53E1712AD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {499527FF-AE52-450F-B3E3-4AD53E1712AD}.Debug|Any CPU.Build.0 = Debug|Any CPU - {499527FF-AE52-450F-B3E3-4AD53E1712AD}.Default|Any CPU.ActiveCfg = Debug|Any CPU - {499527FF-AE52-450F-B3E3-4AD53E1712AD}.Release|Any CPU.ActiveCfg = Release|Any CPU - {499527FF-AE52-450F-B3E3-4AD53E1712AD}.Release|Any CPU.Build.0 = Release|Any CPU {606C348A-9A72-4179-9C55-4DD9914C22CC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {606C348A-9A72-4179-9C55-4DD9914C22CC}.Debug|Any CPU.Build.0 = Debug|Any CPU {606C348A-9A72-4179-9C55-4DD9914C22CC}.Default|Any CPU.ActiveCfg = Debug|Any CPU {606C348A-9A72-4179-9C55-4DD9914C22CC}.Release|Any CPU.ActiveCfg = Release|Any CPU {606C348A-9A72-4179-9C55-4DD9914C22CC}.Release|Any CPU.Build.0 = Release|Any CPU + {499527FF-AE52-450F-B3E3-4AD53E1712AD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {499527FF-AE52-450F-B3E3-4AD53E1712AD}.Debug|Any CPU.Build.0 = Debug|Any CPU + {499527FF-AE52-450F-B3E3-4AD53E1712AD}.Default|Any CPU.ActiveCfg = Debug|Any CPU + {499527FF-AE52-450F-B3E3-4AD53E1712AD}.Release|Any CPU.ActiveCfg = Release|Any CPU + {499527FF-AE52-450F-B3E3-4AD53E1712AD}.Release|Any CPU.Build.0 = Release|Any CPU {9CC3FC29-375F-44F1-95BE-D52246CC7B3E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {9CC3FC29-375F-44F1-95BE-D52246CC7B3E}.Debug|Any CPU.Build.0 = Debug|Any CPU {9CC3FC29-375F-44F1-95BE-D52246CC7B3E}.Default|Any CPU.ActiveCfg = Debug|Any CPU @@ -41,12 +43,10 @@ Global {9CC3FC29-375F-44F1-95BE-D52246CC7B3E}.Release|Any CPU.ActiveCfg = Release|Any CPU {9CC3FC29-375F-44F1-95BE-D52246CC7B3E}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection - GlobalSection(NestedProjects) = preSolution + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE EndGlobalSection GlobalSection(MonoDevelopProperties) = preSolution StartupItem = SgmlReader\SgmlReader.csproj EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection EndGlobal diff --git a/default.ps1 b/default.ps1 index 98e67bc..859ca9a 100644 --- a/default.ps1 +++ b/default.ps1 @@ -14,7 +14,7 @@ task Init -depends Clean { task Compile -depends Init { $sources = gci ".\sgmlreaderdll" -r -fi *.cs |% { $_.FullName } - csc /target:library /out:$out $sources /keyfile:.\sgmlreaderdll\sgmlreader.snk /resource:".\SgmlReader\Html.dtd,SgmlReaderDll.Html.dtd" + csc /target:library /out:$out $sources /keyfile:.\sgmlreaderdll\sgmlreader.snk /resource:".\SgmlReader\Html.dtd,.\SgmlReader\ofx160.dtd,SgmlReaderDll.Html.dtd" } task Test -depends Compile { diff --git a/sgmlreaderdll/SgmlReader.cs b/sgmlreaderdll/SgmlReader.cs index 8c64913..75595e5 100644 --- a/sgmlreaderdll/SgmlReader.cs +++ b/sgmlreaderdll/SgmlReader.cs @@ -452,6 +452,17 @@ private void LazyLoadDtd(Uri baseUri) this.m_dtd = SgmlDtd.Parse(baseUri, "HTML", sr, null, this.m_proxy, null); } } + else if (this.m_docType != null && StringUtilities.EqualsIgnoreCase(this.m_docType, "ofx")) + { + Assembly a = typeof(SgmlReader).Assembly; + string name = a.FullName.Split(',')[0] + ".ofx160.dtd"; + Stream stm = a.GetManifestResourceStream(name); + if (stm != null) + { + StreamReader sr = new StreamReader(stm); + this.m_dtd = SgmlDtd.Parse(baseUri, "OFX", sr, null, this.m_proxy, null); + } + } } else { diff --git a/sgmlreaderdll/SgmlReaderDll.csproj b/sgmlreaderdll/SgmlReaderDll.csproj index 1f6e45a..ee8de06 100644 --- a/sgmlreaderdll/SgmlReaderDll.csproj +++ b/sgmlreaderdll/SgmlReaderDll.csproj @@ -22,8 +22,8 @@ - True - 3.5 + true + 2.0 publish\ true Disk @@ -36,10 +36,8 @@ true 0 1.0.0.%2a - false false true - v2.0 bin\Debug\ @@ -98,6 +96,7 @@ + From 765afbc096aeca9df5d3e5ec3a996aa2cd1257f2 Mon Sep 17 00:00:00 2001 From: Olavo Rocha Date: Tue, 16 Feb 2016 01:51:04 -0300 Subject: [PATCH 2/6] Project Adjustments --- sgmlreaderdll/SgmlReaderDll.csproj | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sgmlreaderdll/SgmlReaderDll.csproj b/sgmlreaderdll/SgmlReaderDll.csproj index ee8de06..c8dbda2 100644 --- a/sgmlreaderdll/SgmlReaderDll.csproj +++ b/sgmlreaderdll/SgmlReaderDll.csproj @@ -22,8 +22,8 @@ - true - 2.0 + True + 3.5 publish\ true Disk From 45b7df6a0bd95186945247a5ef1d28ec7dad2133 Mon Sep 17 00:00:00 2001 From: Olavo Rocha Date: Sat, 21 Oct 2017 21:57:22 -0300 Subject: [PATCH 3/6] Port to netstandard2.0 --- .gitignore | 6 + Demo.aspx | 75 - ReadMe.md | 265 +- SGMLReader.nuspec | 16 - SGMLTests/AssemblyInfo.cs | 49 - SGMLTests/SGMLTests.csproj | 249 - SGMLTests/packages.config | 5 - SgmlReader.sln | 52 - SgmlReader/App.ico | Bin 1078 -> 0 bytes SgmlReader/AssemblyInfo.cs | 83 - SgmlReader/HTMLspecial.ent | 77 - SgmlReader/HTMLsymbol.ent | 241 - SgmlReader/{Main.cs => Program.cs} | 397 +- SgmlReader/SgmlReader.csproj | 138 +- SgmlReader/htmllat1.ent | 194 - SgmlReaderCli/Program.cs | 211 + SgmlReaderCli/SgmlReaderCli.csproj | 20 + SgmlReaderCore.sln | 54 + {SgmlReader => SgmlReaderCore}/Html.dtd | 3130 ++++---- SgmlReaderCore/SGMLReader.nuspec | 16 + .../SgmlParser.cs | 6620 ++++++++-------- .../SgmlReader.cs | 5420 ++++++------- SgmlReaderCore/SgmlReaderCore.csproj | 37 + {SGMLTests => SgmlReaderCore}/ofx160.dtd | 6990 ++++++++--------- .../sgmlreader.snk | Bin .../LoggingXmlReader.cs | 6 +- .../Resources/.DS_Store | Bin .../Resources/01.test | 18 +- .../Resources/02.test | 20 +- .../Resources/03.test | 18 +- .../Resources/04.test | 20 +- .../Resources/05.test | 20 +- .../Resources/06.test | 38 +- .../Resources/07.test | 30 +- .../Resources/08.test | 32 +- .../Resources/09.test | 12 +- .../Resources/10.test | 12 +- .../Resources/11.test | 16 +- .../Resources/12.test | 36 +- .../Resources/13.test | 12 +- .../Resources/14.test | 10 +- .../Resources/15.test | 16 +- .../Resources/16.test | 12 +- .../Resources/17.test | 16 +- .../Resources/18.test | 20 +- .../Resources/19.test | 24 +- .../Resources/20.test | 14 +- .../Resources/21.test | 32 +- .../Resources/22.test | 8 +- .../Resources/23.test | 10 +- .../Resources/24.test | 10 +- .../Resources/25.test | 10 +- .../Resources/26.test | 8 +- .../Resources/27.test | 8 +- .../Resources/28.test | 8 +- .../Resources/29.test | 8 +- .../Resources/30.test | 8 +- .../Resources/31.test | 10 +- .../Resources/32.test | 14 +- .../Resources/33.test | 8 +- .../Resources/34.test | 18 +- .../Resources/35.test | 30 +- .../Resources/36.test | 42 +- .../Resources/37.test | 8 +- .../Resources/38.test | 10 +- .../Resources/39.test | 8 +- .../Resources/40.test | 12 +- .../Resources/41.test | 12 +- .../Resources/42.test | 12 +- .../Resources/43.test | 8 +- .../Resources/44.test | 8 +- .../Resources/45.test | 4 +- .../Resources/46.test | 4 +- .../Resources/47.test | 10 +- .../Resources/48.test | 16 +- .../Resources/49.test | 10 +- .../Resources/50.test | 14 +- .../Resources/51.test | 12 +- .../Resources/52.test | 12 +- .../Resources/53.test | 182 +- .../Resources/54.test | 0 .../Resources/55.test | 12 +- .../Resources/56.test | 0 .../Resources/57.test | 4 +- .../Resources/58.test | 4 +- .../Resources/59.test | 4 +- .../Resources/60.test | 4 +- .../Resources/61.test | 0 .../Resources/original.test | 1024 +-- SgmlTestsCore/SgmlTestsCore.csproj | 21 + {SGMLTests => SgmlTestsCore}/Tests-Logic.cs | 294 +- {SGMLTests => SgmlTestsCore}/Tests.cs | 774 +- build.ps1 | 5 - default.ps1 | 28 - sgmlreaderdll/AssemblyInfo.cs | 83 - sgmlreaderdll/SgmlReaderDll.csproj | 136 - tools/nuget/NuGet.exe | Bin 650752 -> 0 bytes tools/psake/psake.ps1 | 46 - tools/psake/psake.psm1 | 702 -- 99 files changed, 13231 insertions(+), 15231 deletions(-) delete mode 100644 Demo.aspx delete mode 100644 SGMLReader.nuspec delete mode 100644 SGMLTests/AssemblyInfo.cs delete mode 100644 SGMLTests/SGMLTests.csproj delete mode 100644 SGMLTests/packages.config delete mode 100644 SgmlReader.sln delete mode 100644 SgmlReader/App.ico delete mode 100644 SgmlReader/AssemblyInfo.cs delete mode 100644 SgmlReader/HTMLspecial.ent delete mode 100644 SgmlReader/HTMLsymbol.ent rename SgmlReader/{Main.cs => Program.cs} (82%) delete mode 100644 SgmlReader/htmllat1.ent create mode 100644 SgmlReaderCli/Program.cs create mode 100644 SgmlReaderCli/SgmlReaderCli.csproj create mode 100644 SgmlReaderCore.sln rename {SgmlReader => SgmlReaderCore}/Html.dtd (97%) create mode 100644 SgmlReaderCore/SGMLReader.nuspec rename {sgmlreaderdll => SgmlReaderCore}/SgmlParser.cs (97%) rename {sgmlreaderdll => SgmlReaderCore}/SgmlReader.cs (97%) create mode 100644 SgmlReaderCore/SgmlReaderCore.csproj rename {SGMLTests => SgmlReaderCore}/ofx160.dtd (97%) rename {sgmlreaderdll => SgmlReaderCore}/sgmlreader.snk (100%) rename {SGMLTests => SgmlTestsCore}/LoggingXmlReader.cs (99%) rename {SGMLTests => SgmlTestsCore}/Resources/.DS_Store (100%) rename {SGMLTests => SgmlTestsCore}/Resources/01.test (92%) rename {SGMLTests => SgmlTestsCore}/Resources/02.test (92%) rename {SGMLTests => SgmlTestsCore}/Resources/03.test (93%) rename {SGMLTests => SgmlTestsCore}/Resources/04.test (93%) rename {SGMLTests => SgmlTestsCore}/Resources/05.test (93%) rename {SGMLTests => SgmlTestsCore}/Resources/06.test (96%) rename {SGMLTests => SgmlTestsCore}/Resources/07.test (96%) rename {SGMLTests => SgmlTestsCore}/Resources/08.test (94%) rename {SGMLTests => SgmlTestsCore}/Resources/09.test (95%) rename {SGMLTests => SgmlTestsCore}/Resources/10.test (96%) rename {SGMLTests => SgmlTestsCore}/Resources/11.test (95%) rename {SGMLTests => SgmlTestsCore}/Resources/12.test (89%) rename {SGMLTests => SgmlTestsCore}/Resources/13.test (92%) rename {SGMLTests => SgmlTestsCore}/Resources/14.test (95%) rename {SGMLTests => SgmlTestsCore}/Resources/15.test (97%) rename {SGMLTests => SgmlTestsCore}/Resources/16.test (92%) rename {SGMLTests => SgmlTestsCore}/Resources/17.test (94%) rename {SGMLTests => SgmlTestsCore}/Resources/18.test (96%) rename {SGMLTests => SgmlTestsCore}/Resources/19.test (94%) rename {SGMLTests => SgmlTestsCore}/Resources/20.test (95%) rename {SGMLTests => SgmlTestsCore}/Resources/21.test (97%) rename {SGMLTests => SgmlTestsCore}/Resources/22.test (97%) rename {SGMLTests => SgmlTestsCore}/Resources/23.test (98%) rename {SGMLTests => SgmlTestsCore}/Resources/24.test (97%) rename {SGMLTests => SgmlTestsCore}/Resources/25.test (97%) rename {SGMLTests => SgmlTestsCore}/Resources/26.test (97%) rename {SGMLTests => SgmlTestsCore}/Resources/27.test (97%) rename {SGMLTests => SgmlTestsCore}/Resources/28.test (97%) rename {SGMLTests => SgmlTestsCore}/Resources/29.test (97%) rename {SGMLTests => SgmlTestsCore}/Resources/30.test (97%) rename {SGMLTests => SgmlTestsCore}/Resources/31.test (91%) rename {SGMLTests => SgmlTestsCore}/Resources/32.test (81%) rename {SGMLTests => SgmlTestsCore}/Resources/33.test (95%) rename {SGMLTests => SgmlTestsCore}/Resources/34.test (95%) rename {SGMLTests => SgmlTestsCore}/Resources/35.test (93%) rename {SGMLTests => SgmlTestsCore}/Resources/36.test (92%) rename {SGMLTests => SgmlTestsCore}/Resources/37.test (97%) rename {SGMLTests => SgmlTestsCore}/Resources/38.test (95%) rename {SGMLTests => SgmlTestsCore}/Resources/39.test (95%) rename {SGMLTests => SgmlTestsCore}/Resources/40.test (90%) rename {SGMLTests => SgmlTestsCore}/Resources/41.test (95%) rename {SGMLTests => SgmlTestsCore}/Resources/42.test (95%) rename {SGMLTests => SgmlTestsCore}/Resources/43.test (96%) rename {SGMLTests => SgmlTestsCore}/Resources/44.test (91%) rename {SGMLTests => SgmlTestsCore}/Resources/45.test (96%) rename {SGMLTests => SgmlTestsCore}/Resources/46.test (96%) rename {SGMLTests => SgmlTestsCore}/Resources/47.test (93%) rename {SGMLTests => SgmlTestsCore}/Resources/48.test (93%) rename {SGMLTests => SgmlTestsCore}/Resources/49.test (93%) rename {SGMLTests => SgmlTestsCore}/Resources/50.test (96%) rename {SGMLTests => SgmlTestsCore}/Resources/51.test (97%) rename {SGMLTests => SgmlTestsCore}/Resources/52.test (97%) rename {SGMLTests => SgmlTestsCore}/Resources/53.test (95%) rename {SGMLTests => SgmlTestsCore}/Resources/54.test (100%) rename {SGMLTests => SgmlTestsCore}/Resources/55.test (96%) rename {SGMLTests => SgmlTestsCore}/Resources/56.test (100%) rename {SGMLTests => SgmlTestsCore}/Resources/57.test (92%) rename {SGMLTests => SgmlTestsCore}/Resources/58.test (93%) rename {SGMLTests => SgmlTestsCore}/Resources/59.test (93%) rename {SGMLTests => SgmlTestsCore}/Resources/60.test (94%) rename {SGMLTests => SgmlTestsCore}/Resources/61.test (100%) rename {SGMLTests => SgmlTestsCore}/Resources/original.test (94%) create mode 100644 SgmlTestsCore/SgmlTestsCore.csproj rename {SGMLTests => SgmlTestsCore}/Tests-Logic.cs (89%) rename {SGMLTests => SgmlTestsCore}/Tests.cs (88%) delete mode 100644 build.ps1 delete mode 100644 default.ps1 delete mode 100644 sgmlreaderdll/AssemblyInfo.cs delete mode 100644 sgmlreaderdll/SgmlReaderDll.csproj delete mode 100644 tools/nuget/NuGet.exe delete mode 100644 tools/psake/psake.ps1 delete mode 100644 tools/psake/psake.psm1 diff --git a/.gitignore b/.gitignore index fbe40b8..9e743e9 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,6 @@ bin/ +**/bin/ +*/Properties/ dist/ *resharper.user [Dd]ebug/ @@ -20,3 +22,7 @@ SGMLTests/test-results/*.xml test-results/*.xml *.test-cache build/ +.vs +.vscode +packages/ + diff --git a/Demo.aspx b/Demo.aspx deleted file mode 100644 index 0026301..0000000 --- a/Demo.aspx +++ /dev/null @@ -1,75 +0,0 @@ -<%@PAGE LANGUAGE=C# debug="true" validateRequest=false %> -<%@Import Namespace="System"%> -<%@Import Namespace="System.Xml"%> -<%@Import Namespace="System.Xml.Schema"%> -<%@Import Namespace="System.IO"%> -<%@Import Namespace="Sgml"%> - - - -

SgmlReader Demo

-
-

HTML

- -

XML

- -
- - - - - - -

-See Source Code -for this page. - - - \ No newline at end of file diff --git a/ReadMe.md b/ReadMe.md index 5221041..aff4c10 100644 --- a/ReadMe.md +++ b/ReadMe.md @@ -1,19 +1,13 @@ -# SgmlReader - Convert (almost) any HTML to valid XML +# SgmlReaderCore - Convert (almost) any HTML to valid XML (everywhere using C#) SgmlReader is a versatile C# .NET library written by Chris Lovett for parsing HTML/SGML files using the XmlReader API. A command line utility is also provided -which outputs the well formed XML result. The original community around -SgmlReader was hosted by -[GotDotNet](http://www.gotdotnet.com/Community/UserSamples/Details.aspx?SampleGuid=B90FDDCE-E60D-43F8-A5C4-C3BD760564BC), -but this site was phased out. An archived version of the original release is -still available in the [MSDN Code Gallery](http://code.msdn.microsoft.com/SgmlReader). +which outputs the well formed XML result. +[Exodus](http://www.exodusfinancas.com.br) also uses the SgmlReader library in its framework. Changes in order to let OFX parsing was applied in the spirit +of the original author, we're providing these changes in our Exodus Repository: +[Exodus Sistemas repository](https://github.com/ExodusSistemas/SGMLReaderCore). -[MindTouch](http://mindtouch.com) uses the SgmlReader library extensively. Over -the last few years we have made many improvements to it. In the spirit -of the original author, we're providing back these changes in our -[GitHub SgmlReader repository](https://github.com/MindTouch/SGMLReader). - -## SgmlReaderDll API +## SgmlReaderCore API The SgmlReader is an implementation of the XmlReader API. So the only thing you really need to know is how to construct it. SgmlReader has a default constructor, @@ -41,7 +35,7 @@ optional. Then you can read from this reader like any other XmlReader class. return doc; } -### SgmlReader Properties +### SgmlReaderCore Properties * **SgmlDtd Dtd**
Specify the SgmlDtd object directly. This allows you to cache the Dtd and share @@ -73,13 +67,13 @@ DTD validation errors are written to this stream. * **string ErrorLogFile**
DTD validation errors are written to this log file. -## SgmlReader.exe Command Line Tool +## SgmlReaderCore.dll Command Line Tool ### Usage The command line executable version has the following options: - sgmlreader [InputUri] [OutputFile] + donet sgmlreader.dll [InputUri] [OutputFile] * -e "file" : Specifies a file to write error output to. The default is to generate no errors. The special name "$stderr" redirects errors to stderr @@ -103,21 +97,21 @@ the default being ".xml". Converts all .htm files to corresponding .xml files using the built in HTML DTD. - sgmlreader -html *.htm *.xml + donet sgmlreader.dll -html *.htm *.xml Converts all the MSN home page to XML storing the result in the local file "msn.xml". - sgmlreader -html http://www.msn.com -proxy myproxy:80 msn.xml + donet sgmlreader.dll -html http://www.msn.com -proxy myproxy:80 msn.xml Converts the given OFX file to XML using the SGML DTD "ofx160.dtd" specified in the test.ofx file. - sgmlreader -dtd ofx160.dtd test.ofx ofx.xml + donet sgmlreader.dll -dtd ofx160.dtd test.ofx ofx.xml ## Community If you have questions, please post them on -[StackOverflow](http://stackoverflow.com/questions/tagged/sgmlreader) and tag +[StackOverflow](http://stackoverflow.com/questions/tagged/sgmlreadercore) and tag them with *sgmlreader*. You may also email bugs, feedback and/or feature requests to Chris Lovett. @@ -128,240 +122,15 @@ You know that you're doing it right if your code is indistinguishable from existing code. 1. Run the unit test to make sure no regressions are being introduced. 1. Add a unit test to confirm your fix or feature. -1. Submit a pull request on [GitHub](https://github.com/MindTouch/SGMLReader). +1. Submit a pull request on [GitHub](https://github.com/ExodusSistemas/SGMLReaderCore). ## Release History -*Note:* all 1.8.x releases up to 1.8.7 are compatible with 1.8.0. Use assembly -redirection to account for newer versions when recompilation is not an option. - -### Release notes for 1.8.12 (2015-Nov-04) - -* Made sure Html.dtd was embedded as a resource with the correct name. (Bård Rolstad Henriksen) - -### Release notes for 1.8.11 (2013-Jan-27) - -* Pulled latest psake and nuget tools. (Andy Sherwood) -* Made sure Html.dtd was embedded as a resource in the build script for the -nuget package. (Andy Sherwood) - -### Release notes for 1.8.10 (2013-Jan-10) - -* Fixed AttributeCount and m_state problems for use under Mono. (Max Zhao) -* Decode unicode surrogate pairs. (CaptainCodeman) -* Incomplete entity codes are kept intact and escaped to produce valid HTML. (Marek Stój) - -### Release notes for 1.8.9 (2013-Jan-09) - -* Converted license from GPL 3 to Apache 2.0. -* Consolidated read-me files. -* Cleaned up solution and project files. - -### Release notes for 1.8.8 (2011-Sep-29) - -* Converted project files to Visual Studio 2010. (Andy Sherwood) -* Fully nugetized. Get log4net and nunit from nuget. Build nuget package with -build script using psake and powershell. (Andy Sherwood) - -### Release notes for 1.8.7 (2010-Apr-27) - -* Provide setting to ignore DTD in parsed document (again). - -### Release notes for 1.8.6 (2010-Feb-19) - -* Provide setting to ignore DTD in parsed document. -* An attribute with a missing value should be assumed to have the name of the -attribute as value. -* SgmlReader ExpandEntity with entities not ending in ';' and skips a character. -* SgmlReader adds 65535 character at the end of the string. -* Add test showing behavior of > char in string literals in XML. - -### Release notes for 1.8.5 (2009-Jul-19) - -* Unable to parse UTF-32 entities. -* Use StringComparison.OrdinalIgnoreCase instead of -StringComparison.InvariantCultureIgnoreCase. - -### Release notes for 1.8.4 (2009-May-19) - -* Corrupt attributes may lead to invalid attribute names, which make the -produced XML unparseable. -* Error when content contains prefixed XML processing instructions (e.g. -<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />). -* Added -ignore flag so tests known to fail can be ignored from the suite. -* Added test to re-parse output to make sure it's valid XML (.Net sometimes was -able to generate invalid XML). - -### Release notes for 1.8.3 (2009-Apr-03) - -* Fixed CData section parsing skips over characters. - -### Release notes for 1.8.2 (2008-Nov-26) - -* Fixed regression introduced by fixing bug 5150. -* An extra open quote/double-quote prevents the entire element from being read -properly. -* Replaced == string equality with culture invariant string.Compare(). -* Return 'null' as NameTable since none is used. -* Added '-noformat' switch for regression tests to suppress automatic -reformatting (useful for formatting tests). - -### Release notes for 1.8.1 (2008-Oct-08) - -* Unclosed HTML comment causes infinite loop. -* Don't use XmlNameTable with object comparisons; it becomes unreliable after a -while. - -### Release notes for 1.8.0 (2008-Jul-28) - -**BREAKING CHANGE:** requires .NET 2.0 - -* Major code clean-up. (thx jamesgmbutler for the contribution!) -* Add XML-only entity &apos; to HTML DTD. - -### Release notes for 1.7.5 (2008-Jul-01) - -* Missing quote in attribute value causes catastrophic failure. -* Unknown prefixes cannot be mapped to the same namespace. - -### Release notes for 1.7.4 (2008-Jun-03) - -* &sup2; entity is not recognized correctly. -* Added test for entities with digits. - -### Release notes for 1.7.3 (2008-May-05) - -* Never close the BODY tag early (it causes loss of content). -* Remove "<![CDATA[" inside CDATA sections. -* Remove "]]>" inside CDATA sections. -* Convert elements with invalid tag names into text (e.g. <foo@bar.com>). - -### Release notes for 1.7.2 (2007-Dec-07) - -* Fixed bug where parsing CDATA section skipped first character. -* Don't double parse commented out CDATA sections. -* Added support for namespaces on elements and attributes. -* Unknown prefixes on attributes and elements resolve to '#unknown' namespace. -* Fix bug when parsing down-level comments, like <![if IE]>. -* Don't allow attribute with invalid names (e.g. <p foo:="invalid" ;="bad">, -etc.). - -### Release notes for 1.7.1 (2007-Sep-25) - -* Added 'GetLiteralEntitiesLookup()' method. -* Fixed bugs with namespace prefixes on attributes and elements; prefixes are -now stripped automatically. -* Added SgmlReader constructor with XmlNameTable argument to avoid failed -comparisons when reusing the DTD. -* Ensured that SgmlReader is initialized identically when reusing a DTD. - -### Release notes for 1.7 - -* Fix bug reported by chriswang - MoveToAttribute didn't save state properly. -* Fix bug reported by starascendent - build on Visual Studio 2003 was broken. -* Fix bug reported by sanchen - ExpandCharEntity was messed up on hex entities. -* Fix bug reported by kojiishi - off by one bug in SniffName(). -* Fix bug reported by kojiishi - bug in loading XmlDocument from SgmlReader - - this was caused by the HTML document containing an embedded <?xml version='1.0'?> - declaration, so the SgmlReader now strips these. -* Added special stripping of punctuation characters between attributes like ",". - -### Release notes for 1.6 - -* Improve wrapping of HTML content with auto-generated <html></html> -container tags. - -### Release notes for 1.5 - -* Fix detection of ContentType=text/html and switch to HTML mode. -* Fix problems parsing DOCTYPE tag when case folding is on. -* Fix reading of XHTML DTD. -* Fix parsing of content of type CDATA that resulted in the error message -'Cannot have ']]>' inside an XML CDATA block'. -* Fix parsing of http://www.virtuelvis.com/download/162/evilml.html. -* Fix parsing of attributes missing the equals sign: height"4" (thanks to -Ulrich Schwanitz for his fix). -* Fix 'SniffWhitespace' thanks to "Windy Winter". -* Added TestSuite project. - -### Release notes for 1.4 - -* Added UserAgent string "Mozilla/4.0 (compatible;);" so that SgmlReader gets -the right content from webservers. -* Fixed handling of HTML that does not start with root <html> element tag. -* Fixed handling of built in HTML entities. - -### Release notes for 1.3 - -* Changed ToUpper to CaseFolding enum and added support for "auto-folding" based -on input -* Added support for <![CDATA[...]]> blocks -* Added proper encoding support, including support for HTML <META -http-equiv="content-type". This means output now has the correct XML declaration -(unless you specify the new -noxml option) and any existing xml declarations in -the input are stripped out so you don't end up with two. -* Added support for ASP <%...%> blocks (thanks to Dan Whalin). -* Now strips out DOCTYPE by default since HTML DocTypes can cause problems for -XmlDocument when it tries to load the HTML DTD. but added "-doctype" switch for -those who really need it to come through. -* Fix handling of Office 2000 <?xml:namespace .../> declarations. -* Remove bogus attributes that have no name, in cases like <class= "test">. - -### Release notes for 1.2 - -* Converted back to Visual Studio 7.0 since this is the lowest common denominator. -* Added ToUpper switch for upper case folding, instead of the default lower case. -* Fix handling of UNC paths. -* Added OFX test suite. -* Fixed bug in parsing CDATA type elements (like <script><!-- --></script>). - -### Release notes for 1.1 - -* Upgraded project to Visual Studio 7.1. -* Fixed bug in accessing https authenticated sites. -* Fixed bug in handling of content that contains nulls. -* Improved handling of <!DOCTYPE with PUBLIC and no SYSTEM literal. -* Fixed bug in losing attributes when auto-closing tags. -* Fixed pretty printing output by adding WhitespaceHandling flag to SgmlReader. - -### Release notes for 1.0.4 - -* Added -encoding option so you can change the encoding of the output file. - -### Release notes for 1.0.3.26932 - -* Implemented ReadOuterXml and ReadInnerXml and fix some bugs in dealing with -xmlns attributes and dealing with non-HTML tags. - -### Release notes for 1.0.3 - -* Fixed some CLS compliance problems with using SgmlReader from VB and a null -reference exception bug when loading SgmlReader from XmlDocument. - -### Release notes for 1.0.2.21225 - -* Fixed bug in handling of encodings. Now uses the correct encoding returned -from the HTTP server. - -### Release notes for 1.0.2.21105 - -* Fixed bug in handling of input that contains blank lines at the top. - -### Release notes for 1.0.2 - -* Added fix for the way IE & Netscape deal with characters in the range 0x80 -through 0x9F in HTML. - -### Release notes for 1.0.1 - -* Fixed bug in handling of empty elements, like <INPUT>. - -### Release notes for 1.0 +*Note:* since this is a fork for diferent platforms, the version and changes should be handled diferently from the orignial library on [GitHub](https://github.com/ExodusSistemas/SGMLReaderCore); -* Add wildcard support for command line utility. -### Release notes for 0.5 +### Release notes for 0.9.0.0 (2017-Oct-21) -* Initial release. +* First commit with changes originated from fork from version 1.8.12 from [GitHub](https://github.com/ExodusSistemas/SGMLReaderCore) ## License diff --git a/SGMLReader.nuspec b/SGMLReader.nuspec deleted file mode 100644 index fe4987d..0000000 --- a/SGMLReader.nuspec +++ /dev/null @@ -1,16 +0,0 @@ - - - - SgmlReader - 1.8.13 - Chris Lovett, Steve Bjorg - Steve Bjorg, Andy Sherwood - https://github.com/MindTouch/SGMLReader/blob/master/license.txt - https://github.com/MindTouch/SGMLReader - false - Converts SGML to XML via XmlReader API - SgmlReader is a versatile C# .NET library written by Chris Lovett for parsing HTML/SGML files using the XmlReader API. - SGML XML - Copyright © 2002, Microsoft Corporation; Copyright © 2007-2013, MindTouch - - \ No newline at end of file diff --git a/SGMLTests/AssemblyInfo.cs b/SGMLTests/AssemblyInfo.cs deleted file mode 100644 index 1023a52..0000000 --- a/SGMLTests/AssemblyInfo.cs +++ /dev/null @@ -1,49 +0,0 @@ -/* - * - * Copyright (c) 2007-2013 MindTouch. All rights reserved. - * www.mindtouch.com oss@mindtouch.com - * - * For community documentation and downloads visit wiki.developer.mindtouch.com; - * please review the licensing section. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -using System.Reflection; -using System.Runtime.CompilerServices; - -// Information about this assembly is defined by the following attributes. -// Change them to the values specific to your project. - -[assembly: AssemblyTitle("SGMLTests")] -[assembly: AssemblyDescription("Unit tests for SgmlReaderDll")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("MindTouch")] -[assembly: AssemblyProduct("")] -[assembly: AssemblyCopyright("Copyright (c) 2007-2013, MindTouch")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// The assembly version has the format "{Major}.{Minor}.{Build}.{Revision}". -// The form "{Major}.{Minor}.*" will automatically update the build and revision, -// and "{Major}.{Minor}.{Build}.*" will update just the revision. - -[assembly: AssemblyVersion("1.8.12")] - -// The following attributes are used to specify the signing key for the assembly, -// if desired. See the Mono documentation for more information about signing. - -//[assembly: AssemblyDelaySign(false)] -//[assembly: AssemblyKeyFile("")] - diff --git a/SGMLTests/SGMLTests.csproj b/SGMLTests/SGMLTests.csproj deleted file mode 100644 index d9eb518..0000000 --- a/SGMLTests/SGMLTests.csproj +++ /dev/null @@ -1,249 +0,0 @@ - - - - Debug - AnyCPU - 9.0.30729 - 2.0 - {9CC3FC29-375F-44F1-95BE-D52246CC7B3E} - Library - SgmlTests - SgmlTests - v3.5 - - - 3.5 - - - - true - full - false - bin\Debug - DEBUG - prompt - 4 - false - - - none - false - bin\Release - prompt - 4 - false - - - - ..\packages\log4net.1.2.10\lib\2.0\log4net.dll - - - ..\packages\NUnit.2.5.10.11092\lib\nunit.framework.dll - - - - 3.5 - - - - 3.5 - - - - - - - - - - - - {499527FF-AE52-450F-B3E3-4AD53E1712AD} - SgmlReaderDll - - - - - - - - - - - - - - Always - - - - - - - - - Code - - - Code - - - Code - - - Code - - - Code - - - Code - - - Code - - - Code - - - Code - - - Code - - - Code - - - Code - - - Code - - - Code - - - Code - - - Code - - - Code - - - Code - - - Code - - - Code - - - Code - - - Code - - - Code - - - Code - - - Code - - - Code - - - Code - - - Code - - - Code - - - Code - - - Code - - - Code - - - Code - - - Code - - - Code - - - Code - - - Code - - - Code - - - Code - - - Code - - - Code - - - Code - - - Code - - - Code - - - Code - - - Code - - - Code - - - Code - - - Code - - - Code - - - Code - - - Code - - - - - - - - - - - \ No newline at end of file diff --git a/SGMLTests/packages.config b/SGMLTests/packages.config deleted file mode 100644 index 1c58b79..0000000 --- a/SGMLTests/packages.config +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/SgmlReader.sln b/SgmlReader.sln deleted file mode 100644 index c2bcee0..0000000 --- a/SgmlReader.sln +++ /dev/null @@ -1,52 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 14 -VisualStudioVersion = 14.0.24720.0 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SgmlReader", "SgmlReader\SgmlReader.csproj", "{606C348A-9A72-4179-9C55-4DD9914C22CC}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SgmlReaderDll", "SgmlReaderDll\SgmlReaderDll.csproj", "{499527FF-AE52-450F-B3E3-4AD53E1712AD}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SgmlTests", "SgmlTests\SgmlTests.csproj", "{9CC3FC29-375F-44F1-95BE-D52246CC7B3E}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{F0869BE5-15C0-4F2D-A94A-5534163302A1}" - ProjectSection(SolutionItems) = preProject - build.ps1 = build.ps1 - default.ps1 = default.ps1 - Demo.aspx = Demo.aspx - license.txt = license.txt - ReadMe.md = ReadMe.md - SGMLReader.nuspec = SGMLReader.nuspec - EndProjectSection -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Default|Any CPU = Default|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {606C348A-9A72-4179-9C55-4DD9914C22CC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {606C348A-9A72-4179-9C55-4DD9914C22CC}.Debug|Any CPU.Build.0 = Debug|Any CPU - {606C348A-9A72-4179-9C55-4DD9914C22CC}.Default|Any CPU.ActiveCfg = Debug|Any CPU - {606C348A-9A72-4179-9C55-4DD9914C22CC}.Release|Any CPU.ActiveCfg = Release|Any CPU - {606C348A-9A72-4179-9C55-4DD9914C22CC}.Release|Any CPU.Build.0 = Release|Any CPU - {499527FF-AE52-450F-B3E3-4AD53E1712AD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {499527FF-AE52-450F-B3E3-4AD53E1712AD}.Debug|Any CPU.Build.0 = Debug|Any CPU - {499527FF-AE52-450F-B3E3-4AD53E1712AD}.Default|Any CPU.ActiveCfg = Debug|Any CPU - {499527FF-AE52-450F-B3E3-4AD53E1712AD}.Release|Any CPU.ActiveCfg = Release|Any CPU - {499527FF-AE52-450F-B3E3-4AD53E1712AD}.Release|Any CPU.Build.0 = Release|Any CPU - {9CC3FC29-375F-44F1-95BE-D52246CC7B3E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {9CC3FC29-375F-44F1-95BE-D52246CC7B3E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {9CC3FC29-375F-44F1-95BE-D52246CC7B3E}.Default|Any CPU.ActiveCfg = Debug|Any CPU - {9CC3FC29-375F-44F1-95BE-D52246CC7B3E}.Default|Any CPU.Build.0 = Debug|Any CPU - {9CC3FC29-375F-44F1-95BE-D52246CC7B3E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {9CC3FC29-375F-44F1-95BE-D52246CC7B3E}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(MonoDevelopProperties) = preSolution - StartupItem = SgmlReader\SgmlReader.csproj - EndGlobalSection -EndGlobal diff --git a/SgmlReader/App.ico b/SgmlReader/App.ico deleted file mode 100644 index 380c3bace2d7154d35a3763d4257fb638bda7ba2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1078 zcmc(dO-jT-5QQtFYsnF^k~xM8@hEK$AmTzuR+2>^SITa(2zZS-!6XZz{a$qRLM% zpG>g6@3BPxEk^BFd@{kBGwLvIXuepVMhJu!afsxVGx6R5{Wl^n-++=~vPpJ~;Fs55PK5C0+F@v5(Qr7r;Ao(Jdl zyj15QFfR2#qZk}S^8I?7_fRoBtqc5W5LZpY>**j1U96wAyI~yul{Dv?Z=vHoLm5i-. For example, if your KeyFile is -// located in the project directory, you would specify the AssemblyKeyFile -// attribute as [assembly: AssemblyKeyFile("..\\..\\mykey.snk")] -// (*) Delay Signing is an advanced option - see the Microsoft .NET Framework -// documentation for more information on this. -// -[assembly: AssemblyDelaySign(false)] -[assembly: AssemblyKeyFile("")] -[assembly: AssemblyKeyName("")] diff --git a/SgmlReader/HTMLspecial.ent b/SgmlReader/HTMLspecial.ent deleted file mode 100644 index 439a568..0000000 --- a/SgmlReader/HTMLspecial.ent +++ /dev/null @@ -1,77 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/SgmlReader/HTMLsymbol.ent b/SgmlReader/HTMLsymbol.ent deleted file mode 100644 index b41f838..0000000 --- a/SgmlReader/HTMLsymbol.ent +++ /dev/null @@ -1,241 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/SgmlReader/Main.cs b/SgmlReader/Program.cs similarity index 82% rename from SgmlReader/Main.cs rename to SgmlReader/Program.cs index 757a2f7..fa244be 100644 --- a/SgmlReader/Main.cs +++ b/SgmlReader/Program.cs @@ -1,186 +1,211 @@ -/* - * - * Copyright (c) 2007-2013 MindTouch. All rights reserved. - * www.mindtouch.com oss@mindtouch.com - * - * For community documentation and downloads visit wiki.developer.mindtouch.com; - * please review the licensing section. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -using System; -using System.Xml; -using System.IO; -using System.Net; -using System.Text; -using System.Collections; - -namespace Sgml { - /// - /// This class provides a command line interface to the SgmlReader. - /// - public class CommandLine { - - string proxy = null; - string output = null; - bool formatted = false; - bool noxmldecl = false; - Encoding encoding = null; - - [STAThread] - static void Main(string[] args) { - try { - CommandLine t = new CommandLine(); - t.Run(args); - } catch (Exception e) { - Console.WriteLine("Error: " + e.Message); - } - return; - } - - public void Run(string[] args) { - SgmlReader reader = new SgmlReader(); - string inputUri = null; - - for (int i = 0; i < args.Length; i++) { - string arg = args[i]; - if (arg[0] == '-' || arg[0] == '/') { - switch (arg.Substring(1)) { - case "e": - string errorlog = args[++i]; - if (errorlog.ToLower() == "$stderr") { - reader.ErrorLog = Console.Error; - } - else { - reader.ErrorLogFile = errorlog; - } - break; - case "html": - reader.DocType = "HTML"; - break; - case "dtd": - reader.SystemLiteral = args[++i]; - break; - case "proxy": - proxy = args[++i]; - reader.WebProxy = proxy; - break; - case "encoding": - encoding = Encoding.GetEncoding(args[++i]); - break; - case "f": - formatted = true; - reader.WhitespaceHandling = WhitespaceHandling.None; - break; - case "noxml": - noxmldecl = true; - break; - case "doctype": - reader.StripDocType = false; - break; - case "lower": - reader.CaseFolding = CaseFolding.ToLower; - break; - case "upper": - reader.CaseFolding = CaseFolding.ToUpper; - break; - - default: - Console.WriteLine("Usage: SgmlReader [InputUri] [OutputFile]"); - Console.WriteLine("-e log Optional log file name, name of '$STDERR' will write errors to stderr"); - Console.WriteLine("-f Whether to pretty print the output."); - Console.WriteLine("-html Specify the built in HTML dtd"); - Console.WriteLine("-dtd url Specify other SGML dtd to use"); - Console.WriteLine("-base Add base tag to output HTML"); - Console.WriteLine("-noxml Do not add XML declaration to the output"); - Console.WriteLine("-proxy svr:80 Proxy server to use for http requests"); - Console.WriteLine("-encoding name Specify an encoding for the output file (default UTF-8)"); - Console.WriteLine("-lower Convert input tags to lower case"); - Console.WriteLine("-upper Convert input tags to upper case"); - Console.WriteLine(); - Console.WriteLine("InputUri The input file or http URL (default stdin). "); - Console.WriteLine(" Supports wildcards for local file names."); - Console.WriteLine("OutputFile Output file name (default stdout)"); - Console.WriteLine(" If input file contains wildcards then this just specifies the output file extension (default .xml)"); - return; - } - } - else { - if (inputUri == null) { - inputUri = arg; - string ext = Path.GetExtension(arg).ToLower(); - if (ext == ".htm" || ext == ".html") - reader.DocType = "HTML"; - } - else if (output == null) output = arg; - } - } - if (inputUri != null && !inputUri.StartsWith("http://") && inputUri.IndexOfAny(new char[] { '*', '?' }) >= 0) { - // wild card processing of a directory of files. - string path = Path.GetDirectoryName(inputUri); - if (path == "") path = ".\\"; - string ext = ".xml"; - if (output != null) - ext = Path.GetExtension(output); - foreach (string uri in Directory.GetFiles(path, Path.GetFileName(inputUri))) { - Console.WriteLine("Processing: " + uri); - string file = Path.GetFileName(uri); - output = Path.GetDirectoryName(uri) + Path.DirectorySeparatorChar + Path.GetFileNameWithoutExtension(file) + ext; - Process(reader, uri); - reader.Close(); - } - return; - } - Process(reader, inputUri); - reader.Close(); - - return ; - } - - void Process(SgmlReader reader, string uri) { - if (uri == null) { - reader.InputStream = Console.In; - } else { - reader.Href = uri; - } - - - if (this.encoding == null) { - this.encoding = reader.GetEncoding(); - } - - XmlTextWriter w = null; - if (output != null) { - w = new XmlTextWriter(output, this.encoding); - } - else { - w = new XmlTextWriter(Console.Out); - } - if (formatted) w.Formatting = Formatting.Indented; - if (!noxmldecl) { - w.WriteStartDocument(); - } - reader.Read(); - while (!reader.EOF) { - w.WriteNode(reader, true); - } - w.Flush(); - w.Close(); - } - - - - } -} +/* + * + * Copyright (c) 2007-2013 MindTouch. All rights reserved. + * www.mindtouch.com oss@mindtouch.com + * + * For community documentation and downloads visit wiki.developer.mindtouch.com; + * please review the licensing section. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +using System; +using System.Xml; +using System.IO; +using System.Net; +using System.Text; +using System.Collections; + +namespace Sgml +{ + /// + /// This class provides a command line interface to the SgmlReader. + /// + public class CommandLine + { + + string proxy = null; + string output = null; + bool formatted = false; + bool noxmldecl = false; + Encoding encoding = null; + + [STAThread] + static void Main(string[] args) + { + try + { + CommandLine t = new CommandLine(); + t.Run(args); + } + catch (Exception e) + { + Console.WriteLine("Error: " + e.Message); + } + return; + } + + public void Run(string[] args) + { + SgmlReader reader = new SgmlReader(); + string inputUri = null; + + for (int i = 0; i < args.Length; i++) + { + string arg = args[i]; + if (arg[0] == '-' || arg[0] == '/') + { + switch (arg.Substring(1)) + { + case "e": + string errorlog = args[++i]; + if (errorlog.ToLower() == "$stderr") + { + reader.ErrorLog = Console.Error; + } + else + { + reader.ErrorLogFile = errorlog; + } + break; + case "html": + reader.DocType = "HTML"; + break; + case "dtd": + reader.SystemLiteral = args[++i]; + break; + case "proxy": + proxy = args[++i]; + reader.WebProxy = proxy; + break; + case "encoding": + encoding = Encoding.GetEncoding(args[++i]); + break; + case "f": + formatted = true; + reader.WhitespaceHandling = WhitespaceHandling.None; + break; + case "noxml": + noxmldecl = true; + break; + case "doctype": + reader.StripDocType = false; + break; + case "lower": + reader.CaseFolding = CaseFolding.ToLower; + break; + case "upper": + reader.CaseFolding = CaseFolding.ToUpper; + break; + + default: + Console.WriteLine("Usage: SgmlReader [InputUri] [OutputFile]"); + Console.WriteLine("-e log Optional log file name, name of '$STDERR' will write errors to stderr"); + Console.WriteLine("-f Whether to pretty print the output."); + Console.WriteLine("-html Specify the built in HTML dtd"); + Console.WriteLine("-dtd url Specify other SGML dtd to use"); + Console.WriteLine("-base Add base tag to output HTML"); + Console.WriteLine("-noxml Do not add XML declaration to the output"); + Console.WriteLine("-proxy svr:80 Proxy server to use for http requests"); + Console.WriteLine("-encoding name Specify an encoding for the output file (default UTF-8)"); + Console.WriteLine("-lower Convert input tags to lower case"); + Console.WriteLine("-upper Convert input tags to upper case"); + Console.WriteLine(); + Console.WriteLine("InputUri The input file or http URL (default stdin). "); + Console.WriteLine(" Supports wildcards for local file names."); + Console.WriteLine("OutputFile Output file name (default stdout)"); + Console.WriteLine(" If input file contains wildcards then this just specifies the output file extension (default .xml)"); + return; + } + } + else + { + if (inputUri == null) + { + inputUri = arg; + string ext = Path.GetExtension(arg).ToLower(); + if (ext == ".htm" || ext == ".html") + reader.DocType = "HTML"; + } + else if (output == null) output = arg; + } + } + if (inputUri != null && !inputUri.StartsWith("http://") && inputUri.IndexOfAny(new char[] { '*', '?' }) >= 0) + { + // wild card processing of a directory of files. + string path = Path.GetDirectoryName(inputUri); + if (path == "") path = ".\\"; + string ext = ".xml"; + if (output != null) + ext = Path.GetExtension(output); + foreach (string uri in Directory.GetFiles(path, Path.GetFileName(inputUri))) + { + Console.WriteLine("Processing: " + uri); + string file = Path.GetFileName(uri); + output = Path.GetDirectoryName(uri) + Path.DirectorySeparatorChar + Path.GetFileNameWithoutExtension(file) + ext; + Process(reader, uri); + reader.Close(); + } + return; + } + Process(reader, inputUri); + reader.Close(); + + return; + } + + void Process(SgmlReader reader, string uri) + { + if (uri == null) + { + reader.InputStream = Console.In; + } + else + { + reader.Href = uri; + } + + + if (this.encoding == null) + { + this.encoding = reader.GetEncoding(); + } + + XmlTextWriter w = null; + if (output != null) + { + w = new XmlTextWriter(output, this.encoding); + } + else + { + w = new XmlTextWriter(Console.Out); + } + if (formatted) w.Formatting = Formatting.Indented; + if (!noxmldecl) + { + w.WriteStartDocument(); + } + reader.Read(); + while (!reader.EOF) + { + w.WriteNode(reader, true); + } + w.Flush(); + w.Close(); + } + + + + } +} diff --git a/SgmlReader/SgmlReader.csproj b/SgmlReader/SgmlReader.csproj index c2ebd7c..26db95c 100644 --- a/SgmlReader/SgmlReader.csproj +++ b/SgmlReader/SgmlReader.csproj @@ -1,136 +1,14 @@ - - + + - Local - 9.0.30729 - 2.0 - {606C348A-9A72-4179-9C55-4DD9914C22CC} - Debug - AnyCPU - App.ico - - - SgmlReader - JScript - Grid - IE50 - false Exe + netcoreapp2.0 + SgmlReader SgmlReader - OnBuildSuccess - - - - - 3.5 - publish\ - true - Disk - false - Foreground - 7 - Days - false - false - true - 0 - 1.0.0.%2a - false - false - true - v2.0 - - - bin\Debug\ - 285212672 - - - DEBUG;TRACE - - - True - 4096 - False - false - false - 4 - full - prompt - - bin\Release\ - 285212672 - - - TRACE - - - 4096 - True - false - false - 4 - none - prompt - - - - System - - - System.XML - - + - - - Code - - - Code - - - Code - + - - - {499527FF-AE52-450F-B3E3-4AD53E1712AD} - SgmlReaderDll - - - - - False - .NET Framework Client Profile - false - - - False - .NET Framework 2.0 %28x86%29 - true - - - False - .NET Framework 3.0 %28x86%29 - false - - - False - .NET Framework 3.5 - false - - - False - .NET Framework 3.5 SP1 - false - - - - - - - - - - \ No newline at end of file + + diff --git a/SgmlReader/htmllat1.ent b/SgmlReader/htmllat1.ent deleted file mode 100644 index 012aefb..0000000 --- a/SgmlReader/htmllat1.ent +++ /dev/null @@ -1,194 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/SgmlReaderCli/Program.cs b/SgmlReaderCli/Program.cs new file mode 100644 index 0000000..2de4d3b --- /dev/null +++ b/SgmlReaderCli/Program.cs @@ -0,0 +1,211 @@ +/* + * + * Copyright (c) 2007-2013 MindTouch. All rights reserved. + * www.mindtouch.com oss@mindtouch.com + * + * For community documentation and downloads visit wiki.developer.mindtouch.com; + * please review the licensing section. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +using System; +using System.Xml; +using System.IO; +using System.Net; +using System.Text; +using System.Collections; + +namespace SgmlCore +{ + /// + /// This class provides a command line interface to the SgmlReader. + /// + public class CommandLine + { + + string proxy = null; + string output = null; + bool formatted = false; + bool noxmldecl = false; + Encoding encoding = null; + + [STAThread] + static void Main(string[] args) + { + try + { + CommandLine t = new CommandLine(); + t.Run(args); + } + catch (Exception e) + { + Console.WriteLine("Error: " + e.Message); + } + return; + } + + public void Run(string[] args) + { + SgmlReader reader = new SgmlReader(); + string inputUri = null; + + for (int i = 0; i < args.Length; i++) + { + string arg = args[i]; + if (arg[0] == '-' || arg[0] == '/') + { + switch (arg.Substring(1)) + { + case "e": + string errorlog = args[++i]; + if (errorlog.ToLower() == "$stderr") + { + reader.ErrorLog = Console.Error; + } + else + { + reader.ErrorLogFile = errorlog; + } + break; + case "html": + reader.DocType = "HTML"; + break; + case "dtd": + reader.SystemLiteral = args[++i]; + break; + case "proxy": + proxy = args[++i]; + reader.WebProxy = proxy; + break; + case "encoding": + encoding = Encoding.GetEncoding(args[++i]); + break; + case "f": + formatted = true; + reader.WhitespaceHandling = WhitespaceHandling.None; + break; + case "noxml": + noxmldecl = true; + break; + case "doctype": + reader.StripDocType = false; + break; + case "lower": + reader.CaseFolding = CaseFolding.ToLower; + break; + case "upper": + reader.CaseFolding = CaseFolding.ToUpper; + break; + + default: + Console.WriteLine("Usage: SgmlReader [InputUri] [OutputFile]"); + Console.WriteLine("-e log Optional log file name, name of '$STDERR' will write errors to stderr"); + Console.WriteLine("-f Whether to pretty print the output."); + Console.WriteLine("-html Specify the built in HTML dtd"); + Console.WriteLine("-dtd url Specify other SGML dtd to use"); + Console.WriteLine("-base Add base tag to output HTML"); + Console.WriteLine("-noxml Do not add XML declaration to the output"); + Console.WriteLine("-proxy svr:80 Proxy server to use for http requests"); + Console.WriteLine("-encoding name Specify an encoding for the output file (default UTF-8)"); + Console.WriteLine("-lower Convert input tags to lower case"); + Console.WriteLine("-upper Convert input tags to upper case"); + Console.WriteLine(); + Console.WriteLine("InputUri The input file or http URL (default stdin). "); + Console.WriteLine(" Supports wildcards for local file names."); + Console.WriteLine("OutputFile Output file name (default stdout)"); + Console.WriteLine(" If input file contains wildcards then this just specifies the output file extension (default .xml)"); + return; + } + } + else + { + if (inputUri == null) + { + inputUri = arg; + string ext = Path.GetExtension(arg).ToLower(); + if (ext == ".htm" || ext == ".html") + reader.DocType = "HTML"; + } + else if (output == null) output = arg; + } + } + if (inputUri != null && !inputUri.StartsWith("http://") && inputUri.IndexOfAny(new char[] { '*', '?' }) >= 0) + { + // wild card processing of a directory of files. + string path = Path.GetDirectoryName(inputUri); + if (path == "") path = ".\\"; + string ext = ".xml"; + if (output != null) + ext = Path.GetExtension(output); + foreach (string uri in Directory.GetFiles(path, Path.GetFileName(inputUri))) + { + Console.WriteLine("Processing: " + uri); + string file = Path.GetFileName(uri); + output = Path.GetDirectoryName(uri) + Path.DirectorySeparatorChar + Path.GetFileNameWithoutExtension(file) + ext; + Process(reader, uri); + reader.Close(); + } + return; + } + Process(reader, inputUri); + reader.Close(); + + return; + } + + void Process(SgmlReader reader, string uri) + { + if (uri == null) + { + reader.InputStream = Console.In; + } + else + { + reader.Href = uri; + } + + + if (this.encoding == null) + { + this.encoding = reader.GetEncoding(); + } + + XmlTextWriter w = null; + if (output != null) + { + w = new XmlTextWriter(output, this.encoding); + } + else + { + w = new XmlTextWriter(Console.Out); + } + if (formatted) w.Formatting = Formatting.Indented; + if (!noxmldecl) + { + w.WriteStartDocument(); + } + reader.Read(); + while (!reader.EOF) + { + w.WriteNode(reader, true); + } + w.Flush(); + w.Close(); + } + + + + } +} diff --git a/SgmlReaderCli/SgmlReaderCli.csproj b/SgmlReaderCli/SgmlReaderCli.csproj new file mode 100644 index 0000000..3254bf1 --- /dev/null +++ b/SgmlReaderCli/SgmlReaderCli.csproj @@ -0,0 +1,20 @@ + + + + Exe + netcoreapp2.0 + SgmlReader + SgmlReader + + + + + + + + Code + + + + + diff --git a/SgmlReaderCore.sln b/SgmlReaderCore.sln new file mode 100644 index 0000000..6675e0c --- /dev/null +++ b/SgmlReaderCore.sln @@ -0,0 +1,54 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 15 +VisualStudioVersion = 15.0.26730.8 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{F0869BE5-15C0-4F2D-A94A-5534163302A1}" + ProjectSection(SolutionItems) = preProject + .gitignore = .gitignore + license.txt = license.txt + ReadMe.md = ReadMe.md + EndProjectSection +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SgmlReaderCore", "SgmlReaderCore\SgmlReaderCore.csproj", "{F62B1BFE-15BE-4D9E-A3EF-AFDD21253FD3}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SgmlTestsCore", "SgmlTestsCore\SgmlTestsCore.csproj", "{36986F8B-0062-4D26-BB51-2ACC401DFEFD}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SgmlReaderCli", "SgmlReaderCli\SgmlReaderCli.csproj", "{D50A5C61-FB72-4CA1-800E-2ED40150AC51}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Default|Any CPU = Default|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {F62B1BFE-15BE-4D9E-A3EF-AFDD21253FD3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F62B1BFE-15BE-4D9E-A3EF-AFDD21253FD3}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F62B1BFE-15BE-4D9E-A3EF-AFDD21253FD3}.Default|Any CPU.ActiveCfg = Debug|Any CPU + {F62B1BFE-15BE-4D9E-A3EF-AFDD21253FD3}.Default|Any CPU.Build.0 = Debug|Any CPU + {F62B1BFE-15BE-4D9E-A3EF-AFDD21253FD3}.Release|Any CPU.ActiveCfg = Release|Any CPU + {F62B1BFE-15BE-4D9E-A3EF-AFDD21253FD3}.Release|Any CPU.Build.0 = Release|Any CPU + {36986F8B-0062-4D26-BB51-2ACC401DFEFD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {36986F8B-0062-4D26-BB51-2ACC401DFEFD}.Debug|Any CPU.Build.0 = Debug|Any CPU + {36986F8B-0062-4D26-BB51-2ACC401DFEFD}.Default|Any CPU.ActiveCfg = Debug|Any CPU + {36986F8B-0062-4D26-BB51-2ACC401DFEFD}.Default|Any CPU.Build.0 = Debug|Any CPU + {36986F8B-0062-4D26-BB51-2ACC401DFEFD}.Release|Any CPU.ActiveCfg = Release|Any CPU + {36986F8B-0062-4D26-BB51-2ACC401DFEFD}.Release|Any CPU.Build.0 = Release|Any CPU + {D50A5C61-FB72-4CA1-800E-2ED40150AC51}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {D50A5C61-FB72-4CA1-800E-2ED40150AC51}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D50A5C61-FB72-4CA1-800E-2ED40150AC51}.Default|Any CPU.ActiveCfg = Debug|Any CPU + {D50A5C61-FB72-4CA1-800E-2ED40150AC51}.Default|Any CPU.Build.0 = Debug|Any CPU + {D50A5C61-FB72-4CA1-800E-2ED40150AC51}.Release|Any CPU.ActiveCfg = Release|Any CPU + {D50A5C61-FB72-4CA1-800E-2ED40150AC51}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {2C4742A2-74AC-4D0A-8F8C-3EB0301D2A89} + EndGlobalSection + GlobalSection(MonoDevelopProperties) = preSolution + StartupItem = SgmlReader\SgmlReader.csproj + EndGlobalSection +EndGlobal diff --git a/SgmlReader/Html.dtd b/SgmlReaderCore/Html.dtd similarity index 97% rename from SgmlReader/Html.dtd rename to SgmlReaderCore/Html.dtd index 1df7584..53a1335 100644 --- a/SgmlReader/Html.dtd +++ b/SgmlReaderCore/Html.dtd @@ -1,1565 +1,1565 @@ - - - - - ... - - - ... - - - - The URI used as a system identifier with the public identifier allows - the user agent to download the DTD and entity sets as needed. - - The FPI for the Strict HTML 4.01 DTD is: - - "-//W3C//DTD HTML 4.01//EN" - - This version of the strict DTD is: - - http://www.w3.org/TR/1999/REC-html401-19991224/strict.dtd - - Authors should use the Strict DTD unless they need the - presentation control for user agents that don't (adequately) - support style sheets. - - If you are writing a document that includes frames, use - the following FPI: - - "-//W3C//DTD HTML 4.01 Frameset//EN" - - This version of the frameset DTD is: - - http://www.w3.org/TR/1999/REC-html401-19991224/frameset.dtd - - ---> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -]]> - - - - -]]> - - - - - -]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -]]> - - - - - + + + + + ... + + + ... + + + + The URI used as a system identifier with the public identifier allows + the user agent to download the DTD and entity sets as needed. + + The FPI for the Strict HTML 4.01 DTD is: + + "-//W3C//DTD HTML 4.01//EN" + + This version of the strict DTD is: + + http://www.w3.org/TR/1999/REC-html401-19991224/strict.dtd + + Authors should use the Strict DTD unless they need the + presentation control for user agents that don't (adequately) + support style sheets. + + If you are writing a document that includes frames, use + the following FPI: + + "-//W3C//DTD HTML 4.01 Frameset//EN" + + This version of the frameset DTD is: + + http://www.w3.org/TR/1999/REC-html401-19991224/frameset.dtd + + +--> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +]]> + + + + +]]> + + + + + +]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +]]> + + + + + diff --git a/SgmlReaderCore/SGMLReader.nuspec b/SgmlReaderCore/SGMLReader.nuspec new file mode 100644 index 0000000..ed78ea7 --- /dev/null +++ b/SgmlReaderCore/SGMLReader.nuspec @@ -0,0 +1,16 @@ + + + + SgmlReaderCore + 0.9.0.0 + Chris Lovett, Steve Bjorg, Olavo Rocha Neto + Steve Bjorg, Andy Sherwood, Olavo Rocha Neto + https://github.com/ExodusSistemas/SgmlReaderCore/blob/master/license.txt + https://github.com/ExodusSistemas/SgmlReaderCore + false + Converts SGML to XML via XmlReader API + SgmlReader is a versatile C# .NET library written by Chris Lovett for parsing HTML/SGML files using the XmlReader API. This is a port to .net core for netstandard2.0 from version 1.8.12 + SGML XML + Copyright © 2002, Microsoft Corporation; Copyright © 2007-2013, MindTouch, Copyright © 2018, Exodus Sistemas + + \ No newline at end of file diff --git a/sgmlreaderdll/SgmlParser.cs b/SgmlReaderCore/SgmlParser.cs similarity index 97% rename from sgmlreaderdll/SgmlParser.cs rename to SgmlReaderCore/SgmlParser.cs index 2cfad95..a379664 100644 --- a/sgmlreaderdll/SgmlParser.cs +++ b/SgmlReaderCore/SgmlParser.cs @@ -1,3310 +1,3310 @@ -/* - * - * Copyright (c) 2007-2013 MindTouch. All rights reserved. - * www.mindtouch.com oss@mindtouch.com - * - * For community documentation and downloads visit wiki.developer.mindtouch.com; - * please review the licensing section. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -using System; -using System.Collections; -using System.Collections.Generic; -using System.Diagnostics.CodeAnalysis; -using System.Globalization; -using System.IO; -using System.Net; -using System.Runtime.Serialization; -using System.Security.Permissions; -using System.Text; -using System.Xml; - -namespace Sgml { - /// - /// Thrown if any errors occur while parsing the source. - /// - [Serializable] - public class SgmlParseException : Exception - { - private string m_entityContext; - - /// - /// Instantiates a new instance of SgmlParseException with no specific error information. - /// - public SgmlParseException() - { - } - - /// - /// Instantiates a new instance of SgmlParseException with an error message describing the problem. - /// - /// A message describing the error that occurred - public SgmlParseException(string message) - : base(message) - { - } - - /// - /// Instantiates a new instance of SgmlParseException with an error message describing the problem. - /// - /// A message describing the error that occurred - /// The entity on which the error occurred. - public SgmlParseException(string message, Entity e) - : base(message) - { - if (e != null) - m_entityContext = e.Context(); - } - - /// - /// Instantiates a new instance of SgmlParseException with an error message describing the problem. - /// - /// A message describing the error that occurred - /// The original exception that caused the problem. - public SgmlParseException(string message, Exception innerException) - : base(message, innerException) - { - } - - /// - /// Initializes a new instance of the SgmlParseException class with serialized data. - /// - /// The object that holds the serialized object data. - /// The contextual information about the source or destination. - protected SgmlParseException(SerializationInfo streamInfo, StreamingContext streamCtx) - : base(streamInfo, streamCtx) - { - if (streamInfo != null) - m_entityContext = streamInfo.GetString("entityContext"); - } - - /// - /// Contextual information detailing the entity on which the error occurred. - /// - public string EntityContext - { - get - { - return m_entityContext; - } - } - - /// - /// Populates a SerializationInfo with the data needed to serialize the exception. - /// - /// The to populate with data. - /// The destination (see ) for this serialization. - [SecurityPermission(SecurityAction.Demand, SerializationFormatter=true)] - public override void GetObjectData(SerializationInfo info, StreamingContext context) - { - if (info == null) - throw new ArgumentNullException("info"); - - info.AddValue("entityContext", m_entityContext); - base.GetObjectData(info, context); - } - } - - /// - /// The different types of literal text returned by the SgmlParser. - /// - public enum LiteralType - { - /// - /// CDATA text literals. - /// - [SuppressMessage("Microsoft.Naming", "CA1705", Justification = "This capitalisation is appropriate since the value it represents has all upper-case capitalisation.")] - CDATA, - - /// - /// SDATA entities. - /// - [SuppressMessage("Microsoft.Naming", "CA1705", Justification = "This capitalisation is appropriate since the value it represents has all upper-case capitalisation.")] - SDATA, - - /// - /// The contents of a Processing Instruction. - /// - [SuppressMessage("Microsoft.Naming", "CA1705", Justification = "This capitalisation is appropriate since the value it represents has all upper-case capitalisation.")] - PI - }; - - /// - /// An Entity declared in a DTD. - /// - public class Entity : IDisposable - { - /// - /// The character indicating End Of File. - /// - [SuppressMessage("Microsoft.Naming", "CA1705", Justification = "The capitalisation is correct since EOF is an acronym.")] - public const char EOF = (char)65535; - - private string m_proxy; - private string m_name; - private bool m_isInternal; - private string m_publicId; - private string m_uri; - private string m_literal; - private LiteralType m_literalType; - private Entity m_parent; - private bool m_isHtml; - private int m_line; - private char m_lastchar; - private bool m_isWhitespace; - - private Encoding m_encoding; - private Uri m_resolvedUri; - private TextReader m_stm; - private bool m_weOwnTheStream; - private int m_lineStart; - private int m_absolutePos; - - /// - /// Initialises a new instance of an Entity declared in a DTD. - /// - /// The name of the entity. - /// The public id of the entity. - /// The uri of the entity. - /// The proxy server to use when retrieving any web content. - public Entity(string name, string pubid, string uri, string proxy) - { - m_name = name; - m_publicId = pubid; - m_uri = uri; - m_proxy = proxy; - m_isHtml = (name != null && StringUtilities.EqualsIgnoreCase(name, "html")); - } - - /// - /// Initialises a new instance of an Entity declared in a DTD. - /// - /// The name of the entity. - /// The literal value of the entity. - public Entity(string name, string literal) - { - m_name = name; - m_literal = literal; - m_isInternal = true; - } - - /// - /// Initialises a new instance of an Entity declared in a DTD. - /// - /// The name of the entity. - /// The baseUri for the entity to read from the TextReader. - /// The TextReader to read the entity from. - /// The proxy server to use when retrieving any web content. - public Entity(string name, Uri baseUri, TextReader stm, string proxy) - { - m_name = name; - m_isInternal = true; - m_stm = stm; - m_resolvedUri = baseUri; - m_proxy = proxy; - m_isHtml = string.Equals(name, "html", StringComparison.OrdinalIgnoreCase); - } - - /// - /// The name of the entity. - /// - public string Name - { - get - { - return m_name; - } - } - - /// - /// True if the entity is the html element entity. - /// - public bool IsHtml - { - get - { - return m_isHtml; - } - set - { - m_isHtml = value; - } - } - - /// - /// The public identifier of this entity. - /// - public string PublicId - { - get - { - return m_publicId; - } - } - - /// - /// The Uri that is the source for this entity. - /// - public string Uri - { - get - { - return m_uri; - } - } - - /// - /// The resolved location of the DTD this entity is from. - /// - public Uri ResolvedUri - { - get - { - if (this.m_resolvedUri != null) - return this.m_resolvedUri; - else if (m_parent != null) - return m_parent.ResolvedUri; - else - return null; - } - } - - /// - /// Gets the parent Entity of this Entity. - /// - public Entity Parent - { - get - { - return m_parent; - } - } - - /// - /// The last character read from the input stream for this entity. - /// - public char Lastchar - { - get - { - return m_lastchar; - } - } - - /// - /// The line on which this entity was defined. - /// - public int Line - { - get - { - return m_line; - } - } - - /// - /// The index into the line where this entity is defined. - /// - public int LinePosition - { - get - { - return this.m_absolutePos - this.m_lineStart + 1; - } - } - - /// - /// Whether this entity is an internal entity or not. - /// - /// true if this entity is internal, otherwise false. - public bool IsInternal - { - get - { - return m_isInternal; - } - } - - /// - /// The literal value of this entity. - /// - public string Literal - { - get - { - return m_literal; - } - } - - /// - /// The of this entity. - /// - public LiteralType LiteralType - { - get - { - return m_literalType; - } - } - - /// - /// Whether the last char read for this entity is a whitespace character. - /// - public bool IsWhitespace - { - get - { - return m_isWhitespace; - } - } - - /// - /// The proxy server to use when making web requests to resolve entities. - /// - public string Proxy - { - get - { - return m_proxy; - } - } - - /// - /// Reads the next character from the DTD stream. - /// - /// The next character from the DTD stream. - public char ReadChar() - { - char ch = (char)this.m_stm.Read(); - if (ch == 0) - { - // convert nulls to whitespace, since they are not valid in XML anyway. - ch = ' '; - } - this.m_absolutePos++; - if (ch == 0xa) - { - m_isWhitespace = true; - this.m_lineStart = this.m_absolutePos + 1; - this.m_line++; - } - else if (ch == ' ' || ch == '\t') - { - m_isWhitespace = true; - if (m_lastchar == 0xd) - { - this.m_lineStart = this.m_absolutePos; - m_line++; - } - } - else if (ch == 0xd) - { - m_isWhitespace = true; - } - else - { - m_isWhitespace = false; - if (m_lastchar == 0xd) - { - m_line++; - this.m_lineStart = this.m_absolutePos; - } - } - - m_lastchar = ch; - return ch; - } - - /// - /// Begins processing an entity. - /// - /// The parent of this entity. - /// The base Uri for processing this entity within. - public void Open(Entity parent, Uri baseUri) - { - this.m_parent = parent; - if (parent != null) - this.m_isHtml = parent.IsHtml; - this.m_line = 1; - if (m_isInternal) - { - if (this.m_literal != null) - this.m_stm = new StringReader(this.m_literal); - } - else if (this.m_uri == null) - { - this.Error("Unresolvable entity '{0}'", this.m_name); - } - else - { - if (baseUri != null) - { - this.m_resolvedUri = new Uri(baseUri, this.m_uri); - } - else - { - this.m_resolvedUri = new Uri(this.m_uri); - } - - Stream stream = null; - Encoding e = Encoding.Default; - switch (this.m_resolvedUri.Scheme) - { - case "file": - { - string path = this.m_resolvedUri.LocalPath; - stream = new FileStream(path, FileMode.Open, FileAccess.Read); - } - break; - default: - //Console.WriteLine("Fetching:" + ResolvedUri.AbsoluteUri); - HttpWebRequest wr = (HttpWebRequest)WebRequest.Create(ResolvedUri); - wr.UserAgent = "Mozilla/4.0 (compatible;);"; - wr.Timeout = 10000; // in case this is running in an ASPX page. - if (m_proxy != null) - wr.Proxy = new WebProxy(m_proxy); - wr.PreAuthenticate = false; - // Pass the credentials of the process. - wr.Credentials = CredentialCache.DefaultCredentials; - - WebResponse resp = wr.GetResponse(); - Uri actual = resp.ResponseUri; - if (!string.Equals(actual.AbsoluteUri, this.m_resolvedUri.AbsoluteUri, StringComparison.OrdinalIgnoreCase)) - { - this.m_resolvedUri = actual; - } - string contentType = resp.ContentType.ToLowerInvariant(); - string mimeType = contentType; - int i = contentType.IndexOf(';'); - if (i >= 0) - { - mimeType = contentType.Substring(0, i); - } - - if (StringUtilities.EqualsIgnoreCase(mimeType, "text/html")) - { - this.m_isHtml = true; - } - - i = contentType.IndexOf("charset"); - e = Encoding.Default; - if (i >= 0) - { - int j = contentType.IndexOf("=", i); - int k = contentType.IndexOf(";", j); - if (k < 0) - k = contentType.Length; - - if (j > 0) - { - j++; - string charset = contentType.Substring(j, k - j).Trim(); - try - { - e = Encoding.GetEncoding(charset); - } - catch (ArgumentException) - { - } - } - } - - stream = resp.GetResponseStream(); - break; - } - - this.m_weOwnTheStream = true; - HtmlStream html = new HtmlStream(stream, e); - this.m_encoding = html.Encoding; - this.m_stm = html; - } - } - - /// - /// Gets the character encoding for this entity. - /// - public Encoding Encoding - { - get - { - return this.m_encoding; - } - } - - /// - /// Closes the reader from which the entity is being read. - /// - public void Close() - { - if (this.m_weOwnTheStream) - this.m_stm.Close(); - } - - /// - /// Returns the next character after any whitespace. - /// - /// The next character that is not whitespace. - public char SkipWhitespace() - { - char ch = m_lastchar; - while (ch != Entity.EOF && (ch == ' ' || ch == '\r' || ch == '\n' || ch == '\t')) - { - ch = ReadChar(); - } - return ch; - } - - /// - /// Scans a token from the input stream and returns the result. - /// - /// The to use to process the token. - /// A set of characters to look for as terminators for the token. - /// true if the token should be a NMToken, otherwise false. - /// The scanned token. - public string ScanToken(StringBuilder sb, string term, bool nmtoken) - { - if (sb == null) - throw new ArgumentNullException("sb"); - - if (term == null) - throw new ArgumentNullException("term"); - - sb.Length = 0; - char ch = m_lastchar; - if (nmtoken && ch != '_' && !char.IsLetter(ch)) - { - throw new SgmlParseException(string.Format(CultureInfo.CurrentUICulture, "Invalid name start character '{0}'", ch)); - } - - while (ch != Entity.EOF && term.IndexOf(ch) < 0) - { - if (!nmtoken || ch == '_' || ch == '.' || ch == '-' || ch == ':' || char.IsLetterOrDigit(ch)) { - sb.Append(ch); - } - else { - throw new SgmlParseException( - string.Format(CultureInfo.CurrentUICulture, "Invalid name character '{0}'", ch)); - } - ch = ReadChar(); - } - - return sb.ToString(); - } - - /// - /// Read a literal from the input stream. - /// - /// The to use to build the literal. - /// The delimiter for the literal. - /// The literal scanned from the input stream. - public string ScanLiteral(StringBuilder sb, char quote) - { - if (sb == null) - throw new ArgumentNullException("sb"); - - sb.Length = 0; - char ch = ReadChar(); - while (ch != Entity.EOF && ch != quote) - { - if (ch == '&') - { - ch = ReadChar(); - if (ch == '#') - { - string charent = ExpandCharEntity(); - sb.Append(charent); - ch = this.m_lastchar; - } - else - { - sb.Append('&'); - sb.Append(ch); - ch = ReadChar(); - } - } - else - { - sb.Append(ch); - ch = ReadChar(); - } - } - - ReadChar(); // consume end quote. - return sb.ToString(); - } - - /// - /// Reads input until the end of the input stream or until a string of terminator characters is found. - /// - /// The to use to build the string. - /// The type of the element being read (only used in reporting errors). - /// The string of terminator characters to look for. - /// The string read from the input stream. - public string ScanToEnd(StringBuilder sb, string type, string terminators) - { - if (terminators == null) - throw new ArgumentNullException("terminators"); - - if (sb != null) - sb.Length = 0; - - int start = m_line; - // This method scans over a chunk of text looking for the - // termination sequence specified by the 'terminators' parameter. - char ch = ReadChar(); - int state = 0; - char next = terminators[state]; - while (ch != Entity.EOF) - { - if (ch == next) - { - state++; - if (state >= terminators.Length) - { - // found it! - break; - } - next = terminators[state]; - } - else if (state > 0) - { - // char didn't match, so go back and see how much does still match. - int i = state - 1; - int newstate = 0; - while (i >= 0 && newstate == 0) - { - if (terminators[i] == ch) - { - // character is part of the terminators pattern, ok, so see if we can - // match all the way back to the beginning of the pattern. - int j = 1; - while (i - j >= 0) - { - if (terminators[i - j] != terminators[state - j]) - break; - - j++; - } - - if (j > i) - { - newstate = i + 1; - } - } - else - { - i--; - } - } - - if (sb != null) - { - i = (i < 0) ? 1 : 0; - for (int k = 0; k <= state - newstate - i; k++) - { - sb.Append(terminators[k]); - } - - if (i > 0) // see if we've matched this char or not - sb.Append(ch); // if not then append it to buffer. - } - - state = newstate; - next = terminators[newstate]; - } - else - { - if (sb != null) - sb.Append(ch); - } - - ch = ReadChar(); - } - - if (ch == 0) - Error(type + " starting on line {0} was never closed", start); - - ReadChar(); // consume last char in termination sequence. - if (sb != null) - return sb.ToString(); - else - return string.Empty; - } - - /// - /// Expands a character entity to be read from the input stream. - /// - /// The string for the character entity. - public string ExpandCharEntity() - { - string value; - int v = ReadNumericEntityCode(out value); - if(v == -1) - { - return value; - } - - // HACK ALERT: IE and Netscape map the unicode characters - if (this.m_isHtml && v >= 0x80 & v <= 0x9F) - { - // This range of control characters is mapped to Windows-1252! - int i = v - 0x80; - int unicode = CtrlMap[i]; - return Convert.ToChar(unicode).ToString(); - } - - if (0xD800 <= v && v <= 0xDBFF) - { - // high surrogate - if (m_lastchar == '&') - { - char ch = ReadChar(); - if (ch == '#') - { - string value2; - int v2 = ReadNumericEntityCode(out value2); - if(v2 == -1) - { - return value + ";" + value2; - } - if (0xDC00 <= v2 && v2 <= 0xDFFF) - { - // low surrogate - v = char.ConvertToUtf32((char)v, (char)v2); - } - } - else - { - Error("Premature {0} parsing surrogate pair", ch); - } - } - else - { - Error("Premature {0} parsing surrogate pair", m_lastchar); - } - } - - // NOTE (steveb): we need to use ConvertFromUtf32 to allow for extended numeric encodings - return char.ConvertFromUtf32(v); - } - - private int ReadNumericEntityCode(out string value) - { - int v = 0; - char ch = ReadChar(); - value = "&#"; - if (ch == 'x') - { - bool sawHexDigit = false; - value += "x"; - ch = ReadChar(); - for (; ch != Entity.EOF && ch != ';'; ch = ReadChar()) - { - int p = 0; - if (ch >= '0' && ch <= '9') - { - p = (int)(ch - '0'); - sawHexDigit = true; - } - else if (ch >= 'a' && ch <= 'f') - { - p = (int)(ch - 'a') + 10; - sawHexDigit = true; - } - else if (ch >= 'A' && ch <= 'F') - { - p = (int)(ch - 'A') + 10; - sawHexDigit = true; - } - else - { - break; //we must be done! - //Error("Hex digit out of range '{0}'", (int)ch); - } - value += ch; - v = (v*16) + p; - } - if (!sawHexDigit) - { - return -1; - } - } - else - { - bool sawDigit = false; - for (; ch != Entity.EOF && ch != ';'; ch = ReadChar()) - { - if (ch >= '0' && ch <= '9') - { - v = (v*10) + (int)(ch - '0'); - sawDigit = true; - } - else - { - break; // we must be done! - //Error("Decimal digit out of range '{0}'", (int)ch); - } - value += ch; - } - if (!sawDigit) - { - return -1; - } - } - if (ch == 0) - { - Error("Premature {0} parsing entity reference", ch); - } - else if (ch == ';') - { - ReadChar(); - } - return v; - } - - static int[] CtrlMap = new int[] { - // This is the windows-1252 mapping of the code points 0x80 through 0x9f. - 8364, 129, 8218, 402, 8222, 8230, 8224, 8225, 710, 8240, 352, 8249, 338, 141, - 381, 143, 144, 8216, 8217, 8220, 8221, 8226, 8211, 8212, 732, 8482, 353, 8250, - 339, 157, 382, 376 - }; - - /// - /// Raise a processing error. - /// - /// The error message to use in the exception. - /// Always thrown. - public void Error(string msg) - { - throw new SgmlParseException(msg, this); - } - - /// - /// Raise a processing error. - /// - /// The error message to use in the exception. - /// The unexpected character causing the error. - /// Always thrown. - public void Error(string msg, char ch) - { - string str = (ch == Entity.EOF) ? "EOF" : char.ToString(ch); - throw new SgmlParseException(string.Format(CultureInfo.CurrentUICulture, msg, str), this); - } - - /// - /// Raise a processing error. - /// - /// The error message to use in the exception. - /// The value causing the error. - /// Always thrown. - public void Error(string msg, int x) - { - throw new SgmlParseException(string.Format(CultureInfo.CurrentUICulture, msg, x), this); - } - - /// - /// Raise a processing error. - /// - /// The error message to use in the exception. - /// The argument for the error. - /// Always thrown. - public void Error(string msg, string arg) - { - throw new SgmlParseException(string.Format(CultureInfo.CurrentUICulture, msg, arg), this); - } - - /// - /// Returns a string giving information on how the entity is referenced and declared, walking up the parents until the top level parent entity is found. - /// - /// Contextual information for the entity. - public string Context() - { - Entity p = this; - StringBuilder sb = new StringBuilder(); - while (p != null) - { - string msg; - if (p.m_isInternal) - { - msg = string.Format(CultureInfo.InvariantCulture, "\nReferenced on line {0}, position {1} of internal entity '{2}'", p.m_line, p.LinePosition, p.m_name); - } - else { - msg = string.Format(CultureInfo.InvariantCulture, "\nReferenced on line {0}, position {1} of '{2}' entity at [{3}]", p.m_line, p.LinePosition, p.m_name, p.ResolvedUri.AbsolutePath); - } - sb.Append(msg); - p = p.Parent; - } - - return sb.ToString(); - } - - /// - /// Checks whether a token denotes a literal entity or not. - /// - /// The token to check. - /// true if the token is "CDATA", "SDATA" or "PI", otherwise false. - public static bool IsLiteralType(string token) - { - return string.Equals(token, "CDATA", StringComparison.OrdinalIgnoreCase) || - string.Equals(token, "SDATA", StringComparison.OrdinalIgnoreCase) || - string.Equals(token, "PI", StringComparison.OrdinalIgnoreCase); - } - - /// - /// Sets the entity to be a literal of the type specified. - /// - /// One of "CDATA", "SDATA" or "PI". - public void SetLiteralType(string token) - { - switch (token) - { - case "CDATA": - this.m_literalType = LiteralType.CDATA; - break; - case "SDATA": - this.m_literalType = LiteralType.SDATA; - break; - case "PI": - this.m_literalType = LiteralType.PI; - break; - } - } - - #region IDisposable Members - - /// - /// The finalizer for the Entity class. - /// - ~Entity() - { - Dispose(false); - } - - /// - /// Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. - /// - public void Dispose() - { - Dispose(true); - GC.SuppressFinalize(this); - } - - /// - /// Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. - /// - /// true if this method has been called by user code, false if it has been called through a finalizer. - protected virtual void Dispose(bool isDisposing) - { - if (isDisposing) - { - if (m_stm != null) - { - m_stm.Dispose(); - m_stm = null; - } - } - } - - #endregion - } - - // This class decodes an HTML/XML stream correctly. - internal class HtmlStream : TextReader - { - private Stream stm; - private byte[] rawBuffer; - private int rawPos; - private int rawUsed; - private Encoding m_encoding; - private Decoder m_decoder; - private char[] m_buffer; - private int used; - private int pos; - private const int BUFSIZE = 16384; - private const int EOF = -1; - - public HtmlStream(Stream stm, Encoding defaultEncoding) - { - if (defaultEncoding == null) defaultEncoding = Encoding.UTF8; // default is UTF8 - if (!stm.CanSeek){ - // Need to be able to seek to sniff correctly. - stm = CopyToMemoryStream(stm); - } - this.stm = stm; - rawBuffer = new Byte[BUFSIZE]; - rawUsed = stm.Read(rawBuffer, 0, 4); // maximum byte order mark - this.m_buffer = new char[BUFSIZE]; - - // Check byte order marks - this.m_decoder = AutoDetectEncoding(rawBuffer, ref rawPos, rawUsed); - int bom = rawPos; - if (this.m_decoder == null) - { - this.m_decoder = defaultEncoding.GetDecoder(); - rawUsed += stm.Read(rawBuffer, 4, BUFSIZE-4); - DecodeBlock(); - // Now sniff to see if there is an XML declaration or HTML tag. - Decoder sd = SniffEncoding(); - if (sd != null) { - this.m_decoder = sd; - } - } - - // Reset to get ready for Read() - this.stm.Seek(0, SeekOrigin.Begin); - this.pos = this.used = 0; - // skip bom - if (bom>0){ - stm.Read(this.rawBuffer, 0, bom); - } - this.rawPos = this.rawUsed = 0; - - } - - public Encoding Encoding - { - get - { - return this.m_encoding; - } - } - - private static Stream CopyToMemoryStream(Stream s) - { - int size = 100000; // large heap is more efficient - byte[] copyBuff = new byte[size]; - int len; - MemoryStream r = new MemoryStream(); - while ((len = s.Read(copyBuff, 0, size)) > 0) - r.Write(copyBuff, 0, len); - - r.Seek(0, SeekOrigin.Begin); - s.Close(); - return r; - } - - internal void DecodeBlock() { - // shift current chars to beginning. - if (pos > 0) { - if (pos < used) { - System.Array.Copy(m_buffer, pos, m_buffer, 0, used - pos); - } - used -= pos; - pos = 0; - } - int len = m_decoder.GetCharCount(rawBuffer, rawPos, rawUsed - rawPos); - int available = m_buffer.Length - used; - if (available < len) { - char[] newbuf = new char[m_buffer.Length + len]; - System.Array.Copy(m_buffer, pos, newbuf, 0, used - pos); - m_buffer = newbuf; - } - used = pos + m_decoder.GetChars(rawBuffer, rawPos, rawUsed - rawPos, m_buffer, pos); - rawPos = rawUsed; // consumed the whole buffer! - } - internal static Decoder AutoDetectEncoding(byte[] buffer, ref int index, int length) { - if (4 <= (length - index)) { - uint w = (uint)buffer[index + 0] << 24 | (uint)buffer[index + 1] << 16 | (uint)buffer[index + 2] << 8 | (uint)buffer[index + 3]; - // see if it's a 4-byte encoding - switch (w) { - case 0xfefffeff: - index += 4; - return new Ucs4DecoderBigEngian(); - - case 0xfffefffe: - index += 4; - return new Ucs4DecoderLittleEndian(); - - case 0x3c000000: - goto case 0xfefffeff; - - case 0x0000003c: - goto case 0xfffefffe; - } - w >>= 8; - if (w == 0xefbbbf) { - index += 3; - return Encoding.UTF8.GetDecoder(); - } - w >>= 8; - switch (w) { - case 0xfeff: - index += 2; - return UnicodeEncoding.BigEndianUnicode.GetDecoder(); - - case 0xfffe: - index += 2; - return new UnicodeEncoding(false, false).GetDecoder(); - - case 0x3c00: - goto case 0xfeff; - - case 0x003c: - goto case 0xfffe; - } - } - return null; - } - private int ReadChar() { - // Read only up to end of current buffer then stop. - if (pos < used) return m_buffer[pos++]; - return EOF; - } - private int PeekChar() { - int ch = ReadChar(); - if (ch != EOF) { - pos--; - } - return ch; - } - private bool SniffPattern(string pattern) { - int ch = PeekChar(); - if (ch != pattern[0]) return false; - for (int i = 0, n = pattern.Length; ch != EOF && i < n; i++) { - ch = ReadChar(); - char m = pattern[i]; - if (ch != m) { - return false; - } - } - return true; - } - private void SniffWhitespace() { - char ch = (char)PeekChar(); - while (ch == ' ' || ch == '\t' || ch == '\r' || ch == '\n') { - int i = pos; - ch = (char)ReadChar(); - if (ch != ' ' && ch != '\t' && ch != '\r' && ch != '\n') - pos = i; - } - } - - private string SniffLiteral() { - int quoteChar = PeekChar(); - if (quoteChar == '\'' || quoteChar == '"') { - ReadChar();// consume quote char - int i = this.pos; - int ch = ReadChar(); - while (ch != EOF && ch != quoteChar) { - ch = ReadChar(); - } - return (pos>i) ? new string(m_buffer, i, pos - i - 1) : ""; - } - return null; - } - private string SniffAttribute(string name) { - SniffWhitespace(); - string id = SniffName(); - if (string.Equals(name, id, StringComparison.OrdinalIgnoreCase)) { - SniffWhitespace(); - if (SniffPattern("=")) { - SniffWhitespace(); - return SniffLiteral(); - } - } - return null; - } - private string SniffAttribute(out string name) { - SniffWhitespace(); - name = SniffName(); - if (name != null){ - SniffWhitespace(); - if (SniffPattern("=")) { - SniffWhitespace(); - return SniffLiteral(); - } - } - return null; - } - private void SniffTerminator(string term) { - int ch = ReadChar(); - int i = 0; - int n = term.Length; - while (i < n && ch != EOF) { - if (term[i] == ch) { - i++; - if (i == n) break; - } else { - i = 0; // reset. - } - ch = ReadChar(); - } - } - - internal Decoder SniffEncoding() - { - Decoder decoder = null; - if (SniffPattern(""); - } - } - if (decoder == null) { - return SniffMeta(); - } - return null; - } - - internal Decoder SniffMeta() - { - int i = ReadChar(); - while (i != EOF) - { - char ch = (char)i; - if (ch == '<') - { - string name = SniffName(); - if (name != null && StringUtilities.EqualsIgnoreCase(name, "meta")) - { - string httpequiv = null; - string content = null; - while (true) - { - string value = SniffAttribute(out name); - if (name == null) - break; - - if (StringUtilities.EqualsIgnoreCase(name, "http-equiv")) - { - httpequiv = value; - } - else if (StringUtilities.EqualsIgnoreCase(name, "content")) - { - content = value; - } - } - - if (httpequiv != null && StringUtilities.EqualsIgnoreCase(httpequiv, "content-type") && content != null) - { - int j = content.IndexOf("charset"); - if (j >= 0) - { - //charset=utf-8 - j = content.IndexOf("=", j); - if (j >= 0) - { - j++; - int k = content.IndexOf(";", j); - if (k<0) k = content.Length; - string charset = content.Substring(j, k-j).Trim(); - try - { - Encoding e = Encoding.GetEncoding(charset); - this.m_encoding = e; - return e.GetDecoder(); - } catch (ArgumentException) {} - } - } - } - } - } - i = ReadChar(); - - } - return null; - } - - internal string SniffName() - { - int c = PeekChar(); - if (c == EOF) - return null; - char ch = (char)c; - int start = pos; - while (pos < used - 1 && (char.IsLetterOrDigit(ch) || ch == '-' || ch == '_' || ch == ':')) - ch = m_buffer[++pos]; - - if (start == pos) - return null; - - return new string(m_buffer, start, pos - start); - } - - [SuppressMessage("Microsoft.Performance", "CA1811", Justification = "Kept for potential future usage.")] - internal void SkipWhitespace() - { - char ch = (char)PeekChar(); - while (pos < used - 1 && (ch == ' ' || ch == '\r' || ch == '\n')) - ch = m_buffer[++pos]; - } - - [SuppressMessage("Microsoft.Performance", "CA1811", Justification = "Kept for potential future usage.")] - internal void SkipTo(char what) - { - char ch = (char)PeekChar(); - while (pos < used - 1 && (ch != what)) - ch = m_buffer[++pos]; - } - - [SuppressMessage("Microsoft.Performance", "CA1811", Justification = "Kept for potential future usage.")] - internal string ParseAttribute() - { - SkipTo('='); - if (pos < used) - { - pos++; - SkipWhitespace(); - if (pos < used) { - char quote = m_buffer[pos]; - pos++; - int start = pos; - SkipTo(quote); - if (pos < used) { - string result = new string(m_buffer, start, pos - start); - pos++; - return result; - } - } - } - return null; - } - public override int Peek() { - int result = Read(); - if (result != EOF) { - pos--; - } - return result; - } - public override int Read() - { - if (pos == used) - { - rawUsed = stm.Read(rawBuffer, 0, rawBuffer.Length); - rawPos = 0; - if (rawUsed == 0) return EOF; - DecodeBlock(); - } - if (pos < used) return m_buffer[pos++]; - return -1; - } - - public override int Read(char[] buffer, int start, int length) { - if (pos == used) { - rawUsed = stm.Read(rawBuffer, 0, rawBuffer.Length); - rawPos = 0; - if (rawUsed == 0) return -1; - DecodeBlock(); - } - if (pos < used) { - length = Math.Min(used - pos, length); - Array.Copy(this.m_buffer, pos, buffer, start, length); - pos += length; - return length; - } - return 0; - } - - public override int ReadBlock(char[] data, int index, int count) - { - return Read(data, index, count); - } - - // Read up to end of line, or full buffer, whichever comes first. - [SuppressMessage("Microsoft.Performance", "CA1811", Justification = "Kept for potential future usage.")] - public int ReadLine(char[] buffer, int start, int length) - { - int i = 0; - int ch = ReadChar(); - while (ch != EOF) { - buffer[i+start] = (char)ch; - i++; - if (i+start == length) - break; // buffer is full - - if (ch == '\r' ) { - if (PeekChar() == '\n') { - ch = ReadChar(); - buffer[i + start] = (char)ch; - i++; - } - break; - } else if (ch == '\n') { - break; - } - ch = ReadChar(); - } - return i; - } - - public override string ReadToEnd() { - char[] buffer = new char[100000]; // large block heap is more efficient - int len = 0; - StringBuilder sb = new StringBuilder(); - while ((len = Read(buffer, 0, buffer.Length)) > 0) { - sb.Append(buffer, 0, len); - } - return sb.ToString(); - } - public override void Close() { - stm.Close(); - } - } - - internal abstract class Ucs4Decoder : Decoder { - internal byte[] temp = new byte[4]; - internal int tempBytes = 0; - public override int GetCharCount(byte[] bytes, int index, int count) { - return (count + tempBytes) / 4; - } - internal abstract int GetFullChars(byte[] bytes, int byteIndex, int byteCount, char[] chars, int charIndex); - public override int GetChars(byte[] bytes, int byteIndex, int byteCount, char[] chars, int charIndex) { - int i = tempBytes; - - if (tempBytes > 0) { - for (; i < 4; i++) { - temp[i] = bytes[byteIndex]; - byteIndex++; - byteCount--; - } - i = 1; - GetFullChars(temp, 0, 4, chars, charIndex); - charIndex++; - } else - i = 0; - i = GetFullChars(bytes, byteIndex, byteCount, chars, charIndex) + i; - - int j = (tempBytes + byteCount) % 4; - byteCount += byteIndex; - byteIndex = byteCount - j; - tempBytes = 0; - - if (byteIndex >= 0) - for (; byteIndex < byteCount; byteIndex++) { - temp[tempBytes] = bytes[byteIndex]; - tempBytes++; - } - return i; - } - internal static char UnicodeToUTF16(UInt32 code) { - byte lowerByte, higherByte; - lowerByte = (byte)(0xD7C0 + (code >> 10)); - higherByte = (byte)(0xDC00 | code & 0x3ff); - return ((char)((higherByte << 8) | lowerByte)); - } - } - - internal class Ucs4DecoderBigEngian : Ucs4Decoder { - internal override int GetFullChars(byte[] bytes, int byteIndex, int byteCount, char[] chars, int charIndex) { - UInt32 code; - int i, j; - byteCount += byteIndex; - for (i = byteIndex, j = charIndex; i + 3 < byteCount; ) { - code = (UInt32)(((bytes[i + 3]) << 24) | (bytes[i + 2] << 16) | (bytes[i + 1] << 8) | (bytes[i])); - if (code > 0x10FFFF) { - throw new SgmlParseException(string.Format(CultureInfo.CurrentUICulture, "Invalid character 0x{0:x} in encoding", code)); - } else if (code > 0xFFFF) { - chars[j] = UnicodeToUTF16(code); - j++; - } else { - if (code >= 0xD800 && code <= 0xDFFF) { - throw new SgmlParseException(string.Format(CultureInfo.CurrentUICulture, "Invalid character 0x{0:x} in encoding", code)); - } else { - chars[j] = (char)code; - } - } - j++; - i += 4; - } - return j - charIndex; - } - } - - internal class Ucs4DecoderLittleEndian : Ucs4Decoder { - internal override int GetFullChars(byte[] bytes, int byteIndex, int byteCount, char[] chars, int charIndex) { - UInt32 code; - int i, j; - byteCount += byteIndex; - for (i = byteIndex, j = charIndex; i + 3 < byteCount; ) { - code = (UInt32)(((bytes[i]) << 24) | (bytes[i + 1] << 16) | (bytes[i + 2] << 8) | (bytes[i + 3])); - if (code > 0x10FFFF) { - throw new SgmlParseException(string.Format(CultureInfo.CurrentUICulture, "Invalid character 0x{0:x} in encoding", code)); - } else if (code > 0xFFFF) { - chars[j] = UnicodeToUTF16(code); - j++; - } else { - if (code >= 0xD800 && code <= 0xDFFF) { - throw new SgmlParseException(string.Format(CultureInfo.CurrentUICulture, "Invalid character 0x{0:x} in encoding", code)); - } else { - chars[j] = (char)code; - } - } - j++; - i += 4; - } - return j - charIndex; - } - } - - /// - /// An element declaration in a DTD. - /// - public class ElementDecl - { - private string m_name; - private bool m_startTagOptional; - private bool m_endTagOptional; - private ContentModel m_contentModel; - private string[] m_inclusions; - private string[] m_exclusions; - private Dictionary m_attList; - - /// - /// Initialises a new element declaration instance. - /// - /// The name of the element. - /// Whether the start tag is optional. - /// Whether the end tag is optional. - /// The of the element. - /// - /// - public ElementDecl(string name, bool sto, bool eto, ContentModel cm, string[] inclusions, string[] exclusions) - { - m_name = name; - m_startTagOptional = sto; - m_endTagOptional = eto; - m_contentModel = cm; - m_inclusions = inclusions; - m_exclusions = exclusions; - } - - /// - /// The element name. - /// - public string Name - { - get - { - return m_name; - } - } - - /// - /// The of the element declaration. - /// - public ContentModel ContentModel - { - get - { - return m_contentModel; - } - } - - /// - /// Whether the end tag of the element is optional. - /// - /// true if the end tag of the element is optional, otherwise false. - public bool EndTagOptional - { - get - { - return m_endTagOptional; - } - } - - /// - /// Whether the start tag of the element is optional. - /// - /// true if the start tag of the element is optional, otherwise false. - public bool StartTagOptional - { - get - { - return m_startTagOptional; - } - } - - /// - /// Finds the attribute definition with the specified name. - /// - /// The name of the to find. - /// The with the specified name. - /// If the attribute list has not yet been initialised. - public AttDef FindAttribute(string name) - { - if (m_attList == null) - throw new InvalidOperationException("The attribute list for the element declaration has not been initialised."); - - AttDef a; - m_attList.TryGetValue(name.ToUpperInvariant(), out a); - return a; - } - - /// - /// Adds attribute definitions to the element declaration. - /// - /// The list of attribute definitions to add. - public void AddAttDefs(Dictionary list) - { - if (list == null) - throw new ArgumentNullException("list"); - - if (m_attList == null) - { - m_attList = list; - } - else - { - foreach (AttDef a in list.Values) - { - if (!m_attList.ContainsKey(a.Name)) - { - m_attList.Add(a.Name, a); - } - } - } - } - - /// - /// Tests whether this element can contain another specified element. - /// - /// The name of the element to check for. - /// The DTD to use to do the check. - /// True if the specified element can be contained by this element. - public bool CanContain(string name, SgmlDtd dtd) - { - // return true if this element is allowed to contain the given element. - if (m_exclusions != null) - { - foreach (string s in m_exclusions) - { - if (string.Equals(s, name, StringComparison.OrdinalIgnoreCase)) - return false; - } - } - - if (m_inclusions != null) - { - foreach (string s in m_inclusions) - { - if (string.Equals(s, name, StringComparison.OrdinalIgnoreCase)) - return true; - } - } - return m_contentModel.CanContain(name, dtd); - } - } - - /// - /// Where nested subelements cannot occur within an element, its contents can be declared to consist of one of the types of declared content contained in this enumeration. - /// - public enum DeclaredContent - { - /// - /// Not defined. - /// - Default, - - /// - /// Character data (CDATA), which contains only valid SGML characters. - /// - [SuppressMessage("Microsoft.Naming", "CA1705", Justification = "This capitalisation is appropriate since the value it represents has all upper-case capitalisation.")] - CDATA, - - /// - /// Replaceable character data (RCDATA), which can contain text, character references and/or general entity references that resolve to character data. - /// - [SuppressMessage("Microsoft.Naming", "CA1705", Justification = "This capitalisation is appropriate since the value it represents has all upper-case capitalisation.")] - RCDATA, - - /// - /// Empty element (EMPTY), i.e. having no contents, or contents that can be generated by the program. - /// - [SuppressMessage("Microsoft.Naming", "CA1705", Justification = "This capitalisation is appropriate since the value it represents has all upper-case capitalisation.")] - EMPTY - } - - /// - /// Defines the content model for an element. - /// - public class ContentModel - { - private DeclaredContent m_declaredContent; - private int m_currentDepth; - private Group m_model; - - /// - /// Initialises a new instance of the class. - /// - public ContentModel() - { - m_model = new Group(null); - } - - /// - /// The number of groups on the stack. - /// - public int CurrentDepth - { - get - { - return m_currentDepth; - } - } - - /// - /// The allowed child content, specifying if nested children are not allowed and if so, what content is allowed. - /// - public DeclaredContent DeclaredContent - { - get - { - return m_declaredContent; - } - } - - /// - /// Begins processing of a nested model group. - /// - public void PushGroup() - { - m_model = new Group(m_model); - m_currentDepth++; - } - - /// - /// Finishes processing of a nested model group. - /// - /// The current depth of the group nesting, or -1 if there are no more groups to pop. - public int PopGroup() - { - if (m_currentDepth == 0) - return -1; - - m_currentDepth--; - m_model.Parent.AddGroup(m_model); - m_model = m_model.Parent; - return m_currentDepth; - } - - /// - /// Adds a new symbol to the current group's members. - /// - /// The symbol to add. - public void AddSymbol(string sym) - { - m_model.AddSymbol(sym); - } - - /// - /// Adds a connector onto the member list for the current group. - /// - /// The connector character to add. - /// - /// If the content is not mixed and has no members yet, or if the group type has been set and the - /// connector does not match the group type. - /// - public void AddConnector(char c) - { - m_model.AddConnector(c); - } - - /// - /// Adds an occurrence character for the current model group, setting it's value. - /// - /// The occurrence character. - public void AddOccurrence(char c) - { - m_model.AddOccurrence(c); - } - - /// - /// Sets the contained content for the content model. - /// - /// The text specified the permissible declared child content. - public void SetDeclaredContent(string dc) - { - // TODO: Validate that this can never combine with nexted groups? - switch (dc) - { - case "EMPTY": - this.m_declaredContent = DeclaredContent.EMPTY; - break; - case "RCDATA": - this.m_declaredContent = DeclaredContent.RCDATA; - break; - case "CDATA": - this.m_declaredContent = DeclaredContent.CDATA; - break; - default: - throw new SgmlParseException(string.Format(CultureInfo.CurrentUICulture, "Declared content type '{0}' is not supported", dc)); - } - } - - /// - /// Checks whether an element using this group can contain a specified element. - /// - /// The name of the element to look for. - /// The DTD to use during the checking. - /// true if an element using this group can contain the element, otherwise false. - public bool CanContain(string name, SgmlDtd dtd) - { - if (m_declaredContent != DeclaredContent.Default) - return false; // empty or text only node. - - return m_model.CanContain(name, dtd); - } - } - - /// - /// The type of the content model group, defining the order in which child elements can occur. - /// - public enum GroupType - { - /// - /// No model group. - /// - None, - - /// - /// All elements must occur, in any order. - /// - And, - - /// - /// One (and only one) must occur. - /// - Or, - - /// - /// All element must occur, in the specified order. - /// - Sequence - }; - - /// - /// Qualifies the occurrence of a child element within a content model group. - /// - public enum Occurrence - { - /// - /// The element is required and must occur only once. - /// - Required, - - /// - /// The element is optional and must occur once at most. - /// - Optional, - - /// - /// The element is optional and can be repeated. - /// - ZeroOrMore, - - /// - /// The element must occur at least once or more times. - /// - OneOrMore - } - - /// - /// Defines a group of elements nested within another element. - /// - public class Group - { - private Group m_parent; - private ArrayList Members; - private GroupType m_groupType; - private Occurrence m_occurrence; - private bool Mixed; - - /// - /// The of this group. - /// - public Occurrence Occurrence - { - get - { - return m_occurrence; - } - } - - /// - /// Checks whether the group contains only text. - /// - /// true if the group is of mixed content and has no members, otherwise false. - public bool TextOnly - { - get - { - return this.Mixed && Members.Count == 0; - } - } - - /// - /// The parent group of this group. - /// - public Group Parent - { - get - { - return m_parent; - } - } - - /// - /// Initialises a new Content Model Group. - /// - /// The parent model group. - public Group(Group parent) - { - m_parent = parent; - Members = new ArrayList(); - m_groupType = GroupType.None; - m_occurrence = Occurrence.Required; - } - - /// - /// Adds a new child model group to the end of the group's members. - /// - /// The model group to add. - public void AddGroup(Group g) - { - Members.Add(g); - } - - /// - /// Adds a new symbol to the group's members. - /// - /// The symbol to add. - public void AddSymbol(string sym) - { - if (string.Equals(sym, "#PCDATA", StringComparison.OrdinalIgnoreCase)) - { - Mixed = true; - } - else - { - Members.Add(sym); - } - } - - /// - /// Adds a connector onto the member list. - /// - /// The connector character to add. - /// - /// If the content is not mixed and has no members yet, or if the group type has been set and the - /// connector does not match the group type. - /// - public void AddConnector(char c) - { - if (!Mixed && Members.Count == 0) - { - throw new SgmlParseException(string.Format(CultureInfo.CurrentUICulture, "Missing token before connector '{0}'.", c)); - } - - GroupType gt = GroupType.None; - switch (c) - { - case ',': - gt = GroupType.Sequence; - break; - case '|': - gt = GroupType.Or; - break; - case '&': - gt = GroupType.And; - break; - } - - if (this.m_groupType != GroupType.None && this.m_groupType != gt) - { - throw new SgmlParseException(string.Format(CultureInfo.CurrentUICulture, "Connector '{0}' is inconsistent with {1} group.", c, m_groupType.ToString())); - } - - m_groupType = gt; - } - - /// - /// Adds an occurrence character for this group, setting it's value. - /// - /// The occurrence character. - public void AddOccurrence(char c) - { - Occurrence o = Occurrence.Required; - switch (c) - { - case '?': - o = Occurrence.Optional; - break; - case '+': - o = Occurrence.OneOrMore; - break; - case '*': - o = Occurrence.ZeroOrMore; - break; - } - - m_occurrence = o; - } - - /// - /// Checks whether an element using this group can contain a specified element. - /// - /// The name of the element to look for. - /// The DTD to use during the checking. - /// true if an element using this group can contain the element, otherwise false. - /// - /// Rough approximation - this is really assuming an "Or" group - /// - public bool CanContain(string name, SgmlDtd dtd) - { - if (dtd == null) - throw new ArgumentNullException("dtd"); - - // Do a simple search of members. - foreach (object obj in Members) - { - if (obj is string) - { - if( string.Equals((string)obj, name, StringComparison.OrdinalIgnoreCase)) - return true; - } - } - // didn't find it, so do a more expensive search over child elements - // that have optional start tags and over child groups. - foreach (object obj in Members) - { - string s = obj as string; - if (s != null) - { - ElementDecl e = dtd.FindElement(s); - if (e != null) - { - if (e.StartTagOptional) - { - // tricky case, the start tag is optional so element may be - // allowed inside this guy! - if (e.CanContain(name, dtd)) - return true; - } - } - } - else - { - Group m = (Group)obj; - if (m.CanContain(name, dtd)) - return true; - } - } - - return false; - } - } - - /// - /// Defines the different possible attribute types. - /// - public enum AttributeType - { - /// - /// Attribute type not specified. - /// - Default, - - /// - /// The attribute contains text (with no markup). - /// - [SuppressMessage("Microsoft.Naming", "CA1705", Justification = "This capitalisation is appropriate since the value it represents has all upper-case capitalisation.")] - CDATA, - - /// - /// The attribute contains an entity declared in a DTD. - /// - [SuppressMessage("Microsoft.Naming", "CA1705", Justification = "This capitalisation is appropriate since the value it represents has all upper-case capitalisation.")] - ENTITY, - - /// - /// The attribute contains a number of entities declared in a DTD. - /// - [SuppressMessage("Microsoft.Naming", "CA1705", Justification = "This capitalisation is appropriate since the value it represents has all upper-case capitalisation.")] - ENTITIES, - - /// - /// The attribute is an id attribute uniquely identifie the element it appears on. - /// - [SuppressMessage("Microsoft.Naming", "CA1705", Justification = "This capitalisation is appropriate since the value it represents has all upper-case capitalisation.")] - [SuppressMessage("Microsoft.Naming", "CA1706", Justification = "This capitalisation is appropriate since the value it represents has all upper-case capitalisation.")] - ID, - - /// - /// The attribute value can be any declared subdocument or data entity name. - /// - [SuppressMessage("Microsoft.Naming", "CA1705", Justification = "This capitalisation is appropriate since the value it represents has all upper-case capitalisation.")] - IDREF, - - /// - /// The attribute value is a list of (space separated) declared subdocument or data entity names. - /// - [SuppressMessage("Microsoft.Naming", "CA1705", Justification = "This capitalisation is appropriate since the value it represents has all upper-case capitalisation.")] - IDREFS, - - /// - /// The attribute value is a SGML Name. - /// - [SuppressMessage("Microsoft.Naming", "CA1705", Justification = "This capitalisation is appropriate since the value it represents has all upper-case capitalisation.")] - NAME, - - /// - /// The attribute value is a list of (space separated) SGML Names. - /// - [SuppressMessage("Microsoft.Naming", "CA1705", Justification = "This capitalisation is appropriate since the value it represents has all upper-case capitalisation.")] - NAMES, - - /// - /// The attribute value is an XML name token (i.e. contains only name characters, but in this case with digits and other valid name characters accepted as the first character). - /// - [SuppressMessage("Microsoft.Naming", "CA1705", Justification = "This capitalisation is appropriate since the value it represents has all upper-case capitalisation.")] - NMTOKEN, - - /// - /// The attribute value is a list of (space separated) XML NMTokens. - /// - [SuppressMessage("Microsoft.Naming", "CA1705", Justification = "This capitalisation is appropriate since the value it represents has all upper-case capitalisation.")] - NMTOKENS, - - /// - /// The attribute value is a number. - /// - [SuppressMessage("Microsoft.Naming", "CA1705", Justification = "This capitalisation is appropriate since the value it represents has all upper-case capitalisation.")] - NUMBER, - - /// - /// The attribute value is a list of (space separated) numbers. - /// - [SuppressMessage("Microsoft.Naming", "CA1705", Justification = "This capitalisation is appropriate since the value it represents has all upper-case capitalisation.")] - NUMBERS, - - /// - /// The attribute value is a number token (i.e. a name that starts with a number). - /// - [SuppressMessage("Microsoft.Naming", "CA1705", Justification = "This capitalisation is appropriate since the value it represents has all upper-case capitalisation.")] - NUTOKEN, - - /// - /// The attribute value is a list of number tokens. - /// - [SuppressMessage("Microsoft.Naming", "CA1705", Justification = "This capitalisation is appropriate since the value it represents has all upper-case capitalisation.")] - NUTOKENS, - - /// - /// Attribute value is a member of the bracketed list of notation names that qualifies this reserved name. - /// - [SuppressMessage("Microsoft.Naming", "CA1705", Justification = "This capitalisation is appropriate since the value it represents has all upper-case capitalisation.")] - NOTATION, - - /// - /// The attribute value is one of a set of allowed names. - /// - [SuppressMessage("Microsoft.Naming", "CA1705", Justification = "This capitalisation is appropriate since the value it represents has all upper-case capitalisation.")] - ENUMERATION - } - - /// - /// Defines the different constraints on an attribute's presence on an element. - /// - public enum AttributePresence - { - /// - /// The attribute has a default value, and its presence is optional. - /// - Default, - - /// - /// The attribute has a fixed value, if present. - /// - Fixed, - - /// - /// The attribute must always be present on every element. - /// - Required, - - /// - /// The element is optional. - /// - Implied - } - - /// - /// An attribute definition in a DTD. - /// - public class AttDef - { - private string m_name; - private AttributeType m_type; - private string[] m_enumValues; - private string m_default; - private AttributePresence m_presence; - - /// - /// Initialises a new instance of the class. - /// - /// The name of the attribute. - public AttDef(string name) - { - m_name = name; - } - - /// - /// The name of the attribute declared by this attribute definition. - /// - public string Name - { - get - { - return m_name; - } - } - - /// - /// Gets of sets the default value of the attribute. - /// - public string Default - { - get - { - return m_default; - } - set - { - m_default = value; - } - } - - /// - /// The constraints on the attribute's presence on an element. - /// - public AttributePresence AttributePresence - { - get - { - return m_presence; - } - } - - /// - /// Gets or sets the possible enumerated values for the attribute. - /// - [SuppressMessage("Microsoft.Performance", "CA1819", Justification = "Changing this would break backwards compatibility with previous code using this library.")] - public string[] EnumValues - { - get - { - return m_enumValues; - } - } - - /// - /// Sets the attribute definition to have an enumerated value. - /// - /// The possible values in the enumeration. - /// The type to set the attribute to. - /// If the type parameter is not either or . - public void SetEnumeratedType(string[] enumValues, AttributeType type) - { - if (type != AttributeType.ENUMERATION && type != AttributeType.NOTATION) - throw new ArgumentException(string.Format(CultureInfo.CurrentUICulture, "AttributeType {0} is not valid for an attribute definition with an enumerated value.", type)); - - m_enumValues = enumValues; - m_type = type; - } - - /// - /// The of the attribute declaration. - /// - public AttributeType Type - { - get - { - return m_type; - } - } - - /// - /// Sets the type of the attribute definition. - /// - /// The string representation of the attribute type, corresponding to the values in the enumeration. - public void SetType(string type) - { - switch (type) - { - case "CDATA": - m_type = AttributeType.CDATA; - break; - case "ENTITY": - m_type = AttributeType.ENTITY; - break; - case "ENTITIES": - m_type = AttributeType.ENTITIES; - break; - case "ID": - m_type = AttributeType.ID; - break; - case "IDREF": - m_type = AttributeType.IDREF; - break; - case "IDREFS": - m_type = AttributeType.IDREFS; - break; - case "NAME": - m_type = AttributeType.NAME; - break; - case "NAMES": - m_type = AttributeType.NAMES; - break; - case "NMTOKEN": - m_type = AttributeType.NMTOKEN; - break; - case "NMTOKENS": - m_type = AttributeType.NMTOKENS; - break; - case "NUMBER": - m_type = AttributeType.NUMBER; - break; - case "NUMBERS": - m_type = AttributeType.NUMBERS; - break; - case "NUTOKEN": - m_type = AttributeType.NUTOKEN; - break; - case "NUTOKENS": - m_type = AttributeType.NUTOKENS; - break; - default: - throw new SgmlParseException(string.Format(CultureInfo.CurrentUICulture, "Attribute type '{0}' is not supported", type)); - } - } - - /// - /// Sets the attribute presence declaration. - /// - /// The string representation of the attribute presence, corresponding to one of the values in the enumeration. - /// true if the attribute presence implies the element has a default value. - public bool SetPresence(string token) - { - bool hasDefault = true; - if (string.Equals(token, "FIXED", StringComparison.OrdinalIgnoreCase)) - { - m_presence = AttributePresence.Fixed; - } - else if (string.Equals(token, "REQUIRED", StringComparison.OrdinalIgnoreCase)) - { - m_presence = AttributePresence.Required; - hasDefault = false; - } - else if (string.Equals(token, "IMPLIED", StringComparison.OrdinalIgnoreCase)) - { - m_presence = AttributePresence.Implied; - hasDefault = false; - } - else - { - throw new SgmlParseException(string.Format(CultureInfo.CurrentUICulture, "Attribute value '{0}' not supported", token)); - } - - return hasDefault; - } - } - -/* JB: Replaced this with a Dictionary - public class AttList : IEnumerable - { - Hashtable AttDefs; - - public AttList() - { - AttDefs = new Hashtable(); - } - - public void Add(AttDef a) - { - AttDefs.Add(a.Name, a); - } - - public AttDef this[string name] - { - get - { - return (AttDef)AttDefs[name]; - } - } - - public IEnumerator GetEnumerator() - { - return AttDefs.Values.GetEnumerator(); - } - } -*/ - /// - /// Provides DTD parsing and support for the SgmlParser framework. - /// - public class SgmlDtd - { - private string m_name; - - private Dictionary m_elements; - private Dictionary m_pentities; - private Dictionary m_entities; - private StringBuilder m_sb; - private Entity m_current; - - /// - /// Initialises a new instance of the class. - /// - /// The name of the DTD. - /// The is NOT used. - public SgmlDtd(string name, XmlNameTable nt) - { - this.m_name = name; - this.m_elements = new Dictionary(); - this.m_pentities = new Dictionary(); - this.m_entities = new Dictionary(); - this.m_sb = new StringBuilder(); - } - - /// - /// The name of the DTD. - /// - public string Name - { - get - { - return m_name; - } - } - - /// - /// Gets the XmlNameTable associated with this implementation. - /// - /// The XmlNameTable enabling you to get the atomized version of a string within the node. - public XmlNameTable NameTable - { - get - { - return null; - } - } - - /// - /// Parses a DTD and creates a instance that encapsulates the DTD. - /// - /// The base URI of the DTD. - /// The name of the DTD. - /// - /// - /// - /// - /// The is NOT used. - /// A new instance that encapsulates the DTD. - public static SgmlDtd Parse(Uri baseUri, string name, string pubid, string url, string subset, string proxy, XmlNameTable nt) - { - SgmlDtd dtd = new SgmlDtd(name, nt); - if (!string.IsNullOrEmpty(url)) - { - dtd.PushEntity(baseUri, new Entity(dtd.Name, pubid, url, proxy)); - } - - if (!string.IsNullOrEmpty(subset)) - { - dtd.PushEntity(baseUri, new Entity(name, subset)); - } - - try - { - dtd.Parse(); - } - catch (ApplicationException e) - { - throw new SgmlParseException(e.Message + dtd.m_current.Context()); - } - - return dtd; - } - - /// - /// Parses a DTD and creates a instance that encapsulates the DTD. - /// - /// The base URI of the DTD. - /// The name of the DTD. - /// The reader to load the DTD from. - /// - /// The proxy server to use when loading resources. - /// The is NOT used. - /// A new instance that encapsulates the DTD. - [SuppressMessage("Microsoft.Reliability", "CA2000", Justification = "The entities created here are not temporary and should not be disposed here.")] - public static SgmlDtd Parse(Uri baseUri, string name, TextReader input, string subset, string proxy, XmlNameTable nt) - { - SgmlDtd dtd = new SgmlDtd(name, nt); - dtd.PushEntity(baseUri, new Entity(dtd.Name, baseUri, input, proxy)); - if (!string.IsNullOrEmpty(subset)) - { - dtd.PushEntity(baseUri, new Entity(name, subset)); - } - - try - { - dtd.Parse(); - } - catch (ApplicationException e) - { - throw new SgmlParseException(e.Message + dtd.m_current.Context()); - } - - return dtd; - } - - /// - /// Finds an entity in the DTD with the specified name. - /// - /// The name of the to find. - /// The specified Entity from the DTD. - public Entity FindEntity(string name) - { - Entity e; - this.m_entities.TryGetValue(name, out e); - return e; - } - - /// - /// Finds an element declaration in the DTD with the specified name. - /// - /// The name of the to find and return. - /// The matching the specified name. - public ElementDecl FindElement(string name) - { - ElementDecl el; - m_elements.TryGetValue(name.ToUpperInvariant(), out el); - return el; - } - - //-------------------------------- Parser ------------------------- - private void PushEntity(Uri baseUri, Entity e) - { - e.Open(this.m_current, baseUri); - this.m_current = e; - this.m_current.ReadChar(); - } - - private void PopEntity() - { - if (this.m_current != null) this.m_current.Close(); - if (this.m_current.Parent != null) - { - this.m_current = this.m_current.Parent; - } - else - { - this.m_current = null; - } - } - - private void Parse() - { - char ch = this.m_current.Lastchar; - while (true) - { - switch (ch) - { - case Entity.EOF: - PopEntity(); - if (this.m_current == null) - return; - ch = this.m_current.Lastchar; - break; - case ' ': - case '\n': - case '\r': - case '\t': - ch = this.m_current.ReadChar(); - break; - case '<': - ParseMarkup(); - ch = this.m_current.ReadChar(); - break; - case '%': - Entity e = ParseParameterEntity(SgmlDtd.WhiteSpace); - try - { - PushEntity(this.m_current.ResolvedUri, e); - } - catch (Exception ex) - { - // BUG: need an error log. - Console.WriteLine(ex.Message + this.m_current.Context()); - } - ch = this.m_current.Lastchar; - break; - default: - this.m_current.Error("Unexpected character '{0}'", ch); - break; - } - } - } - - void ParseMarkup() - { - char ch = this.m_current.ReadChar(); - if (ch != '!') - { - this.m_current.Error("Found '{0}', but expecing declaration starting with '"); - } - else if (ch == '[') - { - ParseMarkedSection(); - } - else - { - string token = this.m_current.ScanToken(this.m_sb, SgmlDtd.WhiteSpace, true); - switch (token) - { - case "ENTITY": - ParseEntity(); - break; - case "ELEMENT": - ParseElementDecl(); - break; - case "ATTLIST": - ParseAttList(); - break; - default: - this.m_current.Error("Invalid declaration ' - this.m_current.ReadChar(); // move to next char. - string name = ScanName("["); - if (string.Equals(name, "INCLUDE", StringComparison.OrdinalIgnoreCase)) - { - ParseIncludeSection(); - } - else if (string.Equals(name, "IGNORE", StringComparison.OrdinalIgnoreCase)) - { - ParseIgnoreSection(); - } - else - { - this.m_current.Error("Unsupported marked section type '{0}'", name); - } - } - - [SuppressMessage("Microsoft.Performance", "CA1822", Justification = "This is not yet implemented and will use 'this' in the future.")] - [SuppressMessage("Microsoft.Globalization", "CA1303", Justification = "The use of a literal here is only due to this not yet being implemented.")] - private void ParseIncludeSection() - { - throw new NotImplementedException("Include Section"); - } - - void ParseIgnoreSection() - { - char ch = this.m_current.SkipWhitespace(); - if (ch != '[') this.m_current.Error("Expecting '[' but found {0}", ch); - this.m_current.ScanToEnd(this.m_sb, "Conditional Section", "]]>"); - } - - string ScanName(string term) - { - // skip whitespace, scan name (which may be parameter entity reference - // which is then expanded to a name) - char ch = this.m_current.SkipWhitespace(); - if (ch == '%') - { - Entity e = ParseParameterEntity(term); - ch = this.m_current.Lastchar; - // bugbug - need to support external and nested parameter entities - if (!e.IsInternal) throw new NotSupportedException("External parameter entity resolution"); - return e.Literal.Trim(); - } - else - { - return this.m_current.ScanToken(this.m_sb, term, true); - } - } - - private Entity ParseParameterEntity(string term) - { - // almost the same as this.current.ScanToken, except we also terminate on ';' - this.m_current.ReadChar(); - string name = this.m_current.ScanToken(this.m_sb, ";"+term, false); - if (this.m_current.Lastchar == ';') - this.m_current.ReadChar(); - Entity e = GetParameterEntity(name); - return e; - } - - private Entity GetParameterEntity(string name) - { - Entity e = null; - m_pentities.TryGetValue(name, out e); - if (e == null) - this.m_current.Error("Reference to undefined parameter entity '{0}'", name); - - return e; - } - - /// - /// Returns a dictionary for looking up entities by their value. - /// - /// A dictionary for looking up entities by their value. - [SuppressMessage("Microsoft.Design", "CA1024", Justification = "This method creates and copies a dictionary, so exposing it as a property is not appropriate.")] - public Dictionary GetEntitiesLiteralNameLookup() - { - Dictionary hashtable = new Dictionary(); - foreach (Entity entity in this.m_entities.Values) - hashtable[entity.Literal] = entity; - - return hashtable; - } - - private const string WhiteSpace = " \r\n\t"; - - private void ParseEntity() - { - char ch = this.m_current.SkipWhitespace(); - bool pe = (ch == '%'); - if (pe) - { - // parameter entity. - this.m_current.ReadChar(); // move to next char - ch = this.m_current.SkipWhitespace(); - } - string name = this.m_current.ScanToken(this.m_sb, SgmlDtd.WhiteSpace, true); - ch = this.m_current.SkipWhitespace(); - Entity e = null; - if (ch == '"' || ch == '\'') - { - string literal = this.m_current.ScanLiteral(this.m_sb, ch); - e = new Entity(name, literal); - } - else - { - string pubid = null; - string extid = null; - string tok = this.m_current.ScanToken(this.m_sb, SgmlDtd.WhiteSpace, true); - if (Entity.IsLiteralType(tok)) - { - ch = this.m_current.SkipWhitespace(); - string literal = this.m_current.ScanLiteral(this.m_sb, ch); - e = new Entity(name, literal); - e.SetLiteralType(tok); - } - else - { - extid = tok; - if (string.Equals(extid, "PUBLIC", StringComparison.OrdinalIgnoreCase)) - { - ch = this.m_current.SkipWhitespace(); - if (ch == '"' || ch == '\'') - { - pubid = this.m_current.ScanLiteral(this.m_sb, ch); - } - else - { - this.m_current.Error("Expecting public identifier literal but found '{0}'",ch); - } - } - else if (!string.Equals(extid, "SYSTEM", StringComparison.OrdinalIgnoreCase)) - { - this.m_current.Error("Invalid external identifier '{0}'. Expecing 'PUBLIC' or 'SYSTEM'.", extid); - } - string uri = null; - ch = this.m_current.SkipWhitespace(); - if (ch == '"' || ch == '\'') - { - uri = this.m_current.ScanLiteral(this.m_sb, ch); - } - else if (ch != '>') - { - this.m_current.Error("Expecting system identifier literal but found '{0}'",ch); - } - e = new Entity(name, pubid, uri, this.m_current.Proxy); - } - } - ch = this.m_current.SkipWhitespace(); - if (ch == '-') - ch = ParseDeclComments(); - if (ch != '>') - { - this.m_current.Error("Expecting end of entity declaration '>' but found '{0}'", ch); - } - if (pe) - this.m_pentities.Add(e.Name, e); - else - this.m_entities.Add(e.Name, e); - } - - private void ParseElementDecl() - { - char ch = this.m_current.SkipWhitespace(); - string[] names = ParseNameGroup(ch, true); - ch = char.ToUpperInvariant(this.m_current.SkipWhitespace()); - bool sto = false; - bool eto = false; - if (ch == 'O' || ch == '-') { - sto = (ch == 'O'); // start tag optional? - this.m_current.ReadChar(); - ch = char.ToUpperInvariant(this.m_current.SkipWhitespace()); - if (ch == 'O' || ch == '-'){ - eto = (ch == 'O'); // end tag optional? - ch = this.m_current.ReadChar(); - } - } - ch = this.m_current.SkipWhitespace(); - ContentModel cm = ParseContentModel(ch); - ch = this.m_current.SkipWhitespace(); - - string [] exclusions = null; - string [] inclusions = null; - - if (ch == '-') - { - ch = this.m_current.ReadChar(); - if (ch == '(') - { - exclusions = ParseNameGroup(ch, true); - ch = this.m_current.SkipWhitespace(); - } - else if (ch == '-') - { - ch = ParseDeclComment(false); - } - else - { - this.m_current.Error("Invalid syntax at '{0}'", ch); - } - } - - if (ch == '-') - ch = ParseDeclComments(); - - if (ch == '+') - { - ch = this.m_current.ReadChar(); - if (ch != '(') - { - this.m_current.Error("Expecting inclusions name group", ch); - } - inclusions = ParseNameGroup(ch, true); - ch = this.m_current.SkipWhitespace(); - } - - if (ch == '-') - ch = ParseDeclComments(); - - - if (ch != '>') - { - this.m_current.Error("Expecting end of ELEMENT declaration '>' but found '{0}'", ch); - } - - foreach (string name in names) - { - string atom = name.ToUpperInvariant(); - this.m_elements.Add(atom, new ElementDecl(atom, sto, eto, cm, inclusions, exclusions)); - } - } - - static string ngterm = " \r\n\t|,)"; - string[] ParseNameGroup(char ch, bool nmtokens) - { - ArrayList names = new ArrayList(); - if (ch == '(') - { - ch = this.m_current.ReadChar(); - ch = this.m_current.SkipWhitespace(); - while (ch != ')') - { - // skip whitespace, scan name (which may be parameter entity reference - // which is then expanded to a name) - ch = this.m_current.SkipWhitespace(); - if (ch == '%') - { - Entity e = ParseParameterEntity(SgmlDtd.ngterm); - PushEntity(this.m_current.ResolvedUri, e); - ParseNameList(names, nmtokens); - PopEntity(); - ch = this.m_current.Lastchar; - } - else - { - string token = this.m_current.ScanToken(this.m_sb, SgmlDtd.ngterm, nmtokens); - token = token.ToUpperInvariant(); - names.Add(token); - } - ch = this.m_current.SkipWhitespace(); - if (ch == '|' || ch == ',') ch = this.m_current.ReadChar(); - } - this.m_current.ReadChar(); // consume ')' - } - else - { - string name = this.m_current.ScanToken(this.m_sb, SgmlDtd.WhiteSpace, nmtokens); - name = name.ToUpperInvariant(); - names.Add(name); - } - return (string[])names.ToArray(typeof(string)); - } - - void ParseNameList(ArrayList names, bool nmtokens) - { - char ch = this.m_current.Lastchar; - ch = this.m_current.SkipWhitespace(); - while (ch != Entity.EOF) - { - string name; - if (ch == '%') - { - Entity e = ParseParameterEntity(SgmlDtd.ngterm); - PushEntity(this.m_current.ResolvedUri, e); - ParseNameList(names, nmtokens); - PopEntity(); - ch = this.m_current.Lastchar; - } - else - { - name = this.m_current.ScanToken(this.m_sb, SgmlDtd.ngterm, true); - name = name.ToUpperInvariant(); - names.Add(name); - } - ch = this.m_current.SkipWhitespace(); - if (ch == '|') - { - ch = this.m_current.ReadChar(); - ch = this.m_current.SkipWhitespace(); - } - } - } - - static string dcterm = " \r\n\t>"; - private ContentModel ParseContentModel(char ch) - { - ContentModel cm = new ContentModel(); - if (ch == '(') - { - this.m_current.ReadChar(); - ParseModel(')', cm); - ch = this.m_current.ReadChar(); - if (ch == '?' || ch == '+' || ch == '*') - { - cm.AddOccurrence(ch); - this.m_current.ReadChar(); - } - } - else if (ch == '%') - { - Entity e = ParseParameterEntity(SgmlDtd.dcterm); - PushEntity(this.m_current.ResolvedUri, e); - cm = ParseContentModel(this.m_current.Lastchar); - PopEntity(); // bugbug should be at EOF. - } - else - { - string dc = ScanName(SgmlDtd.dcterm); - cm.SetDeclaredContent(dc); - } - return cm; - } - - static string cmterm = " \r\n\t,&|()?+*"; - void ParseModel(char cmt, ContentModel cm) - { - // Called when part of the model is made up of the contents of a parameter entity - int depth = cm.CurrentDepth; - char ch = this.m_current.Lastchar; - ch = this.m_current.SkipWhitespace(); - while (ch != cmt || cm.CurrentDepth > depth) // the entity must terminate while inside the content model. - { - if (ch == Entity.EOF) - { - this.m_current.Error("Content Model was not closed"); - } - if (ch == '%') - { - Entity e = ParseParameterEntity(SgmlDtd.cmterm); - PushEntity(this.m_current.ResolvedUri, e); - ParseModel(Entity.EOF, cm); - PopEntity(); - ch = this.m_current.SkipWhitespace(); - } - else if (ch == '(') - { - cm.PushGroup(); - this.m_current.ReadChar();// consume '(' - ch = this.m_current.SkipWhitespace(); - } - else if (ch == ')') - { - ch = this.m_current.ReadChar();// consume ')' - if (ch == '*' || ch == '+' || ch == '?') - { - cm.AddOccurrence(ch); - ch = this.m_current.ReadChar(); - } - if (cm.PopGroup() < depth) - { - this.m_current.Error("Parameter entity cannot close a paren outside it's own scope"); - } - ch = this.m_current.SkipWhitespace(); - } - else if (ch == ',' || ch == '|' || ch == '&') - { - cm.AddConnector(ch); - this.m_current.ReadChar(); // skip connector - ch = this.m_current.SkipWhitespace(); - } - else - { - string token; - if (ch == '#') - { - ch = this.m_current.ReadChar(); - token = "#" + this.m_current.ScanToken(this.m_sb, SgmlDtd.cmterm, true); // since '#' is not a valid name character. - } - else - { - token = this.m_current.ScanToken(this.m_sb, SgmlDtd.cmterm, true); - } - - token = token.ToUpperInvariant(); - ch = this.m_current.Lastchar; - if (ch == '?' || ch == '+' || ch == '*') - { - cm.PushGroup(); - cm.AddSymbol(token); - cm.AddOccurrence(ch); - cm.PopGroup(); - this.m_current.ReadChar(); // skip connector - ch = this.m_current.SkipWhitespace(); - } - else - { - cm.AddSymbol(token); - ch = this.m_current.SkipWhitespace(); - } - } - } - } - - void ParseAttList() - { - char ch = this.m_current.SkipWhitespace(); - string[] names = ParseNameGroup(ch, true); - Dictionary attlist = new Dictionary(); - ParseAttList(attlist, '>'); - foreach (string name in names) - { - ElementDecl e; - if (!m_elements.TryGetValue(name, out e)) - { - this.m_current.Error("ATTLIST references undefined ELEMENT {0}", name); - } - - e.AddAttDefs(attlist); - } - } - - static string peterm = " \t\r\n>"; - void ParseAttList(Dictionary list, char term) - { - char ch = this.m_current.SkipWhitespace(); - while (ch != term) - { - if (ch == '%') - { - Entity e = ParseParameterEntity(SgmlDtd.peterm); - PushEntity(this.m_current.ResolvedUri, e); - ParseAttList(list, Entity.EOF); - PopEntity(); - ch = this.m_current.SkipWhitespace(); - } - else if (ch == '-') - { - ch = ParseDeclComments(); - } - else - { - AttDef a = ParseAttDef(ch); - list.Add(a.Name, a); - } - ch = this.m_current.SkipWhitespace(); - } - } - - AttDef ParseAttDef(char ch) - { - ch = this.m_current.SkipWhitespace(); - string name = ScanName(SgmlDtd.WhiteSpace); - name = name.ToUpperInvariant(); - AttDef attdef = new AttDef(name); - - ch = this.m_current.SkipWhitespace(); - if (ch == '-') - ch = ParseDeclComments(); - - ParseAttType(ch, attdef); - - ch = this.m_current.SkipWhitespace(); - if (ch == '-') - ch = ParseDeclComments(); - - ParseAttDefault(ch, attdef); - - ch = this.m_current.SkipWhitespace(); - if (ch == '-') - ch = ParseDeclComments(); - - return attdef; - - } - - void ParseAttType(char ch, AttDef attdef) - { - if (ch == '%') - { - Entity e = ParseParameterEntity(SgmlDtd.WhiteSpace); - PushEntity(this.m_current.ResolvedUri, e); - ParseAttType(this.m_current.Lastchar, attdef); - PopEntity(); // bugbug - are we at the end of the entity? - ch = this.m_current.Lastchar; - return; - } - - if (ch == '(') - { - //attdef.EnumValues = ParseNameGroup(ch, false); - //attdef.Type = AttributeType.ENUMERATION; - attdef.SetEnumeratedType(ParseNameGroup(ch, false), AttributeType.ENUMERATION); - } - else - { - string token = ScanName(SgmlDtd.WhiteSpace); - if (string.Equals(token, "NOTATION", StringComparison.OrdinalIgnoreCase)) - { - ch = this.m_current.SkipWhitespace(); - if (ch != '(') - { - this.m_current.Error("Expecting name group '(', but found '{0}'", ch); - } - //attdef.Type = AttributeType.NOTATION; - //attdef.EnumValues = ParseNameGroup(ch, true); - attdef.SetEnumeratedType(ParseNameGroup(ch, true), AttributeType.NOTATION); - } - else - { - attdef.SetType(token); - } - } - } - - void ParseAttDefault(char ch, AttDef attdef) - { - if (ch == '%') - { - Entity e = ParseParameterEntity(SgmlDtd.WhiteSpace); - PushEntity(this.m_current.ResolvedUri, e); - ParseAttDefault(this.m_current.Lastchar, attdef); - PopEntity(); // bugbug - are we at the end of the entity? - ch = this.m_current.Lastchar; - return; - } - - bool hasdef = true; - if (ch == '#') - { - this.m_current.ReadChar(); - string token = this.m_current.ScanToken(this.m_sb, SgmlDtd.WhiteSpace, true); - hasdef = attdef.SetPresence(token); - ch = this.m_current.SkipWhitespace(); - } - if (hasdef) - { - if (ch == '\'' || ch == '"') - { - string lit = this.m_current.ScanLiteral(this.m_sb, ch); - attdef.Default = lit; - ch = this.m_current.SkipWhitespace(); - } - else - { - string name = this.m_current.ScanToken(this.m_sb, SgmlDtd.WhiteSpace, false); - name = name.ToUpperInvariant(); - attdef.Default = name; // bugbug - must be one of the enumerated names. - ch = this.m_current.SkipWhitespace(); - } - } - } - } - - internal static class StringUtilities - { - public static bool EqualsIgnoreCase(string a, string b){ - return string.Equals(a, b, StringComparison.OrdinalIgnoreCase); - } - } -} +/* + * + * Copyright (c) 2007-2013 MindTouch. All rights reserved. + * www.mindtouch.com oss@mindtouch.com + * + * For community documentation and downloads visit wiki.developer.mindtouch.com; + * please review the licensing section. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Diagnostics.CodeAnalysis; +using System.Globalization; +using System.IO; +using System.Net; +using System.Runtime.Serialization; +using System.Security.Permissions; +using System.Text; +using System.Xml; + +namespace SgmlCore { + /// + /// Thrown if any errors occur while parsing the source. + /// + [Serializable] + public class SgmlParseException : Exception + { + private string m_entityContext; + + /// + /// Instantiates a new instance of SgmlParseException with no specific error information. + /// + public SgmlParseException() + { + } + + /// + /// Instantiates a new instance of SgmlParseException with an error message describing the problem. + /// + /// A message describing the error that occurred + public SgmlParseException(string message) + : base(message) + { + } + + /// + /// Instantiates a new instance of SgmlParseException with an error message describing the problem. + /// + /// A message describing the error that occurred + /// The entity on which the error occurred. + public SgmlParseException(string message, Entity e) + : base(message) + { + if (e != null) + m_entityContext = e.Context(); + } + + /// + /// Instantiates a new instance of SgmlParseException with an error message describing the problem. + /// + /// A message describing the error that occurred + /// The original exception that caused the problem. + public SgmlParseException(string message, Exception innerException) + : base(message, innerException) + { + } + + /// + /// Initializes a new instance of the SgmlParseException class with serialized data. + /// + /// The object that holds the serialized object data. + /// The contextual information about the source or destination. + protected SgmlParseException(SerializationInfo streamInfo, StreamingContext streamCtx) + : base(streamInfo, streamCtx) + { + if (streamInfo != null) + m_entityContext = streamInfo.GetString("entityContext"); + } + + /// + /// Contextual information detailing the entity on which the error occurred. + /// + public string EntityContext + { + get + { + return m_entityContext; + } + } + + /// + /// Populates a SerializationInfo with the data needed to serialize the exception. + /// + /// The to populate with data. + /// The destination (see ) for this serialization. + [SecurityPermission(SecurityAction.Demand, SerializationFormatter=true)] + public override void GetObjectData(SerializationInfo info, StreamingContext context) + { + if (info == null) + throw new ArgumentNullException("info"); + + info.AddValue("entityContext", m_entityContext); + base.GetObjectData(info, context); + } + } + + /// + /// The different types of literal text returned by the SgmlParser. + /// + public enum LiteralType + { + /// + /// CDATA text literals. + /// + [SuppressMessage("Microsoft.Naming", "CA1705", Justification = "This capitalisation is appropriate since the value it represents has all upper-case capitalisation.")] + CDATA, + + /// + /// SDATA entities. + /// + [SuppressMessage("Microsoft.Naming", "CA1705", Justification = "This capitalisation is appropriate since the value it represents has all upper-case capitalisation.")] + SDATA, + + /// + /// The contents of a Processing Instruction. + /// + [SuppressMessage("Microsoft.Naming", "CA1705", Justification = "This capitalisation is appropriate since the value it represents has all upper-case capitalisation.")] + PI + }; + + /// + /// An Entity declared in a DTD. + /// + public class Entity : IDisposable + { + /// + /// The character indicating End Of File. + /// + [SuppressMessage("Microsoft.Naming", "CA1705", Justification = "The capitalisation is correct since EOF is an acronym.")] + public const char EOF = (char)65535; + + private string m_proxy; + private string m_name; + private bool m_isInternal; + private string m_publicId; + private string m_uri; + private string m_literal; + private LiteralType m_literalType; + private Entity m_parent; + private bool m_isHtml; + private int m_line; + private char m_lastchar; + private bool m_isWhitespace; + + private Encoding m_encoding; + private Uri m_resolvedUri; + private TextReader m_stm; + private bool m_weOwnTheStream; + private int m_lineStart; + private int m_absolutePos; + + /// + /// Initialises a new instance of an Entity declared in a DTD. + /// + /// The name of the entity. + /// The public id of the entity. + /// The uri of the entity. + /// The proxy server to use when retrieving any web content. + public Entity(string name, string pubid, string uri, string proxy) + { + m_name = name; + m_publicId = pubid; + m_uri = uri; + m_proxy = proxy; + m_isHtml = (name != null && StringUtilities.EqualsIgnoreCase(name, "html")); + } + + /// + /// Initialises a new instance of an Entity declared in a DTD. + /// + /// The name of the entity. + /// The literal value of the entity. + public Entity(string name, string literal) + { + m_name = name; + m_literal = literal; + m_isInternal = true; + } + + /// + /// Initialises a new instance of an Entity declared in a DTD. + /// + /// The name of the entity. + /// The baseUri for the entity to read from the TextReader. + /// The TextReader to read the entity from. + /// The proxy server to use when retrieving any web content. + public Entity(string name, Uri baseUri, TextReader stm, string proxy) + { + m_name = name; + m_isInternal = true; + m_stm = stm; + m_resolvedUri = baseUri; + m_proxy = proxy; + m_isHtml = string.Equals(name, "html", StringComparison.OrdinalIgnoreCase); + } + + /// + /// The name of the entity. + /// + public string Name + { + get + { + return m_name; + } + } + + /// + /// True if the entity is the html element entity. + /// + public bool IsHtml + { + get + { + return m_isHtml; + } + set + { + m_isHtml = value; + } + } + + /// + /// The public identifier of this entity. + /// + public string PublicId + { + get + { + return m_publicId; + } + } + + /// + /// The Uri that is the source for this entity. + /// + public string Uri + { + get + { + return m_uri; + } + } + + /// + /// The resolved location of the DTD this entity is from. + /// + public Uri ResolvedUri + { + get + { + if (this.m_resolvedUri != null) + return this.m_resolvedUri; + else if (m_parent != null) + return m_parent.ResolvedUri; + else + return null; + } + } + + /// + /// Gets the parent Entity of this Entity. + /// + public Entity Parent + { + get + { + return m_parent; + } + } + + /// + /// The last character read from the input stream for this entity. + /// + public char Lastchar + { + get + { + return m_lastchar; + } + } + + /// + /// The line on which this entity was defined. + /// + public int Line + { + get + { + return m_line; + } + } + + /// + /// The index into the line where this entity is defined. + /// + public int LinePosition + { + get + { + return this.m_absolutePos - this.m_lineStart + 1; + } + } + + /// + /// Whether this entity is an internal entity or not. + /// + /// true if this entity is internal, otherwise false. + public bool IsInternal + { + get + { + return m_isInternal; + } + } + + /// + /// The literal value of this entity. + /// + public string Literal + { + get + { + return m_literal; + } + } + + /// + /// The of this entity. + /// + public LiteralType LiteralType + { + get + { + return m_literalType; + } + } + + /// + /// Whether the last char read for this entity is a whitespace character. + /// + public bool IsWhitespace + { + get + { + return m_isWhitespace; + } + } + + /// + /// The proxy server to use when making web requests to resolve entities. + /// + public string Proxy + { + get + { + return m_proxy; + } + } + + /// + /// Reads the next character from the DTD stream. + /// + /// The next character from the DTD stream. + public char ReadChar() + { + char ch = (char)this.m_stm.Read(); + if (ch == 0) + { + // convert nulls to whitespace, since they are not valid in XML anyway. + ch = ' '; + } + this.m_absolutePos++; + if (ch == 0xa) + { + m_isWhitespace = true; + this.m_lineStart = this.m_absolutePos + 1; + this.m_line++; + } + else if (ch == ' ' || ch == '\t') + { + m_isWhitespace = true; + if (m_lastchar == 0xd) + { + this.m_lineStart = this.m_absolutePos; + m_line++; + } + } + else if (ch == 0xd) + { + m_isWhitespace = true; + } + else + { + m_isWhitespace = false; + if (m_lastchar == 0xd) + { + m_line++; + this.m_lineStart = this.m_absolutePos; + } + } + + m_lastchar = ch; + return ch; + } + + /// + /// Begins processing an entity. + /// + /// The parent of this entity. + /// The base Uri for processing this entity within. + public void Open(Entity parent, Uri baseUri) + { + this.m_parent = parent; + if (parent != null) + this.m_isHtml = parent.IsHtml; + this.m_line = 1; + if (m_isInternal) + { + if (this.m_literal != null) + this.m_stm = new StringReader(this.m_literal); + } + else if (this.m_uri == null) + { + this.Error("Unresolvable entity '{0}'", this.m_name); + } + else + { + if (baseUri != null) + { + this.m_resolvedUri = new Uri(baseUri, this.m_uri); + } + else + { + this.m_resolvedUri = new Uri(this.m_uri); + } + + Stream stream = null; + Encoding e = Encoding.Default; + switch (this.m_resolvedUri.Scheme) + { + case "file": + { + string path = this.m_resolvedUri.LocalPath; + stream = new FileStream(path, FileMode.Open, FileAccess.Read); + } + break; + default: + //Console.WriteLine("Fetching:" + ResolvedUri.AbsoluteUri); + HttpWebRequest wr = (HttpWebRequest)WebRequest.Create(ResolvedUri); + wr.UserAgent = "Mozilla/4.0 (compatible;);"; + wr.Timeout = 10000; // in case this is running in an ASPX page. + if (m_proxy != null) + wr.Proxy = new WebProxy(m_proxy); + wr.PreAuthenticate = false; + // Pass the credentials of the process. + wr.Credentials = CredentialCache.DefaultCredentials; + + WebResponse resp = wr.GetResponse(); + Uri actual = resp.ResponseUri; + if (!string.Equals(actual.AbsoluteUri, this.m_resolvedUri.AbsoluteUri, StringComparison.OrdinalIgnoreCase)) + { + this.m_resolvedUri = actual; + } + string contentType = resp.ContentType.ToLowerInvariant(); + string mimeType = contentType; + int i = contentType.IndexOf(';'); + if (i >= 0) + { + mimeType = contentType.Substring(0, i); + } + + if (StringUtilities.EqualsIgnoreCase(mimeType, "text/html")) + { + this.m_isHtml = true; + } + + i = contentType.IndexOf("charset"); + e = Encoding.Default; + if (i >= 0) + { + int j = contentType.IndexOf("=", i); + int k = contentType.IndexOf(";", j); + if (k < 0) + k = contentType.Length; + + if (j > 0) + { + j++; + string charset = contentType.Substring(j, k - j).Trim(); + try + { + e = Encoding.GetEncoding(charset); + } + catch (ArgumentException) + { + } + } + } + + stream = resp.GetResponseStream(); + break; + } + + this.m_weOwnTheStream = true; + HtmlStream html = new HtmlStream(stream, e); + this.m_encoding = html.Encoding; + this.m_stm = html; + } + } + + /// + /// Gets the character encoding for this entity. + /// + public Encoding Encoding + { + get + { + return this.m_encoding; + } + } + + /// + /// Closes the reader from which the entity is being read. + /// + public void Close() + { + if (this.m_weOwnTheStream) + this.m_stm.Close(); + } + + /// + /// Returns the next character after any whitespace. + /// + /// The next character that is not whitespace. + public char SkipWhitespace() + { + char ch = m_lastchar; + while (ch != Entity.EOF && (ch == ' ' || ch == '\r' || ch == '\n' || ch == '\t')) + { + ch = ReadChar(); + } + return ch; + } + + /// + /// Scans a token from the input stream and returns the result. + /// + /// The to use to process the token. + /// A set of characters to look for as terminators for the token. + /// true if the token should be a NMToken, otherwise false. + /// The scanned token. + public string ScanToken(StringBuilder sb, string term, bool nmtoken) + { + if (sb == null) + throw new ArgumentNullException("sb"); + + if (term == null) + throw new ArgumentNullException("term"); + + sb.Length = 0; + char ch = m_lastchar; + if (nmtoken && ch != '_' && !char.IsLetter(ch)) + { + throw new SgmlParseException(string.Format(CultureInfo.CurrentUICulture, "Invalid name start character '{0}'", ch)); + } + + while (ch != Entity.EOF && term.IndexOf(ch) < 0) + { + if (!nmtoken || ch == '_' || ch == '.' || ch == '-' || ch == ':' || char.IsLetterOrDigit(ch)) { + sb.Append(ch); + } + else { + throw new SgmlParseException( + string.Format(CultureInfo.CurrentUICulture, "Invalid name character '{0}'", ch)); + } + ch = ReadChar(); + } + + return sb.ToString(); + } + + /// + /// Read a literal from the input stream. + /// + /// The to use to build the literal. + /// The delimiter for the literal. + /// The literal scanned from the input stream. + public string ScanLiteral(StringBuilder sb, char quote) + { + if (sb == null) + throw new ArgumentNullException("sb"); + + sb.Length = 0; + char ch = ReadChar(); + while (ch != Entity.EOF && ch != quote) + { + if (ch == '&') + { + ch = ReadChar(); + if (ch == '#') + { + string charent = ExpandCharEntity(); + sb.Append(charent); + ch = this.m_lastchar; + } + else + { + sb.Append('&'); + sb.Append(ch); + ch = ReadChar(); + } + } + else + { + sb.Append(ch); + ch = ReadChar(); + } + } + + ReadChar(); // consume end quote. + return sb.ToString(); + } + + /// + /// Reads input until the end of the input stream or until a string of terminator characters is found. + /// + /// The to use to build the string. + /// The type of the element being read (only used in reporting errors). + /// The string of terminator characters to look for. + /// The string read from the input stream. + public string ScanToEnd(StringBuilder sb, string type, string terminators) + { + if (terminators == null) + throw new ArgumentNullException("terminators"); + + if (sb != null) + sb.Length = 0; + + int start = m_line; + // This method scans over a chunk of text looking for the + // termination sequence specified by the 'terminators' parameter. + char ch = ReadChar(); + int state = 0; + char next = terminators[state]; + while (ch != Entity.EOF) + { + if (ch == next) + { + state++; + if (state >= terminators.Length) + { + // found it! + break; + } + next = terminators[state]; + } + else if (state > 0) + { + // char didn't match, so go back and see how much does still match. + int i = state - 1; + int newstate = 0; + while (i >= 0 && newstate == 0) + { + if (terminators[i] == ch) + { + // character is part of the terminators pattern, ok, so see if we can + // match all the way back to the beginning of the pattern. + int j = 1; + while (i - j >= 0) + { + if (terminators[i - j] != terminators[state - j]) + break; + + j++; + } + + if (j > i) + { + newstate = i + 1; + } + } + else + { + i--; + } + } + + if (sb != null) + { + i = (i < 0) ? 1 : 0; + for (int k = 0; k <= state - newstate - i; k++) + { + sb.Append(terminators[k]); + } + + if (i > 0) // see if we've matched this char or not + sb.Append(ch); // if not then append it to buffer. + } + + state = newstate; + next = terminators[newstate]; + } + else + { + if (sb != null) + sb.Append(ch); + } + + ch = ReadChar(); + } + + if (ch == 0) + Error(type + " starting on line {0} was never closed", start); + + ReadChar(); // consume last char in termination sequence. + if (sb != null) + return sb.ToString(); + else + return string.Empty; + } + + /// + /// Expands a character entity to be read from the input stream. + /// + /// The string for the character entity. + public string ExpandCharEntity() + { + string value; + int v = ReadNumericEntityCode(out value); + if(v == -1) + { + return value; + } + + // HACK ALERT: IE and Netscape map the unicode characters + if (this.m_isHtml && v >= 0x80 & v <= 0x9F) + { + // This range of control characters is mapped to Windows-1252! + int i = v - 0x80; + int unicode = CtrlMap[i]; + return Convert.ToChar(unicode).ToString(); + } + + if (0xD800 <= v && v <= 0xDBFF) + { + // high surrogate + if (m_lastchar == '&') + { + char ch = ReadChar(); + if (ch == '#') + { + string value2; + int v2 = ReadNumericEntityCode(out value2); + if(v2 == -1) + { + return value + ";" + value2; + } + if (0xDC00 <= v2 && v2 <= 0xDFFF) + { + // low surrogate + v = char.ConvertToUtf32((char)v, (char)v2); + } + } + else + { + Error("Premature {0} parsing surrogate pair", ch); + } + } + else + { + Error("Premature {0} parsing surrogate pair", m_lastchar); + } + } + + // NOTE (steveb): we need to use ConvertFromUtf32 to allow for extended numeric encodings + return char.ConvertFromUtf32(v); + } + + private int ReadNumericEntityCode(out string value) + { + int v = 0; + char ch = ReadChar(); + value = "&#"; + if (ch == 'x') + { + bool sawHexDigit = false; + value += "x"; + ch = ReadChar(); + for (; ch != Entity.EOF && ch != ';'; ch = ReadChar()) + { + int p = 0; + if (ch >= '0' && ch <= '9') + { + p = (int)(ch - '0'); + sawHexDigit = true; + } + else if (ch >= 'a' && ch <= 'f') + { + p = (int)(ch - 'a') + 10; + sawHexDigit = true; + } + else if (ch >= 'A' && ch <= 'F') + { + p = (int)(ch - 'A') + 10; + sawHexDigit = true; + } + else + { + break; //we must be done! + //Error("Hex digit out of range '{0}'", (int)ch); + } + value += ch; + v = (v*16) + p; + } + if (!sawHexDigit) + { + return -1; + } + } + else + { + bool sawDigit = false; + for (; ch != Entity.EOF && ch != ';'; ch = ReadChar()) + { + if (ch >= '0' && ch <= '9') + { + v = (v*10) + (int)(ch - '0'); + sawDigit = true; + } + else + { + break; // we must be done! + //Error("Decimal digit out of range '{0}'", (int)ch); + } + value += ch; + } + if (!sawDigit) + { + return -1; + } + } + if (ch == 0) + { + Error("Premature {0} parsing entity reference", ch); + } + else if (ch == ';') + { + ReadChar(); + } + return v; + } + + static int[] CtrlMap = new int[] { + // This is the windows-1252 mapping of the code points 0x80 through 0x9f. + 8364, 129, 8218, 402, 8222, 8230, 8224, 8225, 710, 8240, 352, 8249, 338, 141, + 381, 143, 144, 8216, 8217, 8220, 8221, 8226, 8211, 8212, 732, 8482, 353, 8250, + 339, 157, 382, 376 + }; + + /// + /// Raise a processing error. + /// + /// The error message to use in the exception. + /// Always thrown. + public void Error(string msg) + { + throw new SgmlParseException(msg, this); + } + + /// + /// Raise a processing error. + /// + /// The error message to use in the exception. + /// The unexpected character causing the error. + /// Always thrown. + public void Error(string msg, char ch) + { + string str = (ch == Entity.EOF) ? "EOF" : char.ToString(ch); + throw new SgmlParseException(string.Format(CultureInfo.CurrentUICulture, msg, str), this); + } + + /// + /// Raise a processing error. + /// + /// The error message to use in the exception. + /// The value causing the error. + /// Always thrown. + public void Error(string msg, int x) + { + throw new SgmlParseException(string.Format(CultureInfo.CurrentUICulture, msg, x), this); + } + + /// + /// Raise a processing error. + /// + /// The error message to use in the exception. + /// The argument for the error. + /// Always thrown. + public void Error(string msg, string arg) + { + throw new SgmlParseException(string.Format(CultureInfo.CurrentUICulture, msg, arg), this); + } + + /// + /// Returns a string giving information on how the entity is referenced and declared, walking up the parents until the top level parent entity is found. + /// + /// Contextual information for the entity. + public string Context() + { + Entity p = this; + StringBuilder sb = new StringBuilder(); + while (p != null) + { + string msg; + if (p.m_isInternal) + { + msg = string.Format(CultureInfo.InvariantCulture, "\nReferenced on line {0}, position {1} of internal entity '{2}'", p.m_line, p.LinePosition, p.m_name); + } + else { + msg = string.Format(CultureInfo.InvariantCulture, "\nReferenced on line {0}, position {1} of '{2}' entity at [{3}]", p.m_line, p.LinePosition, p.m_name, p.ResolvedUri.AbsolutePath); + } + sb.Append(msg); + p = p.Parent; + } + + return sb.ToString(); + } + + /// + /// Checks whether a token denotes a literal entity or not. + /// + /// The token to check. + /// true if the token is "CDATA", "SDATA" or "PI", otherwise false. + public static bool IsLiteralType(string token) + { + return string.Equals(token, "CDATA", StringComparison.OrdinalIgnoreCase) || + string.Equals(token, "SDATA", StringComparison.OrdinalIgnoreCase) || + string.Equals(token, "PI", StringComparison.OrdinalIgnoreCase); + } + + /// + /// Sets the entity to be a literal of the type specified. + /// + /// One of "CDATA", "SDATA" or "PI". + public void SetLiteralType(string token) + { + switch (token) + { + case "CDATA": + this.m_literalType = LiteralType.CDATA; + break; + case "SDATA": + this.m_literalType = LiteralType.SDATA; + break; + case "PI": + this.m_literalType = LiteralType.PI; + break; + } + } + + #region IDisposable Members + + /// + /// The finalizer for the Entity class. + /// + ~Entity() + { + Dispose(false); + } + + /// + /// Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + /// + public void Dispose() + { + Dispose(true); + GC.SuppressFinalize(this); + } + + /// + /// Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + /// + /// true if this method has been called by user code, false if it has been called through a finalizer. + protected virtual void Dispose(bool isDisposing) + { + if (isDisposing) + { + if (m_stm != null) + { + m_stm.Dispose(); + m_stm = null; + } + } + } + + #endregion + } + + // This class decodes an HTML/XML stream correctly. + internal class HtmlStream : TextReader + { + private Stream stm; + private byte[] rawBuffer; + private int rawPos; + private int rawUsed; + private Encoding m_encoding; + private Decoder m_decoder; + private char[] m_buffer; + private int used; + private int pos; + private const int BUFSIZE = 16384; + private const int EOF = -1; + + public HtmlStream(Stream stm, Encoding defaultEncoding) + { + if (defaultEncoding == null) defaultEncoding = Encoding.UTF8; // default is UTF8 + if (!stm.CanSeek){ + // Need to be able to seek to sniff correctly. + stm = CopyToMemoryStream(stm); + } + this.stm = stm; + rawBuffer = new Byte[BUFSIZE]; + rawUsed = stm.Read(rawBuffer, 0, 4); // maximum byte order mark + this.m_buffer = new char[BUFSIZE]; + + // Check byte order marks + this.m_decoder = AutoDetectEncoding(rawBuffer, ref rawPos, rawUsed); + int bom = rawPos; + if (this.m_decoder == null) + { + this.m_decoder = defaultEncoding.GetDecoder(); + rawUsed += stm.Read(rawBuffer, 4, BUFSIZE-4); + DecodeBlock(); + // Now sniff to see if there is an XML declaration or HTML tag. + Decoder sd = SniffEncoding(); + if (sd != null) { + this.m_decoder = sd; + } + } + + // Reset to get ready for Read() + this.stm.Seek(0, SeekOrigin.Begin); + this.pos = this.used = 0; + // skip bom + if (bom>0){ + stm.Read(this.rawBuffer, 0, bom); + } + this.rawPos = this.rawUsed = 0; + + } + + public Encoding Encoding + { + get + { + return this.m_encoding; + } + } + + private static Stream CopyToMemoryStream(Stream s) + { + int size = 100000; // large heap is more efficient + byte[] copyBuff = new byte[size]; + int len; + MemoryStream r = new MemoryStream(); + while ((len = s.Read(copyBuff, 0, size)) > 0) + r.Write(copyBuff, 0, len); + + r.Seek(0, SeekOrigin.Begin); + s.Close(); + return r; + } + + internal void DecodeBlock() { + // shift current chars to beginning. + if (pos > 0) { + if (pos < used) { + System.Array.Copy(m_buffer, pos, m_buffer, 0, used - pos); + } + used -= pos; + pos = 0; + } + int len = m_decoder.GetCharCount(rawBuffer, rawPos, rawUsed - rawPos); + int available = m_buffer.Length - used; + if (available < len) { + char[] newbuf = new char[m_buffer.Length + len]; + System.Array.Copy(m_buffer, pos, newbuf, 0, used - pos); + m_buffer = newbuf; + } + used = pos + m_decoder.GetChars(rawBuffer, rawPos, rawUsed - rawPos, m_buffer, pos); + rawPos = rawUsed; // consumed the whole buffer! + } + internal static Decoder AutoDetectEncoding(byte[] buffer, ref int index, int length) { + if (4 <= (length - index)) { + uint w = (uint)buffer[index + 0] << 24 | (uint)buffer[index + 1] << 16 | (uint)buffer[index + 2] << 8 | (uint)buffer[index + 3]; + // see if it's a 4-byte encoding + switch (w) { + case 0xfefffeff: + index += 4; + return new Ucs4DecoderBigEngian(); + + case 0xfffefffe: + index += 4; + return new Ucs4DecoderLittleEndian(); + + case 0x3c000000: + goto case 0xfefffeff; + + case 0x0000003c: + goto case 0xfffefffe; + } + w >>= 8; + if (w == 0xefbbbf) { + index += 3; + return Encoding.UTF8.GetDecoder(); + } + w >>= 8; + switch (w) { + case 0xfeff: + index += 2; + return UnicodeEncoding.BigEndianUnicode.GetDecoder(); + + case 0xfffe: + index += 2; + return new UnicodeEncoding(false, false).GetDecoder(); + + case 0x3c00: + goto case 0xfeff; + + case 0x003c: + goto case 0xfffe; + } + } + return null; + } + private int ReadChar() { + // Read only up to end of current buffer then stop. + if (pos < used) return m_buffer[pos++]; + return EOF; + } + private int PeekChar() { + int ch = ReadChar(); + if (ch != EOF) { + pos--; + } + return ch; + } + private bool SniffPattern(string pattern) { + int ch = PeekChar(); + if (ch != pattern[0]) return false; + for (int i = 0, n = pattern.Length; ch != EOF && i < n; i++) { + ch = ReadChar(); + char m = pattern[i]; + if (ch != m) { + return false; + } + } + return true; + } + private void SniffWhitespace() { + char ch = (char)PeekChar(); + while (ch == ' ' || ch == '\t' || ch == '\r' || ch == '\n') { + int i = pos; + ch = (char)ReadChar(); + if (ch != ' ' && ch != '\t' && ch != '\r' && ch != '\n') + pos = i; + } + } + + private string SniffLiteral() { + int quoteChar = PeekChar(); + if (quoteChar == '\'' || quoteChar == '"') { + ReadChar();// consume quote char + int i = this.pos; + int ch = ReadChar(); + while (ch != EOF && ch != quoteChar) { + ch = ReadChar(); + } + return (pos>i) ? new string(m_buffer, i, pos - i - 1) : ""; + } + return null; + } + private string SniffAttribute(string name) { + SniffWhitespace(); + string id = SniffName(); + if (string.Equals(name, id, StringComparison.OrdinalIgnoreCase)) { + SniffWhitespace(); + if (SniffPattern("=")) { + SniffWhitespace(); + return SniffLiteral(); + } + } + return null; + } + private string SniffAttribute(out string name) { + SniffWhitespace(); + name = SniffName(); + if (name != null){ + SniffWhitespace(); + if (SniffPattern("=")) { + SniffWhitespace(); + return SniffLiteral(); + } + } + return null; + } + private void SniffTerminator(string term) { + int ch = ReadChar(); + int i = 0; + int n = term.Length; + while (i < n && ch != EOF) { + if (term[i] == ch) { + i++; + if (i == n) break; + } else { + i = 0; // reset. + } + ch = ReadChar(); + } + } + + internal Decoder SniffEncoding() + { + Decoder decoder = null; + if (SniffPattern(""); + } + } + if (decoder == null) { + return SniffMeta(); + } + return null; + } + + internal Decoder SniffMeta() + { + int i = ReadChar(); + while (i != EOF) + { + char ch = (char)i; + if (ch == '<') + { + string name = SniffName(); + if (name != null && StringUtilities.EqualsIgnoreCase(name, "meta")) + { + string httpequiv = null; + string content = null; + while (true) + { + string value = SniffAttribute(out name); + if (name == null) + break; + + if (StringUtilities.EqualsIgnoreCase(name, "http-equiv")) + { + httpequiv = value; + } + else if (StringUtilities.EqualsIgnoreCase(name, "content")) + { + content = value; + } + } + + if (httpequiv != null && StringUtilities.EqualsIgnoreCase(httpequiv, "content-type") && content != null) + { + int j = content.IndexOf("charset"); + if (j >= 0) + { + //charset=utf-8 + j = content.IndexOf("=", j); + if (j >= 0) + { + j++; + int k = content.IndexOf(";", j); + if (k<0) k = content.Length; + string charset = content.Substring(j, k-j).Trim(); + try + { + Encoding e = Encoding.GetEncoding(charset); + this.m_encoding = e; + return e.GetDecoder(); + } catch (ArgumentException) {} + } + } + } + } + } + i = ReadChar(); + + } + return null; + } + + internal string SniffName() + { + int c = PeekChar(); + if (c == EOF) + return null; + char ch = (char)c; + int start = pos; + while (pos < used - 1 && (char.IsLetterOrDigit(ch) || ch == '-' || ch == '_' || ch == ':')) + ch = m_buffer[++pos]; + + if (start == pos) + return null; + + return new string(m_buffer, start, pos - start); + } + + [SuppressMessage("Microsoft.Performance", "CA1811", Justification = "Kept for potential future usage.")] + internal void SkipWhitespace() + { + char ch = (char)PeekChar(); + while (pos < used - 1 && (ch == ' ' || ch == '\r' || ch == '\n')) + ch = m_buffer[++pos]; + } + + [SuppressMessage("Microsoft.Performance", "CA1811", Justification = "Kept for potential future usage.")] + internal void SkipTo(char what) + { + char ch = (char)PeekChar(); + while (pos < used - 1 && (ch != what)) + ch = m_buffer[++pos]; + } + + [SuppressMessage("Microsoft.Performance", "CA1811", Justification = "Kept for potential future usage.")] + internal string ParseAttribute() + { + SkipTo('='); + if (pos < used) + { + pos++; + SkipWhitespace(); + if (pos < used) { + char quote = m_buffer[pos]; + pos++; + int start = pos; + SkipTo(quote); + if (pos < used) { + string result = new string(m_buffer, start, pos - start); + pos++; + return result; + } + } + } + return null; + } + public override int Peek() { + int result = Read(); + if (result != EOF) { + pos--; + } + return result; + } + public override int Read() + { + if (pos == used) + { + rawUsed = stm.Read(rawBuffer, 0, rawBuffer.Length); + rawPos = 0; + if (rawUsed == 0) return EOF; + DecodeBlock(); + } + if (pos < used) return m_buffer[pos++]; + return -1; + } + + public override int Read(char[] buffer, int start, int length) { + if (pos == used) { + rawUsed = stm.Read(rawBuffer, 0, rawBuffer.Length); + rawPos = 0; + if (rawUsed == 0) return -1; + DecodeBlock(); + } + if (pos < used) { + length = Math.Min(used - pos, length); + Array.Copy(this.m_buffer, pos, buffer, start, length); + pos += length; + return length; + } + return 0; + } + + public override int ReadBlock(char[] data, int index, int count) + { + return Read(data, index, count); + } + + // Read up to end of line, or full buffer, whichever comes first. + [SuppressMessage("Microsoft.Performance", "CA1811", Justification = "Kept for potential future usage.")] + public int ReadLine(char[] buffer, int start, int length) + { + int i = 0; + int ch = ReadChar(); + while (ch != EOF) { + buffer[i+start] = (char)ch; + i++; + if (i+start == length) + break; // buffer is full + + if (ch == '\r' ) { + if (PeekChar() == '\n') { + ch = ReadChar(); + buffer[i + start] = (char)ch; + i++; + } + break; + } else if (ch == '\n') { + break; + } + ch = ReadChar(); + } + return i; + } + + public override string ReadToEnd() { + char[] buffer = new char[100000]; // large block heap is more efficient + int len = 0; + StringBuilder sb = new StringBuilder(); + while ((len = Read(buffer, 0, buffer.Length)) > 0) { + sb.Append(buffer, 0, len); + } + return sb.ToString(); + } + public override void Close() { + stm.Close(); + } + } + + internal abstract class Ucs4Decoder : Decoder { + internal byte[] temp = new byte[4]; + internal int tempBytes = 0; + public override int GetCharCount(byte[] bytes, int index, int count) { + return (count + tempBytes) / 4; + } + internal abstract int GetFullChars(byte[] bytes, int byteIndex, int byteCount, char[] chars, int charIndex); + public override int GetChars(byte[] bytes, int byteIndex, int byteCount, char[] chars, int charIndex) { + int i = tempBytes; + + if (tempBytes > 0) { + for (; i < 4; i++) { + temp[i] = bytes[byteIndex]; + byteIndex++; + byteCount--; + } + i = 1; + GetFullChars(temp, 0, 4, chars, charIndex); + charIndex++; + } else + i = 0; + i = GetFullChars(bytes, byteIndex, byteCount, chars, charIndex) + i; + + int j = (tempBytes + byteCount) % 4; + byteCount += byteIndex; + byteIndex = byteCount - j; + tempBytes = 0; + + if (byteIndex >= 0) + for (; byteIndex < byteCount; byteIndex++) { + temp[tempBytes] = bytes[byteIndex]; + tempBytes++; + } + return i; + } + internal static char UnicodeToUTF16(UInt32 code) { + byte lowerByte, higherByte; + lowerByte = (byte)(0xD7C0 + (code >> 10)); + higherByte = (byte)(0xDC00 | code & 0x3ff); + return ((char)((higherByte << 8) | lowerByte)); + } + } + + internal class Ucs4DecoderBigEngian : Ucs4Decoder { + internal override int GetFullChars(byte[] bytes, int byteIndex, int byteCount, char[] chars, int charIndex) { + UInt32 code; + int i, j; + byteCount += byteIndex; + for (i = byteIndex, j = charIndex; i + 3 < byteCount; ) { + code = (UInt32)(((bytes[i + 3]) << 24) | (bytes[i + 2] << 16) | (bytes[i + 1] << 8) | (bytes[i])); + if (code > 0x10FFFF) { + throw new SgmlParseException(string.Format(CultureInfo.CurrentUICulture, "Invalid character 0x{0:x} in encoding", code)); + } else if (code > 0xFFFF) { + chars[j] = UnicodeToUTF16(code); + j++; + } else { + if (code >= 0xD800 && code <= 0xDFFF) { + throw new SgmlParseException(string.Format(CultureInfo.CurrentUICulture, "Invalid character 0x{0:x} in encoding", code)); + } else { + chars[j] = (char)code; + } + } + j++; + i += 4; + } + return j - charIndex; + } + } + + internal class Ucs4DecoderLittleEndian : Ucs4Decoder { + internal override int GetFullChars(byte[] bytes, int byteIndex, int byteCount, char[] chars, int charIndex) { + UInt32 code; + int i, j; + byteCount += byteIndex; + for (i = byteIndex, j = charIndex; i + 3 < byteCount; ) { + code = (UInt32)(((bytes[i]) << 24) | (bytes[i + 1] << 16) | (bytes[i + 2] << 8) | (bytes[i + 3])); + if (code > 0x10FFFF) { + throw new SgmlParseException(string.Format(CultureInfo.CurrentUICulture, "Invalid character 0x{0:x} in encoding", code)); + } else if (code > 0xFFFF) { + chars[j] = UnicodeToUTF16(code); + j++; + } else { + if (code >= 0xD800 && code <= 0xDFFF) { + throw new SgmlParseException(string.Format(CultureInfo.CurrentUICulture, "Invalid character 0x{0:x} in encoding", code)); + } else { + chars[j] = (char)code; + } + } + j++; + i += 4; + } + return j - charIndex; + } + } + + /// + /// An element declaration in a DTD. + /// + public class ElementDecl + { + private string m_name; + private bool m_startTagOptional; + private bool m_endTagOptional; + private ContentModel m_contentModel; + private string[] m_inclusions; + private string[] m_exclusions; + private Dictionary m_attList; + + /// + /// Initialises a new element declaration instance. + /// + /// The name of the element. + /// Whether the start tag is optional. + /// Whether the end tag is optional. + /// The of the element. + /// + /// + public ElementDecl(string name, bool sto, bool eto, ContentModel cm, string[] inclusions, string[] exclusions) + { + m_name = name; + m_startTagOptional = sto; + m_endTagOptional = eto; + m_contentModel = cm; + m_inclusions = inclusions; + m_exclusions = exclusions; + } + + /// + /// The element name. + /// + public string Name + { + get + { + return m_name; + } + } + + /// + /// The of the element declaration. + /// + public ContentModel ContentModel + { + get + { + return m_contentModel; + } + } + + /// + /// Whether the end tag of the element is optional. + /// + /// true if the end tag of the element is optional, otherwise false. + public bool EndTagOptional + { + get + { + return m_endTagOptional; + } + } + + /// + /// Whether the start tag of the element is optional. + /// + /// true if the start tag of the element is optional, otherwise false. + public bool StartTagOptional + { + get + { + return m_startTagOptional; + } + } + + /// + /// Finds the attribute definition with the specified name. + /// + /// The name of the to find. + /// The with the specified name. + /// If the attribute list has not yet been initialised. + public AttDef FindAttribute(string name) + { + if (m_attList == null) + throw new InvalidOperationException("The attribute list for the element declaration has not been initialised."); + + AttDef a; + m_attList.TryGetValue(name.ToUpperInvariant(), out a); + return a; + } + + /// + /// Adds attribute definitions to the element declaration. + /// + /// The list of attribute definitions to add. + public void AddAttDefs(Dictionary list) + { + if (list == null) + throw new ArgumentNullException("list"); + + if (m_attList == null) + { + m_attList = list; + } + else + { + foreach (AttDef a in list.Values) + { + if (!m_attList.ContainsKey(a.Name)) + { + m_attList.Add(a.Name, a); + } + } + } + } + + /// + /// Tests whether this element can contain another specified element. + /// + /// The name of the element to check for. + /// The DTD to use to do the check. + /// True if the specified element can be contained by this element. + public bool CanContain(string name, SgmlDtd dtd) + { + // return true if this element is allowed to contain the given element. + if (m_exclusions != null) + { + foreach (string s in m_exclusions) + { + if (string.Equals(s, name, StringComparison.OrdinalIgnoreCase)) + return false; + } + } + + if (m_inclusions != null) + { + foreach (string s in m_inclusions) + { + if (string.Equals(s, name, StringComparison.OrdinalIgnoreCase)) + return true; + } + } + return m_contentModel.CanContain(name, dtd); + } + } + + /// + /// Where nested subelements cannot occur within an element, its contents can be declared to consist of one of the types of declared content contained in this enumeration. + /// + public enum DeclaredContent + { + /// + /// Not defined. + /// + Default, + + /// + /// Character data (CDATA), which contains only valid SGML characters. + /// + [SuppressMessage("Microsoft.Naming", "CA1705", Justification = "This capitalisation is appropriate since the value it represents has all upper-case capitalisation.")] + CDATA, + + /// + /// Replaceable character data (RCDATA), which can contain text, character references and/or general entity references that resolve to character data. + /// + [SuppressMessage("Microsoft.Naming", "CA1705", Justification = "This capitalisation is appropriate since the value it represents has all upper-case capitalisation.")] + RCDATA, + + /// + /// Empty element (EMPTY), i.e. having no contents, or contents that can be generated by the program. + /// + [SuppressMessage("Microsoft.Naming", "CA1705", Justification = "This capitalisation is appropriate since the value it represents has all upper-case capitalisation.")] + EMPTY + } + + /// + /// Defines the content model for an element. + /// + public class ContentModel + { + private DeclaredContent m_declaredContent; + private int m_currentDepth; + private Group m_model; + + /// + /// Initialises a new instance of the class. + /// + public ContentModel() + { + m_model = new Group(null); + } + + /// + /// The number of groups on the stack. + /// + public int CurrentDepth + { + get + { + return m_currentDepth; + } + } + + /// + /// The allowed child content, specifying if nested children are not allowed and if so, what content is allowed. + /// + public DeclaredContent DeclaredContent + { + get + { + return m_declaredContent; + } + } + + /// + /// Begins processing of a nested model group. + /// + public void PushGroup() + { + m_model = new Group(m_model); + m_currentDepth++; + } + + /// + /// Finishes processing of a nested model group. + /// + /// The current depth of the group nesting, or -1 if there are no more groups to pop. + public int PopGroup() + { + if (m_currentDepth == 0) + return -1; + + m_currentDepth--; + m_model.Parent.AddGroup(m_model); + m_model = m_model.Parent; + return m_currentDepth; + } + + /// + /// Adds a new symbol to the current group's members. + /// + /// The symbol to add. + public void AddSymbol(string sym) + { + m_model.AddSymbol(sym); + } + + /// + /// Adds a connector onto the member list for the current group. + /// + /// The connector character to add. + /// + /// If the content is not mixed and has no members yet, or if the group type has been set and the + /// connector does not match the group type. + /// + public void AddConnector(char c) + { + m_model.AddConnector(c); + } + + /// + /// Adds an occurrence character for the current model group, setting it's value. + /// + /// The occurrence character. + public void AddOccurrence(char c) + { + m_model.AddOccurrence(c); + } + + /// + /// Sets the contained content for the content model. + /// + /// The text specified the permissible declared child content. + public void SetDeclaredContent(string dc) + { + // TODO: Validate that this can never combine with nexted groups? + switch (dc) + { + case "EMPTY": + this.m_declaredContent = DeclaredContent.EMPTY; + break; + case "RCDATA": + this.m_declaredContent = DeclaredContent.RCDATA; + break; + case "CDATA": + this.m_declaredContent = DeclaredContent.CDATA; + break; + default: + throw new SgmlParseException(string.Format(CultureInfo.CurrentUICulture, "Declared content type '{0}' is not supported", dc)); + } + } + + /// + /// Checks whether an element using this group can contain a specified element. + /// + /// The name of the element to look for. + /// The DTD to use during the checking. + /// true if an element using this group can contain the element, otherwise false. + public bool CanContain(string name, SgmlDtd dtd) + { + if (m_declaredContent != DeclaredContent.Default) + return false; // empty or text only node. + + return m_model.CanContain(name, dtd); + } + } + + /// + /// The type of the content model group, defining the order in which child elements can occur. + /// + public enum GroupType + { + /// + /// No model group. + /// + None, + + /// + /// All elements must occur, in any order. + /// + And, + + /// + /// One (and only one) must occur. + /// + Or, + + /// + /// All element must occur, in the specified order. + /// + Sequence + }; + + /// + /// Qualifies the occurrence of a child element within a content model group. + /// + public enum Occurrence + { + /// + /// The element is required and must occur only once. + /// + Required, + + /// + /// The element is optional and must occur once at most. + /// + Optional, + + /// + /// The element is optional and can be repeated. + /// + ZeroOrMore, + + /// + /// The element must occur at least once or more times. + /// + OneOrMore + } + + /// + /// Defines a group of elements nested within another element. + /// + public class Group + { + private Group m_parent; + private ArrayList Members; + private GroupType m_groupType; + private Occurrence m_occurrence; + private bool Mixed; + + /// + /// The of this group. + /// + public Occurrence Occurrence + { + get + { + return m_occurrence; + } + } + + /// + /// Checks whether the group contains only text. + /// + /// true if the group is of mixed content and has no members, otherwise false. + public bool TextOnly + { + get + { + return this.Mixed && Members.Count == 0; + } + } + + /// + /// The parent group of this group. + /// + public Group Parent + { + get + { + return m_parent; + } + } + + /// + /// Initialises a new Content Model Group. + /// + /// The parent model group. + public Group(Group parent) + { + m_parent = parent; + Members = new ArrayList(); + m_groupType = GroupType.None; + m_occurrence = Occurrence.Required; + } + + /// + /// Adds a new child model group to the end of the group's members. + /// + /// The model group to add. + public void AddGroup(Group g) + { + Members.Add(g); + } + + /// + /// Adds a new symbol to the group's members. + /// + /// The symbol to add. + public void AddSymbol(string sym) + { + if (string.Equals(sym, "#PCDATA", StringComparison.OrdinalIgnoreCase)) + { + Mixed = true; + } + else + { + Members.Add(sym); + } + } + + /// + /// Adds a connector onto the member list. + /// + /// The connector character to add. + /// + /// If the content is not mixed and has no members yet, or if the group type has been set and the + /// connector does not match the group type. + /// + public void AddConnector(char c) + { + if (!Mixed && Members.Count == 0) + { + throw new SgmlParseException(string.Format(CultureInfo.CurrentUICulture, "Missing token before connector '{0}'.", c)); + } + + GroupType gt = GroupType.None; + switch (c) + { + case ',': + gt = GroupType.Sequence; + break; + case '|': + gt = GroupType.Or; + break; + case '&': + gt = GroupType.And; + break; + } + + if (this.m_groupType != GroupType.None && this.m_groupType != gt) + { + throw new SgmlParseException(string.Format(CultureInfo.CurrentUICulture, "Connector '{0}' is inconsistent with {1} group.", c, m_groupType.ToString())); + } + + m_groupType = gt; + } + + /// + /// Adds an occurrence character for this group, setting it's value. + /// + /// The occurrence character. + public void AddOccurrence(char c) + { + Occurrence o = Occurrence.Required; + switch (c) + { + case '?': + o = Occurrence.Optional; + break; + case '+': + o = Occurrence.OneOrMore; + break; + case '*': + o = Occurrence.ZeroOrMore; + break; + } + + m_occurrence = o; + } + + /// + /// Checks whether an element using this group can contain a specified element. + /// + /// The name of the element to look for. + /// The DTD to use during the checking. + /// true if an element using this group can contain the element, otherwise false. + /// + /// Rough approximation - this is really assuming an "Or" group + /// + public bool CanContain(string name, SgmlDtd dtd) + { + if (dtd == null) + throw new ArgumentNullException("dtd"); + + // Do a simple search of members. + foreach (object obj in Members) + { + if (obj is string) + { + if( string.Equals((string)obj, name, StringComparison.OrdinalIgnoreCase)) + return true; + } + } + // didn't find it, so do a more expensive search over child elements + // that have optional start tags and over child groups. + foreach (object obj in Members) + { + string s = obj as string; + if (s != null) + { + ElementDecl e = dtd.FindElement(s); + if (e != null) + { + if (e.StartTagOptional) + { + // tricky case, the start tag is optional so element may be + // allowed inside this guy! + if (e.CanContain(name, dtd)) + return true; + } + } + } + else + { + Group m = (Group)obj; + if (m.CanContain(name, dtd)) + return true; + } + } + + return false; + } + } + + /// + /// Defines the different possible attribute types. + /// + public enum AttributeType + { + /// + /// Attribute type not specified. + /// + Default, + + /// + /// The attribute contains text (with no markup). + /// + [SuppressMessage("Microsoft.Naming", "CA1705", Justification = "This capitalisation is appropriate since the value it represents has all upper-case capitalisation.")] + CDATA, + + /// + /// The attribute contains an entity declared in a DTD. + /// + [SuppressMessage("Microsoft.Naming", "CA1705", Justification = "This capitalisation is appropriate since the value it represents has all upper-case capitalisation.")] + ENTITY, + + /// + /// The attribute contains a number of entities declared in a DTD. + /// + [SuppressMessage("Microsoft.Naming", "CA1705", Justification = "This capitalisation is appropriate since the value it represents has all upper-case capitalisation.")] + ENTITIES, + + /// + /// The attribute is an id attribute uniquely identifie the element it appears on. + /// + [SuppressMessage("Microsoft.Naming", "CA1705", Justification = "This capitalisation is appropriate since the value it represents has all upper-case capitalisation.")] + [SuppressMessage("Microsoft.Naming", "CA1706", Justification = "This capitalisation is appropriate since the value it represents has all upper-case capitalisation.")] + ID, + + /// + /// The attribute value can be any declared subdocument or data entity name. + /// + [SuppressMessage("Microsoft.Naming", "CA1705", Justification = "This capitalisation is appropriate since the value it represents has all upper-case capitalisation.")] + IDREF, + + /// + /// The attribute value is a list of (space separated) declared subdocument or data entity names. + /// + [SuppressMessage("Microsoft.Naming", "CA1705", Justification = "This capitalisation is appropriate since the value it represents has all upper-case capitalisation.")] + IDREFS, + + /// + /// The attribute value is a SGML Name. + /// + [SuppressMessage("Microsoft.Naming", "CA1705", Justification = "This capitalisation is appropriate since the value it represents has all upper-case capitalisation.")] + NAME, + + /// + /// The attribute value is a list of (space separated) SGML Names. + /// + [SuppressMessage("Microsoft.Naming", "CA1705", Justification = "This capitalisation is appropriate since the value it represents has all upper-case capitalisation.")] + NAMES, + + /// + /// The attribute value is an XML name token (i.e. contains only name characters, but in this case with digits and other valid name characters accepted as the first character). + /// + [SuppressMessage("Microsoft.Naming", "CA1705", Justification = "This capitalisation is appropriate since the value it represents has all upper-case capitalisation.")] + NMTOKEN, + + /// + /// The attribute value is a list of (space separated) XML NMTokens. + /// + [SuppressMessage("Microsoft.Naming", "CA1705", Justification = "This capitalisation is appropriate since the value it represents has all upper-case capitalisation.")] + NMTOKENS, + + /// + /// The attribute value is a number. + /// + [SuppressMessage("Microsoft.Naming", "CA1705", Justification = "This capitalisation is appropriate since the value it represents has all upper-case capitalisation.")] + NUMBER, + + /// + /// The attribute value is a list of (space separated) numbers. + /// + [SuppressMessage("Microsoft.Naming", "CA1705", Justification = "This capitalisation is appropriate since the value it represents has all upper-case capitalisation.")] + NUMBERS, + + /// + /// The attribute value is a number token (i.e. a name that starts with a number). + /// + [SuppressMessage("Microsoft.Naming", "CA1705", Justification = "This capitalisation is appropriate since the value it represents has all upper-case capitalisation.")] + NUTOKEN, + + /// + /// The attribute value is a list of number tokens. + /// + [SuppressMessage("Microsoft.Naming", "CA1705", Justification = "This capitalisation is appropriate since the value it represents has all upper-case capitalisation.")] + NUTOKENS, + + /// + /// Attribute value is a member of the bracketed list of notation names that qualifies this reserved name. + /// + [SuppressMessage("Microsoft.Naming", "CA1705", Justification = "This capitalisation is appropriate since the value it represents has all upper-case capitalisation.")] + NOTATION, + + /// + /// The attribute value is one of a set of allowed names. + /// + [SuppressMessage("Microsoft.Naming", "CA1705", Justification = "This capitalisation is appropriate since the value it represents has all upper-case capitalisation.")] + ENUMERATION + } + + /// + /// Defines the different constraints on an attribute's presence on an element. + /// + public enum AttributePresence + { + /// + /// The attribute has a default value, and its presence is optional. + /// + Default, + + /// + /// The attribute has a fixed value, if present. + /// + Fixed, + + /// + /// The attribute must always be present on every element. + /// + Required, + + /// + /// The element is optional. + /// + Implied + } + + /// + /// An attribute definition in a DTD. + /// + public class AttDef + { + private string m_name; + private AttributeType m_type; + private string[] m_enumValues; + private string m_default; + private AttributePresence m_presence; + + /// + /// Initialises a new instance of the class. + /// + /// The name of the attribute. + public AttDef(string name) + { + m_name = name; + } + + /// + /// The name of the attribute declared by this attribute definition. + /// + public string Name + { + get + { + return m_name; + } + } + + /// + /// Gets of sets the default value of the attribute. + /// + public string Default + { + get + { + return m_default; + } + set + { + m_default = value; + } + } + + /// + /// The constraints on the attribute's presence on an element. + /// + public AttributePresence AttributePresence + { + get + { + return m_presence; + } + } + + /// + /// Gets or sets the possible enumerated values for the attribute. + /// + [SuppressMessage("Microsoft.Performance", "CA1819", Justification = "Changing this would break backwards compatibility with previous code using this library.")] + public string[] EnumValues + { + get + { + return m_enumValues; + } + } + + /// + /// Sets the attribute definition to have an enumerated value. + /// + /// The possible values in the enumeration. + /// The type to set the attribute to. + /// If the type parameter is not either or . + public void SetEnumeratedType(string[] enumValues, AttributeType type) + { + if (type != AttributeType.ENUMERATION && type != AttributeType.NOTATION) + throw new ArgumentException(string.Format(CultureInfo.CurrentUICulture, "AttributeType {0} is not valid for an attribute definition with an enumerated value.", type)); + + m_enumValues = enumValues; + m_type = type; + } + + /// + /// The of the attribute declaration. + /// + public AttributeType Type + { + get + { + return m_type; + } + } + + /// + /// Sets the type of the attribute definition. + /// + /// The string representation of the attribute type, corresponding to the values in the enumeration. + public void SetType(string type) + { + switch (type) + { + case "CDATA": + m_type = AttributeType.CDATA; + break; + case "ENTITY": + m_type = AttributeType.ENTITY; + break; + case "ENTITIES": + m_type = AttributeType.ENTITIES; + break; + case "ID": + m_type = AttributeType.ID; + break; + case "IDREF": + m_type = AttributeType.IDREF; + break; + case "IDREFS": + m_type = AttributeType.IDREFS; + break; + case "NAME": + m_type = AttributeType.NAME; + break; + case "NAMES": + m_type = AttributeType.NAMES; + break; + case "NMTOKEN": + m_type = AttributeType.NMTOKEN; + break; + case "NMTOKENS": + m_type = AttributeType.NMTOKENS; + break; + case "NUMBER": + m_type = AttributeType.NUMBER; + break; + case "NUMBERS": + m_type = AttributeType.NUMBERS; + break; + case "NUTOKEN": + m_type = AttributeType.NUTOKEN; + break; + case "NUTOKENS": + m_type = AttributeType.NUTOKENS; + break; + default: + throw new SgmlParseException(string.Format(CultureInfo.CurrentUICulture, "Attribute type '{0}' is not supported", type)); + } + } + + /// + /// Sets the attribute presence declaration. + /// + /// The string representation of the attribute presence, corresponding to one of the values in the enumeration. + /// true if the attribute presence implies the element has a default value. + public bool SetPresence(string token) + { + bool hasDefault = true; + if (string.Equals(token, "FIXED", StringComparison.OrdinalIgnoreCase)) + { + m_presence = AttributePresence.Fixed; + } + else if (string.Equals(token, "REQUIRED", StringComparison.OrdinalIgnoreCase)) + { + m_presence = AttributePresence.Required; + hasDefault = false; + } + else if (string.Equals(token, "IMPLIED", StringComparison.OrdinalIgnoreCase)) + { + m_presence = AttributePresence.Implied; + hasDefault = false; + } + else + { + throw new SgmlParseException(string.Format(CultureInfo.CurrentUICulture, "Attribute value '{0}' not supported", token)); + } + + return hasDefault; + } + } + +/* JB: Replaced this with a Dictionary + public class AttList : IEnumerable + { + Hashtable AttDefs; + + public AttList() + { + AttDefs = new Hashtable(); + } + + public void Add(AttDef a) + { + AttDefs.Add(a.Name, a); + } + + public AttDef this[string name] + { + get + { + return (AttDef)AttDefs[name]; + } + } + + public IEnumerator GetEnumerator() + { + return AttDefs.Values.GetEnumerator(); + } + } +*/ + /// + /// Provides DTD parsing and support for the SgmlParser framework. + /// + public class SgmlDtd + { + private string m_name; + + private Dictionary m_elements; + private Dictionary m_pentities; + private Dictionary m_entities; + private StringBuilder m_sb; + private Entity m_current; + + /// + /// Initialises a new instance of the class. + /// + /// The name of the DTD. + /// The is NOT used. + public SgmlDtd(string name, XmlNameTable nt) + { + this.m_name = name; + this.m_elements = new Dictionary(); + this.m_pentities = new Dictionary(); + this.m_entities = new Dictionary(); + this.m_sb = new StringBuilder(); + } + + /// + /// The name of the DTD. + /// + public string Name + { + get + { + return m_name; + } + } + + /// + /// Gets the XmlNameTable associated with this implementation. + /// + /// The XmlNameTable enabling you to get the atomized version of a string within the node. + public XmlNameTable NameTable + { + get + { + return null; + } + } + + /// + /// Parses a DTD and creates a instance that encapsulates the DTD. + /// + /// The base URI of the DTD. + /// The name of the DTD. + /// + /// + /// + /// + /// The is NOT used. + /// A new instance that encapsulates the DTD. + public static SgmlDtd Parse(Uri baseUri, string name, string pubid, string url, string subset, string proxy, XmlNameTable nt) + { + SgmlDtd dtd = new SgmlDtd(name, nt); + if (!string.IsNullOrEmpty(url)) + { + dtd.PushEntity(baseUri, new Entity(dtd.Name, pubid, url, proxy)); + } + + if (!string.IsNullOrEmpty(subset)) + { + dtd.PushEntity(baseUri, new Entity(name, subset)); + } + + try + { + dtd.Parse(); + } + catch (ApplicationException e) + { + throw new SgmlParseException(e.Message + dtd.m_current.Context()); + } + + return dtd; + } + + /// + /// Parses a DTD and creates a instance that encapsulates the DTD. + /// + /// The base URI of the DTD. + /// The name of the DTD. + /// The reader to load the DTD from. + /// + /// The proxy server to use when loading resources. + /// The is NOT used. + /// A new instance that encapsulates the DTD. + [SuppressMessage("Microsoft.Reliability", "CA2000", Justification = "The entities created here are not temporary and should not be disposed here.")] + public static SgmlDtd Parse(Uri baseUri, string name, TextReader input, string subset, string proxy, XmlNameTable nt) + { + SgmlDtd dtd = new SgmlDtd(name, nt); + dtd.PushEntity(baseUri, new Entity(dtd.Name, baseUri, input, proxy)); + if (!string.IsNullOrEmpty(subset)) + { + dtd.PushEntity(baseUri, new Entity(name, subset)); + } + + try + { + dtd.Parse(); + } + catch (ApplicationException e) + { + throw new SgmlParseException(e.Message + dtd.m_current.Context()); + } + + return dtd; + } + + /// + /// Finds an entity in the DTD with the specified name. + /// + /// The name of the to find. + /// The specified Entity from the DTD. + public Entity FindEntity(string name) + { + Entity e; + this.m_entities.TryGetValue(name, out e); + return e; + } + + /// + /// Finds an element declaration in the DTD with the specified name. + /// + /// The name of the to find and return. + /// The matching the specified name. + public ElementDecl FindElement(string name) + { + ElementDecl el; + m_elements.TryGetValue(name.ToUpperInvariant(), out el); + return el; + } + + //-------------------------------- Parser ------------------------- + private void PushEntity(Uri baseUri, Entity e) + { + e.Open(this.m_current, baseUri); + this.m_current = e; + this.m_current.ReadChar(); + } + + private void PopEntity() + { + if (this.m_current != null) this.m_current.Close(); + if (this.m_current.Parent != null) + { + this.m_current = this.m_current.Parent; + } + else + { + this.m_current = null; + } + } + + private void Parse() + { + char ch = this.m_current.Lastchar; + while (true) + { + switch (ch) + { + case Entity.EOF: + PopEntity(); + if (this.m_current == null) + return; + ch = this.m_current.Lastchar; + break; + case ' ': + case '\n': + case '\r': + case '\t': + ch = this.m_current.ReadChar(); + break; + case '<': + ParseMarkup(); + ch = this.m_current.ReadChar(); + break; + case '%': + Entity e = ParseParameterEntity(SgmlDtd.WhiteSpace); + try + { + PushEntity(this.m_current.ResolvedUri, e); + } + catch (Exception ex) + { + // BUG: need an error log. + Console.WriteLine(ex.Message + this.m_current.Context()); + } + ch = this.m_current.Lastchar; + break; + default: + this.m_current.Error("Unexpected character '{0}'", ch); + break; + } + } + } + + void ParseMarkup() + { + char ch = this.m_current.ReadChar(); + if (ch != '!') + { + this.m_current.Error("Found '{0}', but expecing declaration starting with '"); + } + else if (ch == '[') + { + ParseMarkedSection(); + } + else + { + string token = this.m_current.ScanToken(this.m_sb, SgmlDtd.WhiteSpace, true); + switch (token) + { + case "ENTITY": + ParseEntity(); + break; + case "ELEMENT": + ParseElementDecl(); + break; + case "ATTLIST": + ParseAttList(); + break; + default: + this.m_current.Error("Invalid declaration ' + this.m_current.ReadChar(); // move to next char. + string name = ScanName("["); + if (string.Equals(name, "INCLUDE", StringComparison.OrdinalIgnoreCase)) + { + ParseIncludeSection(); + } + else if (string.Equals(name, "IGNORE", StringComparison.OrdinalIgnoreCase)) + { + ParseIgnoreSection(); + } + else + { + this.m_current.Error("Unsupported marked section type '{0}'", name); + } + } + + [SuppressMessage("Microsoft.Performance", "CA1822", Justification = "This is not yet implemented and will use 'this' in the future.")] + [SuppressMessage("Microsoft.Globalization", "CA1303", Justification = "The use of a literal here is only due to this not yet being implemented.")] + private void ParseIncludeSection() + { + throw new NotImplementedException("Include Section"); + } + + void ParseIgnoreSection() + { + char ch = this.m_current.SkipWhitespace(); + if (ch != '[') this.m_current.Error("Expecting '[' but found {0}", ch); + this.m_current.ScanToEnd(this.m_sb, "Conditional Section", "]]>"); + } + + string ScanName(string term) + { + // skip whitespace, scan name (which may be parameter entity reference + // which is then expanded to a name) + char ch = this.m_current.SkipWhitespace(); + if (ch == '%') + { + Entity e = ParseParameterEntity(term); + ch = this.m_current.Lastchar; + // bugbug - need to support external and nested parameter entities + if (!e.IsInternal) throw new NotSupportedException("External parameter entity resolution"); + return e.Literal.Trim(); + } + else + { + return this.m_current.ScanToken(this.m_sb, term, true); + } + } + + private Entity ParseParameterEntity(string term) + { + // almost the same as this.current.ScanToken, except we also terminate on ';' + this.m_current.ReadChar(); + string name = this.m_current.ScanToken(this.m_sb, ";"+term, false); + if (this.m_current.Lastchar == ';') + this.m_current.ReadChar(); + Entity e = GetParameterEntity(name); + return e; + } + + private Entity GetParameterEntity(string name) + { + Entity e = null; + m_pentities.TryGetValue(name, out e); + if (e == null) + this.m_current.Error("Reference to undefined parameter entity '{0}'", name); + + return e; + } + + /// + /// Returns a dictionary for looking up entities by their value. + /// + /// A dictionary for looking up entities by their value. + [SuppressMessage("Microsoft.Design", "CA1024", Justification = "This method creates and copies a dictionary, so exposing it as a property is not appropriate.")] + public Dictionary GetEntitiesLiteralNameLookup() + { + Dictionary hashtable = new Dictionary(); + foreach (Entity entity in this.m_entities.Values) + hashtable[entity.Literal] = entity; + + return hashtable; + } + + private const string WhiteSpace = " \r\n\t"; + + private void ParseEntity() + { + char ch = this.m_current.SkipWhitespace(); + bool pe = (ch == '%'); + if (pe) + { + // parameter entity. + this.m_current.ReadChar(); // move to next char + ch = this.m_current.SkipWhitespace(); + } + string name = this.m_current.ScanToken(this.m_sb, SgmlDtd.WhiteSpace, true); + ch = this.m_current.SkipWhitespace(); + Entity e = null; + if (ch == '"' || ch == '\'') + { + string literal = this.m_current.ScanLiteral(this.m_sb, ch); + e = new Entity(name, literal); + } + else + { + string pubid = null; + string extid = null; + string tok = this.m_current.ScanToken(this.m_sb, SgmlDtd.WhiteSpace, true); + if (Entity.IsLiteralType(tok)) + { + ch = this.m_current.SkipWhitespace(); + string literal = this.m_current.ScanLiteral(this.m_sb, ch); + e = new Entity(name, literal); + e.SetLiteralType(tok); + } + else + { + extid = tok; + if (string.Equals(extid, "PUBLIC", StringComparison.OrdinalIgnoreCase)) + { + ch = this.m_current.SkipWhitespace(); + if (ch == '"' || ch == '\'') + { + pubid = this.m_current.ScanLiteral(this.m_sb, ch); + } + else + { + this.m_current.Error("Expecting public identifier literal but found '{0}'",ch); + } + } + else if (!string.Equals(extid, "SYSTEM", StringComparison.OrdinalIgnoreCase)) + { + this.m_current.Error("Invalid external identifier '{0}'. Expecing 'PUBLIC' or 'SYSTEM'.", extid); + } + string uri = null; + ch = this.m_current.SkipWhitespace(); + if (ch == '"' || ch == '\'') + { + uri = this.m_current.ScanLiteral(this.m_sb, ch); + } + else if (ch != '>') + { + this.m_current.Error("Expecting system identifier literal but found '{0}'",ch); + } + e = new Entity(name, pubid, uri, this.m_current.Proxy); + } + } + ch = this.m_current.SkipWhitespace(); + if (ch == '-') + ch = ParseDeclComments(); + if (ch != '>') + { + this.m_current.Error("Expecting end of entity declaration '>' but found '{0}'", ch); + } + if (pe) + this.m_pentities.Add(e.Name, e); + else + this.m_entities.Add(e.Name, e); + } + + private void ParseElementDecl() + { + char ch = this.m_current.SkipWhitespace(); + string[] names = ParseNameGroup(ch, true); + ch = char.ToUpperInvariant(this.m_current.SkipWhitespace()); + bool sto = false; + bool eto = false; + if (ch == 'O' || ch == '-') { + sto = (ch == 'O'); // start tag optional? + this.m_current.ReadChar(); + ch = char.ToUpperInvariant(this.m_current.SkipWhitespace()); + if (ch == 'O' || ch == '-'){ + eto = (ch == 'O'); // end tag optional? + ch = this.m_current.ReadChar(); + } + } + ch = this.m_current.SkipWhitespace(); + ContentModel cm = ParseContentModel(ch); + ch = this.m_current.SkipWhitespace(); + + string [] exclusions = null; + string [] inclusions = null; + + if (ch == '-') + { + ch = this.m_current.ReadChar(); + if (ch == '(') + { + exclusions = ParseNameGroup(ch, true); + ch = this.m_current.SkipWhitespace(); + } + else if (ch == '-') + { + ch = ParseDeclComment(false); + } + else + { + this.m_current.Error("Invalid syntax at '{0}'", ch); + } + } + + if (ch == '-') + ch = ParseDeclComments(); + + if (ch == '+') + { + ch = this.m_current.ReadChar(); + if (ch != '(') + { + this.m_current.Error("Expecting inclusions name group", ch); + } + inclusions = ParseNameGroup(ch, true); + ch = this.m_current.SkipWhitespace(); + } + + if (ch == '-') + ch = ParseDeclComments(); + + + if (ch != '>') + { + this.m_current.Error("Expecting end of ELEMENT declaration '>' but found '{0}'", ch); + } + + foreach (string name in names) + { + string atom = name.ToUpperInvariant(); + this.m_elements.Add(atom, new ElementDecl(atom, sto, eto, cm, inclusions, exclusions)); + } + } + + static string ngterm = " \r\n\t|,)"; + string[] ParseNameGroup(char ch, bool nmtokens) + { + ArrayList names = new ArrayList(); + if (ch == '(') + { + ch = this.m_current.ReadChar(); + ch = this.m_current.SkipWhitespace(); + while (ch != ')') + { + // skip whitespace, scan name (which may be parameter entity reference + // which is then expanded to a name) + ch = this.m_current.SkipWhitespace(); + if (ch == '%') + { + Entity e = ParseParameterEntity(SgmlDtd.ngterm); + PushEntity(this.m_current.ResolvedUri, e); + ParseNameList(names, nmtokens); + PopEntity(); + ch = this.m_current.Lastchar; + } + else + { + string token = this.m_current.ScanToken(this.m_sb, SgmlDtd.ngterm, nmtokens); + token = token.ToUpperInvariant(); + names.Add(token); + } + ch = this.m_current.SkipWhitespace(); + if (ch == '|' || ch == ',') ch = this.m_current.ReadChar(); + } + this.m_current.ReadChar(); // consume ')' + } + else + { + string name = this.m_current.ScanToken(this.m_sb, SgmlDtd.WhiteSpace, nmtokens); + name = name.ToUpperInvariant(); + names.Add(name); + } + return (string[])names.ToArray(typeof(string)); + } + + void ParseNameList(ArrayList names, bool nmtokens) + { + char ch = this.m_current.Lastchar; + ch = this.m_current.SkipWhitespace(); + while (ch != Entity.EOF) + { + string name; + if (ch == '%') + { + Entity e = ParseParameterEntity(SgmlDtd.ngterm); + PushEntity(this.m_current.ResolvedUri, e); + ParseNameList(names, nmtokens); + PopEntity(); + ch = this.m_current.Lastchar; + } + else + { + name = this.m_current.ScanToken(this.m_sb, SgmlDtd.ngterm, true); + name = name.ToUpperInvariant(); + names.Add(name); + } + ch = this.m_current.SkipWhitespace(); + if (ch == '|') + { + ch = this.m_current.ReadChar(); + ch = this.m_current.SkipWhitespace(); + } + } + } + + static string dcterm = " \r\n\t>"; + private ContentModel ParseContentModel(char ch) + { + ContentModel cm = new ContentModel(); + if (ch == '(') + { + this.m_current.ReadChar(); + ParseModel(')', cm); + ch = this.m_current.ReadChar(); + if (ch == '?' || ch == '+' || ch == '*') + { + cm.AddOccurrence(ch); + this.m_current.ReadChar(); + } + } + else if (ch == '%') + { + Entity e = ParseParameterEntity(SgmlDtd.dcterm); + PushEntity(this.m_current.ResolvedUri, e); + cm = ParseContentModel(this.m_current.Lastchar); + PopEntity(); // bugbug should be at EOF. + } + else + { + string dc = ScanName(SgmlDtd.dcterm); + cm.SetDeclaredContent(dc); + } + return cm; + } + + static string cmterm = " \r\n\t,&|()?+*"; + void ParseModel(char cmt, ContentModel cm) + { + // Called when part of the model is made up of the contents of a parameter entity + int depth = cm.CurrentDepth; + char ch = this.m_current.Lastchar; + ch = this.m_current.SkipWhitespace(); + while (ch != cmt || cm.CurrentDepth > depth) // the entity must terminate while inside the content model. + { + if (ch == Entity.EOF) + { + this.m_current.Error("Content Model was not closed"); + } + if (ch == '%') + { + Entity e = ParseParameterEntity(SgmlDtd.cmterm); + PushEntity(this.m_current.ResolvedUri, e); + ParseModel(Entity.EOF, cm); + PopEntity(); + ch = this.m_current.SkipWhitespace(); + } + else if (ch == '(') + { + cm.PushGroup(); + this.m_current.ReadChar();// consume '(' + ch = this.m_current.SkipWhitespace(); + } + else if (ch == ')') + { + ch = this.m_current.ReadChar();// consume ')' + if (ch == '*' || ch == '+' || ch == '?') + { + cm.AddOccurrence(ch); + ch = this.m_current.ReadChar(); + } + if (cm.PopGroup() < depth) + { + this.m_current.Error("Parameter entity cannot close a paren outside it's own scope"); + } + ch = this.m_current.SkipWhitespace(); + } + else if (ch == ',' || ch == '|' || ch == '&') + { + cm.AddConnector(ch); + this.m_current.ReadChar(); // skip connector + ch = this.m_current.SkipWhitespace(); + } + else + { + string token; + if (ch == '#') + { + ch = this.m_current.ReadChar(); + token = "#" + this.m_current.ScanToken(this.m_sb, SgmlDtd.cmterm, true); // since '#' is not a valid name character. + } + else + { + token = this.m_current.ScanToken(this.m_sb, SgmlDtd.cmterm, true); + } + + token = token.ToUpperInvariant(); + ch = this.m_current.Lastchar; + if (ch == '?' || ch == '+' || ch == '*') + { + cm.PushGroup(); + cm.AddSymbol(token); + cm.AddOccurrence(ch); + cm.PopGroup(); + this.m_current.ReadChar(); // skip connector + ch = this.m_current.SkipWhitespace(); + } + else + { + cm.AddSymbol(token); + ch = this.m_current.SkipWhitespace(); + } + } + } + } + + void ParseAttList() + { + char ch = this.m_current.SkipWhitespace(); + string[] names = ParseNameGroup(ch, true); + Dictionary attlist = new Dictionary(); + ParseAttList(attlist, '>'); + foreach (string name in names) + { + ElementDecl e; + if (!m_elements.TryGetValue(name, out e)) + { + this.m_current.Error("ATTLIST references undefined ELEMENT {0}", name); + } + + e.AddAttDefs(attlist); + } + } + + static string peterm = " \t\r\n>"; + void ParseAttList(Dictionary list, char term) + { + char ch = this.m_current.SkipWhitespace(); + while (ch != term) + { + if (ch == '%') + { + Entity e = ParseParameterEntity(SgmlDtd.peterm); + PushEntity(this.m_current.ResolvedUri, e); + ParseAttList(list, Entity.EOF); + PopEntity(); + ch = this.m_current.SkipWhitespace(); + } + else if (ch == '-') + { + ch = ParseDeclComments(); + } + else + { + AttDef a = ParseAttDef(ch); + list.Add(a.Name, a); + } + ch = this.m_current.SkipWhitespace(); + } + } + + AttDef ParseAttDef(char ch) + { + ch = this.m_current.SkipWhitespace(); + string name = ScanName(SgmlDtd.WhiteSpace); + name = name.ToUpperInvariant(); + AttDef attdef = new AttDef(name); + + ch = this.m_current.SkipWhitespace(); + if (ch == '-') + ch = ParseDeclComments(); + + ParseAttType(ch, attdef); + + ch = this.m_current.SkipWhitespace(); + if (ch == '-') + ch = ParseDeclComments(); + + ParseAttDefault(ch, attdef); + + ch = this.m_current.SkipWhitespace(); + if (ch == '-') + ch = ParseDeclComments(); + + return attdef; + + } + + void ParseAttType(char ch, AttDef attdef) + { + if (ch == '%') + { + Entity e = ParseParameterEntity(SgmlDtd.WhiteSpace); + PushEntity(this.m_current.ResolvedUri, e); + ParseAttType(this.m_current.Lastchar, attdef); + PopEntity(); // bugbug - are we at the end of the entity? + ch = this.m_current.Lastchar; + return; + } + + if (ch == '(') + { + //attdef.EnumValues = ParseNameGroup(ch, false); + //attdef.Type = AttributeType.ENUMERATION; + attdef.SetEnumeratedType(ParseNameGroup(ch, false), AttributeType.ENUMERATION); + } + else + { + string token = ScanName(SgmlDtd.WhiteSpace); + if (string.Equals(token, "NOTATION", StringComparison.OrdinalIgnoreCase)) + { + ch = this.m_current.SkipWhitespace(); + if (ch != '(') + { + this.m_current.Error("Expecting name group '(', but found '{0}'", ch); + } + //attdef.Type = AttributeType.NOTATION; + //attdef.EnumValues = ParseNameGroup(ch, true); + attdef.SetEnumeratedType(ParseNameGroup(ch, true), AttributeType.NOTATION); + } + else + { + attdef.SetType(token); + } + } + } + + void ParseAttDefault(char ch, AttDef attdef) + { + if (ch == '%') + { + Entity e = ParseParameterEntity(SgmlDtd.WhiteSpace); + PushEntity(this.m_current.ResolvedUri, e); + ParseAttDefault(this.m_current.Lastchar, attdef); + PopEntity(); // bugbug - are we at the end of the entity? + ch = this.m_current.Lastchar; + return; + } + + bool hasdef = true; + if (ch == '#') + { + this.m_current.ReadChar(); + string token = this.m_current.ScanToken(this.m_sb, SgmlDtd.WhiteSpace, true); + hasdef = attdef.SetPresence(token); + ch = this.m_current.SkipWhitespace(); + } + if (hasdef) + { + if (ch == '\'' || ch == '"') + { + string lit = this.m_current.ScanLiteral(this.m_sb, ch); + attdef.Default = lit; + ch = this.m_current.SkipWhitespace(); + } + else + { + string name = this.m_current.ScanToken(this.m_sb, SgmlDtd.WhiteSpace, false); + name = name.ToUpperInvariant(); + attdef.Default = name; // bugbug - must be one of the enumerated names. + ch = this.m_current.SkipWhitespace(); + } + } + } + } + + internal static class StringUtilities + { + public static bool EqualsIgnoreCase(string a, string b){ + return string.Equals(a, b, StringComparison.OrdinalIgnoreCase); + } + } +} diff --git a/sgmlreaderdll/SgmlReader.cs b/SgmlReaderCore/SgmlReader.cs similarity index 97% rename from sgmlreaderdll/SgmlReader.cs rename to SgmlReaderCore/SgmlReader.cs index 75595e5..69639dd 100644 --- a/sgmlreaderdll/SgmlReader.cs +++ b/SgmlReaderCore/SgmlReader.cs @@ -1,2711 +1,2711 @@ -/* - * - * An XmlReader implementation for loading SGML (including HTML) converting it - * to well formed XML, by adding missing quotes, empty attribute values, ignoring - * duplicate attributes, case folding on tag names, adding missing closing tags - * based on SGML DTD information, and so on. - * - * Copyright (c) 2002 Microsoft Corporation. All rights reserved. (Chris Lovett) - * - */ - -/* - * - * Copyright (c) 2007-2013 MindTouch. All rights reserved. - * www.mindtouch.com oss@mindtouch.com - * - * For community documentation and downloads visit wiki.developer.mindtouch.com; - * please review the licensing section. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -using System; -using System.Collections.Generic; -using System.Diagnostics.CodeAnalysis; -using System.Globalization; -using System.IO; -using System.Reflection; -using System.Text; -using System.Xml; - -namespace Sgml -{ - /// - /// SGML is case insensitive, so here you can choose between converting - /// to lower case or upper case tags. "None" means that the case is left - /// alone, except that end tags will be folded to match the start tags. - /// - public enum CaseFolding - { - /// - /// Do not convert case, except for converting end tags to match start tags. - /// - None, - - /// - /// Convert tags to upper case. - /// - ToUpper, - - /// - /// Convert tags to lower case. - /// - ToLower - } - - /// - /// This stack maintains a high water mark for allocated objects so the client - /// can reuse the objects in the stack to reduce memory allocations, this is - /// used to maintain current state of the parser for element stack, and attributes - /// in each element. - /// - internal class HWStack - { - private object[] m_items; - private int m_size; - private int m_count; - private int m_growth; - - /// - /// Initialises a new instance of the HWStack class. - /// - /// The amount to grow the stack space by, if more space is needed on the stack. - public HWStack(int growth) - { - this.m_growth = growth; - } - - /// - /// The number of items currently in the stack. - /// - public int Count - { - get - { - return this.m_count; - } - set - { - this.m_count = value; - } - } - - /// - /// The size (capacity) of the stack. - /// - [SuppressMessage("Microsoft.Performance", "CA1811", Justification = "Kept for potential future usage.")] - public int Size - { - get - { - return this.m_size; - } - } - - /// - /// Returns the item at the requested index or null if index is out of bounds - /// - /// The index of the item to retrieve. - /// The item at the requested index or null if index is out of bounds. - public object this[int i] - { - get - { - return (i >= 0 && i < this.m_size) ? m_items[i] : null; - } - set - { - this.m_items[i] = value; - } - } - - /// - /// Removes and returns the item at the top of the stack - /// - /// The item at the top of the stack. - public object Pop() - { - this.m_count--; - if (this.m_count > 0) - { - return m_items[this.m_count - 1]; - } - - return null; - } - - /// - /// Pushes a new slot at the top of the stack. - /// - /// The object at the top of the stack. - /// - /// This method tries to reuse a slot, if it returns null then - /// the user has to call the other Push method. - /// - public object Push() - { - if (this.m_count == this.m_size) - { - int newsize = this.m_size + this.m_growth; - object[] newarray = new object[newsize]; - if (this.m_items != null) - Array.Copy(this.m_items, newarray, this.m_size); - - this.m_size = newsize; - this.m_items = newarray; - } - return m_items[this.m_count++]; - } - - /// - /// Remove a specific item from the stack. - /// - /// The index of the item to remove. - [SuppressMessage("Microsoft.Performance", "CA1811", Justification = "Kept for potential future usage.")] - public void RemoveAt(int i) - { - this.m_items[i] = null; - Array.Copy(this.m_items, i + 1, this.m_items, i, this.m_count - i - 1); - this.m_count--; - } - } - - /// - /// This class represents an attribute. The AttDef is assigned - /// from a validation process, and is used to provide default values. - /// - internal class Attribute - { - internal string Name; // the atomized name. - internal AttDef DtdType; // the AttDef of the attribute from the SGML DTD. - internal char QuoteChar; // the quote character used for the attribute value. - private string m_literalValue; // the attribute value - - /// - /// Attribute objects are reused during parsing to reduce memory allocations, - /// hence the Reset method. - /// - public void Reset(string name, string value, char quote) - { - this.Name = name; - this.m_literalValue = value; - this.QuoteChar = quote; - this.DtdType = null; - } - - public string Value - { - get - { - if (this.m_literalValue != null) - return this.m_literalValue; - if (this.DtdType != null) - return this.DtdType.Default; - return null; - } -/* set - { - this.m_literalValue = value; - }*/ - } - - public bool IsDefault - { - get - { - return (this.m_literalValue == null); - } - } - } - - /// - /// This class models an XML node, an array of elements in scope is maintained while parsing - /// for validation purposes, and these Node objects are reused to reduce object allocation, - /// hence the reset method. - /// - internal class Node - { - internal XmlNodeType NodeType; - internal string Value; - internal XmlSpace Space; - internal string XmlLang; - internal bool IsEmpty; - internal string Name; - internal ElementDecl DtdType; // the DTD type found via validation - internal State CurrentState; - internal bool Simulated; // tag was injected into result stream. - HWStack attributes = new HWStack(10); - - /// - /// Attribute objects are reused during parsing to reduce memory allocations, - /// hence the Reset method. - /// - public void Reset(string name, XmlNodeType nt, string value) { - this.Value = value; - this.Name = name; - this.NodeType = nt; - this.Space = XmlSpace.None; - this.XmlLang= null; - this.IsEmpty = true; - this.attributes.Count = 0; - this.DtdType = null; - } - - public Attribute AddAttribute(string name, string value, char quotechar, bool caseInsensitive) { - Attribute a; - // check for duplicates! - for (int i = 0, n = this.attributes.Count; i < n; i++) { - a = (Attribute)this.attributes[i]; - if (string.Equals(a.Name, name, caseInsensitive ? StringComparison.OrdinalIgnoreCase : StringComparison.Ordinal)) - { - return null; - } - } - // This code makes use of the high water mark for attribute objects, - // and reuses exisint Attribute objects to avoid memory allocation. - a = (Attribute)this.attributes.Push(); - if (a == null) { - a = new Attribute(); - this.attributes[this.attributes.Count-1] = a; - } - a.Reset(name, value, quotechar); - return a; - } - - [SuppressMessage("Microsoft.Performance", "CA1811", Justification = "Kept for potential future usage.")] - public void RemoveAttribute(string name) - { - for (int i = 0, n = this.attributes.Count; i < n; i++) - { - Attribute a = (Attribute)this.attributes[i]; - if (string.Equals(a.Name, name, StringComparison.OrdinalIgnoreCase)) - { - this.attributes.RemoveAt(i); - return; - } - } - } - public void CopyAttributes(Node n) { - for (int i = 0, len = n.attributes.Count; i < len; i++) { - Attribute a = (Attribute)n.attributes[i]; - Attribute na = this.AddAttribute(a.Name, a.Value, a.QuoteChar, false); - na.DtdType = a.DtdType; - } - } - - public int AttributeCount { - get { - return this.attributes.Count; - } - } - - public int GetAttribute(string name) { - for (int i = 0, n = this.attributes.Count; i < n; i++) { - Attribute a = (Attribute)this.attributes[i]; - if (string.Equals(a.Name, name, StringComparison.OrdinalIgnoreCase)) { - return i; - } - } - return -1; - } - - public Attribute GetAttribute(int i) { - if (i>=0 && i where we have special parsing rules. - PartialText, - PseudoStartTag, // we pushed a pseudo-start tag, need to continue with previous start tag. - Eof - } - - - /// - /// SgmlReader is an XmlReader API over any SGML document (including built in - /// support for HTML). - /// - public class SgmlReader : XmlReader - { - /// - /// The value returned when a namespace is queried and none has been specified. - /// - [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1705", Justification = "SgmlReader's standards for constants are different to Microsoft's and in line with older C++ style constants naming conventions. Visually, constants using this style are more easily identifiable as such.")] - [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1707", Justification = "SgmlReader's standards for constants are different to Microsoft's and in line with older C++ style constants naming conventions. Visually, constants using this style are more easily identifiable as such.")] - public const string UNDEFINED_NAMESPACE = "#unknown"; - - private SgmlDtd m_dtd; - private Entity m_current; - private State m_state; - private char m_partial; - private string m_endTag; - private HWStack m_stack; - private Node m_node; // current node (except for attributes) - // Attributes are handled separately using these members. - private Attribute m_a; - private int m_apos; // which attribute are we positioned on in the collection. - private Uri m_baseUri; - private StringBuilder m_sb; - private StringBuilder m_name; - private TextWriter m_log; - private bool m_foundRoot; - private bool m_ignoreDtd; - - // autoclose support - private Node m_newnode; - private int m_poptodepth; - private int m_rootCount; - private bool m_isHtml; - private string m_rootElementName; - - private string m_href; - private string m_errorLogFile; - private Entity m_lastError; - private string m_proxy; - private TextReader m_inputStream; - private string m_syslit; - private string m_pubid; - private string m_subset; - private string m_docType; - private WhitespaceHandling m_whitespaceHandling; - private CaseFolding m_folding = CaseFolding.None; - private bool m_stripDocType = true; - //private string m_startTag; - private Dictionary unknownNamespaces = new Dictionary(); - - /// - /// Initialises a new instance of the SgmlReader class. - /// - public SgmlReader() { - Init(); - } - - /// - /// Initialises a new instance of the SgmlReader class with an existing , which is NOT used. - /// - /// The nametable to use. - public SgmlReader(XmlNameTable nt) { - Init(); - } - - /// - /// Specify the SgmlDtd object directly. This allows you to cache the Dtd and share - /// it across multipl SgmlReaders. To load a DTD from a URL use the SystemLiteral property. - /// - public SgmlDtd Dtd - { - get - { - if (this.m_dtd == null) - { - LazyLoadDtd(this.m_baseUri); - } - - return this.m_dtd; - } - set - { - this.m_dtd = value; - } - } - - private void LazyLoadDtd(Uri baseUri) - { - if (this.m_dtd == null && !this.m_ignoreDtd) - { - if (string.IsNullOrEmpty(this.m_syslit)) - { - if (this.m_docType != null && StringUtilities.EqualsIgnoreCase(this.m_docType, "html")) - { - Assembly a = typeof(SgmlReader).Assembly; - string name = a.FullName.Split(',')[0]+".Html.dtd"; - Stream stm = a.GetManifestResourceStream(name); - if (stm != null) - { - StreamReader sr = new StreamReader(stm); - this.m_dtd = SgmlDtd.Parse(baseUri, "HTML", sr, null, this.m_proxy, null); - } - } - else if (this.m_docType != null && StringUtilities.EqualsIgnoreCase(this.m_docType, "ofx")) - { - Assembly a = typeof(SgmlReader).Assembly; - string name = a.FullName.Split(',')[0] + ".ofx160.dtd"; - Stream stm = a.GetManifestResourceStream(name); - if (stm != null) - { - StreamReader sr = new StreamReader(stm); - this.m_dtd = SgmlDtd.Parse(baseUri, "OFX", sr, null, this.m_proxy, null); - } - } - } - else - { - if (baseUri != null) - { - baseUri = new Uri(baseUri, this.m_syslit); - } - else if (this.m_baseUri != null) - { - baseUri = new Uri(this.m_baseUri, this.m_syslit); - } - else - { - baseUri = new Uri(new Uri(Directory.GetCurrentDirectory() + "/"), this.m_syslit); - } - this.m_dtd = SgmlDtd.Parse(baseUri, this.m_docType, this.m_pubid, baseUri.AbsoluteUri, this.m_subset, this.m_proxy, null); - } - } - - if (this.m_dtd != null && this.m_dtd.Name != null) - { - switch(this.CaseFolding) - { - case CaseFolding.ToUpper: - this.m_rootElementName = this.m_dtd.Name.ToUpperInvariant(); - break; - case CaseFolding.ToLower: - this.m_rootElementName = this.m_dtd.Name.ToLowerInvariant(); - break; - default: - this.m_rootElementName = this.m_dtd.Name; - break; - } - - this.m_isHtml = StringUtilities.EqualsIgnoreCase(this.m_dtd.Name, "html"); - } - } - - /// - /// The name of root element specified in the DOCTYPE tag. - /// - public string DocType - { - get - { - return this.m_docType; - } - set - { - this.m_docType = value; - } - } - - /// - /// The root element of the document. - /// - public string RootElementName - { - get - { - return m_rootElementName; - } - } - - /// - /// The PUBLIC identifier in the DOCTYPE tag - /// - public string PublicIdentifier - { - get - { - return this.m_pubid; - } - set - { - this.m_pubid = value; - } - } - - /// - /// The SYSTEM literal in the DOCTYPE tag identifying the location of the DTD. - /// - public string SystemLiteral - { - get - { - return this.m_syslit; - } - set - { - this.m_syslit = value; - } - } - - /// - /// The DTD internal subset in the DOCTYPE tag - /// - public string InternalSubset - { - get - { - return this.m_subset; - } - set - { - this.m_subset = value; - } - } - - /// - /// The input stream containing SGML data to parse. - /// You must specify this property or the Href property before calling Read(). - /// - public TextReader InputStream - { - get - { - return this.m_inputStream; - } - set - { - this.m_inputStream = value; - Init(); - } - } - - /// - /// Sometimes you need to specify a proxy server in order to load data via HTTP - /// from outside the firewall. For example: "itgproxy:80". - /// - public string WebProxy - { - get - { - return this.m_proxy; - } - set - { - this.m_proxy = value; - } - } - - /// - /// The base Uri is used to resolve relative Uri's like the SystemLiteral and - /// Href properties. This is a method because BaseURI is a read-only - /// property on the base XmlReader class. - /// - public void SetBaseUri(string uri) - { - this.m_baseUri = new Uri(uri); - } - - /// - /// Specify the location of the input SGML document as a URL. - /// - public string Href - { - get - { - return this.m_href; - } - set - { - this.m_href = value; - Init(); - if (this.m_baseUri == null) - { - if (this.m_href.IndexOf("://") > 0) - { - this.m_baseUri = new Uri(this.m_href); - } - else - { - this.m_baseUri = new Uri("file:///" + Directory.GetCurrentDirectory() + "//"); - } - } - } - } - - /// - /// Whether to strip out the DOCTYPE tag from the output (default true) - /// - public bool StripDocType - { - get - { - return this.m_stripDocType; - } - set - { - this.m_stripDocType = value; - } - } - - /// - /// Gets or sets a value indicating whether to ignore any DTD reference. - /// - /// true if DTD references should be ignored; otherwise, false. - public bool IgnoreDtd - { - get { return m_ignoreDtd; } - set { m_ignoreDtd = value; } - } - - /// - /// The case conversion behaviour while processing tags. - /// - public CaseFolding CaseFolding - { - get - { - return this.m_folding; - } - set - { - this.m_folding = value; - } - } - - /// - /// DTD validation errors are written to this stream. - /// - public TextWriter ErrorLog - { - get - { - return this.m_log; - } - set - { - this.m_log = value; - } - } - - /// - /// DTD validation errors are written to this log file. - /// - public string ErrorLogFile - { - get - { - return this.m_errorLogFile; - } - set - { - this.m_errorLogFile = value; - this.m_log = new StreamWriter(value); - } - } - - private void Log(string msg, params string[] args) - { - if (ErrorLog != null) - { - string err = string.Format(CultureInfo.CurrentUICulture, msg, args); - if (this.m_lastError != this.m_current) - { - err = err + " " + this.m_current.Context(); - this.m_lastError = this.m_current; - ErrorLog.WriteLine("### Error:" + err); - } - else - { - string path = ""; - if (this.m_current.ResolvedUri != null) - { - path = this.m_current.ResolvedUri.AbsolutePath; - } - - ErrorLog.WriteLine("### Error in {0}#{1}, line {2}, position {3}: {4}", path, this.m_current.Name, this.m_current.Line, this.m_current.LinePosition, err); - } - } - } - - private void Log(string msg, char ch) - { - Log(msg, ch.ToString()); - } - - private void Init() - { - this.m_state = State.Initial; - this.m_stack = new HWStack(10); - this.m_node = Push(null, XmlNodeType.Document, null); - this.m_node.IsEmpty = false; - this.m_sb = new StringBuilder(); - this.m_name = new StringBuilder(); - this.m_poptodepth = 0; - this.m_current = null; - this.m_partial = '\0'; - this.m_endTag = null; - this.m_a = null; - this.m_apos = 0; - this.m_newnode = null; - this.m_rootCount = 0; - this.m_foundRoot = false; - this.unknownNamespaces.Clear(); - } - - private Node Push(string name, XmlNodeType nt, string value) - { - Node result = (Node)this.m_stack.Push(); - if (result == null) - { - result = new Node(); - this.m_stack[this.m_stack.Count - 1] = result; - } - - result.Reset(name, nt, value); - this.m_node = result; - return result; - } - - private void SwapTopNodes() - { - int top = this.m_stack.Count - 1; - if (top > 0) - { - Node n = (Node)this.m_stack[top - 1]; - this.m_stack[top - 1] = this.m_stack[top]; - this.m_stack[top] = n; - } - } - - private Node Push(Node n) - { - // we have to do a deep clone of the Node object because - // it is reused in the stack. - Node n2 = Push(n.Name, n.NodeType, n.Value); - n2.DtdType = n.DtdType; - n2.IsEmpty = n.IsEmpty; - n2.Space = n.Space; - n2.XmlLang = n.XmlLang; - n2.CurrentState = n.CurrentState; - n2.CopyAttributes(n); - this.m_node = n2; - return n2; - } - - private void Pop() - { - if (this.m_stack.Count > 1) - { - this.m_node = (Node)this.m_stack.Pop(); - } - } - - private Node Top() - { - int top = this.m_stack.Count - 1; - if (top > 0) - { - return (Node)this.m_stack[top]; - } - - return null; - } - - /// - /// The node type of the node currently being parsed. - /// - public override XmlNodeType NodeType - { - get - { - if (this.m_state == State.Attr) - { - return XmlNodeType.Attribute; - } - else if (this.m_state == State.AttrValue) - { - return XmlNodeType.Text; - } - else if (this.m_state == State.EndTag || this.m_state == State.AutoClose) - { - return XmlNodeType.EndElement; - } - - return this.m_node.NodeType; - } - } - - /// - /// The name of the current node, if currently positioned on a node or attribute. - /// - public override string Name - { - get - { - string result = null; - if (this.m_state == State.Attr) - { - result = XmlConvert.EncodeName(this.m_a.Name); - } - else if (this.m_state != State.AttrValue) - { - result = this.m_node.Name; - } - - return result; - } - } - - /// - /// The local name of the current node, if currently positioned on a node or attribute. - /// - public override string LocalName - { - get - { - string result = Name; - if (result != null) - { - int colon = result.IndexOf(':'); - if (colon != -1) - { - result = result.Substring(colon + 1); - } - } - return result; - } - } - - /// - /// The namespace of the current node, if currently positioned on a node or attribute. - /// - /// - /// If not positioned on a node or attribute, is returned. - /// - [SuppressMessage("Microsoft.Performance", "CA1820", Justification="Cannot use IsNullOrEmpty in a switch statement and swapping the elegance of switch for a load of 'if's is not worth it.")] - public override string NamespaceURI - { - get - { - // SGML has no namespaces, unless this turned out to be an xmlns attribute. - if (this.m_state == State.Attr && string.Equals(this.m_a.Name, "xmlns", StringComparison.OrdinalIgnoreCase)) - { - return "http://www.w3.org/2000/xmlns/"; - } - - string prefix = Prefix; - switch (Prefix) - { - case "xmlns": - return "http://www.w3.org/2000/xmlns/"; - case "xml": - return "http://www.w3.org/XML/1998/namespace"; - case null: // Should never occur since Prefix never returns null - case "": - if (NodeType == XmlNodeType.Attribute) - { - // attributes without a prefix are never in any namespace - return string.Empty; - } - else if (NodeType == XmlNodeType.Element) - { - // check if a 'xmlns:prefix' attribute is defined - for (int i = this.m_stack.Count - 1; i > 0; --i) - { - Node node = this.m_stack[i] as Node; - if ((node != null) && (node.NodeType == XmlNodeType.Element)) - { - int index = node.GetAttribute("xmlns"); - if (index >= 0) - { - string value = node.GetAttribute(index).Value; - if (value != null) - { - return value; - } - } - } - } - } - - return string.Empty; - default: { - string value; - if((NodeType == XmlNodeType.Attribute) || (NodeType == XmlNodeType.Element)) { - - // check if a 'xmlns:prefix' attribute is defined - string key = "xmlns:" + prefix; - for(int i = this.m_stack.Count - 1; i > 0; --i) { - Node node = this.m_stack[i] as Node; - if((node != null) && (node.NodeType == XmlNodeType.Element)) { - int index = node.GetAttribute(key); - if(index >= 0) { - value = node.GetAttribute(index).Value; - if(value != null) { - return value; - } - } - } - } - } - - // check if we've seen this prefix before - if(!unknownNamespaces.TryGetValue(prefix, out value)) { - if(unknownNamespaces.Count > 0) { - value = UNDEFINED_NAMESPACE + unknownNamespaces.Count.ToString(); - } else { - value = UNDEFINED_NAMESPACE; - } - unknownNamespaces[prefix] = value; - } - return value; - } - } - } - } - - /// - /// The prefix of the current node's name. - /// - public override string Prefix - { - get - { - string result = Name; - if (result != null) - { - int colon = result.IndexOf(':'); - if(colon != -1) { - result = result.Substring(0, colon); - } else { - result = string.Empty; - } - } - return result ?? string.Empty; - } - } - - /// - /// Whether the current node has a value or not. - /// - public override bool HasValue - { - get - { - if (this.m_state == State.Attr || this.m_state == State.AttrValue) - { - return true; - } - - return (this.m_node.Value != null); - } - } - - /// - /// The value of the current node. - /// - public override string Value - { - get - { - if (this.m_state == State.Attr || this.m_state == State.AttrValue) - { - return this.m_a.Value; - } - - return this.m_node.Value; - } - } - - /// - /// Gets the depth of the current node in the XML document. - /// - /// The depth of the current node in the XML document. - public override int Depth - { - get - { - if (this.m_state == State.Attr) - { - return this.m_stack.Count; - } - else if (this.m_state == State.AttrValue) - { - return this.m_stack.Count + 1; - } - - return this.m_stack.Count - 1; - } - } - - /// - /// Gets the base URI of the current node. - /// - /// The base URI of the current node. - public override string BaseURI - { - get - { - return this.m_baseUri == null ? "" : this.m_baseUri.AbsoluteUri; - } - } - - /// - /// Gets a value indicating whether the current node is an empty element (for example, <MyElement/>). - /// - public override bool IsEmptyElement - { - get - { - if (this.m_state == State.Markup || this.m_state == State.Attr || this.m_state == State.AttrValue) - { - return this.m_node.IsEmpty; - } - - return false; - } - } - - /// - /// Gets a value indicating whether the current node is an attribute that was generated from the default value defined in the DTD or schema. - /// - /// - /// true if the current node is an attribute whose value was generated from the default value defined in the DTD or - /// schema; false if the attribute value was explicitly set. - /// - public override bool IsDefault - { - get - { - if (this.m_state == State.Attr || this.m_state == State.AttrValue) - return this.m_a.IsDefault; - - return false; - } - } - - /// - /// Gets the quotation mark character used to enclose the value of an attribute node. - /// - /// The quotation mark character (" or ') used to enclose the value of an attribute node. - /// - /// This property applies only to an attribute node. - /// - public override char QuoteChar - { - get - { - if (this.m_a != null) - return this.m_a.QuoteChar; - - return '\0'; - } - } - - /// - /// Gets the current xml:space scope. - /// - /// One of the values. If no xml:space scope exists, this property defaults to XmlSpace.None. - public override XmlSpace XmlSpace - { - get - { - for (int i = this.m_stack.Count - 1; i > 1; i--) - { - Node n = (Node)this.m_stack[i]; - XmlSpace xs = n.Space; - if (xs != XmlSpace.None) - return xs; - } - - return XmlSpace.None; - } - } - - /// - /// Gets the current xml:lang scope. - /// - /// The current xml:lang scope. - public override string XmlLang - { - get - { - for (int i = this.m_stack.Count - 1; i > 1; i--) - { - Node n = (Node)this.m_stack[i]; - string xmllang = n.XmlLang; - if (xmllang != null) - return xmllang; - } - - return string.Empty; - } - } - - /// - /// Specifies how white space is handled. - /// - public WhitespaceHandling WhitespaceHandling - { - get - { - return this.m_whitespaceHandling; - } - set - { - this.m_whitespaceHandling = value; - } - } - - /// - /// Gets the number of attributes on the current node. - /// - /// The number of attributes on the current node. - public override int AttributeCount - { - get - { - if (this.m_state == State.Attr || this.m_state == State.AttrValue) - //For compatibility with mono - return this.m_node.AttributeCount; - else if (this.m_node.NodeType == XmlNodeType.Element || this.m_node.NodeType == XmlNodeType.DocumentType) - return this.m_node.AttributeCount; - else - return 0; - } - } - - /// - /// Gets the value of an attribute with the specified . - /// - /// The name of the attribute to retrieve. - /// The value of the specified attribute. If the attribute is not found, a null reference (Nothing in Visual Basic) is returned. - public override string GetAttribute(string name) - { - if (this.m_state != State.Attr && this.m_state != State.AttrValue) - { - int i = this.m_node.GetAttribute(name); - if (i >= 0) - return GetAttribute(i); - } - - return null; - } - - /// - /// Gets the value of the attribute with the specified and . - /// - /// The local name of the attribute. - /// The namespace URI of the attribute. - /// The value of the specified attribute. If the attribute is not found, a null reference (Nothing in Visual Basic) is returned. This method does not move the reader. - public override string GetAttribute(string name, string namespaceURI) - { - return GetAttribute(name); // SGML has no namespaces. - } - - /// - /// Gets the value of the attribute with the specified index. - /// - /// The index of the attribute. - /// The value of the specified attribute. This method does not move the reader. - public override string GetAttribute(int i) - { - if (this.m_state != State.Attr && this.m_state != State.AttrValue) - { - Attribute a = this.m_node.GetAttribute(i); - if (a != null) - return a.Value; - } - - throw new ArgumentOutOfRangeException("i"); - } - - /// - /// Gets the value of the attribute with the specified index. - /// - /// The index of the attribute. - /// The value of the specified attribute. This method does not move the reader. - public override string this[int i] - { - get - { - return GetAttribute(i); - } - } - - /// - /// Gets the value of an attribute with the specified . - /// - /// The name of the attribute to retrieve. - /// The value of the specified attribute. If the attribute is not found, a null reference (Nothing in Visual Basic) is returned. - public override string this[string name] - { - get - { - return GetAttribute(name); - } - } - - /// - /// Gets the value of the attribute with the specified and . - /// - /// The local name of the attribute. - /// The namespace URI of the attribute. - /// The value of the specified attribute. If the attribute is not found, a null reference (Nothing in Visual Basic) is returned. This method does not move the reader. - [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1023", Justification = "This design is that of Microsoft's XmlReader class and overriding its method is merely continuing the same design.")] - public override string this[string name, string namespaceURI] - { - get - { - return GetAttribute(name, namespaceURI); - } - } - - /// - /// Moves to the atttribute with the specified . - /// - /// The qualified name of the attribute. - /// true if the attribute is found; otherwise, false. If false, the reader's position does not change. - public override bool MoveToAttribute(string name) - { - int i = this.m_node.GetAttribute(name); - if (i >= 0) - { - MoveToAttribute(i); - return true; - } - - return false; - } - - /// - /// Moves to the attribute with the specified and . - /// - /// The local name of the attribute. - /// The namespace URI of the attribute. - /// true if the attribute is found; otherwise, false. If false, the reader's position does not change. - public override bool MoveToAttribute(string name, string ns) - { - return MoveToAttribute(name); - } - - /// - /// Moves to the attribute with the specified index. - /// - /// The index of the attribute to move to. - public override void MoveToAttribute(int i) - { - Attribute a = this.m_node.GetAttribute(i); - if (a != null) - { - this.m_apos = i; - this.m_a = a; - //Make sure that AttrValue does not overwrite the preserved value - if (this.m_state != State.Attr && this.m_state != State.AttrValue) - { - this.m_node.CurrentState = this.m_state; //save current state. - } - - this.m_state = State.Attr; - return; - } - - throw new ArgumentOutOfRangeException("i"); - } - - /// - /// Moves to the first attribute. - /// - /// - public override bool MoveToFirstAttribute() - { - if (this.m_node.AttributeCount > 0) - { - MoveToAttribute(0); - return true; - } - - return false; - } - - /// - /// Moves to the next attribute. - /// - /// true if there is a next attribute; false if there are no more attributes. - /// - /// If the current node is an element node, this method is equivalent to . If returns true, - /// the reader moves to the next attribute; otherwise, the position of the reader does not change. - /// - public override bool MoveToNextAttribute() - { - if (this.m_state != State.Attr && this.m_state != State.AttrValue) - { - return MoveToFirstAttribute(); - } - else if (this.m_apos < this.m_node.AttributeCount - 1) - { - MoveToAttribute(this.m_apos + 1); - return true; - } - else - return false; - } - - /// - /// Moves to the element that contains the current attribute node. - /// - /// - /// true if the reader is positioned on an attribute (the reader moves to the element that owns the attribute); false if the reader is not positioned - /// on an attribute (the position of the reader does not change). - /// - public override bool MoveToElement() - { - if (this.m_state == State.Attr || this.m_state == State.AttrValue) - { - this.m_state = this.m_node.CurrentState; - this.m_a = null; - return true; - } - else - return (this.m_node.NodeType == XmlNodeType.Element); - } - - /// - /// Gets whether the content is HTML or not. - /// - public bool IsHtml - { - get - { - return this.m_isHtml; - } - } - - /// - /// Returns the encoding of the current entity. - /// - /// The encoding of the current entity. - [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1024", Justification = "This method to get the encoding does not simply read a value, but potentially causes significant processing of the input stream.")] - public Encoding GetEncoding() - { - if (this.m_current == null) - { - OpenInput(); - } - - return this.m_current.Encoding; - } - - private void OpenInput() - { - LazyLoadDtd(this.m_baseUri); - - if (this.Href != null) - { - this.m_current = new Entity("#document", null, this.m_href, this.m_proxy); - } - else if (this.m_inputStream != null) - { - this.m_current = new Entity("#document", null, this.m_inputStream, this.m_proxy); - } - else - { - throw new InvalidOperationException("You must specify input either via Href or InputStream properties"); - } - - this.m_current.IsHtml = this.IsHtml; - this.m_current.Open(null, this.m_baseUri); - if (this.m_current.ResolvedUri != null) - this.m_baseUri = this.m_current.ResolvedUri; - - if (this.m_current.IsHtml && this.m_dtd == null) - { - this.m_docType = "HTML"; - LazyLoadDtd(this.m_baseUri); - } - } - - /// - /// Reads the next node from the stream. - /// - /// true if the next node was read successfully; false if there are no more nodes to read. - public override bool Read() - { - if (m_current == null) - { - OpenInput(); - } - - if (m_node.Simulated) - { - // return the next node - m_node.Simulated = false; - this.m_node = Top(); - this.m_state = this.m_node.CurrentState; - return true; - } - - bool foundnode = false; - while (!foundnode) - { - switch (this.m_state) - { - case State.Initial: - this.m_state = State.Markup; - this.m_current.ReadChar(); - goto case State.Markup; - case State.Eof: - if (this.m_current.Parent != null) - { - this.m_current.Close(); - this.m_current = this.m_current.Parent; - } - else - { - return false; - } - break; - case State.EndTag: - if (string.Equals(this.m_endTag, this.m_node.Name, StringComparison.OrdinalIgnoreCase)) - { - Pop(); // we're done! - this.m_state = State.Markup; - goto case State.Markup; - } - Pop(); // close one element - foundnode = true;// return another end element. - break; - case State.Markup: - if (this.m_node.IsEmpty) - { - Pop(); - } - foundnode = ParseMarkup(); - break; - case State.PartialTag: - Pop(); // remove text node. - this.m_state = State.Markup; - foundnode = ParseTag(this.m_partial); - break; - case State.PseudoStartTag: - foundnode = ParseStartTag('<'); - break; - case State.AutoClose: - Pop(); // close next node. - if (this.m_stack.Count <= this.m_poptodepth) - { - this.m_state = State.Markup; - if (this.m_newnode != null) - { - Push(this.m_newnode); // now we're ready to start the new node. - this.m_newnode = null; - this.m_state = State.Markup; - } - else if (this.m_node.NodeType == XmlNodeType.Document) - { - this.m_state = State.Eof; - goto case State.Eof; - } - } - foundnode = true; - break; - case State.CData: - foundnode = ParseCData(); - break; - case State.Attr: - goto case State.AttrValue; - case State.AttrValue: - this.m_state = State.Markup; - goto case State.Markup; - case State.Text: - Pop(); - goto case State.Markup; - case State.PartialText: - if (ParseText(this.m_current.Lastchar, false)) - { - this.m_node.NodeType = XmlNodeType.Whitespace; - } - - foundnode = true; - break; - } - - if (foundnode && this.m_node.NodeType == XmlNodeType.Whitespace && this.m_whitespaceHandling == WhitespaceHandling.None) - { - // strip out whitespace (caller is probably pretty printing the XML). - foundnode = false; - } - if (!foundnode && this.m_state == State.Eof && this.m_stack.Count > 1) - { - this.m_poptodepth = 1; - this.m_state = State.AutoClose; - this.m_node = Top(); - return true; - } - } - if (!m_foundRoot && (this.NodeType == XmlNodeType.Element || - this.NodeType == XmlNodeType.Text || - this.NodeType == XmlNodeType.CDATA)) - { - m_foundRoot = true; - if (this.IsHtml && (this.NodeType != XmlNodeType.Element || - !string.Equals(this.LocalName, "html", StringComparison.OrdinalIgnoreCase))) - { - // Simulate an HTML root element! - this.m_node.CurrentState = this.m_state; - Node root = Push("html", XmlNodeType.Element, null); - SwapTopNodes(); // make html the outer element. - this.m_node = root; - root.Simulated = true; - root.IsEmpty = false; - this.m_state = State.Markup; - //this.state = State.PseudoStartTag; - //this.startTag = name; - } - - return true; - } - - return true; - } - - private bool ParseMarkup() - { - char ch = this.m_current.Lastchar; - if (ch == '<') - { - ch = this.m_current.ReadChar(); - return ParseTag(ch); - } - else if (ch != Entity.EOF) - { - if (this.m_node.DtdType != null && this.m_node.DtdType.ContentModel.DeclaredContent == DeclaredContent.CDATA) - { - // e.g. SCRIPT or STYLE tags which contain unparsed character data. - this.m_partial = '\0'; - this.m_state = State.CData; - return false; - } - else if (ParseText(ch, true)) - { - this.m_node.NodeType = XmlNodeType.Whitespace; - } - - return true; - } - - this.m_state = State.Eof; - return false; - } - - private const string declterm = " \t\r\n><"; - private bool ParseTag(char ch) - { - if (ch == '%') - { - return ParseAspNet(); - } - else if (ch == '!') - { - ch = this.m_current.ReadChar(); - if (ch == '-') - { - return ParseComment(); - } - else if (ch == '[') - { - return ParseConditionalBlock(); - } - else if (ch != '_' && !char.IsLetter(ch)) - { - // perhaps it's one of those nasty office document hacks like '' - string value = this.m_current.ScanToEnd(this.m_sb, "Recovering", ">"); // skip it - Log("Ignoring invalid markup '"); - return false; - } - else - { - string name = this.m_current.ScanToken(this.m_sb, SgmlReader.declterm, false); - if (string.Equals(name, "DOCTYPE", StringComparison.OrdinalIgnoreCase)) - { - ParseDocType(); - - // In SGML DOCTYPE SYSTEM attribute is optional, but in XML it is required, - // therefore if there is no SYSTEM literal then add an empty one. - if (this.GetAttribute("SYSTEM") == null && this.GetAttribute("PUBLIC") != null) - { - this.m_node.AddAttribute("SYSTEM", "", '"', this.m_folding == CaseFolding.None); - } - - if (m_stripDocType) - { - return false; - } - else - { - this.m_node.NodeType = XmlNodeType.DocumentType; - return true; - } - } - else - { - Log("Invalid declaration '"); // skip it - return false; - } - } - } - else if (ch == '?') - { - this.m_current.ReadChar();// consume the '?' character. - return ParsePI(); - } - else if (ch == '/') - { - return ParseEndTag(); - } - else - { - return ParseStartTag(ch); - } - } - - private string ScanName(string terminators) - { - string name = this.m_current.ScanToken(this.m_sb, terminators, false); - switch (this.m_folding) - { - case CaseFolding.ToUpper: - name = name.ToUpperInvariant(); - break; - case CaseFolding.ToLower: - name = name.ToLowerInvariant(); - break; - } - return name; - } - - private static bool VerifyName(string name) - { - try - { - XmlConvert.VerifyName(name); - return true; - } - catch (XmlException) - { - return false; - } - } - - private const string tagterm = " \t\r\n=/><"; - private const string aterm = " \t\r\n='\"/>"; - private const string avterm = " \t\r\n>"; - private bool ParseStartTag(char ch) - { - string name = null; - if (m_state != State.PseudoStartTag) - { - if (SgmlReader.tagterm.IndexOf(ch) >= 0) - { - this.m_sb.Length = 0; - this.m_sb.Append('<'); - this.m_state = State.PartialText; - return false; - } - - name = ScanName(SgmlReader.tagterm); - } - else - { - // TODO: Changes by mindtouch mean that this.startTag is never non-null. The effects of this need checking. - - //name = this.startTag; - m_state = State.Markup; - } - - Node n = Push(name, XmlNodeType.Element, null); - n.IsEmpty = false; - Validate(n); - ch = this.m_current.SkipWhitespace(); - while (ch != Entity.EOF && ch != '>') - { - if (ch == '/') - { - n.IsEmpty = true; - ch = this.m_current.ReadChar(); - if (ch != '>') - { - Log("Expected empty start tag '/>' sequence instead of '{0}'", ch); - this.m_current.ScanToEnd(null, "Recovering", ">"); - return false; - } - break; - } - else if (ch == '<') - { - Log("Start tag '{0}' is missing '>'", name); - break; - } - - string aname = ScanName(SgmlReader.aterm); - ch = this.m_current.SkipWhitespace(); - if (string.Equals(aname, ",", StringComparison.OrdinalIgnoreCase) || - string.Equals(aname, "=", StringComparison.OrdinalIgnoreCase) || - string.Equals(aname, ":", StringComparison.OrdinalIgnoreCase) || - string.Equals(aname, ";", StringComparison.OrdinalIgnoreCase)) - { - continue; - } - - string value = null; - char quote = '\0'; - if (ch == '=' || ch == '"' || ch == '\'') - { - if (ch == '=' ) - { - this.m_current.ReadChar(); - ch = this.m_current.SkipWhitespace(); - } - - if (ch == '\'' || ch == '\"') - { - quote = ch; - value = ScanLiteral(this.m_sb, ch); - } - else if (ch != '>') - { - string term = SgmlReader.avterm; - value = this.m_current.ScanToken(this.m_sb, term, false); - } - } - - if (ValidAttributeName(aname)) - { - Attribute a = n.AddAttribute(aname, value ?? aname, quote, this.m_folding == CaseFolding.None); - if (a == null) - { - Log("Duplicate attribute '{0}' ignored", aname); - } - else - { - ValidateAttribute(n, a); - } - } - - ch = this.m_current.SkipWhitespace(); - } - - if (ch == Entity.EOF) - { - this.m_current.Error("Unexpected EOF parsing start tag '{0}'", name); - } - else if (ch == '>') - { - this.m_current.ReadChar(); // consume '>' - } - - if (this.Depth == 1) - { - if (this.m_rootCount == 1) - { - // Hmmm, we found another root level tag, soooo, the only - // thing we can do to keep this a valid XML document is stop - this.m_state = State.Eof; - return false; - } - this.m_rootCount++; - } - - ValidateContent(n); - return true; - } - - private bool ParseEndTag() - { - this.m_state = State.EndTag; - this.m_current.ReadChar(); // consume '/' char. - string name = this.ScanName(SgmlReader.tagterm); - char ch = this.m_current.SkipWhitespace(); - if (ch != '>') - { - Log("Expected empty start tag '/>' sequence instead of '{0}'", ch); - this.m_current.ScanToEnd(null, "Recovering", ">"); - } - - this.m_current.ReadChar(); // consume '>' - - this.m_endTag = name; - - // Make sure there's a matching start tag for it. - bool caseInsensitive = (this.m_folding == CaseFolding.None); - this.m_node = (Node)this.m_stack[this.m_stack.Count - 1]; - for (int i = this.m_stack.Count - 1; i > 0; i--) - { - Node n = (Node)this.m_stack[i]; - if (string.Equals(n.Name, name, caseInsensitive ? StringComparison.OrdinalIgnoreCase : StringComparison.Ordinal)) - { - this.m_endTag = n.Name; - return true; - } - } - - Log("No matching start tag for ''", name); - this.m_state = State.Markup; - return false; - } - - private bool ParseAspNet() - { - string value = "<%" + this.m_current.ScanToEnd(this.m_sb, "AspNet", "%>") + "%>"; - Push(null, XmlNodeType.CDATA, value); - return true; - } - - private bool ParseComment() - { - char ch = this.m_current.ReadChar(); - if (ch != '-') - { - Log("Expecting comment '"); - - // Make sure it's a valid comment! - int i = value.IndexOf("--"); - - while (i >= 0) - { - int j = i + 2; - while (j < value.Length && value[j] == '-') - j++; - - if (i > 0) - { - value = value.Substring(0, i - 1) + "-" + value.Substring(j); - } - else - { - value = "-" + value.Substring(j); - } - - i = value.IndexOf("--"); - } - - if (value.Length > 0 && value[value.Length - 1] == '-') - { - value += " "; // '-' cannot be last character - } - - Push(null, XmlNodeType.Comment, value); - return true; - } - - private const string cdataterm = "\t\r\n[]<>"; - private bool ParseConditionalBlock() - { - char ch = m_current.ReadChar(); // skip '[' - ch = m_current.SkipWhitespace(); - string name = m_current.ScanToken(m_sb, cdataterm, false); - if (name.StartsWith("if ")) - { - // 'downlevel-revealed' comment (another atrocity of the IE team) - m_current.ScanToEnd(null, "CDATA", ">"); - return false; - } - else if (!string.Equals(name, "CDATA", StringComparison.OrdinalIgnoreCase)) - { - Log("Expecting CDATA but found '{0}'", name); - m_current.ScanToEnd(null, "CDATA", ">"); - return false; - } - else - { - ch = m_current.SkipWhitespace(); - if (ch != '[') - { - Log("Expecting '[' but found '{0}'", ch); - m_current.ScanToEnd(null, "CDATA", ">"); - return false; - } - - string value = m_current.ScanToEnd(m_sb, "CDATA", "]]>"); - - Push(null, XmlNodeType.CDATA, value); - return true; - } - } - - private const string dtterm = " \t\r\n>"; - private void ParseDocType() - { - char ch = this.m_current.SkipWhitespace(); - string name = this.ScanName(SgmlReader.dtterm); - Push(name, XmlNodeType.DocumentType, null); - ch = this.m_current.SkipWhitespace(); - if (ch != '>') - { - string subset = ""; - string pubid = ""; - string syslit = ""; - - if (ch != '[') - { - string token = this.m_current.ScanToken(this.m_sb, SgmlReader.dtterm, false); - if (string.Equals(token, "PUBLIC", StringComparison.OrdinalIgnoreCase)) - { - ch = this.m_current.SkipWhitespace(); - if (ch == '\"' || ch == '\'') - { - pubid = this.m_current.ScanLiteral(this.m_sb, ch); - this.m_node.AddAttribute(token, pubid, ch, this.m_folding == CaseFolding.None); - } - } - else if (!string.Equals(token, "SYSTEM", StringComparison.OrdinalIgnoreCase)) - { - Log("Unexpected token in DOCTYPE '{0}'", token); - this.m_current.ScanToEnd(null, "DOCTYPE", ">"); - } - ch = this.m_current.SkipWhitespace(); - if (ch == '\"' || ch == '\'') - { - token = "SYSTEM"; - syslit = this.m_current.ScanLiteral(this.m_sb, ch); - this.m_node.AddAttribute(token, syslit, ch, this.m_folding == CaseFolding.None); - } - ch = this.m_current.SkipWhitespace(); - } - - if (ch == '[') - { - subset = this.m_current.ScanToEnd(this.m_sb, "Internal Subset", "]"); - this.m_node.Value = subset; - } - - ch = this.m_current.SkipWhitespace(); - if (ch != '>') - { - Log("Expecting end of DOCTYPE tag, but found '{0}'", ch); - this.m_current.ScanToEnd(null, "DOCTYPE", ">"); - } - - if (this.m_dtd != null && !string.Equals(this.m_dtd.Name, name, StringComparison.OrdinalIgnoreCase)) - { - throw new InvalidOperationException("DTD does not match document type"); - } - - this.m_docType = name; - this.m_pubid = pubid; - this.m_syslit = syslit; - this.m_subset = subset; - LazyLoadDtd(this.m_current.ResolvedUri); - } - - this.m_current.ReadChar(); - } - - private const string piterm = " \t\r\n?"; - private bool ParsePI() - { - string name = this.m_current.ScanToken(this.m_sb, SgmlReader.piterm, false); - string value = null; - if (this.m_current.Lastchar != '?') - { - // Notice this is not "?>". This is because Office generates bogus PI's that end with "/>". - value = this.m_current.ScanToEnd(this.m_sb, "Processing Instruction", ">"); - value = value.TrimEnd('/'); - } - else - { - // error recovery. - value = this.m_current.ScanToEnd(this.m_sb, "Processing Instruction", ">"); - } - - // check if the name has a prefix; if so, ignore it - int colon = name.IndexOf(':'); - if(colon > 0) { - name = name.Substring(colon + 1); - } - - // skip xml declarations, since these are generated in the output instead. - if (!string.Equals(name, "xml", StringComparison.OrdinalIgnoreCase)) - { - Push(name, XmlNodeType.ProcessingInstruction, value); - return true; - } - - return false; - } - - private bool ParseText(char ch, bool newtext) - { - bool ws = !newtext || this.m_current.IsWhitespace; - if (newtext) - this.m_sb.Length = 0; - - //this.sb.Append(ch); - //ch = this.current.ReadChar(); - this.m_state = State.Text; - while (ch != Entity.EOF) - { - if (ch == '<') - { - ch = this.m_current.ReadChar(); - if (ch == '/' || ch == '!' || ch == '?' || char.IsLetter(ch)) - { - // Hit a tag, so return XmlNodeType.Text token - // and remember we partially started a new tag. - this.m_state = State.PartialTag; - this.m_partial = ch; - break; - } - else - { - // not a tag, so just proceed. - this.m_sb.Append('<'); - this.m_sb.Append(ch); - ws = false; - ch = this.m_current.ReadChar(); - } - } - else if (ch == '&') - { - ExpandEntity(this.m_sb, '<'); - ws = false; - ch = this.m_current.Lastchar; - } - else - { - if (!this.m_current.IsWhitespace) - ws = false; - this.m_sb.Append(ch); - ch = this.m_current.ReadChar(); - } - } - - string value = this.m_sb.ToString(); - Push(null, XmlNodeType.Text, value); - return ws; - } - - /// - /// Consumes and returns a literal block of text, expanding entities as it does so. - /// - /// The string builder to use. - /// The delimiter for the literal. - /// The consumed literal. - /// - /// This version is slightly different from in that - /// it also expands entities. - /// - private string ScanLiteral(StringBuilder sb, char quote) - { - sb.Length = 0; - char ch = this.m_current.ReadChar(); - while (ch != Entity.EOF && ch != quote && ch != '>') - { - if (ch == '&') - { - ExpandEntity(sb, quote); - ch = this.m_current.Lastchar; - } - else - { - sb.Append(ch); - ch = this.m_current.ReadChar(); - } - } - if(ch == quote) { - this.m_current.ReadChar(); // consume end quote. - } - return sb.ToString(); - } - - private bool ParseCData() - { - // Like ParseText(), only it doesn't allow elements in the content. - // It allows comments and processing instructions and text only and - // text is not returned as text but CDATA (since it may contain angle brackets). - // And initial whitespace is ignored. It terminates when we hit the - // end tag for the current CDATA node (e.g. ). - bool ws = this.m_current.IsWhitespace; - this.m_sb.Length = 0; - char ch = this.m_current.Lastchar; - if (this.m_partial != '\0') - { - Pop(); // pop the CDATA - switch (this.m_partial) - { - case '!': - this.m_partial = ' '; // and pop the comment next time around - return ParseComment(); - case '?': - this.m_partial = ' '; // and pop the PI next time around - return ParsePI(); - case '/': - this.m_state = State.EndTag; - return true; // we are done! - case ' ': - break; // means we just needed to pop the Comment, PI or CDATA. - } - } - - // if this.partial == '!' then parse the comment and return - // if this.partial == '?' then parse the processing instruction and return. - while (ch != Entity.EOF) - { - if (ch == '<') - { - ch = this.m_current.ReadChar(); - if (ch == '!') - { - ch = this.m_current.ReadChar(); - if (ch == '-') - { - // return what CDATA we have accumulated so far - // then parse the comment and return to here. - if (ws) - { - this.m_partial = ' '; // pop comment next time through - return ParseComment(); - } - else - { - // return what we've accumulated so far then come - // back in and parse the comment. - this.m_partial = '!'; - break; - } -#if FIX - } else if (ch == '['){ - // We are about to wrap this node as a CDATA block because of it's - // type in the DTD, but since we found a CDATA block in the input - // we have to parse it as a CDATA block, otherwise we will attempt - // to output nested CDATA blocks which of course is illegal. - if (this.ParseConditionalBlock()){ - this.partial = ' '; - return true; - } -#endif - } - else - { - // not a comment, so ignore it and continue on. - this.m_sb.Append('<'); - this.m_sb.Append('!'); - this.m_sb.Append(ch); - ws = false; - } - } - else if (ch == '?') - { - // processing instruction. - this.m_current.ReadChar();// consume the '?' character. - if (ws) - { - this.m_partial = ' '; // pop PI next time through - return ParsePI(); - } - else - { - this.m_partial = '?'; - break; - } - } - else if (ch == '/') - { - // see if this is the end tag for this CDATA node. - string temp = this.m_sb.ToString(); - if (ParseEndTag() && string.Equals(this.m_endTag, this.m_node.Name, StringComparison.OrdinalIgnoreCase)) - { - if (ws || string.IsNullOrEmpty(temp)) - { - // we are done! - return true; - } - else - { - // return CDATA text then the end tag - this.m_partial = '/'; - this.m_sb.Length = 0; // restore buffer! - this.m_sb.Append(temp); - this.m_state = State.CData; - break; - } - } - else - { - // wrong end tag, so continue on. - this.m_sb.Length = 0; // restore buffer! - this.m_sb.Append(temp); - this.m_sb.Append(""); - ws = false; - - // NOTE (steveb): we have one character in the buffer that we need to process next - ch = this.m_current.Lastchar; - continue; - } - } - else - { - // must be just part of the CDATA block, so proceed. - this.m_sb.Append('<'); - this.m_sb.Append(ch); - ws = false; - } - } - else - { - if (!this.m_current.IsWhitespace && ws) - ws = false; - this.m_sb.Append(ch); - } - - ch = this.m_current.ReadChar(); - } - - // NOTE (steveb): check if we reached EOF, which means it's over - if(ch == Entity.EOF) { - this.m_state = State.Eof; - return false; - } - - string value = this.m_sb.ToString(); - - // NOTE (steveb): replace any nested CDATA sections endings - value = value.Replace("", string.Empty); - value = value.Replace("/**/", string.Empty); - - Push(null, XmlNodeType.CDATA, value); - if (this.m_partial == '\0') - this.m_partial = ' ';// force it to pop this CDATA next time in. - - return true; - } - - private void ExpandEntity(StringBuilder sb, char terminator) - { - char ch = this.m_current.ReadChar(); - if (ch == '#') - { - string charent = this.m_current.ExpandCharEntity(); - sb.Append(charent); - ch = this.m_current.Lastchar; - } - else - { - this.m_name.Length = 0; - while (ch != Entity.EOF && - (char.IsLetter(ch) || ch == '_' || ch == '-') || ((this.m_name.Length > 0) && char.IsDigit(ch))) - { - this.m_name.Append(ch); - ch = this.m_current.ReadChar(); - } - string name = this.m_name.ToString(); - - // TODO (steveb): don't lookup amp, gt, lt, quote - switch(name) { - case "amp": - sb.Append("&"); - if(ch != terminator && ch != '&' && ch != Entity.EOF) - ch = this.m_current.ReadChar(); - return; - case "lt": - sb.Append("<"); - if(ch != terminator && ch != '&' && ch != Entity.EOF) - ch = this.m_current.ReadChar(); - return; - case "gt": - sb.Append(">"); - if(ch != terminator && ch != '&' && ch != Entity.EOF) - ch = this.m_current.ReadChar(); - return; - case "quot": - sb.Append("\""); - if(ch != terminator && ch != '&' && ch != Entity.EOF) - ch = this.m_current.ReadChar(); - return; - case "apos": - sb.Append("'"); - if(ch != terminator && ch != '&' && ch != Entity.EOF) - ch = this.m_current.ReadChar(); - return; - } - - if (this.m_dtd != null && !string.IsNullOrEmpty(name)) - { - Entity e = (Entity)this.m_dtd.FindEntity(name); - if (e != null) - { - if (e.IsInternal) - { - sb.Append(e.Literal); - if (ch != terminator && ch != '&' && ch != Entity.EOF) - ch = this.m_current.ReadChar(); - - return; - } - else - { - Entity ex = new Entity(name, e.PublicId, e.Uri, this.m_current.Proxy); - e.Open(this.m_current, new Uri(e.Uri)); - this.m_current = ex; - this.m_current.ReadChar(); - return; - } - } - else - { - Log("Undefined entity '{0}'", name); - } - } - // Entity is not defined, so just keep it in with the rest of the - // text. - sb.Append("&"); - sb.Append(name); - if(ch != terminator && ch != '&' && ch != Entity.EOF) - { - sb.Append(ch); - ch = this.m_current.ReadChar(); - } - } - } - - /// - /// Gets a value indicating whether the reader is positioned at the end of the stream. - /// - /// true if the reader is positioned at the end of the stream; otherwise, false. - public override bool EOF - { - get - { - return this.m_state == State.Eof; - } - } - - /// - /// Changes the to Closed. - /// - public override void Close() - { - if (this.m_current != null) - { - this.m_current.Close(); - this.m_current = null; - } - - if (this.m_log != null) - { - this.m_log.Close(); - this.m_log = null; - } - } - - /// - /// Gets the state of the reader. - /// - /// One of the ReadState values. - public override ReadState ReadState - { - get - { - if (this.m_state == State.Initial) - return ReadState.Initial; - else if (this.m_state == State.Eof) - return ReadState.EndOfFile; - else - return ReadState.Interactive; - } - } - - /// - /// Reads the contents of an element or text node as a string. - /// - /// The contents of the element or an empty string. - public override string ReadString() - { - if (this.m_node.NodeType == XmlNodeType.Element) - { - this.m_sb.Length = 0; - while (Read()) - { - switch (this.NodeType) - { - case XmlNodeType.CDATA: - case XmlNodeType.SignificantWhitespace: - case XmlNodeType.Whitespace: - case XmlNodeType.Text: - this.m_sb.Append(this.m_node.Value); - break; - default: - return this.m_sb.ToString(); - } - } - - return this.m_sb.ToString(); - } - - return this.m_node.Value; - } - - /// - /// Reads all the content, including markup, as a string. - /// - /// - /// All the XML content, including markup, in the current node. If the current node has no children, - /// an empty string is returned. If the current node is neither an element nor attribute, an empty - /// string is returned. - /// - public override string ReadInnerXml() - { - StringWriter sw = new StringWriter(CultureInfo.InvariantCulture); - XmlTextWriter xw = new XmlTextWriter(sw); - xw.Formatting = Formatting.Indented; - switch (this.NodeType) - { - case XmlNodeType.Element: - Read(); - while (!this.EOF && this.NodeType != XmlNodeType.EndElement) - { - xw.WriteNode(this, true); - } - Read(); // consume the end tag - break; - case XmlNodeType.Attribute: - sw.Write(this.Value); - break; - default: - // return empty string according to XmlReader spec. - break; - } - - xw.Close(); - return sw.ToString(); - } - - /// - /// Reads the content, including markup, representing this node and all its children. - /// - /// - /// If the reader is positioned on an element or an attribute node, this method returns all the XML content, including markup, of the current node and all its children; otherwise, it returns an empty string. - /// - public override string ReadOuterXml() - { - StringWriter sw = new StringWriter(CultureInfo.InvariantCulture); - XmlTextWriter xw = new XmlTextWriter(sw); - xw.Formatting = Formatting.Indented; - xw.WriteNode(this, true); - xw.Close(); - return sw.ToString(); - } - - /// - /// Gets the XmlNameTable associated with this implementation. - /// - /// The XmlNameTable enabling you to get the atomized version of a string within the node. - public override XmlNameTable NameTable - { - get - { - return null; - } - } - - /// - /// Resolves a namespace prefix in the current element's scope. - /// - /// The prefix whose namespace URI you want to resolve. To match the default namespace, pass an empty string. - /// The namespace URI to which the prefix maps or a null reference (Nothing in Visual Basic) if no matching prefix is found. - public override string LookupNamespace(string prefix) - { - return null; // there are no namespaces in SGML. - } - - /// - /// Resolves the entity reference for EntityReference nodes. - /// - /// SgmlReader does not resolve or return entities. - public override void ResolveEntity() - { - // We never return any entity reference nodes, so this should never be called. - throw new InvalidOperationException("Not on an entity reference."); - } - - /// - /// Parses the attribute value into one or more Text, EntityReference, or EndEntity nodes. - /// - /// - /// true if there are nodes to return. false if the reader is not positioned on an attribute node when the initial call is made or if all the - /// attribute values have been read. An empty attribute, such as, misc="", returns true with a single node with a value of string.Empty. - /// - public override bool ReadAttributeValue() - { - if (this.m_state == State.Attr) - { - this.m_state = State.AttrValue; - return true; - } - else if (this.m_state == State.AttrValue) - { - return false; - } - else - throw new InvalidOperationException("Not on an attribute."); - } - - private void Validate(Node node) - { - if (this.m_dtd != null) - { - ElementDecl e = this.m_dtd.FindElement(node.Name); - if (e != null) - { - node.DtdType = e; - if (e.ContentModel.DeclaredContent == DeclaredContent.EMPTY) - node.IsEmpty = true; - } - } - } - - private static void ValidateAttribute(Node node, Attribute a) - { - ElementDecl e = node.DtdType; - if (e != null) - { - AttDef ad = e.FindAttribute(a.Name); - if (ad != null) - { - a.DtdType = ad; - } - } - } - - private static bool ValidAttributeName(string name) - { - try - { - XmlConvert.VerifyNMTOKEN(name); - int index = name.IndexOf(':'); - if (index >= 0) - { - XmlConvert.VerifyNCName(name.Substring(index + 1)); - } - - return true; - } - catch (XmlException) - { - return false; - } - catch (ArgumentNullException) - { - // (steveb) this is probably a bug in XmlConvert.VerifyNCName when passing in an empty string - return false; - } - } - - private void ValidateContent(Node node) - { - if (node.NodeType == XmlNodeType.Element) - { - if (!VerifyName(node.Name)) - { - Pop(); - Push(null, XmlNodeType.Text, "<" + node.Name + ">"); - return; - } - } - - if (this.m_dtd != null) - { - // See if this element is allowed inside the current element. - // If it isn't, then auto-close elements until we find one - // that it is allowed to be in. - string name = node.Name.ToUpperInvariant(); // DTD is in upper case - int i = 0; - int top = this.m_stack.Count - 2; - if (node.DtdType != null) { - // it is a known element, let's see if it's allowed in the - // current context. - for (i = top; i > 0; i--) - { - Node n = (Node)this.m_stack[i]; - if (n.IsEmpty) - continue; // we'll have to pop this one - ElementDecl f = n.DtdType; - if (f != null) - { - if ((i == 2) && string.Equals(f.Name, "BODY", StringComparison.OrdinalIgnoreCase)) // NOTE (steveb): never close the BODY tag too early - break; - else if (string.Equals(f.Name, this.m_dtd.Name, StringComparison.OrdinalIgnoreCase)) - break; // can't pop the root element. - else if (f.CanContain(name, this.m_dtd)) - { - break; - } - else if (!f.EndTagOptional) - { - // If the end tag is not optional then we can't - // auto-close it. We'll just have to live with the - // junk we've found and move on. - break; - } - } - else - { - // Since we don't understand this tag anyway, - // we might as well allow this content! - break; - } - } - } - - if (i == 0) - { - // Tag was not found or is not allowed anywhere, ignore it and - // continue on. - return; - } - else if (i < top) - { - Node n = (Node)this.m_stack[top]; - if (i == top - 1 && string.Equals(name, n.Name, StringComparison.OrdinalIgnoreCase)) - { - // e.g. p not allowed inside p, not an interesting error. - } - else - { -#if DEBUG - string closing = ""; - for (int k = top; k >= i+1; k--) { - if (closing != "") closing += ","; - Node n2 = (Node)this.m_stack[k]; - closing += "<" + n2.Name + ">"; - } - Log("Element '{0}' not allowed inside '{1}', closing {2}.", name, n.Name, closing); -#endif - } - - this.m_state = State.AutoClose; - this.m_newnode = node; - Pop(); // save this new node until we pop the others - this.m_poptodepth = i + 1; - } - } - } - } +/* + * + * An XmlReader implementation for loading SGML (including HTML) converting it + * to well formed XML, by adding missing quotes, empty attribute values, ignoring + * duplicate attributes, case folding on tag names, adding missing closing tags + * based on SGML DTD information, and so on. + * + * Copyright (c) 2002 Microsoft Corporation. All rights reserved. (Chris Lovett) + * + */ + +/* + * + * Copyright (c) 2007-2013 MindTouch. All rights reserved. + * www.mindtouch.com oss@mindtouch.com + * + * For community documentation and downloads visit wiki.developer.mindtouch.com; + * please review the licensing section. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +using System; +using System.Collections.Generic; +using System.Diagnostics.CodeAnalysis; +using System.Globalization; +using System.IO; +using System.Reflection; +using System.Text; +using System.Xml; + +namespace SgmlCore +{ + /// + /// SGML is case insensitive, so here you can choose between converting + /// to lower case or upper case tags. "None" means that the case is left + /// alone, except that end tags will be folded to match the start tags. + /// + public enum CaseFolding + { + /// + /// Do not convert case, except for converting end tags to match start tags. + /// + None, + + /// + /// Convert tags to upper case. + /// + ToUpper, + + /// + /// Convert tags to lower case. + /// + ToLower + } + + /// + /// This stack maintains a high water mark for allocated objects so the client + /// can reuse the objects in the stack to reduce memory allocations, this is + /// used to maintain current state of the parser for element stack, and attributes + /// in each element. + /// + internal class HWStack + { + private object[] m_items; + private int m_size; + private int m_count; + private int m_growth; + + /// + /// Initialises a new instance of the HWStack class. + /// + /// The amount to grow the stack space by, if more space is needed on the stack. + public HWStack(int growth) + { + this.m_growth = growth; + } + + /// + /// The number of items currently in the stack. + /// + public int Count + { + get + { + return this.m_count; + } + set + { + this.m_count = value; + } + } + + /// + /// The size (capacity) of the stack. + /// + [SuppressMessage("Microsoft.Performance", "CA1811", Justification = "Kept for potential future usage.")] + public int Size + { + get + { + return this.m_size; + } + } + + /// + /// Returns the item at the requested index or null if index is out of bounds + /// + /// The index of the item to retrieve. + /// The item at the requested index or null if index is out of bounds. + public object this[int i] + { + get + { + return (i >= 0 && i < this.m_size) ? m_items[i] : null; + } + set + { + this.m_items[i] = value; + } + } + + /// + /// Removes and returns the item at the top of the stack + /// + /// The item at the top of the stack. + public object Pop() + { + this.m_count--; + if (this.m_count > 0) + { + return m_items[this.m_count - 1]; + } + + return null; + } + + /// + /// Pushes a new slot at the top of the stack. + /// + /// The object at the top of the stack. + /// + /// This method tries to reuse a slot, if it returns null then + /// the user has to call the other Push method. + /// + public object Push() + { + if (this.m_count == this.m_size) + { + int newsize = this.m_size + this.m_growth; + object[] newarray = new object[newsize]; + if (this.m_items != null) + Array.Copy(this.m_items, newarray, this.m_size); + + this.m_size = newsize; + this.m_items = newarray; + } + return m_items[this.m_count++]; + } + + /// + /// Remove a specific item from the stack. + /// + /// The index of the item to remove. + [SuppressMessage("Microsoft.Performance", "CA1811", Justification = "Kept for potential future usage.")] + public void RemoveAt(int i) + { + this.m_items[i] = null; + Array.Copy(this.m_items, i + 1, this.m_items, i, this.m_count - i - 1); + this.m_count--; + } + } + + /// + /// This class represents an attribute. The AttDef is assigned + /// from a validation process, and is used to provide default values. + /// + internal class Attribute + { + internal string Name; // the atomized name. + internal AttDef DtdType; // the AttDef of the attribute from the SGML DTD. + internal char QuoteChar; // the quote character used for the attribute value. + private string m_literalValue; // the attribute value + + /// + /// Attribute objects are reused during parsing to reduce memory allocations, + /// hence the Reset method. + /// + public void Reset(string name, string value, char quote) + { + this.Name = name; + this.m_literalValue = value; + this.QuoteChar = quote; + this.DtdType = null; + } + + public string Value + { + get + { + if (this.m_literalValue != null) + return this.m_literalValue; + if (this.DtdType != null) + return this.DtdType.Default; + return null; + } +/* set + { + this.m_literalValue = value; + }*/ + } + + public bool IsDefault + { + get + { + return (this.m_literalValue == null); + } + } + } + + /// + /// This class models an XML node, an array of elements in scope is maintained while parsing + /// for validation purposes, and these Node objects are reused to reduce object allocation, + /// hence the reset method. + /// + internal class Node + { + internal XmlNodeType NodeType; + internal string Value; + internal XmlSpace Space; + internal string XmlLang; + internal bool IsEmpty; + internal string Name; + internal ElementDecl DtdType; // the DTD type found via validation + internal State CurrentState; + internal bool Simulated; // tag was injected into result stream. + HWStack attributes = new HWStack(10); + + /// + /// Attribute objects are reused during parsing to reduce memory allocations, + /// hence the Reset method. + /// + public void Reset(string name, XmlNodeType nt, string value) { + this.Value = value; + this.Name = name; + this.NodeType = nt; + this.Space = XmlSpace.None; + this.XmlLang= null; + this.IsEmpty = true; + this.attributes.Count = 0; + this.DtdType = null; + } + + public Attribute AddAttribute(string name, string value, char quotechar, bool caseInsensitive) { + Attribute a; + // check for duplicates! + for (int i = 0, n = this.attributes.Count; i < n; i++) { + a = (Attribute)this.attributes[i]; + if (string.Equals(a.Name, name, caseInsensitive ? StringComparison.OrdinalIgnoreCase : StringComparison.Ordinal)) + { + return null; + } + } + // This code makes use of the high water mark for attribute objects, + // and reuses exisint Attribute objects to avoid memory allocation. + a = (Attribute)this.attributes.Push(); + if (a == null) { + a = new Attribute(); + this.attributes[this.attributes.Count-1] = a; + } + a.Reset(name, value, quotechar); + return a; + } + + [SuppressMessage("Microsoft.Performance", "CA1811", Justification = "Kept for potential future usage.")] + public void RemoveAttribute(string name) + { + for (int i = 0, n = this.attributes.Count; i < n; i++) + { + Attribute a = (Attribute)this.attributes[i]; + if (string.Equals(a.Name, name, StringComparison.OrdinalIgnoreCase)) + { + this.attributes.RemoveAt(i); + return; + } + } + } + public void CopyAttributes(Node n) { + for (int i = 0, len = n.attributes.Count; i < len; i++) { + Attribute a = (Attribute)n.attributes[i]; + Attribute na = this.AddAttribute(a.Name, a.Value, a.QuoteChar, false); + na.DtdType = a.DtdType; + } + } + + public int AttributeCount { + get { + return this.attributes.Count; + } + } + + public int GetAttribute(string name) { + for (int i = 0, n = this.attributes.Count; i < n; i++) { + Attribute a = (Attribute)this.attributes[i]; + if (string.Equals(a.Name, name, StringComparison.OrdinalIgnoreCase)) { + return i; + } + } + return -1; + } + + public Attribute GetAttribute(int i) { + if (i>=0 && i where we have special parsing rules. + PartialText, + PseudoStartTag, // we pushed a pseudo-start tag, need to continue with previous start tag. + Eof + } + + + /// + /// SgmlReader is an XmlReader API over any SGML document (including built in + /// support for HTML). + /// + public class SgmlReader : XmlReader + { + /// + /// The value returned when a namespace is queried and none has been specified. + /// + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1705", Justification = "SgmlReader's standards for constants are different to Microsoft's and in line with older C++ style constants naming conventions. Visually, constants using this style are more easily identifiable as such.")] + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1707", Justification = "SgmlReader's standards for constants are different to Microsoft's and in line with older C++ style constants naming conventions. Visually, constants using this style are more easily identifiable as such.")] + public const string UNDEFINED_NAMESPACE = "#unknown"; + + private SgmlDtd m_dtd; + private Entity m_current; + private State m_state; + private char m_partial; + private string m_endTag; + private HWStack m_stack; + private Node m_node; // current node (except for attributes) + // Attributes are handled separately using these members. + private Attribute m_a; + private int m_apos; // which attribute are we positioned on in the collection. + private Uri m_baseUri; + private StringBuilder m_sb; + private StringBuilder m_name; + private TextWriter m_log; + private bool m_foundRoot; + private bool m_ignoreDtd; + + // autoclose support + private Node m_newnode; + private int m_poptodepth; + private int m_rootCount; + private bool m_isHtml; + private string m_rootElementName; + + private string m_href; + private string m_errorLogFile; + private Entity m_lastError; + private string m_proxy; + private TextReader m_inputStream; + private string m_syslit; + private string m_pubid; + private string m_subset; + private string m_docType; + private WhitespaceHandling m_whitespaceHandling; + private CaseFolding m_folding = CaseFolding.None; + private bool m_stripDocType = true; + //private string m_startTag; + private Dictionary unknownNamespaces = new Dictionary(); + + /// + /// Initialises a new instance of the SgmlReader class. + /// + public SgmlReader() { + Init(); + } + + /// + /// Initialises a new instance of the SgmlReader class with an existing , which is NOT used. + /// + /// The nametable to use. + public SgmlReader(XmlNameTable nt) { + Init(); + } + + /// + /// Specify the SgmlDtd object directly. This allows you to cache the Dtd and share + /// it across multipl SgmlReaders. To load a DTD from a URL use the SystemLiteral property. + /// + public SgmlDtd Dtd + { + get + { + if (this.m_dtd == null) + { + LazyLoadDtd(this.m_baseUri); + } + + return this.m_dtd; + } + set + { + this.m_dtd = value; + } + } + + private void LazyLoadDtd(Uri baseUri) + { + if (this.m_dtd == null && !this.m_ignoreDtd) + { + if (string.IsNullOrEmpty(this.m_syslit)) + { + if (this.m_docType != null && StringUtilities.EqualsIgnoreCase(this.m_docType, "html")) + { + Assembly a = typeof(SgmlReader).Assembly; + string name = a.FullName.Split(',')[0]+".Html.dtd"; + Stream stm = a.GetManifestResourceStream(name); + if (stm != null) + { + StreamReader sr = new StreamReader(stm); + this.m_dtd = SgmlDtd.Parse(baseUri, "HTML", sr, null, this.m_proxy, null); + } + } + else if (this.m_docType != null && StringUtilities.EqualsIgnoreCase(this.m_docType, "ofx")) + { + Assembly a = typeof(SgmlReader).Assembly; + string name = a.FullName.Split(',')[0] + ".ofx160.dtd"; + Stream stm = a.GetManifestResourceStream(name); + if (stm != null) + { + StreamReader sr = new StreamReader(stm); + this.m_dtd = SgmlDtd.Parse(baseUri, "OFX", sr, null, this.m_proxy, null); + } + } + } + else + { + if (baseUri != null) + { + baseUri = new Uri(baseUri, this.m_syslit); + } + else if (this.m_baseUri != null) + { + baseUri = new Uri(this.m_baseUri, this.m_syslit); + } + else + { + baseUri = new Uri(new Uri(Directory.GetCurrentDirectory() + "/"), this.m_syslit); + } + this.m_dtd = SgmlDtd.Parse(baseUri, this.m_docType, this.m_pubid, baseUri.AbsoluteUri, this.m_subset, this.m_proxy, null); + } + } + + if (this.m_dtd != null && this.m_dtd.Name != null) + { + switch(this.CaseFolding) + { + case CaseFolding.ToUpper: + this.m_rootElementName = this.m_dtd.Name.ToUpperInvariant(); + break; + case CaseFolding.ToLower: + this.m_rootElementName = this.m_dtd.Name.ToLowerInvariant(); + break; + default: + this.m_rootElementName = this.m_dtd.Name; + break; + } + + this.m_isHtml = StringUtilities.EqualsIgnoreCase(this.m_dtd.Name, "html"); + } + } + + /// + /// The name of root element specified in the DOCTYPE tag. + /// + public string DocType + { + get + { + return this.m_docType; + } + set + { + this.m_docType = value; + } + } + + /// + /// The root element of the document. + /// + public string RootElementName + { + get + { + return m_rootElementName; + } + } + + /// + /// The PUBLIC identifier in the DOCTYPE tag + /// + public string PublicIdentifier + { + get + { + return this.m_pubid; + } + set + { + this.m_pubid = value; + } + } + + /// + /// The SYSTEM literal in the DOCTYPE tag identifying the location of the DTD. + /// + public string SystemLiteral + { + get + { + return this.m_syslit; + } + set + { + this.m_syslit = value; + } + } + + /// + /// The DTD internal subset in the DOCTYPE tag + /// + public string InternalSubset + { + get + { + return this.m_subset; + } + set + { + this.m_subset = value; + } + } + + /// + /// The input stream containing SGML data to parse. + /// You must specify this property or the Href property before calling Read(). + /// + public TextReader InputStream + { + get + { + return this.m_inputStream; + } + set + { + this.m_inputStream = value; + Init(); + } + } + + /// + /// Sometimes you need to specify a proxy server in order to load data via HTTP + /// from outside the firewall. For example: "itgproxy:80". + /// + public string WebProxy + { + get + { + return this.m_proxy; + } + set + { + this.m_proxy = value; + } + } + + /// + /// The base Uri is used to resolve relative Uri's like the SystemLiteral and + /// Href properties. This is a method because BaseURI is a read-only + /// property on the base XmlReader class. + /// + public void SetBaseUri(string uri) + { + this.m_baseUri = new Uri(uri); + } + + /// + /// Specify the location of the input SGML document as a URL. + /// + public string Href + { + get + { + return this.m_href; + } + set + { + this.m_href = value; + Init(); + if (this.m_baseUri == null) + { + if (this.m_href.IndexOf("://") > 0) + { + this.m_baseUri = new Uri(this.m_href); + } + else + { + this.m_baseUri = new Uri("file:///" + Directory.GetCurrentDirectory() + "//"); + } + } + } + } + + /// + /// Whether to strip out the DOCTYPE tag from the output (default true) + /// + public bool StripDocType + { + get + { + return this.m_stripDocType; + } + set + { + this.m_stripDocType = value; + } + } + + /// + /// Gets or sets a value indicating whether to ignore any DTD reference. + /// + /// true if DTD references should be ignored; otherwise, false. + public bool IgnoreDtd + { + get { return m_ignoreDtd; } + set { m_ignoreDtd = value; } + } + + /// + /// The case conversion behaviour while processing tags. + /// + public CaseFolding CaseFolding + { + get + { + return this.m_folding; + } + set + { + this.m_folding = value; + } + } + + /// + /// DTD validation errors are written to this stream. + /// + public TextWriter ErrorLog + { + get + { + return this.m_log; + } + set + { + this.m_log = value; + } + } + + /// + /// DTD validation errors are written to this log file. + /// + public string ErrorLogFile + { + get + { + return this.m_errorLogFile; + } + set + { + this.m_errorLogFile = value; + this.m_log = new StreamWriter(value); + } + } + + private void Log(string msg, params string[] args) + { + if (ErrorLog != null) + { + string err = string.Format(CultureInfo.CurrentUICulture, msg, args); + if (this.m_lastError != this.m_current) + { + err = err + " " + this.m_current.Context(); + this.m_lastError = this.m_current; + ErrorLog.WriteLine("### Error:" + err); + } + else + { + string path = ""; + if (this.m_current.ResolvedUri != null) + { + path = this.m_current.ResolvedUri.AbsolutePath; + } + + ErrorLog.WriteLine("### Error in {0}#{1}, line {2}, position {3}: {4}", path, this.m_current.Name, this.m_current.Line, this.m_current.LinePosition, err); + } + } + } + + private void Log(string msg, char ch) + { + Log(msg, ch.ToString()); + } + + private void Init() + { + this.m_state = State.Initial; + this.m_stack = new HWStack(10); + this.m_node = Push(null, XmlNodeType.Document, null); + this.m_node.IsEmpty = false; + this.m_sb = new StringBuilder(); + this.m_name = new StringBuilder(); + this.m_poptodepth = 0; + this.m_current = null; + this.m_partial = '\0'; + this.m_endTag = null; + this.m_a = null; + this.m_apos = 0; + this.m_newnode = null; + this.m_rootCount = 0; + this.m_foundRoot = false; + this.unknownNamespaces.Clear(); + } + + private Node Push(string name, XmlNodeType nt, string value) + { + Node result = (Node)this.m_stack.Push(); + if (result == null) + { + result = new Node(); + this.m_stack[this.m_stack.Count - 1] = result; + } + + result.Reset(name, nt, value); + this.m_node = result; + return result; + } + + private void SwapTopNodes() + { + int top = this.m_stack.Count - 1; + if (top > 0) + { + Node n = (Node)this.m_stack[top - 1]; + this.m_stack[top - 1] = this.m_stack[top]; + this.m_stack[top] = n; + } + } + + private Node Push(Node n) + { + // we have to do a deep clone of the Node object because + // it is reused in the stack. + Node n2 = Push(n.Name, n.NodeType, n.Value); + n2.DtdType = n.DtdType; + n2.IsEmpty = n.IsEmpty; + n2.Space = n.Space; + n2.XmlLang = n.XmlLang; + n2.CurrentState = n.CurrentState; + n2.CopyAttributes(n); + this.m_node = n2; + return n2; + } + + private void Pop() + { + if (this.m_stack.Count > 1) + { + this.m_node = (Node)this.m_stack.Pop(); + } + } + + private Node Top() + { + int top = this.m_stack.Count - 1; + if (top > 0) + { + return (Node)this.m_stack[top]; + } + + return null; + } + + /// + /// The node type of the node currently being parsed. + /// + public override XmlNodeType NodeType + { + get + { + if (this.m_state == State.Attr) + { + return XmlNodeType.Attribute; + } + else if (this.m_state == State.AttrValue) + { + return XmlNodeType.Text; + } + else if (this.m_state == State.EndTag || this.m_state == State.AutoClose) + { + return XmlNodeType.EndElement; + } + + return this.m_node.NodeType; + } + } + + /// + /// The name of the current node, if currently positioned on a node or attribute. + /// + public override string Name + { + get + { + string result = null; + if (this.m_state == State.Attr) + { + result = XmlConvert.EncodeName(this.m_a.Name); + } + else if (this.m_state != State.AttrValue) + { + result = this.m_node.Name; + } + + return result; + } + } + + /// + /// The local name of the current node, if currently positioned on a node or attribute. + /// + public override string LocalName + { + get + { + string result = Name; + if (result != null) + { + int colon = result.IndexOf(':'); + if (colon != -1) + { + result = result.Substring(colon + 1); + } + } + return result; + } + } + + /// + /// The namespace of the current node, if currently positioned on a node or attribute. + /// + /// + /// If not positioned on a node or attribute, is returned. + /// + [SuppressMessage("Microsoft.Performance", "CA1820", Justification="Cannot use IsNullOrEmpty in a switch statement and swapping the elegance of switch for a load of 'if's is not worth it.")] + public override string NamespaceURI + { + get + { + // SGML has no namespaces, unless this turned out to be an xmlns attribute. + if (this.m_state == State.Attr && string.Equals(this.m_a.Name, "xmlns", StringComparison.OrdinalIgnoreCase)) + { + return "http://www.w3.org/2000/xmlns/"; + } + + string prefix = Prefix; + switch (Prefix) + { + case "xmlns": + return "http://www.w3.org/2000/xmlns/"; + case "xml": + return "http://www.w3.org/XML/1998/namespace"; + case null: // Should never occur since Prefix never returns null + case "": + if (NodeType == XmlNodeType.Attribute) + { + // attributes without a prefix are never in any namespace + return string.Empty; + } + else if (NodeType == XmlNodeType.Element) + { + // check if a 'xmlns:prefix' attribute is defined + for (int i = this.m_stack.Count - 1; i > 0; --i) + { + Node node = this.m_stack[i] as Node; + if ((node != null) && (node.NodeType == XmlNodeType.Element)) + { + int index = node.GetAttribute("xmlns"); + if (index >= 0) + { + string value = node.GetAttribute(index).Value; + if (value != null) + { + return value; + } + } + } + } + } + + return string.Empty; + default: { + string value; + if((NodeType == XmlNodeType.Attribute) || (NodeType == XmlNodeType.Element)) { + + // check if a 'xmlns:prefix' attribute is defined + string key = "xmlns:" + prefix; + for(int i = this.m_stack.Count - 1; i > 0; --i) { + Node node = this.m_stack[i] as Node; + if((node != null) && (node.NodeType == XmlNodeType.Element)) { + int index = node.GetAttribute(key); + if(index >= 0) { + value = node.GetAttribute(index).Value; + if(value != null) { + return value; + } + } + } + } + } + + // check if we've seen this prefix before + if(!unknownNamespaces.TryGetValue(prefix, out value)) { + if(unknownNamespaces.Count > 0) { + value = UNDEFINED_NAMESPACE + unknownNamespaces.Count.ToString(); + } else { + value = UNDEFINED_NAMESPACE; + } + unknownNamespaces[prefix] = value; + } + return value; + } + } + } + } + + /// + /// The prefix of the current node's name. + /// + public override string Prefix + { + get + { + string result = Name; + if (result != null) + { + int colon = result.IndexOf(':'); + if(colon != -1) { + result = result.Substring(0, colon); + } else { + result = string.Empty; + } + } + return result ?? string.Empty; + } + } + + /// + /// Whether the current node has a value or not. + /// + public override bool HasValue + { + get + { + if (this.m_state == State.Attr || this.m_state == State.AttrValue) + { + return true; + } + + return (this.m_node.Value != null); + } + } + + /// + /// The value of the current node. + /// + public override string Value + { + get + { + if (this.m_state == State.Attr || this.m_state == State.AttrValue) + { + return this.m_a.Value; + } + + return this.m_node.Value; + } + } + + /// + /// Gets the depth of the current node in the XML document. + /// + /// The depth of the current node in the XML document. + public override int Depth + { + get + { + if (this.m_state == State.Attr) + { + return this.m_stack.Count; + } + else if (this.m_state == State.AttrValue) + { + return this.m_stack.Count + 1; + } + + return this.m_stack.Count - 1; + } + } + + /// + /// Gets the base URI of the current node. + /// + /// The base URI of the current node. + public override string BaseURI + { + get + { + return this.m_baseUri == null ? "" : this.m_baseUri.AbsoluteUri; + } + } + + /// + /// Gets a value indicating whether the current node is an empty element (for example, <MyElement/>). + /// + public override bool IsEmptyElement + { + get + { + if (this.m_state == State.Markup || this.m_state == State.Attr || this.m_state == State.AttrValue) + { + return this.m_node.IsEmpty; + } + + return false; + } + } + + /// + /// Gets a value indicating whether the current node is an attribute that was generated from the default value defined in the DTD or schema. + /// + /// + /// true if the current node is an attribute whose value was generated from the default value defined in the DTD or + /// schema; false if the attribute value was explicitly set. + /// + public override bool IsDefault + { + get + { + if (this.m_state == State.Attr || this.m_state == State.AttrValue) + return this.m_a.IsDefault; + + return false; + } + } + + /// + /// Gets the quotation mark character used to enclose the value of an attribute node. + /// + /// The quotation mark character (" or ') used to enclose the value of an attribute node. + /// + /// This property applies only to an attribute node. + /// + public override char QuoteChar + { + get + { + if (this.m_a != null) + return this.m_a.QuoteChar; + + return '\0'; + } + } + + /// + /// Gets the current xml:space scope. + /// + /// One of the values. If no xml:space scope exists, this property defaults to XmlSpace.None. + public override XmlSpace XmlSpace + { + get + { + for (int i = this.m_stack.Count - 1; i > 1; i--) + { + Node n = (Node)this.m_stack[i]; + XmlSpace xs = n.Space; + if (xs != XmlSpace.None) + return xs; + } + + return XmlSpace.None; + } + } + + /// + /// Gets the current xml:lang scope. + /// + /// The current xml:lang scope. + public override string XmlLang + { + get + { + for (int i = this.m_stack.Count - 1; i > 1; i--) + { + Node n = (Node)this.m_stack[i]; + string xmllang = n.XmlLang; + if (xmllang != null) + return xmllang; + } + + return string.Empty; + } + } + + /// + /// Specifies how white space is handled. + /// + public WhitespaceHandling WhitespaceHandling + { + get + { + return this.m_whitespaceHandling; + } + set + { + this.m_whitespaceHandling = value; + } + } + + /// + /// Gets the number of attributes on the current node. + /// + /// The number of attributes on the current node. + public override int AttributeCount + { + get + { + if (this.m_state == State.Attr || this.m_state == State.AttrValue) + //For compatibility with mono + return this.m_node.AttributeCount; + else if (this.m_node.NodeType == XmlNodeType.Element || this.m_node.NodeType == XmlNodeType.DocumentType) + return this.m_node.AttributeCount; + else + return 0; + } + } + + /// + /// Gets the value of an attribute with the specified . + /// + /// The name of the attribute to retrieve. + /// The value of the specified attribute. If the attribute is not found, a null reference (Nothing in Visual Basic) is returned. + public override string GetAttribute(string name) + { + if (this.m_state != State.Attr && this.m_state != State.AttrValue) + { + int i = this.m_node.GetAttribute(name); + if (i >= 0) + return GetAttribute(i); + } + + return null; + } + + /// + /// Gets the value of the attribute with the specified and . + /// + /// The local name of the attribute. + /// The namespace URI of the attribute. + /// The value of the specified attribute. If the attribute is not found, a null reference (Nothing in Visual Basic) is returned. This method does not move the reader. + public override string GetAttribute(string name, string namespaceURI) + { + return GetAttribute(name); // SGML has no namespaces. + } + + /// + /// Gets the value of the attribute with the specified index. + /// + /// The index of the attribute. + /// The value of the specified attribute. This method does not move the reader. + public override string GetAttribute(int i) + { + if (this.m_state != State.Attr && this.m_state != State.AttrValue) + { + Attribute a = this.m_node.GetAttribute(i); + if (a != null) + return a.Value; + } + + throw new ArgumentOutOfRangeException("i"); + } + + /// + /// Gets the value of the attribute with the specified index. + /// + /// The index of the attribute. + /// The value of the specified attribute. This method does not move the reader. + public override string this[int i] + { + get + { + return GetAttribute(i); + } + } + + /// + /// Gets the value of an attribute with the specified . + /// + /// The name of the attribute to retrieve. + /// The value of the specified attribute. If the attribute is not found, a null reference (Nothing in Visual Basic) is returned. + public override string this[string name] + { + get + { + return GetAttribute(name); + } + } + + /// + /// Gets the value of the attribute with the specified and . + /// + /// The local name of the attribute. + /// The namespace URI of the attribute. + /// The value of the specified attribute. If the attribute is not found, a null reference (Nothing in Visual Basic) is returned. This method does not move the reader. + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1023", Justification = "This design is that of Microsoft's XmlReader class and overriding its method is merely continuing the same design.")] + public override string this[string name, string namespaceURI] + { + get + { + return GetAttribute(name, namespaceURI); + } + } + + /// + /// Moves to the atttribute with the specified . + /// + /// The qualified name of the attribute. + /// true if the attribute is found; otherwise, false. If false, the reader's position does not change. + public override bool MoveToAttribute(string name) + { + int i = this.m_node.GetAttribute(name); + if (i >= 0) + { + MoveToAttribute(i); + return true; + } + + return false; + } + + /// + /// Moves to the attribute with the specified and . + /// + /// The local name of the attribute. + /// The namespace URI of the attribute. + /// true if the attribute is found; otherwise, false. If false, the reader's position does not change. + public override bool MoveToAttribute(string name, string ns) + { + return MoveToAttribute(name); + } + + /// + /// Moves to the attribute with the specified index. + /// + /// The index of the attribute to move to. + public override void MoveToAttribute(int i) + { + Attribute a = this.m_node.GetAttribute(i); + if (a != null) + { + this.m_apos = i; + this.m_a = a; + //Make sure that AttrValue does not overwrite the preserved value + if (this.m_state != State.Attr && this.m_state != State.AttrValue) + { + this.m_node.CurrentState = this.m_state; //save current state. + } + + this.m_state = State.Attr; + return; + } + + throw new ArgumentOutOfRangeException("i"); + } + + /// + /// Moves to the first attribute. + /// + /// + public override bool MoveToFirstAttribute() + { + if (this.m_node.AttributeCount > 0) + { + MoveToAttribute(0); + return true; + } + + return false; + } + + /// + /// Moves to the next attribute. + /// + /// true if there is a next attribute; false if there are no more attributes. + /// + /// If the current node is an element node, this method is equivalent to . If returns true, + /// the reader moves to the next attribute; otherwise, the position of the reader does not change. + /// + public override bool MoveToNextAttribute() + { + if (this.m_state != State.Attr && this.m_state != State.AttrValue) + { + return MoveToFirstAttribute(); + } + else if (this.m_apos < this.m_node.AttributeCount - 1) + { + MoveToAttribute(this.m_apos + 1); + return true; + } + else + return false; + } + + /// + /// Moves to the element that contains the current attribute node. + /// + /// + /// true if the reader is positioned on an attribute (the reader moves to the element that owns the attribute); false if the reader is not positioned + /// on an attribute (the position of the reader does not change). + /// + public override bool MoveToElement() + { + if (this.m_state == State.Attr || this.m_state == State.AttrValue) + { + this.m_state = this.m_node.CurrentState; + this.m_a = null; + return true; + } + else + return (this.m_node.NodeType == XmlNodeType.Element); + } + + /// + /// Gets whether the content is HTML or not. + /// + public bool IsHtml + { + get + { + return this.m_isHtml; + } + } + + /// + /// Returns the encoding of the current entity. + /// + /// The encoding of the current entity. + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1024", Justification = "This method to get the encoding does not simply read a value, but potentially causes significant processing of the input stream.")] + public Encoding GetEncoding() + { + if (this.m_current == null) + { + OpenInput(); + } + + return this.m_current.Encoding; + } + + private void OpenInput() + { + LazyLoadDtd(this.m_baseUri); + + if (this.Href != null) + { + this.m_current = new Entity("#document", null, this.m_href, this.m_proxy); + } + else if (this.m_inputStream != null) + { + this.m_current = new Entity("#document", null, this.m_inputStream, this.m_proxy); + } + else + { + throw new InvalidOperationException("You must specify input either via Href or InputStream properties"); + } + + this.m_current.IsHtml = this.IsHtml; + this.m_current.Open(null, this.m_baseUri); + if (this.m_current.ResolvedUri != null) + this.m_baseUri = this.m_current.ResolvedUri; + + if (this.m_current.IsHtml && this.m_dtd == null) + { + this.m_docType = "HTML"; + LazyLoadDtd(this.m_baseUri); + } + } + + /// + /// Reads the next node from the stream. + /// + /// true if the next node was read successfully; false if there are no more nodes to read. + public override bool Read() + { + if (m_current == null) + { + OpenInput(); + } + + if (m_node.Simulated) + { + // return the next node + m_node.Simulated = false; + this.m_node = Top(); + this.m_state = this.m_node.CurrentState; + return true; + } + + bool foundnode = false; + while (!foundnode) + { + switch (this.m_state) + { + case State.Initial: + this.m_state = State.Markup; + this.m_current.ReadChar(); + goto case State.Markup; + case State.Eof: + if (this.m_current.Parent != null) + { + this.m_current.Close(); + this.m_current = this.m_current.Parent; + } + else + { + return false; + } + break; + case State.EndTag: + if (string.Equals(this.m_endTag, this.m_node.Name, StringComparison.OrdinalIgnoreCase)) + { + Pop(); // we're done! + this.m_state = State.Markup; + goto case State.Markup; + } + Pop(); // close one element + foundnode = true;// return another end element. + break; + case State.Markup: + if (this.m_node.IsEmpty) + { + Pop(); + } + foundnode = ParseMarkup(); + break; + case State.PartialTag: + Pop(); // remove text node. + this.m_state = State.Markup; + foundnode = ParseTag(this.m_partial); + break; + case State.PseudoStartTag: + foundnode = ParseStartTag('<'); + break; + case State.AutoClose: + Pop(); // close next node. + if (this.m_stack.Count <= this.m_poptodepth) + { + this.m_state = State.Markup; + if (this.m_newnode != null) + { + Push(this.m_newnode); // now we're ready to start the new node. + this.m_newnode = null; + this.m_state = State.Markup; + } + else if (this.m_node.NodeType == XmlNodeType.Document) + { + this.m_state = State.Eof; + goto case State.Eof; + } + } + foundnode = true; + break; + case State.CData: + foundnode = ParseCData(); + break; + case State.Attr: + goto case State.AttrValue; + case State.AttrValue: + this.m_state = State.Markup; + goto case State.Markup; + case State.Text: + Pop(); + goto case State.Markup; + case State.PartialText: + if (ParseText(this.m_current.Lastchar, false)) + { + this.m_node.NodeType = XmlNodeType.Whitespace; + } + + foundnode = true; + break; + } + + if (foundnode && this.m_node.NodeType == XmlNodeType.Whitespace && this.m_whitespaceHandling == WhitespaceHandling.None) + { + // strip out whitespace (caller is probably pretty printing the XML). + foundnode = false; + } + if (!foundnode && this.m_state == State.Eof && this.m_stack.Count > 1) + { + this.m_poptodepth = 1; + this.m_state = State.AutoClose; + this.m_node = Top(); + return true; + } + } + if (!m_foundRoot && (this.NodeType == XmlNodeType.Element || + this.NodeType == XmlNodeType.Text || + this.NodeType == XmlNodeType.CDATA)) + { + m_foundRoot = true; + if (this.IsHtml && (this.NodeType != XmlNodeType.Element || + !string.Equals(this.LocalName, "html", StringComparison.OrdinalIgnoreCase))) + { + // Simulate an HTML root element! + this.m_node.CurrentState = this.m_state; + Node root = Push("html", XmlNodeType.Element, null); + SwapTopNodes(); // make html the outer element. + this.m_node = root; + root.Simulated = true; + root.IsEmpty = false; + this.m_state = State.Markup; + //this.state = State.PseudoStartTag; + //this.startTag = name; + } + + return true; + } + + return true; + } + + private bool ParseMarkup() + { + char ch = this.m_current.Lastchar; + if (ch == '<') + { + ch = this.m_current.ReadChar(); + return ParseTag(ch); + } + else if (ch != Entity.EOF) + { + if (this.m_node.DtdType != null && this.m_node.DtdType.ContentModel.DeclaredContent == DeclaredContent.CDATA) + { + // e.g. SCRIPT or STYLE tags which contain unparsed character data. + this.m_partial = '\0'; + this.m_state = State.CData; + return false; + } + else if (ParseText(ch, true)) + { + this.m_node.NodeType = XmlNodeType.Whitespace; + } + + return true; + } + + this.m_state = State.Eof; + return false; + } + + private const string declterm = " \t\r\n><"; + private bool ParseTag(char ch) + { + if (ch == '%') + { + return ParseAspNet(); + } + else if (ch == '!') + { + ch = this.m_current.ReadChar(); + if (ch == '-') + { + return ParseComment(); + } + else if (ch == '[') + { + return ParseConditionalBlock(); + } + else if (ch != '_' && !char.IsLetter(ch)) + { + // perhaps it's one of those nasty office document hacks like '' + string value = this.m_current.ScanToEnd(this.m_sb, "Recovering", ">"); // skip it + Log("Ignoring invalid markup '"); + return false; + } + else + { + string name = this.m_current.ScanToken(this.m_sb, SgmlReader.declterm, false); + if (string.Equals(name, "DOCTYPE", StringComparison.OrdinalIgnoreCase)) + { + ParseDocType(); + + // In SGML DOCTYPE SYSTEM attribute is optional, but in XML it is required, + // therefore if there is no SYSTEM literal then add an empty one. + if (this.GetAttribute("SYSTEM") == null && this.GetAttribute("PUBLIC") != null) + { + this.m_node.AddAttribute("SYSTEM", "", '"', this.m_folding == CaseFolding.None); + } + + if (m_stripDocType) + { + return false; + } + else + { + this.m_node.NodeType = XmlNodeType.DocumentType; + return true; + } + } + else + { + Log("Invalid declaration '"); // skip it + return false; + } + } + } + else if (ch == '?') + { + this.m_current.ReadChar();// consume the '?' character. + return ParsePI(); + } + else if (ch == '/') + { + return ParseEndTag(); + } + else + { + return ParseStartTag(ch); + } + } + + private string ScanName(string terminators) + { + string name = this.m_current.ScanToken(this.m_sb, terminators, false); + switch (this.m_folding) + { + case CaseFolding.ToUpper: + name = name.ToUpperInvariant(); + break; + case CaseFolding.ToLower: + name = name.ToLowerInvariant(); + break; + } + return name; + } + + private static bool VerifyName(string name) + { + try + { + XmlConvert.VerifyName(name); + return true; + } + catch (XmlException) + { + return false; + } + } + + private const string tagterm = " \t\r\n=/><"; + private const string aterm = " \t\r\n='\"/>"; + private const string avterm = " \t\r\n>"; + private bool ParseStartTag(char ch) + { + string name = null; + if (m_state != State.PseudoStartTag) + { + if (SgmlReader.tagterm.IndexOf(ch) >= 0) + { + this.m_sb.Length = 0; + this.m_sb.Append('<'); + this.m_state = State.PartialText; + return false; + } + + name = ScanName(SgmlReader.tagterm); + } + else + { + // TODO: Changes by mindtouch mean that this.startTag is never non-null. The effects of this need checking. + + //name = this.startTag; + m_state = State.Markup; + } + + Node n = Push(name, XmlNodeType.Element, null); + n.IsEmpty = false; + Validate(n); + ch = this.m_current.SkipWhitespace(); + while (ch != Entity.EOF && ch != '>') + { + if (ch == '/') + { + n.IsEmpty = true; + ch = this.m_current.ReadChar(); + if (ch != '>') + { + Log("Expected empty start tag '/>' sequence instead of '{0}'", ch); + this.m_current.ScanToEnd(null, "Recovering", ">"); + return false; + } + break; + } + else if (ch == '<') + { + Log("Start tag '{0}' is missing '>'", name); + break; + } + + string aname = ScanName(SgmlReader.aterm); + ch = this.m_current.SkipWhitespace(); + if (string.Equals(aname, ",", StringComparison.OrdinalIgnoreCase) || + string.Equals(aname, "=", StringComparison.OrdinalIgnoreCase) || + string.Equals(aname, ":", StringComparison.OrdinalIgnoreCase) || + string.Equals(aname, ";", StringComparison.OrdinalIgnoreCase)) + { + continue; + } + + string value = null; + char quote = '\0'; + if (ch == '=' || ch == '"' || ch == '\'') + { + if (ch == '=' ) + { + this.m_current.ReadChar(); + ch = this.m_current.SkipWhitespace(); + } + + if (ch == '\'' || ch == '\"') + { + quote = ch; + value = ScanLiteral(this.m_sb, ch); + } + else if (ch != '>') + { + string term = SgmlReader.avterm; + value = this.m_current.ScanToken(this.m_sb, term, false); + } + } + + if (ValidAttributeName(aname)) + { + Attribute a = n.AddAttribute(aname, value ?? aname, quote, this.m_folding == CaseFolding.None); + if (a == null) + { + Log("Duplicate attribute '{0}' ignored", aname); + } + else + { + ValidateAttribute(n, a); + } + } + + ch = this.m_current.SkipWhitespace(); + } + + if (ch == Entity.EOF) + { + this.m_current.Error("Unexpected EOF parsing start tag '{0}'", name); + } + else if (ch == '>') + { + this.m_current.ReadChar(); // consume '>' + } + + if (this.Depth == 1) + { + if (this.m_rootCount == 1) + { + // Hmmm, we found another root level tag, soooo, the only + // thing we can do to keep this a valid XML document is stop + this.m_state = State.Eof; + return false; + } + this.m_rootCount++; + } + + ValidateContent(n); + return true; + } + + private bool ParseEndTag() + { + this.m_state = State.EndTag; + this.m_current.ReadChar(); // consume '/' char. + string name = this.ScanName(SgmlReader.tagterm); + char ch = this.m_current.SkipWhitespace(); + if (ch != '>') + { + Log("Expected empty start tag '/>' sequence instead of '{0}'", ch); + this.m_current.ScanToEnd(null, "Recovering", ">"); + } + + this.m_current.ReadChar(); // consume '>' + + this.m_endTag = name; + + // Make sure there's a matching start tag for it. + bool caseInsensitive = (this.m_folding == CaseFolding.None); + this.m_node = (Node)this.m_stack[this.m_stack.Count - 1]; + for (int i = this.m_stack.Count - 1; i > 0; i--) + { + Node n = (Node)this.m_stack[i]; + if (string.Equals(n.Name, name, caseInsensitive ? StringComparison.OrdinalIgnoreCase : StringComparison.Ordinal)) + { + this.m_endTag = n.Name; + return true; + } + } + + Log("No matching start tag for ''", name); + this.m_state = State.Markup; + return false; + } + + private bool ParseAspNet() + { + string value = "<%" + this.m_current.ScanToEnd(this.m_sb, "AspNet", "%>") + "%>"; + Push(null, XmlNodeType.CDATA, value); + return true; + } + + private bool ParseComment() + { + char ch = this.m_current.ReadChar(); + if (ch != '-') + { + Log("Expecting comment '"); + + // Make sure it's a valid comment! + int i = value.IndexOf("--"); + + while (i >= 0) + { + int j = i + 2; + while (j < value.Length && value[j] == '-') + j++; + + if (i > 0) + { + value = value.Substring(0, i - 1) + "-" + value.Substring(j); + } + else + { + value = "-" + value.Substring(j); + } + + i = value.IndexOf("--"); + } + + if (value.Length > 0 && value[value.Length - 1] == '-') + { + value += " "; // '-' cannot be last character + } + + Push(null, XmlNodeType.Comment, value); + return true; + } + + private const string cdataterm = "\t\r\n[]<>"; + private bool ParseConditionalBlock() + { + char ch = m_current.ReadChar(); // skip '[' + ch = m_current.SkipWhitespace(); + string name = m_current.ScanToken(m_sb, cdataterm, false); + if (name.StartsWith("if ")) + { + // 'downlevel-revealed' comment (another atrocity of the IE team) + m_current.ScanToEnd(null, "CDATA", ">"); + return false; + } + else if (!string.Equals(name, "CDATA", StringComparison.OrdinalIgnoreCase)) + { + Log("Expecting CDATA but found '{0}'", name); + m_current.ScanToEnd(null, "CDATA", ">"); + return false; + } + else + { + ch = m_current.SkipWhitespace(); + if (ch != '[') + { + Log("Expecting '[' but found '{0}'", ch); + m_current.ScanToEnd(null, "CDATA", ">"); + return false; + } + + string value = m_current.ScanToEnd(m_sb, "CDATA", "]]>"); + + Push(null, XmlNodeType.CDATA, value); + return true; + } + } + + private const string dtterm = " \t\r\n>"; + private void ParseDocType() + { + char ch = this.m_current.SkipWhitespace(); + string name = this.ScanName(SgmlReader.dtterm); + Push(name, XmlNodeType.DocumentType, null); + ch = this.m_current.SkipWhitespace(); + if (ch != '>') + { + string subset = ""; + string pubid = ""; + string syslit = ""; + + if (ch != '[') + { + string token = this.m_current.ScanToken(this.m_sb, SgmlReader.dtterm, false); + if (string.Equals(token, "PUBLIC", StringComparison.OrdinalIgnoreCase)) + { + ch = this.m_current.SkipWhitespace(); + if (ch == '\"' || ch == '\'') + { + pubid = this.m_current.ScanLiteral(this.m_sb, ch); + this.m_node.AddAttribute(token, pubid, ch, this.m_folding == CaseFolding.None); + } + } + else if (!string.Equals(token, "SYSTEM", StringComparison.OrdinalIgnoreCase)) + { + Log("Unexpected token in DOCTYPE '{0}'", token); + this.m_current.ScanToEnd(null, "DOCTYPE", ">"); + } + ch = this.m_current.SkipWhitespace(); + if (ch == '\"' || ch == '\'') + { + token = "SYSTEM"; + syslit = this.m_current.ScanLiteral(this.m_sb, ch); + this.m_node.AddAttribute(token, syslit, ch, this.m_folding == CaseFolding.None); + } + ch = this.m_current.SkipWhitespace(); + } + + if (ch == '[') + { + subset = this.m_current.ScanToEnd(this.m_sb, "Internal Subset", "]"); + this.m_node.Value = subset; + } + + ch = this.m_current.SkipWhitespace(); + if (ch != '>') + { + Log("Expecting end of DOCTYPE tag, but found '{0}'", ch); + this.m_current.ScanToEnd(null, "DOCTYPE", ">"); + } + + if (this.m_dtd != null && !string.Equals(this.m_dtd.Name, name, StringComparison.OrdinalIgnoreCase)) + { + throw new InvalidOperationException("DTD does not match document type"); + } + + this.m_docType = name; + this.m_pubid = pubid; + this.m_syslit = syslit; + this.m_subset = subset; + LazyLoadDtd(this.m_current.ResolvedUri); + } + + this.m_current.ReadChar(); + } + + private const string piterm = " \t\r\n?"; + private bool ParsePI() + { + string name = this.m_current.ScanToken(this.m_sb, SgmlReader.piterm, false); + string value = null; + if (this.m_current.Lastchar != '?') + { + // Notice this is not "?>". This is because Office generates bogus PI's that end with "/>". + value = this.m_current.ScanToEnd(this.m_sb, "Processing Instruction", ">"); + value = value.TrimEnd('/'); + } + else + { + // error recovery. + value = this.m_current.ScanToEnd(this.m_sb, "Processing Instruction", ">"); + } + + // check if the name has a prefix; if so, ignore it + int colon = name.IndexOf(':'); + if(colon > 0) { + name = name.Substring(colon + 1); + } + + // skip xml declarations, since these are generated in the output instead. + if (!string.Equals(name, "xml", StringComparison.OrdinalIgnoreCase)) + { + Push(name, XmlNodeType.ProcessingInstruction, value); + return true; + } + + return false; + } + + private bool ParseText(char ch, bool newtext) + { + bool ws = !newtext || this.m_current.IsWhitespace; + if (newtext) + this.m_sb.Length = 0; + + //this.sb.Append(ch); + //ch = this.current.ReadChar(); + this.m_state = State.Text; + while (ch != Entity.EOF) + { + if (ch == '<') + { + ch = this.m_current.ReadChar(); + if (ch == '/' || ch == '!' || ch == '?' || char.IsLetter(ch)) + { + // Hit a tag, so return XmlNodeType.Text token + // and remember we partially started a new tag. + this.m_state = State.PartialTag; + this.m_partial = ch; + break; + } + else + { + // not a tag, so just proceed. + this.m_sb.Append('<'); + this.m_sb.Append(ch); + ws = false; + ch = this.m_current.ReadChar(); + } + } + else if (ch == '&') + { + ExpandEntity(this.m_sb, '<'); + ws = false; + ch = this.m_current.Lastchar; + } + else + { + if (!this.m_current.IsWhitespace) + ws = false; + this.m_sb.Append(ch); + ch = this.m_current.ReadChar(); + } + } + + string value = this.m_sb.ToString(); + Push(null, XmlNodeType.Text, value); + return ws; + } + + /// + /// Consumes and returns a literal block of text, expanding entities as it does so. + /// + /// The string builder to use. + /// The delimiter for the literal. + /// The consumed literal. + /// + /// This version is slightly different from in that + /// it also expands entities. + /// + private string ScanLiteral(StringBuilder sb, char quote) + { + sb.Length = 0; + char ch = this.m_current.ReadChar(); + while (ch != Entity.EOF && ch != quote && ch != '>') + { + if (ch == '&') + { + ExpandEntity(sb, quote); + ch = this.m_current.Lastchar; + } + else + { + sb.Append(ch); + ch = this.m_current.ReadChar(); + } + } + if(ch == quote) { + this.m_current.ReadChar(); // consume end quote. + } + return sb.ToString(); + } + + private bool ParseCData() + { + // Like ParseText(), only it doesn't allow elements in the content. + // It allows comments and processing instructions and text only and + // text is not returned as text but CDATA (since it may contain angle brackets). + // And initial whitespace is ignored. It terminates when we hit the + // end tag for the current CDATA node (e.g. ). + bool ws = this.m_current.IsWhitespace; + this.m_sb.Length = 0; + char ch = this.m_current.Lastchar; + if (this.m_partial != '\0') + { + Pop(); // pop the CDATA + switch (this.m_partial) + { + case '!': + this.m_partial = ' '; // and pop the comment next time around + return ParseComment(); + case '?': + this.m_partial = ' '; // and pop the PI next time around + return ParsePI(); + case '/': + this.m_state = State.EndTag; + return true; // we are done! + case ' ': + break; // means we just needed to pop the Comment, PI or CDATA. + } + } + + // if this.partial == '!' then parse the comment and return + // if this.partial == '?' then parse the processing instruction and return. + while (ch != Entity.EOF) + { + if (ch == '<') + { + ch = this.m_current.ReadChar(); + if (ch == '!') + { + ch = this.m_current.ReadChar(); + if (ch == '-') + { + // return what CDATA we have accumulated so far + // then parse the comment and return to here. + if (ws) + { + this.m_partial = ' '; // pop comment next time through + return ParseComment(); + } + else + { + // return what we've accumulated so far then come + // back in and parse the comment. + this.m_partial = '!'; + break; + } +#if FIX + } else if (ch == '['){ + // We are about to wrap this node as a CDATA block because of it's + // type in the DTD, but since we found a CDATA block in the input + // we have to parse it as a CDATA block, otherwise we will attempt + // to output nested CDATA blocks which of course is illegal. + if (this.ParseConditionalBlock()){ + this.partial = ' '; + return true; + } +#endif + } + else + { + // not a comment, so ignore it and continue on. + this.m_sb.Append('<'); + this.m_sb.Append('!'); + this.m_sb.Append(ch); + ws = false; + } + } + else if (ch == '?') + { + // processing instruction. + this.m_current.ReadChar();// consume the '?' character. + if (ws) + { + this.m_partial = ' '; // pop PI next time through + return ParsePI(); + } + else + { + this.m_partial = '?'; + break; + } + } + else if (ch == '/') + { + // see if this is the end tag for this CDATA node. + string temp = this.m_sb.ToString(); + if (ParseEndTag() && string.Equals(this.m_endTag, this.m_node.Name, StringComparison.OrdinalIgnoreCase)) + { + if (ws || string.IsNullOrEmpty(temp)) + { + // we are done! + return true; + } + else + { + // return CDATA text then the end tag + this.m_partial = '/'; + this.m_sb.Length = 0; // restore buffer! + this.m_sb.Append(temp); + this.m_state = State.CData; + break; + } + } + else + { + // wrong end tag, so continue on. + this.m_sb.Length = 0; // restore buffer! + this.m_sb.Append(temp); + this.m_sb.Append(""); + ws = false; + + // NOTE (steveb): we have one character in the buffer that we need to process next + ch = this.m_current.Lastchar; + continue; + } + } + else + { + // must be just part of the CDATA block, so proceed. + this.m_sb.Append('<'); + this.m_sb.Append(ch); + ws = false; + } + } + else + { + if (!this.m_current.IsWhitespace && ws) + ws = false; + this.m_sb.Append(ch); + } + + ch = this.m_current.ReadChar(); + } + + // NOTE (steveb): check if we reached EOF, which means it's over + if(ch == Entity.EOF) { + this.m_state = State.Eof; + return false; + } + + string value = this.m_sb.ToString(); + + // NOTE (steveb): replace any nested CDATA sections endings + value = value.Replace("", string.Empty); + value = value.Replace("/**/", string.Empty); + + Push(null, XmlNodeType.CDATA, value); + if (this.m_partial == '\0') + this.m_partial = ' ';// force it to pop this CDATA next time in. + + return true; + } + + private void ExpandEntity(StringBuilder sb, char terminator) + { + char ch = this.m_current.ReadChar(); + if (ch == '#') + { + string charent = this.m_current.ExpandCharEntity(); + sb.Append(charent); + ch = this.m_current.Lastchar; + } + else + { + this.m_name.Length = 0; + while (ch != Entity.EOF && + (char.IsLetter(ch) || ch == '_' || ch == '-') || ((this.m_name.Length > 0) && char.IsDigit(ch))) + { + this.m_name.Append(ch); + ch = this.m_current.ReadChar(); + } + string name = this.m_name.ToString(); + + // TODO (steveb): don't lookup amp, gt, lt, quote + switch(name) { + case "amp": + sb.Append("&"); + if(ch != terminator && ch != '&' && ch != Entity.EOF) + ch = this.m_current.ReadChar(); + return; + case "lt": + sb.Append("<"); + if(ch != terminator && ch != '&' && ch != Entity.EOF) + ch = this.m_current.ReadChar(); + return; + case "gt": + sb.Append(">"); + if(ch != terminator && ch != '&' && ch != Entity.EOF) + ch = this.m_current.ReadChar(); + return; + case "quot": + sb.Append("\""); + if(ch != terminator && ch != '&' && ch != Entity.EOF) + ch = this.m_current.ReadChar(); + return; + case "apos": + sb.Append("'"); + if(ch != terminator && ch != '&' && ch != Entity.EOF) + ch = this.m_current.ReadChar(); + return; + } + + if (this.m_dtd != null && !string.IsNullOrEmpty(name)) + { + Entity e = (Entity)this.m_dtd.FindEntity(name); + if (e != null) + { + if (e.IsInternal) + { + sb.Append(e.Literal); + if (ch != terminator && ch != '&' && ch != Entity.EOF) + ch = this.m_current.ReadChar(); + + return; + } + else + { + Entity ex = new Entity(name, e.PublicId, e.Uri, this.m_current.Proxy); + e.Open(this.m_current, new Uri(e.Uri)); + this.m_current = ex; + this.m_current.ReadChar(); + return; + } + } + else + { + Log("Undefined entity '{0}'", name); + } + } + // Entity is not defined, so just keep it in with the rest of the + // text. + sb.Append("&"); + sb.Append(name); + if(ch != terminator && ch != '&' && ch != Entity.EOF) + { + sb.Append(ch); + ch = this.m_current.ReadChar(); + } + } + } + + /// + /// Gets a value indicating whether the reader is positioned at the end of the stream. + /// + /// true if the reader is positioned at the end of the stream; otherwise, false. + public override bool EOF + { + get + { + return this.m_state == State.Eof; + } + } + + /// + /// Changes the to Closed. + /// + public override void Close() + { + if (this.m_current != null) + { + this.m_current.Close(); + this.m_current = null; + } + + if (this.m_log != null) + { + this.m_log.Close(); + this.m_log = null; + } + } + + /// + /// Gets the state of the reader. + /// + /// One of the ReadState values. + public override ReadState ReadState + { + get + { + if (this.m_state == State.Initial) + return ReadState.Initial; + else if (this.m_state == State.Eof) + return ReadState.EndOfFile; + else + return ReadState.Interactive; + } + } + + /// + /// Reads the contents of an element or text node as a string. + /// + /// The contents of the element or an empty string. + public override string ReadString() + { + if (this.m_node.NodeType == XmlNodeType.Element) + { + this.m_sb.Length = 0; + while (Read()) + { + switch (this.NodeType) + { + case XmlNodeType.CDATA: + case XmlNodeType.SignificantWhitespace: + case XmlNodeType.Whitespace: + case XmlNodeType.Text: + this.m_sb.Append(this.m_node.Value); + break; + default: + return this.m_sb.ToString(); + } + } + + return this.m_sb.ToString(); + } + + return this.m_node.Value; + } + + /// + /// Reads all the content, including markup, as a string. + /// + /// + /// All the XML content, including markup, in the current node. If the current node has no children, + /// an empty string is returned. If the current node is neither an element nor attribute, an empty + /// string is returned. + /// + public override string ReadInnerXml() + { + StringWriter sw = new StringWriter(CultureInfo.InvariantCulture); + XmlTextWriter xw = new XmlTextWriter(sw); + xw.Formatting = Formatting.Indented; + switch (this.NodeType) + { + case XmlNodeType.Element: + Read(); + while (!this.EOF && this.NodeType != XmlNodeType.EndElement) + { + xw.WriteNode(this, true); + } + Read(); // consume the end tag + break; + case XmlNodeType.Attribute: + sw.Write(this.Value); + break; + default: + // return empty string according to XmlReader spec. + break; + } + + xw.Close(); + return sw.ToString(); + } + + /// + /// Reads the content, including markup, representing this node and all its children. + /// + /// + /// If the reader is positioned on an element or an attribute node, this method returns all the XML content, including markup, of the current node and all its children; otherwise, it returns an empty string. + /// + public override string ReadOuterXml() + { + StringWriter sw = new StringWriter(CultureInfo.InvariantCulture); + XmlTextWriter xw = new XmlTextWriter(sw); + xw.Formatting = Formatting.Indented; + xw.WriteNode(this, true); + xw.Close(); + return sw.ToString(); + } + + /// + /// Gets the XmlNameTable associated with this implementation. + /// + /// The XmlNameTable enabling you to get the atomized version of a string within the node. + public override XmlNameTable NameTable + { + get + { + return null; + } + } + + /// + /// Resolves a namespace prefix in the current element's scope. + /// + /// The prefix whose namespace URI you want to resolve. To match the default namespace, pass an empty string. + /// The namespace URI to which the prefix maps or a null reference (Nothing in Visual Basic) if no matching prefix is found. + public override string LookupNamespace(string prefix) + { + return null; // there are no namespaces in SGML. + } + + /// + /// Resolves the entity reference for EntityReference nodes. + /// + /// SgmlReader does not resolve or return entities. + public override void ResolveEntity() + { + // We never return any entity reference nodes, so this should never be called. + throw new InvalidOperationException("Not on an entity reference."); + } + + /// + /// Parses the attribute value into one or more Text, EntityReference, or EndEntity nodes. + /// + /// + /// true if there are nodes to return. false if the reader is not positioned on an attribute node when the initial call is made or if all the + /// attribute values have been read. An empty attribute, such as, misc="", returns true with a single node with a value of string.Empty. + /// + public override bool ReadAttributeValue() + { + if (this.m_state == State.Attr) + { + this.m_state = State.AttrValue; + return true; + } + else if (this.m_state == State.AttrValue) + { + return false; + } + else + throw new InvalidOperationException("Not on an attribute."); + } + + private void Validate(Node node) + { + if (this.m_dtd != null) + { + ElementDecl e = this.m_dtd.FindElement(node.Name); + if (e != null) + { + node.DtdType = e; + if (e.ContentModel.DeclaredContent == DeclaredContent.EMPTY) + node.IsEmpty = true; + } + } + } + + private static void ValidateAttribute(Node node, Attribute a) + { + ElementDecl e = node.DtdType; + if (e != null) + { + AttDef ad = e.FindAttribute(a.Name); + if (ad != null) + { + a.DtdType = ad; + } + } + } + + private static bool ValidAttributeName(string name) + { + try + { + XmlConvert.VerifyNMTOKEN(name); + int index = name.IndexOf(':'); + if (index >= 0) + { + XmlConvert.VerifyNCName(name.Substring(index + 1)); + } + + return true; + } + catch (XmlException) + { + return false; + } + catch (ArgumentNullException) + { + // (steveb) this is probably a bug in XmlConvert.VerifyNCName when passing in an empty string + return false; + } + } + + private void ValidateContent(Node node) + { + if (node.NodeType == XmlNodeType.Element) + { + if (!VerifyName(node.Name)) + { + Pop(); + Push(null, XmlNodeType.Text, "<" + node.Name + ">"); + return; + } + } + + if (this.m_dtd != null) + { + // See if this element is allowed inside the current element. + // If it isn't, then auto-close elements until we find one + // that it is allowed to be in. + string name = node.Name.ToUpperInvariant(); // DTD is in upper case + int i = 0; + int top = this.m_stack.Count - 2; + if (node.DtdType != null) { + // it is a known element, let's see if it's allowed in the + // current context. + for (i = top; i > 0; i--) + { + Node n = (Node)this.m_stack[i]; + if (n.IsEmpty) + continue; // we'll have to pop this one + ElementDecl f = n.DtdType; + if (f != null) + { + if ((i == 2) && string.Equals(f.Name, "BODY", StringComparison.OrdinalIgnoreCase)) // NOTE (steveb): never close the BODY tag too early + break; + else if (string.Equals(f.Name, this.m_dtd.Name, StringComparison.OrdinalIgnoreCase)) + break; // can't pop the root element. + else if (f.CanContain(name, this.m_dtd)) + { + break; + } + else if (!f.EndTagOptional) + { + // If the end tag is not optional then we can't + // auto-close it. We'll just have to live with the + // junk we've found and move on. + break; + } + } + else + { + // Since we don't understand this tag anyway, + // we might as well allow this content! + break; + } + } + } + + if (i == 0) + { + // Tag was not found or is not allowed anywhere, ignore it and + // continue on. + return; + } + else if (i < top) + { + Node n = (Node)this.m_stack[top]; + if (i == top - 1 && string.Equals(name, n.Name, StringComparison.OrdinalIgnoreCase)) + { + // e.g. p not allowed inside p, not an interesting error. + } + else + { +#if DEBUG + string closing = ""; + for (int k = top; k >= i+1; k--) { + if (closing != "") closing += ","; + Node n2 = (Node)this.m_stack[k]; + closing += "<" + n2.Name + ">"; + } + Log("Element '{0}' not allowed inside '{1}', closing {2}.", name, n.Name, closing); +#endif + } + + this.m_state = State.AutoClose; + this.m_newnode = node; + Pop(); // save this new node until we pop the others + this.m_poptodepth = i + 1; + } + } + } + } } \ No newline at end of file diff --git a/SgmlReaderCore/SgmlReaderCore.csproj b/SgmlReaderCore/SgmlReaderCore.csproj new file mode 100644 index 0000000..c907f82 --- /dev/null +++ b/SgmlReaderCore/SgmlReaderCore.csproj @@ -0,0 +1,37 @@ + + + + netstandard2.0 + true + sgmlreader.snk + SgmlReaderCore + 0.9.0.0 + Microsoft, MindTouch (ported by Exodus) + SgmlReaderCore + Converts SGML to XML via XmlReader API + Copyright (c) 2002, Microsoft Corporation; Copyright (c) 2007-2013, MindTouch; Copyright (c) 2017, Exodus + true + + + + + + + + + + + Never + + + + + + Code + + + Code + + + + diff --git a/SGMLTests/ofx160.dtd b/SgmlReaderCore/ofx160.dtd similarity index 97% rename from SGMLTests/ofx160.dtd rename to SgmlReaderCore/ofx160.dtd index cf206bb..c1815bb 100644 --- a/SGMLTests/ofx160.dtd +++ b/SgmlReaderCore/ofx160.dtd @@ -1,3495 +1,3495 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/sgmlreaderdll/sgmlreader.snk b/SgmlReaderCore/sgmlreader.snk similarity index 100% rename from sgmlreaderdll/sgmlreader.snk rename to SgmlReaderCore/sgmlreader.snk diff --git a/SGMLTests/LoggingXmlReader.cs b/SgmlTestsCore/LoggingXmlReader.cs similarity index 99% rename from SGMLTests/LoggingXmlReader.cs rename to SgmlTestsCore/LoggingXmlReader.cs index 8ece6ff..6114a56 100644 --- a/SGMLTests/LoggingXmlReader.cs +++ b/SgmlTestsCore/LoggingXmlReader.cs @@ -23,11 +23,9 @@ using System; using System.IO; using System.Xml; -using log4net; -using NUnit.Framework; -using Sgml; -namespace SGMLTests { +namespace SGMLTestsCore +{ public class LoggingXmlReader : XmlReader { //--- Fields --- diff --git a/SGMLTests/Resources/.DS_Store b/SgmlTestsCore/Resources/.DS_Store similarity index 100% rename from SGMLTests/Resources/.DS_Store rename to SgmlTestsCore/Resources/.DS_Store diff --git a/SGMLTests/Resources/01.test b/SgmlTestsCore/Resources/01.test similarity index 92% rename from SGMLTests/Resources/01.test rename to SgmlTestsCore/Resources/01.test index 69c8600..eeb9e29 100644 --- a/SGMLTests/Resources/01.test +++ b/SgmlTestsCore/Resources/01.test @@ -1,10 +1,10 @@ - - - - -` - - - - + + + + +` + + + + \ No newline at end of file diff --git a/SGMLTests/Resources/02.test b/SgmlTestsCore/Resources/02.test similarity index 92% rename from SGMLTests/Resources/02.test rename to SgmlTestsCore/Resources/02.test index fbc7cc2..f51ce60 100644 --- a/SGMLTests/Resources/02.test +++ b/SgmlTestsCore/Resources/02.test @@ -1,11 +1,11 @@ - - - - -` - - - bar"/> - - + + + + +` + + + bar"/> + + \ No newline at end of file diff --git a/SGMLTests/Resources/03.test b/SgmlTestsCore/Resources/03.test similarity index 93% rename from SGMLTests/Resources/03.test rename to SgmlTestsCore/Resources/03.test index 94a6c87..923248f 100644 --- a/SGMLTests/Resources/03.test +++ b/SgmlTestsCore/Resources/03.test @@ -1,10 +1,10 @@ - - - - -` - - - - + + + + +` + + + + \ No newline at end of file diff --git a/SGMLTests/Resources/04.test b/SgmlTestsCore/Resources/04.test similarity index 93% rename from SGMLTests/Resources/04.test rename to SgmlTestsCore/Resources/04.test index dd8a459..d682f4e 100644 --- a/SGMLTests/Resources/04.test +++ b/SgmlTestsCore/Resources/04.test @@ -1,11 +1,11 @@ - - -&test   blah blah - - -` - - - &test  blah blah - + + +&test   blah blah + + +` + + + &test  blah blah + \ No newline at end of file diff --git a/SGMLTests/Resources/05.test b/SgmlTestsCore/Resources/05.test similarity index 93% rename from SGMLTests/Resources/05.test rename to SgmlTestsCore/Resources/05.test index dc3a413..223b53c 100644 --- a/SGMLTests/Resources/05.test +++ b/SgmlTestsCore/Resources/05.test @@ -1,11 +1,11 @@ - - -

bad char: 􀀀

- - -` - - -

bad char: ô€€€

- + + +

bad char: 􀀀

+ + +` + + +

bad char: ô€€€

+ \ No newline at end of file diff --git a/SGMLTests/Resources/06.test b/SgmlTestsCore/Resources/06.test similarity index 96% rename from SGMLTests/Resources/06.test rename to SgmlTestsCore/Resources/06.test index 09ea75e..2748a30 100644 --- a/SGMLTests/Resources/06.test +++ b/SgmlTestsCore/Resources/06.test @@ -1,20 +1,20 @@ - - -

- - -` - - -

- - - -

- + + +

+ + +` + + +

+ + + +

+ \ No newline at end of file diff --git a/SGMLTests/Resources/07.test b/SgmlTestsCore/Resources/07.test similarity index 96% rename from SGMLTests/Resources/07.test rename to SgmlTestsCore/Resources/07.test index 4a4d874..4694af2 100644 --- a/SGMLTests/Resources/07.test +++ b/SgmlTestsCore/Resources/07.test @@ -1,16 +1,16 @@ - - -
- - -` - - -
- - - - -
- + + +
+ + +` + + +
+ + + + +
+ \ No newline at end of file diff --git a/SGMLTests/Resources/08.test b/SgmlTestsCore/Resources/08.test similarity index 94% rename from SGMLTests/Resources/08.test rename to SgmlTestsCore/Resources/08.test index 31d88bb..88a087e 100644 --- a/SGMLTests/Resources/08.test +++ b/SgmlTestsCore/Resources/08.test @@ -1,17 +1,17 @@ - - - -

test

- - -` - - - -

test

- + + + +

test

+ + +` + + + +

test

+ \ No newline at end of file diff --git a/SGMLTests/Resources/09.test b/SgmlTestsCore/Resources/09.test similarity index 95% rename from SGMLTests/Resources/09.test rename to SgmlTestsCore/Resources/09.test index c941456..d8269a7 100644 --- a/SGMLTests/Resources/09.test +++ b/SgmlTestsCore/Resources/09.test @@ -1,7 +1,7 @@ - -This

is bad

XHTML. - -` - - This

is bad

XHTML. + +This

is bad

XHTML. + +` + + This

is bad

XHTML. \ No newline at end of file diff --git a/SGMLTests/Resources/10.test b/SgmlTestsCore/Resources/10.test similarity index 96% rename from SGMLTests/Resources/10.test rename to SgmlTestsCore/Resources/10.test index a51d1d7..4f87aa9 100644 --- a/SGMLTests/Resources/10.test +++ b/SgmlTestsCore/Resources/10.test @@ -1,7 +1,7 @@ - -some text more text - -` - -some text more text + +some text more text + +` + +some text more text \ No newline at end of file diff --git a/SGMLTests/Resources/11.test b/SgmlTestsCore/Resources/11.test similarity index 95% rename from SGMLTests/Resources/11.test rename to SgmlTestsCore/Resources/11.test index 7355794..a960bf3 100644 --- a/SGMLTests/Resources/11.test +++ b/SgmlTestsCore/Resources/11.test @@ -1,9 +1,9 @@ - -cnn - -` - - - cnn - + +cnn + +` + + + cnn + \ No newline at end of file diff --git a/SGMLTests/Resources/12.test b/SgmlTestsCore/Resources/12.test similarity index 89% rename from SGMLTests/Resources/12.test rename to SgmlTestsCore/Resources/12.test index 9394669..57632bd 100644 --- a/SGMLTests/Resources/12.test +++ b/SgmlTestsCore/Resources/12.test @@ -1,19 +1,19 @@ - - - - - -` - - - - - ---> - - + + + + + +` + + + + + +--> + + \ No newline at end of file diff --git a/SGMLTests/Resources/13.test b/SgmlTestsCore/Resources/13.test similarity index 92% rename from SGMLTests/Resources/13.test rename to SgmlTestsCore/Resources/13.test index bd14d5d..6f57fc0 100644 --- a/SGMLTests/Resources/13.test +++ b/SgmlTestsCore/Resources/13.test @@ -1,7 +1,7 @@ - - ' - -` - - ' + + ' + +` + + ' \ No newline at end of file diff --git a/SGMLTests/Resources/14.test b/SgmlTestsCore/Resources/14.test similarity index 95% rename from SGMLTests/Resources/14.test rename to SgmlTestsCore/Resources/14.test index 8993e2a..1b64736 100644 --- a/SGMLTests/Resources/14.test +++ b/SgmlTestsCore/Resources/14.test @@ -1,6 +1,6 @@ - + \ No newline at end of file diff --git a/SGMLTests/Resources/15.test b/SgmlTestsCore/Resources/15.test similarity index 97% rename from SGMLTests/Resources/15.test rename to SgmlTestsCore/Resources/15.test index 4ae635a..3de7d20 100644 --- a/SGMLTests/Resources/15.test +++ b/SgmlTestsCore/Resources/15.test @@ -1,9 +1,9 @@ -
-` - - - - -
- +
+` + + + + +
+ \ No newline at end of file diff --git a/SGMLTests/Resources/16.test b/SgmlTestsCore/Resources/16.test similarity index 92% rename from SGMLTests/Resources/16.test rename to SgmlTestsCore/Resources/16.test index dcb074d..32472ad 100644 --- a/SGMLTests/Resources/16.test +++ b/SgmlTestsCore/Resources/16.test @@ -1,7 +1,7 @@ - - ² - -` - - ² + + ² + +` + + ² \ No newline at end of file diff --git a/SGMLTests/Resources/17.test b/SgmlTestsCore/Resources/17.test similarity index 94% rename from SGMLTests/Resources/17.test rename to SgmlTestsCore/Resources/17.test index 801ea94..9b287d3 100644 --- a/SGMLTests/Resources/17.test +++ b/SgmlTestsCore/Resources/17.test @@ -1,9 +1,9 @@ - - - - - -` - - <something@something.com> + + + + + +` + + <something@something.com> \ No newline at end of file diff --git a/SGMLTests/Resources/18.test b/SgmlTestsCore/Resources/18.test similarity index 96% rename from SGMLTests/Resources/18.test rename to SgmlTestsCore/Resources/18.test index ef596b3..62f20ae 100644 --- a/SGMLTests/Resources/18.test +++ b/SgmlTestsCore/Resources/18.test @@ -1,11 +1,11 @@ - - - - - -` - - - - + + + + + +` + + + + \ No newline at end of file diff --git a/SGMLTests/Resources/19.test b/SgmlTestsCore/Resources/19.test similarity index 94% rename from SGMLTests/Resources/19.test rename to SgmlTestsCore/Resources/19.test index 2293c11..9c94ea2 100644 --- a/SGMLTests/Resources/19.test +++ b/SgmlTestsCore/Resources/19.test @@ -1,13 +1,13 @@ - - - - foo - - -` - - - - foo - + + + + foo + + +` + + + + foo + \ No newline at end of file diff --git a/SGMLTests/Resources/20.test b/SgmlTestsCore/Resources/20.test similarity index 95% rename from SGMLTests/Resources/20.test rename to SgmlTestsCore/Resources/20.test index 462f2ff..937c270 100644 --- a/SGMLTests/Resources/20.test +++ b/SgmlTestsCore/Resources/20.test @@ -1,8 +1,8 @@ -Titlefoo -` - - - Title - foo - +Titlefoo +` + + + Title + foo + \ No newline at end of file diff --git a/SGMLTests/Resources/21.test b/SgmlTestsCore/Resources/21.test similarity index 97% rename from SGMLTests/Resources/21.test rename to SgmlTestsCore/Resources/21.test index 229b8c9..1d500a5 100644 --- a/SGMLTests/Resources/21.test +++ b/SgmlTestsCore/Resources/21.test @@ -1,17 +1,17 @@ - -

- - -lm - -

- -` - - -

- - -lm - -

- + +

+ + -lm + +

+ +` + + +

+ + -lm + +

+ \ No newline at end of file diff --git a/SGMLTests/Resources/22.test b/SgmlTestsCore/Resources/22.test similarity index 97% rename from SGMLTests/Resources/22.test rename to SgmlTestsCore/Resources/22.test index 012af94..15c46ef 100644 --- a/SGMLTests/Resources/22.test +++ b/SgmlTestsCore/Resources/22.test @@ -1,5 +1,5 @@ -do not lose this text -` - - do not lose this text +do not lose this text +` + + do not lose this text \ No newline at end of file diff --git a/SGMLTests/Resources/23.test b/SgmlTestsCore/Resources/23.test similarity index 98% rename from SGMLTests/Resources/23.test rename to SgmlTestsCore/Resources/23.test index b343572..688f6b8 100644 --- a/SGMLTests/Resources/23.test +++ b/SgmlTestsCore/Resources/23.test @@ -1,6 +1,6 @@ - -` - - - + +` + + + \ No newline at end of file diff --git a/SGMLTests/Resources/24.test b/SgmlTestsCore/Resources/24.test similarity index 97% rename from SGMLTests/Resources/24.test rename to SgmlTestsCore/Resources/24.test index a2ba79b..7c5abca 100644 --- a/SGMLTests/Resources/24.test +++ b/SgmlTestsCore/Resources/24.test @@ -1,6 +1,6 @@ - -` - - - + +` + + + \ No newline at end of file diff --git a/SGMLTests/Resources/25.test b/SgmlTestsCore/Resources/25.test similarity index 97% rename from SGMLTests/Resources/25.test rename to SgmlTestsCore/Resources/25.test index a2ba79b..7c5abca 100644 --- a/SGMLTests/Resources/25.test +++ b/SgmlTestsCore/Resources/25.test @@ -1,6 +1,6 @@ - -` - - - + +` + + + \ No newline at end of file diff --git a/SGMLTests/Resources/26.test b/SgmlTestsCore/Resources/26.test similarity index 97% rename from SGMLTests/Resources/26.test rename to SgmlTestsCore/Resources/26.test index aebbba0..158411e 100644 --- a/SGMLTests/Resources/26.test +++ b/SgmlTestsCore/Resources/26.test @@ -1,5 +1,5 @@ - -` - - + +` + + \ No newline at end of file diff --git a/SGMLTests/Resources/27.test b/SgmlTestsCore/Resources/27.test similarity index 97% rename from SGMLTests/Resources/27.test rename to SgmlTestsCore/Resources/27.test index aebbba0..158411e 100644 --- a/SGMLTests/Resources/27.test +++ b/SgmlTestsCore/Resources/27.test @@ -1,5 +1,5 @@ - -` - - + +` + + \ No newline at end of file diff --git a/SGMLTests/Resources/28.test b/SgmlTestsCore/Resources/28.test similarity index 97% rename from SGMLTests/Resources/28.test rename to SgmlTestsCore/Resources/28.test index 1f3139e..928fffd 100644 --- a/SGMLTests/Resources/28.test +++ b/SgmlTestsCore/Resources/28.test @@ -1,5 +1,5 @@ -AB -` - - AB +AB +` + + AB \ No newline at end of file diff --git a/SGMLTests/Resources/29.test b/SgmlTestsCore/Resources/29.test similarity index 97% rename from SGMLTests/Resources/29.test rename to SgmlTestsCore/Resources/29.test index 7fd4a35..57a76c2 100644 --- a/SGMLTests/Resources/29.test +++ b/SgmlTestsCore/Resources/29.test @@ -1,5 +1,5 @@ -AB -` - - AB +AB +` + + AB \ No newline at end of file diff --git a/SGMLTests/Resources/30.test b/SgmlTestsCore/Resources/30.test similarity index 97% rename from SGMLTests/Resources/30.test rename to SgmlTestsCore/Resources/30.test index 6c66791..5d5e664 100644 --- a/SGMLTests/Resources/30.test +++ b/SgmlTestsCore/Resources/30.test @@ -1,5 +1,5 @@ -AB -` - - AB +AB +` + + AB \ No newline at end of file diff --git a/SGMLTests/Resources/31.test b/SgmlTestsCore/Resources/31.test similarity index 91% rename from SGMLTests/Resources/31.test rename to SgmlTestsCore/Resources/31.test index 12265fa..5c62b67 100644 --- a/SGMLTests/Resources/31.test +++ b/SgmlTestsCore/Resources/31.test @@ -1,6 +1,6 @@ - -` - - - + +` + + + \ No newline at end of file diff --git a/SGMLTests/Resources/32.test b/SgmlTestsCore/Resources/32.test similarity index 81% rename from SGMLTests/Resources/32.test rename to SgmlTestsCore/Resources/32.test index 2f11a82..b65212d 100644 --- a/SGMLTests/Resources/32.test +++ b/SgmlTestsCore/Resources/32.test @@ -1,8 +1,8 @@ - - - -` - - - + + + +` + + + \ No newline at end of file diff --git a/SGMLTests/Resources/33.test b/SgmlTestsCore/Resources/33.test similarity index 95% rename from SGMLTests/Resources/33.test rename to SgmlTestsCore/Resources/33.test index 021f9c5..6da4a9b 100644 --- a/SGMLTests/Resources/33.test +++ b/SgmlTestsCore/Resources/33.test @@ -1,5 +1,5 @@ - - -` - + + +` + \ No newline at end of file diff --git a/SGMLTests/Resources/34.test b/SgmlTestsCore/Resources/34.test similarity index 95% rename from SGMLTests/Resources/34.test rename to SgmlTestsCore/Resources/34.test index 4c699c8..d42c4a0 100644 --- a/SGMLTests/Resources/34.test +++ b/SgmlTestsCore/Resources/34.test @@ -1,10 +1,10 @@ - - - - -` - - - - + + + + +` + + + + \ No newline at end of file diff --git a/SGMLTests/Resources/35.test b/SgmlTestsCore/Resources/35.test similarity index 93% rename from SGMLTests/Resources/35.test rename to SgmlTestsCore/Resources/35.test index f17e66c..3b6ad2e 100644 --- a/SGMLTests/Resources/35.test +++ b/SgmlTestsCore/Resources/35.test @@ -1,16 +1,16 @@ - - - -` - - -
row1
row2
- - - - - - -
row1
row2
- + + + +` + + +
row1
row2
+ + + + + + +
row1
row2
+ \ No newline at end of file diff --git a/SGMLTests/Resources/36.test b/SgmlTestsCore/Resources/36.test similarity index 92% rename from SGMLTests/Resources/36.test rename to SgmlTestsCore/Resources/36.test index d8c0f79..c70ec31 100644 --- a/SGMLTests/Resources/36.test +++ b/SgmlTestsCore/Resources/36.test @@ -1,22 +1,22 @@ - - - - - -

hello

- - -` - - - - - -

hello

- + + + + + +

hello

+ + +` + + + + + +

hello

+ \ No newline at end of file diff --git a/SGMLTests/Resources/37.test b/SgmlTestsCore/Resources/37.test similarity index 97% rename from SGMLTests/Resources/37.test rename to SgmlTestsCore/Resources/37.test index d1a76c7..7940bfa 100644 --- a/SGMLTests/Resources/37.test +++ b/SgmlTestsCore/Resources/37.test @@ -1,5 +1,5 @@ - - ]]> - -` + + ]]> + +` ]]> \ No newline at end of file diff --git a/SGMLTests/Resources/38.test b/SgmlTestsCore/Resources/38.test similarity index 95% rename from SGMLTests/Resources/38.test rename to SgmlTestsCore/Resources/38.test index fa36b4f..9e95a74 100644 --- a/SGMLTests/Resources/38.test +++ b/SgmlTestsCore/Resources/38.test @@ -1,6 +1,6 @@ -

This is really . -` - -

This is really < p>. -

+

This is really . +` + +

This is really < p>. +

\ No newline at end of file diff --git a/SGMLTests/Resources/39.test b/SgmlTestsCore/Resources/39.test similarity index 95% rename from SGMLTests/Resources/39.test rename to SgmlTestsCore/Resources/39.test index a2adcee..4e5b1fe 100644 --- a/SGMLTests/Resources/39.test +++ b/SgmlTestsCore/Resources/39.test @@ -1,5 +1,5 @@ -Text……… -` - - Text……… +Text……… +` + + Text……… \ No newline at end of file diff --git a/SGMLTests/Resources/40.test b/SgmlTestsCore/Resources/40.test similarity index 90% rename from SGMLTests/Resources/40.test rename to SgmlTestsCore/Resources/40.test index 3014c0b..ebe6a58 100644 --- a/SGMLTests/Resources/40.test +++ b/SgmlTestsCore/Resources/40.test @@ -1,7 +1,7 @@ -

©

-
-` - -

©

-
+

©

+
+` + +

©

+
\ No newline at end of file diff --git a/SGMLTests/Resources/41.test b/SgmlTestsCore/Resources/41.test similarity index 95% rename from SGMLTests/Resources/41.test rename to SgmlTestsCore/Resources/41.test index e3dd237..b4ac45d 100644 --- a/SGMLTests/Resources/41.test +++ b/SgmlTestsCore/Resources/41.test @@ -1,7 +1,7 @@ - - - -` - - + + + +` + + \ No newline at end of file diff --git a/SGMLTests/Resources/42.test b/SgmlTestsCore/Resources/42.test similarity index 95% rename from SGMLTests/Resources/42.test rename to SgmlTestsCore/Resources/42.test index 92e9c95..bce2bfa 100644 --- a/SGMLTests/Resources/42.test +++ b/SgmlTestsCore/Resources/42.test @@ -1,7 +1,7 @@ - - - -` - - + + + +` + + \ No newline at end of file diff --git a/SGMLTests/Resources/43.test b/SgmlTestsCore/Resources/43.test similarity index 96% rename from SGMLTests/Resources/43.test rename to SgmlTestsCore/Resources/43.test index 64ab42c..253b838 100644 --- a/SGMLTests/Resources/43.test +++ b/SgmlTestsCore/Resources/43.test @@ -1,5 +1,5 @@ - - -` - + + +` + \ No newline at end of file diff --git a/SGMLTests/Resources/44.test b/SgmlTestsCore/Resources/44.test similarity index 91% rename from SGMLTests/Resources/44.test rename to SgmlTestsCore/Resources/44.test index da6cd93..6723621 100644 --- a/SGMLTests/Resources/44.test +++ b/SgmlTestsCore/Resources/44.test @@ -1,5 +1,5 @@ -foo -` - - foo +foo +` + + foo \ No newline at end of file diff --git a/SGMLTests/Resources/45.test b/SgmlTestsCore/Resources/45.test similarity index 96% rename from SGMLTests/Resources/45.test rename to SgmlTestsCore/Resources/45.test index 48c2758..6cba4d2 100644 --- a/SGMLTests/Resources/45.test +++ b/SgmlTestsCore/Resources/45.test @@ -1,3 +1,3 @@ -blah foo -` +blah foo +` blah foo \ No newline at end of file diff --git a/SGMLTests/Resources/46.test b/SgmlTestsCore/Resources/46.test similarity index 96% rename from SGMLTests/Resources/46.test rename to SgmlTestsCore/Resources/46.test index 48c2758..6cba4d2 100644 --- a/SGMLTests/Resources/46.test +++ b/SgmlTestsCore/Resources/46.test @@ -1,3 +1,3 @@ -blah foo -` +blah foo +` blah foo \ No newline at end of file diff --git a/SGMLTests/Resources/47.test b/SgmlTestsCore/Resources/47.test similarity index 93% rename from SGMLTests/Resources/47.test rename to SgmlTestsCore/Resources/47.test index d021537..4a57d11 100644 --- a/SGMLTests/Resources/47.test +++ b/SgmlTestsCore/Resources/47.test @@ -1,6 +1,6 @@ - foo -` - - - foo + foo +` + + + foo \ No newline at end of file diff --git a/SGMLTests/Resources/48.test b/SgmlTestsCore/Resources/48.test similarity index 93% rename from SGMLTests/Resources/48.test rename to SgmlTestsCore/Resources/48.test index f72d527..d8dc8fa 100644 --- a/SGMLTests/Resources/48.test +++ b/SgmlTestsCore/Resources/48.test @@ -1,9 +1,9 @@ - - -

ZZZ test Z

-` - - -

ZZZ test Z

- + + +

ZZZ test Z

+` + + +

ZZZ test Z

+ \ No newline at end of file diff --git a/SGMLTests/Resources/49.test b/SgmlTestsCore/Resources/49.test similarity index 93% rename from SGMLTests/Resources/49.test rename to SgmlTestsCore/Resources/49.test index df5ccd9..97a421a 100644 --- a/SGMLTests/Resources/49.test +++ b/SgmlTestsCore/Resources/49.test @@ -1,6 +1,6 @@ - - - -` - + + + +` + \ No newline at end of file diff --git a/SGMLTests/Resources/50.test b/SgmlTestsCore/Resources/50.test similarity index 96% rename from SGMLTests/Resources/50.test rename to SgmlTestsCore/Resources/50.test index 3992eb2..d7bc8e2 100644 --- a/SGMLTests/Resources/50.test +++ b/SgmlTestsCore/Resources/50.test @@ -1,8 +1,8 @@ - - -` - - - - + + +` + + + + \ No newline at end of file diff --git a/SGMLTests/Resources/51.test b/SgmlTestsCore/Resources/51.test similarity index 97% rename from SGMLTests/Resources/51.test rename to SgmlTestsCore/Resources/51.test index 2d705a2..c0ec665 100644 --- a/SGMLTests/Resources/51.test +++ b/SgmlTestsCore/Resources/51.test @@ -1,7 +1,7 @@ -Welcome to MSN.com -` - - - Welcome to MSN.com - +Welcome to MSN.com +` + + + Welcome to MSN.com + \ No newline at end of file diff --git a/SGMLTests/Resources/52.test b/SgmlTestsCore/Resources/52.test similarity index 97% rename from SGMLTests/Resources/52.test rename to SgmlTestsCore/Resources/52.test index 2d705a2..c0ec665 100644 --- a/SGMLTests/Resources/52.test +++ b/SgmlTestsCore/Resources/52.test @@ -1,7 +1,7 @@ -Welcome to MSN.com -` - - - Welcome to MSN.com - +Welcome to MSN.com +` + + + Welcome to MSN.com + \ No newline at end of file diff --git a/SGMLTests/Resources/53.test b/SgmlTestsCore/Resources/53.test similarity index 95% rename from SGMLTests/Resources/53.test rename to SgmlTestsCore/Resources/53.test index 3d0535f..814de84 100644 --- a/SGMLTests/Resources/53.test +++ b/SgmlTestsCore/Resources/53.test @@ -1,92 +1,92 @@ - - - - - -0 -INFO - -20040101045920.735[-5:EST] -ENG - -Discover Financial Services -7101 - - - - -58EB987F-1AAD-4EC0-9C6E-291CA224040 - -0 -INFO -8 - -USD - -123456789012345 - -20031129070000.000[-5:EST] -20031129120000.000[-5:EST] - - --2243.22 -20040101070000.000[-5:EST] - - - - - -` - - - - - 0 - - INFO - - - 20040101045920.735[-5:EST] - - ENG - - - Discover Financial Services - - 7101 - - - - - - 58EB987F-1AAD-4EC0-9C6E-291CA224040 - - - 0 - - INFO - - 8 - - - USD - - - 123456789012345 - - - 20031129070000.000[-5:EST] - - 20031129120000.000[-5:EST] - - - - -2243.22 - - 20040101070000.000[-5:EST] - - - - - + + + + + +0 +INFO + +20040101045920.735[-5:EST] +ENG + +Discover Financial Services +7101 + + + + +58EB987F-1AAD-4EC0-9C6E-291CA224040 + +0 +INFO +8 + +USD + +123456789012345 + +20031129070000.000[-5:EST] +20031129120000.000[-5:EST] + + +-2243.22 +20040101070000.000[-5:EST] + + + + + +` + + + + + 0 + + INFO + + + 20040101045920.735[-5:EST] + + ENG + + + Discover Financial Services + + 7101 + + + + + + 58EB987F-1AAD-4EC0-9C6E-291CA224040 + + + 0 + + INFO + + 8 + + + USD + + + 123456789012345 + + + 20031129070000.000[-5:EST] + + 20031129120000.000[-5:EST] + + + + -2243.22 + + 20040101070000.000[-5:EST] + + + + + \ No newline at end of file diff --git a/SGMLTests/Resources/54.test b/SgmlTestsCore/Resources/54.test similarity index 100% rename from SGMLTests/Resources/54.test rename to SgmlTestsCore/Resources/54.test diff --git a/SGMLTests/Resources/55.test b/SgmlTestsCore/Resources/55.test similarity index 96% rename from SGMLTests/Resources/55.test rename to SgmlTestsCore/Resources/55.test index 7a1a0b9..3b4af19 100644 --- a/SGMLTests/Resources/55.test +++ b/SgmlTestsCore/Resources/55.test @@ -1,7 +1,7 @@ - - &"<>' - -` - - &"<>' + + &"<>' + +` + + &"<>' \ No newline at end of file diff --git a/SGMLTests/Resources/56.test b/SgmlTestsCore/Resources/56.test similarity index 100% rename from SGMLTests/Resources/56.test rename to SgmlTestsCore/Resources/56.test diff --git a/SGMLTests/Resources/57.test b/SgmlTestsCore/Resources/57.test similarity index 92% rename from SGMLTests/Resources/57.test rename to SgmlTestsCore/Resources/57.test index 7d3bea6..fc6224d 100644 --- a/SGMLTests/Resources/57.test +++ b/SgmlTestsCore/Resources/57.test @@ -1,3 +1,3 @@ -

&#

-` +

&#

+`

&#

diff --git a/SGMLTests/Resources/58.test b/SgmlTestsCore/Resources/58.test similarity index 93% rename from SGMLTests/Resources/58.test rename to SgmlTestsCore/Resources/58.test index 2a74bbc..ec7e0ac 100644 --- a/SGMLTests/Resources/58.test +++ b/SgmlTestsCore/Resources/58.test @@ -1,3 +1,3 @@ -

&#;

-` +

&#;

+`

&#;

\ No newline at end of file diff --git a/SGMLTests/Resources/59.test b/SgmlTestsCore/Resources/59.test similarity index 93% rename from SGMLTests/Resources/59.test rename to SgmlTestsCore/Resources/59.test index ca82b93..ca24fc6 100644 --- a/SGMLTests/Resources/59.test +++ b/SgmlTestsCore/Resources/59.test @@ -1,3 +1,3 @@ -

&#x

-` +

&#x

+`

&#x

\ No newline at end of file diff --git a/SGMLTests/Resources/60.test b/SgmlTestsCore/Resources/60.test similarity index 94% rename from SGMLTests/Resources/60.test rename to SgmlTestsCore/Resources/60.test index 94547f4..b5a5d18 100644 --- a/SGMLTests/Resources/60.test +++ b/SgmlTestsCore/Resources/60.test @@ -1,3 +1,3 @@ -

&#x;

-` +

&#x;

+`

&#x;

\ No newline at end of file diff --git a/SGMLTests/Resources/61.test b/SgmlTestsCore/Resources/61.test similarity index 100% rename from SGMLTests/Resources/61.test rename to SgmlTestsCore/Resources/61.test diff --git a/SGMLTests/Resources/original.test b/SgmlTestsCore/Resources/original.test similarity index 94% rename from SGMLTests/Resources/original.test rename to SgmlTestsCore/Resources/original.test index 6eb6360..bd63e41 100644 --- a/SGMLTests/Resources/original.test +++ b/SgmlTestsCore/Resources/original.test @@ -1,513 +1,513 @@ -`-html - - - - -` - - - - - -`-html - - - - -` - - - bar"/> - - - -`-html - - - - -` - - - - - -`-html - - -&test   blah blah - - -` - - - &test  blah blah - - -`-html - - -    blah blah - - -` - - -    blah blah - - -`-html - - -

bad char: 􀀀

- - -` - - -

bad char: ô€€€

- - -`-html - - -

- - -` - - -

- - - -

- - -`-html - - -
- - -` - - -
- - - - -
- - -`-html - - - -

test

- - -` - - - -

test

- - -`-html -lower - -This

is bad

XHTML. - -` - - This

is bad

XHTML. - -`-html -noformat - -some text more text - -` - -some text more text - -`-html - -cnn - -` - - - cnn - - -`-html - - - - - -` - - - - - ---> - - - -`-html - - ' - -` - - ' - -`-html - - -`-html -
-` - - - - -
- - -`-html - - ² - -` - - ² - -`-html - - - - - -` - - <something@something.com> - -`-html - - - - - -` - - - - - -`-html - - - - foo - - -` - - - - foo - - -`-html -Titlefoo -` - - - Title - foo - - -`-html -testclone - -

- - -lm - -

- -` - - -

- - -lm - -

- - -`-html -do not lose this text -` - - do not lose this text - -`-html - -` - - - - -`-html - -` - - - - -`-html -testclone - -` - - - - -`-html - -` - - - -`-html -testclone - -` - - - -`-html -AB -` - - AB - -`-html -testclone -AB -` - - AB - -`-html -AB -` - - AB - -`-html -testclone -AB -` - - AB - -`-html - -` - - - - -`-html - - - -` - - - - -`-html - - -` - - -`-html -ignore - - - - -` - - - - - -`-html - - - -` - - -
row1
row2
- - - - - - -
row1
row2
- - -`-html - - - - - -

hello

- - -` - - - - - -

hello

- - -`-html - - ]]> - -` - ]]> -`-html -

This is really . -` - -

This is really < p>. -

- -`-html -Text……… -` - - Text……… - -`-html -

©

-
-` - -

©

-
- -`-html - - - -` - - - -`-html - - - -` - - - -`-lower -html - - -` - - -`-html -testdoc -foo -` - - foo - -`-html -testdoc -blah foo -` -blah foo -`-html -testdoc - foo -` - - - foo - -` - - -

ZZZ test Z

-` - - -

ZZZ test Z

- - -`-html -testdoc - - - -` - - -`-html - - -` - - - - - -`-html -Welcome to MSN.com -` - - - Welcome to MSN.com - - -`-html -testclone -Welcome to MSN.com -` - - - Welcome to MSN.com - - +`-html + + + + +` + + + + + +`-html + + + + +` + + + bar"/> + + + +`-html + + + + +` + + + + + +`-html + + +&test   blah blah + + +` + + + &test  blah blah + + +`-html + + +    blah blah + + +` + + +    blah blah + + +`-html + + +

bad char: 􀀀

+ + +` + + +

bad char: ô€€€

+ + +`-html + + +

+ + +` + + +

+ + + +

+ + +`-html + + +
+ + +` + + +
+ + + + +
+ + +`-html + + + +

test

+ + +` + + + +

test

+ + +`-html -lower + +This

is bad

XHTML. + +` + + This

is bad

XHTML. + +`-html -noformat + +some text more text + +` + +some text more text + +`-html + +cnn + +` + + + cnn + + +`-html + + + + + +` + + + + + +--> + + + +`-html + + ' + +` + + ' + +`-html + + +`-html +
+` + + + + +
+ + +`-html + + ² + +` + + ² + +`-html + + + + + +` + + <something@something.com> + +`-html + + + + + +` + + + + + +`-html + + + + foo + + +` + + + + foo + + +`-html +Titlefoo +` + + + Title + foo + + +`-html -testclone + +

+ + -lm + +

+ +` + + +

+ + -lm + +

+ + +`-html +do not lose this text +` + + do not lose this text + +`-html + +` + + + + +`-html + +` + + + + +`-html -testclone + +` + + + + +`-html + +` + + + +`-html -testclone + +` + + + +`-html +AB +` + + AB + +`-html -testclone +AB +` + + AB + +`-html +AB +` + + AB + +`-html -testclone +AB +` + + AB + +`-html + +` + + + + +`-html + + + +` + + + + +`-html + + +` + + +`-html -ignore + + + + +` + + + + + +`-html + + + +` + + +
row1
row2
+ + + + + + +
row1
row2
+ + +`-html + + + + + +

hello

+ + +` + + + + + +

hello

+ + +`-html + + ]]> + +` + ]]> +`-html +

This is really . +` + +

This is really < p>. +

+ +`-html +Text……… +` + + Text……… + +`-html +

©

+
+` + +

©

+
+ +`-html + + + +` + + + +`-html + + + +` + + + +`-lower -html + + +` + + +`-html -testdoc +foo +` + + foo + +`-html -testdoc +blah foo +` +blah foo +`-html -testdoc + foo +` + + + foo + +` + + +

ZZZ test Z

+` + + +

ZZZ test Z

+ + +`-html -testdoc + + + +` + + +`-html + + +` + + + + + +`-html +Welcome to MSN.com +` + + + Welcome to MSN.com + + +`-html -testclone +Welcome to MSN.com +` + + + Welcome to MSN.com + + ` \ No newline at end of file diff --git a/SgmlTestsCore/SgmlTestsCore.csproj b/SgmlTestsCore/SgmlTestsCore.csproj new file mode 100644 index 0000000..83b99b9 --- /dev/null +++ b/SgmlTestsCore/SgmlTestsCore.csproj @@ -0,0 +1,21 @@ + + + netcoreapp2.0 + false + + + TRACE;DEBUG;NETCOREAPP2_0 + + + + + + + + + + + + + + \ No newline at end of file diff --git a/SGMLTests/Tests-Logic.cs b/SgmlTestsCore/Tests-Logic.cs similarity index 89% rename from SGMLTests/Tests-Logic.cs rename to SgmlTestsCore/Tests-Logic.cs index 306c4b0..c4041fd 100644 --- a/SGMLTests/Tests-Logic.cs +++ b/SgmlTestsCore/Tests-Logic.cs @@ -1,145 +1,149 @@ -/* - * - * Copyright (c) 2007-2013 MindTouch. All rights reserved. - * www.mindtouch.com oss@mindtouch.com - * - * For community documentation and downloads visit wiki.developer.mindtouch.com; - * please review the licensing section. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -using System; -using System.IO; -using System.Xml; -using log4net; -using NUnit.Framework; -using Sgml; - -namespace SGMLTests { - public partial class Tests { - - //--- Types --- - private delegate void XmlReaderTestCallback(XmlReader reader, XmlWriter xmlWriter); - - private enum XmlRender { - Doc, - DocClone, - Passthrough - } - - //--- Class Fields --- - private static ILog _log = LogManager.GetLogger(typeof(Tests)); - private static bool _debug = true; - - //--- Class Methods --- - private static void Test(string name, XmlRender xmlRender, CaseFolding caseFolding, string doctype, bool format) { - string source; - string expected; - ReadTest(name, out source, out expected); - expected = expected.Trim().Replace("\r", ""); - string actual; - - // determine how the document should be written back - XmlReaderTestCallback callback; - switch(xmlRender) { - case XmlRender.Doc: - - // test writing sgml reader using xml document load - callback = (reader, writer) => { - var doc = new XmlDocument(); - doc.Load(reader); - doc.WriteTo(writer); - }; - break; - case XmlRender.DocClone: - - // test writing sgml reader using xml document load and clone - callback = (reader, writer) => { - var doc = new XmlDocument(); - doc.Load(reader); - var clone = doc.Clone(); - clone.WriteTo(writer); - }; - break; - case XmlRender.Passthrough: - - // test writing sgml reader directly to xml writer - callback = (reader, writer) => { - reader.Read(); - while(!reader.EOF) { - writer.WriteNode(reader, true); - } - }; - break; - default: - throw new ArgumentException("unknown value", "xmlRender"); - } - actual = RunTest(caseFolding, doctype, format, source, callback); - Assert.AreEqual(expected, actual); - } - - private static void ReadTest(string name, out string before, out string after) { - var assembly = typeof(Tests).Assembly; - var stream = assembly.GetManifestResourceStream(assembly.FullName.Split(',')[0] + ".Resources." + name); - if(stream == null) { - throw new FileNotFoundException("unable to load requested resource: " + name); - } - using(var sr = new StreamReader(stream)) { - var test = sr.ReadToEnd().Split('`'); - before = test[0]; - after = test[1]; - } - } - - private static string RunTest(CaseFolding caseFolding, string doctype, bool format, string source, XmlReaderTestCallback callback) { - - // initialize sgml reader - XmlReader reader = new SgmlReader { - CaseFolding = caseFolding, - DocType = doctype, - InputStream = new StringReader(source), - WhitespaceHandling = format ? WhitespaceHandling.None : WhitespaceHandling.All - }; - - // check if we need to use the LoggingXmlReader - if(_debug) { - reader = new LoggingXmlReader(reader, Console.Out); - } - - // initialize xml writer - var stringWriter = new StringWriter(); - var xmlTextWriter = new XmlTextWriter(stringWriter); - if(format) { - xmlTextWriter.Formatting = Formatting.Indented; - } - callback(reader, xmlTextWriter); - xmlTextWriter.Close(); - - // reproduce the parsed document - var actual = stringWriter.ToString(); - - // ensure that output can be parsed again - try { - using(var stringReader = new StringReader(actual)) { - var doc = new XmlDocument(); - doc.Load(stringReader); - } - } catch(Exception) { - Assert.Fail("unable to parse sgml reader output:\n{0}", actual); - } - return actual.Trim().Replace("\r", ""); - } - } -} +/* + * + * Copyright (c) 2007-2013 MindTouch. All rights reserved. + * www.mindtouch.com oss@mindtouch.com + * + * For community documentation and downloads visit wiki.developer.mindtouch.com; + * please review the licensing section. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +using System; +using System.IO; +using System.Xml; +using log4net; +using SgmlCore; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +namespace SGMLTestsCore +{ + public enum XmlRender + { + Doc, + DocClone, + Passthrough + } + + public partial class Tests { + + //--- Types --- + private delegate void XmlReaderTestCallback(XmlReader reader, XmlWriter xmlWriter); + + + + //--- Class Fields --- + public static ILog _log = LogManager.GetLogger(typeof(Tests)); + private static bool _debug = true; + + //--- Class Methods --- + public static void Test(string name, XmlRender xmlRender, CaseFolding caseFolding, string doctype, bool format) { + string source; + string expected; + ReadTest(name, out source, out expected); + expected = expected.Trim().Replace("\r", ""); + string actual; + + // determine how the document should be written back + XmlReaderTestCallback callback; + switch(xmlRender) { + case XmlRender.Doc: + + // test writing sgml reader using xml document load + callback = (reader, writer) => { + var doc = new XmlDocument(); + doc.Load(reader); + doc.WriteTo(writer); + }; + break; + case XmlRender.DocClone: + + // test writing sgml reader using xml document load and clone + callback = (reader, writer) => { + var doc = new XmlDocument(); + doc.Load(reader); + var clone = doc.Clone(); + clone.WriteTo(writer); + }; + break; + case XmlRender.Passthrough: + + // test writing sgml reader directly to xml writer + callback = (reader, writer) => { + reader.Read(); + while(!reader.EOF) { + writer.WriteNode(reader, true); + } + }; + break; + default: + throw new ArgumentException("unknown value", "xmlRender"); + } + actual = RunTest(caseFolding, doctype, format, source, callback); + Assert.AreEqual(expected, actual); + } + + private static void ReadTest(string name, out string before, out string after) { + var assembly = typeof(Tests).Assembly; + var stream = assembly.GetManifestResourceStream(assembly.FullName.Split(',')[0] + ".Resources." + name); + if(stream == null) { + throw new FileNotFoundException("unable to load requested resource: " + name); + } + using(var sr = new StreamReader(stream)) { + var test = sr.ReadToEnd().Split('`'); + before = test[0]; + after = test[1]; + } + } + + private static string RunTest(CaseFolding caseFolding, string doctype, bool format, string source, XmlReaderTestCallback callback) { + + // initialize sgml reader + XmlReader reader = new SgmlReader { + CaseFolding = caseFolding, + DocType = doctype, + InputStream = new StringReader(source), + WhitespaceHandling = format ? WhitespaceHandling.None : WhitespaceHandling.All + }; + + // check if we need to use the LoggingXmlReader + if(_debug) { + reader = new LoggingXmlReader(reader, Console.Out); + } + + // initialize xml writer + var stringWriter = new StringWriter(); + var xmlTextWriter = new XmlTextWriter(stringWriter); + if(format) { + xmlTextWriter.Formatting = Formatting.Indented; + } + callback(reader, xmlTextWriter); + xmlTextWriter.Close(); + + // reproduce the parsed document + var actual = stringWriter.ToString(); + + // ensure that output can be parsed again + try { + using(var stringReader = new StringReader(actual)) { + var doc = new XmlDocument(); + doc.Load(stringReader); + } + } catch(Exception) { + Assert.Fail( $"unable to parse sgml reader output:\n{actual}"); + } + return actual.Trim().Replace("\r", ""); + } + } +} diff --git a/SGMLTests/Tests.cs b/SgmlTestsCore/Tests.cs similarity index 88% rename from SGMLTests/Tests.cs rename to SgmlTestsCore/Tests.cs index dfaf62c..4ad8196 100644 --- a/SGMLTests/Tests.cs +++ b/SgmlTestsCore/Tests.cs @@ -1,387 +1,389 @@ -/* - * - * Copyright (c) 2007-2013 MindTouch. All rights reserved. - * www.mindtouch.com oss@mindtouch.com - * - * For community documentation and downloads visit wiki.developer.mindtouch.com; - * please review the licensing section. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -using System; -using System.Diagnostics; -using System.IO; -using System.Xml; -using NUnit.Framework; -using Sgml; - -namespace SGMLTests { - - [TestFixture] - public partial class Tests { - - //--- Methods --- - - [Test] - public void Convert_attribute_without_value_01() { - Test("01.test", XmlRender.Passthrough, CaseFolding.None, "html", true); - } - - [Test] - public void Recover_from_attribute_with_missing_closing_quote_before_closing_tag_char_02() { - Test("02.test", XmlRender.Passthrough, CaseFolding.None, "html", true); - } - - [Test] - public void Recover_from_attribute_with_missing_closing_quote_before_opening_tag_char_03() { - Test("03.test", XmlRender.Passthrough, CaseFolding.None, "html", true); - } - - [Test] - public void Recover_from_text_with_wrong_entities_or_entities_with_missing_trailing_semicolon_04() { - Test("04.test", XmlRender.Passthrough, CaseFolding.None, "html", true); - } - - [Test] - public void Read_text_with_32bit_numeric_entity_05() { - Test("05.test", XmlRender.Passthrough, CaseFolding.None, "html", true); - } - - [Test] - public void Read_text_from_ms_office_06() { - Test("06.test", XmlRender.Passthrough, CaseFolding.None, "html", true); - } - - [Test] - public void Recover_from_attribute_with_nested_quotes_07() { - Test("07.test", XmlRender.Passthrough, CaseFolding.None, "html", true); - } - - [Test] - public void Allow_CData_section_with_xml_chars_08() { - Test("08.test", XmlRender.Passthrough, CaseFolding.None, "html", true); - } - - [Test] - public void Convert_tags_to_lower_09() { - Test("09.test", XmlRender.Passthrough, CaseFolding.ToLower, "html", true); - } - - [Test] - public void Test_whitespace_aware_processing_10() { - Test("10.test", XmlRender.Passthrough, CaseFolding.None, "html", false); - } - - [Test] - public void Recover_from_attribute_value_with_extra_quote_11() { - Test("11.test", XmlRender.Passthrough, CaseFolding.None, "html", true); - } - - [Test] - public void Recover_from_unclosed_xml_comment_12() { - Test("12.test", XmlRender.Passthrough, CaseFolding.None, "html", true); - } - - [Test] - public void Allow_xml_only_apos_entity_in_html_13() { - Test("13.test", XmlRender.Passthrough, CaseFolding.None, "html", true); - } - - [Test] - public void Recover_from_script_tag_as_root_element_14() { - Test("14.test", XmlRender.Passthrough, CaseFolding.None, "html", true); - } - - [Test] - public void Read_namespaced_attributes_with_missing_namespace_declaration_15() { - Test("15.test", XmlRender.Passthrough, CaseFolding.None, "html", true); - } - - [Test] - public void Decode_entity_16() { - Test("16.test", XmlRender.Passthrough, CaseFolding.None, "html", true); - } - - [Test] - public void Convert_element_with_illegal_tag_name_17() { - Test("17.test", XmlRender.Passthrough, CaseFolding.None, "html", true); - } - - [Test] - public void Strip_comments_in_CData_section_18() { - Test("18.test", XmlRender.Passthrough, CaseFolding.None, "html", true); - } - - [Test] - public void Nest_contents_of_style_element_into_a_CData_section_19() { - Test("19.test", XmlRender.Passthrough, CaseFolding.None, "html", true); - } - - [Test] - public void Dont_push_elements_out_of_the_body_element_even_when_illegal_inside_body_20() { - Test("20.test", XmlRender.Passthrough, CaseFolding.None, "html", true); - } - - [Test] - public void Clone_document_with_invalid_attribute_declarations_21() { - Test("21.test", XmlRender.DocClone, CaseFolding.None, "html", true); - } - - [Test] - public void Ignore_conditional_comments_22() { - Test("22.test", XmlRender.Passthrough, CaseFolding.None, "html", true); - } - - [Test] - public void Preserve_explicit_and_implicit_attribute_and_element_namespaces_23() { - Test("23.test", XmlRender.Passthrough, CaseFolding.None, "html", true); - } - - [Test] - public void Preserve_explicit_attribute_and_element_namespaces_24() { - Test("24.test", XmlRender.Passthrough, CaseFolding.None, "html", true); - } - - [Test] - public void Clone_document_with_explicit_attribute_and_element_namespaces_25() { - Test("25.test", XmlRender.DocClone, CaseFolding.None, "html", true); - } - - [Test] - public void Preserve_explicit_attribute_namespaces_26() { - Test("26.test", XmlRender.Passthrough, CaseFolding.None, "html", true); - } - - [Test] - public void Clone_document_with_explicit_attribute_namespaces_with_clone_27() { - Test("27.test", XmlRender.DocClone, CaseFolding.None, "html", true); - } - - [Test] - public void Clone_document_with_explicit_element_namespaces_with_clone_28() { - Test("28.test", XmlRender.DocClone, CaseFolding.None, "html", true); - } - - [Test] - public void Read_namespaced_elements_with_missing_namespace_declaration_29() { - Test("29.test", XmlRender.Passthrough, CaseFolding.None, "html", true); - } - - [Test] - public void Clone_document_with_namespaced_elements_with_missing_namespace_declaration_with_clone_30() { - Test("30.test", XmlRender.DocClone, CaseFolding.None, "html", true); - } - - [Test] - public void Parse_html_document_without_closing_body_tag_31() { - Test("31.test", XmlRender.Passthrough, CaseFolding.None, "html", true); - } - - [Test] - public void Parse_html_document_with_leading_whitespace_and_missing_closing_tag_32() { - Test("32.test", XmlRender.Passthrough, CaseFolding.None, "html", true); - } - - [Test] - public void Parse_doctype_33() { - Test("33.test", XmlRender.Passthrough, CaseFolding.None, "html", true); - } - - [Test, Ignore] - public void Push_invalid_element_out_of_body_tag_34() { - - // NOTE (bjorg): marked as ignore, because it conflicts with another behavior of never pushing elements from the body tag. - Test("34.test", XmlRender.Passthrough, CaseFolding.None, "html", true); - } - - [Test] - public void Add_missing_closing_element_tags_35() { - Test("35.test", XmlRender.Passthrough, CaseFolding.None, "html", true); - } - - [Test] - public void Preserve_xml_comments_inside_script_element_36() { - Test("36.test", XmlRender.Passthrough, CaseFolding.None, "html", true); - } - - [Test] - public void Allow_CDData_section_with_markup_37() { - Test("37.test", XmlRender.Passthrough, CaseFolding.None, "html", true); - } - - [Test] - public void Recover_from_rogue_open_tag_char_38() { - Test("38.test", XmlRender.Passthrough, CaseFolding.None, "html", true); - } - - [Test] - public void Ignore_invalid_char_after_tag_name_39() { - Test("39.test", XmlRender.Passthrough, CaseFolding.None, "html", true); - } - - [Test] - public void Convert_entity_to_char_code_40() { - Test("40.test", XmlRender.Passthrough, CaseFolding.None, "html", true); - } - - [Test] - public void Attribute_with_missing_equal_sign_between_key_and_value_41() { - Test("41.test", XmlRender.Passthrough, CaseFolding.None, "html", true); - } - - [Test] - public void Script_element_with_explicit_CDData_section_42() { - Test("42.test", XmlRender.Passthrough, CaseFolding.None, "html", true); - } - - [Test] - public void Convert_tags_to_lower_43() { - Test("43.test", XmlRender.Passthrough, CaseFolding.ToLower, "html", true); - } - - [Test] - public void Load_document_44() { - Test("44.test", XmlRender.Doc, CaseFolding.None, "html", true); - } - - [Test] - public void Load_document_with_text_before_root_node_45() { - Test("45.test", XmlRender.Doc, CaseFolding.None, "html", true); - } - - [Test] - public void Load_document_with_text_before_root_node_46() { - - // NOTE (steveb): this is a dup of the previous test - Test("46.test", XmlRender.Doc, CaseFolding.None, "html", true); - } - - [Test] - public void Load_document_with_xml_comment_before_root_node_47() { - Test("47.test", XmlRender.Doc, CaseFolding.None, "html", true); - } - - [Test] - public void Decode_numeric_entities_for_non_html_content_48() { - Test("48.test", XmlRender.Passthrough, CaseFolding.None, null, true); - } - - [Test] - public void Load_document_with_nested_xml_declaration_49() { - Test("49.test", XmlRender.Doc, CaseFolding.None, "html", true); - } - - [Test] - public void Handle_xml_processing_instruction_with_illegal_xml_namespace_50() { - Test("50.test", XmlRender.Passthrough, CaseFolding.None, "html", true); - } - - [Test] - public void Close_elements_with_missing_closing_tags_51() { - Test("51.test", XmlRender.Passthrough, CaseFolding.None, "html", true); - } - - [Test] - public void Clone_document_with_elements_with_missing_closing_tags_52() { - Test("52.test", XmlRender.DocClone, CaseFolding.None, "html", true); - } - - [Test] - public void Read_ofx_content_53() { - Test("53.test", XmlRender.Passthrough, CaseFolding.None, null, true); - } - - [Test] - public void Read_simple_html_54() { - Test("54.test", XmlRender.Passthrough, CaseFolding.None, null, true); - } - - [Test] - public void Decode_xml_entity_55() { - Test("55.test", XmlRender.Passthrough, CaseFolding.None, null, true); - } - - [Test] - public void Decode_Surrogate_Pairs_56() - { - Test("56.test", XmlRender.Passthrough, CaseFolding.None, null, true); - } - - public void Read_html_with_invalid_entity_reference_57() - { - Test("57.test", XmlRender.Passthrough, CaseFolding.None, null, true); - } - - [Test] - public void Read_html_with_invalid_entity_reference_58() - { - Test("58.test", XmlRender.Passthrough, CaseFolding.None, null, true); - } - - [Test] - public void Read_html_with_invalid_entity_reference_59() - { - Test("59.test", XmlRender.Passthrough, CaseFolding.None, null, true); - } - - [Test] - public void Read_html_with_invalid_entity_reference_60() - { - Test("60.test", XmlRender.Passthrough, CaseFolding.None, null, true); - } - - [Test] - public void Read_html_with_invalid_surrogate_pairs_61() - { - Test("61.test", XmlRender.Passthrough, CaseFolding.None, null, true); - } - - [Test] - public void Test_MoveToNextAttribute() - { - - // Make sure we can do MoveToElement after reading multiple attributes. - var r = new SgmlReader { - InputStream = new StringReader("test") - }; - Assert.IsTrue(r.Read()); - while(r.MoveToNextAttribute()) { - _log.Debug(r.Name); - } - if(r.MoveToElement()) { - _log.Debug(r.ReadInnerXml()); - } - } - - [Test] - public void Test_for_illegal_char_value() - { - const string source = "&test"; - var reader = new SgmlReader { - DocType = "HTML", - WhitespaceHandling = WhitespaceHandling.All, - StripDocType = true, - InputStream = new StringReader(source), - CaseFolding = CaseFolding.ToLower - }; - - // test - var element = System.Xml.Linq.XElement.Load(reader); - string value = element.Value; - Assert.IsFalse(string.IsNullOrEmpty(value), "element has no value"); - Assert.AreNotEqual((char)65535, value[value.Length - 1], "unexpected -1 as last char"); - } - } +/* + * + * Copyright (c) 2007-2013 MindTouch. All rights reserved. + * www.mindtouch.com oss@mindtouch.com + * + * For community documentation and downloads visit wiki.developer.mindtouch.com; + * please review the licensing section. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + + +using System; +using System.Diagnostics; +using System.IO; +using System.Xml; +using SgmlCore; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +namespace SGMLTestsCore { + + + [TestClass] + public partial class Tests { + + //--- Methods --- + + [TestMethod] + public void Convert_attribute_without_value_01() { + Test("01.test", XmlRender.Passthrough, CaseFolding.None, "html", true); + } + + [TestMethod] + public void Recover_from_attribute_with_missing_closing_quote_before_closing_tag_char_02() { + Test("02.test", XmlRender.Passthrough, CaseFolding.None, "html", true); + } + + [TestMethod] + public void Recover_from_attribute_with_missing_closing_quote_before_opening_tag_char_03() { + Test("03.test", XmlRender.Passthrough, CaseFolding.None, "html", true); + } + + [TestMethod] + public void Recover_from_text_with_wrong_entities_or_entities_with_missing_trailing_semicolon_04() { + Test("04.test", XmlRender.Passthrough, CaseFolding.None, "html", true); + } + + [TestMethod] + public void Read_text_with_32bit_numeric_entity_05() { + Test("05.test", XmlRender.Passthrough, CaseFolding.None, "html", true); + } + + [TestMethod] + public void Read_text_from_ms_office_06() { + Test("06.test", XmlRender.Passthrough, CaseFolding.None, "html", true); + } + + [TestMethod] + public void Recover_from_attribute_with_nested_quotes_07() { + Test("07.test", XmlRender.Passthrough, CaseFolding.None, "html", true); + } + + [TestMethod] + public void Allow_CData_section_with_xml_chars_08() { + Test("08.test", XmlRender.Passthrough, CaseFolding.None, "html", true); + } + + [TestMethod] + public void Convert_tags_to_lower_09() { + Test("09.test", XmlRender.Passthrough, CaseFolding.ToLower, "html", true); + } + + [TestMethod] + public void Test_whitespace_aware_processing_10() { + Test("10.test", XmlRender.Passthrough, CaseFolding.None, "html", false); + } + + [TestMethod] + public void Recover_from_attribute_value_with_extra_quote_11() { + Test("11.test", XmlRender.Passthrough, CaseFolding.None, "html", true); + } + + [TestMethod] + public void Recover_from_unclosed_xml_comment_12() { + Test("12.test", XmlRender.Passthrough, CaseFolding.None, "html", true); + } + + [TestMethod] + public void Allow_xml_only_apos_entity_in_html_13() { + Test("13.test", XmlRender.Passthrough, CaseFolding.None, "html", true); + } + + [TestMethod] + public void Recover_from_script_tag_as_root_element_14() { + Test("14.test", XmlRender.Passthrough, CaseFolding.None, "html", true); + } + + [TestMethod] + public void Read_namespaced_attributes_with_missing_namespace_declaration_15() { + Test("15.test", XmlRender.Passthrough, CaseFolding.None, "html", true); + } + + [TestMethod] + public void Decode_entity_16() { + Test("16.test", XmlRender.Passthrough, CaseFolding.None, "html", true); + } + + [TestMethod] + public void Convert_element_with_illegal_tag_name_17() { + Test("17.test", XmlRender.Passthrough, CaseFolding.None, "html", true); + } + + [TestMethod] + public void Strip_comments_in_CData_section_18() { + Test("18.test", XmlRender.Passthrough, CaseFolding.None, "html", true); + } + + [TestMethod] + public void Nest_contents_of_style_element_into_a_CData_section_19() { + Test("19.test", XmlRender.Passthrough, CaseFolding.None, "html", true); + } + + [TestMethod] + public void Dont_push_elements_out_of_the_body_element_even_when_illegal_inside_body_20() { + Test("20.test", XmlRender.Passthrough, CaseFolding.None, "html", true); + } + + [TestMethod] + public void Clone_document_with_invalid_attribute_declarations_21() { + Test("21.test", XmlRender.DocClone, CaseFolding.None, "html", true); + } + + [TestMethod] + public void Ignore_conditional_comments_22() { + Test("22.test", XmlRender.Passthrough, CaseFolding.None, "html", true); + } + + [TestMethod] + public void Preserve_explicit_and_implicit_attribute_and_element_namespaces_23() { + Test("23.test", XmlRender.Passthrough, CaseFolding.None, "html", true); + } + + [TestMethod] + public void Preserve_explicit_attribute_and_element_namespaces_24() { + Test("24.test", XmlRender.Passthrough, CaseFolding.None, "html", true); + } + + [TestMethod] + public void Clone_document_with_explicit_attribute_and_element_namespaces_25() { + Test("25.test", XmlRender.DocClone, CaseFolding.None, "html", true); + } + + [TestMethod] + public void Preserve_explicit_attribute_namespaces_26() { + Test("26.test", XmlRender.Passthrough, CaseFolding.None, "html", true); + } + + [TestMethod] + public void Clone_document_with_explicit_attribute_namespaces_with_clone_27() { + Test("27.test", XmlRender.DocClone, CaseFolding.None, "html", true); + } + + [TestMethod] + public void Clone_document_with_explicit_element_namespaces_with_clone_28() { + Test("28.test", XmlRender.DocClone, CaseFolding.None, "html", true); + } + + [TestMethod] + public void Read_namespaced_elements_with_missing_namespace_declaration_29() { + Test("29.test", XmlRender.Passthrough, CaseFolding.None, "html", true); + } + + [TestMethod] + public void Clone_document_with_namespaced_elements_with_missing_namespace_declaration_with_clone_30() { + Test("30.test", XmlRender.DocClone, CaseFolding.None, "html", true); + } + + [TestMethod] + public void Parse_html_document_without_closing_body_tag_31() { + Test("31.test", XmlRender.Passthrough, CaseFolding.None, "html", true); + } + + [TestMethod] + public void Parse_html_document_with_leading_whitespace_and_missing_closing_tag_32() { + Test("32.test", XmlRender.Passthrough, CaseFolding.None, "html", true); + } + + [TestMethod] + public void Parse_doctype_33() { + Test("33.test", XmlRender.Passthrough, CaseFolding.None, "html", true); + } + + [Ignore("marked as ignore, because it conflicts with another behavior of never pushing elements from the body tag")] + public void Push_invalid_element_out_of_body_tag_34() { + + // NOTE (bjorg): marked as ignore, because it conflicts with another behavior of never pushing elements from the body tag. + Test("34.test", XmlRender.Passthrough, CaseFolding.None, "html", true); + } + + [TestMethod] + public void Add_missing_closing_element_tags_35() { + Test("35.test", XmlRender.Passthrough, CaseFolding.None, "html", true); + } + + [TestMethod] + public void Preserve_xml_comments_inside_script_element_36() { + Test("36.test", XmlRender.Passthrough, CaseFolding.None, "html", true); + } + + [TestMethod] + public void Allow_CDData_section_with_markup_37() { + Test("37.test", XmlRender.Passthrough, CaseFolding.None, "html", true); + } + + [TestMethod] + public void Recover_from_rogue_open_tag_char_38() { + Test("38.test", XmlRender.Passthrough, CaseFolding.None, "html", true); + } + + [TestMethod] + public void Ignore_invalid_char_after_tag_name_39() { + Test("39.test", XmlRender.Passthrough, CaseFolding.None, "html", true); + } + + [TestMethod] + public void Convert_entity_to_char_code_40() { + Test("40.test", XmlRender.Passthrough, CaseFolding.None, "html", true); + } + + [TestMethod] + public void Attribute_with_missing_equal_sign_between_key_and_value_41() { + Test("41.test", XmlRender.Passthrough, CaseFolding.None, "html", true); + } + + [TestMethod] + public void Script_element_with_explicit_CDData_section_42() { + Test("42.test", XmlRender.Passthrough, CaseFolding.None, "html", true); + } + + [TestMethod] + public void Convert_tags_to_lower_43() { + Test("43.test", XmlRender.Passthrough, CaseFolding.ToLower, "html", true); + } + + [TestMethod] + public void Load_document_44() { + Test("44.test", XmlRender.Doc, CaseFolding.None, "html", true); + } + + [TestMethod] + public void Load_document_with_text_before_root_node_45() { + Test("45.test", XmlRender.Doc, CaseFolding.None, "html", true); + } + + [TestMethod] + public void Load_document_with_text_before_root_node_46() { + + // NOTE (steveb): this is a dup of the previous test + Test("46.test", XmlRender.Doc, CaseFolding.None, "html", true); + } + + [TestMethod] + public void Load_document_with_xml_comment_before_root_node_47() { + Test("47.test", XmlRender.Doc, CaseFolding.None, "html", true); + } + + [TestMethod] + public void Decode_numeric_entities_for_non_html_content_48() { + Test("48.test", XmlRender.Passthrough, CaseFolding.None, null, true); + } + + [TestMethod] + public void Load_document_with_nested_xml_declaration_49() { + Test("49.test", XmlRender.Doc, CaseFolding.None, "html", true); + } + + [TestMethod] + public void Handle_xml_processing_instruction_with_illegal_xml_namespace_50() { + Test("50.test", XmlRender.Passthrough, CaseFolding.None, "html", true); + } + + [TestMethod] + public void Close_elements_with_missing_closing_tags_51() { + Test("51.test", XmlRender.Passthrough, CaseFolding.None, "html", true); + } + + [TestMethod] + public void Clone_document_with_elements_with_missing_closing_tags_52() { + Test("52.test", XmlRender.DocClone, CaseFolding.None, "html", true); + } + + [TestMethod] + public void Read_ofx_content_53() { + Test("53.test", XmlRender.Passthrough, CaseFolding.None, "ofx", true); + } + + [TestMethod] + public void Read_simple_html_54() { + Test("54.test", XmlRender.Passthrough, CaseFolding.None, null, true); + } + + [TestMethod] + public void Decode_xml_entity_55() { + Test("55.test", XmlRender.Passthrough, CaseFolding.None, null, true); + } + + [TestMethod] + public void Decode_Surrogate_Pairs_56() + { + Test("56.test", XmlRender.Passthrough, CaseFolding.None, null, true); + } + + public void Read_html_with_invalid_entity_reference_57() + { + Test("57.test", XmlRender.Passthrough, CaseFolding.None, null, true); + } + + [TestMethod] + public void Read_html_with_invalid_entity_reference_58() + { + Test("58.test", XmlRender.Passthrough, CaseFolding.None, null, true); + } + + [TestMethod] + public void Read_html_with_invalid_entity_reference_59() + { + Test("59.test", XmlRender.Passthrough, CaseFolding.None, null, true); + } + + [TestMethod] + public void Read_html_with_invalid_entity_reference_60() + { + Test("60.test", XmlRender.Passthrough, CaseFolding.None, null, true); + } + + [TestMethod] + public void Read_html_with_invalid_surrogate_pairs_61() + { + Test("61.test", XmlRender.Passthrough, CaseFolding.None, null, true); + } + + [TestMethod] + public void Test_MoveToNextAttribute() + { + + // Make sure we can do MoveToElement after reading multiple attributes. + var r = new SgmlReader { + InputStream = new StringReader("test") + }; + Assert.IsTrue(r.Read()); + while(r.MoveToNextAttribute()) { + _log.Debug(r.Name); + } + if(r.MoveToElement()) { + _log.Debug(r.ReadInnerXml()); + } + } + + [TestMethod] + public void Test_for_illegal_char_value() + { + const string source = "&test"; + var reader = new SgmlReader { + DocType = "HTML", + WhitespaceHandling = WhitespaceHandling.All, + StripDocType = true, + InputStream = new StringReader(source), + CaseFolding = CaseFolding.ToLower + }; + + // test + var element = System.Xml.Linq.XElement.Load(reader); + string value = element.Value; + Assert.IsFalse(string.IsNullOrEmpty(value), "element has no value"); + Assert.AreNotEqual((char)65535, value[value.Length - 1]); + } + } } \ No newline at end of file diff --git a/build.ps1 b/build.ps1 deleted file mode 100644 index ae2f536..0000000 --- a/build.ps1 +++ /dev/null @@ -1,5 +0,0 @@ -$buildDir = ".\build" -if (test-path $buildDir) { ri -r -fo $buildDir } -.\tools\psake\psake.ps1 default.ps1 Compile 2.0 -.\tools\psake\psake.ps1 default.ps1 Compile 4.0 -.\Tools\nuget\NuGet.exe pack .\SGMLReader.nuspec -BasePath $buildDir -OutputDirectory $buildDir diff --git a/default.ps1 b/default.ps1 deleted file mode 100644 index 859ca9a..0000000 --- a/default.ps1 +++ /dev/null @@ -1,28 +0,0 @@ -properties { - $buildDir = ".\build" - $outputDir = $buildDir + "\lib\" + $framework - $out = $outputDir + "\SgmlReaderDll.dll" - $nunitDir = (gci -fi NUnit* .\packages).FullName - $nunit = (gci $nunitDir\Tools\nunit-console.exe) -} - -task default -depends Compile, Clean - -task Init -depends Clean { - mkdir $outputDir | out-null -} - -task Compile -depends Init { - $sources = gci ".\sgmlreaderdll" -r -fi *.cs |% { $_.FullName } - csc /target:library /out:$out $sources /keyfile:.\sgmlreaderdll\sgmlreader.snk /resource:".\SgmlReader\Html.dtd,.\SgmlReader\ofx160.dtd,SgmlReaderDll.Html.dtd" -} - -task Test -depends Compile { - . $nunit $out -} - -task Clean { - if (test-path $outputDir) { - ri -r -fo $outputDir - } -} diff --git a/sgmlreaderdll/AssemblyInfo.cs b/sgmlreaderdll/AssemblyInfo.cs deleted file mode 100644 index 5c06f8f..0000000 --- a/sgmlreaderdll/AssemblyInfo.cs +++ /dev/null @@ -1,83 +0,0 @@ -/* - * - * Copyright (c) 2007-2013 MindTouch. All rights reserved. - * www.mindtouch.com oss@mindtouch.com - * - * For community documentation and downloads visit wiki.developer.mindtouch.com; - * please review the licensing section. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -using System; -using System.Reflection; -using System.Runtime.CompilerServices; - -// -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -// -[assembly: AssemblyTitle("SgmlReader")] -[assembly: AssemblyDescription("Converts SGML to XML via XmlReader API")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("Microsoft, MindTouch")] -[assembly: AssemblyProduct("")] -[assembly: AssemblyCopyright("Copyright (c) 2002, Microsoft Corporation; Copyright (c) 2007-2013, MindTouch")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] -[assembly: CLSCompliant(true)] - -// -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -// You can specify all the values or you can default the Revision and Build Numbers -// by using the '*' as shown below: - -[assembly: AssemblyVersion("1.8.12")] -[assembly: AssemblyFileVersion("1.8.12")] - -// -// In order to sign your assembly you must specify a key to use. Refer to the -// Microsoft .NET Framework documentation for more information on assembly signing. -// -// Use the attributes below to control which key is used for signing. -// -// Notes: -// (*) If no key is specified, the assembly is not signed. -// (*) KeyName refers to a key that has been installed in the Crypto Service -// Provider (CSP) on your machine. KeyFile refers to a file which contains -// a key. -// (*) If the KeyFile and the KeyName values are both specified, the -// following processing occurs: -// (1) If the KeyName can be found in the CSP, that key is used. -// (2) If the KeyName does not exist and the KeyFile does exist, the key -// in the KeyFile is installed into the CSP and used. -// (*) In order to create a KeyFile, you can use the sn.exe (Strong Name) utility. -// When specifying the KeyFile, the location of the KeyFile should be -// relative to the project output directory which is -// %Project Directory%\obj\. For example, if your KeyFile is -// located in the project directory, you would specify the AssemblyKeyFile -// attribute as [assembly: AssemblyKeyFile("..\\..\\mykey.snk")] -// (*) Delay Signing is an advanced option - see the Microsoft .NET Framework -// documentation for more information on this. -// -//[assembly: AssemblyDelaySign(false)] -//[assembly: AssemblyKeyFile("")] -//[assembly: AssemblyKeyName("")] diff --git a/sgmlreaderdll/SgmlReaderDll.csproj b/sgmlreaderdll/SgmlReaderDll.csproj deleted file mode 100644 index c8dbda2..0000000 --- a/sgmlreaderdll/SgmlReaderDll.csproj +++ /dev/null @@ -1,136 +0,0 @@ - - - - Local - 9.0.30729 - 2.0 - {499527FF-AE52-450F-B3E3-4AD53E1712AD} - Debug - AnyCPU - - - SgmlReaderDll - sgmlreader.snk - JScript - Grid - IE50 - false - Library - SgmlReaderDll - OnBuildSuccess - - - - - True - 3.5 - publish\ - true - Disk - false - Foreground - 7 - Days - false - false - true - 0 - 1.0.0.%2a - false - true - - - bin\Debug\ - 285212672 - - - DEBUG;TRACE - - - True - 4096 - False - false - false - 4 - full - prompt - - - bin\Release\ - 285212672 - - - TRACE - - - 4096 - True - false - false - 4 - none - prompt - - - - System - - - System.XML - - - - - Code - - - Code - - - Code - - - Html.dtd - Code - - - - - - - - - False - .NET Framework Client Profile - false - - - False - .NET Framework 2.0 %28x86%29 - true - - - False - .NET Framework 3.0 %28x86%29 - false - - - False - .NET Framework 3.5 - false - - - False - .NET Framework 3.5 SP1 - false - - - - - - - - - - \ No newline at end of file diff --git a/tools/nuget/NuGet.exe b/tools/nuget/NuGet.exe deleted file mode 100644 index 8d13fd88c34af32c2180a1139f080c39e1d212d9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 650752 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

!JYn|7kl`0RHP`!?#qJkwu+p}7**SWL@ymr> z%U%xIdsNu`|G2JIPHaJ4$0^IVh(-;|=8g4y>A&my=D~l4?g0I}zey>ZuoW-rvVHMw zqcXqaM9v?6RP7sM{Vp@kZcsb}xN))U{b^GMg5UXcd0W-+YaZO>zdi79?Y-l-^dio$ z|4nLpm4&BJrlr5_@cilTio1NawMqh9j84)&J)5$+u@vE(OM-;%yu3W3p3fKg47Oxu zM}Am&bl18>b3e0^I>{a45LtbywB7jxGp#c%Jt^Q4GTnU0b7x0A7SF2ct*tB$s|O+B*wl8m?!FH>z_KGn__2ABpr zSag_6HoI&xNhyDSxb*j+_dOF~R7b7Ax2m%;MZiU zB`_ruEMg8W|2lU31Ls`I)T3hMzOO+GJH4jqAv$y6?a$X)S0{7AY&XaFCuI~@(bU-r z%T2N>(J_H%F8#*8sCW<*VI^NOm%s2%J+~W?8$QH@KM)48|{kQ5Qi=Y8dN!H^;Rns`E0Z~mMK1l3X9jlC;Z?SYWg7w}o@_cPm)FI=T0+UySL>bjsYxB)cVU`Ta9!xm zGI%t_dHSl3Y3*de@!$%dqoqcr^*_{WR<$*Ksw__5ZF1Z>ETbyx={xc2b<_RX4Y<{@ zqHoXluD5L{q!Qs|MVwKw$`P9tT~4ExEr;d>nvzIoSSW9T>Pgv zRsQNw_i*k|dAU%2(WzQA*Ic)~`>p*G-Sv%0Qo)yfg4zZ~;I#eOd1xB+Gt)erLn*-MHP zys5-Ab}(}0=iLE`$ zSIbH!@8{3C$3hFH-SMp@wWmI{d)EE+`nEll2KQ#Z^$NeGyfWf9wPUyonw_SHzYrco z5XzfWDz+VQQc*ei{4wYLu$*zM9hSOoG09j0+nKH2`cpvFvF3iorO`n{{uL!8J}FNt z_I?n5nzY?zE=~_RK`mqo7CdPimKnM0WVN5>-5ee4{cN(cgRHq`5wy1C8R>alWwg{KLrkJsqp5LG{~SjRUzyy?*Yz=DhUx6QNT;OjZ_$yDaocoH}E8 z=HrQr%?c)ct!z24)u~uLM{8@2gj3~I#1Jhy)N*In-RMZ`t~85fmtG#3lPJv%+O`vE z1`3Bxvx`1(wa6hsRL|R%^WD_KeZjEVzlM)Cn?HVd;F7&B-_8%TtEt%V_36fYC*pRx z#Kx(QKN)E7f0dF7^C+W(Wgx~`3{zxO;3 zk90paad@Hp+JRw7j8;9T!G#NakL|6SOs zv2i&b)``*!E6;yqSYoH^?AyOGVk=jU8aqGmM}qyvp5@EBu1HQa?Y1t9)#~}pown(H zWx?siv+jr3_*^Z#`S|b&j@gh=&n)Oalh2>>#NAKE&y{T~)7nX#pngfS;LK{Isk6jz!H%i- zWv0fWL1}1#$a{IK7TtDd!5RB^TlM*J(-a&lnLGa<@||pTy}UiVyUu?7{rS=J_Klmw zo8u4~(mu>$x%lbb0uv8}Oshq7dp+gPk$ z*+zR##nIgn_uIF=PhV0|)F|Z*n~=SA?bGXpiXcaqMf8wE)28g-GjhLZ!~VO^#}}uj zmPO)c=~gKw`uWl;mCr>2FQ(tZ&*|~4u7`^71{2Qhgg#ahLubJ3BYUdruY2MNuB$@~ zKj=*<-zMq2P=D}~f8I#pzZzVdhx>`U!+y2=b2NS7F7gR(3{(5<_J}P7TQ>Goa2 zQMLVc-;cbQz3W_LrG78Ran3Q+D((#&cS>e$yF49RR&vGsMp^kY?=kU(UURLsucnLj z#0>N9;4_1#8uNeMUlTg)x_{QDRgANbDQ#X`-|!VD{{c1I!fmQio5OWhq5l3l>s2cc ziW;AazANuABXSB(&DD1?Z(h^9#K}b3@YQp;*%8ZA&LnMuomuHDZv3WnzuNfgBf8R` zH}Ysw9a~iQ&V-fjx@L{k;+e@YUc|e~`h?e|H>+J<4C;}WQobIGqigV#W}MZ_jeZ+rSi1J&iIb^pJNSvcE-=09(1fKJJ)0L)gKOxn*E-AL-TgXXN^sb zkY9FQHACyn5rB)FE{I%i+1kK7+)A= zv|@ytv!%wHAwx&vuYSz%*;AN(e`qDv7npcQCzlzy_E=hR)3N;g?e6@cC;cqGo|rT# z-)mUZ(C&5pzxiF-gMDN3n$=HP88EmS;uk5m?o|3-A2a1@fYvLdJ6Nx_ByxW7#F$vK zmK{x7tMex;WpaQrtDV)25PyFKI1S$|4F6C!4l_r%s+uRHVN z7m43LI9m0%M_N}_-aB?p*r_YNO{m1>&E1F(T}RwmMlmamGQ;(%L-*GFQkQLi|Go5@ zCw=bI+52x6bxCj;rRBjHp)|g2v%a~}weUkO5ip6G>}xvf@NYiZG=1sZl5v-}T=Cj8 z_(@skt%uJ$wE8h)(ADk!$kO{~>SP#$i`YLrC~ZY3Qm>6(6RbvmIbNUel{+cuUgZam zNc&Brt-tAltGKU7;yY)o_{a!K^GxBozQnZXnSYg$p0_1` zpYh4AzO`Gny_>#$d7;4zkMqO|eBw362MrI;U9O?S-kvw#nQ&{&`fu{;<7&y#=3CTA zrTwnkOWN@KNgErC?(b?g*SFg0o3C5JlAl9)Ox82EYv!0zFTmjD$O8T}eE!*gIt;ab zZn2DSCukPRt%rDU`(Acr!@mg2OnXmoJ zQZF9by1>AIhnc&_9re)~Q@`e9N2%wHUE9`gI%@BJ0A0PAZ<1zj!`8)K|JN*Vsm1<%NGO<_?~u>3fi8?=x)Yn7RX{pvFg zL_YfT@ZF^mW^LttnIT{E$7X&rn^*d0e?wu=cZtn$Uyp5b>%Bi5aV^tFo7h7B6E8rvoa?dl{(Mf{PTj+@ap^0jaez{gzh^BYIz^tXRn*hTefRSNuJGz zUv6FpfyndA+JKQn-xN9L%7v;$4fhHQYP9t~hg8voBKUByg{V0B%-G)Ty6Wj6Th4u5(GmM->C?ELG2Y$eNIVkzH#Q_>-J%!6 ze!OaVy9CSL`)SS@HMbGNzaL}BE?FEsn0uYAp*6>FO_KE8w;Ny0rXD)%kuSVyJ^Ofa z?zKn8D{~w0cc=7+_D*82^(~k`?8k{qlFtfZp|!|z9%N9tgWCQC`#T7}HqRY<`daoKfBh+{e9Y~H>Xd%;!JP3jWsa>u*SbMXI^TH_u_f4? zcLtBFp8kPZg*BL$z%VmXGSD%MQNCuAy4}cAbLzKlEax0-Z}zyn@6Yce8Q1V-&foca z!=~DdSjSEI_x^LeL!rjE|2h3*<(9E+>Y1xw&34~ZL%zLNLBob7HgU@=*D9pT!4QqW=XdW_ZW8 z%oj;|IXk>d&jed}-`&Z1{#73Ul!=VTYD10a7ZE+rnzfFc_1L}T_Gq<4WDnaLkVCJJAt5rJE2Z3(K}Hg&@6@^8Ya z)?ugdgxA||tdid}%R9A4_omBo2ki{`CN5>_qcfqd zGx|YfO`e9$5T`TP2;%(2p@)}*FFE*Xn!N0o?pKr5zs0Or_IMOFr|hL$&O=}O9kQ`6(ua+T4B59S`K|Q4bC6K&2&;Oz za`kF`n}m|2En7ZC=T=*mIb^?h_*qk%fpiDWqEJfxNPp-g`;*+NQa#1t&P= zk1h6*$-h$DM%5%#>K*hQ+@v)&yCMJ&a~Lu#@5Yn*)`_z_gp+4>aGtrZN-iDgrIE4X zkI5RR_9*H8hH>~D-5m$>oKo>C59XaN{kX?@+r#0Xg=huKg9`aP0<%fI5l`gsbJOL% z_+{w?G2#}<7%G9TUl8ih#<7DSM&KQ8HgwMqLsel;v~pw-fM-MEjAR+Ku@^}*6c=X93+ zj6=851~vt7uTSz|=*M4IT$nmCEzWymoc*l%K||EkJT3)aJ$90R-Q}T09 zQS+~aZV*&W&a}=byybf2m~sW9HFV{}igCfo)k_aIn9`;mWrCjccdj+;VIKMkd)GPt zUb1z__v4`h?6y9OQ&X0SmJY~cGUpaH$xaw<$$gORJfdXt;Ngw`*jdEP>vGW2p}-(IsQp-wJO%LNR8m ze#pIp60)~tKXrWO+gr-@JXfo^YPQ+K8Ty$yS$8a+_-|^xJU0Hv_M=S`o{Y#dm>NiJ z+NERlu5F6J8gbm5QE7#}q1SFcoJ_x3zV~%wO3g!!l4QxIp>7BNEn1*2j$`dzlcAjO zcys)KL0a^B*H-fO^H_}`IkQ;L@3v4zjXs8s&vO_nW|#en>RS7K{@%XPExCmi_pZj} znqIw{y5j1x>pNoJZ@F+ou+|~m$sx8Zzw6R(r$wj6?CVWgY4)(e=d@R*74z=*U_h~J zdx zPoMJ}Qc*MPiCWrAtKLw4_%&VmL67BiMH9V0Rv)9*{xm_Q>+P}F^mp`}l<=xe_N=XI za#}WBaUSb%YHC=imt(WZo)*E17T*nacP>X9O)Gn`EcEBq$axm;6gKAFAmdnl)hmS;}Rc~bvvbz#_pBT_@Xm>hfu@6ZNCfQw`I zm>9=D_N=d?^aHel7OXk4c#Tc6VdLS|tx*PXSOYfypB+Tl)6vq7_fvvS zZoYQR?Vzu4=F&Gd?J3f$g?FUeDyi8%x^6|JRp+?c6jA&i2hh5VYkhD zrP#J!wHYYFOh83&( z@c9F?T^k>*yfMaV%bqE3eSD8J*EYvIb`9FKGrlj=Na99?obVT!KmNd5K5k9Z?8k~J z@fTw^9Z9INSWw@E)swVVx`W47OMHUhef}`vSAAv0(owG-rCVwk`aEvx92UWST0K`D zzP3C*=1QLKGO~A3^)|e9##3a)diJQSXiMJmo1g9P-uDi{A1uBuirO?kb4_OCp~_!( zcOJPKVeu^FQcd>$2_r4b1;tLOWu*|_-6W9%ez}8{lzZkA9(-J(80c?HC6&ca?A(>X z1FhFS55c%JS!_^H_MT^B%{{qz30D|X8CzH;Vwd47SF|!CiR=JdESQ#eERs_t(+B!n zW#O@kDFf7QTt1jq*_0|$f;+^*rZTH6Y2s-w4p&#+l_p5#d(6O&FT@g8LM*Z?mui%h zWZ^#qyhLlkh_W(|c1~|HZzY%h`Q+UXdBB{FPS}^!oB5^8I;Q((!(--LPm{iYtem#0 z)9leJ>u;U1D?Mg-*h>EMTnjTPY?32>xz{A8;i@%t`1f!2+Nv8ib^e~s9AWTGFQ3I~ zg?q1PuMpk&CTvap_uF|Cv|BK}(TU`~+r9nvvbF!VOBy;dTZU+9yyKmi)gaiyuMara z88?rxA6r`-M`~Exy|YS7J=vbTZ@=FL?b55oejne82OXN@T*H?Cm~=1M$T8$Cc{$}; zj_~fzp5X!ffYCYQ-BR)56YuB`BU{I2ol|66l-=%a2D-O$|QWjhn-seb*3Q z_U7gE)&DL}vjwi_!J87x8=__Y@>q`6y0Z@=Uio8tg4t6OZ$x_T6kW(%CI1$@LHkgA z*>%pvcNv#$+olc+aQSZa@8Zg=D-#G>JB%N?d*ss7dw*zMcUisWhFwXs8TLdl5Bs$v zWpQo*HW%WieJAKS@)Z%&rw7n;w;YurV#%7;@^0M892ocT4rFHOjv3 zZ-3SJ;dadJZ@k1{`sbq4p8@Gvz(d;n&Fq!d!G4M`WWkk3qkqus)a%SM0c59aEFCf9 zZDkoAG@vXj;DhvUn>!87IXV-KY3r1Ro*V#9$6$|6PWQngK0lWfMPv{2XB`jFCuTB( z&knYB8w}kszp!qx zZA@p19|IjOt+dL%Ifj)J1?vf}IV*w}mR>IX9OLbpAG=}n`i!ECmHq4^8FK%m^w?_j zsXlN>{*C=Edqv+9{?>@M* z>cGLFpMTdE{eLmv^@05Nl^v%}APRjtuzu=?gTnMjiQUtOJq{!Ln+l};^Db~r7Ry@R z263udlH&%}OdE1?fqIfe%W>}AGp>xeZI6ugZ-Sq2Im6sJc&;$y(Z#%Y)3|MqRvhrl zTip9Cn`t_J>5ErqwHoioeL3j$inm{Dc$)smK8LeiV=9I}$!@v!V4Ca5>uk@Xx3zli z3YHDG{OE@r`_@Fyzn!evy}`%B1z%a|8S!V|)?iNO-o-jwb6$M9M_8O&;nty;J$Jg! z%dg=dExD+YHduD+<`<9Pw~~L}_=N|hhU~Q$vif}u%Z(>Bk^t7tYw?@CfG?de|x6rn0hcCF-D)@sB_~);x zbl0yu5WU;j;NUhxFo)MTjQbY!!2XHT^1Y(F1-jy|ETSWWDbvN+*j;@$}+o}x+8?GMj$m7q| z(-t+A@ISuwU3%g7x9g*e!=0OgA}?K4R_5C8SgqYDcrMq|Jcw((c%9k2?w795`7Iw5lTKVhz%Lw22#6#cyA>vtXf8L$2O z$FsKwtXLVpALy|@7}ZpSIrSU!md57Czh}OZdvDWu)%x!vt;XS9+5I(-jlie4$r3+3d#GuJfb75G*8dst+&WmJil(g1TLDsUvu*{tKruJu{v$*YS-qUh9kc z5#dWwk0EYqo#?@NHuJ_w;TD|d%$LQor$(i>JL=#TS<#bzj6uxJx7`KukvU`yc)jEvn9QGUWub?=+(Q4Dm<(QdKBEG_&kNIR5(?MQ+*ry1-6LrZ{}! z{cUEqDR7^od`qEt#5u>3V)$(rtCD5>NVRE(aL-$Lr;o$GTbuVA8qsSW;#G`~hYOGt zHFa~4BKj0Xt*T9`vuWwqz53;|j<}J3GMksJDw{}r7FxSu^V#}sKkbdig9?V#0Vetj z#T;iCO60FQ1MS&fwAHHeIN;Ha!J5%)iDi;*;)plZ|DQ-#hMrZGWlpMm?5Pi!Ud)vd zw*>yctL%J{Z=?cr0>1z2l~i)q(JAX2&S~l92go$(TvWxh2RiqM$4@V^ z(GOqx-`P&uv2Pk5KJnBwHMsel%3g~}saqghd?craa{0gf88;AjKP8;cFsnJC+wHw} zll%E=UIc%;kA$DIY&SY=>xx3};!a%fq4-+dhIY&JR4I6UhkyK>%Wm9zsaKWVBDG^K zxTWgn&t*rhNLrY`;;&78$Mu>))iCvjy>!&3#`#>1SI`fN2>^@COZ&wE^1h-@USL;M ztT$63l=(Y8;Si295|g-E%5l=&JaAu)T)ds9Te_hTI?MO!62Ql-m(8V2Yy-J z+tTF*zqvuYs`<4S|74+&$FzIytFnDCZYa@Cly~u!88lPw;fW^VeX7RShBGQn8be)m zMRc;3;h*q2{byqsu`Rc+hQu{*LmqyMg2ZfzDmlXIbyUo9nsiipaqLlJ6+*DdM>eIi zO#7k-JMfv|tm`GSUiMqEBB~u;b%OCjv4Lll1Agg^T4?3vb^NX&ppoNRy_IPpLMa$&e;V=u)dS9N`Q<7niku<>=Z z-FBCmiXuP0q-dKw2bzQB-mdPW3vDL`?rjFA%(oP@U}hJ|mH}xS zf9h6iNeGs!nr?Ez0+9)$51c<@D66d=3U31}NYlPkip4|96O$jp*O8Loo;cGyt?gvB zDIMhYW?X1SceIlcyzxc7i(k-WJb~2Ut`q6-b?Akw!%?=&tEm2+gZD4+Mad(#tBbmx zbG)`zz?vAEyuHcOU^CIxaQYF|;#w|oEVbCz8NN@wL7Rad-3I--Irg#Gig2zHTIvNh z?t|br{48DQiCbeh%qGD#=kO1hBkQu?vXEco^@&Em!PDqFeLnli@UwfT!B_=6V*r2Y z)Buy9GgG?EnI=sW8DEOBtAO>37*PMLWNq_1>k*v9knO7-AG17#SA#H4ukzI8hj*nC zl)g%O)1P)SpqRY)sWXv8do|tCDQ*0p->3J7X9ib4J8rh>30(TMMjv}(lbz{nVe8^^ z*WvkFO3kmr#Vf&#s<0 z+@r&?NqPNqK7@+mXmrU@>wPl-MP97J{_)fC)?+}#L*zsg5l}v=Pm;#xsY5;7e;>Ux8Db}` zyzbc8f5>e~Us$!8QVKeCYJ*)9$K&X2V_&ETC7f`nd^QdTCd~B=CzY{ z7h75Wiqm_NUtscG`o-02N6OWMWaj<=H{^7udwQ`3~UbXUH*dsn?vOksuk)CZ=Wc%vOv#1z7#@P7p=H$@rt#ad_+%u*=3t2dj9*B`p?#4r#f^3N9xET-{GbKJMdU-M=f}YYd*^t zd|Kl`U7~klD;)jSI%ZXiV9PvZl^J^4jmP%nvyjha_qANIi2RMP>&73^VwxP(k0B7O zY<-;ovTf)}$@z7Bo=et3^haeWTM-dewFH>(av@yDWHaXM{r%Gi!B4)GU(80p;ARY} z4-__D{YYs5G3Tb_s$1qUPPhj8Y@hZ2Zglv40VAt2sJ8RVuUWbf+y2cd^m|$J=!2hX zv$tTGTFBA(ZDYd^YDe8$N7a%O|3 zJLCtc9o5M4fY&EJFe-cG_QSrw?X``|g!Ofl#B8ptox8G;SM!8D>|%0m&lTPhdikt^ zQxnAPvi+pOgPI8M{Gu4D&dpyU?vlbut&c@6xm;?XXmF0J>4L3h#_Gvs3>`ifTtsGW zBE3S=>e%Hqd36U?Fk&G8)fZ=Y#=x|w0*zFfa4$dDK7;>A)=^8* zJ_=DCv)vui7>dh#x02!_GZ%jilA(3)sGicd5*zsbX1la@!@5V8PM(}+larO{7ecx7 zB>A>>howS=a!24``Db1(eO~7f`c?lf0q}n`9))Gu6ugmksIW}HL+ZwywxM1~CD-oP z7e*=vPdB<1I+BK0`?s7GKgAZfO0a%<7;r;wp|vAaUR>5<;6iYfOynGvp@Ry|5MY~7 zt9}3D=8Y#I%U1Ix-wxyq*`;2(hia6tNFO8&d=pyMYn1CZG4V->Tw^5b+;sY2xZ%Qv zV>^+2fBc_8^tHR!^f+yjw@TiR@_u#p-hgVIuPhN5b^2QAtJdrx7iEW9%~A;Xe%<_1 zLF&*Ix*+>Rc-wmIMYbzH#em&43mEys`S6pS$;nBIO;@LFW$Muh$VrO!#I3RW5^?K; zw3=^;kN(R;E#KrI8?Wx!x)t*@1Mi2UTe&En$^>E!z%p~&si~B$-*WD4bAD?ia$Uod z&7V%pt&Z)Jv9D`o>?~e^UD}&;Gt{AgzsB)R1HTF^`%LTvN$2*2WQ9)cE1l4r4S)RR zzFD^M+Fq`qXg6aig3@mF8pa6qt~R@)QtKK|4HD)hO!p+t;;>ihX` z=Vy>V9+5Xy;#0bIRR>R#BG64Y*AEOF?(ar49JFj)zUaTA-7C%XQqkx`cAu0Ydn`Nm zC=*mdX1=0cQb>Gf8k0SAwp$*JuxpOlz0gmxrH@35cMac%)xOAd|ZYQKwY zoCS6pMyiY`*#zMnue?`;wKqVupq-<&(pD`gj!Wufhk2CBfJ_wxMS1(WWhz`DG%2)A z@p_%}twDwZTiJq+=gyFGf*fPHPHkuYOB=Xyz*hEQ%|KFNF~W4L36bjfpy6!Rx{*+*g;gjDbB25?IXH zL%+FjtzWwA#Ar(d3a`N~;TlhqHba?%s_U~)RREX87I+UfT@t6M^!v5X?^lO3of#f2W+D8=Rbd^#wVzzQ@VKA7A}9Br zn-+xb*=kI11!R1_ObVs%6!t8#Nvt5Qyc;mcLaPRlsS^0;n!DySV_z=6Q+&$;&MO8{ ztzKo0sqs=u{=`;qyP?A!(Sb9VvRN1dDXq@=p#5Snbm9?*Wqt#&4FLJ~+{9DS$Zt~9 z%t~2)^K^jyT9?;*qt~~{D954p%7`FPf9r%9aOe<3RFik<|u>xX{kq8)U{+Vq(0elkc zDwDtU8ArF{{KWuw-9d?`b_wwNM2&MxBXpi+$3J+z%9QeIzwz;ZT=Ua>n^tHY&fr77 zWw8!^^WOTObOs(G0nabL*MMyoD`gcV##8{fM*IV1RJyF9C4Lb6lwYLkf!4WH>3ZP| zR4T!zCfL}$V4_&Z@u{wV66ye@ap;DN+~(~BwiE7qDoq0$h~WDK`^%q+Ixi;MpFU{@ z;$gerHy#8#cOf&3yTQf|wg=n;h`|w!{iDK}FpJlQm^T6~)!uzz#?zd$=JIIdE5l2z z=fl5bh|~*sNMNcI<;tF!Gb^tr6_4mPnX&ukuks~KdA8YwcO|fxV z?0^N>);}=TSD%~$oY4GdeG#8X8-Op14s6N%t2Tm#(mq7{gF~DUP^@GOJjZqTM5e*-C)V+EU_NfN7wNeM#hJ#jnN|GeU+6i@9uQq3mhOM|Lv;#Mp@tz7^^z zTPrQ8I7`2N#{R%!=#8rIqAu2aL3_Bj`_8nC9fGZtl>SdUQxhuDz;>6X9I+0jY)5o!PZ>Vsf^n{L^{^NbEbo0M zaa?C`)8fw{m^gNehR}2bARD}Zx*}~Zbm7Yn;QFcf z;NI4{!!l7fjd{l~SYW&3qh9Qh;*`O8H4(#_O2>Rg)uKlhN#m|7EaNvOZYCWKK(am? z``Xj3o)=by;at~6YyFO9cc17Bbw+4$!P|u>1>3hSPaXmee+YZHk##!*TQFOcDn4xH z%Uy%&mn8eUAYU(fSmqQ07+4?W4Hs%U?|WSnr?z2}?my~-so>aqD9S8D&cP?C+!KAj z!v^$U@N?)ye!$;scyGNrdfWSHeo-f>WpbeDTijFI$$WNiKZEL!K)SudJ5&DQ?owM53;Su2E4f9Lp4) zXZCixST-w8{w)T6;m+8en(dPmMTN_^UtFsqdo9yJV!ZD{fSbW!69x}lki>dZFbnLtPis06j|r4@DJbe_QN&ObzboC1 zpG}mei?h$ZXU<^S#44j(YWqIy)w#@94R4t)6uLYQEq0;PXbn5~e_hw;KOvXO7hyEo zV z&9gyY>-10RV+XJVIkBrSTIo3*%^R6r7Sj?P$5cz})8dNZ87uFkYN<&4#FW7!b8GmS zETUj`i36~+I!wd8aa%PfYimC3a3IS_t7JVatW0q|%V&rB0wjK6?AFgD?R%Gbdxbwp zj`soX5eF0ZP{*7(9)*dJ(ZH zaX8dP)R7J0F^ft$$AO!uX06bWUMnhUc#CPc$ZmrpuX_|(ZeZbO}sI+K_Fl%}Gv=c$vUW6C`Sx}IP3nMa{*VJa=2n!o)?$I()fbk9|b zMaU;%5Zdui_^Ln1y19d`PLNHv!R|3UfcxZ0{^b3`!J8!&h!)E2(aPm6)bw81vBafy zHAHc7Hgb47uaxKP&E-|Rn}=WFZjN3*XMR=4-9~qLljH3v1ZRm_ivh}CtJ|wfZ1@}3 zx(`!Qt}NELF?RXq-qu=17pu!}Yc*{N1ot4@bL3PoTln4Xtb5jc{MF+bI{98Q%lsI& zPeoA!>kI2bxFNPyQuoBhZj9}AWg2(W9O_*Z*%Y?DXJGsqA;u$||AUQZAh6U?yYS3G zt!w^ZkyhB_1xQw(XlW$XZuxZs%R_tnvL)I>Wb_l3kE^~Tc9l(S%vq-}_a2rW@GJOwONx0uZbRt@HEZd_FM#$ ztP4j<4`jHxyH^j`;~@?&Hq%K*AH(Tcx!Aa7%516HT%O|?TFEVh0gOfMmdBlDdK5_q z``Na%dkMc(d_A{32O)b=dL6$MZs#O_{Y4u{OeRo_M8RisH$EJ# zTvnbLT~iojDv`l4iksLHZk(-wG6)?lrCoKus1q6tL_-O3Iuv5|MeN~YvVS*Yg8G#- zX$kEXp~qt|_Pl<{E3Tf`D`+CQ(xDGJ5GBh;CH~@sLQ+hh$Gf!j}#o(T>8u@%9+-r)46_{^=;ik{mAFT#Iyb}01h!sN?${+0)68HTS_m5AqKqhX5`3d{41cEM9m04bR=JLI`|Hs znNqy7Z{W09R>wLK)_kv9Q@4MOj!-9O3gAo6fi+9sGtm8zH!xc)8nWlf*h!0wIbRww zy?DHRr(ffUr&q1bC`FZBt>rO5rN95>@GzAknX4?xUV1LyPz@UWENdo8)0_vskK6F6!2Ssj3XcU;lM&AxpZH_sddzQZLqr`!teYC;F<;nYVm1Un%Fi|mqxG#+^MPm(V9qE z&lStAj8rpHi)?hY{hD+Y$i^O3`SN#jLrZIZ_9xe%hR%&YgL2Mbw5XHG2bYAL`c&jd zUIMQgz(v+a(c81r1_2atq5lk}rx~v;%M8|#3P#YdWB(|?9Q$81KK5P%j-2Gz9!N!|;zrcX8aC#zEVKVqRoI+n0hOT^~6BAvi8Ead>19d%|<_&T6;#8cF_V^({K>-lBR64d8~$q7l0H3=v#rX4jRnd7Z_IVGGPK{4X?kcSFASHhlyn zqc5LZ;q*t`L{Z*OsFrTnm2~l#4Yh0z=#w1 zJM5$TaQZ~T-GwC*`y{931~*X)VyRSPtsW3^SN+mj^rMRFR>D?BFL+*_lP6^%gqw{! z$8)nfA`KoSj%!^8PzTA04$8Y?Ccg!H9-SEU!Qs-K>Py^^q>FgfT1nDd-}_7M!H$SQ zO6h>q;gz2Qq)_j>ewLMz_Do+sUCXe40)X&-duP4RdMehMs9rq>8qs3!OAG5kz@$^? z3u}K>ZXsA2;DLTGo;=%uaEyER3If4AC}1?NypCNh-FAN@Wn(lboBygeugbAF+3(Qr z{S3y6Wna)^*Z(@;umb@NUjk912Spy@;%=OXE@)X+zdeDz!M7T;J+iXcLN<;2xD1Y9VQqqi*oh$v z#;LFQGc)=c_X%PuI_@_YQWW*JOWdvb^Q3a4D3P>Fx>@_VNDZOlOHG(9g>pyH1q+t4i`@R=Vg2^b1(raoKX_!@1jE^&eA>pz z8Ock|=bg?XlG;=#zYI~OqNp$Eg$weaWwiXCY%c+YheZEj2L4kj>6WKlD1jZ^E*q`+ zu1Beqc7|gN?&z}doGK?LR=}C|@KQ$68i;2-^!P?CfxAS~J)7A!6<{jsJ? zU2vbD_`8xwQ=wnajcn5R14;LT2$>!GKW)YwkAYdH{?_BKYg6O5P{6`F=)nZ=)P&U6LYHQYKs(PNjS&~>%AHGP?SbE(WJd*yMMO4vW(&M`MpUgA z0d{EI7R#kQVA6@?4Eg!Abk|Kic|Pm7cLRlrLXQ`_iKlsYBOfI?6}dH}Ru(46^BwnA zAO8zI*6c8ogS*d|qO(XG5$^2VK-nL>N{2kq802fE5!mIXG&r3v^Bz}i0DVFrJR+L< zFIErJF3gv}>PuP_CF8>)-TCX~Gn&1x-;UKHSn_LK7{ez)Koj}2H2WW4fYkAs`KP)U zwyfVtXI`eC%MXM98neiS}L3?_o2uYCIkYfcN{^O5_L*3tBT-Q@F;N4vC zPom3+IZ_Xh|DrLbYg@o$A>*mhe(VdKa!`n3Qx_o{i zWO2U-4&q?<4O-@AW!fr@>^fI=PZ=?k-E*=1ObftCv3n!oNWbuqgb{ams@yB{5E{)k z1&kNo^$@8>95mbEN42gxKjdk@zu=R8(@WJ7@xKR8K{LT5E@mF%fre{TPNUbPQs};a zjFQM}zyQq^aVoCZN7gZx_0}sq}Vcy8m!lmy{YtvnJW8LZ+a4=*P$91=T0T6 zrN}r~pMq(qO!h1Q68PQ}U;&pvRT~RcOn*y0@h5L?>XAk;^ORS}HGGYro>`lcs^eJ5 z?!5LsEzWKevONz-y*t7a-wP3gfXn<2ycq}7TTVS2$s16Z8lgq^LHC`GKRY(Rq1*sR zj(`TDo!{06jlf2H@6kt{MqceV3(>3@X`@NDni6&VPITzkOCb0AK^ZR9SkagbQ$Op?ln!1m1hTn%7No8F#!!E9lof1= zq9gmzTM1VxonJ_e0UD@Edp*Du5xy1vb=v&5O=LyxBffN1&%e(3d`GCqqgU_Q0{+LP zy)6=2(SUO64Ne7q>n6Sh`S7U&6PvveWm7I|_~$He=o&ig(48svUY6iZ7l0?u-rEn* z#DRZy*#wj1O!@V`Ip2`w?{frPH|BL%i#?Vs27i2^%?mhC2fKQKg4bTytGRpU?jHj7 zzxD{V!;=h2>nEHAee-B=q`h;+kn$ht~Le`DNu8>NIAgbVoQgX|nC zQlDKH4JQNkl1{h3Is#u5rx&(J_=7aL0xSSI2YmBPz}tm>nv%a0DT7&1PE00>d@b1n z$iYb4$dsUd2;SN^`2}q*ODLTSLw%M7&0KY36vrQh`He@u3PzB1#xEsi%G1A^+5dJ`~+K^w;{{i8z&kwv5LKB(Je224plwRqB-`@Eb9v4z# zUg3LsVJZn@q^pq?esGH^8S0~RH?$o8MW4y3idxhRtwYNb@tRhCNl2W^h$Fa?RCdRy zs?=KPEiBQ_ve!Zx4}JUz=2{#pe3C+g^=Jck?h=4fCG$NA9;Vc}Su8Bd-#n}m<#gjs z0#W>}IRrzU-VYfOf^V*$pWm9GFd31Lv;K3Ec0B}&8L#R3WlB1SWZ{e`N+UjiA8?3) zKqA7;EAcl-I#8TyIWX(}aGaxxRK7e~L&oe)JkqqVJSbU6|JHf9Oz)^#tfXOlx3G;C zxaRw8;gk?|RZ)j#j<1|*z*5=&xV~DL zaXHMuSz2H!aSHE;AKlc50>@n32um7xBm8o>_qck2W;^I~6W;I0hvC#d|F>pddw1fz z7*oU@t)W;4d4jBnNuGUps~!RKieGFX7wn;uDaSWXEVl0^>pWZU9ESBN1s_l*c$&t+ z>Wy0Bg)=WVNu^STuUjwI$_OKe5~KjV^({BU!zD-hPGAOLOK|kU%6qQ`9p>`ip^CT% zd_7g#M9dYot)4`ZGd+X+s{H8?{-adECsrG)YO2aY%;$%#piV}2arjSk3oY#7iKa8m6!Gr0P@Yw4gM)%c~K zI7MW-!0ZN*6gG%*ES6q+4I&T;J`yMBWww6}VFll?qfDXbD?rxkZ^Awn z$N0G5a`ygDi>QpY9)Im#!LN?<#mm{{L>X_&r>RbJr7tFy%QnLIC*#jPzmV~MVyV5U z4P7C2wET*WqQ?|@@B8!d?_mfohd-2jP*%e_wMc3d9=IPG@%X34%a6JzHXD>jwc;JM z0ST~a2}&rBy2g^#gW50mKq5k4?AWstZ=@uoUyv4nBe>+jbx?IpVvbdsyYl5!+Yoyr z+FLQPEdTEr5d2zDJV&GasiPvy^2&OKK&=+ zQ$S6hhHcZ>b-F^)x`Wh}P^HsQBN8i!a8_g1r0Qb7*!xNOE8S2TX`rfP)~2W>PQK9% z7zWt=MwxP}po^MWdWK$!wC8Q|&o&((y|eSc=GqxWIrJ=q`O)u9AA~=)2YYs_)C{G+PV5tx!Zqg{C*r zn$;lDXUy%Xbc4swobIqp1q8tqRcJ40`)EmA3H_?m%R-XBi+hE05Py;pla9?T?@K&( zYKKu15QCxh+`zbp=`u6wW93wl$v2mdwKx>r_UaNLhQ1yZC^S0bM6NZDEr4LOMH{%O z>wTp8n7gay(QXgn-D^j!x=Wehm09)3Pkv`UmVWr%rinoO02deDOw`<(+E5@0r8$ee za^CHAm_nY$d-#hua4?W*FF+J@2sU@2M7ATCuS_&9%zIx}ynro`VluU(Zid!-a-Gl# z-{A}^fBoi=meg1YUf07gSAdmd&d7ARo7MhgSjD#Zy@}jzM=_%woqARekM}Ipy|3gF z)@&AMo9{tD?m(R4UZ~x>HwMC^L-=K)g=#|b$onJo%BYun_M>pM<$a_l56`*^I#Egf z0|wFYN#x*PWFo8DvcvngpykiHb~)x!I#G6i zLBJ1G5{IrHxMQ_K3}HxlJPM|1?;0Ty8}=*ePFGAH_v?%Z6%@H1T3;d|VOK`ibyN(a zEfxbU$ADx<;?ObuHDmY-1ruy#q;&dSZT;7V9inWcbhkR8p1cT(f7?C0?s_USR*GhZ zA$pQ3%TieOggOJ*f*DJ z*Y&<|PKL0M$bmRbL>}x#P7I8(Y6TkR-W{$)Fyodw3IgYZXSBvRk~I1-sA(|5vf1xB zBS%z?5hp<(`sL!W%VczX^C;N-y`%J#+6-28i1p?}L4OQ1b5X{=87AK$^`DdpK+D09C$qZe!Zvc{AJK1x?{`R%M#4)R5aBMFoh$Y zuv1Th$)t!=CHwNVWZg|uGes*E^lxuG1Naf1RNK=xAn!W|wx+tDj#CX&Y{ zeuQY*M_UcQd#h>LE-kV2N%c|tY2wSz6MCMHgDo4;O~Nv3ceH!a3c&s?ro>f4paFot zz)r7c&M_^;R=emBeTEK5v9gRGyYyZ+UVTD1OHleUn>(W*R_te7EzhZCzeIu9^kfE^Nnu7`9B*$sk1} zYvb5^w^Kct{5)9ZNu=Y9yT`Q1KQECy{bfZ1?e0B3nLz6elUI7MeT!w<{M1^H`=Q3V`||F} zVe<%P?$Ueu4)Lf;gv$f=!0doQ;LeGsx@J%K$#1jyTB&;@$8X#deEFIRLJL!ioZ~Mh zT0yT5wcc+%SIU++jo5loSuv86#L;10&|Wnfj2I*T;+Q$ ze|%q{1(QdA&BiG8ve|uAe~`q>Kc2nU(kMxY8;_NHO@XjfXqJ;cRdm?wv&zGRfs?_YnRUIZEu zL3xg#V2BW^8*B!nN#e&)KfU9sbHaNLv8wg=@vf)6Nr* z^a!EbNYn-r7>&?8a3z#bzS9RVzet?Wa|{5h`O+bPZ9vxms=+=hA_qV^WHA!fV`%tx zEJi|FVm}L!{dpgJ>w{awz!=E~qU!Q$uaSj^ zLl7z}%^e>PB@105$J5@R*0@#Z&(g>}YOr!}R+pqTg5Dee<$OgUxH_NHzC2a*y$>rf zAP|NdFJg_snKp(j>aBB+AQF<>pM ze=h;aJc&@9-K(44Q;c`h3Y{x@4#wyq{(coO;G}Ze8JVyL9}{>=Tu70X!ZR&o+3-p+ z9vXyzo-mL_$oyQvrRiMQ8CsygBgXx1-MlunPt%$zz-cJqUdB{;}VS15Uhc}D8r#Y z7IQccPb`F`gBb?#lSZN{w>M?;blwp%6p`HICnP!60%zd}LlKwy$a1`L6z(*Wp zM~uKupgy~*x9%81Z zD-mc&8TAWdK;qDf1^}xdSW&Vd@LHNdZ2nff_e*KT;YuZn zheo!84Su!#<{LlqE6GubNH=RV3hB{drC6zu^Geo%xghVPHWv+ zyqcf@&4aqGRtTa7QP<%GAnJpwc(p+gc>z4BO-(0&2^2Ur6!-wP0^1S?cbF&_fz`WB zC9FJ#P+G(Sd;YoyYz4cQ4?EXSyJ$-Z9{dCEtA(90$JaCUf(I&T|7}w+y&#wojKDoo zNaL{=yOt@0Pe&ybuj|Enk>wEsXA$B=($I@zfIzsR2T)B>WNu<90Y(#&Bs*=dLk2+r zo9GBFhbM3cO3noTPMl6Tc0#hDwD;!Ey z58nrWf|JJ(lWNJ#vfrqFU;673U}eB!s+whtns_tg+KxzyVSCy@PgC?oYq zPfDQYI&2suzqzqMs(SfxV!1W__NSljzXw&eNuZ=0!l%bGpkvY3h-W)i0(}rO7&U2H z05%OGmr~>r!o10Li%e~<9cF3KW+8V;V`SD%3qfK5&FxSu!od;L}Nt|IIWjxJqSIDV-hK{-m2$M-`}~N zej2*Saab*}jn>PC@5kp5qJMFB5Jj=|u8RUPL`IW%l@UmfB&$$YR02*|Avrx&w@enM)H47A zu-=MVu>(TEcolXVD5LEm3GpvpTCYH7!CMzQ3!m_lP(Cbvd+#IQJ;J!>uHXOYY^#pb ze0JchEIlR(HcY6)G(G<|RBG zXj40AaF#2KMed}X@s9-AS7U;vTt%oHXgH{)IN1FLrGH*moFV94fjwG#STP2ohJAJX zPNej}#Iq6-_om_(X+eW~AeMDLU;=U^`wZ`N%GaVV=I{irLa_N|VdR6-vi&Vq#9-~l z!#%19s0KndrRgM%(a0xud9aL5FflcY>MM_e4JJem39Yb3d718lUeYM@h-J)p2F{h- z520(Jen=RXB24!`08@$xM`0djRA0N^u=_`aytWF}KiQOR_9dQE{}|3#mwO>t_&gB? zT7Az4s{qslp&Qm&b^TkCYe_3OTP|KQf5 zm!Ly6qWx1WY}i)g8X_gS3(Pb}D8GC{JDn;_okpPb*e+h=)$ZOw*!-A+oUw%F$`iNa z0-r}M9m9G34@AfHLnfh_sOri<@*ehmWv>?7XVh?QH)KY^b8Y)bl+aJkB-?F3Zic)% z*2^=wDgA`bZt?UuL>4`O12g*VqPo4Zp^WC=QQci@X4eHvK|m{3IW)b}dZQJ!R@erH z0l{1WYEC%P15}eUpKJR`m=%*ZDHJBxwlLW^d@P$ZdjDCc%h%JGA4MJUoOpAp`dlMS zfZ|wln8hcGO}4&#oJ_XyV0+yL3u zumE-DOF{|R{6*x(6pfQcmZ%n?>K;Rl*FnSI-Os}+$#}H09dPRqQ3{RbBOG`zO2W3Hp^|^b2=E+9 zkc$>8)kj+O;z*Ld7D70oaRrnx24l=qpmIuPSWD9)7=E?JC5*TIXWA?C4#qBH%!xA& znnGk&+FJ-dHQNO$_p(|fG^C}5%O`CZ^UX1`!nv7vuGe&`0}f?xDM!1iz}Wm=4DU$z z&H>AWK1FrEfBL1ygzyVfc>HL=D}HtgW>DL3mpZZLk%eDNGb?oeF4U~HUUm> zfGX&Z0A$OFTpVlt2Dt|&5ZOvDRsV)ML_f?4l!ugfPJ^~VR&P%HgMl9!i!vBC4V#p9 z5H4l>WChD-vEra3h&>@W&tr$+rkkvHNXd=&f_A`B)9=9}*G@3;Fley${m-WC3RFE- zzO{P*@O=(WLsL{?Sh#IUvjw@d2o+}X>l{}jFhD($Ck9Z*{uIHx$w@)1OIhU0dzfj; zLA%$doLPGqXHe7m+RHn#)4=LMh5F)O z@5&Z8B@gdOJ#r+4Hi-cc`v@SfKe7cPLZO&f+Q0}CO`gqOq=t-4o+78Oh#YK?i9pSg zVvti#D&L;^n^vlH^;Z6q@-O}Xpcg-D8O12)%wx!(TRg`Q=eY=5C?>KMMXIW-J-wTBHHP+@?I3p7qTW=Cfp3D|LfDqi? zF9kxXM&bsLIg(3h@(6x%4#0;bOh6e4IWgkcVyLgj7ZjjA+HcdaH-IZvrjHGiKKo0L z7iVll3F95P#|2}dgC=cZeev<23|is^vN=ti zjKl1Q!Gvfej8p`$^wb}hg<4NzhhhzP|Im71W&K>RvOzBVCUQ&9n)>TZrW95G8SnJ0 z#6ec`2G#R^j|y!CrIl0Yu8r5yZ+I~dK19bE2tTSGhfC!XbWD`7jVa3@)_mGU%i~H$ zE%I%|oW$W-KsOMz;1h5l`w3hlM_3=vpx|y27^+ApXYu4{{Hhi4(+2ob**b%*Lj`i=R7~3ld`L4VsegJEhL4Yf>7hMKXy{=mrV~4 zN<`y8Ul$99NFN{Qn$g;54FNF9vYNg{bTU8Fzc62!Ir$irV44mD=(1>KIRai|?Lw8K zi~0_0AXYga>%>R}#ft@TU9vv>CzVB0#-NXoB6JE4VyUxOIX6(v0UNL;uBe=zj?n}h zg$^*A9XRn0m5;j|w*#T!BdATdKBe{%6PPjm@SBha*t9iH^SnZ2UceTezj?rz>cT{J z@9%<1b@ysraTU+&&dwuqmXzq??_w!6zI5y7j$`!&`1S~#enkB2dCXEKxsZBqA`@kH zqvzotc{TYP!^yMbTKRQ>aWHgn+j^5$m_r8}c8zuvWGVrNVngue=MK+Qm-)>Pv+{R$ z286~;m^-N=oX*^D^^r64_L*xkxL)rveD*CFPhUBF=6q}eUd02xJ<_l!WlvD`-f+LxUw)`1Oc4oqZalJD31d*(89)cV zAaxX*M6JT@kJm$DeA-L{g06P*#vCo_!1hSyO4Uk~)WJU{XAXaL=v~|7r8S3ple*GU zx_kd%)ifMR-ZWo*f3H{5lTA6DfA~uha4dDt4nafm6FZ2|v^ye`KiO?04$9q5+?%>Q zdyRcHShh&a8@)}+c0GKr66@!KfO~zIf>1H{&jUJZ0^sQ|KjxEpH zR(!YUvC<1C>`*w4Cd6Q=>wv58FK}`~yPv2=Sp6rRvS!|=4<)O}XWv@NQ3~nit8GyQ zasNTA=sUv`Siar}krKeS4lR72OnOy(rU>XM_&zW}r7R^2KqnZeq4xtc2zS!wAhZ;| z_1$GB$0Jk$T?QwW?V{Xck$T}XLoTpqfA%^(4$Mg{WW^|3@-&_$vM&?x-yGe}p{7Oi zFr&`ow^dx3z;znEuP~fk)ITzzd*9Oahd+&Pv4c^jf@cJGZ`sw+1%dEj)i{DimbGc9 zI^oY|*#CR+2-Mkn6b~m|u|-)sKF>4~}+-{DOfh*jO2`ZH6Ov#eSD7Tsm}>g86Rc zx-Y%m#!4lBRIE}l+osN4xd!p4mxZ7;3#@x1!Gd(i-(L;C?twYc4 zzM$0W@##RHKM1nDvHpDRo1ItaMf4Ce%~Y+YWx73FN1goKX!dqx6`Xg53DxTq(%a6r zc&P91Zbz5Z)?lBetJ;}LJyXMq>(P-ggqj1}<|;Tg&9ibz^XGooCmu_#C@fOIJ=%oK z#aREwa4-(z3Sc%bo zCUZtOQJ!$%JDMMO^&V2mvWOWjBb*|cIPB#6SHk!2##SjGpM1fp+96CCbZyJ@M7M^* z&pWnx-*~>4k>|f>V}pOH(Y(g*Z(jxPwtacvC~o|5or~dq#bqaG+c+8DSqk%Y*sDKj z0cc#(2V!F0+l7eWm4@~RE}aN*{-triViq-Pii|tg=Q`OfXb8}WX~U(R#x&Hvg1QAz z0l+D$(0(a)!TA!WzrJ6IkW=Y0_MK2tF9j0)l8Z0hngO_t6 zF%?rafKkLm*6pm$a)v~+@&P2_LaYXs_|=Tre(Ln4PeFfQ6s|d%%9>zm`o;h=I{JcG zZxtQU+|N{b&PiA6g7WSD5p&_bxV?4h=&*B1U85IX+Uql3n|H^CSJB=kr2i)Af~$>f zLU5$DjI|dfD^4zBA=v>o{ZT#q2EUwIAb;9b5{}!u{r>O(%OPWvN#6-lMk%0M z45uxUIm1JOgWHff0<3j< zHtF{0U(nT?GhgHgjGCsch3D~CXu5CA(nQh*4W|o5&^v?2AM?XnU>@ZD_WhAUB7CFq zIfX9RP7iyvHrR{R&=rVdv`queWVw)XjEb3LKq)A_HzN)`Qr1ib>$6f&Y2P~JI}NM3a8&;)rBeWH;i8eR;#br(I_YmNp1fyOl9CVp69DK;M^)^i z65FnySQ4PR?=%6nzT);nT24@K8KtFtKAu!lSK;t>;dmWxrkyi$bcM;@(FZHb_W2A= z1p7~qLnrII!H~^-3BCG1!dVAPbpx?ac+C_|?9aKHrUzL-ZJ^45$!WXg(pPD}CdX}w zL(!^=Ycl@HqpdZN(bZGW-sIf1~Dqt^TDB~zpsS&)FSKj8VVa0!tZ$*NiBHSbPo{e;H)xl`ia2%<6rj7 z&OE!$JiC`;<*?y|IF3$T*zsSAFSq<2qp(6zr|vTME7PC{@8`eqBAPR2-}{ZUTgab# z5regpzLxrI3Axgc7c4dPR=?l6`(=V@yGENcqTRIK?;ZEmuRd5}{H(gmSM7g$#{)gT zgWpt|NRY+=(3T)+??crml3+*W-Nh$bX_NDj;nZ$?vRhNF>8)qWLYbQi~GyZ*vwDoO5}%bDkHfPTsHR5986n6O@J|QdcxC>wp-306i2^;L*DN~+HQ@gDJa|*{Z5>NZ%OCNtkE{}Xo zgkO8lp)Zr%wuy8joCtI8BXG#NqN_hLpvnqrVSgmjt$n^ z;|4pG%aU(uq>N-oKKXqY43*RHtk(C4_T_gzGpU4--zqZT>fwj90p-82oXjVhWL z*lM6^U$`{L0Gk0MYxfsvb3yRfxF%fAIW?4gvQG_NkZNT+9uw0=SSMUysrXh&s$5ii zSrqn(a93`P*1r03hLn%pI1kFV%+uJ@J&CYSyE)KcbDT)nzrc%L@!5p3z?wJ{43vQp zAGKW3`I`Wl+6ckf*yY;g3C*T#XhPK zet1sXk0>FibI?`wB0XNrbWocn8i7B_rvzY?ei9n z(FZ{vri6SNkB{E3NT!T%`;peKNY8~eqCb{ZN3cg;78p<|SUd!|sXf7`1O{$BA|LWz zAUgTrwPJNu9TFR-lKtk0FP|u_dP95GBTQwef)D)nNioCoX|oMye6?G=sf3Zg0ccW0 z(^13Y5EPhueu1(Zv#mC~m#O)1Dy@zY0{H4hlSW0XYQdTi#=99tyI^QJd6_sCVk3XX zb_J@3&%`mmCysyjePt&8Q)nf^CQJaA$x_)|_5)(Vya*l1WtUO)u$&;SdC|&Rw$_xZOH`A${m_@tQ`i zN)_1lTxgJaVdBFDs6Q#bJfrezD+~Z_Zj`WOCfP@#dJNL7mY(i{Zc9knYLJE6jJu0w zA-d-$drs<7d#&y3XU;@KdCHiLNt0Je%){-lYnVj`BQgQ&A!LsGTX55uDAZ3b&08NQ z=6AS_+C5L5>kt!>n?`7{UBfG*S@0a)9k=<%s5z8MU|B$K_z<6A=gJBDvXQ!+K+Y|Q zdi7&9SXE9N;mc!NIg=%nXUWm-ydU>+r`J9I^m1e)M|^J5l4W=C9MyFxA^FVE4e+X5 zsHD8q@~HLk#LV@}^pz}Za{ApXB4AT7WH$@_=csD+ocj;$(3|9@oLKaZaGB*=({RFM z*2=CH=1TXGcdXiOu#~LTshbw6<)RAVHIlU|3rsUDhOv;^;ffe$l(l;6;gn}4R^-o2 z5wU^wFVmxc-`8+--dc-QdN<;AK5h#EwcLGU!PQ6ZppJWM%S3yn=A?$WuwxZmy1HMW zqwWe8Znd~|n#z6boiuH4hT(P9<(p$@H|53BkuY`p+#!9*$kWEJj+JH%FhLB2V=ni% zF+5K3F*=zlTXKbHVOopuMF}Nw#O+R+50+_5p7Ad20}jfBgQ`4Q{w^L9aVWuu7jL|y$D$Dp`%&#NQ$bWPX-X#!jLyz) z`OVt&OT`*w9z3gQPdfpYz5nx)_%gkL6tdQ;t`f(b=yRP|nR01m-oeAmc_MQPx(7TS z#6$5iKWHaUi7v%0F3&pd!P>i{dtjUU2s-Cj(cMEQw{P`Np7kNTN%FMXNVRR-us*C9$ZREkLH^`92TQ0$!`1w8`C?$z*ovw>YXhQZU3Dj*3a($cXXcE%{)1K z)*Z+q+7Fs}RlAIwuo0-&0Qa5LCU^kOaJz!_xG(dNYV^o-H~Z{9Cq~WZI9!8c3dE9f zPG5-1$Q~7tNdFV$Fy-6#)PJIi(r{=))>WC11B)HZu+54yJ-I2Lx`T>60Vo3Lh=#AM z{NZq;+fEZO)Jt$5JReYGVvzK*L)P>Yie~e~5wuG>#{DV`qG_ZXBXO;6{(+rQG`yoR z#OhY94qj)8L@MK#n6uWm`g)!mH_q-%#9Pv#dhX^A(gLv$XW4Og(cX}InNC@@ju&-X{PKG)^=mlF4p1JqXknhJ{qrIv&GxxZM=T!i(ZGe7-)HkgTJ_q4>{> zH&25K`D^wZRj|WmZVEzSfsN5S=Br>2ur@?{iO=YP{2yHV>+6m>*<8&?lB{#yC?2|S zudGZbWDuCKy5!TXw}`a5W>DA;?>RyG@KUcdznkW9V1Grg?%JCZYZk@ikq-NO=w<4D zzSUo6)J7bwnyFtWSr*NFa?>I$WL3t=hd@`lyi49 zNMxN`%T3=+Q_j1zJQ5)3$)}^GpJP)Q&a9AsSM676diUCzf1lV<^PecSZ|ih@_JAQkwA(h<|BLBAw{=YNOUG*Q@yJkILvX&MAn>T2WnxZvQYmC;j7k6B)ZXECZ z*j`IZ>xP!rEUjr;e{(p;&)6M5dcf{Pz=@-O+xl`&oZ%clWP3W`#ECprH7Uv1k61tmqX!59*Jas@}pHjY!sFG zqO=*f5r)#Rq2`ijgw&v$h1!ShM;jR=8Jsmd;7Jgif``%zxgZ3&-E9X;v|@-k5^;=| z8eRi_UeV22iD6Be&|h7`-D*`O;^8wx!0B?h5evdk{r*;utUjfQd{s5?xFWO;lm+bF z?)_12S9kUZ<8|mHRPulJ)Bjyw|FywF&|)W0=i#pQR|8nfMdlCJQ4gykqM0!L%M<%f zA6d9DwDq7&H5C)~BV;#7=upt1+(D`Wv@=9Igy1|7v4-qO!)REM0=P7dcL9=QDEH7; zL7xo@MQEh`2<2^nlr%QRR_W@m6C@ zkf$~V{e&1>NZl*x0PT zLAZu%jStz;@<$atc{jMYEHI@N#aB2!~8wqsWqs+-V|CRI$L}Ltgr*&{_ zS<`2aRocLKw^D@5+26`1OtO7lcH~|BGe+$Zw5V%=c6#ijiwP54H8gJvvhdY|@p_CU zj>>(;wQ&Sl{=_*r5h3O1nZDL|LY1d!?}fK5kMzf+#89593hTFnKbnXkrdJQqmFn8U z{BsmqI%3oe%5dUMwb!9(Xz2ode1G`r9D_&reuJCDjfuWlasC{?5jS?>rhjmgCFY#zk{aTmU=bia^IS@6 zkaog*Km8EbegkRaRaiRV(Hth@hM&MyoL6$+eO!WsZhn%bY}2fDN7s#~VW0tn{lAXD z2BdJq!~J38Bdg@CWn~fCqkgHf;Y>VIJNM=d5LeLUOQn(~Q5I{6Z73o(C$n0GsI7Ja zu89#(ulmZ1G^M9^WPTBiT}kUmDs1o*ltJAuIsvXs+UM#IupJhs(mqrd9xT6gQ*8h* zn#`*k;SbX@D$cf)wtB2)rqYKVCce_3@0RT`=gbJB0d(b|86D-z_Q0Rw8F=f;2$CGI5qo$ z5ak?k4i*4dTUW_|Q+iy3D0816Yjv-%AhqlHc?%uYnI|=_5wHSM{Sja4t`<~I{CY_? zQBTtJ#Twrm;Lget*0MHx9o!lRXR*#Co~R95zf02r_nOOF0Cys`O5Aicb>wYg!f|Ey z5<5{JM_~@RzGMTO4LN+hDp4urYy7hkwLlZNbZ{kR*=bWK6;yH|UMr8r+C|=^${d#E z-aeudm@L68Rc8b?wa$8x4lVP;<$o(VqH-!^A(vMadyj`vtU-Pr1Kb{=^a*;RD(@&j z2=f|_n0>rxgyP)AMZhX2u~;OWtPQ_T$((u(yjlBOA9&Gfrny=jNCk)-PSxHXPRo0^x+S zv@mK0$=`lSUjQy>0eyW@yq3sH%SlhG<`**3qbQ2i#oruwAC(GrBg2)_F$*X8L*bL_ zYof8#vLS)*as2E*z^w0>vpUqm6+atrf~Bt+& zOT!0V_L>(Hy%+UoZ#br5QwXe58^ap7it?II=@Jn$&S$G~txmXhe|In-`EAeJ0;+(b>eX&bhYH+1i7mR6e0+x;32(%rBRW&PE}hXZpJL`_pBn7k{f1qT zQ=giJB7v)8`dotnIO{rA)NEyUVuW7Fv+s;`fLs;qx=U}PH|47AHh8V)G`Jou`pOv+ z$bW516Gg-0pe9sha1TREhxe8(Rz!5c^O~g^`=gW9J#5k=Til@1yP?M5AugD{DvzE! zq0K;hAYkGdbxZkc`egLjEfT&B(#l_ZTWm9>W3E;ilr9L9%(41zL)^zPKb1Kv|3m(( z59$uSC`jfrsR=zAJitG^bu6F{JZDN5yo19TAcmm5YmupSH~KBPIj3yM%^xjQdp&nP z7rj5;1CC+!C8_`%xKbrdop@C_`ug=FB~VBL-!5I7=Ce8cfgmuBf#;AV7aFi}Y4pwT z-5j8uGYltC*MbQNWJ=ZH`s`X}^Tjhzys5N-; zi1{5n`pBKRCvvD{+Dr}(o0DeT!i*ms%;#9&cx*z~U_8-Z{)A;zxN4dOLGP58Q)Xjg z^FTDb+sZ{qT92hyTG)g>aqRhLCQede1B0Wx9iZfQ;WSO3m-0op0G2zCpg$jrZB~HN z*zOv*Ar#SG9;UTxdZpeRBTCN$qmwr}{AXj|nuBm#$x)UMlPj$C(gKkvoiiGQH z=4R`u0vnPKPHZV(4alRv24(z7e_(obG+t)o^Zo;VR-UOX^DZ2!;KB>2wjFfK{*dWd#;X)$+Km8VD2w3RqDmNq_ncV%#9Dx$i}vCWp*n6_&F6 z&nZ7$6IfWfnw$0-f7if`sYZLtO@_c4#-ErzP0LX+XFcPj6yeMt{Sj6SkUpUc(fJY! zOcyoO8OS5`^wC6Qy#63OMXn^c#uJ|Q`q0m_O2Zat>me#(c#xcJd0>rZ97YA3z?#09 z??Hz#*%bvFEWgl72A4#ycXjpp?3@4%7BE1&2`9rDKo9yIwQqXx5g!{rcV-BP?fEd< zA#dP%aY^-eB)mqY=(1bW-ArIxx`p@~sRF5kjRp0-jaQ4nQ_Pum|U2Dn_$pLXuSxF>EdhOS#JnJ zzVm8KQ$dR{m4MF}`5JHIFKn)`qXtaW*vcfD{|H$Atr3j(-9X@xVVWx@t$8B&KmNlW z%7=76oRCLrWE zgM1HTn-CeB8e&03u{|F6Fq37(nj!vu0^=bvw)3Pr0EWoMxOI6=M?8{P9JBbc2blYkTL7?Obf1UhXDfu2-!~#EqEES z-%i3L9r_3*(_$_q{~2&2O8sKy)B-B`hm(L9^9kQeIfqG@_f(7%#AC28OvwahcbAer zq8E{wt?#_(4G-p{wlh8&o!TkU-9HkSkGI-W8DeXx21e6%ytnW~lL=A$zX7@}T4npP z2yf=d%&(z2wcoWSPoDl7i$sLXi4+tQQ{&s^d6d~*c1bs61SssNHx@qfyn2?cr$DGQ z$Kb(#yQc{0<|~Ut-eD2KlJ%r~&RG&ir%QCPwP6wg?5CkR_XO9r1NUZr<52<%o|Ldz zUOb_XY{N1&JJn$jzE$I2ZJ-Y}Qx()UMfv&`bG<&j?C^V}KwW_9{rF6Dri*(yqJra; zOXiw!XV(|s2bdS|sv9PB;g#(~_pLvTx@Fw2APVZYc%?qEbbUmvz=t@>ibU=&4FocB z=T1^pp`N|eASc6_T)?=~ax;mBp|bmhGZN?+4Ufs|y&ZWN;@tO?2X4n69>zs5&@k;` z@-7(W$Jp?2X$Sv85NQU(d$YvQ_7pLdq8n-;s^D!fY#m-wZcubQK2Tx~{auI%WKxG^ z8o}!Y3C4Q6Nw+0#nDN-}v6vjnUlpxAz8W%v0hwjLcsX8nm!_N6ZNDiOl3D_+(MbfWvX)v0Z39~6OH<Pd++duPToJz zMIv}q7oYY=WAGL}t&I)9IjcbjusgIf8KBh)@d@GNSF8&dutBG<)NCUwe)2ReeE0{( z0!_4vU_}C|Nkw3Zfa)ZL9JQd8;D~V>QdmQV;6h#^1ej(}8t4vyHlFTX02xfYnHz^t zsuH?&8V7ysTuTluUv!m~0H^|tVqU1hU~yU{zI013b7eA-`tPMsgjRY`6)=L;ZIA`j z2CFw=f#E88h}-2w2dH7ussp`RJ^WKaXw}kjj8Ysck1et|0y<(xGy<9L5j=k1U#vTj zC^7`iCuuRZnevHeT@EV&vs^V0pn(ueDdIUC3RpB#J8nO(Q?1>Y}GHe#5$)n03uLjbaAxWI6Vqm@z zWU^LcDKV-R?PHGcG{VO&BxmDeTgVr(is8Y$#mCMBqMJxqT|!gSl|-zH zs3)dyiYQOlB9@Xlx)ZE|wM!b$ukAvp#Z5%eAEoR*Tq$H)K5McZT#PxVk8AU9b_lmbP!&;_Cm##5hD9qA=_lpkgr3mFfYdg188% zQ*=iY4D-D}af=rk2hMFcJTN@hC5SZeAqK|K9bRn-7%VACgq2^8l!h-7VwOM?D8exo zrGd~NUY7@T%JHj!3czehjSu`YH)sl$2LO0~Q(!(a^fEa23AnUlT+oPVK|9`Pug+`5 zKp7Ic3DA42EQZta2A~n2O=(zU=#em1ozpm)G$Tfq%TA(f1R)b z0UvnM%&qA0j~F!>FT-J+@bg0!W&-4XaO+p|G{*I?$|zGQ@PezPpHIz)FcO>s?#`z1 zome-7Ia=|9{jgwAj62^@paqD6_Ym*Wl{DKa13(wjZcIYhmXq3(b9zvQ+IRr7ZF7G*u#_BxU<5o8x|nDEx6*J$ z2pO%EW``ID%kn@s>dTkpX&k0sLa4)C1f0e<<4_QAr4;ld?F^LzIFGd3bz$I`TET!g z-eH;&!r%7O3NCy&1nmKQ@TC=a1_mC(l@IyM@yJI&C*jsK^#aj;8G)6{I1&L^3bST% z0lcSJB7#F-te;O-^FTCK1Tn;7AOP?1y<+w)oMwmx5M6$;;EQp+^IF_pnL?a1I{9U`2+44lyvzf*DYSQjcy$g#G+5u{l{U6ArsH(K2BN zGYAqYpvEXyEdT--xUCj}J$(-;Jy=@-8#|rH-W5&3y9kLnX)GHcfcY=r@T@l;4DvOR zy#zuF_Q2yo&Jk7iDgez?u7&Gf%_rgY@0k3G5SPEeEY#60Yh5YLU1z(jJR-E$|ncV-$|%lJk|n55FL2&0t7H<2hh=BK+0i# zFu694br%KvI2ODQv3FqS8Mw$OHL#~N%sM<2Z}l>yVzE*@RMZ@`=3)xd?TsV9X~ zfo3gr3DO`9#sS}NT{Uf9^t@q9thXp1>tTNAp@ZQ9Q|p0;2!QfK1X_y0Xz>LifE9N% zto&ty++w*o^>Y|>W1mx-w>A+1rka6L!^;CYUX_olI+*Gv(=J{HF<%WOeU%?&LIx}x zUj%_CxD@$_fJeq`LaB(iZF$|8klYPgI5J=S-5^gM3(asZ=OipS=A!9@nhBNT;2(Sz z#jCA^AvGPm2A;RtXW+)~qKF^?^UYx;%=9AOySwv%1D7m=oY1p*8C-$An? zGOss*n_j}COVLQKGS`Lnq)pxr;Itn7jcAFb9g1O(sbHDVi?qfxaATpiB{ARWes{bq8(>6 z#9hCEVOHu1TET!{*pIM+yy}yq5(x$*hc4I2W7HdIb8PO?U%CnoKkCcR0nS z0`Oh{FQ6Q6AQZ_oPo`nXlWE4kuffB=m!O9|kuuB;&{cRDxQby_L<>_Bfc3)*%7Y0T zc(iHIdI)jTU5He~)W8XZXN$TB&56bO;S^&yF=5IxG^aqOff)BD6+uMPlqHrUq<_F6 z6;cjQ;JK=CNP<0n1Tk~xJ&s>AdK5N|a)g%bZ?ytunc~soB)bq==CKrQPMdkFsXWqQ zoLT|FzQj5ldd-e)pl6QY2h5@5gKr-ayV_$g`tErK6&R>`5^(Qv2$BfPnjr?7#cZ!ZsI zLi?uR!JDWCaH~VY7UY46CgblIBJ)DXC4Ne@*s1jBCqxSZGlWeHNAg7?Ye-W!Qp#KZ zdK#_4ZpN!92y_@3C(kKPAnJ&xy@HKcGRII>T!@5|2O*-SLno&c;QV+884*-SO+o64eu>!zMfFq0p`W9CGo`QuAwtM2DwlmQROW zPX0aC+bnUutyWlq*XL{ZTjP(t_>_>-{ju(B?vadbdyL@Sk_Xg71h>7i!fWymq^E%|ya$*aT3S(ACTQa?TWwtVG|bzZStG54ttNJpYW9@Mqi<6?ad&zX zTKshW`*e#*-tqsCFfW^JwCe@=q+)>t@h!uFS+|2>_md}48|IreKFz<6GzO>m<;iQ6Lsu~DV^_AZhx_I8frMO0LcN)XgI(GY-rXCMIqBP! zUlSpQbZV&0CYH-}rl?rt9L;ue3`HS&q?A+%L4PH0uhT;oCS)Q-5|*m(W3P~s$U3TE z9&$2@(vrM6+Hz~w7?WfGPOyV}QQ~}C_Jjvlbb-(J?HIjAPBj8NoUFXWHan`(_%7WS&xbL*{w_=|s; zO?ZfRmTbfL8S@qfg_0rvc#Ti0Vszv{JuLmfCdAiu!kSn9B^!+$-W<(;#y;S0x!>># zUUq7aAHRh{e2ebJU-?JXFZ;b@$MJUyiE1<9`a$wx%_RecE)?<3r)mG|$|3tx|} zc}4v=5P^IN)a!YNDmn-b+{T?8Z;3 zK6#@iD|&pA)+Cz)e@$|oAzPoD|13H>Si^pvp>}YonZCbQ!B@@8vcHnN_0E(VckZ-j zR2aug)QZo%ujHGDkCRufDYQ$SdZ;5hGx*LPe8GYQinnPeGyAbu-+dteDJgtnOdi@! zAKc6Qx;+xPp-$?wI?VB%KHox(+|<95oq5x4-Fe>2&Ros=iBVP;GWK5+Mrq|%uZ3W= z?lpS;{dbOZ_9>wtdP1J9wcD;&Gi0}m)D9m`zi~HxbERvs&+~~v$gM*G@~2ODFGGfs z`fEu3oTQx2*{|ko_z->7bRsShEMK4XDc=qG=kb2K6K1MUg|;Qt`^wim#bV-*s|r6K zcAslrUwU_p{U^JLKENz9dRwSxU#EiQ(}f>NIjN%OC&)7WPO3MP8U*G-spm=v%$YOU@uzUVs%%c^vT5~20btHAHi`fC@E26%u)Hau- z?7OYngV!*bsv*!4%=JTCm)+_r1?8|*SGJdUGp!ENVziW-0p90C&ZV@*kfG1 zK3~1%I+?v@%Et*`4eq^pcy8adDO>!{6Y}{RGTg5jTC2WoT;#Q&>-ny2o=YtnZXgxB zPmRl`)a3;1k_b0$C|&2`ZFr#k!^p(9k0zDAQX7XD6mPdayJ@_OXu8oq6@Cr-T_c+> z`yKb6u)}3;!nK3xzJ~&?vUZx3Xk`jN*_HM`S^gv`+*!u{s)d)CdLD8$YmZQGF4kuq z4dFUHUibXv>}h$Sp&etM2k(%NGS8l*I=JVS{mw)5hC|VXMq=G-71awac8>m>?D6oe zVdBTCIT`gYB1Qfs6E|$#+hMbG4H_JMWLw$GAh(YAZW_<} z^w~7lJv3Brfg~gkOFrwDSt*~zd&`hIUYoY)wj$BS5-&6Ueuy6Vx3@6cAvF^y>|cA< z*^B4ate};v!c0uvH&o9m_`0}_ygHSu+4*n>b}h5Ne+F;+`}p%MpKY`UKjf)OVek0E zIRvY1<-%#(g&Wew`gze`{No#{-rhNI>dce);O#lVDu?E8qmL@4zIa@-r^EWMrT9HGEEIZT9{mk!IA7QiI3oG=(tOxd*R3|4{BN6@=FP+_NW>)le zZ-_1kyCaf#`gI;p&r4v5L4{u7J^g$>254qW~!bPuD(Z}z+d+V!j-=+Q{^LPRo zzD~YLmsdoB#mN3w<;JShAp;g|P9y40j5+)$zAR|9NPc@J@5-nz-;|?;!8GZenl?d$PK`)E=)7v=L-v8znUM6<*29m~f)dM^!1cJ?DD*7+E>hC&pk9O$vFitlkj(Lala6;P+eqI%t2#>Qs&fi&2@fLETpis zG!WV1NT$|(4)tKIZ|L!J<7D7EA-lG+!|E2_O7MXqvs0c?X5;CrBAvtRpB0O zq7tsgdA-S_-xVGHG+%w#qqZ6*-D^~SRoSA+nBTWaJ7Le9vG3-+*-`JY@I%jnH&7(A z_39$k(MuEls0ykYv%8P|5sU53&b@v~q^ZIu%n=V4nLZIsHucHyU2Cnkc|mVpT+5j4 zhmW(%Oq900u&P4oCL7y0_O-FBciju!6pz94b@Q5UZ0YohAh z-wSe~{ME7D!e#g5Cl_UY-N>w z#%Q$Qz=@y@IR=AYZhKAZ^eFqfS&tN5N0Iq~bNdO(!FR!5tJhnjKFZK&x~LT5m)yIC zxarK_?RW^B|#M$+5t{@Xu%dDR6 ztu?o}?)S&(`Xh<7EE|3E@6L0&g-|h$zU_8vQ4}T4?_KQ}**^ax>=WP_v-9x} zvRa~;u36u=A69Ra%?kURzzx6G-56M5vMMF~g=FROEi63Pc#tP%v*7&35Gxv*c&Gee z22Q{azZzcRPnjvl|FKtM^Hu?aB6Dy;)&M203k=UH$4|Ix(vJ=p52Lw0sDQr^?0Sm% zZ(V}ba;bK_>@tfv+kdaS^dqJ=ZtVJDxUGtzxxFqNpj8Hp z&ovDgbMwz5l2)*?hSvjZ)WDnScfcG;qGrW0*oB}R*Rf*Gwy{2B1$`j>cLu8lo^j5u zIz;@P_9CR%yf3!3A*1N4Av1UB0B3$@24&u`sBN>!8Iw$%JWv(dDC6@v#e$l36Qb*9 z7|k`k_cq{3-}O01-YH~BVHr)g&&T-40@5u`0Sqh|dv(lp<(+M;Q2*$o`FJS>>} zVUf8Mx~2R=;k2(ODi?X{zj4@@o+Q>fi+3%Wkao}fq~U}%8#BWl;^tB-tUC$ zC8Ygtlab8iLguj37SC{O^l6J7Z=ME5-RdFYdXu)as30fn#;9*%!K* zgejvJ0;E>xJ;>}{@7#Kp^CRM^g=lxR<60xf~NUh z8Pz=HNRO#W(aTyhdVKo`vBeVmADPJHO{EE&oJ@O(kISYd{?cENIObXY=%#xNJ@=6U zqZQVr&*!!#L8P-wxZrBXhV2C`)0Hw4nM>o{8w>Hq+HpHqFfS~G7gQ$I#nikIvWNp5 zzyVbz{m)t-I|#A0)F>0_y9i_pN`!w=|3jHhEr-Hi5FO7&2Vf!wWcLExnF4_@QB?$? zZ%`HvdK?wh=e15$%$3F^bHVA<)t^`B|5Y_=9*r{g2FM)6OIS$#1_=0z8PZOAOyaA{Q zwHVZ0x($}iR^pS3PP&(%+I?^%I-s8Ff#K1_!@>uchL0yYnCYo#HVl+iP&e|Vc@%D{m-79FxfB`H8IRNeUvlX~hz`W8+i zWE8ef+=r_z2dS%wKuQQI{ctIRHs6HtS;BI{Z1Zx zUWSk-wloKS)0Mo)IAtv3?y-!pr! z8B$LTx_opd1dN$=crYcwzEVG`oo@2o=u-D%>Y50%6{+V-MqYH=lHe9UIjbg#NH^Fo z`~CFBj_BDP$KvXRR;I7at}HSc`}Y39!vXSaT7wVN&)c)ze}#8%#Lj=dy9GpNWaa0V z?0z>LX+x_B%dlSN;scH~l`w%q<4Rt;q>A$((0 zVwit0A-oL#V>%@;sTXnRVk`cSn8|06_UVY!qPt>Eoz7}a@rytbsr0&b7x!y zERc;+P?~QKtUXXM!NBA1Fq=i{gsX?mR6>}FmE-@*dJ=7oH}ky4&@~G`LQ<^mDzX|M zrj$U_Bo(eXM?ujJUWGHQQ7R1R7qGAl1fbCb#lMfB(X1YB7w0j>qmn05C*?SVfufU4@VNFp-u<2Xo$u?L_@JvNO5f;JZ zTch>bA@%%7H9Y{24x5hZa4SzKgWMph9-iMHka12MDHiQCBY1K+-7N$((@Hs17`fP+r!ST;vJ$Ke{qQU(jD^AABRCdXbWAjtUZ6M&)YQkAk@(@ zv`JP|Iwfn$p_`d@FCIA2G4VkKl+5ut-5XdwH~VO@ZC~DlW6`}%mJiXzn~1+|rYv6| z4Gg|HBetIVwC`#H?@6Ue;q;QG4M_D-dFVf>-*%mHt-4;h_}spPS$J1g4Q*eCO@w0xdjq zkONeSg=gWx=^DLWUjLFDIsSR{VUOL5{~LYGa^n9a;{12w0KizSJrFT%hlyj%@w4OK zthFb6Z6wQ6IZ))5qwYe~0l%1_j+f&FXsc|0ik1oIX74S^c-UumG)1Jyaa4mEpo!m@!8{BcOI|} zu$am|EFnGdYJIyYMHw|OGOo;SaCtynY3lz0hOn5iM^>^XtEaK!#_vYfF!)Pm?K1q> zo^Y(ZFm?T0gWX~>w`Y2Nx%Xc7-P6R0o2FhK0Na>#>zV(XuFHP0EzOxgIBBWUn8m2e z3~Gis66d1mMW0qJHoCdNpkOv{b6G-K-eZSiA4#b1Uj4+U6%44Z;Xg{c{2cnOR-N?% zFSFf#1ba1$YMoz)>*T8E+#cU5F{O(3g%m$zu9~s27g<@^1N?ab9_`Egj>&_E6o>Yz zx0a8Y>l%B>PR!?bKmN*dRh_y&?ucXhQtuGQ1*?ah^w5`17yJvhzF2RaD$$gG%Wu8u zHRduTP8B2-o0k2{llt$shv5vcpgGfEV$0I(6L=*B(O)4M@c%`t`k!xSh0Ln?-$+2> zu(#tL_Ch*O%Sf#m{|gDoFW~6^p9w%r)&EWa;;3_>?Xdi(hK|JcVj#B1=6R_Qzta*^ zPLd9FNHPmAQ0E@~3-4xBW8`7wd-4@asfr&nD7=V_8RR4cAwRld76VQHQOId%LkAzTnNm2I31_#1@rfC2vmj&84c}P-`2z80uVQsFX~V;ipm( zr#eje>!J?KUwvaMtduSPhx0Sc4gDX>p)i=fhwVM^VR#2;!*hjlNTr3t=7mItV|9l2 zIC2jdmTV>$;g!(p6>gl}jQ7q3N;~k1)hkr_>w^Ytz(5(Zm!1LBj3RrSU}$#GWq7Z| zKx05(Cc3$I0GiHui1j1N%iujWAmc!SL7xHC2~o4!0cnf1%PSCAuk;uQ>|lDZ3rJ(Z z|3lZC2gKCB;lm|LPa8rhHL}G+3MEQS*+P=NM`21)Bx4_1=Cn|e45H9e6H&Gd4>gpW z7FtwVs7c#t-$u<$GpCt3bC%zy@B9A#c>j3+c%IChGiR1_f0p~Yuj{%;IYd76oiScO zWb&wg>zQ&6AqAC6c@CxUqD}|aQYDQXYBp2@2r1+psEEQCRA&O8w-_QsvPOog7G$3U zQ;JY;xFf`Ls0^5DdE!bKiJ>|jQ>d?=#Bu6}8`z)7TghZcz!q2u5{^Vh3@J~gyx~S` z;MW2yqCDOpmsf&EDOn35?=e=!Tu$P@+|MyM_X1bP457g%;AC_<$ zuhyRw@?FD1!0L$ES$x3Wmufa?zoBhNg7O; zupm8g(S&3Jbh1N}@X%Ixb)oJg@&GPiK7sbbIxx87-thQ=8^{+lII)bl^O z1V^h=ky%&C+((?ja%-jC%IP(n9s#3@z=8`HkeOV_tAfeX3RG~OOJbt}q=>-$M+ILA z%ru_?`OBA0m4IJ%bi=H9vex}@9dYN)AaWs&JmIYAm)GWnayR^XH421ODfCX3GA)() zxY2U76v;BV!o!bU-W(XI1q|0hZND;jzsr35m2>YY4zp8a5N78P(JjS5C$HYv0l123 zBD-z?`TVqm$5>Y)qCX5Vw%k^AO7;`Ampea=aNTOyDae{ZbuM)&ON%X}OGArpP9KN% z7~wpB)4wmDzTENH*cl(uJH_sUB)&0ICacUZhwrz9lQn8XwrvJ5Rn^Wq4QI-1hXLNi zlm~w@FFFXY?iNh({G&MX$YPls2EM5<>~`%=;s zpTCHGDa}ca|E>sEIGQ%&-&&1T~Fsm_37=<`!`362T%}yYZYy8m-XUZ%%DiAW2^a@=e8E%2F|aDS|>%@I1952 z+jFZHyhFu>VxH9@qbG%V<3KGUr42zFp{Mj~Z1vN^z2pU|RlkFj|WEP;eAu<%T*8F5%Pa6^GypO1$ zQEPmFfqo$Vo=ket*knfhiHAsiA2=>tp5hP<4#Jjfw$Nw~w;XTvq)bpGfyJ$3z;%Q7 z4at)moPU5DrvU#~qXjmnXTEzspjdXgma@1VH=^XV=MH!dfzY<9KXLvB16n2*GHYPx zQXc%9=QlFS`~kDCG9VrK5VNO+%v(Rnt~wGgz_S_$MtQ@nG8I!^PGxOso!EqjuyYtU z^?`N)5W8{#54r~47x-p~=@U^-^~ldbcr;_$RxM{Nu8I2k=48nJE$E*SQd!tI3GPW*uH}$s+Ylyf_s{aZ`4ad~WyZ}V-CO8TV z8>Bp3Zw9pjzW#V7iA@vzJ5DV`?s60~zxZH07=u_+7G?XE#a7&W=A0Nx>2zrkg(qYtb6zulP;2k^0 zgd0)_Zy!d~Z2C3|pV6=w)~{EizZ5lS0bVY^V_qVrW=6lx0_lY3oZ#O^07B_CM@ktnBgM?q*uy8>ha*6qp_d2uKxpee zB~N`(?FA+J^87~d!4{7Scq_zT%0IwtJ3cqQX2vhJ`x8fuL<_&@+*ShaL>}AZFrEi@ zSpw4Az>u5)hw8X2BBZK?Fv(PfQL*qB`LWHDcaS`gI+5>2pdTt3zsrm5v^&nW1G)33 ziHQYE^HqTAV>>JK1$C_ZE`vuN1MD(sIWfPw?S?a1C24K4E(wNZ{J3dtN;E#@r1^fS z&QuB!^RYybk?q(c7yACq{$o$Q8$ouOvQL<<(c3aXlWr7kA8`XKDV0FK)6WIWA3gY; z8zUFibR(f9g&%SOkm*-kUc=*etl z3TcycUO6F*<(!|2n~&!*Xz5ivxetkfOR7>StdUlGd27;(kTLLYA1FEu_2hE_SG1Vv zKD8U*0n#M^Lz|Y_MQ&^B_bkhRVun2> zVg+8l{3?AGHG?MrU2P8cPDhappxFToSZR3325@zMRuiVE4?`o2m4<@BOm~$ z#;E7#aIMSUbITz2pvlCa+TL3B$|G;c<+@|Fq}|OQ3%D}-WG2uU)Vi*|8_Up`;8WPG zrEO!MLI+5bifcq3T)TAWKBMQCiV|5yv{KNRifpOj0?FjxJzq#*M1OcDyKvZA?2TVj z5J||9vt+^`j}a#1KiRzxS{X!YTa2aHv;@%d7Bz=!Vk!&n8cpH4B3IzDSC!%pY$Y#D&^^_ zh_>>>tDz&GBl(9uN5Yt-gy#_|w^yr|JkO*YAM^WpB|JD1BF^GifsH;~u*<~bwY?>T zZ;-oT{Arx5B1>_Uct7D@)X!?uf~!1<6|jG2f9FQwyRl_oV6Cf%t`-CKZq?a3J?Gcd zCSEF|Xc~1AyjF1M*)~9EeQ#*qxlDLs)jh^f>HU=?(r3TMNy>oxL}UK0wTic7Rbjfs z6-(I@2v@Bg)aIIcts}Cds>|U6zs_sSeq4?gfCV|N%@RdO|EAwBsZ!eeilije@t~#f znsShDDlQ;(zTMuV=?k{4<_!xX^Vos)T5ypHW4&c8v!4BRJ8aP^fn%LL*g!9tG$G_7 zc{L?KSrCfy(x!PsBRqAW6nX{gZ&KDsIN^J!CXx>o64A^15f?i6g}I7@n*h%Wv_+jg zJ^4K&b;_vyIfC>CU|Qm9B~Ko_wF+DoOrq3mewcqipTIBU@A&}ov4Xxk%G|VoDw8y` zIt_TDgAtNG$FjNkxs#Q907%H!0(8t5PAQ8{+pq#}cot1w? za(d4tnDar^#G1$hQo^IJ;JJL#HC!D0K&h&z17qf!Ovqb}S@i{?2879L`)|9qPsC0k zTSXI$)4#kRSkDRO{1M9U1W0kPR#-n5*u=G9hnp9ua`WQfvz^!yexnG?0>MHvyR0iM znA_k0v+8)qyDB;mYVC5`QBGinqXMH*!9$fD3kEZ~bsNuJE(GuKod_LaNA$3X zrE;O8To?@Aubp>Ig<7`r7@ruhkWCaS1rT8K4KS#6IJT6+YI_8ri$=Lb7>Enq6ew`X zdmMbG0w#47=t>H+?iMV-U(ThhyJClQsZY+s1cP#9 zh(k3mq;tWng5$vbt`(r^3LWy=zm0RKF-MS!DQ1DcAm$a8%9LS-(V5FA{{^WhcSCt# z-rq7-fG^fpyig~r)u=*UG1IiuQd6;)>|+5)LNaj$kk~5jLP{`wTOW~H!&RJ#>uZgf zK76)JnYc=uTg3#lTr>e*0N>FI1#8=brgia3X1+m1tKw_cAZewXJGIrKizA!zqG=ep zMEeC-Xq^AscgyT*cmdb{Bb=iiLvOHlvQcD^NlrGkldCTo>Bgh2b8Hluq)#EAZG9!U zEkfrWF;e3Lo{1~uyNn{m;R*Bxf%!@BnsUdQ7fA)}J8cfanczyp(C;wei_f_~BXm}) z93S$r~8{c7)`Hes}S zcKs@DNihQzjTUN-XYO|Z8iy(V>Yfb_sXz}jyjm1u^LNgjAptVGf}U%MIde)` z@@(*OC|Sq%-ki90e$m+jFFFmf{)jr4=!mW_^)davCicG& zmtCI^QCaYH;S8pCbT=n5jN4?mc;W0{|#^yO}RH}q$ExBR}o^T;LfHI6Mg=wD5&sH`hAi48^B?F%zJd%4w8O=%`=~Ff7#oL?mxFr}!kOBT zl{+KUQu`cqh1x44Z^%yFiGlRwD|e)%|oig59U2O-s!=$ zBD``%HCN`>ZICWNI%t$`KeId3!#F&Q7`C<%{p9zVGxY87?^d zx-KPcDL(z?%&Emo&k4jj7+>T1?+H3EMwPop(9}c#$*}|* z_G?D;v$WLkm6QbB)jPOkDe(@aWe!2z&d<$31LVc#or0K-aamBcxHuJI<0X|1Fh)`8Mzfx1*fXO{3q0!i_1#*?}IU>82Khuj%?nygMz-zgTO1 zGSYY0W*S>St6=UW0>`vsyPMR-0&Cz)6q#Wdet;2{))^zCZ?J?9)@cI_$HP+BK8HN7 z)VT)?q9Tz#{#3P|QjC)u8S;u@?D8!Rj*0rt!@phbW1XQ*tNO9L>Q>+RI^5_2RvHMB zPc&{K&vQD#h*UQn6@4zQ}~`{ldwvn!%_v(aRY$Zcv0PqxLxyCy0;)H zx~)wX&~okK9BQ+TBB5yLg|DJYk%@IMPkW8BQ*)4w&MMrVe{RzSRm9DyL+8vQ?sa7{ zZgJSxZW<0!YZ^sMp}7j^PZ;#znsdpdV3SSzyzh0Q54cLZ%S$&V2L#QDeeF8tE`A)o zD8UNu`@y?Dp5Ol-)zQ8_43tXwB_%d}Dx^e3LJ8p_n0j?uK|%&!KnXRGx|t>7&-~Xj zs$+IU)RYB1t?V%$_8>~-+d=H0?!uH(tBN6}gdyeXsd<-~B6rnP(Wcv7A zro8+gfo|TG;lT6(2*R(R_5!X$CuOM7fx#e$-v!{!2?rLE0ViwsinpPVMhi0w!cAb% z)v*3d&=;T5bqooUhEyoACjkJ(~gGCR6AeOl-k_-(>@%o>tzo)nlo?(|}PGAe(7zA7>OS z8ibFdsSWnRa>a;!kJq(PcVQG zEJrK{T?_#oCxmFyRo!_gLCTJ@s~fJ6!9kb17H-;#=0IJ7y0%G_50SS@y4X?@b`{wN zr|CzPi`|C?m^Hz@u+v-co3#$Je03qKBNyMW-N+u+OSUDs?ch)3pqR&2r|^(h$YyFM zDnj;mkTAPYqiO+7;sy!_kN$bKfB%>%*b*H<3!>U!%OusToSS*j%0Xeo)D8IPsAs(f zoR-GgxqB==pr3aB)y`DJ`jqrxo)Sb8JyrIN+0)rPS^tP4L}tJ|p)leMA(-6|gM5o! ztG0i=3G%TBDtB&|!^&R(=Mz(FC$VWUtG3+!l(}p;eny*5^{%mct`IaRgC@*xRA}+| zFVemlOP`*E3<9KvozlzN_Q#0D_RtcGsG4_bq!rf72jaB^22+^5(pn8Q70Rg-3IaLy z1%zZ8&7GP*e}F=Tb)U~#!{!uWO7-`q<{J!gfI<%xg#qGn@oO}@8^uj05}F&!NnYjh z%0vi=H~FnC{j*zoE$q4;z9}OwtcF&!t@k_W@ZwZjwuqX2=SoRjj5Hw4R6G6imH!~z zoTOb!Kh=NJF<)U7DwUPzbH0?VCs5g??O!pw=-)~&D1phoG*iaARZk)ryv?MjAr4!n zeE@u0X(06*F83VLDv-IpXSMRb*o$Y^N=ua@w%KM11!A;FoC*>(5+JEV@j0 z{)(}bRy_+q`c<9=I2B9cA+}?YB4oz44os5~(%}DD`kSY1j`cn|l!&Bye{kIT88<;K zA}OHyr^y8kT$p`v@=QoQf&jj0Pn)=NayxKynUcAj5q9a;($kBG^4FieZ2`%R00Xnq zOyLB1T+(8v-FWKYr`0!1kuV^rb+X7BC=HFyCno$@aDggE_a6B3iVe9a<>71Z-e0F_ zO#QT;%Gw}39~_Z>!6%&I9bVAdEkBE8VpfSiRyB|bl4ow849)v^&&E^wfiSSf_dMWi zk_tHSu;C-1hZ4+_17h3AN`vmr3t@Ag`TwyU9dyh=DJAr;kJ$>Xg*oYdc_3pP=+sLW zFcP{5{U1n>v(`p1QyoA@x}=Qlq_cx}wHqx?jaFeS$l)+8~ztJW2^06oy*6L#?IqtOB|c>-chYL|S%HUfo0Zm5p6Au7A+ z;`JE9w#vffH~&+NI8|ByU8Ndh)osHg+Ed_~CKLZ>+!TE8f>g$i(0;**FP3B9!o5%cDU24bQa!-ax#3h20$c*tZ_9#lrnkhGEt@W3DHAf&a|GL>LE% zS)$Xtjbb0ky#FEHc0XUvRD28A4w)&(Yyz?HiS^$Va-Rgl<;bi zc&+hN5=(a+H)W6c1bqNLInOM9Tf%-s!qn{8&qS}*)&PQCN4)*v<8Hn%rZ_5{4)JU_C7i)_eGyF?q%w9^HdUGByOB>18elg2I=xy}J#DhYVai z^)hlBK1n}0yfJmG`IG%Zs07tb!_S|~SSgp4K06A)pjBvN%IQIJA21B_K92c#DM-Fj z4@%5o!HXvk@s(CkyC=JtNec0Pc*Qe6Hi1O1S}6#UX&Gl%^`IatD$X+7c` z7|*0vgxm6IL~(y6cq;Azhus4HJmSm-N227SxE}Rn`wAxCekO68mssU zbgn-gQw^DY)P-FjEpbC*Zc?UC7bluF@#msNi<2m)tHFfPU72p}xu7B~f{Y}hr zh9d#WMf5Ej744ff+t%J?i0Y9g$vV=3texTc16c_$ve<=PigXJCoa)^ux?T%@*blfA zB#9nef}E0$u3m1`Q0_~ZAef=%%zp*LKH|V_3oFaJR~pV@J6W_T02Du^Fb~bfAMKh1 zzkeLK;VHRSl9j6inaIb5`ydCRjSR7MB~rJ(l=1g+#`w?dAq{Ci-z9L*?3qKmxbRLi zurBVDrmn{eiB61zv(bO=BO<-aXg zclZ@+7A!ZcrVhzehd;V=@e-OL{m-=BIFCVGk=5|{=zz{KC=>Bj2~s#q#z}&$H(A;6K*WZ-H7{83R=6 zyy5%weV{{){>AGDz0a32UXcYSjz5CqUC6s;C&zP`zeOd-siV!h@6>vgw*~{k7k7}% z9B4nZ@-3)LEIUmG*X_`m_qYjMDs(u+uYI-qS7b1WM(NF+zVttZyQGFu#w5JQns_L! zjnaD%EmOf54HV7P_loVwm3r&g)wg*hPg~?bg~Y4KF@~Yv^=GX@hQHik;|(zD+mV`m zFOlyyzXCgGv6C7ZetoA;D*xmA7W->0ia)5e#A21QoLY0lA=!i~^W$w_akPt(jV*hz zn-KX=h8lU5cR2p>!#vWCXo6!aYG|_H=SMzXIl_Lm3A9*Jf6~E3A);kNE0RU#LO#R# zx@4;tq^BuwjTSr`0%_Pm*epURShZrVn)Gfjj}V@+I+zS;B>aH=p4~sIH}v8O=)-~B zJs0?4dlbVd;)(TNGgf6GhbeC=CfX@Nmb$Eve2o04OK8C_%HAu578hFDAvc7KrlLuPUt*BEux;h*~(z zJP#2+z&4xT!-F1BEtuonmG|~U`=J93fpCw4g@Uun;Ae7y=yh@@KZ?Ehq0(_>(y1rx zk$UECDitPxgDk+!SFHBAcbsTju@@2wT%3E1qJB#z5YaAP)W4(9(m&}^8Wn|~9i`4j z(YI(FVf)Lj%j1sXJ}f$x_RsE?g%$jhlh6v$*-?jjCAk37TRZK62x5F zX0k^rpEd|jSV#hU1y%-~v?6=>uSA_3=o+OM5h6Me-u_F;0M1YPpar?aQ*00W6J9+W z7<9!-8>WmQ{37UKbcl+D7Z4KK7!A%Koy6tzYUmWC^R9&P|>XlmHV~>%AKq(QBi{QyKzA8XEQg%4gkR5Vo0C~9OI)BqFd@+_1wCJQVnE7m#0=awY zhiGT?nvw!)Mhr-*Qv11AiwJMMhmE}{xa;6yHW8x~aKu7d2}~AV9ko_&R0?S2*^n`X z$-92i+afSGF|QUJuY^e=NbDx%QEF_$Um<{|!Q}nXT(~3xGb-?;=94I`BpZ6ILOB4L zm*`j0%P-=VYo|g_R5H(VT(WZXC;eLlmhG^RvelAXUkITl3C3#yithJ;_<6XMUP@pC zpBU5*`#gG;tK$9P7Hf3zV&Tu}XzdmFY*;!Prrv01_d*$ZA6dN`$Cr=_0Il3%{B$KpML@gQvLC%3CSkqYVtx-&uxuUN zoHM4~9(+27d>5{7P8?>xLe{we#hVd)$>uI@aOGlrq00r_?LC=`6VsQ_k|e?0@G zs#%7UI=VYwyMY8=WbiIY#rc#nB&8d3sdM2Zr)uDKJSgPZEqNclUSW4TCP1=wFapoM z=u95I1c*2r-YPBU79mR3m036Sxs7m}shP7P5x| zv2yjHvOP92(Y6n+(5P7w4%MwFhj!yV^fjb}W<)7C90(uyN+%7wY1DOa_$fGi4jf)Y zO1Ldb1#8}|ZY7q@_D~%pT8STrPk$}HbVKZhv3zeV(bUP_+Cuy^f9(kcS}t7gN$Ex? z9skP)F0~l!LEQX8x`SOy9=VNFwl>1RMQlWPo>V&iawiWG@8PT|^UjG=ryPo{6}kgV zP+ZV!)?Ps)7soy8tA{rrFj*N5&}6b@e4W~dBoy^aq|X`@*_$DI!E6JH@L(Ot@(@O_GQ97M~c^@@$J zQjDwV-CdG$ZF6X+5r=+6tYGC|?v!HmVeq8tawo@Dm^7K|6H^p<7y0HlR<5%cI&G9h zcheMqLd*c@NB{h~OoxVtqDYjd`R>wj?xy?^#u?-pw5o31)YuXiG8=j3I5YfIh$)No zxw!R)LC(8xw5#K^Ce%B_xnPYE2#Hszw>pjd+j_^+3v22;;;$4WW*YrFj2ZP;?bprJ088rQVK zU9T!L3nu@prJk=SCIh&>3Sh^yA_-jY0A=oU5}a)XV)vQx{;f9QWb2%2<2suB&Vpv{ z3=3m0E~7Yei^Z;(7GdH<4#ZM_IIQ}T@?>A&##Cqdz;@3EvDWl{&ftt4bgHyqvTAQc zbQgyqE?BQ?QyO@2EcoKeQgE`Oho#(Xc5<7}=7h)iOB(CfQJSQfr|#Kf4QM&pT@knu z7zxrI8Z`t)!c8y|jtum?IUiFyj7V5QeG^)%YY#_#K$Ah_m3{L2Cl2;mD+5?_O(G?FUI1UHuYE^O{4Q( z?O*A7tE-RaJOe~`oYO+^_2R~V8*_aUWJX)LkZVdJDy73!WzZKHX@4=Sd;o>UgY!E+ zb+zvN8f%aO7mY|xa(hIe!?w^Eh1MjuZ_OuD!}#C-ze(-(%h)@bUGwa@4}2Oo+aL^y)4aDye2QwFMT|hiM+-HpWy>= zm797C{$qf~sxK>_9Rfnf>+8$32kKm(PbIXggVyhW{qootwQazfUrKo8K-AKSG)NyjjK$X&kx%K9mhC zeI{sRj0az~a3DLU5v;*ut2$0^i)R-udU%t5smh>Haujn@|7PO}rdv9)aXJlOA-!cR zj$4x;PSJ{?sv>Z5%nv8GeG`SuqWda>2^|zA!5`$6j0RP2Eueb3q0Y($fa*ED(32E*SVI4Z zlIUL}##)(9y{<1`WM#gD|J$M46N&@X25+*7wH!K4`1}eGBK?=129p~ygY!D3&I_6-ojCPz=vgXI zJv_yeLR2su#eM8Dvw?H=0vfFt?r#fPGaZFi{fZu$gsdwAKUXLacFm z1ZjFj3@BL$uovq=TtYi}d~^KK=jd89!keCqn@sMJFEGaCh=K;tBqgul$g~dt#Z>{a z7_!~xf5y_5RgqK&(3=uXayAGZDl&@j{#>DIJ=cQ(crRo|jPn^H-tep&j9H4M7AY-fGF+0U^)Obc(@g` zP)Yu9dWSF{E_-ldqHl{4^1qdoM>2%Hg0lWI}3q`+rPn0|M0@g(crQL|r)+`ouG zO)U7#ToUhT<3756M^2gQh?9_gdye)m>K5J!X_rEX~6PoCw@09OXt}CEtoeEqFb?U}#o!OxN!)@Cgne0?A zOXIEg=$oiES)NxAqZjh=WIK?&+QNBQ8Ulro|pQ`nc) z=59luu9PqMPpbf<4RMV>sK2(b-c-QwH(I-fG7RVxysF)LmRxhngiq=h;oOxxPzc&j zSj(jRW4-^&wpVN`vyKVCu}q|2;N`07lgXQy(%>bTRNk*)dr)H_a_BQpWrj=nyBT2{ z4DxKDWp+T7Q4%%+$e(V|-|=#vMeL+rK`X|1Q4dxoAe)xw-ruxTE znPagW3=cl~N(~rnSE%8=g84dRaJY^Xh!joefP0t60d=snw}c(TwfLWz#~yTQRI37y zcR(R?(#C8(Fy`wI7%~LBxdr#=ldE||0TsK-AMkQt)#nspz~;DW6yIm7$#~%(bo_2_ z52f*Q9O^jQa!N>kAnrJXtY=aWQu*|6H$OTup%-cPRk}xnIh0WFr)B~4Li!P{Gzc@N zleg?S`nB|injWBR#ka|%{x?Dr6Bec5dI8O?q%FH(?oOVF7uyBs1*B|>j* zd%k6~xR%sgf24;6>3$%9d*z9lJ$C3&h7+{0Z%$m5_5K57ZeB$v5jw#{Raa;aj+=%` z(RGEyi_X6+mp`y>SO`!hscFPHH~7EzGE>sspk^|Ot@2lZzKG!K>wWoVGsI)`6c;Iq zb6eruTU<(^7x0UV=l}5-`%Ib4(5eIGcu_@4L(PEMe~r}BCe6S@;Sn0ef5nrw;w$1H z=TGaV6cPWQ0xoDsGBHUL^#A$iCn7~l8e@=uy2wz#5jQ2gIbO zDdJLRrStFqpIU8PL?&GECnu`D2 z)Hcj_5dsRgzgWergkOaoD;@KR+6@JRtT~5mdSd%&*-I?s*^9vEl_udwe_bjsRiQ5t z{WI*a`U~(cX%0EHWa!S#@=GRNIU{qPYR>MoUuYl^?5V|Al-)4pAMi)m#0BMu3UX&z z@uj~Ax}qKO*GS(_aT?L_NaJOqa9QwrlGt>Mx)U}1%AjUxbT!_xa5eCBeO$}iPfckR zhyU}KSZq8y%o*0m+Wg-PterRROfG0IfBSv0g?RO#tJSsZhL0EU$+c7xGM$TG$F+TQ zzMJ7I+YgO0R&Xgvdo8e~z&-WpUJ;=iN|k2E-qh`u&UFCZ(YY^~8sAo@_lq)=0LD5p zzXhJNVb9S72C}8cLDNu!0-`Swp2LV)`eib28*xfc1q9~>w!g8n$?e0enB{MmkXw4? zP97>!j`Gw$DFc+Ll*5eX8BRc5|6qP2X9!q#Qb+F>5_h_HQTqNRXA!Rn z?MF&Pf2RVvt;8Klq>HJ0pS2~`yqdK{OCzw$9u%x9C1(eSn=5^{XIhl^@var(Q|A3( zSUvf=F=7XU%>VaqzxSB%0KD2eEblqvNgL%HFy zR3MH~^4yZg1g|L5&@KU`_tLEBC1t=?0fI!u*mP|$42_aGo#e7#qedN@;etHIoDQC4 z`lDNu!xg-rYi|Y2HDn(%==o?wt9}+@;Q|$6wOyX%`i(1Am%%cDtv~Q(!sz+S{Bd`u zFRiP>s>hlQocl=nwIk zX-UVGsgKWqj%Vd~4d_~C|J>>t^NdkxkK*w9XyoAqvq#kbqXE>Gu=SSQtG#-3Vg&)k z%{LR}qF_AzvYde>s*UqA*3{6o^%c2~XxTKlm$!vqL+3Ck6B3Q@AQnMZ)OS77K`vy} z0yJ{dN5+`_M^9=CiOyjYsbXQ1NPj&$hoM^mcN*E!q%-q5C(qp(X_)K`fCJHwVSOmb ziv{wTljS+1Y99RL5~!y1wD_P?%h`57-jXj)!*rr=DGnDLy$1g&G3JPjVst_0fUrpo zu)01Lq`55^Vpskkx3t@CHKPvOjRqjre@`XJ=K3f?*EWa)ZD|3mkZCmVp1!7)SYp^ zlj1HGxxj!X22hjMg?WH9Mwia(iLovB-Pnnbi%v#@hHnX4bN|R%4*-Yw6O`ic7qno# zc4$c)Dv|^jqo>rrEq10(x4$_#+G|QMIVws zkB$j;ne|8Q{*~TP@$qu2I$e1rf3X0Sp*ny9z`O>k~%|024A0J z00k~Miht)t)Lu6hpS|&j3N;#!t{ukh&lh&a#6JQ2wWJ{}=pQG7FQHM-@Zy+m&M*xg z2rvQ3tRq|{GP_WdL#Bnj36}piD+r(gdp8Mxw5-$k5UkQ2611{!3;#u(52=hFHY}W9O`0ESa+MXh3zY@FGKZeJ7cM9023>2 zZWO<3JgF!>X?J@Vpm>mr+AQuAa+dQv>*Zh5==e&Fdx+A}sn_*#+3ogHq9(xaTE9@O%qae&#WHixU#L3hrWe)ao(`iDqm8r5d1UOR5B`RW(k zANBJj6&d-LWA6c|IZ9YpcnW-~kByRM#m1^h)hS>>mKz+@8|QrT8j?cO{x62^+kq?^ z>5Mke$iDC6G`NEX1zm|ol&$*tF>#xIQIYlvDBf`gr9J;jouxhAR644VyfdSdTbJ(d z$UUq3Gj^fwP`3G{l~FED(C>|L+Rhn|g32;BWx#UxW-u6aq@#) z=KP{$3*yS?CCrPb=JFrWF8$xQN{;}cl6cU#fqQ1KPEl?gTeh4sW~GzY+J8@wNBdC@ zD1K(1}ZkFs0GNA5sSW;&IssaSG^g2~9?N7v*0YFt$Ah-%a zaHRuOg|B)_I?)WaEP@yPPJ!_E3M*axweXY<8|kgEgk@5RAnkB8c7iKjExWY2uhYQtBV5Kj22W|udC$;sUkl3| zW&R?25`~6Do9XN302Y|Cbr&5Lg4kELEywLFgFi*Nx6b%Qb=u?C;4Osx?#!!RN@!V` zh^23%K=aZm@2(qP4hq0FNixR6?Sg*qZ<>6)IKbm^f^SI=05Ys?=y3Y3r~~S3|Hoa- zOsS^l5Vz>FgXa*<%X1rE5jZ%b77)>>IrbF%N3e(~=BPG5h&GbR89!iR-G*<_tw%tl zRoaviB&SFHrg)5>w-rFl_s~OaTKwm)78wC+j#()UFH}0W#BbP_q41G(=Q#u^T+BY$ zXeqLB2UxRd8+5*hOC-5?uYU*Km>8rdKxyu(J6a2t(t}_?4zP)Vb{;i}ZRcz>k6J+= zchn3u;7&QtHNBX&f)v}Y+|EIi2+i@C*7~%b5@?p6y<+)RtSe^g@)x&1EWnSM8SN^1 zc@_}Zfiw=tz9!Q&^%wFTl!w_p89LzQc8A4|aC_kC<&-WJYPi8hv_kD;hW&O)S7!oaqT5q9xJ=$e$smdgT`ms zRq~QgUDkgtRME%-Y(C1n*sG~^M|t>%sz`DrqHDK4?P=f{x00EEYbbK`!r3GCXT^<0 z-92@^q!f&sPheP`5+y-dU|6-Qdbwa&d4BR7M#kmFt3~*$gOr|)3PZ3LiUkC~L(;k5Z466|b%*Q~ zPG&ve!XD@_xGT>M1F#}D^e6ba;teWNh}8VG=Sm?|{-=A%yjgBw%{mSrH*kwRv2ov( zzTC~%_r#Z5l*~LzoL?g|sTz1-?>KG9l-9_Y>(~ZRbkg$TSx_`7K5Hb09!}rgCUJ8Z z?YUJOa_V~|JJV9%r$1|IUgreBt0QXa9a}UJ(rQ1(wFY=4>H@ zXN_O2om3ic&|nWA7ubvytoc*KXtIe$m!|(^I0Xm}OVig*z}!yknj`B=nbc`b8+e?5 zWr6P}(Au>SYT7fxOKpom<{ET2zgCYL;ZF54;#|LAPqXNX7>CZ_}K1L#tMTTX_0PM zjI368-aw;y)mCvZ{Cls!T6V9;oD6Oh>2bA|T7*yQn#ZR6f6gIS&3(E>orpW$jf_T& zF@Y4_9?Ysj5FL#mI=n%2fE^h8OV!J`#Qnud_kMq$+-ut`TZYAHeO{!o=64@*_fHM9 zag*aQT3CXv^|hyPyJ(~Pu2XO`lj^;%yU_OyQie--1@t;GgLX>6ysRg>(A=moW6i>U zgZ_Xy+4K0`Eeheo1M}3n=Sk&o5J_4?dMf@FOKEmtfPHr>)GgR$n)5zdao{z|5d2PTN z|L2_OO$l~KS1d|@{0sg=6$i{E%D(%K#lG3I+h_+rMJBbsIArHcCi8-9r?=$;7`;l5|ea%2wm7!WE=yqJq3Cp9rB9)B?F2B6vjEHj8g{D z2+1k2Z9-cMZA3CoDII1Z3duM}$smMePz*X;l1kE9M#t5;si~%EW}2CGx}K}O_wV=n zet+NRdq4Mc->>_5J%5-Pb67LYthKJs=lyvff(6;hjGKQ<1!B0AyC6uKy^5)&SEU_! z0tNZvTRFPhZeON%_3!MSyYWY+LtCpXb3=q*nju0zwH;&kpblk>$UhKHU+@dRgQ&ww z6*Ln4!IPAhe-yAz^wgz#(a6*AG`>r!;b%xPuP(D*yG@NnzcvXR`fL$uEw;IAtn*NO zt~U2loDAAi`V*)3dak|Pv4g&+Rp_G&pUk!$ogwfl+TEFDWe5)a%qel{I7JHdcOzCe zZi4iar5P#vqj~h@b~RbGq(*B5Nwb9l^{f}fTecU;Pwe^wz+BBoQ{`{Mo1Oo#xXPY zjPM>_Br$l0X5yb_9DQFe+Wx*{JyVBBkhMmKr3iwEsatq39caq8jp+TL_AI}M=rMcf zbeq|0qT+U}fDc0J@M&1wybcWbk|sU_KQx`xoiZPrbBIpOU0lPRI_OdsRuFnYWW;Ud z?-;z`a2ls<{{Wzls~r7Jx!Cufb*C5!fql`q2FX9zU~~xVP+ogta&zwWcn~9mr z_kNyuFC}56K2C7;M2=FUC|}5Ry9P%vXB`bl1_~#@FUPCkd3@JW4VHvKE1d$*0k6iO z@L1Qpc$Aaai zoZjf4=JZv5;_@&e8`RC|=UI~Apr0`yAn+2q5-iWJ{# z<_!)F*_e0Xqpw|>4en{Ntik5RItD>i{f{I5!_kNx?@E*%$>j}ro9{V(5q#>h&e(Iq z;C{``N1WE3{HZG*-tFFb7JHt4bk&V{f*t*<#vJo#_OjrfW!L&GC7po$e$T=uIAihW z^O8*qsyE>oVbd-3KklF8e_9aYIb(5@E81JiOhb(yd~5vt(=_|1_`A?S-R*hOwR+pc z{S_U6eieqkAy33rAzC(s?kKxvw3M{PLOj<$ts|5Zv+u5)_8uDfJ{Ty{go|1z?#Ooi ziGwiW{o5ny@nU)H^wC3n(c0t`R5AQf?)J}9BNKMK;Nl<6PH)8i7+nwyPMon>Y|1g| z%MUClcB1b&TdM5v)3PRbS`t6K0c>KPcO0))p(A#ei@1}T>l6YO7%Vj$|DRzH+9B`h zvLQMr12kU5&?#GjPT4ZFzeb_`^*DO?W6-Z~7k{937n_GIXV*bzt9zXS z{9-{PIF`%miARdJG_O4eQ*PAd!0$nZfYhI7Px`W?v!N*E$^QIPW9v&MVW|$?X|$I3 zL#yBn_j8}avfysn)t*(Wir>Z=Rb2n1G6vQ>y&%+T+Pjk(^A6s)H0X!Hc7I+SE;q}| zKfYZ)y-8)0Ow9~wX&5vjW#Nq5(iblwJa2zHO3NXJQFXnW_S8uHT3uEx+snO^4^LhE zq&DnAdGBk%ZG0Ee>{{(wXMRsB7(`CdPwLo+kcd|;a$~lDoI>Xjx-ZSfN864X!IG8z zs}nxte>54$H|4nT(H_kYGwBSQ`HCc#$ey0>rplE21ezYuTBIIJc^45sDwA_RH2s69 z=hnf)ih!Z4|HcU;Iias$4*C|k2wULc#l^JK8pc?L6wPyo%9sJQ=dh-R#bW1!l(xAq-}GGpH2_Up2TD)A2`3yP+H|@ z0>g{0`jkFb&cPhQVv)bVp?hlJALv>y1=-^O(m2!W| z{xHV__I}aQPpu$x6a!`VAWVG2f3n+9yl*Bu7F*LvzV%k@e04y*``W5tL66r*+FJHT zZyS;mrc%_Jyz42jrx#SVR@ecYtq%0{J%(E+MffDmkJ^+YK67B`&noq+$Ukau1V=vxK%mptqnIf-GlG;dN4Xn1QnrGKPJG=`p4SH1Gnp zvEJ4=g`ouJ-O#(!m;GcdVxRN%l5#2lbzAKseW);l%jU8rgo?)mz$ilJk^{3!A?Ztt z_}VP?B1AT%GUx(mUv{-Sf}tC(TJyWEf)Y&Yp|ghpLNqM4W^WMnIFo|xPg`B-lQ=0* z$1-_%o&d$%B*A(m9m{wFc@}(*b+~vluAtr==$u%u1Q%S%A((UgHdh!#P>vv7FpqK- zwn3k{hK7yWu%}RCQAv3}m+_IE6`Ix?q)D_9RAW)6!+)w1jbW%H+IakYV4rQG8n@|^ z<<2a4i-p~?8^oXOPf{Wzdz;Td^9KaCrrS0ujBPPS-$$&(ljzAv(J+IL)$ka^(e<9n`FJ)lkG*z$vf;m$p|tv=`d=>v{(1 z6zj|J>q7Q0d3=pH<>6d>$ZJE1h7vo8+u(9E*P2OI3d6f(H=$+kG4_wP+d2dY^p6;xr#p%_{VI#;i?_&^sG#-)?HSlSVXvT67X#;IpE6ZYm zOwe^BH4>%XRSLc}Grd!!cO|R|IaUk&oP+j&%ods7QbE*AT2Q%M;HQy+OljXG4lDAS zlVG$ZvqW;)`?TuY!e3_B!>Gvipp}mo-E(-O;n*i1{{RU=DIH`#{s_AIp4BqaBqBEGCsn}%Y#^`!6PX3w{KIbFbs+Zw!X>b{G82ar`4 zzG(%kiU$W2IyFfRxx>`L82e=6Vx)akVV2Fy)hO}sfpGndEkvk0Zg;XQY2+kMsVkVD zt!r~v=nNt5qaxm9x7!rZ;^ynbn7|CDCKtWU*$*|cpka8CVBpat->?HxJm+qC%33M> zDj0q=$)c@GOxXkN8nxL|JGHEUSkK3IY`CF-ZKHhq`T!VF_ml( z*jCUMj2@!sE(fXkf=X5bg3vvlQfOsM4qm={rC|P+r0~&9b3K6%#!H+$l)f}_N{shQ zu>TsgkCy)m{qP|gZm|L!)cbJa8%PNUoSCz z3v$f*^UG*5V#~Wc91;-CC{G}3J`}HKi)1(o*}{u4x9P`mwB+fA`m5cd7Rm z$V*kQW&@zq9?wN4=BIIJI}7QkVR#jRn;}c|_l@Z|UfGm+jtRLFk1f^DV{Au=p+l7p z++wjie7Tp}aJ;GcV#MR+)ASZB+NQHiLIV7{PK|hucntl(KqbJBe2V+Y<+wN|&C7e-L~l-lJm-1p42MKGN=WG_ZVZ)$XW4# zw8g(pp*TjoiQOr`r+&bG8%7Y7^TrD!rlqH(G+FO)!Gj*A{Cd$}ZzeQ4dK$uEi{S!K zaI4=nE3`iqXDG3u&eVd~1FzmZ4ZcO^#&&0>ENJ6C7894=2P~N92voH?i=Pr2GD?fF zt6LN@8ht*ZTDH^$G|FXb{N65B$$Ab9iA@uS5ZAY|yI0?d%2(`5Ikj!SFs%9gb9IBJ z45qi6SCFk@kdg1K?xoi|I* zJVDOvL289o$>^Z)2R81M3wswdX9?{xa`iVGXIfSTX4NA9=}6>}PAU`}(DNutSh3RM zh+s3437(0zx5&QApcR_XKaeigiT;69 z%4-zu&#B2uCpu*J@1SF?+V9u+a_f>Lbo!yq+-J>#%Kj%;N8 zwL2wJ6^`*tCP+y4DB*pL{* zDgV>r))an)dh@#(;x&*vq$n==$@go$_O%LDXzKs7ROFqYL^?Y+uG=a@q`7;O%_XF2 zgeyE)jamALz58@li`#xr>Xh{{^HbNznja;6Ds40Ny2UrGoHn?&dTcsxLA>q`l;V1c zE}tpH>;Edxjxzw>auJgG%n>#eD!Q+}Q=p5`o5DB@r4jB%E~ahu0vN|4Z4{S{WiN{L z^@W7i6gKl4Ic4MqyoCcfBD@LZN)xFlLE$23CMaTj0&K;pXm~}2un27guFMj4O365+ z!6wzX3PGR&SAgoY~g9(>QxfkPxdJ3lfSDG(G|n->#0yCZxTD<%A$P9<6QnSZ#b2_RRnS0 zFRjp^QA=W#tRKm^Jm|tX42_B;{-v@V>uZLL7ukc=I3CKfO5`!Twu3b$`L(5XhOV)N3sR_ekNZZ|--1!V2+U{HaXL82>MmaR8 zl3f4e?tS0cONQJ{z&w_K29Sv_%`PCG6RkEuwkWbWiFjO0nfePHFveWt*n+DfNfgXl zB2k4@&Gpci{7XG_)sp$RdEABA#>+RyAZ8y5rS)2v*JsArShL=z z&xh|5d$2#?&V383zP&Yv+=s407v1?W-}~B5>-(g4(6QN9fc3*Sx&yt6@HQe=cIUm! zeNgKK7Ce$vNg!w4TBf+X2MX3GXLq9|`Q_|;#x_jo@bVN#9Jfl**!f_c*0t8cBRlI4 z1l!-1eQPbfz4=3JZYfEWqMKY1qH$?;Yg(_vFt*B1UeB!kqo)HOl zeF|IR3)(l%^lAcC3%S!9ZEkdR)ClfEXeOp_*Y>fvP?*Nue6k5UVL<--^wyfa#%`X&s*Ed)9hy~KV~&c zYV@>uXDZCqz)so$i^|WpbMZ}HX1g;Dbf9hSeJ?D5OkA=U4`*qs2J2ix%vi9c_!!}r z0F9f)=K7aQ^^y4kzoHFMpucctVg2^jh;=cXs20Knk3oy`oU>Z+KQ1t~HVI<4+~V%p z!YFKnaMzp9S2L6@*q%M#)Pht!BXedqUX@|)jXvAHb|P7){%@RqX>zDQBAWd-MVh7|H$uW~Q-qn+*q=>Y(jb?WhCQ6R9 zO!SIda5I|-e1D*9-@Rh?6lpMfk`x=fL1V=g;tn(1+;1;pY;V2(v%WxO#v+Zz>!L9C zbg1cIeB^+dW5pdwzvdA8vpGU{SH+Oloocr=GM{K}tgJnT2)w?bb5H4e7h%lClEL1G zZgodJg2Gwg^H&ZC{}2%A66Uz6EDdfF@*2~LiLGA(>GE5mq{YHP>I{V<Y=7xs z>oh0+o3A$z+1z8sgOfvZ?w1&Y@HAUmFD)5(EP##=z8vL(doaIMG0t)c_x!7`4f%v; zc87SVg=4wjPMw?a>B|yak+-6unD`z@{uNACpQ{|+#{;NWe8MXTBeazuv+0bdKjt^X6B?zbWxv0#BcU= zt~{$dL3vlU#OZR)|L-b{rK=90(=f_!vKp1YJEL>&DDoRto+X!BL%wtU16};TDuH6XM&3s)9+!k@E-B(A0+;yAo*b+ ziU<#I$74*t{)G}vzQW@q=ednuGu8a|46@lOWZ$L=(DU1SQ}V1kK6I!isdBUy@*Iv^A zX*@+AHi|LF*f5w0?hxZftvKsI6u_5nS^iWd>jgrd8KAeu0MJ%19n!<3X5`p_2N>U|Zw=5$i>xF$ANa#HJ)JoR*B z)%lL+$Xy9|rgC-fvvk5&qUzx^QP~otpod zVtK_dM{N@1Z7+?x{nrEk@${ICwQ2);sj3`Zi~-RZc|;2emBn^Ez0>Hu>6+OC#wqR& z(Ze4~mj7L5g4@Tya^#tWj}|drEf8O^1*>;=xJ!Y?#hnB5KP0k~1Zg;&Bv8d9XF%)D zp}ai04RwWePRGN_7otT#s)aoR5}csZG&aVkSW=p6?pvw3Kl^dS#+Uo?q07%`OYQIq z*crM#yvu@RP_wIzfSdR#Cx{{m_?j%e;JWHh=5!si%plpFZ`}OY$o2u*GkwdK#JKY_z-r8N5VMJDb9*)*HjT`;Hl%2 zxvYqEh1bEv@4irqHDw|7C@Z1QW9EwF2v{vPM6tQBg)l^|Wk16P9yKnZK@jdkV8?XG zEFg51~nm zjsiEH@!(Vq16M-G;6Ymggw6-^ni)K}3SR?(6M!=C=Gjutx+vV#{I6p>TF++!{>MHyl9z8yZ7P}}2{cDoD8M0npqc)?L$1Rs9%h2_bsqR#IK`I!zAoK96E3jjnAwU}9%I}J2WOjdH&#}J z%(6-8THpHm(nMeojP(BgFjKHHSLgt4xr73>^vzG|D9ubN=?UU5@GgWi)_7Fa58Z*8 zT?8d=_kXm5WHLUDn~XS@SEh_H)HKJ30>HH?ZOp7Xi_q-cIgXNC2)RD3noxe+yuuv(}Xy=z%J$vWy&T_ zy7=#al(Q3BFSrGb@YepO@@=aPik24$QD~C+_+Obw{_g9H=%f{rxlle1t$4`fi^>Bd zegUg*)KpceuO`HT)FSuEPK%J?LC*yr;pHR)O7lx3));?TOk09x1O|mY3X0yq+u~M| zwuWsi_9@3e_Xq4W3u2_Jrl~g(b!<5(yZLfU9^zyi;lgnyn;oE+n zhR5s@UcSW_TAkF*5f2S}mKY4<=>uOwf%A{+2EBAP$M+;X5y8*0u$3Fxp{1`TuRSFa z?!RTzASE)luQ0N?;TUHovStUN)6v; z`uR7iPwmovea2z%d-UZmu^`@{dDy>Z*Y`KaQxe6XV5YnYyk6Xn(3MG7MviW*TdN?Z zj6X5DGb+EMPU~Nk=$K?|I$@NF&QBwqXd=BiFd*e?%S8Tx)0M*Vyx83zg$xE|&^F!V zS?eNj5>`_jN;~Ex=*gxDz^K6u5(9#_tZK8m&}B{5uqV^6gknnGWe#`}sE;ZXVG52R z=L#lzWrb=9W^4e`!wr>xK#3+gw_c5J4C<^NEm=s}LV0(vN*3{y{Mz`2VD=G*Y8%X} z^N7sy^iz)vYeLl#8;Nuj5}Y*^5g5~@_iK_-BRf2F=u+jOlu^+g zbyX6bU0oI{(V2GCq06M|tXSZFo?|Xt^jRr6-k}IO%`rzJt}uVr7O&&F-i&Sh#|kF~ z`Z_suS2(cbZ`34~|Ltv;^t?^<%jbSNFZZZwHBSa1h&qUwzvKLJn1AIgLQ){Fb3NpW zYr4T0e7-+FvQBW~EaW;VosQ6E15~g<&Ujt~J;$=ZDh2v(a2fF4siqTjaJHF-B%|IhL^aBanR}aVEH&pxNt)1I>On<0lrIc)l z>&+BaL9Rtl6<%b&)#5aOxL%U0>Tc&uA-R(Y;+YH`t{D zx$nI=lw$WVsQ*uWpH;Z8OJ9S%H8cp;3mXd0Td{MP`MdrQKot379BlfDKi-CnDak!p z(zJ&%0D<2hw(U-FQGC<5s7Ij^?SGt``fy@F$bTzY%x}!ihy1tiQD;~T8nYLQQ*-z1 z{XVCjd(E-xfoo#_D|rby3nxhKc^ADJ8^&K9wyP{pt%*xGM27H*DS5^Fj|Z6$&mxL@ zF3x%CZ2hj+@YpQPz)jyi-bf6IaNlKF}n zb(u=@S_mEJr9Up-yy&;K^y{pV`C283!w~LTBH4bv@c1g^zyc=vXp`6}&m7?+klE)$ zk1jNA5Te`(G?fFzQgo-B!!E^*wyt+}E#;G;Xdsr8ChjV4V>6(hL;V${cL?bZ&aUB) zE#^5r!s>9+7V-!1ZchG^}L8Pyvdq>|O zW3i@fxrt@I#DLL}dzzj+O%JceRCeK6be%+QNAiOgBlO7mnK*UTm>(^*;YQ_hOH=FJ0`CaNi;SwAsBS zk|h?!SNu2h7};|4a!PLe^Nr&JnMK^k(fv+WJ(sPXM9efsRZ$n@-1ME6_z_tln_Yg{ zw>cH{1@|V?dhwaFhwcsFbL0BPe}$vd{Z*Uq75w6-4KJeZ&z|J2CASQ_{-r6U3AS<2 zspSZ+;TZld6g6S_>`mxLS~IucUz1tEBYA1X{^DvrqWdIQ8Fp zieOktDAF*!0chm-V_}k#?h6cjs`D@Suo4zSwKYtG%{ci4Z<3Tzw}>km1za;N*stAp zY}Nen#!&iO5RD+AZ6xGA@HB|;=i^rUjyM7su2H+hWrbezKc+lZsqtUE%s*)~_~Lc!#{a5Z%W!*x%X<<3|Nyl2f4TFAO;@=8*-rU zvjH^jak*usxzi^kLRI~0yl6tv43PN`Bd)j4u<1Dp;^0=BO}FMy-Iixzn2>4kKZz=X z3s=kqpPTFdM+ns9VAcN|0yR^T|J48Tp*T@Y{GBQ6^KHqJK_klq9bW9oWlu46*8XXv zM@KxW&eC6fm8ei;s;V-4X|3c9aeY8(J-qADRZE5|F~O% zf>F95sLxYV@}5LJi*MOJ5mz_A-y3&kEoIu$#CysB;K zL2qjeM){MrPGI-P^xo$||FZ{^_UgAiX%M`rH%BHM+Mfd}>7m6w+nREkUsG}()-X7I zTK9-+nS)#5&@yX3mSYq>}l_h&%b7YXv166dfrSd zIn{m5(@yE<8_tJ*3DkJx?4JynxyDN^Cq0yJ_3kJi_ItVrcN@7wnnf%a_RgT;eRpZ7 zBu=yBsrxO6fggUOAKZIrePX!vF|cd#Fas%VzwjFZnsQ^gK7FpOeXypkNXRb9x+{j? zd%Z&gvX~XePTUmP#p7|8dYt+!uum7s6f28|wpmWQ<~O3Eu8@eF<1=$ym;bF2XJJL3 zB<4-DOYUjpC5#{_uMqRir2#@Cn5N@*DVFxajp$%PxMbx6@O+_B-gU;9#ZarH^BOI2Origm z%d@>(Ai}#5=vcG))dZR3@c6frl?7Ka_POu2F#L@~rEp5S%-^&@iFGZEE3`A*%j*yf zSv~aSrBupRlKYiyBvGspEIHjh(SqEFbARJf+qx%T<__(Dj<@h~i3*znEt+o!e z=k&*&w?t4)LZjSY3e|S(f>+Ct1H}7}uQmrz5ppJUa5FoFG*}chf!>a1L4$~~1et`3 z*yb^VFNe_ar@9N(sWJKNT5>*V_QxXR6ouzWxL(J(!jW6DC?k0#ykk#I#cj3}2QZ49 ztu?r#l96aC`D@$Q!6Z~V1u<>>iHabg5Ol`)q_AW$_~AX+O-3Q>GB=5Wu>!(Bwh5F& zzp+vw^Z9Ue@~~f#*>Ar&t-r$amR;YqT?@WZBk^gko`)_E>W4RR!k#JG%nDHS`pZ5e z+bd7?#|e>Rh%a|ZC}BO^^T)$<-4%4dkGuo79=M<)tf&UfSjQcG%Uc`@kXYq|HW$cw zf%)3pd|`~vouH+v^KRkEW=ZaBW*WIWB3`)q*SS^X?%Vf-3SzvxYi>n%Rp214+(LKq z%-)CR6E5pwB1~DMD*eB`*VY`~d}7O4Dyn2u;rI?((y#Uh+Cs)}Wgf zrj7}t6Q}mNTqxLF@%8N?M~S4l{6=X*u^sb|H(emCG0`^(eHn1bX0qtEqOokQdCG+#DLFEN|Pea z52ebj@OBEJ2pVy*?`M}&p{~IA+4wo%yiZonIRbm06n1JCQ|WXD(4x*PkW!p%HrGWA zcoAWy*7gptk=AIUj7htKt)J?2y<5yxO4|G8uS%1<@Vji~u&ZE5j#X9Mr{`w4Bt-ID8aOgz*?rRGI8w=BTzN+ulLR@Zf7GL_?> zs5$c&j9?W}#N&n$2ey!Po^i3~ftQ6+u`IO9ijKrbUv81nGuJU$erGttgVB6s-aKm0 z&02kX<``9yYqDN=xJx5*Et}f#IFzX7Eq2oLvw}eXGQmWnp$qW8*cV>1YyXeTiw!q8 z2zyiW^xA@A$$Zjw(5UI_XrINW%bnAet8DPuc7!DZ>oq$8 zyhA)M8n>-svG9ug>uV~0N$DnD#OUC@f1+Ld3r7Qi=NIw`bgr~uZ$TAjaTFghq^3M` zJ-#7+a^K<~#HD@NiuLb3A8p(=^s1l-#Zmgcaes5|s4ZvR_Y;LBO%19IwD~+}gl3#Z ze#&Baxd+p1HPQ3I%9=l^wO>Rt%=Cg8-?vQql;#sGxK?Em?Qm$FHetq;1_{x{HEe^` z5qK-E4kZFuf~^5ne4P`#ECU-!C)fZ=T z3c7GQ56@O$P1blEXvtzj(UOKTnLZJnQ3!Vq97j9hW!E?!}v8kxCdja_^H$&SPeCN=9{=H4yG!Z`$P@zHlqZ-uSj3^X^Qwb zjnj^x{=)aZY%XzPQ{PEY#~)#vThY;HQ*@wZOUqiPiZMYMH-Ge|m5-Yn$pk;O8ZW*Ah&^H@QWo<&K56qWTLRX**lN zGG`F2YT3VQ=3b%Mw9OvpNZX(d9j~(AJ2n7AlY zci!sfE4h+GOMd(OF4kI8o8;E7j%Rq;JsHt-RnsTw*PlL!1aKcvf;&AHE{L_5<=m!mE-5A(zsH(~9TS}V#&KBtSveG+Ik?W_o*oVMrww32?!_QUIyo&`pltYi|n~8a|l2iJO6f(pg zcXvee=XXUdlfRJNOUGdM4U32AgueR*swtYlWYvOs?;mj8J6A{0y|-6}aNP%-K+}%p zNpCchua)4dxfggT1n!$G^mWU<3Ra zT_BKA^Jq~IG{5nqp;g#r7yo(e0)56$9>G1wyzBE%J@2x{f8X;?^HTE$yQ!tc&%Q<^ zJY%&(0i5MlpIxhql_bn=G4L>&RZN6WvlU#f`u+6X2DAdvWqy5%RCPQW184+7W}Aw{;dBo8eeE_s$RIM$aAf3gZ3jUs1VX zD^C43Ci!dGTuDTi+G2q*LraH#j&{MV9A6oI3ar@6xSjcFz%rqFxG>q>CGw4@Z2P@W zb=9Lp?Dq#x{)^f9qwRm1*|{R0jVwpf%+s7YG?3VR9QCw=463Lvp&cTruBx9p88{dU3E0*P+KUykIs*!()C3V&5`bNnAb5 zOpxlKLUi(6RQoYnt%&HcppM6w(LkssF0yIE(3VDVl!)PJBy45Y@h;D=4jS z5B&oHhCPK9=+c5lX_2c{b!ie417mA0Oc8a|jhRr0qiHw_2C4cs|H@OF(kG3(j$MX- zf*)5dlRMlrx&-+@4JZDhbV4&O4I5_DUQFaa%p6MO(e%1KdTGno8IpCcay0F-d=H3<6PUBB_CLoQ|3VJU|G6!7zUH($UME0KgO>0kU(IKYJT=zEaCPr4BpI@8 zcy38q&HC;5qE!~TiBEHOcABlzWl_=b5jG7^b4{)t?wJY}A^Dz6oVw$|xZIVv(c@^} z5mVlNHAbqCWE({Ne3ijlr3}lv`(rh|Wmrj0U96t?zr$>^iuuj?^xs8BG)lt6v&HY! zJY+fauh6XsdI(E!Rijcr8|ElkCr}Dic5s3Oj~3JM>{AYE0{>)s{1Z5fmsA1L?r&=6 zU(5d>)TwthD4Dt>zRH|+fyFM29eP?medC&%5}&iZ@yR;$(V{t*UOO;?Igt2b zUXyLEDm*9L?|&dw`QhDhy9z_nl;peq4rXinNRTjPv*gphsiU_W-agokPrb*MYooGX zH4As;iOORG zL+yQ0L0he@+@}*1w2akCTofUCgH`U)nrIN+((-;f9x(MLGlai&Ncz$r45IRf$F(BL z|H&;gVPy<)%=H=n;v4^``lMs3)U`)FyNAUlzdRAzq^wsejfE^t2`0h6$+QOv^Q4|W-`MFY{1tW7Dz7OygR%X9+xmo z#1}?w531C z;3T2Tvz!2Qd77g`XaC{+E<6Q0!ONxar@h^_t%vI3xT>yP>ixoV&cBUgiOB1|>xY;7Q4zdZ& zDwf@-r?}q`Js0tG(;_OW1vF?-qE?edQXK;&DW!E#m`>nmQ3MoH45a{=S*-+*bUMfY zqb+x7ye_Go=%KW&wcII89s;^=ZzifJ7bF90N&O&yZSieOC(lxQHl#=@wgP{HGw71SOL{?q6_BYJS!aHGT>XV2|K>JCdB z(fLf6$ZUy9hG45^i6IItv!5ge9TN$9?`nldNS@&}d*tWs!g5Suejn#I;@|;}qi`Dz z`I?QyrXspa1JW=QStEi(xG$i*_{?jx>v?o}#pH6bA=_J{RCajL_8>0|LqrMN^O%X4 z{)N<8(3bcFypxOe7_}tW7f--++=qA=hWKCY0`z@+lIX;P`r{Q6oymq5YFQBg84?w@ z(3-RUpayKH=&S=QruIT*O{QL!mE@#RcE5-P_A_Wln!-qhQ4@Y1GUj?UJmbc0MT8M1 zUQQ6mX2MxGZZSKTp$gIF*xk@>mt`iHzg&aj)Fg)2LX;04K{v`(7@d1EU7&Zn+t45| zm~4o`YotHX5J^5H$Prm7`vK#7v{~zk`H<2}GvBgNL|2AHZ7K}61|wOdrlBmr+D@-P zO*wpsSec!6=oeSnZU1JDJ0%JX1i!}j;}3X}K;F;Wka;lD*FtMn$6KRPO7%npEl7jx z4qAzQhU_+432(DGdr_)QBbdrEi*VP#PD%yvZ_1zjSrvLzleF`qP$nvnRXOSFBZP^1 zL}#&O7n1ccSRF>n@z@h;!1VDJ#&b+I0V_xiLGE1=LoA%D}@CZ1^U%>qOnE(3OtnLSK9KBM<>JYUILz;?9XV060+ zlDEk8n4G}SFMSMjaM?;6kp*TltJQkbo=rOPOm&u)ORq+=;F~ynZEwtD`*UF0;3Yyu zodvRCMc>qNfIwKKqZsxFnL7DZqE_~n9d?At3c6q*6^KOJUWe=I(3^~WBdm-^KjXZL zB}$_5W0F8RBMKZvmcUtpdkmH-rqMUXN8eu@-6jb#xvh?>Ok07A>^POksWx2v*62AE zq&yMAKhnfyY>^g))!Gfy;)hJstd-ETgU=4t*Cz;0Zo+j^*0=UKJPjFSkwx_FY!cH! zKechmpAND{joDCsl`oeCGG0uRxJRCH#z(i3K5h8!pBBL5bT+X9Kok@Q7kwOt6K(MJ zXga+7QWBQR5c|9TI9HE#)#k&E5O_3wJG%@0fCnv<>_od0T?b8mon2}05~3h@*<%9% zc9;aRMC*x7Aba}mdfzH$bzgQ*(h0cR!du8Eb=^I*YWirnF=?2V^A4#bSZ854@H7`N z<7f)x0(eaKVLe4Fn-?7{6#JX2SzU#ZEjycKq=bpLZ&xAfCcd8~6W?dbU0|gMN4vd< z87zj8<{jC}j%rZK+6cpgO@=8WG)fS6l=b3lUk1~R);012dfWttr61@;ocj?COSkKN z7t(?^=;h*jc=uL{olYF@lB3sak0B+?la}43fqumkd?OUgK>l3`|Zr2QJDboS0o&;xr_0LvrM# z`i~fPD2Hg4>EjI&G4dhn&J{!>v!3vEqjEWF+0__68t7Jgo-xB26c6!WD>eF6q3$DXIkrmPKYz$>kOO; z)9_dlMZ4fgh3=}Ci0c7+WUDFzv!G=V9iX8a6d?RsxSI5(kk@xJ5ya|lLS`;R65*{V z@W-x>AUc6949JD71FhtwL)L)yRdf!Uu2JgnHYbh1;KkYU8LyUvyR#24E5*-vn}oT* zG64pxSs`w^;iu!FJ@y3FWVb90({9tjRf9?DP6|Svj9~XQf6;K zSI&@aLs#h4<3LsSMtngPu?Dge0n1+u*<26pj09+WQ21W&R)3%GCQR-@=pw9ZVV!IE{qLg0nuE_Cha6bD=86uPgny znu*~L!NwvbvQ0Qc;4E0JI?Ld!w~|6M2383K3q#?eP_y zgp7%v!0*88UG`d1`333PmA!5wB)+#GTu;Q(l4LEacjtXI5CYu{)f3YCxS*ySpL}Kl zHBOj>GqO_;4Q7|tqk{;+vIO(m{t>v-iQyd*mAJ^a+gqxs;xa&>O29Il*+t5_BtfFF zAMi`?mr32rqCkc9IuqC;m_G@y5)~)BL4u3!(j>?PM`dYr_ZEu*iwGwO6mW0-jDb?g z?6FDu00jmpiMs9&H#nbFSlWp7}65HAX?CD?VtJiClB7T0oz z7Yfu~3y~Np{Vb~3>U8#(0Fq|3CW&HAwrw7WSOj)7E6+}D@#+!mZI_%g*hsuBt^2t zWGR)HN+{b2A=xRDb?i%n!OWQLEbrs@Uhnn(!;EpBIp==v=UzVd2HWGm_+^kiUJAsj zF`q%>Ws|ezQ4R^sK{#GOa)U&PG;rDkd7v#j&lh=TNnkp~ESOoN zg%Uv4h91g*vcbmKfc8bj@cbkVG}OT)P=+d6#PvlO0-7RFm|ze8k)UNL2iV_vZ0aKb z`VwxD{rQZz99R{IsyK|J*iMRrVxi->AZ>~Y3@Ty=jGYrOxBz-fr`uwJxG5?yTV7zC zT@aY_Ljc_n@D9fY5`gaR!7XGGpHYH2*sy78Z=sns5*UI29#XK>Nd=)Hi`4l!;R4Nx z-QP_;K1K2ctAZ`Ri835PMmcD5qK-2Bv$>W3`zA+BU^`Wo1lOr?g^eWK49q&A@wjX% z9);ZjyN!vAQq_bGK*2gB#I(E*EL1PnBA)j~NZ0psLAD8{BSg}yl{NFbVq@u>4c z@Pq)R&IK(}=z#GjNzhi5BMyx6B8(#oYWhhdOz^PR1ipX;-32uK5R{H91#MfP;SNwU z6dQ&zf&|SrqbLUWN*z57zW6T2d4xHG7wK4077TD6BB1_pwi7_^Tm&?VJyZnOdGCbK zST+rWUxgXqNxu6pj=*(gq>(E5Nz`I-E9#7vxhk7_#C!@r7^(-wuR4_@;A(aZ((cs zz91q7wu*`7{vtuU!?-kX@dJ$G)JB3(sy^O1N`u59o#(59OfAr$19Y?*uCqrO zICd=qO$FM0eqw4V3CkR?bTLU2H5>)vQwX*O2GKAAc7)H^8paI*XEz<=#E^Tvz*=C~ z$u$8@%}xg&AY~(kqhQCJF;HFwM&O_a*)$>`waWs{e{L7lOPr-451?35CIk?&e#!v| zErp7|ATv-I@af_ZFgyj}D3|kQ0I6AOLc)3hjmhmrBLS7)=p@1YaiEthH~=oF=>kpd zAb?k4oA-b#;eI{PU!;LFq6hfiLoiDLTdxG!J+3Y#18@o+VJSDkv!OQZk1s z5e~7PgacGC4v=b!IR~f%u|PW^Q6N%-Hh@C_Bm|%$5Y)ilJc~wx?RJEKg;WRpZ#Qry zDB7e?ksu9}qXrm~Puc>Z1U3y4_#zGnZ7Gmj2-g7X5}N=>CoAb^5DvaW4}kNv)Mq^~ zwgi$OgfocZ)B=5;Bp~3xqaV~ugvl-f28D2hJn(665>>J)_9Lbfxi_ ze7*UDSUqXP=`Rd+8y^9J86E2|H{pXE?+kowK^43Lc<4B_j)eaJzykV&#~=aS=!Y@J zNI;K>fwoaRuTB!wPts(f6YvN)*V}n|Q$tDMspavldl68Q93=2{lU?HG3S5j|csh`(Okk3`!*vv{Il6=h0ZFL_@>qFva_kxSpezhTWEy)f8<=ZKa5sGj zd;reqQDEEiss4C+$3l=W9U7wYmp-1LZ-v4zbI?5%2mE=E4{ikqoU4J^ze4E1mCJ(A zexT&IL1hCt7)QMo-&z5#8pr3j<~sm&LBWnl0VqZBwM4~T8<)y2dNF-)&!Ap45dX>; z0@)k*E9ihTrVEE#^pRM^PIz&W3eXT_FK*}8zydlo73v{s(f6XF0Pp~{i>Y`r#t|a- zh(Pd+0RaQ|3UWuO#FwzJf~Qx-0v`SZk~GK%#lKKW@yd)P95@$c$+Uu4A~J)CKA2ca zR1L)MeL-X;3YY#E$J4u;f~4Z&_}1M}4T&{K`foP`!g-(Z~EBLPXaS zSl)w@Yo_G?dS9^4H)7jy65@uTOqqEmled9_1K)~@`i3$-30*PtbzB(}JBipql~I;> zAhDM{BNxHFhFb!^7hbR383$~CQ&b3=KlHMg@Gd;$0p33bsV%_u2oo6D3T&nxXo*E3 zNm}-T%tD^Au&9MhBXViK$oVB8VIT2b2cKb;0rPj<9}FkD3p19adKQVHhq&Q~1&BZ9 zhQA>(g3u!DhG4V=FTz9wTv@D$JjN6R;m*JeS%7r4+X4Z_nWG7GhyoT6)B;*5 zt9^;e+g9PzRB+x?ZPn05Hj@$8hSAVTI#Sf~lbmIHww;)E2UjEKyUn8Nct{hDwZmN$ z5Jbh5%7EF3wo`$7I!r@oP(I*uK{k{RPh0IAbNMnDM%kQ4Gm znN`qO+>&R%K;@L6yyc)VGRkAl`{Lbj7t9@Lo#f(+^^l%`o1_o{#5Ay|q;c#F!mMI0 zJ{l0n;Fvh#H=2h5!Y~(w3J5XYl5hPO+?31YS?n`?2BBfr;OpnhbjUL#77cSEmqd~A zpl@S1T84&`fteD7fSUqnRaGCrqm%`s;aCMm*jK|Kjcg}#NtiFT2rr5jX^~@zlRC$?hg9x2B9C#Fjub0(|vq=#ZgY+7aD@e} z$yhKSD8-8O2Z#V-NPuRN)Nn913$UP~8vX=sQA2#csC9mrpMdvzO=9CDVXJ^wKgELM zE%7pF1`yv7P#cKyBulIiNJSnE^8n5I0#>ymd|f(KR> zCZc9R3)B4z+AX2E^@vFDDwYcMFsHrvP{ zWc#--Ow;&m7XYHLYy*TuJ}sD^5A$hS;8AAk@fP4@0wwj&1waz}4O#i{APvw$x@iy) zF?(^5h{MpCygR^1EOT0|5q)8k&!XW7dseQC2^@q=fOlmL%XrR!y8l>9z5{T= zcr^Yd%c_@H0i~@RH{)@^^`rFm?J)2a!1)wMgv`72NIzJN_YcU7N_z^v2-l4!5Fc7< zO$B*}6US*V;N80vWQxtC@ERyA21O!~yy+*8DexWUx(T>?2uE#!2|t2S3ZJe9I3NJ* z%>=}}-bhM-a5o^-g$f<(;1(EccrDz5FE)@c24K1tc%cj}S~)>eMi)q|A*zJkZJsaY zxim743|{ai{a?3cimQT1R5lO~58!ckjLRK{VDkgWp4TPhb-q!skj6h~1GQ2edpy~) z?J!h3NkKT!H0{TPEZ{zGwqDzId_@tS4e69~f^aijs|2CE8-q~>;@P|O{3TF2{UP4p zgC!eGP{1>Yqe4)T=>^0T!q_)~qyqcD8>2xekRsUQ87OW5l`H|vV^sc<{f9l9!Jofn zm*F;GEh0vEcFhv}@BlvoFqHIn=>!1TO7F&isKxm-{^?#A^S^$?nGO6>%-w(o*ZR-R z(U6%sXb%{hlMUhjKpT}KsVv&c5~Lm;&mEy-#=ICPJ^RLC9ZD=-N@6*oW~_N8ri}dg z;hs$&R0Dh_QG^hne&P)zeMub$;^p&z^MTkxcL6Xe5x^Q#^g>d?Z6=Kms`@!p2Ll3` zqx=#W0__`;5$Xt$@=+koTv1Ij#lpxUh)^66^9J?s!ZK*jaf!76&PeiN(fYrE9&&wX zGt{gGN|k584~SX@)G=}!#9^dxVLgZ&wDg00!;F0$uBGlBDSRR>X}GC z_&)#$berQdOO!_IgRlwuU=SLJbJ9tS`nGX!pJ0b*Js=@{dOO)|@-H!YO5_T@hbZ}O(s^#p;6Wpw-#o?6rl z6!-=v0kUU(jycB*m?B{>2dr1#S@gwb$_5`mR~4OSDY?+n4$+4p9DrL+a}#jOfEv#o z?706oE(J9MCa18B8J0921~CFPBeB=r0sERPQnh>}t^dMQJyyyOD zXBG^#scsQC4hSX5({Wf}<_tasyzIZiM)Gv)_&hjtvyg)vHca9s0dR3@?^)2JVSvPP z2VcY=;bNZu=I8fze6j-78}-;MNl}Fd_Kg_GEa4Z~RnDTCY-TEkej~=W9e6dhA^3P4su3TJFVq9KgbP=2fk}!BEASZ_-x@yp8HeQ& zdKhkOkGcEt{qfRzA?yG)t`r1TJQ05YT(^Vh6abEO5GJu2h<>0I0D?+Im{dp&#}*N0 z2?(`;bGvsI4_+u+fPr1`vLEEB2!(xgJ79rWz>a1JO&dVNLfShfbY%UgY$cR>86H;y zU08ul+Y$CT10E+`r?5G|ccpI!gD- z9WDl8|D^*Q3l1>2zlWgD2ak?F!BM&;ny0{XhxWz_jDz=;g4%F5RRnGD#~GivJVrYH z0zb51TR4j*@ae=f9E|~Mq~K^Cc;{^KlEfOWf{)CkiQ~5xmd@tfeR|Y%ErmBoL^(L{ zY4w8V+~GwE>RYV@m}c7+t{z6{b`cV`!*j%=v&bF%7juyW%Gs#=AR-S;d=bzPuc>^H zhX#etHA+-d@9eviL0GyTy(11fVrK&$oeuvXE3^ie03A0@Qh;&L)U8Yf*?@-N;i2WE ziK#03!PLdt zUOC~v?mLoeaPZDt23vg(iBmx&*bVT_IWOR}&VlM)6}eVmeW&7Ry4oxf1rd6mgG>9! zhg9Vm151kx4^6;BK*{rn^9-a?_F(|If(RO~cr-9sjJpQF>f%1I*wU(!I#W-kfB;67 z3t$|9+)cJINE=w{$9vxopMhqe$)PyIIFv_CK=0sPH8J$LX&N%tw_qI11~2Y^L&0ij z7l6w_sc!ZEtnV0d1)U{-yC0b$w9zWD7pO!gi>Y0XPGmBR3G&Dmg21NVfd|wr`I}^Y&XX$~dEEOoM9}Z`A&JSJ;~vFENwRlF zrfF7BFrZ0bh$lqE0C6y*A`4;QC}}c<&Y^kB;D-OWvKBv5wGBW$FA%evFwl+^2kCjD z4@Q%KQO#G^ct(G)g+a#%xXl0D5nTV@*wQ=ee`CNo!SC0o<+kDz2SbGbVT>i;hlI2~ z2$@K*WzQ_hK(;??dXP&GC)f9(z1ndgu*Ur}0u!~!`6MeHpdv?P!;rKD5}HdC`vMQo z1NjYuwOi`vk_Ht~pc2Yw>4~?6G9j0OOq}_YlnLBx{13QsbV4;I)`S;33!-i{BXEYL zxIfZ*qyhpaR^m$5QkIRSFu6;y*ivXqo}o|BthWF^xwO$1ZuMuY;XPcU5cor_lcYoQ zS`C~jFQD-wbb&@pC-P|m5z92(22e_S%I!OqoV|1|Y9>MI`rZVf_7N6Qs6fsJ&R+${ zZQ#WM*M?2wZJ(k86q0@j$D#nzaFl`r{GDQtV^0ua91ErZxKsfR0nikXzDuF-P8bYQ zn@>XP@HUW+(gVP5;18MsD7{}07&k?yGic3|bc(wFToQn+P^wT7h}|lxP!?QQOXaF{ z!gSC{tr;i)@Nqln8_@ydGt{6XIEZlC;AAEZmnG-p<1|4Sd4@Po!$4a}9Q-N*k2go- z3!!vqp2i1hhWHqbKl49aA5VZ#Z~;z-P!h}dD_40fTs7uD=Y)&l_5O2%_2;p_qxFx} z%CJww>3S?#O{f40{sf=!!Fr6TCQMIoOvoO+yXClhia2pD4Lqcq* zP&VjxnL?kG#bU9y0D;I&=7Hog;L2%&K(eNQX$(9<5Y=6Zb1VG%p^DvsK)CBMjyjOD z=`jYMgCKhZ3qf8G_rv&kU>gIk#2B8TAD~$9XE0p>5V$k=asihq+=S^1xW-ueT)r@A zLF#uWKxJ|OW&`%H8f3ZVLh`bh^OyIyat9prmPv}~VnZi^ZvkS-0oBuS+0arhtmCVV z0s?TupJ8Yba28Pzbq1;nAVna^3#WXTqgv-30s&s38h{>IR3N7IM=wHdN{wlbZ-oFQ zLsNr5*2ZuKuwZ!i=d33RiMGT9@f>0O5g3=qAqz>j3We1FF2v9B-Fb3i@WQae} z$i&y6m7JhoOn4r++u$HQ!?2JxCe%gW3gedqXo*mElncj_@gz1ESG`8=CnZ3RkmEhR z`7b72xOd}NJ?T_oV2T>5)X4el4bstTZ&jSvW!(YMt0KJXYYmugd@L z&~~HTIbF9`AfN@OmYh3Y`7153dk`a;@rZld>}F$2ENogBI<@q z_UEzb+n<`GV~gD8i@g&KNb6ul6uaZ>|%C9(axbBOy8)$l5juJdi z3pMR@h?0Wp;4Bk5vA(lJ212UU#tdm)u~S@bWl(bB)@Her`1I}lo$>om zrIJLRM@cm=cseUu5XUuVP})8gMSEe_?OM!wGc9JUBw#K*l%wG?y6_G`OPhNFv%#lt zGP@1G@3lkGsxtLCIvyzVAFI3j<_p+7#j7!9H40=n?wZQ2=uV4+V# z>!nT86|1?Guq9Pjca={xN6~1%#evO#;(xq#zMwBJcUpL*;s-_b%Z=qe7TfKvT9}Ub zY|S8)M*Sy7@NS}n&)+k-Zx&_`FVn`)Z9GaoePkkPpF^4h{qqOq4piw(Agc5Y)p^qr z@rtM83(I{5gNipD^N{+F>s#*U8(*-Uk@dqhez+;gkm~bAb}P~D&8@1Y2Pr&4OH9yA z>Q7hg+_BU;+rJB~K1HB=Y4oeMKv>M@CIYvo)Rj1#9^Vq$C>dX1;ZooP*IDR+AJzjH zMsGQ4RG-T;%ymESY5%quDNm%Ir~b;?x(y{b?+9gyGYox} zReBWrHS1Amf9{Bmm$i{@=^y;{(!nLaiOR@oR-ci&za!|lf~-ZuKa%?xdX$=R%D38y zhdb<9J~d6v+SK;(6I}7`{er_M0l^uSnEDZcC`qy;G1L1ErnGYiA$8iIgfbjAQipwO zqE0i{-6%rA2-Nk1jL^jPzEd1OJi7w375>P}Y0w!(+}eAHXF8VGv^E5^$;@yyfCBIERj$oCyMA=?>p8b1k2&K{C2t{NyEd`a+x6*6W}#2ImxF5Pp?|r!dT{!@=B$OT zeZ3sx^(RxztJVAZ!1kxh<1bM5)ULru{)nn+h}sN?SX!?sZTb0aspFx!`&DNX+tdP> z%Jx|U#*(OqVuxM7RqF5Qj01oBk2HF@)$RUnA;vMa@9)>8$-VBqG&G((dBwtAn8LaV z3}!eGu2Bjm4Yd~9d>U@`%&OyP_732}51-^b2gKj!fsQbkUf#OyEspQrdX49;M|T`s zEl8ohE023w*&&;#)Ow}kqtj`$SQrQj&Vs6}ri?4kcf?64{`-1oOx_eY4!oZF zTa;(kZ=AV;;HviiIQo01R88D*L(gtgzwjfno6@}B%F~EX&SdVPwT9LBqzbm3AckBt z5Fds{)DVyKs-$(I(s13m8W{%b$}dB{Z~1vgx!Vp4#_J9>FLzV;5&8Vb=IY=<_^mGC zrG&+ez)0m6&vN z^QuLUyL#gTY5-ktXgnG}#qNJ(WA)eWj`eYo3woadE?7bb{`EvOuXTR=BiX;ganh+} zv)ky}-N&~%;GxzZPH4T@_*x-jt^I#v(2ML(}YOk;elqI;8+<)>+V<;l!nqi(CGc5AM0p7rD!QI?%U+-T0EUM+Rx|CAS zI{c`tgI3XpY6upWO`SqH=h$3Ygy?0E0lNbEvzmBXrTy}S1&h|~)+1#9G?%}saW$S{ zm7I$*WUc2@&DUN==~cX#4i{H5>X+3(i@IMnAjv|L&HjJynUDWxMw74v@9itV}(wo;EcQ_P9w7t|Vb?1=&t=?Mp<&x&7 zGE*l0A|u^%Mb|g{IP}8*$9{%ZbEV;?P}R;zL88|LJE7%j=(kbb+LT+3HmSa+$HyJ- zu=E@vc2xvvT*x>z_PCJpG3dHxts(oR_Q9m1B5BMruJ7FQ@Ueh-z447HV+zizK9P(T zHA#4(USeKuWBV(Rw_0S-_uT+vKT~3#+<56-WM$Lg zKNaYi`=qv;G;PvlPVd?J()E4#qrVRiH38yixi!ldRai=HJ^r?lUVBTEnp~>wkn;xwZb|hxcrdrmCBmk z*H7mA9*N@5#9U3eSj6L$-hCF9;db)h1np^guC8#8R1xcL^W329>|;e+;1WhgP}~lk zV;MI-84XXiQpq1xJ85=enE+}_i$=eRGA1Vc+F|h~;VjKWVP+~}Hu#Zi>Yo~`JuTfl zwWoEY;>X36hjz`_v;}Iow47)!wRG%O=m-Hb3<9+@XUH}m7RIbjD4d-6fh|}s7Mwjs z`T)-vYaPIuw4BbCLy3F*w?E%Fq@uiLhn|myPF0QLZk-s{+=9$=TdLcR4Hk75b!n8H zJ>%eVWTq6QR_)WCv8!1B@kM>(RC)YGqXR@Ne8$Ytp{RmwP=D zzfb=BoqsxI_vSYbJGwlLB7dr%WtzWP=bNGOZXod*OH@Ba!eOs`4aLBLN>_nX5`MP6 ze9<}>R(Xc*>~*iB_IdZ#enFkt&0-1a6t46t=c@tY!@HMs4I`Mm+)Pg}Yx+51H9&nA zy_R%*f%YnI_3xbBjzjg{Z?8Synle|;DZdl3+Q5BXS?kXK3`~mkku+kn;32TuK5YAb z?9@MrPrCw}f9{!0q_(gnYqG>PrO1u-7#<{CQeiQ6O=zaY{dP2l);L^UqqOp;vxei$ zn$7_)^*k0yOkQT07HU$l811KD7;&xe#M{Hq)}GpReEoGrg}GJg#lN&jFI^0()!)8g zuPgiDe#!7=#Ek zAFeF^U7qvx>sj^tz5-th_0`&2Ut1x@opdWkNcD<#cK-3rr&dqX?xiT{KR`1|*3qqbFY-5=D zdPnxHH~!Wc(P=$W$DeKQ9`dTYnDz65Oiazu-+xZ540qdzRNF@%lK_^1p0`8%hTh=I ziKo}nTe{a>>7z>BbG>f^ksFfDr0+2)6Tm$GdGDr7(kc;tP0~grXMI=Wq=lm{&;RZ6 z>~m!4Mh7=1iM_k@7#csUr9-Yf<~CkUNuY*v3Q0BES%KpXq1t*9df%5dbZlP!u2-w~ zX4E9sCU^Lae3b_D9jYcD%o_*Q6kkA9J*u}rb=^WzGsm-yp8gfK>v z5oT~MX(T=(Ztt;-WvTX<)yGC}`TX|py;7WBBj4BQRyVzFPTj)^Uuu-(G$rZYI=7-x z4HOL|-?a=pMD2AQr<6M9wQgK_uO{Y3C4Gb2qmc~#0M*sQ8%qhbZ3*kd)4J_wFOz%w zvYxcNdx4tE3q_>+CsnGi*C$=}*zMHyAgQ(a@^Fx0%J!v^8+vCYCF$i2In;#DdoGF# zwJ-MVA8w|ci0T-(Fv+ZaAF0^x`OI=KIRWvReU zb!TNsrK;(6X%gD`_ksr@0AJSbfcXfAc5V2n1 zu8(GAg^QRbU2iT@b5^%TeZR(a`)-$=9mu$}V(icl&NneX+wWs$dMzR*A#QK=Kf)%C z>cOYu$HOP%#S6O~EB8zX+jRct?>K%qMd?7zO0r+Fn@KXXRc9Yke^?Y2cNSCo{>cb3 zpq>@cE8Zm%qAVg+SH1nb$YoFXy@$G8s5;Mj#iQ~SdF5v#T#qJpb7{x!uX=JaZtQD; z;rSJ7i##4*9x;ziH#OgyupDnPS(E-PKrbtEE+LoIqLeVC#Y&iT+^D4U1MQ(Y^2bzup$4U5(uDL<# zqQzxLoNQy0m*QUa5IeKYQ-?0JGHJ(8{r$U4((-pyooDi%uBZr7$gBC|t7u`vgxiTh zY0)}UgyU^gn!=9khY~x|cY0_U7={zc{vZJSOhS*mFD&$^^Wzf{!=?{CoJ3mD52uYA z6q~FK#`eTSdseBnypwuSkUXR~y64uJrbBeg?eK)OzSQ5TnAO?$|DFxcu)RLsp!WJz z!^L>-&KtytB-+EOE5f`v`F;Kh zm)nxnvwEQtb>R;R&h0<p>7`|wTkHY|!WuG+0Hu~~MsQ5LRiEVuD=R=D4kRw=!% zvg`WVPg?_ilosyG^E-N3C!@T3?8sAMSkk+Zx&qpK$A<$ulGGVcL-xma@!!P?Nmsl6 zIcWEwLXVF*{)R}`t#5zIu6s}Kv&jB4QvM>4+r!!sYwv!&DDSeEV+?!hl6A|ofXvrh zV`*V^8qk5yUE>A)hrjGFtPEo8BTZ;v*N6*kHkX8_V937IP3DZS`(v#eJg(i ze9KZjr)PRdqh^3-SQi_T(ELTP;96gI&Fqxd)ryDvgTwuv=L}Gro>}LuI7oWi>7!MX z)$HnjW`%S^pQOQUL69Gz0IgXi9i)9@eZoD9uf~basPc-Y(JS2R9|ey4|m+D{}K;RazCC%Fz^56g4{rtUmQijAx^~;D4Wf*yhL#=}YA5 zC@ahM^=8DY&dLXnH3e-);zhBblH2F3ZOcozp(&QPTaEAa;USg2>D}B-*)c-{ThwJqC1Q1*S*(;$p7JN@F4T=1U z5&n^~d4xmQ(m>07_Z0*NC}Ht!w+vdA5AV%sJ^I$cCg1)FrIW5Vg+9Wvj({R6Wn2ja zJS^uHrwW;JUqmbV+nDsN8$c%gJ*-qf80ZiZQ1dLu%2)K zCBzPIc{@Yp_pWYecRD;uAEW!MAhYy*9y^j_2^HN2#Q@S5f{f=7kW*ae?|Oo$pvu%O z64*s`9nO)k+v*f^LlQCx(NgHjG(q}Xw)#2%9zc@d;4nm@aAl^UCZ&AnN!^C0>W z^XR*+g0r9)S0eWwUT5q$6?QnY-QUo2uheohTl~ZIxD8!$A(#?OuypA-tMV!O3#BQA zy-VYln}GQUS3X%rK-I$HHd@}{JS=uRdEG{*h2JY0Hc;9y-_xHIB@KE~3lPjB6|H=j3k1QM~TOZ7Y-;~_jUM-7d(;a{e8;;Mlq0Jessf=b-$>$aeG-( zCVFB>=Nr{nJM3geNcK*U@$Tk*ij`(RPBvB?tfsDNq26FdeEL;>hF9Sc98eqdesA7d zte8Hox|vITIPsz{_3d?WWY9Z@-nhbh_r$kq zm6);ch>K0TIve9esE_DsFB9WP25S%PykmUxlJ`sHP;%de;{AKb0f+qSLgBTQXmeh{ zJ3N2C-Q19i<7$9N8vR}m*QK8{UvGHHTeDn3xyPgj4~9K@e1xEO__|9m2i6oU1&lYA z(XS)EgG3P5MK)j{;yc*7`-`H{E92j;Q7cg>FF@^vm;sJryh_s@H`+r$9D3%?U}L?{bg+=zs_UwmhB<1_#SzeCcoS21l zf#Q3$^2^d$M*L=vrVSpo`Cy0FvsP-?p2*%lJ5eGU*1BEGCQ!1PE_#rI{m zz|_Bdw^Q@+-(th+=?nL~vANT< za9x~Wsp=PbyX5%b;&t=T70se_CGzOikyRhMc>38jNY_Hc`24M2c75+Pc{Tr%)4KD#dO+HEq)z8??pcdkQ-{zpB@GYZ1iv52ZC!bEhQGYibYEQl<@>OB| z`aalm$2wGIqqBZSMAf^hmXf`0Wrm*3dK*`|M=Eo2&bbfF3}3#!e{_Jo8B?P4`$<(2 z(0J$f&oSMPPQ&IG>N=i?2??{Zti;YeKZlHvG{J%@^VWnxby@Q~b?Bviuu)remdgvI zax`5|^UaoT!>7)F5|h)DrYK(e?^JF~w8nQgj02?jYI~ z)w7V^-emdbzCT(2=23%=N|Df7%In{imtJl=(i{)L!}3l1imfH&#+d@L^uxlHn)lTa ztM-bY%QYMig+a)Hp~JUy{Rq^DHYFq4!O+~*e^2(V(+wB_BPY2}11>hKlogM2MysGJ z#(v4W=QH2xmq%)Nyjj*c*7xIaL)-Q#If<=yTH^*DCEs8Fa(%Ae>ECf}8~SirQz$J= z;jzKVw@wy+;#Jww6-S8i8{<_)MOGKP*#tF`8@uGaIO5&FH}qG)w9%& zF0Ki~-#I4b#Vch6+?U+v@#JoU@P``3U1y|A^k}~tn*@LHZZ=tAEHIxjN@U)e3Hn)b zxbj^)b8$MT&1=mg4f;yv*TIHox48Fi9c4C@2nR}{2YyHz(+5iEmE#}GjbP#8N#RTy z>EIM}SxBV@H(U~2uLDZ@ z2H)8oLVQEV2c*Wn5&w9>Q4t*7n>>PQA2zd3yl*4fzmBEuoa8)Uo~=(YC<@!9>^x%h z5hSGCP&`b_s9ng@I(aU@9De<&;T_8vvR9P7=iZ&izm{vU?XeL%uHq~&X!@TyYf&>5 z-d%LDa{e=`qGV{7h;9Wcj*j`CV*XI@d!r>4-mchTIeiQ9J+vd>=#1NjEzVWtcZVVx z%8%`m8T0)_?u}OfatsjAHC$l!hR$+b(@1c#sml^0k)hw3nP@?YfUA z#*)s)YZmz}Qu+Pcn;f0iADsI(!tDL2useU_gBLdrWR22-O*nUquc4L5v;E8OzHj>0 z%VdpH=f%;yDDQZ!h}N;L8wEULsk19r*YyS8JzyDn{v-K$)#0FvFRZjAy9}c?xEmP+cNFtlxX1P1Hp$SPnJ}04A z`p=EpAeS|`{85~yy6DeK(TcP;aprf{yb(7Dv-0O#EZac(Z`Dk|+Yw%`d~mos)W_`n zY5U-BS;;dkuWkD=`Wz#9>xh_a;I=Ii2bYgNxUgZf3eW1*#pF8sXHq2ZU!`xZT>3WW zX=uVOxG1iWH)Ocs%-eqsMw4>51<2-II`?k1PLqS7VSF(REamg z7mdmJH$@JErA)nLY@5H{1s;No;i;RgyL!8+sY1ChKgg%y0iZ$aIgp)MM%Hta*HeSC#e+PzqbEeL!t{XASj+hqgOirL0`s zd#i5Lr)@12a>}B*YAxqh6f|Xg-3~t(OIp4Y-49JXc-FAlQae@CMpW!(9kCUX{uodY z%}wmnk$_6mp`5%}wZ^nPH&Fn$Trqb)=lK^2ZUdG)yMEX}$Yq~vXq&e4h5snu@&@*zf0)!=*I z{H?CXYxwgs4c>}5TvNuTE4LW>$7_qH&`aG1dQ{%ZAWL z1{g@wqw!pgS|V&`VXuLkF>%UnQ~lgXP)9nOJD}_{_v8V~AL}QH=+>PO-nP=c`S<2~ z9f!?-t~5pw?}~<>Tw$8XwivIv{JHPuxt6EPf*J}Vwhn@Pv%P%6)6sRCMnsjNHWGr+ z!u$WTEDgpttX>APbRKKSlcaVfP1bP_kA~2xirJvynD-Pd#U%@SEVBu6eHDV zQu^W=dBT1b9*a~n)}6@?%j%h&XW#M-(?4_l3Q9BK3yyt=N8JRgH~ji?3UnA%W0z1q z5!DSPWPWV6Jz|yOawN^W<4jqQO2VR>$&PZ+tvE&Lxv+o^@Dm^_}Pk54fAxeD>7Z3piZp zAIkUDKF#8Mga#dHyH6Rem&9c;x5{ss?A*hnU(9uUcFSMvvc2%&${|&-R0qr23Kv@`~?4Xq zm6TZYg2mRyd_49aqM&lfU}M1N!5~^rKXze6 z^q@#py>-tf)scAUXz=%K4YML^>e5A{0|ROgdf)r=*ckQg%da?7&@3S=iQ7v9 zNm(TaS4cVj{aG5f-?)cSxHow%eehbaj84Luv#Dp!8q}6#5(g9>7}l7S)O)^~AWl-B zUlepz=Dlm_cDTz{e)23cveSK_ddtPV=ej;ww?-_V7tP+eks^_;St?Rf^(FaqSo@)$ zPZYA?vZ@2ugKKNVDdMJYseS*7tJZBhvEpM|NRt1SlcRS)4~kbr+*3m*_@n4Kv#AYq zyT{VZjsF?{kn=M>{`r2}P42gAL(|z$2}f^!u7k^_LNtA5q0D?0pC95C!>xK|8@#0; z+B}?)aZ;JOXu{&&r2PCD!3^!b)$T{jQ2KTnMuX%n#80!5^!(a1`mHS$Kc(`HvmgJs z2F#H8$~mi;OhPD_rc-a#z9%)`o3H#s{zAPmET&=h6O23SEu)`|57uYATtGPRX_6|lW6SK!333?>Nf?$&4=Gl zf`QHk*oIQawRqX`*CC7RMiex?)hg}nf^5YOAP;LIqHEQSTf-hp-Shk!Y_RXqjA)EV zGG~1Ruj0UgzP|f*$E-eoqgbE>Wb9f(MZ~heq-Wpr#2P>TS(X9E{kW_D?UB2xuI9Dx z0y4MXWr$Vlz~gBLD%^tWiZ3!+87?TwJm5znZnLnl6gY~+wXRrWW%-_>?-xZm#eYkWTh3$WePqd2YieU zDa-t7wY;e$$MJEMF(i3O3)lTA$k-)SzS*ZwHaH@`c#3PEIv->z3y{ota!qi8N}qIL zqq=DaSxB60Rn>@zTe#P5B(<(E#HsJZ&lT&IC+@nuCOht@`211e?r8{`dB=z5e%O(2 z${PKqn{uNT+#+$eNbpg?(7tBwJKuTnfgg06=-sL}wl!tW2c|2=+C-Qy2kCb)Pj@{GRS>=@Uz=Kn5vTunF+uc`(%Y8^4r9>Qm zq`d6nPHJL>!*5;x(z88Nua4jqruzYH|LVI8{||6=x9Z(RPO`+C$69y)w`IkRD*S+)MKn+1;afTL0gI^ zzB7&?+P6$T=?KI8|J{!e%7S{r4&9_9$wfyCtga24L?&!>oY_x1Z*ZjMczn-OkI)>; z*PG-FHhyxYOQi?XYgdp@){fkJ=r_E%dGBIYNkA-V>Ydw&FaBg$yxZ#+O4|{`H4~U=M3M}iQe5*;rTd}9Aiy;PDW;=qimM%b+UkBLt4dd z7+<3V*3A`3tRjE+H!yy)^+>FVP1~!JnD(B*0v@k=a?Q^R_yJhdG|I^-_y4fc7W_RC&|^vR<}JwF+L45q_X5a(R+&@fHUd3a2f1UL0wn!2(hPQssfXRkEis4p59 zSu8ebH}HV^VHa%Em%cW-k!N+%2%Bcyv{ppC;`bj~_u$v$$K&wt^;ZfUoQ-o1y&X6B z`hd1m*qpF6!%oW@FyUo=0&My2W(GNv*k_kYv>c;Crj35#B9VqC9zwpAUG3_OLcIu8#AN^H7weM zng(ilkdyfhVeVxjYN6V4*g#PXmHqd11E?`{58_)L{3HgpL&8q-M^Mj5Wk(zOwUw?2 z$=(8RH)w?nKr91$CWpVs9k2uDvc~x|=oMx};Ges>r-wwf<@jeP00sea#*i)X3SNf< zZv-Gj=}4(lpb(M1EyZvp!*XU#P_vH?#0?9~Od;masR39L5)^|nf%rxzs4NVnyfBFg z<${-rfezCF0tcfQcul5PX3_LeqKp;)|eN*~uzlgO!XbLsG?#$DrPxln;e8)j~&J7b#R$f>ex!RqHdY?3--H z2fiH{2{=6(NGkzgUv<^{a&TuNK0B3B6Q*=FR!KD5sw|mQu-BTJ($(ovmJBRjLL>21 z92OY<3~PA`RpG;LZnJZga@3NHWKcQj4`Jl<|MSO(u(4K5MSy0S;7Ce=6Lek1#R^J+ z!TzWW1#_Pb2D{?Hd8Ud@yD_-}(O=lBh_&&QG*iY4rg+R#><^-9guP>h2=x<}BvU0u z<(QNJ7FY`y>IF)x4%n)q=J4oWKY7p`$%c>C!M+b?w%UlT`UXe^RngCd4M1D4uLxts zd}6=!hw4fb6)1F8SBd5AZwT1>t(Sp|cnTk^JKUMgaQm4yFu(yOpp76)Lr5#wepikt zhR06{SE3_6SPf0*iHo;7^-*OCDB{uD-F&$naFvPR0EAy^;LB4eb12OToiAKrn|RpJ z25m~s27xg1ci{n7yagKAPmChk{Fr-C6{$@~W@90z2Kb{_Zmnl4VW($$CG>66jRwb6 zy$gef?C1-%{fcW<1yS#Tw1{#&5YATeJ8;lJn9luz zt)b%!3a54n-~%r`H9YvNn0wfyFqzo2Qg=dydH|i$;LPcOHv<%bmGqp0P|~Q3?{cE(C|$a= z7Tg6&etSIFk5W9?WJvw`t`sOk;9VJc{I6~3C78W_W(|71xde*zF^iM(NNNcG#$PwM zegJ-DNa%*fu$3&v@~9Iye_ZWFnc+~bERyQLHq)D}5=I+dlgmF5OmTGqNEsMlgJ>OXKx97Md>VdQikEREF|Z|2CIsiZgUB#O`?N#YhCG!ETAUHE zEGuTW*RFCxwpa3EpD^H;`>_<;K3BX(#e#@-ZU*ZFIr zx_-NmC;F~Ecb|k$wB3ChwxaC4@$-D3YvJM;YK+gGT%7U$qo)#%Z^`J{FTbfS}eWunDYArW)fAA5gQW8cmmS?D) zFLxlzsxZ0eO%s$$4tAe{eGxm>D&XzDO{KBVsLZ~0>wCLwXmDjb!Bh#&I-{-ed=~hN z#4}7d>?9r=cqR7x@M`Y4$a32~82ZPu4rzAlocJu>Fl&9z$VA4ZT7*~fp|oSw(PE&M z!fvOrIMAN+I)Oqw0_QH7BfRgq~CIjH4Z

-G&=3 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%0D)`SWdFL{umA3Dj!*F(E- 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 z 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%0DCasN$K&LyTk2>dN)WP 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 Zy}N}!eh^lc6g3n6ZGhm~x>j0U{V$cQIH>>t diff --git a/packages/NUnit.2.5.10.11092/NUnitFitTests.html b/packages/NUnit.2.5.10.11092/NUnitFitTests.html deleted file mode 100644 index ca5cd4f..0000000 --- a/packages/NUnit.2.5.10.11092/NUnitFitTests.html +++ /dev/null @@ -1,277 +0,0 @@ - - - -

NUnit Acceptance Tests

-

- Developers love self-referential programs! Hence, NUnit has always run all it's - own tests, even those that are not really unit tests. -

Now, beginning with NUnit 2.4, NUnit has top-level tests using Ward Cunningham's - FIT framework. At this time, the tests are pretty rudimentary, but it's a start - and it's a framework for doing more. -

Running the Tests

-

Open a console or shell window and navigate to the NUnit bin directory, which - contains this file. To run the test under Microsoft .Net, enter the command -

    runFile NUnitFitTests.html TestResults.html .
- To run it under Mono, enter -
    mono runFile.exe NUnitFitTests.html TestResults.html .
- Note the space and dot at the end of each command. The results of your test - will be in TestResults.html in the same directory. -

Platform and CLR Version

- - - - -
NUnit.Fixtures.PlatformInfo
-

Verify Unit Tests

-

- Load and run the NUnit unit tests, verifying that the results are as expected. - When these tests are run on different platforms, different numbers of tests may - be skipped, so the values for Skipped and Run tests are informational only. -

- The number of tests in each assembly should be constant across all platforms - - any discrepancy usually means that one of the test source files was not - compiled on the platform. There should be no failures and no tests ignored. -

Note: - At the moment, the nunit.extensions.tests assembly is failing because the - fixture doesn't initialize addins in the test domain. -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NUnit.Fixtures.AssemblyRunner
AssemblyTests()Run()Skipped()Ignored()Failures()
nunit.framework.tests.dll397  00
nunit.core.tests.dll355  00
nunit.util.tests.dll238  00
nunit.mocks.tests.dll43  00
nunit.extensions.tests.dll5  00
nunit-console.tests.dll40  00
nunit.uikit.tests.dll34  00
nunit-gui.tests.dll15  00
nunit.fixtures.tests.dll6  00
-

Code Snippet Tests

-

- These tests create a test assembly from a snippet of code and then load and run - the tests that it contains, verifying that the structure of the loaded tests is - as expected and that the number of tests run, skipped, ignored or failed is - correct. -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NUnit.Fixtures.SnippetRunner
CodeTree()Run()Skipped()Ignored()Failures()
public class TestClass
-{
-}
-
EMPTY0000
using NUnit.Framework;
-
-[TestFixture]
-public class TestClass
-{
-}
-
TestClass0000
using NUnit.Framework;
-
-[TestFixture]
-public class TestClass
-{
-    [Test]
-    public void T1() { }
-    [Test]
-    public void T2() { }
-    [Test]
-    public void T3() { }
-}
-
TestClass
->T1
->T2
->T3
-
3000
using NUnit.Framework;
-
-[TestFixture]
-public class TestClass1
-{
-    [Test]
-    public void T1() { }
-}
-
-[TestFixture]
-public class TestClass2
-{
-    [Test]
-    public void T2() { }
-    [Test]
-    public void T3() { }
-}
-
TestClass1
->T1
-TestClass2
->T2
->T3
-
3000
using NUnit.Framework;
-
-[TestFixture]
-public class TestClass
-{
-    [Test]
-    public void T1() { }
-    [Test, Ignore]
-    public void T2() { }
-    [Test]
-    public void T3() { }
-}
-
TestClass
->T1
->T2
->T3
-
2010
using NUnit.Framework;
-
-[TestFixture]
-public class TestClass
-{
-    [Test]
-    public void T1() { }
-    [Test, Explicit]
-    public void T2() { }
-    [Test]
-    public void T3() { }
-}
-
TestClass
->T1
->T2
->T3
-
2100
-

Summary Information

- - - - -
fit.Summary
- - diff --git a/packages/NUnit.2.5.10.11092/fit-license.txt b/packages/NUnit.2.5.10.11092/fit-license.txt deleted file mode 100644 index af37532..0000000 --- a/packages/NUnit.2.5.10.11092/fit-license.txt +++ /dev/null @@ -1,342 +0,0 @@ - - - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Library General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) year name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the program - `Gnomovision' (which makes passes at compilers) written by James Hacker. - - , 1 April 1989 - Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Library General -Public License instead of this License. \ No newline at end of file diff --git a/packages/NUnit.2.5.10.11092/lib/nunit.framework.dll b/packages/NUnit.2.5.10.11092/lib/nunit.framework.dll deleted file mode 100644 index 6856e51ef08a8e681896c3a84ccbeea8975d5947..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 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 diff --git a/packages/NUnit.2.5.10.11092/lib/nunit.framework.xml b/packages/NUnit.2.5.10.11092/lib/nunit.framework.xml deleted file mode 100644 index a56c62f..0000000 --- a/packages/NUnit.2.5.10.11092/lib/nunit.framework.xml +++ /dev/null @@ -1,10407 +0,0 @@ - - - - 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/packages/NUnit.2.5.10.11092/lib/nunit.mocks.dll b/packages/NUnit.2.5.10.11092/lib/nunit.mocks.dll deleted file mode 100644 index 6ee2c1cc20dba59e4fbe2948a130b2593145d790..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20480 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 diff --git a/packages/NUnit.2.5.10.11092/lib/pnunit.framework.dll b/packages/NUnit.2.5.10.11092/lib/pnunit.framework.dll deleted file mode 100644 index 6c105d70f908dc7047aad6fbeba58162189c6070..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6656 zcmeHLZ)_aZ5udlacX2N95sYIJu#-(4sx*PC^AA)tC3ftD7!t?$9FsJa!uq^+Ho3cX zclVMw(IF#9X{4$RQX3K!74e}}KeQE6X+agBh)VuKiQq#~3sp%4MXf+;K}ZFJpud^7 zdp_rYkk8Gt_qQ`|=FOX#H}CE4?fmvBGKt8-_35WXPvg$5Tkwlv8shBo-)HH``7f?` zTJ3mo#qa?yv?l|9B5+D}!6}#h$R2g=pi;KIvfZ~UZnuak-W8)|lf9_|*`+O${KYlo0o-4Z`; zO#GnLuNtjYgk<4{Xsp_dW(8R@w8*NMOpAOPak87ldHX8+h`iB#+^dteVBReYDd>eO zVLPTdCZfz5O2=b5FottY#&Mpvmgxn-L~YFK(+C~8NykdZd8xGiab8m&OPQwCkAAV1 z>0_m#_S4I#Sw74|5Bs*uqWy8MW(RTH!C5$0=YhEjab$c1KgUPYN0o4ojCt+z$E-&F zlx!2E7P*)cEr%!>OLWk2sSX!$tYZ)oo#d1!Mov+>&Dsl7J1KSk#d`1rS-1{4SoT@= zu8HkgDIfkob6Kkt1M;>df9Dnz?_53y4zJ5~TGr((ef!3Rb1(q&f@f4~0H0__#U;-``MA0{^9+M!CMHo}ob- zF4Fgwyh20h*KH>CR~o6~-lBcHp3-JgZ;>Ob#q3P#9r7@bZZoM5F%COb+Ds~~CiVJ* zXYMd^kjPrp2%_F&GtaZ1ARM~VW>R@|3Xiex+sv};7qpm`tVp2r8y@m$;1GGtROV4t}JLlaR ztxyBp^Fggg(_pbt)SUiR&@^cy(4x)26zYU^ZV*jv^Cv=ck3o;rSz!Cd9Gjo-=L&iS zaeqy4E$~(PhR{8N{epK3?iF+dJ;Cn^P6^%*e4S1LhfpPq4+~yP%dIz2oi|%A12+oY zD|ol`IMzSWe^BVdf+wtZu$oL`O$FJ*v-C^rBh;8h&A=u+3A5OB-=Z96^>QMio_erUgvZgu9M9qtyKY<(C1)WXJ02Td6Xnu#v z(C`{&9;09JAl)|Y^v5bi_jZ~rSISv+V%oQR(pnC!@a(8%TS5q|LN8b2UJaIoF ziq+x#ECVyqtWEY*rs@epw=`Ou5{7$+{h>-(q8xOPmr$IM$kERVwDqW4s6_6VB$4{V zd?n6QxXtm3mB6JwH!K9+WaRm<$EZq8#b z$Dt6CUYuU^iaT+9TaOl8ZMh`NP>Pp}z=n}ihUq)phb?-5K?tisBqS7JWyPXyiu>{MRg8ex`%OCj8?|UE04KHsUS5J z=zTXDZo z#1jo08V=}CG;la}mhk>m1|OlnEZVlnZEzK_MQewl%^IvZ4m&K<^Ln5>vF-x*oD;o?anon6vTgET<9WAA(5i3>WSwmfac!*E0}kLi2B z4O8n@X!qeGo!KGeft5^~lw~WGO#wR0dA12`YD(LN%C@wp_?AthGn;KP(;Zne-LfcS zr@&@AvMq~vP)np|Sd8D%R)0@cd z)@oPrOJsn*f#heS>AA|hZuoX2YUpRZ?YQ=IZ;eT;wpAn6g{wz9Oh+F?{z$wCIc{4mxwVC@cdx#T_?aZEl zJd2I18{a&$x+BmHpsi0y)>(^p)h=8cKy~3QJ4fq5uak@AJMdkkBszVbl@SYG7l9?% z!Y><$uo9myIh>jtGfR%( diff --git a/packages/NUnit.2.5.10.11092/license.txt b/packages/NUnit.2.5.10.11092/license.txt deleted file mode 100644 index 66a5ebf..0000000 --- a/packages/NUnit.2.5.10.11092/license.txt +++ /dev/null @@ -1,15 +0,0 @@ -Copyright © 2002-2008 Charlie Poole -Copyright © 2002-2004 James W. Newkirk, Michael C. Two, Alexei A. Vorontsov -Copyright © 2000-2002 Philip A. Craig - -This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software. - -Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment (see the following) in the product documentation is required. - -Portions Copyright © 2002-2008 Charlie Poole or Copyright © 2002-2004 James W. Newkirk, Michael C. Two, Alexei A. Vorontsov or Copyright © 2000-2002 Philip A. Craig - -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. - -3. This notice may not be removed or altered from any source distribution. diff --git a/packages/NUnit.2.5.10.11092/tools/NUnitTests.VisualState.xml b/packages/NUnit.2.5.10.11092/tools/NUnitTests.VisualState.xml deleted file mode 100644 index d975dcd..0000000 --- a/packages/NUnit.2.5.10.11092/tools/NUnitTests.VisualState.xml +++ /dev/null @@ -1,124 +0,0 @@ - - - [0-1000]D:\Dev\NUnit\nunit-2.5\work\build\net\2.0\release\NUnitTests.nunit - [0-1000]D:\Dev\NUnit\nunit-2.5\work\build\net\2.0\release\NUnitTests.nunit - false - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/packages/NUnit.2.5.10.11092/tools/NUnitTests.config b/packages/NUnit.2.5.10.11092/tools/NUnitTests.config deleted file mode 100644 index fb15771..0000000 --- a/packages/NUnit.2.5.10.11092/tools/NUnitTests.config +++ /dev/null @@ -1,85 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/packages/NUnit.2.5.10.11092/tools/NUnitTests.nunit b/packages/NUnit.2.5.10.11092/tools/NUnitTests.nunit deleted file mode 100644 index e7bb7f4..0000000 --- a/packages/NUnit.2.5.10.11092/tools/NUnitTests.nunit +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - diff --git a/packages/NUnit.2.5.10.11092/tools/TestResult.xml b/packages/NUnit.2.5.10.11092/tools/TestResult.xml deleted file mode 100644 index 92a3219..0000000 --- a/packages/NUnit.2.5.10.11092/tools/TestResult.xml +++ /dev/null @@ -1,5971 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/packages/NUnit.2.5.10.11092/tools/agent.conf b/packages/NUnit.2.5.10.11092/tools/agent.conf deleted file mode 100644 index ddbcd8e..0000000 --- a/packages/NUnit.2.5.10.11092/tools/agent.conf +++ /dev/null @@ -1,4 +0,0 @@ - - 8080 - . - \ No newline at end of file diff --git a/packages/NUnit.2.5.10.11092/tools/agent.log.conf b/packages/NUnit.2.5.10.11092/tools/agent.log.conf deleted file mode 100644 index 4bd90ca..0000000 --- a/packages/NUnit.2.5.10.11092/tools/agent.log.conf +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - - - - - - - - diff --git a/packages/NUnit.2.5.10.11092/tools/launcher.log.conf b/packages/NUnit.2.5.10.11092/tools/launcher.log.conf deleted file mode 100644 index 4bd90ca..0000000 --- a/packages/NUnit.2.5.10.11092/tools/launcher.log.conf +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - - - - - - - - diff --git a/packages/NUnit.2.5.10.11092/tools/lib/Failure.png b/packages/NUnit.2.5.10.11092/tools/lib/Failure.png deleted file mode 100644 index 2e400b276fcd227a2f056b4a2c704a3a17776bf2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 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 diff --git a/packages/NUnit.2.5.10.11092/tools/lib/Inconclusive.png b/packages/NUnit.2.5.10.11092/tools/lib/Inconclusive.png deleted file mode 100644 index 4807b7cedbc70436d121f9052bdf719cf2e692ed..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 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*& diff --git a/packages/NUnit.2.5.10.11092/tools/lib/Skipped.png b/packages/NUnit.2.5.10.11092/tools/lib/Skipped.png deleted file mode 100644 index 7c9fc64e3874e15f3f22a234083c1da3ce8d62b8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1405 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJV{wqX6T`Z5GB1G~mUKs7M+SzC z{oH>NS%G|oWRD45bDP46hOx7_4S6Fo+k-*%fHRz`)E9 z;1l8sRN(9D>+kO$5D*X;7#I{36d4&A6B82~8=H`jker;HmX?;8nVFT9m6MZ`o12@T zpI=Z=P*_-4R8&-4TwGF8Qe9nLQ&Ur0TU%FGS6^S>(9qD>*x1z6)ZEoQeotUc4CddXRJaa_yUX@}NK6`G*Q rap=JLd&hddy85ua{(ro-{sHGx)snNf1MdKfN(Kf`S3j3^P6NS%G|oWRD45bDP46hOx7_4S6Fo+k-*%fHRz`)E9 z;1l8sRKUo{$iT$F$i&FP&cejS#KytK&dtus&&t8a!79qiDb2|%%gbWKB5xwEsi|pi zZ!hR5DCQ_8m>_8BYiS!{tB|drnWkx$Z|30O;F9a&R^cQtT|ji2DC;^_{!RSCn}wye zOUdq#Rq0dFZPT@#YOA+736d-j|;b5^fjy?y)kzB9co_gm(kXq|kyZOXm=d3UF- zxj1e8wK-eQ%-ni$?$wK1u3ftZ42n@O(n8?#y__;&7GNj|@(cbyvH?TzcXm}^{Bss~ zL>2=JAYg{zy~a2pzj6*xP@=>&q9iy!t)x7$D3u`~F*C13&(AePq0Cs%*lgwVM<9)7 zJY5_^G=h_V^s`AE_`@OZ??1oe|Np)J|Fd&fNJ?d7NlEPTHmYb~z2o!biRe_3R0~Oo zAC63MYDEjzm0f!k!^6X*pexu`^zUIJBcBZq&!IL!2S)kYxVsM~C}^^=74jO(FKAdU zz&yERfxa~J{Kb8}>K+cQQyU%qTN*E3I(bV>4OIj9Z-1nd_^+fC85L>3(lN5 zaNymeob{wrblmH;2j<40nnP d7?&t8Fes)~X?EOwb{gm}22WQ%mvv4FO#qjX@@4=4 diff --git a/packages/NUnit.2.5.10.11092/tools/lib/fit.dll b/packages/NUnit.2.5.10.11092/tools/lib/fit.dll deleted file mode 100644 index 40bbef0e292de5f8c0d5f291bdcb6d48dd00cac4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 49152 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 diff --git a/packages/NUnit.2.5.10.11092/tools/lib/log4net.dll b/packages/NUnit.2.5.10.11092/tools/lib/log4net.dll deleted file mode 100644 index 20a2e1c47dea6ee52dc38cfd4eee0cfde7894faa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 258048 zcmeFad4L>8bwA$Q-P1GEvny-0yED3Xb*OXf@R&(C9P zySwVut5@&6diCm6b@gc%JYYGNWx4qG``=sEW4Q9SN&Y_dpWVowHU8mQ*89s}S@PJx zsb5)g&UM?SCvJ|yYop6=oVfDxn{EnsOk8pGM6~m!iETGcJnM|JCvFU{x_Z^nkiXoZ zKJ$3XI(5LYe)X05v*OymZ_Qd#8SpIY6QFEDQ{VZ7x&JJ-+j0B{joLIo%{HG zqZhpGq?eBTWKU)KuU`AL;cxAI@8=G>YuT6F*T3%-?>~FXsc&BW;3exX*tYhKXWet_ z&E7XQzkBMFFZl49?>+d7m#zNs`42sR)i3|*l+S+TKQ6uJthZfq<>S{Df4#Z=OqZdtx<2Mt`pCjLxc=viJH;Rbi5Wi7~- zZ?SlDA{wx)o9z}R)oye#Zi7`Q6&!_9b}(XD-b~RBRwL;NlpnzSoP1ol(kgcIXk^WR z1rjWv8@5}R(7S%!@>W_SYwRReU^{JQtc+oS3$P?kVHW^401ilP*k0iWYf!J#9Au2( z=HM8RR4)Pr;b)3oFeOweO(kpYM1PvlIMf4@6PlD(5QB8omZW#k$_&sdZIb4K1!#|! z1r;buw&k{y87tYI1H0N|E8mCga6Y(e*F=hGa}1A5R&BhuJqy;j)~kRIEdhTj!XL%g zSZashz88HjN1EYnHspA<-J+&6?3oKuD{pNltfEZg06Sd7E0`NDz|G8ozQK0nfOWGM zK9|KuCQaIvNK=f~Ov$L<6EnqPERTc9sw1o=7h9t%gmt*T#TtQL4A@9N`EFGQa{8VJ zdfUj-`}&a&KL$`q_%M{^!-{?J;k)leLBoo|ci+qh<%VPVr!XxJSt zJY2Dh%A}H44A&uha=1|2GEx{W47>MlTl*a^M0@?})H1`v1-7^M3g8S5L2`H~{_H@@ z7laFiuY-oV_kf3`F24SKK3~fnd_C5>{v9!2asSDfug6-i_BjUtjGx;oFflSQ^`UJo<>31n856E@9P&0XjPB*UMh` z4gj%pH2=C*sar+b0v8$p%>#a?S&25-*3Hw0fk(G%?`+PoZD)nwhFo2*&Hh>+v0Hp{ z!gm50IzJ!KCtYjU;IZw|juP5OZEGp=K@|EZP0ncW5R|w%%hAW+<#?(O)U@k@uI@f= zTM!uS*|1Zo4%QDSmLB$PPkKkGwq>wXgzSGRbZkuOp}A-_>~I2{Xe>99-iao5TUY5l zRln}0^*h$dz@s(=wYtsOcCa1|nEo)$H&g5u|4xv16Ew2nM`@xp)d|K?SntCPD3-L# zv93w*3VoI6pU8AjO{Oy`oachx^=^1D#pN}|z3_14R;Q|(@3`R@ARI4*==}OnM{3t2 zm{0piMIi6dMh*c;%h=Ug0MU5hoo&?t$Dchx9cn|pIG$mUaqWrU|Ni#}wCC_PfFe-z z7>zK9#rBu@?G|CRl8!nYL4rEeRwHfQ^EEp2Qs{&uJPwIhHS|VF$jD0igH07k~(JzePm2-TbLnrqNB*qu7=QV4`Y#I z{WVh10E`{6%>*`g!+Vfyw|E;mP^#)tZ9=@ChR9UpkzU#JgC~Jd4$P@UlLnJ^j(lj z4g2_Kd+i==#RVXrKRW;*`UzXs2vo|=3DZ-D9rV-ygnQ9}xD`K0da7zpZE6I)jjA&J zJ2bsbcEKGPm75+NSDv%(1?a1&4?4vXjk3YE=2AmOL&<2&(yJp(YohN7w-45(6L36!qqg2wfi{WREkw+PcbCh*1r{P?EsOwo$$X!W{vB$>gEA9cp+jZL+fXm zIzb8R_LLHP)Hf6^%2EiYp`-Aa*O-%1;u%Wn%S_n?9c4Qu$v$1M&IHY^ zzHPW)E{1-1KD?j{y7u(ZDBK?7ZMD4^7m;h$-@|B_-|v`_^ij3rtRT0KGNTI?ZdX1m zGZI*IZs-w7&Be=%1Xk@MTbB#Vj06@+1-$SD^I@5hz$#ucCl{}9Ew;O(g16QWmKnh7 zSf{9XAfGA9$8NFJjoEtD(dbFLK2U7~AqGOy(;T*gmr?t}hw!(}Bs(~brGqmlcFc8b z>q6j#Gyw_?fV$2l+NF98F(~*mv;62~E_~eJSXh`D3*DJ8c8jDDlGkvPKvtqT1?%Qw z3Mu4U17f^qSwjn~S?ceuw}y_7?@hzHF0{p;MH;9E-^sGZxu#BZKB@B<)LC0~bo6S} zX|igWta~qq)eDXVP`was^kA-z!@ZfdrED-IFUypytwTSj^c%;rXG>+zLRq*sP6$DG zUU)nnXO>pHM#T$H;Jq^m*694=B-B+@&(*4z>`^U)exiJMomG0X=yf-qeBJokw*pCP7nwlQSck?1E30T!*1L<4Gc6CmlK`{D&3Jnb;PS* z4$s_!vnJ@mlaMh|tj`}Vl6-#$MnzakE#`%npt;C-HgcNZof#W0?u6$%Fj5*WHHyO} z(U2#Mwww%@$zcz!zc=g+7vTQ=Y5fMnK5)$+bQ;A{2O%4UkRiJqo{DNl+~@(YZrF|f zn$lW@A|kC43?B0RQrKI=$7lRf!!vY%CBkFd+GHJgE!7%Lu^zR~`wd--{y+9F=!OMG z4cj5O?KS5bS^h03kr6Jc7Ok5r^(E?ZLVchO0t%I&@8^kAsXjdCUS9z|7(B@3kKdzg zJ3Jjk2KeLefTbL0Q$>~2c8g{hCewU(WxMxtL>$HsJ4;K%W_=Od7b)Bn9t_> z7tBa}5e&W1@re#t%x~m}2_rLrpH-*$G4!DfDaiF-n33RDSdy6w%ZvmT?ga3%ExEAL z$k;E!h!0puBp;R;z-wE#pe1PVuoEIGfNvX==X!w>z$chQbEJ!SdYj zKnxL;V$<7&N56tN*+sZ24x8hI{2+*fP?qmD zN}61W84%71(d~U-^1YgjTmi;&AM=Kq)P%{IR!Q00)=*4Gi*-BUDv+UdJJ!D;59~zD zD}ZP`v{Ydv0Ja){J5d^bLu05ILMEOk-WIrZI4Z17-Q-1|0F~jTtbWLgJ{vzYsu(&6 zGk0tBWhP#Rd%u2!7kxbjA^f-FhXlUX0YB(TX|1%r#;b;x1JAg>suJH0t(zqvhOl}^ z3A;s(Him*LP|D*zI=_x4T!kx|Nu2~gB|eeHqXsO@HRKo1naPoGjWUg85R@_bbwL#C z_5k_VIs(wS{eT(JZ830CUS*(jENCst9@(!fGm`$Mut)WSWkv!E%?IA2`@u2;u#WXx zP=p?V`NB3xdHNbO%=e-hisxF~PkQ5vmAozCb^3gG2uNlin!qYehE`U)v^oVz{5UDE z$#XUN=UvJ3HTmDWk{4_8Z@QAlXKOlQwT3uFK0cx8UU&K?O&?6sz405Bc+9i6qY>>* zWP|7f#!(ZCWLhf6L?^^ylmd1DF2ylE_H`JqVH>gCIjG3QcBlUWAZZ`g*epOTbkO5a z0WQztMTdv++4tGVY9A})NZ*C5<(CWZJk|y8SgW5BKD-^|WC|hDeLqrQ^=Ky=Pg(Z< zZJh;QDg~)K`>68r^FLNcr4^XM};t>Z$|3j$jf&QC`eOd0+YtA;J((QYrbwyva20=4>8j zYh3rDJ$*UI(F&Z0O<9Lyn*8GY6)noYwnf!I$Z^~~q`{H6P$2b)sz~Pj+t$rOlz<7f zEx|)c6`F+DPbb0^0=c4s3Rt9=(6KD0qZ2->fkx#>OF`yQu%)mi#527U6=SRr?sC!ec$yoVi*Fn+_uk_o4q9Q281-S@DrV#ykcmLpH{ z$^m_6xv{vMXGL*)om%h;;TlnE&AmLuS_!jPBksp0;!!TOEt>9Z6-_azE}2en!{km8 zpplei6ZMP!I^he*JFmLB5^YZvu~Q6Qcn^S7mp$uhl*LGs=#;5#tMIp*RMKc@CQXLa znivYys+ro1nzo{&YOOOJ7t?i&yfji^Ufq23x)t=Y}M8>l!OI`J>9Wk#3+!3Q^xPssX zW7)zPO_x68#41c;v)M6+G6mFbcQ8#$n7&o8uI#M;{%vXHv*XHaI56>9F^#-N*O^V|#S&^zCAR@)AkXIe(xh7&En?xu7NF=7)y ztBxa1cxT*s*uGgY4#!oo>{iB+r^Co&8*L|*SlYKVAF@sIpC2PexxDgXjC83|XzHo^ z?zHZqgf6Z7g_TY+f84Qch0b9mbP&+-(V9i*PAd)dpi6GGjVR+5#zw+h~1R_KFU$?fgZbB{LyX|Mn!EwB)7d!BfXm`kb(@4jVc;by&xwJiJduUoU(* z-eu>8o}n$9MxHfNe!e8-S&tm<&E`E7J^lFAo1UGIqKiRu7%RA%4Z<(LVCXk4mP-h) z%@3c$gj02k%dVvZu&&$@(pa2=IN=g5FKI*|ycO{Eh5d4$i(J*!e13r<`RV$ju1(dE zvWEOJ``qF+s#BqH4Xk_f8h!%{wmEyl7A#Aq-v+bVHTHl0v@|vo2o@*&TcDW)fm{{&Oy+1Y6;h&Ev8VTPk()%sNWPXwOVwI(ST8NChx4H+X>h*M;#y&5MfbUt|AGn z6%ctUkeJqm%kybP`?+5;*{kO?5c4JqtezV>zbSMMB^qQg7KOA^YXppAbgw!~mRn8}X-4z1rfd(nLenGcM(!)`UY4m{s8?7|EX z1@7iXAJwFJMLf-qzOGN$FGCDSS}3bnxCwRxo2(hvPw<+@Ey!T~SufVphoqu;37+}A zct!_1TIn@T?jZb#j&@>J1Z~uYlQdhK|5I|Qn;(PqhSxkOPTnVUmV0)KB9=gNwuM({ zbFzGUm1$u~_{LTB4koc5a!-Pd(QetG7MJg79s3BHDjRl_a& z^#x|#@Y_IBN;lr?hBLKK)EFr{VL|hz4uJm1UHB&;2@8*AgYM5EfssO1k|Pi!1;x#H zUI53@pBWr3VwJOKRyofYfo7wldWOZ=@KBAG&LRg(V6kdmX>N3xCP9f*TT8JLl|&h_ zYARd9b?sbu{fIT^edaZN>r(5APg-ZJ02}i7%(Q%aW?Ls9?-1$J+TUdf1_OtU-iLj~ zzX0Wx`lPdKN#eLMTsG#YC&!(>4R>y(?#?%pbk>9Ba@`%{&Us)>Y->8~1T(}grT*GA zs7mL-iG8fKv0j!P58QOTblhq9;ePP%QVi|WeZ*`l#)`CDGA@R{CS*(>6ch9jESElJ zB(R4GESB>OEcFw%jblOTQ-(GM45u;I#%@5$d-~^a3EC`Vhc2>GS0?ehmLbYWdb2XNw!M= zJS}kW0oe_hs4CeiEo1x=Lmc8rtTNvIO#aYyW?FbR$YsA}e}*old%4GCFSkN@vT-`u z(fuQ3eh&`%vvYx?m$xYcV}GqQJCA=lA47NvV-E$P@+ICQy72OSmkZeZV_+&^CY)dp z@JcRYFVf)fU%|NEx*G@Q)t%=vXlxQyBi@DW126{z_#4}~jY!{+=vQOPu=ItrB*`X~ zZ-Yq9(0vvWax(^j{4jfIdiJPv_?RK=g9q1|4FdtpL*42_$R?!58q<2Lv59D@HBA^$ zbV)Cqi^XS{1;ZI#-c-3iJv_C(cv1tVc-5AGN9e1hC%3OkYuJ{xWCMQa|62i!hGJlV z`M3w{YG0@+=pR@ZKN);zUm}_RhL#y#oTkN}e)-hK43fcxU=}YS#3FKLpY~(ij#~@L z$d)>@{vK(~Z67ldTLe7d1)G-(%Zvo}aDipRb77g0z^Y$&Q9oE_B(Ug5pn>em#mfxw z0pE!>A4yo_0}@G>56C1%#ffk#7Qt?Z&mtcK_yWc~#QSzFvO_i`1PCU0BH|fnC6@ou zdwpyoBtT=-Kq{}o#Q?1@j|OM=8cON?(M`yaJIF=t%PH2}D-*F9>1m%y#;1Tb->8|$ z)3Lxu`Sn(>v4~}Hev6tIt_Om~7%b0kper-zS(3T|sZYf7^C7ETjmLRY7#G^Jez<=7 zv~dks2X)ZZm@t%(zDYZv-Rh<;=F_NET9`-QfcPpztGF6VGB_chKt{!`CL7+5S*1n! zIG>tMTGppWC;fqV5VplWQckW#TW}P07w_bZ6YH^N$KZnd;A0Ko6@ci!pfY=kHM|Ni zHyRq|{XF;HX=Lsx&X0yAA$Soj_5AQw_(^8pqu6Ss`qr`C{u=8Y0(QiWhJ)kizHY2y z=TEBs6(@Kxi_ZAP2KN4lzI)BFXf-NxqC4?dce_3dW$hJ%`m&xlCQ9{Cxf*?egq1;c zd2X~|4)0^C%f{s_3)Q;8*-;bfszD9#Y9V@}_DbG!m4Rj?JenDJixrpYW%$z;J1g4E zF)h*cN%RZNVzKF$pfw>}%PyhC9#hG@kOx@|1kfWy-OJc9Np;%uIgj&ILt~%KVJo4!!|q$9B-6y^|lT!lh^-E|>8#*1nvV zYWoUaf_u?!r#U;Cf&ii$@n`xzq}+}uJ)vPrP=_b`BQ}ZsJPh^PEh2Q>!Yp@If!ips za~MlOFU5@@kJqa_#?!5SAB%RG}U4~l1O>8LBhk*-v1{D~ zmV;c7&!5tq-OH5H9KH;diG5VQ3%-c5h%@P1(l0zFLyPhwd?9gd*yrvhXyWQby_XFm2oiO=rcs+o0-Zct(`BP0p&>AlV-aLI2RN;0R&re3) zvC_uGxU{Ix7}Jf~90OR@dl4_*D_J2BSll9D4dG|gr(@mIvDUZN9hsP6p@Dz+UcyFP zkE6`vsJTJ7ReO@wk1)|?mq?;7v(-cD@@N9``5Cjj=8W|LICl9P51+w#^LGmx+sxN}4WBq8}}QZMYS9 z5Z*_>JPxSCbc`5sf=5Av?{PuUZ{p?sKf`s>Z8~%70}Cs*Q=D6yehZS?SD~J4JZR=1 z1gQiYr%lo05WW-r9)C;Wp94Pl3;dB;B}X!i_sp?YACvk>r=4aU)IFww%;ZO(1>_r_ zu#0X)yhu>UZkhGxP(bB3#~L!WKS78a%8xufL3m0GF;BZ~QwKi@Xa~nrD%!sfFi2s7 zuV$Xxz6KZei%vY`{aXQhqSSXSU^c==;dQF6<{)U)BBESj*exQDC8B_dScnrd7(yVH zP$|K{G$t%g~JA+o9FOu4V)^(_rAp~B#SMXxJ zDOqES^7_5nUecrGxrRqPPWXQ?>76usLHo>KH%#|BAL;71&PS}tIv*e6ivECgzGqAO z<8?m4oLT4NbNC0X^PSv-H?z)1w140_-$}jlg0&Vpx#9}V;eBeYV_W@H>wH;SWu1>G zxX#C`6aGJ~^X&uoAH2@DT-AuNg>9hH-t|_R;Olv-+w^bXttxwL(>(I7wH+C;P3ssZ zn32rMPZ3z6&V^-$j44Ag9W7RvUEgu6O~{iv&3v5@vOHjj@S0xm8G5_67rZSYzr{u% zl+7xFYjm7*W&h!+2~BYT{VHS!SL2Uw*54{#R2bo_p4X}=mU-=}n8si}2nw!4mcAD$ zRSD;Ux1)acd{!R30}m^;zq19!AGo}z8yqosQ(Z0p5HJ5A_Ren|X#68&A{ z-`h~CQs3_ELIA;RTwwfrtFsG}!Z-o(?~^(r+ju`r~w8#R9p)XGp z79xheD2bulVlW3u*WwGDEh^GvtUF!kh2x(uYi5XE6cavP1GcD-w&>)VS_{ku1`X&Ycez zzLMp+GG<27hO-0~bGUq1W+bp@3oKl+d{|}x*0Y+JxKb`AHW}=M0%68;Czx$sr3h|C zQg!W+EjKE<%cCCwKvQH-XDYwK=pRRZ!ELCvajPv?sh$aO^+%%?&FZTD;y+ULws1mQ zIQ?F#)oxU8hcCci+Jyz!b9xu9=OpqomOOkPfW!CW4?i-heC`ii8cKNKg; zY>3}2cE)01b@W?liUjKLP8lPEraB1_#_b6LYeR2)bWa({haZ99L+m^tU;xvF z!nUys@438@MPbAZ%Iqc8vFeqFL){bRJ`#c!jFPtL^?ml%lJ|9Xtzid-929M+WbN+ zC*d_bCv0GgfV^|(MK3_hi|*x`cF*x^El$_^Kd&JGtuX|WR}*4kLck33>s&@1C?4DER!&2Ev4>HC1{ zvuqVvD1XIgX(T?&17zO+zR%)VheNh923FS=?D5*v?C2+8ShS=X$2VnD{34{ULsE2o zlAdvLV&C@yY2U}u@?2eGhUjIlkCXZZ2)BL`aCU7P;C}m4yq9BXV94Tn#NTZ_-me~J zpdOcN0X*Xbs~$&Z3ra8e1d?|!wT(MER>XA- zaPemcucmyT^j?F@G)VQG07UvtthhYP9Em(fZvlR@y8jj2rl%#*9uwb2!A5**Y0p}0 z=){_x*z6vDn&>8a5nWX4LPUPdi}47C@UKvI(!PT%3_inqtTdWbAGope_Q>966T{0fSEfzzbiCrp;j6m$vTfpd>!!ga=@<;avMdyn?^6F+GFN z#(h0!zk~ppKeRp5<{lGEv>m(fX3xdeJ2Zu%c(ejDug`bwFZ0@8;icC8YrXu9UiR`5lqjO<&)~0AmD*I*Db|^*yUa*zs`Qr@tImaG zMgj}HfnQ8&b77eQSlu%zG~B@?^(Ju_hn+=dsxhCi{z0hP_AS8`nA-_6An3S%D1Br` zZk^0X=(||xBgazMn^2FWJIczIWP8WENT*Dxa|hwy2K=j^2q_4st8L+QRTk3gYvSaZ zB-bZmfhbsgcKmGe8Dxy<_k|`3ETt(kmtY3y?^q8Ky`26JL?@EmX z4^+4NZew+Jg>ldcp#MIOJ)4GT{Q%P9a$|ZnPQ9rslasb6EeLRekCBqGC_qnhq7UG2 zW)-qU4mWw0taLud4KQ&AbqUp8_*;;jY{~{pO{{XcRo$p@Lq|~GrsEH7lI1AMN=Stw!Er^ z_XSml$kS_4*Jb2swN0o|*~glR!rQI?!%EP4hT?JGxpNf}l=p)VgErPf9>Y!aEwC+9 zVY<&p)?wql0CTOert&0dIBw#(tn~Tul|p>*x2#z=xRc&JfV&*@%DHP@#Ez64A#|`L z(dtT3mJS-Hl!Wdfoc{MdkQjUw7`aihv6g4Hu8{Kw1%l@^mBX(g8(RjkQxSH*>+IIA zB9fgs=qWm89*n-WaTS22jUEn>mUZAss56EBaOz@gFVnc#qAx#MOZl^jwSQOjQVJ^JJ;c6(Fwdf-ts~8O|i0uOp zzOFAc$$#FFY!`!106mO>#)H>bIU;VbzF1!Z z-T@bXpkjN)6eRc{gl=93{&vpmz==Lot(BYd-T~IJ?i$p+3--?)apz#iYGUYpyw`uH zEjdLQSiABE7u^Su59nO)$HJ;YttbNkW_@#`<%?zdH_yY<{Aj&CEx@MuLj2}{PW9BB zHD;F@Luie3Y_~XslZ|UzD#Zmy-H!8i$IP;v#8Wn))+0f)8K<_XQZ+6|PfK(y@eM@Z zJ_J6s=^xnQC5)|G5S9|LuzW9!(n!T(A0gHab#AjMQa|2L+OYm-%6%d&<_4m>L0^j zsD-f;k6X)s&}%37p7e>}F~;n8%=mBVWaMRY%uGaPk7F8l8^ST`5$m_|>&F~M+!!HI zPXJOwbFv~aoBXBcT?KsXd0GT_bED^I(mZVj9|c)X18iM{W?`M-D1|f* ziK?RbBA9KFklu_TyHpN7iqfKN+Rvvx6f;!{Nw)D@;*9=|k&HP!Em_TeRkl*<9y#=C z>pJpOUBC?wlc{d-an!Di;4ZmcY_r)V_hGr8=W>Ib43x!ScWiO8sx$~U5gu*FNHTL| zvH?#F2T*^0->6N5ZN{pvO-b@5@<}>J(v>7`2^YP>Jk*9oD_m6wEYv1aHMWK}mL05goXMQw6F(Ix@~2GlW>(cLCfOH(fFW zSoUZ^4VTud(Yv}bOwAD3z`>N)W~+Qb>^mN39k^ZPWm_MxN*{~U-(qd}zIDtB6zO32 zemrpP3B6B#+Et@vOKCcjNsUa!?tKApYa=7HN=Aj~Rsza!EfVU^{*q)TgL8NG_%fE} zJSDHR>CECf8HWYdM`ty&uoH`Du@j4zuHMW!glC-xPFycG@{0i3fZf<|M5Oo;uSH|k zm>7SgVW-n1LJK`&nxy~7wQbefq-q}%c}KL=OQB;d@QBhxu~1%ZtMAoTe>p~F2zQ+5 zdT>ET0)bo4sZEx)wK(saBvq%*%O-EdYO%O{E={8Y3(BYFyi)2NVt?$~a;aLD*S-er zQm=W{#wng=4`qEOjzT7MlXKL=ZOgg=Ja&9{uyj0TY*qpPF#20};~#bL0{nyDZLOaL z&^h=on1S|OeFI+>^?gbBz9#&=CM;t?%lg-&gMVPc`mdw#{*(jeA1ERzHz(dt4n#i` zL^Lpe5Tf8mC_g^9dTfq0K8R}gxb+6bT3;$CnS?e;McJDFQEJ9M;yejUWAl?(uN7q^~?V_cro+j3$bLF;GJXDf}fBpn9S=20qW5lk-25vNk4buy+xef zTnqjgV4`OOGFUP06#Uc_HR%A9U%Z)+v4cf%TD1*%xc2zGHX6o|DCkH-=1EM=6C3e; z@KBZ0k1U@4zmSY}|)t}Ew|g@Dbjx9Qtld1YnRmZ3(Aap6h^-%f7rx%iXnY>ZU zi1=^veIhX2{1~5&Ws}{HgN1+YnHZk_8TA&6djEneqMB5c@aKB}ect~<@2M2wzv?|3 z9sUycc8l`D?&Gk6h+y=0AWQsfyG0(3&s!Deymon#Lyc)*V$7>~jTi$4pMrlQ`r!ZK zug3U`rVa68QXFeWdoaHM!TB;_Mj}6jMT7ETnb8G{2Is>vqYD-c$%kb|0y`q~f?@fv z%n%(q0@nBzz-o~5pCCAWSs$-Lw}>#n>E_;uH^+-EUV)MM-@&NhSNH>_{Rb|UPUo-K zTx#TUIiNG{-Kf4NvmT4Z?t@9b^q8!C3=!)tykRUWJ`@VNIUN?@|8O*WN z=nco5O23q24_4>#ZzKMpzsry5H{su3;9m{Aj?*O*e^wxk|Ej!)`C^Rj4BW$OFzb|nOisw5q6>2Mc`)t2=VeIq_s_|MI zy$8gg=U~DU_ZPGi{e?NP4SO2=|J5WgQj$-sKS#yoSG_+K;w* zACDW|yr5i81iN4vA(z=SJsT#e!mL5O+b(||0%6wlzf%^(%#UQe3q`yDuA%qje3b_f zS!>tF=ay&Xkv)S&s2w-d{u&r#(&G&}zd{T9Fr+gA`=5NaOc?O1`C&k_KD^K>udrsbPjD4(>ge8> zV9G6hXL2nPrb$!07SL%CRcVu|U4~Af>>sRG#E$SC?yni>~b_yJY=Y+opj2{gh2%X~F zjXqyK_f-v7AxlG*)4v7FG1>_$h;^_uKDv6U7+sBWcx7L8_dz_!3{NBmLH!2>RW^b{ zh-J7KeHt*5tyyEOz6>b6>ddeny$;i4UrR|ldr-(zS4-l(|?Nrs#5gi z{IQ~(dH~~K5RhjF0rzv+7k9o7N-P`eo$yes`q#&z7I4|oNAOpJM{(Sha!q7cZDVXn zcqI?YD_g$ravO0w>s(A>8e_h*^C%fu8VieeNU;|GiU|vRG~V}`_L%Pt)~yndbksB2 z#^}Y3LKqHAb#Xllg?m7p1B1;CEGN9DE~)I8lq#J}E@ZszgHv@l_qVrWozFDv+C+~Ly;~jl@|3n|&A2eDK?pJ1J4GQ;5 zhI_?ExhUE&RQA`uHYvSNVSulcCiprVe0>tk1RqtP;NyA2t{|Nrf{JlhPdJM=IL$1L zk@J&n)wP)PR`J=kKY<{aoe?1(`Jp##yzx}%H^Q`iVbq--!|7Df!fu|w=>{z=@6s+I)%emqtbX4Ov<$}9k4o1v6@_1Q@_JKygZW(b9KS1mnJ@+NCtj!Op=gJXVP}m$XNWqRQQsJXJ~nRa8q>Id2d~sGi0(rIzTFJKF1ls9r8)A|y`9&9LO3K# zqViNyq=`9)BxoOu4rY=xy@-8{r=TCqoL(u02xa-v z>kfghh`q8tUS*0thX)-$>h$gLtrs_k+*3791i+ zYXSXj^Zz%72keRRGcZBR~EX z$s{8uFU5R(v$gtb)`I=@Usyxlk9_|dWZczdGfIbNrAnSoGDUd02k_H)pV>#O5V2~1 zdJ=!I|0g^USG=$n;DVK=gK(LdJs7l}Ly*^CL z&N#Pzgr?P|mPCgh$>kNTFcIj$NZE7{rYD- zzaU?B0{o~%AGyIvw6Pc~BhCVo{#k@7VwY3xC}?6atB8Zq8Awxexe611>KrbovNJ9A zqklxE=|stBr_o?pQZsR#)2#A&*5YnCb6ptzy@hU%vnU3mJCBYly57d)tWELbMbVpZ zZ$^To8nt#i->*YbE&5NwMC*=;nMyaRzC?svDHfet*aUCGRrs@mL%|^SIv$2eJ;$i* znK;v@p=pz9Z$0aspzryhFNtL#TEf#-5J7RLR|6Lp`}hzdkl}|@_!B44K80(UFupll zCmBzArvv%)!OS_NC*{zdl*3HQ87zfez{r8p#LCB3KEtKJ0w3k0DQ()qWowP@T${lARq0MLboH;O?x?u`d zsA#a>@Hp&e8xbftxeQJ5z?6@HS^CEH-uD2rc#w{IkP9W#iGBhQCp!ArSP|nF-4V@k zqrFJBTXHL!OcO1dta>;Hb>B^W!&Yqq1(!g=>gq{s^>pMTpebj!9C}<#N_xH(iFLwb z(5Rgx5B^RyItOr0bQAt&UD`@=wpI2WhSkT%w%ITN7y4u;n0oP<1|sCki8Y+##%zeC6t~`$#yxyIKv=ZT;fl z3|@|z!rc>$CC2zyG<)%P^pzF+(Vt?Np8n)YzkCVl6f}%-U<8?d0oWGag+HDBazzW% z=Z?P1=X{v7E(24by_28my9f;6opb5N2o1!ynC$;?dNjfXZuA(`$8O1OcaNqI?TEbD zr)fSGAD{GD^l%mmwzGTi%_sIV_V0TQY+nCngZ|k4n`^9COEh*zdvYzfJ|;_IaW8`Y z+}G0v>5ps#t-*+Aw2++cpm8G%u@yZFO*flp6QftCxP!BJB$hL0056x^f;!Dh4T#cI zqfem7o?-6B9)_bbc!E4}D=%D?L-mR8GZf?Z88V)W-6E@s9Tw?WzP@$?+l4yU*^U?B zLtW5CFPJvh2-lf;L(w%rUW{h&S4?Ic1gzg+HX6&Z_|+3hPpJla@T%1{`ZUiA8|Yv% zkw$v#+-F{~LftFkI>o8(sw{D;?Ury-4Gj+RpD7J{+Ixo!^iQ})gTF7~-+cW05&kj0 z7yDT!vd`mrGp-9vI@czb;@?F`+l7B|?0~-FtMGh(kM4EISPczrZjU1Nv$=MQ-7TXJ zmEwj^fr6s&$z6AbVJSC;M;{g@x)eCxKUjDY8SKt0nu!xWg25if-Ql~@G#NIFF)hlb z`u6d1=JOY4DTe;|KBWK)H1Yw=3nQG)$|@Eqfku$-;?Am{MbE!^S@yIA8B#FK6N$5z1mk;p<4?iV>ODlVC(-f-gafGhWZ`xKl}Vz}b5= z7%UEMH8??>ibes4(CGYC-V}sLEo9fG#!UXiDRI8^mg>Vhi4dQIuNi=! zbO6-PE{1cU^NkYBHg7f;!%;pTo_gAvBJOs>FX+=|#Bz>574}-7qc`9-omF!o!Z|IT zyqh_x1hQvYN1Yn4JDp*Dt~xL)wwucR&c7U+w}a0w@8L7`_I}i$TzB?jw%x_Fi@}xZ z)cJ_$gNfcqxjN$4j~Olx`w#CRFt({SvHTKZ|GYP|Y%qEh$TGGkvQIaoP`sEjj1M)B z_{07%4uM(wK~+0(wdHM;4W9+&QGy zm|BvBs!^<{xQ$`6#!{ALjS;Nh=~~B#hq0>|U5jGnGzvEyN1KMd#xaq5Ce~}b@FX-l z1re+5VkBdjac1F2Df*FsDFi)(;kcpnQL(+p!WVJ+lUpHExmFUK*Xf40WU115fS z+<<@Dz{01JAu;9sC|k^_tXJ$)wwMKV$@W~4?HS$>Hd5A)DG$33?>L?^#TG3XgJL*^ zMuwlp?aX3Gb~7bA(7}$lt#~793*T0!OdpH)(Vb+CT-X~oA-xQhKD1AI5AUIOv(S5r z(tD)POQ4Ef3=1ID4MIutxY3-Ot*!$tz$1pvja*Cb@^FwUoGHieewi+2)-e<6Pyg}?I!OF?NwR@ z{P>PtuzfvIuUoKD?G91rDyTjayI2FDeIl*LR7vt8oUyf zH_%q%_2lo91C=`W<=le)V~%A^XzQiHk#CRuX)jL9XM;Zl@(NyBI}@yNqFwka=2TzK z<=mZdN6r`ETN)Z1rNNHd(kDM@YvvqrDQU{P)hG1}xLQXww~kJji5R9a>cku|*nkS> zco>YN`G6SK3HTwX1QGL2MxOAA`*QsHCY*65AB!4t%negl#;NX@Utg5u;C+DEDhsW7 ztFi%na;$SPX7Gmt@qT}2^kHh-i%|D&EN8eApZMB<6@4m6L%`6Tc=tPy_VpwU3mNXj z8}CNiKO||0^t%%eT#B@xCu!qM+l>%m1Y>FHm|)t?@Ef98N!k*oUG~oyA?7D(2>rVg zXMP%K%agQaOxyHYq^(WT5H8nqnxZ3;H25AS?W81al4%o|$wp@-X$K~0mn3P3vAYwq z4+PxyB<-Li?e-*XCDXve-O)Ws8lvdz`l5@R^I%l8PrA3sKw6R~|$8$!0leLNd8uZDYoR^?HU zbF_pHEy6q1@J85*+7@@~R3%zS`P_u(+wB%vUF9b^2qxb!S6*=MpD(tB5Fx^`dNK_8 z#JtHg@8)dYDDu$V_rGIH^LDoIQBIGK+A9K(45u0v0JIbSx7pKu0HhRs)TSk{11L z`>PXLreA}KG3gcVd3wpP5Y1+7QYG$5khCv(7tgj3%I1+%e8+6A;_)7K!ux@?!NY=w z@op;@F^Fc}_izS<1*1>ivmAMnR}Sbq%Z?i>5nUMN>?wOQsXtFu9YZXe8y14GPA#hi@bAyz1&ov^`bCPBD1lI{~D+?8$ec zvHqLrl&Nj2@VA>((nztGbVF)Q3@EHk4cw41IO{+}XdjmwOHp2-aTf9~>s;`y6 z4&RsPbcfxR{-}DV zc7}G|Z9?qidTndn*a2UT!t|ylqj^5OLS4UJl-};etxmdSu}kd*Ms_0$iuV3({1Ttu z&Ap%w-NCynt8Ir%C`ujmb4;iP-KrH`ql5Nm(5Pd86TUfCeD?EMaaqSzmj0PGn*11! zX>n3+r~N|n+2?GN|JE2W%H@?8L!!r(iH+&0`|WAni7X86cW9R2jpMHvnZ@jIyyX~& zaUExqzXy;z5aLs>m~^Y}-s9pe=XHTPIGHolP~@8HRp*b=}N;Zm+C zKc5Ah()Jch+5#zMna^#=-D=a6}8T+7l+E&SX zQ%p=;PJIi>do;~+M1PczN=u@6sEcJQYy^JMXUVW>F!c5$owVeo=fP7?Q~I2+uO1qn zbn4+#(~(zSKHcdUl)menpGIEG7$o$F!glaFBZv2<{CsLU`|&F;9cl8jcX37){E#X_ zc_hBOF5H_*TqSydGl;_|9;g~NQ)J@@Dqkk5WgwnJmkl)2mZL_>i0gTeCiwI`XuHMo z!OOF4<(fW!cJNIE5^0=wP9lx?ds!`Q)r(QekrnndSgvE*f_AC$}MfxnYOvTiZ`df>}4C|>&>S&)azk+V79&_U}J8CuP!3Ny6II-`mK@fisn zz`N*fi&L4YbZiwca$0C@JTH$9*LoS0@{Meh+WY7ZP|?OlADk2{x7f%N-(pWre2ewg z_!e?6h$n(Q9@W)wa*N5aBE-yS2&uhP#Kn|4~ zv&$LCRo#%-SIHtrd>t|{*cr`~U^Lz;XC2%OiMQ@>ZWA0PzfBr(&x-M?p1G6NHfGu-yy_kA0Azt@x3GEzD zv+oMAirB_w)5(;)bn+!Hot(`}C%@8kI56^49o92`zl)Sdz? zxUf08=6s}b8N>HBV2KN{bVRHD>QQ&&ezf9Mbu)iuX5L`*T7YJ@gU7MzV&me`p`z^K z8N$mPZnSKREEPeU(!h4IHnQc=hxRvI>v%@g)5i?nQJ7aBuqXclFkIyv?-M5u=+Sf^(@X zj}vT^yOU|d{6Csv?;t6DMi_zAh!{|->iv~_%=#>kMo*g zaC-qBi2;K1sf1hjhX}>K%N?+MG6CAk{0m|rWPK^ln)Jf$C}&=^MqiZoyFfMUt%tV5 zkmjdl*Cr7q<=P}Rhi2y%V((f^jCIA9SQT;Oov*8rftc?#ywuv)@)A$*ui(S1Li_nVti5+*G5&5 z*)6K-^uNMBWVqELs1nEe>1#|9PmB88nGXF#Iu*M!{ccHT7m3r;_<_^lw;Gs7d+%6p z1O7}Ks0JHff;1&{!*01{)y+9dwH%VwCS3g*C2HpdU|(Zy+$aJ|k^&urZ`dNGu`JH# zQ}{dC7f#S{J8l&;;ftgXP}NwE7Hsi0ZjU4H!GJcLnT-*A03vyk6Hn?FD2a`; zvZMk|xG7XB+*(5=Ho$e!=Y-dTz&aNI60)R>`sMEc4cH?T>jyi`#`}b66!nI?5)uPY z=7*QDQE9Jg@fNc=C7TZ#5jb5_f=@$HJH9O@WoK4TM(=>Gi_32y1^eZ|PH+Sc^!tJe z9y5vfm4gr%l^)TH@tdsG>Syy=e~djm7q@Rs+r@s{ywK?H*#Q(6Tjm=J@HsBrHAa*O zeQFaH3;fb1)fT4AESik&y0C-jOlC|XAthw5^o?1Eo?d?TcQNOGHaI%#JLX}|oU9NHx_rkxMM-kA2YuI;6rehg+k zS=wpBnwYeTZ7_V3@36L0m7|_W0tn5#RtER2`=Ns8O2_ znv~*E`+`_J>N~7IVP1h)TDBZF{$jr zCY581NfotM3>;%jDlKieP4IGzF{w0;1_K8blS-{IsT@>HDn}KQ%0b1Xk~t=oqlif* zdrc}w5tB-ZN~-$C>@sgBujKQm!CLS|SV?}(iSwLbHPY=C4Uu7VY{$jU1_#H*#QyF^ zxs3fK&G<@)>H_*3jeFy`r!b)eP!r0c^~8i~I@s5i^x4`X?Qu*oE#z&|h9owuP72#0 zvEg{%15b(9rZX%4wyU&P^n<7R!XEPc5%tMnGpSXVJD1``%A+ufTgCa8HpcAWK=J?! zB+Q+EnT*lJ#gcPSCTFq98J~SA#>`-8CTo0loHrqPE3Br1T{;MN&-Yt^5dQRO?SKhxjF9IB16 zz;sA%#7dvSCy*N;yotl@52dH#aUqcTo@Q;3tRHf0D8^Yu$x^W3No0i${vj%fjei1l zzl(M2P{UrZ5zp~Bk7*}vSw|CJCs@zs$W!=TAn>PYKyVqF$WXb6&6MGbfEd`G4Q$Q7 zm>C=P^oTYDCvikuQ4g$Fl8fR1${9E|B8V5hK3Vz%>H4FM+JxK5&UWGmk+jiHcn_+? zZnV7CI^lQNTzZD=v-@RZ`|&JU>vUxw2r0xqni@Fkgm;1ocp3G6JWRh3HHJg@gB4At zhgTz2eKYvc8vhTUgbRXo-(4#ppzs%T7-1P*BrH!7wrj%DBmwdu#F8Wd0%5|UB;iKf z#dDN-BoIG4oQwK*!5l+3S&1_m-hm4D4d-Uyis}BW@I}A}@2?xLI4O=h{Vj;YR57xq zBykjp0c*KceahADLpQ|f6jgVRmqh`aS`yzogJW$U9CI@`YK0s;o4}6@9(>BAi#OVa zd0lws&gvp+WKB`dgjN0uKkx;FE?k%!W*fq_rCga%&if-1f$Jxe7x&79@cWdBlO;PMHwb{>p@1ZGU7UaQ$TRl3tk*exEXta-A|s z%k8I31V^V#QXEf1CW5C^CMlk$DHFlfDHGz_UzyO_?T<_ZuAfZq?Uf1P_bC%8*C~^< z+T1;cK+ zFBq!HzFc zyKVwh((Y{hof-7MGHDW8)-;wM0X@48vpdSeAC}+rE1;gcV;mXZPhYAJfjo&+-^>U2 zfp0{S={w;9wr`QT8GpGG*bw)?UKV$Bu>Kr-Mf_?hF&Izr7&K=GVm&;i>mb38eTZqk zz8Gt~%@$FIWmE$HlLdEf2E*`f;cWPwuLl7Y&ne3OkX zzbzFjLpdK_g!K1HI$O!Fx%29TuR>LR9p6(m{xSEV(6@XaVUs;A+6Zvb#}ra1_d$8O zvjuI&WSmio`AhTY()oCg-n;>oqcYNWBkFuV>O5dTzFvbfXZ+P=cYIB_4O5Xx%(SkP z>-a`Z0N4+ZP$_nT6??(H4=^0B-GQy7U~DI4i!~j5sY>cbLw(@pWn%X$UuA8-c&oo_ zCphJ;I%U^$a5Zu_X{#iy8iJQtGm(dI4;rO++l9j2x3c(dB1ulKaCb2=yb=KJcq9BM zuBdfJNxf=yi4A8W=}sQpQur~X#qZqKt@T&t@jCsUeRaFkD$7;7NxbknuODU3rU~8* z`fd4$WBa*r8JFKylRb$b^T!~fuY4wq!0Z+a0~*@mhY|m9No&#_k0FpZ&1553lgz_a z$wA7dv(J+*orm3oya4hd`YeiOq8qHVFNrA_ThdpBdI_SQCi`UL<*nON9>wzm&}Fxn zo_-2bM6GQ?UjhC6#cgDtb=luqx1&(nXG;Qwe&w{8(btBicJ+ORN4nSXFM$&;dL?}< zp}p3=6Zq^v!G+JH!512sl}iINga*Q*4WM^-KUih}*1-w$7EVvoJ%H(6LoI3E16-<4 zy8lqOp20k^wx%;yAHWVyzPpB2bnw5{ejXtDw1HWwHF)er*#`^}}$2-Js5lc4^(}D+MAiSr?Cg44ngez)4GqQa?0Q&HS zS-E^+M$%S^f3{xG50)9y)>Heml>m)3wqTI;lg2VVx7{Rt4XVbokXfm;q=e?@%lK}9 zWZL4&IUuMO!LfT-dJf(X;LYOc9q97y7vWa@f>fW0BDc-V=xXx|`@u4!3zpU9;$?>L z=U&kH!5-arLW#EWOve_{HW5rD-Axxe8!yrO#({eELJS*z2;1#T_R)5WRLg5l>+psW zzT!$0jb+d#-pI+HV|W9!QXkELmH^5$t0-+q?Zp=pdqIAw++Pelx$R=pr<#p>XCE(XC-;B&YURrpT00vB0j#1;hv&k!i>ZT?_)^NStLAFQX%AFQt%8%&#z z1CcwLkGE5j<`33O0OeuzJb=D)O!=y5e|G$1njM{VF_xG9PO?!(_Y|=d;BB@2ATOhB>~)2*a|VQqqAMfgz=hQ7*F1=ITw zeh?4)g0p~;Sn*9QbUbsrRZ~I?roIfJ^>dNKcCX%K3x^s2mQ62`4W(mdacl4oprk&( z^EnGyAIv^cJ}%Fh6d$KPV(+>SXcj!INXI9(;{CGmiPb-z@7EVNHE(?U(km{-;)_6e z3MHS0x-r^?C6{rnkPz0 z3_tjxDC7kl8JNELl3`xBdZ!&-5(7Y%>3g+K;{bf|2R+WUb>V!W+Z?ik&p{l@&_Uak z6CLDPA-pH_ly*u9559=mxpYi=HFb`O!UcT@bxhuDi)R;X}q> zsMbdVqE1(~Z^qv%Ki!-uypH^4Hql^jqVnndOz}96)Dw z2>A8vYm;qYDdAlD5bVWd#o-pxF*RRfH^$Fm}?BwOdvK z`7A~0@c+X5iG`G3Z*Q6Z*pD*kjPgT0b=Je_7)V7Q$j*`Cwsq7&2QIvKKkA@Or+WH{Icl zQzVLl2%mrXC&@qjvTQ#3SHVKK#`*;H0tdgKZ3tYj>gt*@BtyQ`pRH9^a3(bz7G@6B z7kT5WO0}&aW+#|qkF8697nW;VadOj|?>XEkTP$q_(4PQ{vbaM}OdCaAjGn~4h&qk2 zUC7Gh_aKqBDjmlV$_SXaAF>mj`qe(=pl4TsEtDPI7gwADacIQ!_Nl8N`$<^N2yT8{ z-UyH$kszqgiF3lknf3!V0Oj)A;L7_!$3R9nE1Tp<-wi5Uio_>u5uEaaFLdyD32=Q9 z@R%mIAfW>+xdeCMp1YFTxNcYO_N%kQR&p!AKKh8hpU6J$XxIHWuvx0;Y*Q@14*VW+bqv6YVD3VX&sD(Q0Cq@rqI=w)$n<$BesjN<7#v<2B59K~9M`^vie`Gw#kQ@xFc;pJc}Ka!T;+ z%iN65u*5w%CBD!v<2(H_e#wj%<)Hdizl`z~DDmQ)5<~qm7BJ(5IVHyXWgN(iyav|$ zWvpXHE2oab`emHLjNLgU&ghqMIWypB_bA*g{W6}{FXKUGAb!$=>Y?5Yv31E_x#%r` z2pY6>v{&$T&;M<`5R_^-OE=Zxa(R7S|;C*q++QtUV`SuH9t@>cl&* zs1e3%*qPo2&rB^>xEnSMN9@(%{lea7_G)1t*YyB1vprlmx0970fIb_b%`e+6(%m1$ zph2OVzRX^)P88ly-6|V9eFEr%4IQ>IAt%w{YH%yu4kFrbz@y#bU%$T8+j%=AfKUx~ ze*F`Mfo9o^A$9nl-$nwaLfnKVYU(PrAtRsE5n{MWx z4=P_l%&}lO>&W_;9N#nz@{%#$ZapH5QF=PYa%P|nswdzY#^*i#V3{GhIR?BwVE5i1 z)2s*at9EfrwYhiB`Yd&6CxI~UEql`eID+Gf_CA;t3*Ld{xZCw?yZkn!F~7Way{R9q z%n(|6t^;V{wtJ>&STEUAmse+c)|Dfk>b(tk9n!RXKI=D9KgT)*KKAOe<$8P??Zl#k z-9C-JuMe_&eVWeMn-e_`x*{?0lg#}5&}N5K<& zbo#yQLvQB2zTN(3yv=%FFgFBE^@{ShTTIKfDFPhpl_#*onG4Gd(A>=jv;;J=Z1f_u z(8h%UY?JOjrqq}V2Bqy4!95@f7pb( znIXkTrMSq&wh)<-pDkaSX@3;x?dUb2rTsCvrLWNbxZJ*lsgKJohvfDr{?2wR8BvJW+|6(U-u<;5b+ym4ZqAR+1_LF{wXIQbiyp z)wwFhAQCgF2PCN?F_XF?Nu}`ku1>-FhHY7xvC^hc5kiFU@zw(UayMMUX$MwPkU&q% zOm?wO;+s@Df37T~X&gpj>0`N}%v7160lvn#3G`{qWY~$00W~H~!5IG`n8bk+FnT&B zO~E)tC74WA6EONDCQYcYTjZTI#}3YiIGUpvW4P*L2dCjN_%*sr{h;8*LLt+`m*5s% z3y0eV_u{tV6f>Ysh=3~E!XUw5DSQ~Et4IAOLYy7jy~T*lV(vTi+(Il)OOzn9rq ziOuRNhY7Th3a2d`jtL~IwUiy40=gSlXi#ya2zaWZ;mF}oGPpU6R~QB3d;}>HC=#(o zoM|CN!jYQ7c@a`1s3$4X5UnrXr*YcA=f`Xg^&P*?F;I;c$D5LY!rpX_H)018`+Ww~ zHnHF7w@{sk83Cqxexnkdk9$3#66ROVc*7=l>x;DW(cd6XhVDk-M!$?7n)rGEbxTq* zK=L+#8;x9T3N;(1KP~U*PgPTza3+JV5opJ0Om%dsWp1=0K^GTfihuH%7cn?XXJ)PX> zYZ^F&Gkrv+M-^o;6vx;cSTbt7*oj`3;4Aep0{Bjw8iChB!cO#_xIkHLK)HT7I!vbl zV2}H142PrdX#m{R0Eo_K2t!`d)kg}Zvlg8a!R z!c;;@|BiZj(ov)GHHldN=lbbS25ve(ub;Zfdc>Vnnu+(qmBvR{{~5gv9jvn-$G){| zeHW7X62~^qPC$MUED!Q z#!7NLV{@nwok)(r&++TGyE|cA26(`c?UZGKu@GDfEcMH5>>%_3W1i1+cY^c*dD~~u zc7|P(zTV{*+z0R;nB%5Pl7-+pB7tcbK#v$H@bDv?cT~^NkLIKO4!^Uk`>{eSzWTLQ zvkI9d#rjovg6r?gsY%gkAUvSgq5gLG07_usn_B0%)esBUenFNgag6JtLb@30;EM`r zrXKOM_Irh{HBaoIlwToTb9Ebs=_I~(kXOROd+Zh=A&H*~n zR#b&3S(;@AyNzbRc4y9U)BUEOg9e%Xrjii64B+k0B2{$Bk@s}IOudm;x1biTH&|bo zMpW^op<=){po<|w8+z0O*C?TD{FW*7ZMK`yFl;}u5>$iOMoFDn{|Hhs$);3-8-a^U z_gCWjU4)dZN^~}4q`CheZ*Kx$WpTZa&-=c2&kf{~0!g@d6Cea7EXpDZ2r4Kd zD7XO%ioSS*3dCTnh`6KThC42`F11=~tyOC)Qmq^AOKn_hU8}WjwO0Snb7tQ6-Xs^a z{r*1x`+<`=GiT16Idf)TUU^w1yOpYU9Ocqt+`)t8!l5CaLmLld9!Bg)HjbniZm7j0 zM()wbY@vLc1Kq$;{P4nfK-sC%=8!oUxHx4mQx@T`P|+K_?_3N~6_eEZI#??N&HJOy z%MtRF=z`~3d*|jiWqK1F?wAt8`aGO<3b-a(J93oH`CFLW$UE zJoSNt3^=gR_&zp+*F1_CUPOJ!7iEUSCQN4r(%FV|>^2s17rs)oO^&;fTH)sxD)~7B ze96E|2u0tC&sSu>tMEFG9t&T@FnQF8duRMCRR(|lbb9g@pU#qgmQU<>XH5bc=2ZgN zOtnMzUNcpYxzxvu=-w)cZu3x;X= z5gD_&C-_I7s>DmuFj2exPr_FC4)kQsM~}yTyV7URKY(#h{*K!YadINTL@t0&z0L#b zh5YizgG)uH5y!m5X?1|a(=7e3|#C1;r zTirJ2zGY7O?Z0JCRm)rEB$Ic9wJvb1Th^%THd1WwEprK54oXwMY*m7I&r(i&s{rEY z==t9=m+-namOmb66*G{;^1Nj(MJa*i-EDf{E%QtLBPL{x}ulS(WQZYCi4+wNQD-m;>ZZTkD3?gmI`YrS4b8Jc%YS}zVt-Gj{(a4-5YME4B zq^bjTHvG5DbCT9+X5Wm}Cy;g9hqWH56Inm~p34iAt@TD`OIkYC*FrD9BFuS9vu&V$ z%bfY~M8{j^6jk0br|3CvnX}dK?F_<`PQUgYlD0v=W$w2vwAI|V%tZsz=ozh?r{6Nq z@s~Q}h?HHFquWaFW$~N{dCFMJW!iw;x6CD)yk)NQHG*%Md!9Pwu8C&fGWV!y*KT8oEcHa* zGG{FPmN{Mj$G6ON3Gkf)?dtxPxt5M?owsPADZBR$dQ6PEtnc?b?oT|!XJ6P0{`_HR zxk6NWn$8@@2;581ZGaAx$&hT@y8Z<(mperHtQpQcqd(WpQVFj zjFDY?(ajF)FZ)0A>p1&&9w>j{E%T>QIyfM_jei{7+&=@iE>r!Mx%7!`LfA&Stk$$X zCnLQW(`#c)TPTH7_qWU$84azZC7d*^RPy|9nUhrJBpkcdGmX?uzGhi2z2VOv-ZDQK z0obc}mQh4EzTVpC=eTQpz2)dzhXuR=2zgR}QdSZs(wX)l_bqesbUQp@ym%s`j(2J{ zOuuEW^{8d>4G(ECt~WN#_hva|$>+~}clW2A>ax)3Y}XErPP*FRj^)UgUVgc=ebA42 z%Ut>(tuq>I7hUI+!}+;k`P0?%Z%<$O{41C#{LEhab0}2*Zsqf0N%{;b_s#Im@^;?^ zXGAkoVjazW_S)Pt%>OR9_lEXMwC%bA^EF>`({E_EG1Hylu>J;Z$h=(=QQLb%`>-52 zf96kzFh}gd+i_dLSKr|jaqTvp0eX8+fO}~+V9y)NIU#iU)QGzRZX-vzO7GtDJ|EA# zH9?M-jlQySWN&9?lXH*5%rN&_rmwH!Aw7AsuK4Y=cc1MAT~OX!L+@+RQ@7BJlWiy4 zg}R&Hi{y}RACh*qj%CwElDzy(T>Z8v$d#S>H8h`kgnDAX;@eo}d-yxDlq8{OtzOom zqYcPCuR-6uX$d*?I|1onF@HT_1WuUHJ~ZqIYV2%aV&Wfrm0KF1P2Qxh16rrp>DsjWr8DuJY)BY&KUJP7!07t zgo8U(e3G_Io}^`OPNI+-!a)H4ZQ8flcI)0GZ>pvk}R)<)B(Q(V#-=L0Ke}%>O_BZJ?R-`{c_-8G)UmoObxBUgaSzbA| z!~m3W?j9-G=cQ$U&~jbiRq~CcOG9n1!5d4afiT|c4e69ZjqmAI6Y5s;{^5q}y%+ki+g^tgCyZLRL96XVw3p*P506fi zpwRvXw6A%4M-{4O47<;+Kc+VdUML6XQ)1ndO(C*o53DN3I&nLPiMTJY5PkN)CVLo~ zzOP-N1`OFgf7n`2{tXVVz{fiKdeXo6Kk*-FveZLExYDQPehGY0JD3MwdaWE!_I`u& z%Z|Ftdg94W?K=%+nk{d>lcnRnEOPhh%G;|VzJC61X}t13r{USEZhu*mwEc14d>ry8 z?Nz}25EYXP_l@B-uYx9R;hBkE0ryjQclM2CZp}7Nc%q(IYBIEe#Z}8JI8|3?+p6lJ zsu1>$fBAoGD|azzJ4{t?zl#ib#nk=B52gy{Cf&-)Y`T@HA5M2~r287m6yM&s1beg% zHFg{8spHOsig9_WpmVr`^YxHGzFkt#S+m3Z>&uYf>B-a3kd>!l%#P*p%0~BP*>;5M z@PnW|?ET2tCVTQN8M6!0)52nT4a39PI%~XohqS|SpFwu!qPiLysjlHRHg}C&ca}B{ z>&|!U?7O>xe9T?QM`+A#fcl%+@klcBSCsYUNSW=v2bFA&lxLE`v@MceCa!4 zK1Ux(bzq>YKUlCBWZLzd?;3qH{2qec=-!qe%g(gXZ+~=8?#YbH9UUF*0YBg}gk}R| z*Eo?d_EWbwDI!iKuw_(tTZcQF4!$mWOi&yN$W%>VK8^ zGfSSot%f7*H|XyUK&=xs?EWj6a+|6*{cpoP&VfT8##t-chcZAlb{;noPx7#R# zyBq{|8`-<>Lw81BNp~>SR^m1@nm-oP^K0rgD@)FpkO5uGyY5HWs7JFS8?9^mVH@>m zc4VVmPX^zuFavXfh=!# zqorYhHjYZmq}=sBeQvwpj-+>&Hny(q9~4}-!*{UVBc7i|Y$}%~x7~XY8BdM#`1@;k zPOAj$>dTY8hi6M$>7=q@w(`g7$@Whn2d2qvN_lGdo~*6|?H@BN=TyVrwanVabvtHe^?hD8nKJx3n&c-Ix&cM!aM6c}FZAA6z zyq+r*sk)v0DX-WKf!A*TRnjBhtZYd`Mf>7OMZGbO2AO2WmWF@^gNW|ySZ&O>)4BvY z(yK!3x;1C6f7z-P@!pj*N$KK-TjdLnG_h{t3a3ltVBOqc0%To}8M2~0HXV)ZOm zZ%$vm*;!%^U*Tb29KH(Z!&jl~Xu-vRJ+{I|!utISt&f3f&>pfyYjUao&<3mF%#$aq zS25$M{g5fi3g-f#Q-4D~GS9*cY_|eo*>fNIG5pj7YT@rJB*~liY?@m`MtFHRSsYB4 zC2+84(+cLWAS}d*APzm?#8Co!U?bkNHJ87FOV1cM5X*qBG5m+N?9?D6g!0n)9-)rd z*wYSJCfIRR@3BlIE&Z_Xn-p96dAA?9m>igOMVE|i$wxd{nC=^i>Kw%IdM+b|%G}rR zCt5bQFd9KFUiTLs?NlwJmgtI)bhT_LHFADW*;po+%gT?oSidZ5i*iUhr(hiS1Ek2l z)lqX0<9+0(bvz9VoiGa`HQkq44xE(nz=_s-C@g`wr%m1pZG+vI8(3mSj&DXtLw{H5 z1M19iuYk!mR=^?F>BvYMO&=Zy6t;Q~f$K&eg5GhrVCd~~bY6gOD!JFefeQtxy&xS1 z8yuE@fFhGLvTa0aZv>+a%-&VinR48>SWac$_(Gb~?s50^;`RsMk0^8Na(LkjzV7k( z+dZ~U8>2&6|EJz_zVztUBL>zH+`jnh$lFYKzQ`=jvrX|9Y)o~Y4&BI`-_L>H$IL(Y zb-lmT;+Lv!H%v=VR~#~n*lZVcYZ8w%4#TvU?H?XY(e0m9EvRl1Qo`|}+00Sc-5-C# z#lg=~;NyoNY~UBoS$d zm&F|%Jbx7lrl%u7RKqjp1&OG!=5%#tD#{1vR~ujtnGJBuMY7g0SX!0GG9VxxJkSD0 zlj9cP0DGh{?wEFqyru8n3!;CD{NdcdI6SLxB_#D4y;ndZQ}uvA7pjOg7UR^T1du~G zAVSKw?Hw0ga%{wJQAs!_Jqvs-V^^EAmgLSy_F-!G=6D?huhQm8wp#^M0i>zYRJEp&&44Kact$Q%y=5lacvUS`;0A2rEtO5V-CGGvUV5R#| z$2|gc@OsJjvQtBa0RtR&5!vuOw{8Qv%sqd2T%--mN%a^P>2V0^CT#FC7(}+O&$cn` z3_w|FTD|u6&+XANpd0Py+oNTG*uZ`$tA9X-{^z2^aJ)B}`8U+CIgI5=rhU#a@ZB6P z&)_>S@WtnEn9AmGWoDRoVEjW?o5TI&t6!VLsWVYLW^lo_5lbra!!|VeVF8s4@Q2aN zVt?2CeSv_yx?q5xzk1Qzm)oOdfaGtS$zNYTe|wAI$RGJJYq*@Cv&Klw8oytbn-k{4 zKYLKp&UnZGslD9_-9A@&dF`_6@D=GC_bSw`_OId2&NX$}(=VG}j^RFI-kjzD4jorH zC)|ss0qqm4gq%VGzq9-Y)Id-9{JruNJ6Nyd)BRkrCs*clWL4H?K)^wP4lh7B>#Lo5 z1AbXqw&y?4@bkVqoXDIHzS-sn54<=j&0b`y@Y46zH;V8!uGy6B4JYdr$8Uc^_x?}F z;WXgn5osEOEx&;u9-xKt@VrrNGsHgy`D^H%`JP$f;&BVsUsY-}Tw^W(BPX-o#hKk} z5ThWo5zcUCfilg8i~+;uW<%d_<|71ae!aqFsl&k{H3lFZ%Y4ZYE-X5kLzWwM7}mdZ2V!#{eCM4SZgZrO{LHJ57bxg6GIj>&jAaj%6=-0J{} zqjJ>WT*_F1F_Oj6t-BdvWfQK278Ai0*yXj@af$Nf7F_BtNDdEOp`Tp=*6Gz=;FnCJ zTi^mOP;4$6cmiWi@B(?NHz(#v3>@SIMq0fTIP}fe4~cgD_)8>$_QbZ+ytN z$+gzQnM&|VgmaY1!bK0P%V7?Jvc@pg&VCp#5l*!uJ^3^qJ7}}qk6jxYD0*s+#M8;l zYR$j*3WzL)#l;&*3gjP~WBD-L^2w1x;4$wMb)S=5RRuNR93;}Lv56$3aYr*gzw&lu8XpR(2Z=L;O{av$2_ z-q$T~f7#8BGRc*cwriK5D|5&l2>r@XydZ2A2As^3pck{#O?q4pB-oB8GjAhoGp49v zy{nZ7lxNbb#H%85PAjB9pjVUu85wCajL1|RH)oQm6Op99I>7b<8!R@yP;=Dgo^x;J ziF5C-kSEi`a~2&7dFOweP?=$9&i8oppb}M3m7iZDboMpPR#q)?t3j{@ds^rSvef`H zAYBa}K|n~V0oF&@H)s4x&~O4Ke6-VeI9m}4BMnoGDWD-qX7&{&h03Cv6QT0VFEv)7 zryB6`R2IrwKi(SWtQtEHPlGy|sax%}vtq-ej2N61OI>X2V|>PwPk7N2dyiq$^?R<0>RF&xVT_|C5Sm)PDcNZ_?$ zuIKjJFfpUE;Y%|@&4&fOtufY&9OLQm+OW{Jt6?E>?58AkB&ym9;+Tb(WeVE5nzpEB zq_LF#$avVae-T-M?yM-xoQfzp10-GbvhOzjMD@MO`?flBrhl9pkAvNOBX%Qm<6r~6 zD~u5tZm)86GPj-P?(f@32D`tq@jK*Xx{*C>_p%yp&fV^vg}|^bui?RlcxEwh8TX|7 z2@|w7?Ow^Vox#d02bwLvfMj?*QnoBPl?=-)Qo;f*N3~`;IZ~S;W!ejjAQR*$&ukWV z1?1~0lW6cjJvYMpfjS>ibF?z^k@(`4qWE%ps;5xVemb+! zY%_p0n6UaA4C>!vCpmqcu2bKEm5fds@f<7qDGpT{!)7q7?=TjW#7nUD5eSE>c6M(- zMZ}^ChDJBS)ew!kH{owQT~$(OheN58p%xi__J$e%6d}n??#(2KH12LHXP-o$WG1!- z`AYPmHTJ>Fsv1K!EzrWt>sI?@yO0*V@~f}{W6J(#AjB)LSwp~*>PpAGh2EISXGfvM z>4}NrZ1W<6O*Sx&;_~a5~Oj_ekh#t-vUT~B*Iu7$j|0biu-M)u$ zB_gKo_??<4>x@%!mGzv)Do_L^NUf)~q-#WIF+v-UOhhB8MG&YV5<#zyk=K6x<%Qc~ zVg0>fon?kY6CIKq43!13Kx2I)UTXa^w`#9!*`ysX?wn8@%Pr!9Q?=BIh?H?xuI$L+ zt^4Abd3@E5K!Y3zbJW!^4?~axav2`uF)YYltrgbxPqe@otu(@XMeN)Jqy!QL7-cVJ z$$c7fjVQv=FQ*&8fsWro9Wcw^J{DsyyX@WzyjGQ;MJWu(HdquYKF%aqNn)_f) zVKoe}F)H_ci+iOjONx8r^#u4eIFVvpt4#o1LmTat=+#)7vDczI)CYdpj<=j5hQ&d; z8N*2tYs2bN#HS-7%8IrCHN~o_|R6yv9KRa*bnNu~`o6S_ym;-F|uI$x0$OD;ST?<@ojswa@O}xam-< z$h8X5fune?wSIS~J%QtQrH*&X);n{b5cghz`sIQBwfnYU*~3BOe^jXc+|WGj5AFOv z{&63UbBk}G{+xa*o*t;5vyp`pGbk<}8a1P1uG@81nRn1%>@@Gjpkof1M`N;Q{bZ~k zS3}3h6{IfGb4_myeEx&9ZTAS`Bv0-G@)4LI+%7q>O_H4HPZbR=;M*%P_j6jp2<1oCQNnjA(L^sp~Zxv zg(J^H02)fPAC}5|zef0REWv@rc}vThWk;ttffo@tPfg(cpb;Vo~jNQo_D91Xh;u-dqIV(pIGd+#`r3}=` z!eGPU!I19J=iCgjZh3V<0gT&@dGV^yNwK;*2qv@(Ke%x)HcvWa&5LlU6t-Yk{ zl~FHcx)Yhg5Kk{!6bCx%ii4TwL8w_}_B#U$TS0lsAoVjA6&2KpHPdTREPAysmL7~} zP-NMMs~P?{tE{;i{yvPJG!EXc;kkR6|9dke&W555 zaX#H4{dXiCN(71{C~kb(0xdU0$BevSZ&ju1^b0EXx~iiax9Y5sdw6XC>2~~MeSiq^ zbL8vi@+^bw2ZW8k_n1Fz;d=O?!Tc}Y$S=X#+K%4Hm+&3DkuTx?8~Mb3=#6}#`4MmA z4@6!@GcRq7k@^rNk$qaa>l691en52;7iZ586X%cnEIoCl&#z*1Z*OfIUPA?ON!JY$kH%E{@p3}4=W(`&ET78aTW zcu*Wc+MwY_Tj$;jf0;KSuioy=TYi*-XDj&AY%&YZ>i&_3%tH~($tg*CxFK5HljudC zsKC~*C^81>ao6&=6sCK7D?yo`do& zJ_mZ1&!We2zI=|hJ&dXTYmg|F{pdMfCJN&?HGM{Lddm@r{EdTa?nwn6tSoa~oi`vyt-`ZQv6? zzSfk25Y4)rt-xmdWbvq~b?<{l@jbZ8VZEy+hUY#LcOvo?zI0W%s&-hPs^JKlH}{!B zJhOz|pjbNMRLvEaY|7hhOn<~LaV{dL&qZ_=6$dhS7aY4vUiCC*-V4?Khh@)69DTGZ z((N@%x988>uVqNd1?9#}sd zel6YSoc!kF+fPl+kFy`zX}9+Cek7D_KaV|(vjja!W1nT(fgf%^&zE|@y4nZ%ioqV7 z>~!Tj{j#jC%V~sT-8%b*Qm;_z0SF;W#C$lHOT{wFar}pKyVf~yz)E;mziW+O?%B=M zb@Zf-Mv*3exbL3YER>X`t3UckSzq_sqA+B%v8nrW7 zj%5%%(0Z#7Ptj8!o*!^Qf%60U5hm`h-zXjx4!72SBksO74-CjUfIcwbvC(U*UGwSX z-B!q){Nzk$M;UA`tGR8DBd_{0-k5_RirCMsEqbq1I`rSwn%%7fi*CJ@`qmg6#EJz4qTnVRGqp z(>lX|v@@^2Kv!}P@|e04z)Nc?Xrd@1or*rAs#DQtKA(n!csi=Do%$7GouJW%xF#`= zL>2faR>S7rNnACL?FRA1Sj@!ML;F74sInZNh9S0WBNlY-7R#(Yj|Wb<=9l>lPHE@8MkS4LeKvUZ z`MKRdi3|sHn=?v9C#V74+ua}2zSJWhUD}suDD@CzVbkK*gKX2%tsTkMuN}2xEc3IG zP9gN=Kj3zp*Y7P3ttp3fyT3=Odae}@rS5};6m}k5-w9Lw1H}n9q_AlTS3|Y_%VI0l z&g7;B>?JWUxv8+TzOy*K&97cgM4F`4IX=3b!~^nrf4xpchbm`1>LY53+HbKc?yg6O z-sLwOqqh-wF?*!i8FvUrsTPc|568>U3)LdESRJV*V&1a5nhd+!6Z?*H)lkgF!Bg79 za>J>r@406n$+~SzkoVLU$lgIMbeog>IQ_Dm^OR$212z{}j(+R(Bg&B*QtXei-BJE` z+SG5|52MQ9L3j6L)R}^G1SkG;-f{ooelDNJdC#%>%|Z0y_s3WFA6O6p|AM+2s}eq9Qil@snLAPesT1~hgQ-6ZsQ79?O0M90Z&zmD zvqt=WED^c8(B7X;ImyU!pgtDkFLv~xTaxicKmR)JdTIM+*lmpBPKCW=GuA8}e*XIJg#Nd>th(N7@5bQGUAz> ztJrX5qsXc57+V)+z#I^#;OMDi$PG?(4acScnzx+K$Kc%va==GljzMcGuep04fZ-Wx z(97AfKVpS3pjR0Al5ZGGn6ko%&z9E3lEco?T=Zy7=XW=?Yn$IJLtOpK*JiS=7MpPW z{oB+dkOi&x07$0iQEZd(W(D$3zr1a-5R(_DgjftSwC+~$GB%{cN=1((cmLQuOtLTh$_?h=@w_5j*~NIFzIliK&KP% z`DtdnGX5u#f_d&P-$Fm0t!h2pCflo#Y1E!KQG0m*?sLDj$7teHc#7QAH98&Wud0i# zlZFr5M4lS)@3fH&LNd>c3tK~6CZ)@X>$_}=WlhvceaMEt4yPj-Ez|1)To*Wp<1&57 zD}(sB`*adcVr0*?V6GI^>(E97`9r=nK3}Y9e?-ou9_JC@oWsd$qcATiP^D;x(cWc$ zK?lCt>JaC%hfK<1Ab{zusq>w48<+jy}TCv^(EvWIU+L&P#?_!k8ZHh}vyTxjBsFB%L-UqdkWeftn~@0OX%^HE_x#vFXT-EyCu; z4wMvh7GSL5U6{p(qjZ~}R2y!}zy5GEbjN&o_i_1BHd9VE?d6FwPek!D#YD4NBv!&K z(y?73yNYCFil}*q=aVU*R!JzB)XGSqJt?bJgnS;miy2<-uV;r*KdmdX1T@ev}V_@ef`> zeF`-uuf1iLvHUdB&D&3-Qqs_OSDoaDC@%Ce>m&G-Q+0069lV&z{4Lm&`&6Ev#!e&h zrJ>(8>zk8?X3~X)&m)@nu{RiPV0ufgD=)r~I`B;NL+3y00szrKk6J;30>^n$-XQ zax(AywLXo!U>Hw%w&#bucF_m(J^*s3rghExj^cOMF?r_tktZIlNTh;Yd2Y|2Y1M;= z_kh>-%zgEDLWWZPCGEqc6m$zgI!E690~=+x zk;HM2!i?M99d(u$7IVCggIBJHI6_rY?sBlSwT;&}# ze50bEvzNcP@`gVr=9ubq@EIh0n6SKKaqqbYKsJ-I@qy{um_P~5HVA<)2x92&(M*O< zSo?&+`~X@>>KXA0qxXB3E?G@Wa5W8UBTFG!?qb<{*!QLMUcCxaIr!z;ZeQSHo5|EJ zVu;xV0PIlc69Uw2Z;6SxWkP4nRkshE-`-05_j!b|h(O!Y;auD38jhDBGt>=+4{ zIhwp*M54*;<;u)u-8{!3oKKf-g}=9FqU#=8q=uHBXGLhcXj7zbT*Ksy;nLsNx5zxQ@fpV}3oHxy;gy$HKM`k?8a)G%pKN9Ct! z26U&v6yDKiwj_qGbF7bSE4@T>>!Y9M1fAw}*)*s0NKz@y$I6#_5pH>t&ntV#SL}UfN7EB_iH{l3e;dDxjhIzD z&qiv|cC6XCtBr(^CfnQY;}Dipb_|w(?3OQHKEFDoo6EnzWVdxH^xi>%v>p4l-A(R# z%Dv0~8@c_oXEALu?Vk1pawv#8qi%ME9&*Pxe*6O&f0T)z)1Q>Jx4=`6UTita-9B2V zv_1N3mtE+b9GU>vyya)74y9rC%lw&!*+w>**Wq;JAf!IyqTAvBEsnp=rPJw~KOH%6 zDRn*#sc08=8?%T-x}@Y4!^ouEPj4tljfKECpo{le{PrZL%`)Z6@e8gz%KM@=xJ%BL$uPW0}7)$C-kSW;5AqH}PR8rT6aHc1BC{-Q9B3Z^3&o`^m$Q^2xX>#zl#}dtS(+Uv`@7PC@bdr6+|ldv~M2T4^ptbttoc zE=5r_(wdM%5o%}*Nz$!$@p-_6ucc-O<=+m40{(9P#v_w)-+N zjzVD3<2Fpg?9Ccp-F*dks!zI-UX?mA0c)!oVMZWCu`Z&6H z{q&Xe!!sbz5avPNF~(lr1e^xs^&ot1C!TJ`vehrOu!ZQ}?}JnP`#O>bBv^phP9TX+_xkJRjOkggc_ z&a`GCwoAQ)+JafT&cfS@7NkI%H5bvzl zN2cSQ{R=WrBiPQa>3Q3nft>wJyiqkTUwsLxw;*2wZalH41H2soy|B>Zv&KPnvp6TxL|w?DB$wct4~t3jzzn?I#ND2ZbzaKojks^iES5* z2xIaQKR)$i0n8U; zW%HWxWLU_38Sd0^5LA1|T2Q%_gF6lG;Rva!YwioGaA+PpPV-2^<#S^#cY;m_0Ws``C6RE22HBVh5QR#o<0-efOdh z*-QO`iN6llTp>44F)=5@dYKrhHxS%-lb3XFFX^Gp0ZDU8#2ti`WObpL>DKCW>G@;Q zCHeN#-K-TDn#Uc;PGK07s4CF46-<+vE2Mq~%Gm0cXP(g* zZwsOw{F}!52Bn})1rGGf1TU2)vwu(u!}A}INofD7Xwa>L?B0_CRWZLsg--R;7P>Mx za@cPLkHBCiSC$z922N%bVD{*7dTvR9c>!Y;%(b9%P&{)hD9nA5#AP_W-{U$-IOx8H zaUUN2;+gQU+yc>8nlK1NbC+5U`8d|ndn9+MUJt23J@>Bysu485kueh6fW|)9d#{VN zPk=krPMgAczO`9Qhc{m zzxPrIBN5XQO{Z{-QGd6TY53#Ul)B^Oh(8Wg3PER)bec) zL6dU4NtQKqz;xKmw%_LoSO^tw`$L|9eaY(KJOMPnZCmmLBpC2Wo`7SR#@0Lmk1@s{ z^8}p27?0)&xR_EsmM7qF2K*^c!13D)IJIX03YYU`u2=A9`jsirtbfRY;n}r8-0F$7 zXT!0oxd(~eRbqi&8Nw{lZ!pB`Pjb&mOB9URbKi2))Tz~A;~ovrz9%AsCZH~aTu^?( zXL_x?s24sCKIRJq_%Rnh+;hlYW!fvDd+h>8Be8NJXq417R zOadRD1qNb@<0s~U^@DYa`{<8B!)717jTylAW_Ow0JOzUs1`y1lYy0LoF< zZEPjLE~agdmH{%C>t>I8!QZz>w*7}8-4Ps{==ITTxFbhn3UG(eg={$oW3a|?Hq?a= zyYpZS{`htg)<P&>?L=48=xW9sB%GhiEx0rUxd)6l)=dhde%kdVHDM;6a-M8V$ zrv47F)L*p-@8XXrIPCrn&c^4YPSBoY+$92=RZ~6W(mouCc|$H^B(%c>;?+~XLZ$nn z+_9tAwr0*nQ`6eYQkJ^Uc(I&#dw_j5UhepiYWC{0qcCMvBbj$C6>DT+de81(ny0F% zaosZ*y~o21{UZ&P5&c}jdkAhQ#D}ckha=)H0W=R9-$h-p{oxrP?kVM@C4w;Qf6LeQ z-S{Y)IBU~WA4Y@!?@>Z@&NXpoVjZ(+*@LM zlG`7oxB(=#AB7(HV4L%=1+?zYEA#-qB%YCZnw z^mFvr&HjF*ZRVHTKR@N=^S`jk|K9Gp*ccDVN#7DNWq`$Fk}f-T1cAM$c0B6W^wC&kr)p{ZyBI?wLLv=O5dT^O+YXN7lVjpCErvSvfYV zWxaDxLNxXa%kekl{u9t?3gb@y=VT|g)N>8nk@tdkM%$yGHR#v}LZ?1NVjcU#m1%@+ z#xi383o-`+%7zlU$ZGF7&a%uZct^6UJ96(d63aa2QDdf39hDJ(vZ*W++{72e(0Q0i z(Qc^b(SmTten>6UF$++143Uwq5b~A!0&Zi(Y&WF%a(}*;BpoHB%6(WQvdm3 zqSzW{SvW~lubx_5e8x^%9Q!XXNpZuSROUNK4JzKEoI}MQ?y;Uf>=P|;sxtEv#&4NW;D&1=>*@6G&JrRMp@ro6FqErf4V`mNhO^bM73Nb!Xjo zYyPxtDH_91&mm;|EeY}v=rb%pImkrW*yb@jg@qNI)(+$Z%X-Tf2ycNrjuE7E!mIGX z<&mIkK`yN5heL%eum)99ppD6G`_i$C9!F!fdSPs21m*qhktI%o{mOs&6 z!m`zY(5rD#v49#10P*fD>a~?xRoK+iMm?Jv4gI8o)P{FHEFkAR#;_cnKx-%)BsxV? zr?6z4aFVm_{xT872sr{G-pNiy;h2r*Y@(t=@8KFPhoc76cxcBMWr zT>j}*-t1KNB4hGhIc$q0!>t7(7f!S*?97+62C%xC7l zLeM7RZ46HR*{fLGOJshjJANp$pz{FS8FLCc_hAL=C2HI~mbnvZaI)9HLa9l#Yp(y} zFFsya-DdYkw7EdBn&c-awMBKgxF-ymo_pnc}Na7`>?s zyP+bKX$C5L6t;Ua)T_5E((zEH)eEQ(W$y6Ya`q^edDz1d_LA?$&ck1rqs(7@uTbV- zJU*SfH52a~T#)$!1bTZYbHX)hdAzf@Ui@TN$#`LpP4^v2opzck@$!1wrMw2T{k*dO zKLvS3y9(Ru<)r=ykxZ_RwcYb!U}ZylWB<>B%lIGQWM-m`)|l;Xpb>_WO(X22djZ@| zsuMi$;8TA`+Hyk|&I!c6ML{?;;&r@a?laQwckByUu+Gy%mR%u25lW%Hvl%ZbC9gHf zhq9%R8SZ)3clNG#G9$An-?O1%Vl^PvSJi6Wz&)N<7xz2xy;+0DpancEULi$AWengWOUOnSL~Pd@o^1gvq?35pl*-R}u$3Gh-#2 zibHN094pXH+3r7}99->{#?BiDvG1LPxD#^XVuf5{4|ht^SkWx^7_@#01}^Tg#-Jlo zl+A1XC%n%265Rc@AY0~#`DO80xu1zF-ibHPYxG*r#H<`+#T5?vv`npVadsSm-) z8%JpWdg`u=fA&lk4l*9>>l^FG^N0l655k`SZVNgRiuSBa8f~QV(!l$-(3hm$MplhO z>^4TnXJEBM@|HOQ70#B3GO*IAN(57udM*K07{#>D2Lp()0DrWNG&2A{yN!Oy5lDnI z4K-<8vZG7NwcfZ{7@BhUn>v1Wu8SU-*WV5i*3$1^3%;0QOQ2V{bss8kBRJjL50;NVw)W3N1$k~p;RtF1z0<##m#TPK zD6=opOnn1%?m-3UTMqQlkhEncq!OKi7jV$rcqBYLZiif4C5^S51*V#doQT1Jgke#H z;gWSMeLS`|(=%-x1jVUPv*phKT&3r3Y{k6hQtc`Z*dmCqOb@g(haxpWqUG3>)cmo= z|0QLcaXoA<3vl!K8ZX6qM3NsCP6w=3NyPX$jsKS_ncrqN-0 zO`R|dYdYWIs$r_$3xt2S@b7zu>${!PJl?6OADgnUFJPFRQrN&r4fX=NhFRUhddM5k z#_J-l&4@dY*XbGV$VJ?&F60FNcHnnDmFvj46{>xx8vWH{>Sn9 z7UtshJGyVvY5XV0UzfEn7ryA{3E+(-@`vT}izAQu(#iGL>&lY8lj`L~U>X>!=)7;= zzi2!3IsUpn-$?x?JZfEkO2MD@wq`NvsO?^f&=t6o>|J?+{sS`R*o*b#yruV^D}k7? z;#1~!c$3&SUZp~FhR_io;y51$@!(0>S#Ec++*%j;iL(9l&MB9C7fL~&t(PLS^$LIv z3enx}(rBCMhj}shVZl8iZ_?pA+UP;ib8?)64uSoqKTgWN0jOym(+X<2s8jw7pSRFN z`Qskn-+i0jVt-kC&B{^%LXIO-V~~T)RL%gtLqB^@z(K_)*u7M|T$T4y zcM1FuFr)@oEKGBelqm+p)oaLcsdnQ*AFL$H-fa^l8`NfqCNd_J5)n$feK8Xi&?&m!ft*+XWBRG(r>a_2$xc~Icd^XWc+KIvy3 zLi(iw*9yE!;BN&!FYq4%iw-5_s6z+iK>mV5$>G97Tj9P*{C_X-HGy9U>~k3DTLjKJ zjQTuJ+?OB5xIaCNQr#!+zY4Ste`0({4LO{l8v%Q%n+|7*3^{^s9GgNJEf;tSAUME3 zq@EJ^hQLpbV2WcF(toMI)qs7}hK0`$?W3*)jH$=#Daqd!GWEYBG^UCd(dTE280*eO z)OKt!-G?ludx^kx0xuA_N#KnF?-0u0E~Xyd7I*AOy2l^MyqtX`Q@KpwuLM3S@E=E# z|0jdU|0{8?IEp?G3tY5>GH+V)I%K{BFs5E#Lc97{;MW49OKERom(qWhz-6PDi$j-^ z&q;u=C4p;>9uthIs{upmouirJzW`$@cnmod39J@48!)NX95cEpsm>C3nZVlw-Xrj3 zf!_nh)TCwPbG*O}0v`tqDd$*PZ}G8oFFcm=v>zv>UrczxaV(=(j-wUzcNzMdDTLF- zz1*et)(QO5eGP{>6Uzyk1Rl72?DCLm75Izg%;S{fH%^SH*#Zv&L^&S6NF`M;!(0># zYy}LdQzkK$rq+tqkeURDTC;-w>sC;niv&IZm{cE%|HKpMzewQafH75j;-;FI+HfNE zwh=I-f+w+lm7GM*SD$q9Nsw(N+l2E4Mpse7j#aGn|AITD(yN)fmeq8RU(Nd4wtD{R zn7Rg#EhpPiLQ7qTze!b{gEbi}C}HE(J`xsEr=o?>WBuwFJP_g2peHbAhM>J`Bn1e>K^7ddxDe>EI0Cx0Sg2T0g~ z`0^&xTLNr}nuj+}DcOaftbrZ|SypwC`jx#8#+eJ%7|TZ39}u<^>T(HF$7cvFqP|hW4reMW_Ema4BCvN6A)XTAIsbISZb|Nvv+XL8e zbv`h1*thZ2*EB?D+D_Z*tP01yosOXd8OKr!}CUBKF|6Dn zN=m%1CEj-ga0E<|bH595YQp!6AAgI5PpZ>=Vwyd7bU zz(xr6fN*iFF_J>3#0yxv*|a*m--Fx+tQo>39HPxftXYymUtmFC^90*ju(-7tT$I`u zSQM|boh0$*NxVvf9c8f95_Xco+5|hrU>(BcT41A9rFE*L@HDVpft@at{}9T)))|tA zf-q(2YpoZ`gkZz0%WYagjZ8?Itw-!IB-8c1*?Ls+r|bL91{(*;xmJtyq;Q!nTt-`O zi(VEAHpY5SG`~!+vDT*|=PJP_T3<n6c|CfF+LX2Bj5%2n1a!sXe>tKhQQ zx=mzxA6O9B9Z0=MeGTk>tIfJwWC=xIjYL(Ob&qf<1$Mu6ioxmyJJq^h!bS~p~;80<^I<{1p_1yXPg_Knkl z6wWc&w-UA)Slqr8-%2LsZzSwe%NFbzg9QZp)L~G=&W#3}CSjX_Ewg`W?JwAEf<0m_kko%4e+H>cS zOxQ*Vvx|P#yT~cEFB7a17~^dcEKs1aD+L>A!eA%J?a>m3JCDNiG++Uz%)UXeSw;O} zXJz(HL8}_$9$-U&{Y>)k6BBlaP;L~g-2Sy_{w81wJvgqrB1d@cUw{<~nyfGu)r>@NjdEAa-}-v+IkB6WdagY7_w*zJO)?0AUQ^MGJO?5YqY zdji;er@;SRKfNXY!`c$UK@rGwcV1a;9Lj z?N`?nF zU}(vTzX=D`5%#wd_L5)=?e7KqNU+7&Qe&xnCD@VnPJ;d0V8aCa-e4^8TSi;cG>rEhs)Tg6_=5+ueck^qE?L>1)qSLUqN_$#T?MAsW=F5L&c$h zw^S?yyr+VxKPK>1f$vou1^+J*%Tkd_!dPF@RQA0U{)76`XIS4m;2tY*_r5wWcUf~f zjs@kMj+KD3I!>2ZzY_XC^$pvh&>Ntf)A3&4xIL%i6M_E}_?^H&Kl;Z776W?pHT|05 zKUiQ|V3WWWfx8OaL*QP3mRi)0np`ICl>*m-o24%3N2zw{Pid$0Uk;yr#eE>)E~uL) z`zbb6*E=<8boI%g*|VDTr15+nub$}S=G0O;kC7T`=7}2W>P3O?31r?q%~uXwgogb2 zfgCSt`nv`(*6#-~))Rw1g}*MNmj-${!YNIn)ySJnjySK;LQSmF7O_K4+wl5Fsqr{K>sp$&guAzz_$c`AnvOvoF;Ilzyk#yB5<+5Wq{Po9{^VkVda(aKH@>)YXjw?-TfVLo@teZJ@pV zRp6%r1C1Brdkn>m^`Vfd?`JeNhvsxF=}UNyxGw#^9 z{B#6EUjdxe5o;#@Pnt$z$Xwq%8gO*;Zs;i%kGv3V&gmoX3)iSkBT0YP$lrDIU%xX$ zuM?Q12^r1*dgqVAb2_#Pd`{pS0zVe`AAtqCd}PwyMa>v>Fj`Iy`*Lw#BXExR z+$`<|;=V`RM~M4zaUUh_Wdbt-R|@P9cm`mNI(rn`(#u9McQ*iL+vGzcxoxtSi>B%a zBW!ygMrha8m_EASd~DQx(2UbUo-+ipMXgbD#l2Wy1~8#Ejy@||qwXJlWfZ$iqc6l7 zZ9({Az-{7wS>W5FVZCZu_&U&hEI#dMKSSzEafimxT{z~Zs3&3hm?-+bege0Rru$`q z%ffVjEbfqmw%60=s5-(z@!2|z?lVRaR*O#x{O5Fx7PuFnrJfsmatw8C?5TjCj=c%; z+v6S&)u_60>tZ!(*tj#{uPsNneiO&tfI9fluC$qFcV%z*y1)+wekCxl+r`jE|J~jM zhtAz-MIZ0hP*9@+7|)vLK;;3!fVG`S^CwM<-Ci zT_#+EBe}YN-*v*-;4n$xUVxUGHG!6Y_ykI#-Oq^owH%+ui5Fs&!q9+n#eIsv-%Q*9 z4nroP0i$mfCePQ<*G2x_0aOOQ|eXy~hpE#;`qp zkK^T2_n@3B1)d`COo0~*yg}f70v{ImjKEHT9|-)Hz`&m5QzWpTz?}rP2;5!Zz5?e7 zTqy8ZKudit@IL}0Q|MDFuu9-Cfx8KuF@<@b52#ygY=}=~uFC)us%mOuuWa2sqF4U9 z`C>2D%|9cwYu)@a{LciR8e^GSZ`w+qo%#*vUztiPqK~%K8Z#2s$Ks3 zdL;AfY1H!{rtJ)$&m>gy>^J>-`0O5JdmrYvV;`n<#y+IqyiXnc*+yB?Mp@EEX$!Q}9{aM!G2I%q_rB~M z=IzUpI!541fu{?+MBudoZx?u&jv#4k4%BzE?&$=Wrr{iouZTU^=%2_uj(1Xv~3AX($=$lmSexJfe_eYoR$Fc5B z`*Bo!&wkX;ANFHU_lw~bxGbS(C3+?@c7Kis7Vm!m{Eyq8S~^i+yTJ8;P3ounFX=;g zCTM!r&DpbW>{Fwb&R&OB>w?+T|JAd9-^Z&pH_v9?e+igSH3!@PI2@4NMi&##EZ#-k zwg17GR-Ficv_fL}=N!OTmmRRUcvi>t2e4dzDKI@}F(`HYJ!cMUv98e<&ABg3J`WfF zxSIYO&|7N6ycfWK^gO0D9dH*l;^4zd5^C3jDeY8&2MJs(aOJ`Ep&B)O{;?%BYV3U4 z%;fo*k|xzY|B4bzT|EC<_}7i2|K@2A!l!rvOLN+SYvG==fW73z8PAo>>R1T>Sslj$ zCe)S%8w#4#GYd*e3Dbb@FBlG3bjW?;^S1FRw*GPAZ*X{szpcT-k{CGa-_~GpNv|wc z*sr8i&VvYLVO>c@76T8H{-ds}7A>%zH#_GZ^z8Q7;c-dhc4yUsMgRBeunQtAu;G8wA^G{k`NE zoF{wPU|)kvTzzdQgQXc@sd^o+Z)wc`%Ep%9pweEzT1?oW(t$YFaG1e%DqV#;r#B0> zR*f!g=MB`sk>kalK!m8Aj273cx)#`48eTuMZ^{Bzh%LiCB>J5XX$_D}a++Z!` zt6;`hP^2u88Rbs`t2WqSNU{%7+1)VX*axSF08o>?*{oRVxKs8+oXF7pqQf zFxb=OV}acunATan`c^QlvwC&eP^P{`Q7`rCS~;q0hMkep(rRG>*H zt#8WP)lO=*V5j1Mdkkj-HuA_F>O(`tEGw-(7wl9uNy1K+<7`^jX?2^%BCVCBh_}UH zr&m@0d)Z)DSGHLV>QjULtg-`Gd>5v$E^>F}I;&CD8tf01X8~(5*fxX>RWl9tD#C`U zMFxAP@>!fiJK10#SH1{rgTbCCIo}$tZZ_CUB^Lv`U$Cv#mz7sqO={dIroPqsu5zn*-P zD3~szQEIMWy2Tu&mI<~lGPB<(P_8xDLH%|GcA1VRty_z_*@Ru!Z>HU%9x~V+{SE;3 zyulto*l6{U!5&8#oMS}J$SeI0w#TS)gT2@9FklUWY01W_k+_k7n{Sb?`jz6H^%;U` zO^j8`1iM5X-v0!9tlF3pHcoBvu@`Y(nzs{bhzV)%o?MZ4J4vw;aXzRa9O;&Rac3%JM?8$0{ z!LI0kBe0DIyP^NB_8yo6Nj&TJ{&(3^RKMLcc4z+>&Zo>U*ssB5s=Cr(5A?qm*z*S4 zig?phe7uhL6nO5X&N0{v{U5Yvs7DRp^W|&a_*yM8teOCKO(VnF`Ch4%92gKBV z>Pmx681S0CpL$uaQ`J=P+)sV#V{h5}s|mX^-l=L1!VXX?1bfpuX25&)9CfY6q8AMK z#Gb3}HP|l)d~VNE&l}1Y27F^5tUfo`X9K>s=PPvU_`PYBRDEMFP$LbtbJgeeA!??< z4yXz^hpA--JE7`Db-3y<*riob=LmJBU>B5csp)lphuxR2>6$ zzr;HYmepY&p*|Aq-6-QNR7HD`&$|}mEmVgYjPVw#6@tAP-KY9Gd!af>NT ziWa#@ZSk?o?ZxU19Zz(2l=@bOMQF)ORr#JwZ)=3sx>Suc7_D`wnrSdv>r%DcV6@hw z)q0I7TI(`(t-)xm$Ete`M*BQgy=*Yr=W*(5gV8=+RWwCXSG3RLRmxzr&y1R&u?X$6 zRn0aS?Xy)aF_g5=R<+iI(LP(%wFaYowyJv#CGB&C+U8?V+b5{^1k-KEiRxRybQ^i1 zT0WJM={E8tI`P{YTvh#`?PGaTiR%$HD)Z5iI6UNlrRcbFy$<)`VlMTky*Ql3$ zY?yP38abVmI`s}U)5jL54zvc@8*no@P9ns2a?H5I^?8*Bo?&Qj|QHXC7QsVfb(1Yu{ZyA8GyVP~r?8bdF- zk8_TC!-R2!bguf^U>qTxtK$1m7Ts5!r$){sc7a-7Gut^&%@9oI=mK@^EQV<RhC%4K{9|3v8suB<~y5)GpW}A3NFEs5*S?bmtOvv&KZ% zm#K#gMqOW~o)>IubiaY;IhU)C47On4MZl)+FLEl*12(DW4aO0~CKZ^i!#HEOLQORo z$HG^t^@44UaPD-ay4GNvJ6)*)2S_|A&8t+o#;hd+V>lH$(qKOk>@tI~<-1DVZLsqs z>|29v5^VAu;c49@*lfYpM(!SXxpS3TX0R;-uL0H}n6}8P)k8jZk8`!^cObbi?03#} zYNTLWqaP0}RoAN-2K#bg1+c?3W#s#Tt8i{~rNN2@Jqhd_gY7ctkIs$i27~QB=t*Gr z8jRL+liFr5TF*`D9fQpr^t|&^^{v4UAM^^aqPdhzTh`6$J;7j0(96v#Fpptd6!U(w zsx=tP=w`Lt#|Gj=>-`3!25(VC2kCg!;4NyA!KnFL)V+eORhdD=p3q^|$%9^ZZc&pD zmUz~gz;08w&DYq4gZ}FLTs`4q7ddyRj|AJOt{wCtUhoMlASJc?igTyJ(*pQyRr}P& z19z$Q2Ad1)*Xn+QaVC7fdfs3QYbyiytIrK~Ol?iz0TnnzbKzX=K~-z86}73rgKDzD zR@FYMeyNQ3=Nu(<~NympVkqv~XXeJ|Lx28-9VAnYN*PQ?S@F`OlS zL$GzKzHSw;*@rQOb!vo!-K#OF{g0_9e5``;d~EN)pVZfaaRh%r;0aZ9xWbQ`uTW3X ziQm@XnS&Mvp4JF3mh`heR$sR)kj0q#v#M5eiCj~6Ji^8q?3Z;X0-GtAo-sV9mI=01 z{eSGedstS**Z4iN_nw>kzClicoCQ2^2Jw*M8I%+i4FwgG3KbO%kD)?ZLXv4wX_{$T zL6K=$nQ2+tH!LD6EzCn6s5H$mwKS=ysNS{K4BPEvb@lw-=Y6l=9}iylaz3-xtU2zz zXYbhu%;6yGKvSPu8cRo5ks{3D2wR~Db2!2(h~&0;gzZ*3^m2q9RfOd{#u^l%mt*YE zB&rd$(lM5pha|lmW9iorJkkMw^6c{%+o}k+74TwGJ9eBk5!KT1_5{nFjOl9Wcw5hQ zO5%9Dt!JK7NXPMb`#H-~gvZ;@S+z->^eO`;w(gvY+qh3wMU+DQfB%092$% zM3fpQ*$PG85%&RANrL0iL&hmqO(gdWUop3Q%t0PyzG7*LaG!jdRY;=!?rFAN5)X}d z)Hu!3r(wF4EH>gv;|vB_30oO9Iby4E)}$E`Zy4uHDvWT~FR(mHx72=jq?fqB7Abll z(hq2bBpR(3S=BXEM^wuzBRhzTtXUFWskz94r(-6y4!lxxk)dJ-97TAg<~uf< zNY?gywpQvm&Oa})twge|FR?mF_WhBu;u336^krmcpk_svBR^%A8C*nzzom8-bp&XI zB9Ev~*$-@!q7cyi0B=#1mbjn4!jcu?e*Ox}A}X_|MJ0(wR-h;|svl5^qG?e#iXYip zMT??_0c|0Yz4;Ssn1MOS`u)UK&m^M$`7bJ8gBRG7{?_Q zq)8d+W?;BkbH~zAV}6G2a5MP_#Fu7~T-S zNzoTE`+;^7)v!m}uhN~oUJ>s3TzQj8a6ORwEI^+%yfFr@67#i^U|;^F-invdsZJSl zjlC>9_ywX;79I=FZ1F|Km~JKO8+%^&^`Ex zMN+pqwpn;{``wbBkJW5Gyi8FwJipwACoM*u>~}xDp#-Un9gKx5y8Ke9q?6#qpSvxQ zbS~D@7Ra*|HO2CQSNRT0VY63Ta8LuVw}8{^>`E^k)!TRdFD<(~Ir4omG?0$ju8QHop>;2JLP zqsRwz;XF%G80f-zzM?qLwc{m2{#iL~^^0=85H)gFGXO;i-~%n@$1nEtv))*}Ad3SrWBpEcba(mJHi7mPaYV z_Kf4nim*N7c$Ok;&v;&-2-`EBmnb^Y$rs)~y;ji~$UT8?QG|2$PP|4D&e=QhqeQX} ziM-%pEQ=hUo%tCeS)VT6?AU@`c&Z|7!7jX-NX}Tg@=KEF z7|@j)E3f9)l@}7pJ#<&Ti3r>52)wD<^AXCAjY+NaE$I(ef;R9p=eBdG@17n8TB{o_vcW%ApspBa)WAdC{5{ zOL#hzuQurxpq-NF%(M@$Q-o)xefSw7S);z(^D*=y+p{00C4Mc0$8;S0E3g2ncv$hm|)T9?|1GxWM%pEPa*#`0qBAo9Y z!S}_`U#)l}ahGinFC^VrelGD>EsgIal4ExWuQw?G-m7A)!-Pwz)I)i&A}sY#o~Yrzx^^e$O_H=SZSDr1RM(1;8`xWkj-m!}(ewS-;_YyGbwDhV#899kPw!4JMti z-Nc(s`r0;<2S1MGL@yU?qj(>aez0Zo43nB|qj{d9?9N}?#_}?gez0ZpwM4QdZss+T z?9)5@!qbQKii$f209{hF40PkUeZ6d@3eb(`!HRZvE@nBro1%9*?*~dFs)cgyvfaWf zh)UVM&bw^4@x~441xdI};K5Hw`T}&5c;l0l1GVR5Zhy*3!9-_yW)}~a$!1UA+{ND| zpC_7@0q_i0wn^{VrtuO<_NiS)^67l7qS;;EvrXq)6cu;zWw-MhMN7K`039Vd%Q1%n zo?L-tsb#CcvVfNpVGF)zE8trt*1$gdH=b#+Z0jkRi z+0mt#?|Zg|nr#bt%|=N$Uhd*&O!~ogH!ph*bt~B~T~63axZ5VARm{KZ54L-F2O_MI za4F*_C9%<62f8ffX`9iqlr8T%%w-whs%T4BL%-kbzv`};E)Q5J$EDn)kGoECdC)>L zT^=^+%dVcbl_p*4y1?ZTqA*t5O7C{Jg*pJO;&qUF7%R0O09wr(6*U4q%Ke|ma?0LZ z!&eiXcRc%L|EaxkHFHtEQ za>GfNZ9MTc)RnTF8+O@taJQY3W&^#>cPm;1^ajs=<7z+b;^m64A9kC)xhdkZ%Uc#2 zZd6++fW2c$zQA`pE-J4yk&4*LftjqC2KNT)Fo zZc;6*B1hUkB1;|C)o$M7q1AHsgNRFi%mrwaVN%m66;b2P+;<@g5>>xj5 zTK0wKEfe2tNtbH>jHgMWjcK=g5#?L4^ z4(X2bW+HhsJkI;l=g#Q>e=mlSme z`kK4#CZ8;|N0$8?o<}6-?C1F2x1?@DNS^&1zeFUDK;QDP|DX=(2>X_2m^8zFo|l_c zXurT~OnMNWmxD*t;Sbk@7umn#QABc0_(fW{b`w#q*qN2Sq% zhTT&;Lxk(TJ>WS>`}>$uuKRjv*@`fomsUU|*L}UTG9u~4ORFHlb>Bj}x3=4)CHB_Z zQAxDY>#H>?!ZGNpdG5vhYV9}%eYH46I0k*SbVWD@+h}=`V5N7x-CtXz2*+T6wptO6 zx&UpvA{=#r+95?a>VmWjig470XvPPWJHt`eRtuIyE4`swq9Po1p<1f4#8DTjDpb1lA$#o|wPvMzG2|0_gy!=Rs*dC?LHmNU* z)#@bKkM*dx$7#X)q~$j~z5=R}1o^#Zi`Q~LCLPdk_5|&cB)cuimvzzXpODV(LlmYc zoG3|AB2k8-{zUmia(387TSO%HpIx-=b?9>?dpXHn@1k8ITEpH?(jAcB0n{Nm9bL6B zMb%w(M>j3qB&XvBtw_;{q}Gn^+D?;#97$S}qOX!VI(lhvnU#Egl@#yjtz|1}gmith zwI&5Q`e{c^>fuP%f)C1cjY-Ll0a~u2KcLj9TDc;Zp2Hle+D?-)95-rb6a|8Akmh+v zdI{{A;TWv-Q54@(ccf`qiav(=4be(W-B`y^ZLO&r>qyrQnYvuZ2ebs&(LeB3mmV!Z9D>%+@ZMl;FHoOZp6bqOPxVqLyXS5a(pAfJm+%P0^~4qU9R< z_+A;#eC;TaydNxIYg9C?*Famo=6Q^K+86Zlg{Mj56fNyF2GSKOda_rgmamm7+S)4z zbXAIQPL!|hCR)O3deyk(YloEXF!-FNl^>@Z*tuS-^l6&U37Ov?pqs8;P}Hh7QhB}9 z;rhySE$wqjfl{ZaWABO1>DnPhxW)ip6yX}fbd7z1>1tED^&V~9uEEj_{4HezdgnW5 zXu&4U1nQ$`4CF9V%ThFr=%k`Wy`7+IGHE|h*h%zR#uoMdj?L1NPa&1Ea^AqioN$)s6)%twhlI}z25pA|2981TvwI*$J9@nZB;aIBInoQc^{6gzzUJI+Qe&!i8XP1;&TIF^3Xs!iJHY}OhS;aK`Z3p*#h)b-inWO|-SyWq{}TTFV# zDfA|jK6EY)y8^m3Cv zbO!3xk{mdeLi96=a4d!B_6wBGfnzB|k5hzWDMZgugkvd0FC;2u>-!#ZhUlw_)T)V& zK482EuYM<-q54+R$@>Jt^ctcy_D=oII>YpOMFaa?0J>zc4A+f|Zugt!z zUxaI{9!FHe*MTlp&sMaxUyVzgzJ;iiz1#1QGv2Ii`~H1gJL&tB<>LM`T|4V(-^)6n zuB+~U2}#!B20e*L&P{L7)32cdq8f%?ZqUzIbUpMYi>`-Wco}`7mjKpNUqMvMF~44B z$^4V=aqZJWtwNJWvc4uoCEpITQ>DXa9Qw8B1g7h!?ZlIG^hTw_ zei)_)|9G`V!}M;7Fo$7!nxegsL%N=;=s4t%t`{o00J`CNxuV}eH(akElDUu2lYY8d zqnq?}N%l?yeA!KUo}wND0)UE$WV#GJ>F2BIM(XL;Pyvw~6C?GlM71z_9(5h5?^QH# zz~_u8Hz+zXV6W@VdhoAOcXq%**IV>#BDpo@>QzLt)VX>!QLW>b0mUp= zKdQ)m;C>+V0aquXEM;thet~qbr9$qL^rYWN2UNx;>sdr{3!kdz6P=~!CZ_7$ny*?; z)k}z^Dr%AKZJ3mNg7(bRXRJcs1QJy~dJmnSRouyI*g#=R^+GevN=+qOua_&rlC9V4h?c@LAWynIpS5^wo-RrLa=pq6k+CE6uv^O5Ni2v`HVPZgYD^ zuO`d09CcOt8AYgjR`-Wzm0NP(sK;GH$&zT#zERIsgnRaldI3=_wdZqsxh35uy~3i~ zr0=%qHtTg3-DbVfqI+KVgr}IH->C(k*TWQH3qG&s5y=s`MK3XFKii^L6D_sleJn5P zM-}0HEHCO86di&7dr3FoO$Ja~`(^0Amvnz3ncvHLlq5Tj4lEIuj>A-T3T>FdsSa1$zC+bmu=T86fGGP0JL4vLxYOh4t<}Zjf3_BomBK6 z(7mQNDLMwa*K{{{r$9@)yslRh)i5jzkXK9YPWFa=$fW&14U+7YgMHbXI^0f0b$@Yi z08kW>^s-CO_eGuD9^NuX&z`~XHbH$E>E!lTt#2SY%TZUYFKdJ8O4-MQUESZ+J^dsd zAKb>hR-ditx544=ALvy?(#t;mkR;YQt&96U-OZm$2GqlSzwRF(sef8O_fPabCf(>> zr&ke`vVmzgx*yP+rOrM+ZMgfVx=)}?hgVoX)sqy>O3MV@A|hG8LoM~A^*EEn9ceW# zSLu%=Cp)aKrgZqEV7~ideYf;U{eDEhVA2tGL=VQ7O4E#bj{9eNwn;_qNA(pZJ*XYi z_YvW$P>K6-y^%<+3Z2m1g3(JYtO^ympU^v)bf0^@o+pW(6#POjQG{3IztA@*S|75) z{R@4!qNoLL(yCB{UZe=G&o}7hlHf_f?d}bFmD1t$ z`3AjO5ni8f(8I!HesOKzbU&w8n6$_JTir9fMR!CyuWwR>t3ns_8X~zWbV08-=_~D` z9@h@j$!7z<*K>*Fs?a69OcJdM{h)79gsVbV^qtBQSA~Amk1E1dp`Y|7MYt;Tvks3< zLk_1nt_n5j-4x-f(64%iB3u>vP0v$=t3vQjSo*_NA%7Q>XjSMc;p$GaUP9?`J!g)4 zv%ZxGSB3mte%B94qNf3W*E@8;vYh3Z?sq+jNUjR~u4fQQFTd*rM7Szcm4)G`b2Z{5*>Tjl z8fl7f)VUhD$`VJNn^9!a9`{zp3L@Nt)wsADJ0;oIhn#fxFnl60ho$yA)4p-{G;$?D zZC?axP=uxSGE$?^5|3j6%-hH%s-?F)v^I(q;nBXeQ7(z&e#ytEP=xy>Ut=p#jRV*1 zeT}_}o&`%^qn=3aY1gyYRLU*>0YQ&gK40F)+)VSfI`Rz;X!fN_*a z);+*zBs$CS4(LE5Dn_>M`Ls$c$e@7?S8>FUKiz|jKBU8O26xaJ8AN9}>Vl0TBH0ol z#un+t;XTCW(blL@6f(pO=%}KoA+W}0TvF6y$bKLrR@P|HkRB||=%#4gkk%eyM!KS@ zLjr(u72(tA;YN`nd^$bcD3?UfaI`a;l@6boY;WYmQ4aJBM|)$pB7BCUgW(@9b@&WN z2V;>*o%D{zNlDbV5k`~J;awjQMqz?Xm(bmv#TXY9;awlG#-dKBJL|v|jyPjAQ4OCr z#GS<%P4J~P+zT%m;$-ngVdoYvVIJ|uTA~`hc1W{JqETa#JL_hgA(F?x8w|Kv6ue-s zz&)PSV=Y(3x+}t~VuL)AS_rO+jqvDY65dJD&+s8HI40aY`WuOo?BlxIJd(*0%1KAq ztAykFDm4ws@klW(?L#M8sLjxP3*kFgu3F++t4ZQS(oBy5EndV|N%K4gn$!rotAryt z)zk&{v=a7%scY4KXfeC7#j;hGq5BnuL5)&|F7g;eI;2dX!6xMoUE+~u(qfo9?Le4D#9MiHZBmIbzqN;Gdyp=a-MZykKJr^Q-nP>-pE#jJ(goE zQiMHri&3End+b)DMiKVdZDv`p$8Iy~Nmt57q&wMdMl;+l4SmaROV4z_&FIzxsfOR4 z{;tOaBUjOUpovDgq6dH`8M}#=vZsOa%pBfG{Es%-LLYccG3unHeRq1D$5f+H(Ltbm z!yi6D-*Q$r%}6w9x5qRi-K5VvrW^Stec^Gtu}PBsVtO%~VN@$}4&M)SNKxc)o5xHe zwI}6ZPaNI=l%r_C@Xvrsh-w-3^ekhiBJAneMpiFs7lu7O+bB_lJw3-r?=5xM({qdl zMcC7GjNm>}hiyIAC?Q(OvW9=>G1u6tC~x>r9)-pkqEmd{@c(G@jV2;EhXYz*g!M%) zr}*CCA9xfQ-H6H<8}Wfhv5`x(l=+RA%kDJRD#AI+LSw6<#-u+y78+anp_dxoZiJi1 zT}B;IDN6#n+t}J4b){_32)pNE!=8+^gpD5I?OAG6D7tk-fag6%0}yWEuaBtnSYo)P zNU8%WGZKMtK7n`C-D{*NioNLwP>v$JgMFz{s0g>zrN%Nvc<`BYiOH;CfX?rq@a%Eltu!pht`qLnUp`_`qY8 zkvB|IHPC8fyP^*>#(O<#xDA)OZ$P)!xS;4q(5*AN-6VBv{KP0Ck|q1ZsJ}*c$&&69BlXs+WjSDE6G@*3 zj6)XPL8F04`aEbP-gdRN2aO9vat?ObFmkW@JZyv!NuP&}GK=mrW35H^nQ_LVJ7zQy z$t!!u4F3t}^DM_Jd&i9oB3auLM&314WKsY-VU(LR+^9FIh;WuL+W5lQO|*t(c6rh3 zq;b@w*Sx+m(kEhm@_w+dja(vGzpo9?NvK-`S3KYG0-Z@8czt6mQuNZu177Eh3yOA) zJmGcT$jQTWE7^x5PkUW3wkkRUbkWG3EbE8YF~2j46k%<@H?|PT+FqjZ38O%?8nwmk zDg}-@=XKerws^T>oV0jpG#aK*?(~kH9}TyuNYdwzMi`N7>mQ9|MVR|fMxn*>XJeVt zVeUU0TNGjLO~y$@SchK?co+n7kUjRB(Tzyv*KDLI9a=UU`4-FHjSUvdKa8!{&_0s_ z*dN9vlisuaY4}g08rhRZ`NC`b6BUgZ6#$efiT2)HWJ_Z6M>TqJVV_RvfPVAR#7Ux+ ztbCO2t&8B>WgYN+GeXRkM9;t5#0I6q=ihCjK@pxixrl-SnGVmLT*OwBI_Y*%Mw2{oNl6MCZ?0KUw2V% z(kk6uY>{NgH=B5f8b$bK6Ay8esMd~8Z+nVHMW2rf@%9v+v(RU){SvgNr-)P34DIPD z(j+l_H-(qTC8}Ysci0cKNa^rx6y9RBqPIJ=_x2WBO^WhvE%uoN=kKC{2uDbFZ$IHb zn_7b2of04t72&&60z{Ug(9B{MC<=&b8RifuYD|jq4icVos1Bfm_XvtSMOf-kQ9>m1 z3l$ZnWqa>%5j?jgU6gk_vCJfR3RJK=WXYz7+-O7ye?^@$lYrtRK^@?^PqA7Oylbw% zca$h7q;&8$nKbWc!RARCmDxc=iyB2ZBa0SM^JNa}Lq>pQxuS8IpRyQHr>GI$=Mf`( z7NDivOT~yNqBZu%Gbeh-h-9L(aJ{ubixC-;=n89`$Ww%GzKRn?itt)joG4f6jJ9y^ zji@4$d%ifan@HvtC+dhWzdO9+M1x9)`NfGQNt9oLa4W)co~3ujC5SLZm|ueEMs$kf z)xrdkE_HB4x7a&DO-U|6sOBBl#8EqGPcNP_j4u=?eXR%!pU8n6L_A0_F zW?e+RqFtF~-d#kaq8cK%Vp-1hA=})#h%iM}P?oNu8?fedlEfiJr!$WLH7Gg{x}NwkF=&^i_A8+4DSQsJf3cNl2`kKc(YwFcCv~(}>@OOX<%=P& zf-Y&1Om~0Q8{WyHgh(FyQ-sf5sFP($5m7|4EGZ&G5te0uC?Hx&Wl0s~im*3t6kCXv zu=je`dfzA-h~&r`B$|n2TMrTicVm8Q>~ClJw;m+Q6dleA23o7=Jm?0Ct%`mD-C$9p zsG*O4>on0I3BEEr%#kMC7L!k)@YX{_vLt(}zW%L;i5#W7rN=PGFi~Psc(=Q5e1o1*N|UBPD>k!;UQkxSH)dm$0# zJ`^m=RXUk_g(Q{xc11Gx8lo1T^+YW`FA>!;yx%QT823<1(99!C1QW?ECrhN76u`1X zKG9i@Poa$#8%!E*WQ#hJ;OSVwmY~m4d;aKRHeMu2qLDmaq!X=S?~J~^^?0#K(Z11h zTHhjOmti`X^Nn24`Zm$+UP+&gzPt4VQLd~AMTF(?46x}*z z3((&CF=jvBH1eo zMEy0?=OHQ?rCT6!ObTEN#4<^AFF=u~P=xma6p8IbwRE3Ou{cUp%J9yBVo~(4tnI@C zR_S+&ttR=hg`!^3hSZN+FBHutJ?pke*X9OPWTRO}^M%HD&PUn1BesDrm!!~S!L2vdantTK^A zw3NLS;%QqdvWd#<`=S5t6SJiy-3Nc4s3$tbPmWpay<9XYYBd(F9th7>n8PXFb?l$o z{UVX5mfp(qfJjri@neg<9}u~c9Cwc`W)F%&MO(&hb9+!!DLMp}4~gB1n#Y!TuMkHS zMPws2DjJbp%vK1`)iQT{H|PoxC&_Ua=pGSiMDketh{#jAm$NIiM?{HAhsWYa#0Da{ zr9L9In$*hs5m7^g+xuu^m8d6@$ACvgvm$KIHNyWq_tQFmeWSgxM8H%vY)`UL2J~ZT5t?pa|RS3DIE<)!l(@_N2&Ggl$$K3Ke0SRfrXe zu+1t&l_YvMXoaX&I&8D2MZF?yrKd%cvcy(;TKGIh^@EmJ1r#L-R+?7n&xk%mwKPwz z66vO;lU0cVW%+G3(lSNOL=}qM$DwYwqA;REk|4k1t*b->k(_%!E1HyL`><23H;N8x zv1D?eyh$Vx$vwj+QAe}}X7`I7n?!@6DdUigb(n6AeF;$qMU_O!igu0j@Yy7?6@5aw z#K&d2dZGqJP2)10n*>`gb**m39Q+jp-aHH_PEjQ2Hj7k6eL%NaWJ_WrZ*J}Lyr@z% z<>o-27et++MWEXvj180ndkE-75vJ&=o5Orw63HgT_-qroCUx=IAxfT*>0Z0Jug@D| zt)k;M4+Pq-sQKn}pWVX#q_k|lIn(DqB1e%Je_pQ^n-t+&{`QE(r=(@;@i+UtBhrX) zJNnT1j+jj(uPeSM))K8`!*b^PyeE<>Fx^U)om1koS9GY9^zq>PeLfOf73~?k%4few zej0Uh4)%%2B9hzRCt{Hz-2UpsS|YjqeJXY;!a3MMag<2T!43+aXDB~9P9G9+L^6j% zBAsX{t(6}V`I2bcJS0jKJ(1(f4vF20Ds!IoIV9YwsGMvg=njiiN%kE%FZdi5If~xT zc?D=Tk!+VEVj0mXek`X_J0dEiCA8qXK1akMl`i}iUv^YnP!vzp?b()g`N-#}$RLt$ zU^y;Un7X4r$Hf++r7(y7(&vOI+=%Jqwo)&a5v^hO-tvo2y_o$R>ejIJw`jg!iWNjF z+4fuPzNbWkBxOw(RuIP(fIs#P@ zwRqWgO}dlP5>_Kpz_Qt-G~Y8Kc(W|^iKGnQv!aipuaa)|Z4lWeO#mu1X`1gju|iQJ z`21FEF)7XWyx3<_hVMmj!K6EUzZag*%lsOX7W!Tii6)i#{va|G;j@U1B2SS^PozaA z4RbV#6((gkeiT)T0>SbpvD>6!j-N!GNg0lx#TiBKCq3-jB-jhGEclFOlkhjm>G(w? zDyr`KuG(}7QWW3wQQu~Gerf#eQ-sZJMmMp$!uEVg!Df+l;E_|0NRS`ZHX}9GN!J9vBdBWFjD^Xg#3OM} zP0mF*mt>J8EMu%vT1p!k{(|g(BYC~H-2`|vU-=&n;g(#iKCchoN|w^wEb>rFF%SN0 z4_2Qt)hSAQp1jGJu!;Y+JcG#+WlLS8|5qtqmeZP}HEf%Nxww+_A=!qcKgnQ{VW!kr z1clR0si}S$MKM;1HX8e{F)b}Tmh7dJd5xnOlo}gP;aMax_m+IEHnJ90KQep=*<0f= z2ENWjQr7qS8vRe@a($^}`@c%L?M`^!;{I9ckz?f@2SW9@l&kC^D znDk%`ze|2(c|NA_L6W!)YU~7rb@mlVgEfE@?DD_R{!BJf{#QSod}>Uee6{@7+gR%o zMwTcw7DeG66z*fjbB3)UYp1hRikBX)kH0=f_O)#JzZ*H$@>ur+vX`5vJbVh)s2xZs zCrF)PJZGIKCW&HXU98?@c=A8)hpqP4TmEx-tZC)eA$w4Ut=fMM%Ml`Tmu+PoMHuGH zXDZ5Yl9?bimSYK*QTQ>E&yaixq{d#SupE0wBEi%D#)4hJK`!BYY^uNbU9e5V?<%-mLqp^^^*w#^fFh#|eB{j$(F@ww9#TgVm4p z@FCeqKQjC&#e8mwmod^t##>`#`1+Qymc$yyvT01Fvc^YE$M{Ylb=DUod{>a<2$EL+ zb1X4d5C2@FLs=RTt{mw$?)~q>}9#1MA^$}Ok05o1M<0W+Sr{+JkKD5UYgl74 zFS&im@V~XunA{)Av@-l()5@*5r3_MwvSpjKhOchp*KYf=Wv*@`oLR%usE%^$LvK1; z2{8t3iGsF7o7xhsHXF#M^18Gb58qrRX`P$NlFONcERR+Dz-&ylnq(!(=Sa#ugWOlh zy#dahH1+~%Ww_?Qgmw18U&a{hV~RfrQe$!sCjIijMi<{TKgd0m4C6T|Xa5{8ZE&x0 zt))C3S&vQEhyO0-@8YdKrOox0*V|x?G$eLT)gH1?>a1!UTP@4=d*Y#*z%YNbzkhA6|IQNGe%hOPErl2*=P zu0MymNLoBY;mjJA-mJB_zAjCaR$5AF&DR>f-tu~TtBp17#<|$GwKTiHcsRHHn;5)W zsME-7vDpQd*T&RZV$dfi&zedlV`M8y*+_ZuJJ3=dP5yTt{{O{1T(+&813Rg;rIayp zv`8Bn_97c=ywu98G%}S{O3Ulz-(9KuH)oV`i;(Alcr4Send@TwU!9H0Qdy5X)+5N( z@L!#cPP5cn*2P-Kf4??yeLMVJ%#8oh9Oc%8Urpjno_$|0Og?Jf_2Olfu@rS;PO{QeK0VdC9RV z_kQvkK5j=E`{%U}c~&mBVi`u+GWM{wuf0myW5LxJxw3<6mvR-U#ZvZBip5fv?cdv9 zZ#mxL?KTR_n#$`=az#?Ev|7W~x?HUtXIH~5HO2K)jZFp5I=kJHmn^xI*Qb&(ID6rA zb>*)-OPhJu`LvEkbzPKJlrUavxl;NMFv58WWA_& zzJ##G&QpwaWUeU2UXaHT8J4md;x$^S(b;|o8>)A3zoAh~OMe~z8%x(a(J}y}oHcRQ z@lFk5A|dA5u&k+CWu|?I^@`l}*XUj*&sH1R!t%TukHs33;j3+UZSTl!N^VE8HRM)+ zYgL>bCjTd?oYwuD+&i6zc%3zp7Q=9^u@F_L&R|=P%YS!G_@6Chzeqna z{O_+1qh-rEjtt8+DJkXb`l|fzTtk*KsGd|)8UDL=P9YoF&Vv`~%no-7xWNzq_k@rq zb7!sK=LJ7s_ys^H1b%&(H%M=Y^JN(?R)|sWU8`vP`!-ugb zo({j!5H|+=je)ddAmteFHxB%bgRgsyXBqr9mdYox8`&iIKaZ8eFO^ScReT2gWO{~uwg+8UOnJqG`;h2J{(J;jQ&ry;MWA+M()ucsleXCbd= zS-G}}m1*!5YzE)A)?S2izsQpLHddqUVEf=#r|kis@4*kg0nI)FzaPV|4t@vV2j524 zKZXAf!tXGotq1@0;QwFf$KvF>NXG17FlH@p&6G%=YIfrC1NGB@=xt}d3xsu}7 zk*p-SndB=Z-ypdMr|Tuh807M zHt|#N;63pvzjN%8UjW+!K99Hd(z{MP?R9`X3o!@SfQgtk3SK;Rj{Ovf;oOP8`GxEE z2Ex}r_054LJV1XZ@P3fTNnQ**0yb+Wa{p)@pX}(Yzuu#jf4GkCb2y;AG!fe;wMT&e z0d3brPul_QvdE_Z{eefVcM@N^&Gf z{1)91YK?Ge&tF*Fq#6DrDdra%55LfOa4>ui1h&j3{|Tg>rn`r2_n)S3p7f^w937uu znxo&+qgl*>e49lv$hUoq^}}u4^-{fQQhva4UCYC_iU#M+3|Og0=Rpf=-Fw^-fIf>M zrhneszAN=*;aO0}g1qGrGe7U)fMO{5*Lo$xr*JE&ryRU2FEkKSeHmD(zXsmW=3-z9 z^(L0QS)|aH=u;SeWj=-Bcj!|Xeq%m`{G>4arhE#+Z^@@H{DyoA!*9o@kpC2Dy}l5} zZ^WlC{2F`;!>_=nF#P&^3d66yr!f55`)0_?$wtb2K?YEGxPdXFjY@s^e z;1zxT8=)QDr zWK4N3Xq>*P%ZouHp{BJ#2egS(J`Qs5nNto14dJ5_j|Zj5e&qN>@DS>2lt)+!?=j{_ zuv{=DG!REcdvBCS*f`McXM4!fOD~<$G1y_u_6fIp8P81V5*%PuPw5prj<<&q9&Q|( zk{ldvd;xMC54p9NP2devB5ctHmS+No41zlwSjUy%4c-&Wv6YVTj488%CqSv@1y}0L zQ_ky^x_#<-=-Gu6cYLE|4tpm^h znfkWx5aW}n9zLCo&!-M^9MEE5%uL{aO#Ku};+`KGGJ&_v$8a=-yOHcqF+(YwN#Ps{ z&&-bi`$ZH}mLCV<**^V2HpFK*$3Y7?**IfkJ{+YC{L1V&1HVH%&cLtAjx+E(w-bz= z`NJF&j8Ta>ApzQ|E|*26{(ipZ+u8Uee?!O|@b-F03K!Exi8I_zE7(f)Z3?>y~$u$dOs6yl&g&m4H4lD+L5>c^E(o+oYV4BU>^8Mqx) zLQLDX<7m8<@@3OX+m6%myQG!W@|FDCX~panu&E7w#bDEYA?%nQ0MdK<{!p|z2r>}j zPqEDDTii~uJP4O^ly4ZTr>BSQF?K-sfL0r_E4Y-uH@&p&2L@_a@&Oaahkan+p1D-N zGX1FUF(b3f{IF9-{Oyawjv1-9-wQJL_VTdHM#1d`#$^M?;V;ylT;TTW0Qqc~L%etU z7LecE{%Y7S#;>Jd-7-zRoC@m#nn4e@LZTuE)%Js@-zE7sw$-<>0RER|?uE8{=p7Y`>1em0&rfeP{l{tjnS^-!W@G zg#R<^uJ)z+hqLYniT&cBxAwduY_lJ2|B8@36+HXt_HT&u9XGY#LopwKpY4$Lp4mH` zC`U&`Q(Z1|eDd}($0u%&fsGUP3^;$7z+L9tXdK{PbB@6F6+8#O92haD8n)|x5IzO% z`BlUzo;By&h|3~(PBGiV?waEkc>wkRa7+Zx%VFQ1Keb!r1io(0K-&bqZB9z$FJjM} z;gNeF?GeZYXC`~#O{0rpzcdhzu-t}EpK)8;xvxcXTm0Pp>>TeiHvlA#sB=7>!ne+C z7GAbhUEYm!@Vn=R2I8LZ!^i;JeRJy~&+#>L;av`({XX&+wr%dGaKy**{K9t3`X2gp z-`wD+Q|#E>k^B@pJ9ki2xNXeJqmtnpH1KE=_&1|@Go%W8XJeRFC0ra z!^CapnYdq=5j-|-o$dJr>0#?^+ZMbX*HeFUL4yA}W8ehbw|}{yF8CBXzX0pIVdj@{ zxGxHdN7*gX3!X&Y&>H>pi0?^9pK(x^GzfPo$^e_x9;4$s!&rJazS8C%_GtWO8*T+& zwx^5E>zi#jwkvHoXFJ7SEGmZhYKY&%ao)R!-Yv0*8C*SiIOV#K;d{>?q~yi?JlH7FSd4YU4}!(%b{_%k}fc$KvJdcGhr&ch>MZy3X1Y@RV9-t?o{gl{tofj=L_z zt1~v%f1vU(% z!O=r7@1emvGdbp)#6O1|cR~#0!ZF`!j``Mb^s|>^?)y0UspIJ95Jx}tWPg(E&yals z*58IEo8ry?6;HsP7Q0Zn`%)_wWy(5?4?@lqgvEaEe=sF zj#4e^sTL=x7H6my4OEK@REtYg3;4n&ls`kq@@K&}H0>-~$MWaE*8uD+Pw!{5vwYGP zkajj{3rSm~W9=5{Si4PRvxRK7l1-hCE#_%-a&d>Z$KDGv5u}}^8<D%^>%R8(rPmJ~0Mlow&`_&MpaT zfksN(M7hV=&}X8p3v59Jwm-pgwk^yJwj*0D$O_wGkX5#mAUD~*2f4*&v~p)#ZIK|i z+Y&+Uv<(Eg+m-{e+BOYjjcpOgy|(*6?z621S!b&RdC0a6VhqhXdFB*?w?-$6Fmb6e}|f<3=Av@m?<6j~T8;fW4= zRcr9(_y%M*Mzz@NM81+Uj2ExMSPX z6tme${+;CC73C6=?cFfsrzcE^9O#4EcS)WmnHzY8AM`H)=^wBpu($o= z*mncb<}}IVAkY9_0&3KpsXR8 zIts&QNakf>*cgqnYz)c{V^LORQ_MJ&#(0V$+2Ixp*N{xU?F!%6F7-By$))fa8J=*3 zH@3^0fbkU+K1tG;h%sf8$bQNdJ}IIC=F8E#c`_a$E-`l^de^38@{@MQd{&W53 z`!Dn_@n7oyfd5MWHU3ZezwBS_|DOLo|HT380$vDsHNX+*9@siCAn=pG!-2;GzYhE< zkOet{S_Sz81qAgD8XS}!baPN{P=3(tpoKvX1g#EwJg72gd(fLf)j?;1z6)v&(t_>5 zZGuCC zQukFKapKQCa?dzc@LVJe|3L6K<4@Eo{u_ag;8Zu4@Ol*JsD(CBW_gQCYo zkB^=hogaO7bXoMe=!)o#(Qib57JV+-9^)I+Hl|BV|CpsQJ7f06d>->-Omj?|*s$16 zvAtu{Vn@Vg#*T}f5IZBbG`2kUrP%jlKZ`vRdpY*kSR>9OE-WrCu20;MxZC0;$IXnJ z7q>93G;V3!196YUt&Mv*?!CB=;ts@p7I!YLDNc*`j1Q0R6rU15F@9G3-SPLvuaB>a ze<^-f{73O85*{rHFy+>#?w6 z5yx7?I)xAG2G`ne0L$*o57sRFSua>0=+6RKG7Ew$^1*BsmGr&MR+bkF)V`7L^0*6}PY|$Z0dXjXe*!ya1~r zZ?Zi2JpB}yFXzMh#7uZ&>MZs?n+r4NJJ^S;knLyl*e6hePvLC!AiI+t0q>u|D#;19 z3O;SS8s^ZCv9H*AIDTz_HHjzSnsNoKNmRm->}i-yKLf|RXJP$eBm0p($C}wD_6Ow7 z_=}A5t<1q+VNO^j@!~s}KYtC5Y_GGn{7n|d53zRqFdPAounzn)){!4&5&Rg7;m27V zKf&U8Jxk=D!`%D})|Y1G|ZT3oAh9*+_l?j=>k% z7=D?JMHVN?09@B+@?*>wH~yB$VVf=^o*Vf%fzfc(sN8^|-h zJ3)T$`yY@}`;%`CgopZ}%x`WXZ3FT;$6 z2i;(-Uq_4|L~;blu^sWf`?r#OzvChZ%M#udfqs@oR6~sPzc#Y1V9eTU7o#RX%x_WH zGPY=xGDpwosSxiMJp-gndsoD35MCOw8|2!^Lm*E?qyM(?C}ZL=ZQpn-$qJ~9B~U!s_XE*O^fBf5LQDeU*H zfpgH} z%F@bm=8eL-$kLt*_3_3%KT5fGm3uRLW+KG+Wum3r-^OHOjvs~M{_0%lc+ftQiCga2 zjwrWf&VU$sG?A?>k15+SANtF9Ykz%`xf*N^kvtc=4#Iv}=rf39Xcp#cEoYz6(XC-C zBY9(A3{NCEo8-34eh?EKhPCcL0Hth!iK9~?ep}{fQ+v;7^!(fy+;*-Xr8378*{GE@ zk}-anlYJO_U_8nylK&xjX#6yYIYZ%#B;n5;t z=vjzq)hoakzZs+k zvr++bRrr1u#7xp~zB&;khncDiXk9_t*<`q8;mM|e)L{1NfS7rj6Jq9rtQg?M+6 zp3EuSKVP4w`;=Mq^T{{Bjz^))Q76vKc9vPvm3MJw&L+=aW=`j1}a9+?K!Ua$+&SsFD1trp829I(MoNs6_TOSPa zE;a<@-EERua+(9-FW_85gSCix5c3sC4bCPOK==$ujeQMg9vsdsP@ZE8A*O-kMW`8Pm*9*@ zW8ahf5zdS_`-x-|+|8x2pFwgs=eQTbzmxnE&Y0l5jxUFJ7m{xL0f=!W*@{01@$Mu& z`NI(JLDK90q3&Ja3*)h(f z)zc$2>ggVJ_edHDOG|={9pDF9;1_ZeE`fvu7TCZBHn6}2f*nF~3CjXEn+GA;z$RJN zo6RoSyf^p%Kd0)e`o8|=p}{0sjH>Ia=c!Yt&Z{1i`7xyTBh11J_ZGxofDm4k%-ay& zmicjnw`YC=;T@TuMDAUgcOZTzLQqTQorn)fcqH>K#GlCg4ANhYFl(O7ya(|gM3^<@ z%+DkKip={EuS!_YydNnIgjusltI3>_@O0)Ekg|j@W6r{g%9=A0E@yrbDX*09hhbG^ z&8rY*%s+=^1xi4O+0T3&@z+RrA@d2OJeBzrQho$s#{6jJ(}+KfFoRw3&m#V23E!Ie z98%sU;X5-+imhjz~FCgV-Bz#Zi*OC6S2yv1%^F_pe4q?W;FY_hD z-z(w2%6u6q??;$5pUZp&;WM!MGT2Y~O~gNsFk^lVc3;+fLBd~$?U%tm3&Y=l{Rirj z@Jp}(GuU}y_#a>kX0ac|@GGzfGuVsyL&U$9`4-~;pM?K0^G8VeO$mPs=cO{{w-IKs zU-NB*-+-l^R z_egksb}Q0fD&gMjHl*Jm;hot_k$wll4EDNqAbyvG_h&Ch$^!^N3E3+Uz9xGm!cO)o zg#RLYHNqdw?n3zb>@^7Akll^&r?b}~{F&??gg=|T9^rekH=v!LLkK>Qy%FJuvNt3A zH`!Z|{)-5+=GpA62)~fM9pS&v-iZ*WZxH^6?7axTlD!`#zlsoe&OV6n>)D48ej{5z z`tM8lpR+?q`IdzLB|C!nf6E?3_&>5mg#R=92*U4V#}NK`b^_u5${t48pPNPtmm|!Y z7v+v1{Jz{#gxBOAM>vps0^#o5lL)WP%_6)GXAZLFCAl)fJ-G_P>vP8u-jJ&z{QlfY zgg53E5Z;t)AiOzu3hm#LYau=;;cRXR@gK^aL0HNyBRrOS6~c1v)d-)?y$0cr=FTB} zeeMFnH{@Q2@Qt}2K|62BJ&pLkl<*z7*CYPH+#8YpuO<99xi=x@!xH{d?#Gb+F$w=& z?k!0FxP+g|y$$LAkA$De{W#J;jWA<=87Bka-Ieg!+)pCqS0wz^+&hr|d4w7B#oRj) z|9=r?%$IWSLi{%*{P($^LCTjA;x)9~dl3H`!mRo2+|MKYo!tA7^1BlLUhe%!`8q;S ze(r;a|B-|*?D+-6uk86S!WZ@YBEqYBK8kQx&o80mH9a3k{QD#v==lUvc1w6&&!>=n zEka21o=+owvxIl{d=@EpA%ryV`5fZ+NceEivq*VJ!bf^OkMvQ5Su@u21;ob@;&x5X zuOmFt^F^dQiV!ll=Szq`h7d9rXH6h;CH$eDuOMYs!bZ>65O4MTCc;J%5AnS9<;qxu2Kt*L(gR zDZhpgv(}S=KKL65!L@pFi2s&^zthu;l;1^&+3DGY@b`K)BjpAU+;s6ml0;M zbNUeC6@*#5FJC~s(L02AUBch!9YM;M5JDpK9z^&%y+wq-*ZT<4zkx7o{!{N5;(v%R zYrfe#f$&?shY|kg-f5)&5klx2y+;uL?+9_DzL$FXU-v$al)pg;-*Ns4gxUO)2y^*a zguVF^!cF-y!oGY3;pY5tgxm5}gqP+|BD^fWfN)2?f$&B7QwXohw-CNKzl8AW{27Eh z^ULUEmxR~mUxk$25?+^oHPT;#5Iima8pL0U5O2@r&mn#TLTD-Z3y9y25IS)Fb%@`G z5PEO^M-YDiA@tt-(+D5VzaHUG{*4HW`8Of_XZasPIF^44!twmu5KiQO9N|>{ClF5O ze-hzr{v8NU=HH3%O#WSH^DIKFqx{bxehwj4Q2srLUqF~OPvw6e@uv}jPv+l;@c+uc zAK_2uKZx{qAp~d3{{q6#Ua|2V>D^PfQYEBQ|${Cxh? zsQar3A&K&zMf}$gg7Wj9L;MdAf?wsIMfhLypGV4b2r+~CFChFM`Cmu)zw%#1_`maC zLTEO98DVDAR}k*o^fiR{Zu(7x_ig$u>=fUW$-!zG%=9AMm*FnKZJEso@5pRLcvpsZ z9PY_nitxS+?>an?xg6okGB_^;uk@9$uO34SJI%|pSHVK~=e=7Ip6%^L_{!c*2!FVD zGs4roIfR{F-f%eIdnv-#_VT8~zv#Uj;Zwa=Ktq3f@0IYj@88TD3Ab(TMR>>NO$hJW zycyv=o3|poZ!_;LJh1svgfH97`wI_mz8vAc%{l1$Q=6~EzRKIT)V6%o{M45Emam(a zTyh2c_us$m2827e?Lzo{+pa-)?Y7+rU$X5wgfHE;2jSjr*CTxKwyP1|wCzTOgWGOK zxNjSF&CPAwZb5k0wp$V2vyFEX4xr?7<`CL^&ipg9`J5R?o6ng^wD}x7CwmaipiTJe z(ff1eF|_%d`2n=~oOwCge9rtJ+I-IZ5ZZjs97CJmF~7I%J3YJRfBS`(+_3)!llfw{ z^3sgSX1|nOz^}=CIornXhvs2HWqUeEfc^!O9l!7&`BBIi+=pO3Qg^V9s7L8yaoF)@5T<$yD{VM#-7Z(u?zG*Sa%;V{}!|VOZfLm^9k5ke~jIm|AHNx z@4%M&4iNJ91pk4t#@te^@-kCv9KWMpX%EiTYNl9NT&&dRD$OW0N+|AMs-5&-6N~L? zqkgDVpQ{C>hZ@a_S!k6T&06)CnO<(SD+^}g*efdKwsCc*PgZJ`cB5|gFU`+an$`O8 zuAIVLW4zLK$tM0eS!$LRDsA*ysJE&^jas8QQ)w<#>!n&$W2C+WBO2L-cDq?Uw$!e) zd}%XUIbErZl@=G#_ej0nT#iP2q+P9PwzS)_Lm0$Y4P(HFTc$W#ZM99&Cz&Fg~~nPY?v&=8^@4Gs}w=GgCR+ zKH98eZX!qyRD))fAO?#QX1d+1lom{JxY}B5v;@Ap=RxOu^@{zOUicp&Y z4Bw+h1x`46mbNspkk)FP%*=m`O;FY9eqzPv^^y9vD7|+8MWv&Oq#5gPcAJE zSN+7zRBGS~(Fmr2z)IV#cl{cwRnd%zlU}sqOrcgSwWcbV-zuni*=GQS!f`-#^VQ>8 zZn&{fs@8oOOkcIE1(up6t_G~Qg+;7=uCg%0*GcOu+3xVfSXkLSwonVdePfA&J_EA| zt_GGs;0YT@l)wd_)5Ea-Qta%!pCtjvLVg1EuD?eEcM2?D2S#z3zi$5wk7KpY1lbE%`8?`a79LYM)0 zk!xKzP@#FewR&+WQJiU3*(9KmY9pshwIv}eS;Z08w|pKDV$p*(9OF-6#)%TzM50}Y z833n@tXQ9KSV+f8^%C)*!?b89E-co}qX4TS+?06^S}f+00WJ^JN*Jvr!Ko!I;)TlK zG)7gbRbOdIG5X|62^$ftJKAE7bO>S%iOD3s9dQ{8q?-sg2R51G6cz-=x=?CUJlE_p zCnNHyg=3I35XfXz@f^pn;;F?}P0Zguv`17KatWgT&XV?YPDGA zaHU*raTUvij&Xh1d`Xxp)sI(Pf{ukSUM@`?Guf;72yT$yQ;W}>dKg^)G+GPLZe-o zGbg}`y20g=E>U0%#wxji9KlLXfPl@ zX-sst=!-I1)2GWPDhnkrt~*{~ifUF&iMbMRn?!OXvS`(ym@6;*Dkfe%t2b5}`;-*s zuXTM9E2P=3W<@g<*Xk-wpxJgjR%*6Rlxq8zrz-Q-N{SbT3Mf3Cpanybi=Lt;V=(B)k;OUi zP*JYChH_%5J=Zu>PeE21?2sr^l~$#_{^CO?C~D?n6>3(B%38F{MP*L309&vWPgk3b z`T}@z7ylWhJyxo9rH@z6jDjn7r2}zg@YrHEi-RDXYbiF#8r78^a$QDKuRMhIn zyV94-uyNHcHzNy+ROp?$Nz+&y4kaRndBL~UrqHDD?t`_)u@cRgIG|3Q5kCi)J~Zr_ zO0Sf%jpHa0_8RcKacBa*`$R_KGod~jdMzgEA+FbssyvdhAK^UUqFpGX*<^hbh9LG3Wdlfsva(L zpi#}$=`kyzI+hL*DP18vK);qLEVUbxjYUbq<#)gN? zIR3@jG=d5<+|Wf~j#t{V)L0Cdmqz5P0D3$P-l&t;GUeH(2wx@O>FO&hiKMa8*`X3l zNxDh~#k4#?FC7cA3&PMk(WuQyKmLn(F=`_V-o%#?aO&YT*1dH0J77$(v58|BF z!H2-4ni_{IuT^M?`=(N8`Ti&BiVus8$)@#-4V|c9s#JjhN+a7$`nMKt%XYpnTN72@ zEX>x4$%WZ=G}?vP3aw=)Z5L)wU=S8Olq*%8b+Ry9CXLRac9TXL9a#sL;JT9pDm0c3 zJ?t?wX`6x~3swTk;gJJ{Bcn63`;QzrFfuheUHpL&MP{SbT9#QEl^F3I%rcQ2e9C-9 z*0fAk^u;`B!<)r2MQqk5u@w0P3|z2)HjG)BHfYBsfnudR)}z|wZ9&`h1q#$d9yr(?ATJPy&pE=SxkBs=!yxD!3ix4NJx9t%WL#Z|@si>xAWD5XNzzga3lQ1lakeS{ZCwb0VsKU|M;C5b zkKfvKJRcT~@EBJeobI7=UXIR;USz=a~AEDb}l`IB+E*;~3n=K{tX+XmO3&=^$BB)9MMHKvYXD zs1TLK5?o#uxk$vPLe#=XE8%rnn4JrUCxdmZF~`L%rhs=#BOv35Yy>VQ=zMYB{TF9b zAPbN|NWfa+*!RP?UHAm)z>y1^PfmN+togb!Wznoe@+F>vsd7|kqa>Oj6==228fN$} zp*QF^O0m-tlQc>jAv{Lxq!^XZ;%Wm1qKOfpI1?6;)jBq)Y<5${r(<-$+ zL<)nj8X$q&D-%m?s*{W=oliDeY8}vX+7blKl$rorAhuD^GK@;@RRPp9++CSzNOjB( z_fWvDz>{jOjIBkkR+*hO`{DIG(Kf@?1#^TFgL`uovmcuZ6lKt@u}gBOItOo#=sWQ7 zpJ+Cgj-NmgDkf84a0iP2W+4NF z&{VK|uv3TlF|_OAaD%z+IU&?zFi5asSdf#4X|mNggZ_(o`=e%<=f9X2srkyAf=}jx zeuI8|tGazU-HGzAPn9{Qo^Z13{+(w@Z zjnmi^lAnTYsU>1c=umr(AUg=#RCg}v_7~JRb&Xv|x*NI|A1JiW>cUJznwn{dsZDov zl?Jmw0t>FSgeh~aXb~%FylvAO40cbkks?@0D@8+oP=F>DRxAAC81; zHJ8$IN$!Ax&%heAiCDMZm>0TPfM>Z1@>I=G2qm6`5yTUU@lUn_bs-X0F3xm-;P$Aa z{A3!-jR7bywx~?_Ee^PfsJqjRrDnO}a5-Ep9j`+^RLgMh*bVp*`o2US9put=A5>Ts zLP13griIyspmzs-63P%FsJKzfguc6TqOm)bWvxBJ0yZi?2f)^_Jz1Xi9YU z-wQk*Cn#z{fN7M}l%_ai>N!K9R-_e#ol94-@x_3p7KpPCt|~r&mv*U!_G)NG#d)#N zqKK-ruvv>!Cx{P~YBh>;vmY)zI6GmBOHAem!eCC4@T&>(#bEz3G=}L)<>UmklPWY1 zL=m*r(c@M?a5!X8&xzn{gPa$s=p<_>jd4DQN(zFFOQSZf{qw_i!6>vZX#Nn@oXF^- z&>|}*b|9AvORUEz0BAnI=f=ck}kmf^w2 zc`~TU=!ou0ql)s;QnOA47@p)RSR~QMU1m%kipXIl^GKyxuheLe;5Y$%C}y|>H3&Kq z9BL;3x7{7bvL*x=3vk{vaDunYk)`q?H7iVVtnh8-Kzq@Q<6mKEt_q-7XLx1knpS$$uZm!J=)-=6goZbk(M11rSMKA-xV`-wHTD{$pZ4JwoaGb<@ z#HBgiID&MAQ%%+0cnZ7Jlu0<^g${yG=E}IDO#kJ(9Mp3^z}VcPJ^aIpHY)U~M}mrz zSoC@>$@d#2v7q)HC3$078^e;Yt`H2rDW|90(A>8`>OP`|gkfQ~gJXnJuHa~Au7P0K zevozy39zivqeLTZayW7_OJ-i7wdx}^kt;YJvBTe#F#<1^)*r}z; z5-cCfPt{zoc&Br(#BC9fb$zLXZ8CH%q=9;88qJf3Sy#3QG*!TZq_^Zlh~e3A8$B}f z;WzW)sijuWlV!AmmKK$QQj%?H$`i2zhz1mkzHNSWVQC>svt?pwEGNUnnKSiyDSx9C z<&#*-9(S8=FIxc~OJE85a;jyFm_0^XR(EP)?iKLcvC#es7>IT2Qtza`3+sGwNphu$ zVfv16sAGx63(xdshP&@kKV!n;U55ZC} zhe|cj)Uu{Tk)u?lv;wq>6CxVMfqDMpT7mz8%h9?aHHI91=YQ zb3|(M#Hf5Qhdh*$SacdzizToGg(?J?J8#M|i6oYy} zEb*=C2*b9$hNhiD35-SiG~oucF-p4RXdtT^Uf_aZ| zC}$}FY#W;ZlBQ8P#3A3TjZJ+y?i{rnOCVJQ`LR4=B8D2yBBdM-U5-`3s6oYTY(UDm zD4wZaI%1H5B*Zo@z|qN3pm)8afxP>CNTpgfMfMhQIGQkt8iYYS(hqGTv0oIC~3Q13onS-s4v4Md0U z91dj;vEEN$qYZ08H^*;lMmXl_Ip`I7fx$y1Gc8`Om4W4G)+l1fvqq_j`l@3p#BVil zBDnCO00u0_vM4_S*nl`QDrfw8SiLkS&0rEBMl7f5LIae5QY(=vws^IC0Kx?8R2?Ah zLwua>L%mJ57-?1fO!j-MD%z(#6kzQlY{WqsvL!Go**37J5`hsom`CcIwK)tm!An8a zZiXdC5lBU*aT4;0&LJCzb!215v67RB24>>qh)%KRz%;BzwQg7sn-188VvPPEoU{$uB+slgXj zHi#B8F+Xn(VDGpF83W1X)=zIgSf`$)HaX~TIS@-m(AzZKZS)ATQ^RfU%A7-p=#P-3u|xq%{3?PL zep1zrK7y$ZaC5NI)}CP=mdN-y633WaS_C9e4A9ggU@tIQtb?;Y+TaZXxx!Mi6AEb>_!6+f|!3oo{DPHnLz?OE|9R8nklImT1iT0BJ>jVDRlE-BG)ywPGSY!K3u zhyHxcSVP!b06U0yc3cR?c#+d1XHHZxs`zAy7*TJy6&;p6ONIy~o337U`yr4R9DoL& zfB_Nh2#7<^fNVog##3G6mH*f!hI zo-85Er6tY_EVeD)g~KgQPKz7@;3P{#0`=&@kyu~G*2z*E_X@B_M(ze=mLxJ!m%DKI z7OIwoU&EUG%FsR&j;s2)0*V)d*i zv)~1?^rI6=uMn5K*Guua*aR-SZ;cQK;;v6Nx&j!JQzHk8kC~CtvDuMFN5*F)Ha0Rn zT{t)*@yV%)$&sm6#85##3NtfPv!fFS z4~|S3iO&?#$4p^tQa?x0_o&S|G&NEf);QigC=|yvUK|E=JmM(zk4%qDjTgp7^lNCe zFg>l&v5}cW6Sn$+;;1b!S{%1AU+K}p=#dd&8aUN6Z%^&pDCdp$s_wc&PS;eN^3F+1 zOHY=EPT~xhWR)O`lPEo7N4>V7?gWXt?&Jf4lS(v7#HzA}(^@s#sk!*#KGI!x_-6Dw zsBg!aHkL3gsKFsx%TboKi@RS{nIr9p_KhC5)QsR@r{{+wa(7Y-BvZwYfT4(1?=?Uz zOpOI6{h;gUH~AcRH!qx$b0NLR;}kd+0=7Y)8)gQ;FGx{;Oo2@RS|VTDn$27rM&;*{=Pf9gCkx%4l`cCo=bEh zQk2ee1=rZ=dtOu!z-^<;z0k507@A~yzNgXzA)chcPIv?05`c*kBjCANp|_PIP{g}0 ztMzCWn5$gU#aSp0J@^D1k-n`<$+}ma60V6X=4y#EMcgaSwVaaERl!+2w)t2Umv_(~ z9hIYV4(2#4v8oD3EXlP-6-)dDP2vReAbwko*I-8TtUZ#;9yi{S@S{$qMc!v;bZAlE zjz>?}i0dVp8#T95fkeZ0a4R+)%TI4SRzxJCW4fR^S~k!Fg?e!4YR+;BaE^((n+DzV z^Uvn!9LP?fPjs^|RjSHWobDWwh%Q=Pz-ikRu^d^Z3sopDbK~}sBks=GGi9Xfk(Dx8 zGdh&7ed5fTywSsY@f3T)-K}t_E^<)XeYaAs%MY%0D;`JV-CiezL={Iboek_WYW8}# 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 MEl{<<|Cbi{PnGciH~;_u diff --git a/packages/NUnit.2.5.10.11092/tools/lib/nunit-gui-runner.dll b/packages/NUnit.2.5.10.11092/tools/lib/nunit-gui-runner.dll deleted file mode 100644 index 35efa737c3957ac14e4480d2a559ff4127298597..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 188416 zcmeEv31D4C_4mz7`m%LP)4rrz-fc_UN0NpvbftxEPzt3jZP|sAHm_}Hnj7v*3MCe* zfGC@&D6&HVQ4~Q1K?Er(3Mj}XAZi5xS^UeQfb4v~-sCDZH&cGM{j&+ly_2`~wr(oDf7q=B3+^AbY)x~< zZgZX0ZsR(8Wn*ir({8Uw+ipjz-P~%=U9{9*=QO1odi5&XO|xFSuVpPLD71P%bHPDg zZckaUVdVuSmUUyyvTOz2dcO`og(syWyswfQA(5X?%SLGc-=nP%<(hfAL=X?25+XqU z&I8{A83NzFWeR5g7Fs<`K=)#{WuXNAUkT#-`!UOEXiuNmj`*|J>vFNIB4>aEl4Bd( zjJpybk&R_1&K5jFe>0(w1~=W}08z=RbYMN0g*Q7ymJjANkk>$719=VPHIUapUITdz zkQkN_%|u>fL^^^rHIeU*5kZUiE*c&?ou~aY1!qPsL!m>DSr2s1{i#vVraIl&#b1Lvt9)EBys8an9PB@kL z?OAeebK-+o;)8<99u+;t^e#zU)J_zqze1n0P4r0?@rmOM0DiAh7ZSCl5@fGA_A7QF zP+MuL3cyq~xmqq{X{#)XKR9oj-20F@QJjGwt1OCjf>TkkGYBy&)>)27MUfZ7mOznv zQUP)w%#4QM#~I2{4MRd=)mDy;S$m*j(HbhOLWo!vA2SrJsKEXb>#bu>5@f_IOxX<8 zTGaUg#TNIGDrC>dD; z$0mnnYKc`B025Aq5OJ?2iLMVR{0DIqF`gMiss@EfO(c`{tI(#AC*kgOp*#g~RkDwf zCxKO7o>)dyjcYqHI#55nE|Ls<%98MEwbWJ&m7FH1(MoN)nbx3bX8KlVW!a>X;_DZ>PX z$Y!2QMg$M5Tn&a;82gZkaUE2 zvlpuBx+lt>N$y!8_JaF38=KjM2(R&S5ULA9Ik0m>E&YvpA<(@)#9OddC5IT5BEV9Q zv(Wr8#F@52Rl3QXaQC$kb3xplmA=g2Pk6G-<1b`Aih_!!0fOH9g3u72aJQ0(yQ`WP z#AqiMV7bR!XvTz?)1)cIXYm)aKQF{zaEDNSvzHT|?CE78Wb1+~l%-7VDKhHFM2Xlh zftP(G%T)_NYLY-xlktdkl8rMZ4592MgsL(jtQ-@B%CWJP} zgwVp75L#6eg3@}Bs?<~|U)=4ax~3u0{uvJ2dkHv^ny#NS?)B}Vr$8#bF<2hrw z$MY>zkBsNgiaDOoMa~;BL&C7SFN2s5c|lBd5ZsT@z7ib4Am%iH4rdV4D+C3KsgQ?@ z2~aRFlXJ3Q!&!uo))$~h>Az@nq&>rsB80Y_`s@I?yF zVz_TJ*Tn(AJ{Gw;2P*)}=l19kU=WZz!b_%#lf6AnF;-*W8nwR!S2;@*Lq^<6GSmen zpxRj)q)MriQ;Z@j7P`p70y6poDQkC#Cj=uk_7zbf2sS1(1jt+~GK3NC&p3o?Dy7w9 zHd{}%mlY%S7UX0f4sndiWs+lsJbY(B2F?Q)X44vl!1_rHQz6 z1fZKstK!a)2%LQ!z_MiAT$(uwfO2i5VEW67oulzP$|`Y=!Lt&Jurb$d9a7S<4m4av z!tx5Rq@stj92nN0JQGK1=UDvcB_~O%L!1*%BND5e6{M0CZ5%5vu!TNjR*iM!iPjKA ztzgu!ur7;Ps{q4zfU+x7x{~=c`T6uL8FN55DdD7%hVh$vi94WH`amIBamCJR((CTX z22kv*@gZu=!Z;7nDxr7gjj`F!8;ULK*)NuY2FuE-%Ik*4L-xJcSxZJO_&K7ixa#oo z;!vUk1(tnK)T?yNZ$r?8ki?Zagfa$W9oh%O6^6hHE8{R1_aU^Bxce{sCeA*dHP;64 zH4LTjQ)Zov1$2?SdmKi_WjvO_syJTWzh`l03MpKxmsXUHsn&>#e8fx!=sm4sXBhD7 z%Zoef6nb4jLMX-~sU0X-`JW1+R0qPNRBjg|UMdTIXFc<*t}K~y7^WJr9>Ak^Ccu#_Q;&cM;x8;ECe2eBx(bw zBJP|`dL_Uucuf?hujv>6?^)WPj%R2PIB5%HzIv*@Hv47Oo#8O{Jq;`dR za`R^+j6hMWXe0KNiewKcX3YmZ8YcTYq0Tob0=9`@;Nu?b0)cgs*!d>H&V~3a zy<(D*a4sTRE%?!X{|(Pl@-1{O2E1oU)e-x`u2}nq{vCrb^7jALeWoyT36NpRB(F=! zP=}dsC@3Ptoy$TPmor>9P?zHh#0pcGuEm`z5gb(qK{g`*;{c1a5V5NelToCysBQqN zR>lz&yP!N)tcnjHM1(aM^VHVC6-D6@0kF_`fI=&qevP%;y%zMS?D!-+(cGY0=W2v9 z*WjnjU5omTIp0E9I=Dc~0TR_uX1 zr2aztf20c53yfv27Ybo_OQ?MQ>4`oDBh2o<4M8@dU3qi5a+Z+|f$o<>*$`0W zd`IQUi2Xf`H1-c5q>(d|{F$b30fs+;W%-l6ycw*-DwCx~&IG#GgmNapz6zNo8;qO? z_omABy%c6Nm4)^bnYmF4bH+td6G9znhzOL37%{((NO>{Zv+BCn$AwP12=e2cg&nSE zkZ&wr$X)X|q^lrpomI^J?m`QtRehyMnCdPPD^yWMgGfZSLU*t)8&YrZWh-0EEEKGNu*?Xl2GZ z%a_pMFcU{x$oz_oiTPj&u+)*uuPJ0Ka}SgDK@$2GF*5fOFpGf9eGJYHf*3_T=zc-) zz#zDP5S$YP=LW&~L2!K##Dv%5dr}a@6xM^z3xcRk54s=-9u)+a2f<^4;Bi54Z4h*V z;L0GlA_%Svg2x8I#vq6_f+r3Z30@GhXD^ruf@mNfv?U0BCI}uB1Q!Lt#X+z$2p$mx z4-SGbwq6!ZK`?Oemh%jA(zhiK3 z26c;nkbs$z_7H=UB`A6B$zUgQcF=2S?U=O}W~vT*GZprvD(7K^%Sgh$0K>X5ZWHVt z47=b>Occ>00g?Se41;*JF^CH@Z|hxH$adc#Ma2&5Jc{s;b4GJA$<0spT-p3&@7P?7 zJpwkc&Bd6kvTP69hVLOo-h z?Dq&^3}Ux8C3VwO=Hr31m~GU-$f^_6Cls6l`$b~JUWj4Y`9qNE9v@;u46v#9**vKb zS==g5GmO}aLTm_dzY=0Y0N9L)vZ1o7JvNNEKMGM104fXxx(qsVYIdMU#fW=Xh>GeS ze%Vncvi+AC-Z1b_{OHM4|lX~|NL4`c4g5E+{vPU#*~ z70#GZ7PiS`xtGkCJ3mCthKe&XP0g4=&DM)~y-sG#T^ph%03yS(m?E5w%+ ze_Rfj^hXYQ(jPhGNq<}`0d#f_chVm@YDs@=kpTK5N1>ooF$4F6kXQsjtcku@x>GUN zD(8<%Q;hgMOr`uONO4aM@nb6ZP4oHb22SDqVycK{!H9c7hy?*)u~(D@i|zL;Mhx{+ z7k&?7#7L!r{2s)JXnAm;<&}VmmRCpsCUuG2(922bE0hsKp#(sn zSy6$QjjvEf422Q^s@YL0%H%7Q5ksLA)K@4YhH3}^PuO8oHSB}F#`alaCxA^=n{)+QAT?YDJC3`wX7zfCjZ-W=jd0C-|3H+ePz?n}Z*)W)O%liFA% z0o2B737|GwC4k!CEIp_Ma&hkt-hp@C`I0GL$BG6|qUj+6i@KJjShNuVt)geBW9yckOUs;T}jUg%mK!q&LlCv0ojWFVV zB}7F4s8BMKie>iefDxk(s0hCf7;*0i@gx8|A&|+FTJyUSBL+{Z(zlR|xQ~Z;5&)iu zMtK4d@MJ{lbzo4h(4wl>!z6%uJzN4_osq`!}F20)yW1Z=Poxi9aNPs($40jIzL(~Gb77)*I zg?Qe6aVH}Q=P5-n36a#(MEz?3a3&+HSH@Gaz?jN-`^B=59_&05;Mi|kmSsxKEZjvQ zAqlYI@o8lX$|Qda9a$G?QD!ixMG1kYY-;k^BgAuMg!%K=SaUnID0E zoeRlbq5KFyewbIA`LQwsH8N&Dj;06y#?cVS^WY}j{Y^*$L9C!EO%GJU{T{*=5%6Zr z=pqCpoWH4ZtH|>~B=rLGe=z{mB&QoP3HK)Fr2r%0{5^=ce+h|8+$!h)f>hNEOea@` z^p60^_eNL3y{uB$Z-b*R#u8|>VQmrS{yUUC0jj6cchqPlO!5^5dx3_i%>W~jZbOjU zt0J&dg5$iR1Y<<3UA8??c=Z7ungZq~@yx3LIj<@Bo}kxug7}`DAb6lB6eAI#2y&Al zp$OW+nvdJP*=^8&s@w7I0Gkl)UUK z*wSrPAO8}NI{^jp-K4+|BDwQeIMr{Vwx z+Dq{qtRMx?G|+@_C?RK5p9PjWV#Bcuj$z&er;P;0I{B*(TPktU0{GbIAx&x&gmC^1 zM12$ko+`axDE+M*>0$b}x0C*kkzQosj)GOGWZswJr7&Fbz{s21?w1RQsXs7LTsdOW z6gbQBh_DjW=^kWm7NkQU7_PhEv7YI&b*gh38cU_9p?6V&)O+~h@m7%c$jTy>8N3X( zBGpsq`z&zk1N>sw^&~JYKDQZ%Ufx2E5a&a3>#LF-t3XcYa3n@=wP_cig0MR-c#i_l zDL^_rk1FGd%Hq0p74eGVi+aM@Z79+*F{Je>jh8ru2&mno(h{eL6s2fp;~>A zJ4vg(upQhBoIXhDn9dMf^TnBk_oNm=hW@HeOO0X};#sa=yQo(Q_XE7A?iZD$r?~JG zDT6~vf5z(&D(RmZz;Nv}uf`J+9fc@N1rk<44I4yJ(!qyz(QRb7fSeI{RLN;EOi8a;+}RC))J#z~Hi-+{ucUrMKq_Kn zfJ56YIQv2M_3(xWN$>A(O_2Pb!5rt1Z0E_?i33b zQ+Zz;fXe&D;>9#u5TPV>6v`ys1a1MzvSgW`fa@)kQ5fCj2Cs3ZJPJrUStJ^7Ox)>9%} zPkw~;*oL3?@A6(c>mNC z01KU|WF!5!mXdd3P%Dz$bTCw2l@^p2vjCWpZBrek*+i*Uz^Y9{*27WYS(&{MN-1`1 z?{NzgUQZ7jDN*hsy2;AiC4rA+533pN2X?Z;NcsxX*x?k13&O`+~9dR zj)gjLZ+R~=uR8qf?;=|4>`f7CU=Vtiz^r2)rObL}AHaL5rl^~GF}nKR6^McxbUL8D+ha@kJ^=)MK+;Ax(7ja zh=~b>9(`swwe6@Lb_Ix)ekA#p2~NMYHB zr(W4~jse5W(ZJitb&OigXj^j!Yz^F-$>SLOKwYRgkft!9=i_MgSgz8JRgXq_bdIN- zKZj{V1I2n`3i1=s3M40-mH2JPVM>95cJ3xw6QOe$e$;Yf3MLcYB(bo+CrUl$g@QN| zh*&{FHRl13m@JCZ1lCR(KNvk0d!q*y3d^A&m%$p_H2xAeb2jRh@G)B*K-Dcp_PUDFzXYi?F`ln?QixTh(B3 z!Z{8}=*5dQ#}Piqy*-Wub)RFE=BRt<+g=?_`?@Gm#75sN8iUokL@=A@6dN5Fa%HU4 z-JozMphDE#xn~%1_K#66Z)zK+4vOT6q4BNKS}ESvfgvs>AuhPO#xbSkX_2za;EWYwZtBw9J~;*KksNCY_@%bYUg)-G_J73W-$shccV zWS*vQK)iy)9VA{)V%jgx1rEj&?X<$`XBDcceChyI-vqOyiXz!JL7N`)XmPJPt5oqXvZ_%xXrjIi$2(E5E`~fV z<@qdP4&K{>?g>!F2c7JJR{Nk+JW!ht+T?-O_@K{upk^QRc@K1)4?5KYt@A;rd7$Hc z(CHp%tq=Nw2Ws^}XLz6%AM`~JP8rSt1N3G5kGWTy*HXErkEPB<8e8I* z@stU+*NMuPQ*5^A%ttfB4KZ|7tIPSY0)#C0$h(T|(2Tai9y) zxy%j3$}KwAy#Y>c(SJ>QmL6>YA;a^HZ;QeQ`6`!g0mw8W~4zIs;Oa6iYl>Z-3a~S04fnH zlB+=ATrE_5dmP$SZ0khzMgW8#*;=LE2hgij2~k|?sn2~8a=YmSTHiGwM;G9kgGfRD?y{$rQSH`jU-R;S`%ojU1&n}$#Wo)za0x? zOo76=YIUIr7dh90yZdLB;M**Ln)<5-;e3ZedCK+r%_hhvc47PV(jQ%h{5yUIJ@@~B zmsFw8gj-mJ>@fK(8|YkzWO<#QMvc4QtVZH@MHX3>gQ6U_^irH8Sal`7IM|rey_H=_ zE7#Mf?)s|OWk{I;OC3qvn4MD6r?%Wu}2F9Hq1hGMJ=Z8UTaNPM( z5E~MAZVF;U=~&}u78-3pl07PeV~W9nMj&%j(v{lz+`qJFQnyj5wYA=*d`s?me;e`!_q;oS$!m!l0abIJ z-0yiL6&fmfcW)?wvE26$N1~%)KLYQ0M0J{%4l%5jZQR7%)q9~Z@*s!>OxecIOYo-< zcjKuN#ImDo<7pDSozT+*=ocio9}%EvaJYjAUy|U@7(7#gcQSab1clkR0_c?i^a=@X zA?{g0@a!OXjs!)>izFx+pDRJ(`{e+7UI6_{0R3tJ{h96UC3rt|_Qe2Ua}c~rg2LhIAb1Ufom8!N`Hi~u z!YqOpCRZKyF2%8?-Or&ldath{Alc--oQk#Yem#^-fNd27Z?|Hjz(LqNNR1}PnEyUb zM(k67Yrl#g!#{~h?sv!+!#N301wfG}oS#FTnpg6$$W=QM`fo=RE_aa&W+NU6mbuWA zJ_Eqoig32kWdEUt2!t7LOjIHe?290D%aXkfe<_85?&EQG?+=N~j~wrU+{S{dYqOm+~QjX4#2@ zVkuP-=8h)PFI0^QQd_d#5J<2dAeJEz!Bt*WGh)v~BS|I#BQ}hSWhdAvgg=HMPZr#L(=AJ+#5OZ#5Z6+6Em;Wst=!-%bAxF_ zb1kxy%>kyN%>ky-%>kwX&H<(|&H<)j&H<*8&H<*u&H<+J4uc1wMU7@1-lJ-S z>T|1yMq4Ane)nL+#+=Eru?91%Na5WZ;x&o9wE2;Gx(|tiWu}LlzV3cV#svlUP*W zh^@)qf&#-ec{DYaQmvA3_v%pI1SC(2I4}#amzTHD+(a6!8Meu4=eMeq(m<)Efxem^ z6*W}3f0Adl`>Z@YwU7WKfhiY(?#s+$cO|G`9URe#0R7jZvJWJCMHmriynj}(rbh}W zK>ro4Lesk@C?LC0vf4&RFb6uqU7LtnN@WrV_S+jHc0~a+KftgD!qa~xt#Dcx$r2Te z352f5`;~gxbs@@aQBeqY&&v{pU|$rWP2&Z zfVlf(LZ$(+{nuC$I1eb5GR?*|tA%%JhWmyvd6gta?Go&dZH!=)HdRWXKiDz?u`#dE zV(VE8&1ZDXCCsg{1F;E^w|8e(xZwVaxQ28D`_c(Hj}RgwFX8@$1V$hrX02L4J@RTe zCbp)Dp@FY*ey4QDNR5qA+w2$w8*h|W)k3h}3K&T?Co7EBNTBDy-6>p>!%)OQs&YAq zM0G}(yAP3cRTE%ib!0`ZYY5_+;ZcPV>?=%Yt!#x6?%#c21Pc37RACy9dAO-Cj&Z)i z7^z9FFd7V_h&@X3M0VYMAl~e z7sTI;h$@U=UtvO9lC3a>RIjRy5h&~nQH5zZroE=ZIL!MBW27cI)le8=#{1=!!U*;i z#z^w`h_)1l7E8Fi&GKn&$sAEl%D5o(W*Q+d7l%2(Tqx!MbJ3Us%mri)Fc*_yaCCA* zG2FqsMXQ5gztD_yF}Yz(pgc%l*h(acwyA_8oO^)SE?P!PYHB_P4RfQ%$(M}}eoee)<>=t=0cdIBKp zmAZqtP3HD`W1hQ5dV;_P3s4QGol8f%41VGl! zQCYe16qS`QH$!5rR|3?I!!ScuLA*0dR)T$58A&cr4l-mV(C-++<(ZJI1VGj+qOxL+ zk=1Gmb9;;qWEG^o&ZDZ?NUSY6+z?x6=8?u|uLS#IGh)AhrW#o@5bpOYMj+@$U(nyH zT)A(DrNjs$R|1VUq^oX6uy25ca8)Er0{#9WT+)M-!scK?*wai18>0z1 zBMX9Qbp+@1EXZkDkk1E@fvKrdnyS>}Qr0f6wnjgeB3~h};Sr>}*1v>_`!>|9FSx3G zf6q2%eNbhGif2!`M8eYdg$MmJfWRra z2NO^cS3=(6v(cp0Cm>+hk${gxsB3K`iX~7iqLr#*;finEc@9{jsf1{%kJ^~muQ`Wn ztL)R4sFxV)kz3ZUs`CB@YHvW7eE0Z?I(?dA@c?lC0j!>Qg)wIJMV?ETs3}&0d%{5zy>;sl?R$hWqR$9U z=*{UN&g!l5<4Se2^IB*uQ5J59HKn0-$`F9XL||B>YzS#zK2GG=hn3U@nqJ`86heC>gr@h<@2 zvzx+=RTwD}BgF^CNWQlivuD;mQE^O>jY)HqS?a zN7|b}!ri2im&&Y)(#Mwqn~845le+xNHJKL8^xP9{A|+=FX@{ua>K zbgCPMR1^(4!tX2tka1mQJoPs7s_W@7tczhU+p6VV5PC~jO|wQOP~EtF91>9#lkI@@ zJ_Apw_d-=VZFiODl<4XmAOxGl8o^~8QO$}&?en|^e`9hF*>O+)R zp~j>+Q`vC`W|?hUG*7dxhJNtF`_UhOUxf0jUp~$X7IfazcXD%T3rc;=dOgf^3&2q2UB{7OP)gKo((b=K0*2uH(tN- z`;2W3-b?A4zPEEBH-;wKL|^V`FTvnL1@(7g)E4!?Xox^1(C1V2pcDqUxKk*)<;PLv zzP@^Y$et=MnKRS=%KJrlL5Gk+HAL5l7qTG-NPO^#H4Dm@Hoo_$u-tg8D5yn+a;rj{{E&qw;MJ^dv09 zb4DK^XT&nmgQsNx<@&{gN*gT(_krTvg%?N%cwB#Zc!YYNU7@!$X1H>xy4}_M%<*ff{6S9Wqymdo zjWMpi3c)sj81GoK&1RLKwtdV1U4Ds_s8ZMUklCdAVuV@;fY?HnlMiQIS$ag1;=nWw z%O{jgUmU|+Cz0IiQq0wxkrk%;>g6j-^vhSQ5^r#v(o6HjD_D9$BPGrj4h_AioKklI z6kZ}9iOHe%$QxETjlIIJiv?EsVb&CM|AI*W^~=y@|Lx7ZgZ}FiIFcZD5yqmZ+8%J0 z>hu8#^nkH)h_3I1)0b?N&b--Kl$KN49JEzoT7SC6a)k2bL^lU*b(l7kZ=v{qqD^4V zQ~}8_XF3kbb^1}txO*nUl@eByHL2!Qe?Xi80WO_63v~;dcWhgiZKG|CX=1P82mo*YL3qd{dZgvP2eH*WNp67j zEP-FFnqd1K6!R}OF<~#JztnZdbkU7vKFr%|(~nWMpLeO)d!0y$LgE_5;uy^D3jGRC z`HQ)iAu~P1_C{BbNu9SWIvuQa+PiG^dJ%O-0Os^mgZXtWIK`@w!doZOMyAk=kf0e2 zCIrXCfXHZpy@NBUJuKzR9KDxIvk5qwkO`;l0UT$hVK@rKx|)Lm4OVqU^PE`#(NLex z{uFUOe!6ofU&`REfrC5w7!$Rk_XeZX5R}1dDRK|zdgQ$q^LFnMb;_cPb4aOnRJzPr zrhSPz4=pXQ%N!$)Cl}S)4SnOEbH1%x}0J$9laRlx3?Y{IvGEXFw`B$PiwUh#FkZYM3-r{u1`)c0=ZKhC!FLdgF zQs~s}ENB@h&sIOu_8qulp|x&rSk;cf4V9=sz9z7GR$)E*RS z9MDw0s(9)PP+m#c4u6kw?5)bNLP*AgBsGCQ(xXH-USZbz7>a4!y+|OJu+w9s#xLVl z0H`uHTkcc9VHpYZJ}{T^+TB5%r3B^LlLD*4y(470#h_I8Z|_pPG#9gkUOQ>ECSRkz zL&vtT3}u!-r4-$=xFVG4hSA`3;!Q}@Z{V2-5p`=B=}bbTP<@zkGT~yM4gvFhs8eh^ z1IUYxH-lcYYDUnzlPyMt`;RE!NT2Cc5XBF7rjcQ6WJ*O-61Dgl!@ZDDy9$=&2eiwiCk*GX`1&~E&$1O?%HK@heYxN>U(;vpyqH%M?la=4K}&mW(hBOkdY$Z%yL z0PkMyYn)dJ&_CS~n*L*bv)V~9gR>Ngtueo)O_*CxlHDN{h7AJbtIRbuKJ;hW=dAuPdfyS|}VC|nw8Hy30?a3oF zPle=RJHUH3^8YO^8KM0N!BK38)YES@E{YcLn7W! z0vzsTBQ&2G7qlW(J8ZCSJHfwzL4!&Ou+KuDk9>bo5Ua)qO)8-GYgcF|vcRV6KjFy{ zS`vL`MwoflMF~v^RbxU}6DEYc!-TLIn-Df14RPn72>QS(`)r8z^guDD_=%}~)D{jQfeh-;nc#5<8Fa~HWRttLY1`-H7zDPvQ>M)7s#f{k&ZUX()< zF08!y2uvNm!TnV^jo3!kU__&fmxfZ6Zi0R5&Etvu>*U~ShhW9 z{WKJUn19;(!YFw58yZ7U>^FuuFNl1-;EyFJ_WKqFJxfgEpzFxlxiIw4_JtF^rR2@~I~6DD-5pP`7J~rTW78Q;ur48% zAqK&|7>wBepcqw#l@^Bn@FkpnnI#76+pH2*3ZKM*BjocMZ>ufxG!yHtW*|tv14|9o0 z!|eirImJ3fH4$qmMo0-PdSbFRLX#}_Krq(tAfriwMGu>#+qW~vBzjf zpSDRqVK!<`d7A`fo`_YJ2SvsR3iJ*M%IxuH0rXA@iYeP7!7Uh`H{KNle=b2WWxoh; zf61U{)hI>8su5&ZH3G8cp9K0=O-L?>8ol<+5(QRGVv9|yMwnsM2(a5QF)*i}1p8Kv z5#Op&RnZSH5N6D;2*51Nw8#SVeZ7R{mXPpNd?38U4v*X%Akck?G}PKFpX2JXEC zYcU9b80Hu!SZnr*ib1e11|#a$qS+{gp}%GkPUn)77K3)jU$ZcR+PK_`)CS@1FGKkg zVE+qfk;`(zz+brt+3Q)E?Z^48_kjoEnByTuG$GWT31QzdA#BkmgiX+duql`jc778= zyJJFb%Yx9bY8-dw^yrA~d#rJP4of3zc4+=?zOt_@4zG`CUB0QWq7JJD7T)t6!f7tG z<3%w@v)C!<5O@EfRqp5P&rvi~xq844z2{QT2B;047`%DXn+?#Pr46$8QL;-7@H`1G zbLNYk`IeEMR-3m5VX5NYo77}l!0ck3Qn`^)Ka^#xQ)(oFfHV0*>q+E2N98Rwi%F8+ z6_ags92ZZ`Dt)hhg+}RxP)=8%G3C)R<#g~>J~2Mq)O?hyy!hk;@EG5#_~Zle)L%1C zAfI8Ddo1c$l4Y}25Q1&nGWf}qkFwkwfm9|gGnjXPZm5<|xdg;h3&1uwq4oBTE$c9A z@wFBmR^?1^GQ`^}Qf?8jOlmpq90WGC=0b)DFVOnR%OQ72ZJZ}ahSTiC6jsW|5^0LN#EimGK0}O^EFe`yA#)BcZ zx5da*=*V>87m|Ho`Mf*@YkovW0_+#g)7?Tjwb5l;^M#P!vnrAef$r8&(FjOHauLc( zFBi62pD80j$+&qME*Vpkd)S{xk24f1RPeF&3nz%9BH0SCe>ht=ws%lCcA4a=Z03X; z?{Oi(#sO?}3so2l@c0W^?|{EvS`%yz!W7GdP(LPw^V39y%;aOQ$uX#HgeWB$O%rjPa1v4$xm z&^?W!Xgv~O??a`TFaHqg-8^e0WH*IMKmfD`!=vk1zx;!p44KX}G9}RMJtxSN0J~3i zrb0c^%T&nbl1z^;1mwz;-P!LHj6ee0kbpqpM441MO7MdL-7Cog3lCmJk6sT9D9> z_A+D4Ye9NQV*chZK_nAGRhSUgl?h>!F(K?1CWH;xgwPzC5E>s7!Y-^K?ldS$?<3py zpnmN`@FNpFxQBD{=6!OIYt)yZ`+a4Oox;G2C24iw$q#I+Zb__@1u+^|LfwIhb+SM@ zLPSP$Ba(%O2)|L)s$S$8!C<2D@({64fU?KwaU1Jo3FBVAQ~=+%?8T`fi9fH5594~R zxdz%$FJ1MPw^)-Dia(sJNmTwJzeRkwT9!562jRf8Cv#mSiHdBIZJX$7rv?35o5|i;by4zl>)>((3zI2(SHOiVDi$rONjBw2r>lEdA z_ivP1Lu!lj`xDZ@6oo#eLKdR8#d!8sYg8FFq+YyY;qHahX|b0}w2Ju21?dFjjYPgK zRPq*|mHmAAr7gx%5Fw?Ez^evEA+FZ(UCl2^5X>(b%RRq*wg{Q?Pakyrkr}Ba^PeOr zhZlbif?I>&UxMIM5|laP(-M@KuZ! z_T~#XgrR?IE1U}U55!=@^s7rnjOrrD9YF#uAOVux3pN^=LxaSvAD1obS(iy!j3N zPS!)M@~1kl9zA9O**rU^06Ot=S&5WICq9yu_*9TM@&J=9#vp!E>S|0PelR96mOUnM4mzaR-{+MPOTUMbJwnw!e8`PM9%h5s+ihBG@0a z81XwOix(NR2r>pO0y(@&9#nTVuCUKR!pFFGGW%9&ZS>@?%4wKNn6-_lV zoJxKt0o60kff&AV77-4Mtmy^lABZX{HX--hWTu5D0NOK$PQehF;$wgkDa zhh!oEFE&MgHTNI|@%cqju?Y6XV#IzzwW(SN@4aJHc=}ro!l_`fDHgUmU?9ycJz5f9 zTt@r_u#%l1cOn_-Y9#=&V{K!~E{Lgvqp~ZO`qkBp*iU84EhNgpiR5VcRqzG=?UG7R7|Hf140?H50;7z=Y6-YlwR_R2T6C zo6)pE0LAlu9SYmqZg;be%X8iQyfT zSf?~0HJ51(DD`#@Rjp9GZ2`3@puR_PZBPc83sHJi9Cdgs(#w8JNbXpt=rs3KhqA{y zMa8)hD1WR|>M}P1%Mg+{tp2nuRHLeA{b(5(M)s#Q7Iu{>hA#zvI6oC^M?pB`9;J zHyHHhL&Q#)6Ci?&xe5VU-qr&2=PE*TJ2dXuBW4}g28l&B2M9CfSp?*mXA$hrvl#Kr zLZ=j@lO=PXVAk3c6OiTFELfK>4eW40?2jSDQFho|_z6Q_1mW~JIVsbttrNj!->0l5 zgj({fLB+BxYrs4FWTX2?=$qN%-xK&|Fh!x}SO>5%%)9JF$j>yieqqV(xUE0fi zX}TSqhc8XR^;OF{PUFvUn$mNfbqxol*R4pqv)bF;<`o_7=}f(?5IzRcR_Uzfx{W6^ zx2|qj+I&*lW8a{GJCn`W39BZqn!IYD$v8DN> z#&*!j?BW`#v(b&re_a%=zh8n%?~JD@UF+__bTEfA#gDo0k?< z&YoR*X#a1QPMCLFufYfZu=kq>_U`+}DPK>VKlGxiC;s^Bq37Rp{D@m??n%9{@$?C2 zJlZtr@DbwbtZ1zRdRP`eRPjZmy^epUAdFY!$=_$tW*}?=cS-M z9z1VA{QF3&#Pc!0MuNv(_;)>UMuA5)(l#P~HsXzle;M&52;YqG6wr(Uk3En_478Jx z76N9fbH26-9TCwOVr^w?Vl8 zj9abMkfjm7Y3n2iKRisi0CX#n*dnYOtrZBRt(Q=y>TI;NNNTeF4~a(Z3qijQNiQS8 z4pS{f-i>f}T!u`%GQ1Tkmj{m5K?N!do@jWJ(>XoRv2`i^ZeKqe`k*dz5r)M{^cBgoxn~Pf4b=Ub zAV|Bl5PE614#h8fL$g%aj_B)Vuo~YzR$*b6RG@!%k1SjKWgu>7@hf#)H>&kDkPI?O z!s49U4+=Juv$H)9NTF=UcO%;|l}5HC31@pBl0(@tIXm0m0x6X3gl=Tp+~3HSB;jo1 z1B`5$oSkh6kV4t+*^O+k0ZB;7Bnf9bJ7HwYGx5(k-9nChUncc&wL9rOF)xkrMkLsE{ELQ6f znCz}mvqftI!Ay&joDcD*Cp%V8%r>m~AKL^RZ;HjNOV3-on(z~+czt6_M|$~k3-3t7 z-(m|6^#!wXi+8X&tN$1#@FHfV$yOE%6sE@s%}woV;%m~)tJkz!R*6W6iKNAU<+J~* zGIFIs8A}+L+t}VH0WNcji(*|BhyecopEswlP@Z z?*+t1;n}yZil(ydL6ZhYPH*2Z<|vUSUm+&CXwW)a%WnOLL}uX&N=w*zUMSO;)Vz$h14_^v>2o)KEDpio;v(D(bavxe~Ckb@lwY z1=6$%N(xHi%&DNhpiGKO5sRpV?p4DuVD?4pLEX%AosKpRs+oQ(J6t#2x^hDRs%T4N zhqbjmfb?v0GR^JH>(fh{SGV?TO|QmAor)wBzq#p^&FdOl{KEGSXX9xkVP@rlt37a( zNpCM<>4tSHoR)r#t(oRIT3Q7vZEb8-p@b(PdP8$-bNdDj_GC4|Rl0=H90wRB_XO;v zp^9a1#13k1X-TVS&sNdJ+~(EI?U_)wt27j&k_UJN()lWAl?Pp{mAtsIy*=%=`tXHX z-x@wZagIO}TF3|!4;;bnudxk5Dw+;zl=< zo|RcBEvqU5^(w5mxVXUlV^a?Om4yF@S&D5%tCUkx3B_qB3+m$Ke2j@>^U5k{h+_i@ z{UMIc8a}Y~LLkSa*w3#ni(@0fDqPsOFpk{-%qVr!h+~m%m5%YErDRn~MsX}ot%8wp ztS_y?zizs*6e~XYqge^f?W8;EB!Sb=qmvf&p~#Gs&}Q_Z?0&3*%vgpv7Iap@*f8P97DQIT_&C-sR>6e$P(JpI*YGhhp5$Xv+~#9)oc*_8N_;pUQ*k>t22(X_h11bK z+c_~-P_h{Cm^D*! zeI?79o_&k{k+Exz6934amkukVf8;?&o?GepN8a_-xx3RZ^7(nqb4Km9|`wV>;=>tih$Mx83%b@wZhJSVpKlr2HA$=S#L3|vZhX7{_a9_aF#y|QtUW(`S zNIM5%`ZC^*=h=wUSCWSc^leN6PM=2lQ{qFW)^p%TAIUVH2bJdi7k9va@m=h*8cvR$ zYhu`c@qHk5(|<9BE!*jhaI2(~Xe(S}=tN5QIJ%3T&<*dLA}~m8i$T~MeT`CIR3C0z{`wcBP9*2XLx z^^Dy%dbW1vfN0lVe;4E(%tE(Vayr4~9nA6$W^mUs9nP{G%JL3onEZYse|ZP9?x{KN zU>4jERIVn0<5=FoEbm|jm%F@!ndeGo_;vY?WD(ymA0BZI%R89m9n3rjv+`L@P0g)y zn;To4)p;K?{eFOta@?{@uOIWm{ZG2T?b6k{i=Uz8b%*6i-Y0aY-XrrrJ5J>L?9O+J zU0ip1GvXK6>fYtwzl4*Ayx+hMz3A${>NoJU*IwSl_b-Ltw?uydzEg>Q0@tnI|EEnS zH~+N!g*%_U^(f6#*=6MG2BSXzmKTf?<3;z`F79q zc|oh2=lSJ8jU35s|7|{biA9ilZzfD8lwh=wtjK=eao#v|_5W|e%6Zy*@c6LwA`NPiqVQ2nr8r};i z@^90~zfD8EVc#k=?Zy z;k))8fz^UNy3{H-Dqh=iX862z>PaORPpLfMk{>tUv-zEKdR-Gfzuhu; z{ZHJNQd{ihSN-xYYajmQ1--s|&m&L2d+!e({L60|9{KnEJkwn{;YV*C_Eg{Z+;^`n z;QjBnibnK!{oyy_Jm+11=LLO!@W?HFR-EzAzGpPH4&b@(zcx%5{IvlO4<7dHh_O5a zzUAZ>XYdSo$@<1cr(gY#Mdw!hX7RrFEIabi6GyLncEM$9pS$salX$QDY@F%xYp}Y+q@N2I&zJWDUw*i15b`}5|9IZ~Fw)=0zvcMHv*)GYvkLT&fqpvv zO+ffX{Np+F6yQ98bY5`IpGSB5JepU>w|gGVkKT0iJeud*_&5ze1H@C<7Hh}8lOreJ zU6Y5;WqDB?AE)Umr|h%YYe29!ze?1Ke>^5`vG8$G|AKROzNIu9r_Ht7W)T+gFF+r= zZS-t0p9azNHKMyVd;r14ee3nOgUvh9E<7~0f3AHp&b8~e#XyP3o9*gq_h1}aH*AX_ zTgY2LvJ)r&{I1P*PX75Fn{J)_{|ksyc<#SKF6XzRIMh{3w{*lW-K4rEHb0QXZ`^c= z?0sm;`&iZJ)}LA$x5 zhTaCFvE5-5F3}wzn$#Vl>@wa7(k?cS@?YWcKG}&`Vg4&Tp^pzi9rBm|3QyJ+j{wwH zWbiSQ{8xCCf|Nr1ukP?OJNd8hc)e&7)~*O|+N2)%MX+06n~HpdXH~Q{=D)&|{|XPk zI+Onj4?Z`N{|b-#1Wx`dJnPf?+dSUqb|P0jW^)>usfZzFj5dVG(9dzkuzh|So z^gfNxL9Bqs#|Hm97T(th_;rjHIQJ|SuMmFeVzo6Hn#HFt__q9jkS+)9)*5TJIFFnl zX{O84d}N~BCko+mHf1GFm0PVteF@ zA6f-gMjA%`c0vAjLH>3@^lUFX4%_vK{K045f)}1;<6nVQgkKz9%CGui8vm)kO)3#b znh4<^{zG8PmMwS^f|oh)eGYi3gFNud_dB3;)~Eh-v*6x>Icw4@*QT57#!M!?ZbeIT zI%A*E+|pvNX&*t%hNrgXHf?1E9N z({8UwYbFi$Eb!({d^5{NH*KHL*bW{|_A1AshEH}uJRmXzsJQ{RAdBWUwl@~XI8P~s1GXhDD5oJ1n>T;I zDN`HEtTO9VMA_8%PuduM7($~%o72tAZ*bg>BA2{ zuGVC|iWa!buN&Ac`KRaE$2@n#-i#Ilz8`(w=_uWTndef>cIg)B;B#;Ms#zPR&vO9d zoOCVbr0VltxhBwLSMaxj`Kw^L#GcmM3lC{+ZdbN6-P*XKC2g;C+BVR5Ijh8eg)DBn zBaqCR#wOsgCxvZumnbTO>@S^|1`o)=~ay#E$t2VLZ=;OdQBs9YF}fA zI54NC<_vRgs<$BuNNJ1PoJ^*f;vmy?jcXy6wzXP_kXR?IX$GDu2&mnTRvO<17WN@5 zMt1pnPeRZl{QKYg4(KQQfzD6r!kF%#6Bhjablw@`eX-*f&XD_JFMn|HMd7<)4=kDW zz&U5W{kLU5zTo-qo^r`Qcn6I4zsjfW89%iDw@XhyDqhYzU`^?t^uFiVxBPd0e(sM4 zPQHBJgVSDist@2@FMj`XBCm?(Sp63J3?|AM9`kMgDApU2BF9#mi?g>24M0^%-8-e!}o@vCN zM|c&|UcZGN_r8=bbvF+T$JyEFiR6%Ns(QM>p{MN`MM(bN3WR!a4B%gjxY=t=6MkB zy(7fg1$q%Iy4b(WUvS}kvwMeBv$549+cLf*5Ld^RtrzO^TAUTZI}qn!^4#I3=eMqM zU}3D%l{!AR=ep(1nI-AQrbVqS8_HKY>)Nn2L9~+gyr=dlP*vVjJMXF8x^hF_Q#;~& z?YU&2|*S7vQJhcbSQrqSmmZZ5$ zzBJw5ju9)fxN&v*Q}Uk2f=_lsIC^y2y|F#Et51-2>G|87teH{XMS9(ev^%T4-ECgc zfkQ4%6pPn4wsfSIFSo>p8?P7H#r?N;@jkIj_lUgi(BOC0y?ocU#rbx(^HmGVoA7U! zKi7eb@~6)WDD$UP?h{6S3iQoG51dov&(Yir-sL_6{ulhO-qyQFGg{Lf?QUaBy}h^t z9yBWtOmA4`tWCGhSTT9Bae?s@K1ZwCJnVCa)_nd9o~3Q*Z-0sBX_x%__%HGOi#$)e zXY%rkAD_^4InUMlE^WDq-_0v~JANy_omba<^qs#u^2$43`9{Tk)#uH7;InToe|+u- zTc7>Hd*66&*a=TRH@MGFUpn%v!LMC!z4FG{C<fA{vI zjvrLs^uzC*)OPy=12#;5?~08)W2?bA8PDW+Mz$Vdo|k#&a=*n93g5-ZzrkpuJfr&? z;%u@!dwUS{Q{kNYHlCLQ-VcX3l{mP#1F&_#e-{6a2aoySdm>=B;8~A2&+~Z3cM$w-bC8n!22rx9fQ1XMx5t;!?0uhUwH50E`F}} zJ7~^0{L6K&_Yjb}d9L>uP_xeU_$ILJ9b`NK!mQ&uMQEPub)a43M2w#6odCqFb3Jkl zpBxNE>&QCSBU1JW!BC)Po$C=b*SX$pK+e(w-wL)pJ=_k$tl}v`Qx8XA%RDDyR1Zf1 zF-s5R7}mpwK+4hsk+StrfTO)EJrFgQ9xem&M>^lU0t|NOd~*hl_;&Do^A98mP9s&T z+x9`?dK}^nGD*Vftc0-%op0uDPy>Jz%2rkKwzK^qNJ800YjF_{u|nDAuD^qUw3zQ- zb>U%WOzAfLHoR7v3zjc-GuVvlsY{6Dx zKNxkkV@$(EE5sHu>TJgtWEZXn*euMTc3A!Dg|Z*DXq&-u+K#ad7i^#YsIwg-&o0(1 zFgcVxs|`h??dF>oKc3=k1?$;6$2wfhPQ0*m|D9u#UEGaewm1WSBswn9kMrZ`dxP+b z(&;De$k zr-uY?F{GC@uS*AbLv!NIX>3WiHZ{5>1$pm)I2Mq3?|{5_0J>M+JHRSv;3o^vAL3X# z@PUasf&c$_2PAk;ZUJx4xp~ik@V;o|^EdfdQ+$L?<&X4giciJdZ5KbSjTOwauoKK1 z!M^LMI9Ti&-n)74kDWZ|-lc1G7w;2!-N7K_+ucr`l75r{E#L0)?QUmJ=kx7u=RF(p zy36Y>%YAkipQFH1etP}Jem3e;;5W7>6bxUOyx-WT&u?t;SudULy@w&}J9gdlo6o2J zSkq}QTu2|XhaTB`^Y4bZ*M)t^=s))Q#)doTLuT!B*_MU9%YI(*nexY;E3SLSduIdv z$0pVc{Kuave)P&sKdE?)zGO9bSIf72=|9GIIM9cT{$qT9gXcqb=W7R4|D^Bek@O$q zdmQ>*`_lhw?_J>IEXw`yd3QI-=0e(}^b*?8P1B~=q)qQ>DUe=LLhnsVsfuNrY}>WT zZo0c^8-+tsMD0;P6x1rW9zaej9_$g7dIW*PMMdOtejMPZB8aG^yUMX6Bh^o_Xe(+4o&#pX0!1IM_R6$1W`D;`1DMhpZWQv7W(| zoJw5uISO$c5BvZ=`yrciaBquu$u7n>pY!lR+}HXeKK#2D`Ry|w{uP&FoFB%Q*xTMG zdlZ>Y@;=!U$a)@s&!0ji_K6iqIa22xffl4h*R~(cIC?;uwW~?!s`sJ z(hvnoD2$%&D|gkn zC)RI9EB*EzyAzNx=gJ)^dOP@CWXid6$4t3hdlXr7uG}$ee^>6d+}PiJpw|b{D@^ zgTN_WJ^U34oZ{8PkMh16Z>La;MKP;7aBqgQsY~VPqo>?*?^l?o@)CS%Z13~srF~w-oaPT5ocOnrPyht{9kqq09!HZi}yt}QT zLEgRN8x-&IgQs`5+&O;_Kj(OtkMO(vO5oqePHS+C|CU=7gV#O>uip(`zwF6DLXU`sdB@#jCh`GkA~f@9Q3$ zy}!oip4n%fjhTDtKYez_zsP+xKJSco)$E-#`wk)AJ+t@D_}sF$X8y++_P&|-u37f` zg6uQN_@18`lo$Nj`(yTfLH1oid`}SXg4y>2{Q@}efbn@@FW|#>1KIZi-Ga+QgZI6% z?|bplU~hZhi!Tp4$@^Y>3|P+Pm6N$Xz!wVT+)2>|GcT|3v0(jX%)Y$B7YOBCUdg_e zz=wk6Twdw_aspo=lyiB7S^K-Z!pDI9O_x{rVxd#Iyu!zXo#N${Ke0&Wos74;UT`h$ zT6yk0WV5rL7pF2Q=ANPR*oA*_T(nE&TpW1&=dV2h;!EEt zaqo43PTZzC|D6)b?X9s2j))uZ|@cRmjC4!);%D0g&gsk!3c za+FVnLVTbbo`4UpRSmv}4%PT1c(Y33#hQe;5I*PPrdR%}-d=|A z!9N7Jb#}#&l@WDSu5&RGTar1kkzeD&#I>3JXF<|hwh~H%JV}}kgQ8L_# z?8I+6e*7&KAdW&O!jU~AJsUrC=$JPh$yxZF8Tg??+4%8eY%H6M_MmtcekU4?R?6R@ zJ5k(=ONTw_xj1^5PDd(=Ye;$wX-Gcg;u84|!2hsVq{&mxDaRpvtep2EZ2$hdg5}nmm;kl_%GrAs$Puu{W3HDplqCt!~e-Cgho=woLLG#@L}*7eDE7A^+$YO z!e%{mG~@KfJPv&#+XgNXj$EbxyBSqz*Z^IHl@g=UYxW-cs^1 zV3F@-Ctr>9^#V>5xCU^9y3cpWSET;ry9Mz>{4BfCzto?v+7ZrI9~F2b;2CODV09p0 zMFWh#6!1)SyTm*pF-HN5)X=-`7fglpUCgS<2JtpSgxKx%s5q8a4dg> zsxCO>%U5*;q;@u7x!PR77VebrEeMyZ?+AQe;(sqWeL?0w9k5iDmXPv!faBETLyzGn z3Uy`d(R<4d`AXHLWvub>GPa?(oH=(5>qDL&3}ao#hP{Fxwa-4C)Yb{yF7T}3?ANO! zR|n2ii$@XWSF8>csc{vzApWT{81n{TzG@iFvMGUAjbY#K9ec;vBK3^G-w7-ZF=mRu zwF098KP>Pjfp-f$8hSERq{^xY&#hvq_Y3@375RCkz~2GptEzFVYvwq{|HHV>arx?c z#EerbI543|{d~ewf06n<;F)Sv&4CGLs)>LY#~RXE zQA2s`uDJ!_0}}R4q%@u}u`mA&HD%)JK&e`UaFJSp_%qad5mT;uCUV3-0a&WOEUCYq z_```s>WoQwlST7={b|f zO&+1vO{Ubn4>3jRlF7F?%hl79+3TMp=1f&Qh4d#*p`0w5LS7x2atzY-Q-S$YkD=b> zQ@;gjH%}#<=S3!8nA+>K_+Fk$I%iB{srWROx&#oTBQbX(T&|8!V;|pF`!XopS<89% zdhM&VXQ&NzI`zSw4NhU zS$_-YFRCZ~)_UfAKVZ4~5MuJxKi9L@ADy|>U#f1N$x;tU_&EuWnnj74EpQoNzWVem zj{7%fksCjgaK&tLeg+_=4S|(ssbB@XZ<2_{!@!MukTp&vh!a5y@=r-btEDG4OL@d`Q@dtnSu>LNv53* ztWZ@zyAoS2*cqx!unm%Pj2bT32Y{WXs??c+bxYbbRV~Q_ zR;CWBTLt@ydKB~ysyhUGNw9xaUlr`Hf*n!c6s*)?&WF|gf=v?aap0`s9Kn95o)YW= z!CuBwLzuQru-~hn06Wt+46xQW5^%P_MuF!E+~gaL_;v~J5SS3yBd}NCKMK4-;P-rE zk^dt90>BRc*?^kzWq#K3Nk7jOzT|HL{5OHRuE!)N%a*B&1LuQ-I|HqN9|>HDoWBgP ztfu^zz)pmNd2H<&dEFSHyYsFDyieeF1U@0~nY>RT{&|5v75E#0f0We!lCVGjlc2LL z|2DwShwQqXG*GNx4$sM1k`G^VJ%G?-LjixChWt z9})Nkfp-bKN8sZEUlRBSf&L=qA0cpxz;gt)3cN^QhrnKepAz^_0`C&|h`|3V@HK(Q z1(p?)a+SbY0#^y#CUB>~e-wD5z`F$AEAT0SuL?XSu%bjcj*1Pt2=K$hwg7&57{~Y4 zVU)wK3VdJ~N9~8hwjou^dEx0D2%m8}C9UdoN;1dSQRke#6Y-l)-vyXD{X>8s7kI0{ zBa&0kk;f&h=gx}~)^qAjDH|N#3TmT1$w7}llh{rVWv)bxKKWq&?~JbX)_rc+W$`kGp9n{`W~mF$tG zb4expsO!>Wca>21VkIfxD^OGR_Wfyze@$TUOy=~qR@bZht82XeOt$J@1l}v~F@d^w zUhd_V)v0PM+dOhC=}Z&2RG@C#d&ja3+Xd=&YRa0Lm;ayilw#@=A+BT}8TGV}D@|}5 zu?N);eG`E#6|7IagfyS}JnR{z`jq3J2JBXY)%s_tfcmyzno7QURxnKkHuV%;j#LWN z3w0X%5vUZXC#JhJ3)PPd_8QWP)oSdASl`gVG^~pk8f-$K8atEk3-%e+9#{>mW;S!` z+J~y4f?YG}vy-O=hN`-B+WW9}ou@JNuYq<|u5K2rPu&k}n7VZisa&I;3w%JGu6`~U zY4%{149;bm?$HRfR4~n#k?O+vOzXq5wx(e}b*;h9&bth&eo2E)TM6t8HQQjj^R7^% z)wKru7|KAs$!TkLyq&{r0k%HZ&bE+D_N*1!*!)ki| z4ahl5Fj6@NtV=N6hbnc4V7d?EWRHnH1Sgc_!HU|`N-BN9*(LkcIQ2P$Z73;5+T8|= zNZPXo+a=hW8dD!DnTB$|yg;a^&jK5-$~J23Ag~%W+F;)THc3q|*b~5}sObiK3D`8X z!eDO#t5Y2Y8+qC^HA6jYuvx%ns;3RM3fOG*6N6n0Y_59CU~ypc)r<>uTRsYGf%>Mw zZU%OidfZ@#ft{^hFxaEO&Q*a;y4;Jv7OP1H`_pOFc$~}=@6l=brNo-wr?KIs(|}!O zuo=Lb)ZGSKQCjAlry4HOIX57!S;Y<34Qz$F&0yC7Tcz$Z*j*^MMg`ul%l$jj)~Ziz z*4Wd))~g>G>{Vc`>a2@(TH%msc!0_E2AcxxLiJ^XEd}--b)UgD1ACteg>|`}A=T>r z>f;9c6w=JEc-0qata80=%f66#rleF0cXO>5IN+zD)#df!%!-8-~e?NOiG zrm?4oj&$~@Hx2eO(t6aGs80JY!PXkAv}_vE{`>)*RtfAw>iau1c5d03&ZX*i2HR0q zgVzGJ)1d=haCKRo)2E&>*sUmcx%#=m?gDm&`klcZDyvo>RZBZ{x!20(Iv-UZGgw9W z+0H(7x4~+GeO&E{>6}Y}U8xQj>^;D)R`(dJ6WBHCI|kbe?9=LJ2KzLy>(p1`n##?< zKC6CYuseb6S1Y=7+C9L&pe`}kQ^0OeLHMKCzn=lSNu6u3-vc|K;t8FmhBZ02sA~;Y zGHfDtCS~Hy>Qj}#Zc{S^`;6K;Y@_o<_3t`OR-oI}4+Nvmy280#{Z25gv;J94OX(W8 zk{nbQU#+oeBZz(flNwt(Vj8d+pVHWNqxr$NK)B|da z#)7Ly?ROqjod$dVsGERYYjVa$RjY^8>7Uo-{t@LKQXzxgIjY8aMBQw#Cz1ADb;w}9 zN4ZDU_cazQulOSNd!a7~mEe?$JAiH1m|9d(18my$x`y{xOjD1kOAPi8z#dn38|+qK zPpa1q_I+Ugp=R8m%l!`6)9OKk4LPI6c}8u&QK!|NF-<+Et~c09U_Vq{H|ey^z<#Wr zFxYNjKT*Fn*ww&ZRJYx%a~=ZrlKP5Z52{Dc_@48!3jC8!d+CfPoS&;u8hgh1h3Ya` z{^%#1SJnJmbk32$ex;_}sgCbXfITc2>uYlU zpk5G6*YLU;^CgzkHN2rN{1>4jHN2tjGZ<@lL)G7@b8a6q4cH379#q$ldCmEg+9a5+ z;Z2n?X|xXCQeQFUI2(_tp_l}=569H^4aORdsq?;}YZzZy;~Z1x-mS6amDALp)#ZZe z8vd$o7EE*Exca@pNaeU1b%f<~|BkD*g6aM#=QsB-O;b@$@Lo5k<17_S=kz&uJ;*d& zgU`7GK6GNN!RPcoOsr3hJrfqL^D~3Z1Qu}4eMEA~IOIFm3f8BVp7{wU-+9nro6g)1 z>~({6O4_9FXqs0@+6uvRJM*3Gg6SR=IJcUd3T$oaEinr5*x|8ZSAX_hz_|EEi{#2NpLOS8mzRHlzitgfovRGSRu6UPFKZh|xN*F~4&wcQnc)+s4peIR zMAG@^$)x!eKu3K;U|r8?^Cx+DQ{hx{-}cfDR^`K|0%o*JFLvn z8K`$BpK~Aze~Dx98-{jXBkJz8msu$@w+*^o|;R7WLRzK);#-2w$|sYxoZm<8AYIBqn#f28z#H zM4AJo4n+A>^AAL)zj((-3#d?F8Q?@!A>k^4lLgibY!KKeuvy?bz}KBkfYmssAq@MP ztG?h1`*u_v@I`&esym!Aby?L7YNzj}s@oBNxaupuD&Iqhsqj4y*ysCG)e&ExFK^tp z0ZYa`tHxEUdUbHz8@_eU)4o6Z_W8a!&gb9fdjymZq7-AE9#@E%=f}P797fDggx?%D z!hb|k8&z?2rN2Rqs-CFsm()hJta`k^P_T~@2 zeLt#hLiktJD*#^yg+dh=Pk6e(`Qz84)cF#=cswjuU*Gu6{zmmt#O##z_Xv!dzT7%~ ztAD3@czmbd@jo>_iSQ34=kf6$M0m&qmKr~y4>W5hj6lqMz#c^&_Na9eUUw?|+mI)! zdMA7g?YSDMll|YF@Hv0I|A!N9^f&nbI^h<7qrar)pugFFX3Y(%**~l1%l=J%`p|Z& zEj3^Dhy8a|A3>gun*A#3C;!9#zM2OR|M8lKk@MObw&6(4Py9P2ekbBz_J`HSYhDG- z$AspO0r&Y{sri%tpzlqTb&%&TXr~U7S`TWhR(%4m@vog&7C7LKP8=QRQ>lp*+{-v5Uu?+P>quA2Ozz(GGp`2gTl^ytRPpAD4B$X)~Q zZ#Dd;j{@!kpKl5@2grwYf!|Ml9sY!oQ*H}{QCB-snX@@CcgmLn`y~H0YVDN6foR~a z>Td-0tM^RVuP`!GZuIY09Ki#i-vkQe`2op!P-?93cTbt9j!5{3+B@ahz+ts-%JYEC zd01UDS?83nu$7 zn|dAK)l)xT&@An|2Bm)EtHKyzMg!hd&>-QrB=xAkLWwC8SRrsS;7tXNgsYq*Q=uyY zPXZnYygBu@f`fsl#(xQP@~6G-G&r0o4bISMBm50c^|Y@do_e6cnK5mmYH-dHxI*AY zz_(NzO1&kT;YeWbv~Lzb+f2I;@Qc$PDJXQPF&fl;(|&-MA0YoeA4?qxyd*h~BIk2~ zp|!6&&jrQ^oK!mzp7Xg9J_pconi2CNdOg(dIG5HwT~Me#Q~M)OyQ#L&|BA#Hst0Oc z0+%L~yk5}g(A(VT(97KD(7W8|{GfKfYIgo_?G5T^;H}z%U?a3>N$^ES)s+VuoKbcA z(Xa7<2Lm(esu8BNyy(oWs|X$loLv_}&ZfFMoVNno>m~#bLdK>A?^l;1r;~Se-T6T$ z@A|rpj+1x0z^@AYHejnFP^ey>{wF}{f5u;n_`gp7yyQ6$ zd{I@*_y*vl8TSA#nQ=eh)4oT7`+RIqRo?m;Pf5&k!TP-389xp7`L3LC#P?nQ{u#dt zHsn1t<7lud@97!7LY4{^Haouhp@r-6sAKztKjij^LUQ#?fi(hak%x015?KF$zd7&Y zHO(knTi@h_!ILYTXkL5$#=@O>o%I(Lz9QPDP_e%~l8SMu=ZJg(P~uURevfA7YxR_e z2kW7coW}qi=UIV26ZnS22WDPY*ys$K`LlqNH(};RjQi}F9|}bC&Yig*`Pa<+7)JkT z-*tuetM|>MJa^56zVdYo>;oadH+%Nq-koO8G9LRfJ;E-8d z!7FDSDs-IcS%*>MS+lC)+gdyEdxb~Pizeub_skmM$NZZ00AM#@q2hY+mg<}Jx^qAB z3`O{#XFXB)T?s#_9-sA0;ZDqmUlcx>_p4b)0gugkGq5vIH2Y1^pD=r9(TkGvxxB{N zBZ{8OTPH9qFez}Kz#9ertH1{YJ}K~L0{QY)FX1z==`5KH~OD*UY>J@^Q7~aIqxqzfWB-m`mQRR+g0=&M&zSK(LAojjSkB` z=Zu_tqyH6=qQm~J!>XaZ=gx(P-Z^_Nv^rMIFQDwoxlN#US=FsYj9DA#aeC)oR_Nq& zm2vW~pNn-l|8{|Q3H-LeCj`DA@Ye$0oO`f{_Sl!v>)^aGK zK+!(Yz1IlbFYtiC!vYTq+=pI3mYi+#o<#oSyyuGc`TFLKzzTBpyq600J2%cN^zV1L z8Xj;sa}PLTtvOq2UM!lN|J3+j6diVs%zLfqpz|n7HRk_z-s_<7);#EWhx%l{FMs}j z741_)=VSE|yXdgP@L`8GQlT0Xf?<);gs&GDadxihL23je7bE*U3{AU}s6*oJtOU~eeCZ|vGZ^|Ez za9MuMf`@!N^UqxXtJ`5}kBnEJvmW7QhyLb-2?L{%l8>7%|+EPSQ-sPD#wuuFZnE#yvQ6K2+P&esuB;eQadJm)-)S}Od{ zFRVuVQG}m!)LA9L=bYJR-2l7jytAB==VWvk4kFC4drszKS^kEz?kS4;b|U9Nb@^Fk zPKEzEge&}CJgdoh#reirw3lcX?eo#^GhbH z-<t%~xcc@Ft0@wI1UbMYrT_A?CT!Z2z2b~Wid{8Wtqs|SBt}3Zh?^XAnR;Sw3BY-XH zPQYSy9pZMMv@s2%`ZqFw=9p>93xJ}2of2~-9CkT)r>5pYFb81NEU zgMY~Ta^3;J=kx9dEYE)t@ceuy?+r!0!X2@~$Yjrr_0rV+BrdRxlde6+9UHb8uea+QKb`(ZZg>4;TJp;njtA z7d~Hjys)xpZqeCAD~no+b{Ab$bXU=%MXGpM@!aB7#qTNJTpTOzDef)4s`$3ze<}W2 z@uS6075}98x5YzCDobihmY1w5X(`xgP0;NMW(o+y{w-3#*% zz&+a}u(V_aJhIb=G3K0M>kwWc;R^-6I`Ur;vv}0qfcX{o0)Fd^2LVqTa{&2W2tNaA z!Y^ZR|IvqY{Q^Ml5Pdk+F9w{9x_vm)9|HJsRfd**0??NB`I z;e+j70r(h3&ZnNot%yLcLMRV?X`PDd)mzT=D#o~fj_PGXR@~=JoG!`qB6YZ*ILw=z zvbXe;Z%IJs^U}M<#4$zxeN7$9w_y@_6rPgv#21a5`Uv+n({qB`^=BjgVjZqW_->q1 zGky)ip{sRxC&CxvoQ?6HMtJQFI{XB}lfI$Dr=5c*=$P<12!HNw9sePOM?J5@cOm?Q z3BSfXdAzfVdd>yS(K`HIgzMN91f3>yAZJwcEO*wTbRnERv{e@90pCTjJfR z#qm9A^#-KYE$@!1#`gATY-u#y5#Od7ySkReQi&e5G?EHOJJv^%-5sf&w76i;+2lwBi{Nli>5O^hM8HWB|oq%F0qJ&G3(sMbg_)tF31I=6K6G{?5ar9fl* zu5hd^(!MetZjU6qzxZ{VSm%vSDobO1qyvS#X>3yl-W*Fs60vYcYa-m1@jP;AOh0w9 zjk?zvbh003t_J#`(l8>6xI`0ivK`6&D2S=6k4#u#M@B4PMfX2 z=IF1v`fHwQi+A-TqT9BoRC_$NI+D7;OS`Qj(c04$(F6^r(ABPZED}pWZqcMA@faiz z;tEP80q?78qx`UQ@nl3bLvkUm(GNz_W!17>pwO7W?`^h7PwO`?>4>)NaNEz0NK~ZV z%?q~a-qmmRq}wrE0={B|z?r0KUWrFxs4%BW60);L=1_Yi*_MdP9I#QQcGR0pT@a1z z)?{y%uuU~~r{XOLG({81l&)*d)^sDaq(N9CM$ncpxH7(N8yZb5u?hnu zJ)|N@Va6D>pg2vW*RgnNeRqtgk#AC~i*hz@#Y`j%?L3oVh0I!A1D$~kNsE%kYDfku z-GKnf3L3YPygu5t-7+Yd3b*Z$xvmWBT-Bu_R*AWB9(AS}%83(BtBZA2n+osw&BH>tfm)aib=u+DvsmOg-J5^MB((wm|emJQTr zZqcMEKr+deNMcvC4fEJ)D22Doq*cFacXe18FHDTbwqeX;P;hIyB6x!hS0SAPvdBn_ znZa3_2;&ts+c0>s6uBB{mk`!Lt4W((9kVtZqZ*8CP3cfeS4T7jAyp}eT^bR6rZZ4( zMXV|I5|C%Va3XBuvtbaZ=Li`!ip38UzecsE+E z<-aw&g{nsQ`M6f?p!671l@NL)o=IT#^J zr|TJ!Mm^a*t>`ayrm#pls*;gZ3R2?snoPK`(^@=f>YPg%h_J}UdMXUluuA8|LUBP$ zcEd5HGpwj|?p;_Yh`58APU4_SBhyvQRGraS6oyVZ&(`jajtm@((a1N~RcEv~*QQCj$9Jc@I zKEfn1EJ;Vr%#E6*wwnH=bIEE%x^4_6ent<|Dj{8cy3bZwq*K}>h8sC4ov4GNfXNQ# zU~y~8$&wKBlnTR@G98yK7?zkvK-2B7S7Bo^o5d>KIB-7|?Q|y*_-ZZVbRO2Otz5O4 zqiDih4LnIio0FzhlBHd*{3c2k6Xy5g&B-){cFCY4Fw)f3={di7ZM+L>l1Hf+%gn1< zOjL$aFmYZ@<%x3jm5DUmXi7lC?v5vRSQgl18H_B(XQZ(=>47pSUcF?ZtYDgcrPXj& zeU!}1IcUl=LGO+>!)EB{QTBM@o7k+`Z({ADsf*Y(bd}Z=G%9jtwJm5x+@l&y zQkd=I+;Pii3wbt?0n!JWBN-LhvRn`C0${kDsq$^9_I51fFpj#lRgg6TTskt+vj?}I z`QlQ}(cUJhp9RUJaNev*=shWAsWG`a5^0A84$1T=O_Lju*{ah`$yA^wK1+?7*!22f z<+0yo%w!&D0kSn@t%)Xj0R3ZAxh3*ya}#fuNGeI2)w@KRII$LKb!+>ZOeB`J4A;i7 zX;95cF<4i|+r<7;E!|tV^V$+=jg!@~p~D`{voC}b0}H3tVnTjZe3#kI2nzFxR<||r z+%2Kk@Y`&YS-4#-p`)V1&FZ#&39K0^J=<(IkJqx@Z1-dsd~FmOCb(9jiO@Bzhp}&k zM6{DB?@~{p^E5)!TR(3$u`}JgYhp|^8qg^DjJOT44sf5{=qDQ8*Rd=KD>Omt$wcXb zo=D@E$;_2er7n^tY8kU8=4l^i0e3`hy>1Lx}AixBS;-F)9%dG&F(pjs#2!eTHnC9)En_E)UM95HgYFm`~bAy z)`nBt4Jxak*)(u(2HLyu>dl1g>nu{QmaNTkGA-NFh0Pg;MY~r_(@5AjaOmurZ?)@U zSblcfjI9Nl${Ax*JuwKbg%1KtJe)G{q#1NQL?v!o8HPJyaWuxNywUJr;Zc75B*gm5 z-Ia*$!j9Brw@qsk4bN?(jp3>k)q23&2dkxQ`z%hc26ty3ZEsrbE)Yo*1EJUwXJ%b% z7RuTdC*ahJnCynbIq``|C-j9KZObEL#gR$ru6W`yC__Qev`aUjgG1M#U2OF;I7oDn zh{G(Mr#;U7-Uj-M(s5F*UN)qpXMAz# z^Z=|g>d%vEShd+WEU0t_PQ~=!&_%b#T5UmaWK3tW2g%gbzc6`gJ8_P5jg6U7X=?Sz zt(RtwP}@Y1L+^6NwtpU?lj)pdfM-NtgS$B+q96I_pYBpukc6xkCsi-r1>>F~Uzy32C7G5V9PSh6&>DZeo-b+RUzrFxo23t4+|=cbw^9A-Aa7$%m;r6+UlU^C zkF@QGwA*EFAjO!SuRlGRoySf$>J_gJu>$TeonSRJDj(4=P z=W_4>M<*T6unawi1ePyLuta(?r2T!flngJ|jffZ=E!)F5`&oj6kaR*a9p%;kVoMpL zo4xAju?D0FC!DZaV$i0Y-BCVHOj}k1){`w915-#u65X*iF-t+jZg7Nab;vzq$92Ia5l0uijwdL^=O-`Gm_Y5ErDnR z!-)n_P`F#@Fj~{w;!Zf}qFQWoqK&|N~-PKQkpV*yT4 zMy+yd=Al3f_L1$Tygrz-ksehq8I7%*lh?$1v*R7|@kElgrRBp`ZQ~mkcG3v;#(1KA zVN96v!cwEpd7mHZBRmts`zNU$uLEDOz zPId%x6bPG_Hhi*+C(HEhCk-c=1&2f3ZE~Ko%lka*?yjzQ!j(gFVzEB5)tob?kG5At zdPux6g@*`k>4r&WH5U>nx48*RBRE5AiEfMKCP8tzUXt8o>PMb>;b0})VRUb9t^pHp z+}0lH3@3KvmZ1uivyQnY`6!y*Y8!)cBoRlI9+a}0_V=X$9gb8yKe z4I3p>$R5jc8RJfmrkpH%%VN8tiFm9NYn#q0ZzM>$#uWQ!=9Bc7zDDEk(3c%Buj1Va zXds?iNoZ9#7UpSjOLvkB@yc)yPDgOk%S$GD7E1j&5or$(TPKyt;V7|m0Qy7r68g;F z9!O$;XRHXG*`p~4xmM4F(z146H@ z-0&cqh-8foqmqhl(bcq_o2ee+NokH$Do5B12_Z7e@)iy{?=6+g8R1F81p(c%rS2sg zX{o)OA@#UZjHn)_me$7B?U?`VX@#o7ycpDCEba951Ml51G33%&B z!oTdfOy==6BZyrIPGC`CxD8H7Ol-N8u>sc_Y;%nQwJywMG=-Elj;yl85*|rK+}#7W z3VOuiat74Fbn#ZHQ0yAXi+AB@C*2e~?i&-)R0Qis1nVL8FAUVR$rUz8lf6e}{F2(l zHFrFcYB8pNOgph4f9)ouwZ3N#a-On@b|LpnoX8$S%v>Si%r;ICF@H5qp6Z2IW@t06 z6hUkAEP=PHJT*}Y7^Np8Hk7)QMs1kl#ICN1;XqUGy*Y8x?w4lXKgES2ef>ctx8Qn{ zRXg@>6{INzH4lZxDsfd0qm~(G4JPaiwsXZ1BWia{pFWEz!;*4f$yK*Wt-|#NNW8Vk zT28`mjzANNv5T>t;#I|8ZMscZX7p9f2cWsy_&QJ{c+79!1 z=7rQoHPB+W`Dtka?=nm!)@)>%g9Cw;3qsN&F5Ytg2s#%R4+L=Bvc}1tfa+C98%bd- zK>7$CL=q|3vzDTZ$X*AFG@BsXONkJa>o*q}Ch6l8oek!NSTXrj`o(%6B?Cl)9x;#f+IRJ$bHos8%MK&{Bg8M2|mw&E2}k20YnSu$ss}Y+8L*;HGIlUzo=QU}c2QKRwe;osn z#D->VE}B-W)sfvch`W6DtWVL`VBIzsO~WI%|n!X8Xmn2yn772YG`#BqbFkMF)f+&e6hw)JoWI4PQs znJ6;Lwr)i(lMY;5dtzbg5OhE%Z!vN=q*%ZN*~F#pO)X(ei!nZ!hW(3NVvz1ivuMZb ztL9p*vjtw9?Q9BnMxmBTAPXgl=9nC@^Nu<;E3)-qP955cI2?ltk`^l2+FGj&Q;u35 zT;GKS1S7FL!iC8o*p)7`ds0%R;!H%txEiBv5!KAXE-jQy(VjFE(wk|PUC#5zXxpkd zHXQW1Sno9QV!$!)v$j@<6pdt}#cGEIH*2OAA>NUuz2}u08p)cRxl&@rC9Shz9$;lR z>^A|nS(_ReMVIN{Jbr1D^blDrdc!fSm_oeIcda%W5?hr`cy@H zVV22)NJGO|ERBgoxQAAXP)IM5^bpwV#JuG09kXRHXK0^UL&8m#v2zPDqn2ln&T9ra zc#h!V>4+>@x!!6nN{(nt_^IKJ;Pqak#+RVA+u~B=VqCJs)oHR(GnmuV7CH1^?21SxWv1F&Bsneyo1m|kKp5ppYECxoVsD2t++KgdZLUa6I7{CbV@{6HLc?mmdn4y}iM1Q@*fn$^{GJMyHCFm!BAT zW3(iSx-1aoN$G#BweX`ez?69=;T6RQX0hm1i?l@pi-A#j4^g0#NR_I0H zsi=YF5&0>DMCj8x72nNY8`0)m)1B(-#^zPeL%H=r-ADD4{+XFwwc!@P!cDD7PV?Jr zGbpd-wt^8dgHZ^R95@*6vUo#b$#oNtNsL|UQnW|Mkdm=jtO}5EP}<3u_Cx7NlD5C= z;VNvJV{7zmc_dd`n0KU-5orlCu?xm~$uV3mDuxMg@W-&?Cb$8|@q=26-|#>ZjAM{_ zGuBW>*wsn)mW(iRnwCCg%p9+pHhEyp@`p4$?Oe7ej33BJ4K%$PV?7!9;q9lz$6m~XN0l`LeQ>nrlw{=!x)_}C<2VMl3q#6-Yz23vNbYqnydaJ`p2SzMRa z>KkO@G~o7t)fkp~f+CT;;3s5|V2sW*XJl$KSF=3{Oo++e<0+uG#>_;@X^opkq&TLj z?5y-YOIXp^-rgFw8w#x*8?}H^eOT9f`uK7=Y+>zwMHz99Qx=-rIX%UQu}WP=(Bwff z%n!KRNm383T*#4DYR__Od{mTA|u5pR0srFOC2$vr*P5Pxnfqyj5{(k(X&ZC2AyY!9(o z87I&VXc~6SnEfr#LGZIhx2omF{lnicb4bNzg3-u3cP$#lO-cS7R0bT*7i@cRE+#tF z^+gEV!h6^)I8}@{1CD~UK15h2wshe&-r){C)rA!@>1C3zADTyOhTT&$mP%HXx4s?X zZqFprb;8NfF;^KmkT4D)t^f5&0eq-+_E+0=SS`&-nGBH=~eb zZ~9Hm_+@v$In2b+JD+}YnDI$+X-(D*{L}A~DQqq_X>-m?_#_I0r>9sV!}ouRWodVb zshsu#vi~R1OtBiZ)7E2?oJ>K;(j?_DR|z8UHM&IGl!s5dIT?UI`D>u=!O3^mrw7Oj^! za*zF3Fa3$2{#^*QBd;@3vz)vQf&KMhe~1H6wg!D%th!M$C9PF?Yw&0kby^4Nfwvvh z>yhgMgy0fIE$k7VqFO=9Zp_MbZg0t%c*EpUHoW7;D8Rq zRHiKhBPe1qgj*mQQNfwA6kX^B>qB5EMUN~B;SC!cXr6F0&%olThErr?V7JRGuy!g3 zEd|yrP}A{mxBRO^zHWS2cb(8@tzM?h#t<|k$5u)0L`$%$BP@gCVeTBI@UAG`A8ao{ zg~OaV0CSa^wF2#@sD>a6xcZD%hJ*+0_+EzI=?M^0%Msg&f8mVQ;K9Gcb0;2Z8P{z9)Sn}K6WT!)53@l2R932|yoU>Tl<@HJ$jhmO zheF^@D{NN`g53xq=cuO8?>OEOqDHzgR0SK5i=&{bGRG-*eAMVL(Tp)&hDQFF5s;LSLwS+JwjWEjCK9Wvz(CBNA+@DmaaDbAiJ{wn*#sSf=VWyjYfMWSi*;Cp%RM)tk+Y)>pZFs72mx zc>b$j(lQw4L8P$SO+#Lrbgu>~^6wuCwElPSMivSZRuJzF`? z*;cCZ1bB&AxMr=y*qLYBM>)p62o$@8dK_~zgi+w!qrC10W@iIKwvB3H3(B$8E~ReJ zqI{6&dd8yOu`cJy50;{W=gj1ItEtVXo3g6MFseS7rkIm=A?2D1o^7@@ zGwWvAWOf@D<<`NH>`x=OzXde39$G6L*9!)FBt5L=7~#ed`j`NB+B`gKlJUW-a_Vy> zXSv8FYv{s1jw`uOs-gp``j4mH+k-rq`%6wtf&AMpW5qGnD+gyU$EC~GQq6Wz7cxfo zIES+n*=s#_S-YJlc6>-v+EZ;?W-0YEH_AABag|N_C~{jC&tB?>larLg9nd#+7OEkc z+CoicZMrX(XVgY4Ny7vOK$iE?uFRZVHNAON8I81B^Y3i%%gK}071u#$XcJBqG7mqh zZxOq;8k4;hMf9`};jwS*co&8h59*LcMAStf^zWy;u=UKB@^0yYz>5mD==+74yk3fmNr#Y zBW$D286d}LHL&T}H@02*Yn21~EvSh`tr}@VAw2!A5qS*Vv7CK1QjXd`o3U6HjTKH6T2>Dxpvj^01H0W#4W9ow_1PS$4kv?Y{<5+iQ@30yaFGH-+7ie+X5*bGB zXzr!gQN(eJLk;f6*~!M)T_g1<|@E`!lDZX;Zac zQ)y$ipzoQ~O`ajkFoKjrgM*uPwAdo8URZ-j|vdW!UXB*lT zx<{_1l9u*iu4R&r1DC9&r7FE@){QrGF^2uy+_qk>_IR!p_^DTKwt%*e8tys`)}nVY z;kO!wpZb%IB&QYGxG#FvNYAIOp~B4t+!T!XIytUi|S-;pmcI= zr}TFtg&MR4A=<0d){u~8wsq@K&aOR~8k4i1nxE-A(yK5Y11jT5Sy$7u+hp6qojY@6 zQdEnw^IP3(%jrI_O?EY119>o7bZj%i+IFCX>UGuCU}}!-Q?6XO+J-JhT0GW1@yc%Y zSoR~k$wt&`=Q_SC>1xZ-jzK+h5Ph#|~eZB*jtOpW^=uH)pHYlCIB$!#;}4Y%CZ?X{ZO%k_+u54EC|x~Cjf+D@(k%)XHa zF|?7^3q2TI3mM*x5PPV5MYDQ`58Sh7S`d!)rKxDQ!6dmt7Z>) zbaIkK>yOq>0y5=l@g(d%xrl1@!6D;N)8Ufo zq|w9QhQZbDQ7UP@1IiXO_dtMcVoSN?_nd$WA-vRiHg<$`7*K3-IYJIp%YM6fj;#Kseecc6{jYV& zGi{kLjEqQ{ax=wU&$MQAOK(N#Z{iLuD#NO2%*x2;>OGx0+mp)O8*89U>eM;u)E3O6 zsAzsSb#6Mf6=}3~bg6lWSLwrrTC~t*ku%b2*X77h>x|Ypc5P`}!&*M{5_qi_Zw{;F zGH0I}YiVnoP&b2%+`n=P8lTX-lP{g2111k#u3gq4 zt#x71%xXrTm!Z{}t8C_K%v5(hR*hWmIjWXQ_IgHPri7$~*V?~IK~4L1hS{Al$H`c& zh_m}aN-U?m8cFHWd)^HDx7f269-Xc4Y-xC$tMnAJyKS4|@y_Rzrmf6%0;PLzYegfd z75jJ1*{oautiI6sGpnVShMUu^Ank60v{ta1jotLR1GBYaCPmjrgN0^7W}0mkMZn{_ zug=V+&40aVrIw@MsY-5>-3g-ekZFupL$apNkjy@*f_e-)-q$JL*z6R{H27@&U90si zg_{#M^Eibq;nEzpM-4+b5$wqysKJ%tbveN60Ua$c@L-11Aje_v*vxu! zYJ!W>OBn-S%W>lPEJj;nvJK)mtw)QrNtz*yjT=N@sQq=RPK4M?jwd(cG#|X2<+Pxo z)Ft^K=JhN=&l>ZeRGpQ!PPR+0aF!a{KbieLDLO4&UpV3+tYUW6GZmg~+xHeVvm{#oiat{>r+v=akkTbsF_tE{8Hpsa4t=M7SZqfAo4#FUEC_U%O2N~1QyI7;^HLQm=3whVN@MkTflb$I>wkhaN`eOuEB z+XSzew^eF|<_bM5UK-vxWtEjZfW_Bs_bC+rT2UI8t8 zQYMlqLnqd*Z?{d-x`I#}3tV}4YNsYQW0t#KgzWP%eJ;n@u6Em%F?TtpZ-cizwTF{7 zmFxL)%?rIoo!Do|`D<-E&O-Pljl2xNrQUD+ZEUg)Z^Iz>Z+%m(XnTnr-->^9a?oVt zVwtPtw1~OQrDE)d@zb*zf8qhAGa+-Jyeh!mA=pbLwCh!p4sN^K-~u&pFWp_Q6&0#T z3W=*ax#(CYG>sPCxX{iNs@fQGqt4OU?OcWwE^$c9>2v1pFlXOcnN7=GV0l?8d*r>w z18Uouxro?Jz$Cn^t`7a+?s1xgDWVbFl)c20ve1)q36@CacDc+E)pVw$%S}+}CTg;kckW0}q<)-w?-J|w!MNtIQT?&Z|7R?lao9AoG^8q&3j}X?@h0J`C-O)JmqGlEYY@r8RY-HitO>op@%s zl%>>UTZ-Iqx0=}-HOOC?u1mXhGs{{U1AVK7HpM%OGZ%7K+Ok@R>!13cr>}CM#KwDP zi6_r8o6c`{2XC(edFEh$G7PmPBLEKNussjZr!b__Z|%CvrK)QL+hP)ZgcGeG<_<& z&iw{&$=ac`f||9nnnQcu>jPhjQY_1bmrCC~-NmEjkRpz#WhZym=N&BD4(kfQjg2Mm zoQmxYZzN?dMf#qObWuQiMRMUNzp(K)`fGweoz!=^PU*IDhGu?NaD;J7k#J<@VQ zYor#e;lOb99@tZA{Y3f_wjMUUHDP@me7*J7wt_2t+}Jo%S&yz|4Qk>%w9?5ig@(T~ zkt_C7xq7&5I#GX|=-Y84w{2Ry*&fSOa!~U_y9((#;glecE$7rkZwdB6+aEctpU2i) z$^%oiW0R)ehr0-Ltg%wfj_iRw`L5&+m0tWw+p=9d?AUxa#?EAll4cW!)txcgMtAM= z6w2xwqC7;QajWOPb=yyDCm+*!S>P|P?wyf7Vy%_?u}|ZIZZ+u{ZA@9K1IgO{%**<9;_X%o%k)$ zIncO^Fy-8vwMjW=kOURyb^8TGDyyzTx$lXx%YP6P0m=m+GlI3t!SoR zWb`S#?ONvW*iw`MeOrO)G+A7&p;_eKnABctiU4&7yTf6zr}`{MBTT$;6KpGV8wNNe z+~A&W+qSxQjNZO>4ye7k>DI1#Z+Lqq(U77g$lopSf)m$p+JAay%rUjh(9+HneP(Ip znLA@%47KyYs*uh zE0*V+Dm|^msKa;)tqQfGh3P2X3XY%s*;~f7jEYvo+n-9%T&F`_T%HAMWZ~s?e)}Ud zH6(MFp$eNZTC{A`5WO$nf-tAAnm`HCbX}^{bQuog$&>?L;AbhyA~h0!*r0zkLvFJ_ zcuRdHwG5~4Qs7$Gkze%RV6RiHdz+g^9Y)QLn+~|T%!4Gk=FwL`(ePR)9A+&f6#D*| z;x%#YmMAPtvet>6KABg~^p=b3z22+Tp@v53EW4-eGTjze_$laA*mgiTh3yT^%M3nO>D!7{gJ~UN6};O&J?WtA#eL@$4!7q6ihA$I2U?9>En(M3*VfH7iL&<#T&nTF zB|s`)vO>=YZuiJK>IE`{-O##$tCd?S)1=bg9ajUG9l*j>=~_s~-NjH=wH$J#%xtak z6!l&?uAiYjMz|wxxtq-j?&7k?zCSkTW@a9q48V$7YFB-v;_bu$j98J$ zh_|nS_LQEgnKA}n(bUWvQPz8Dk8-@nNR(CEN^MiwTm!UolimlqLgkvZ{qsf}6_)A= zT0Mt4x(k9p9nEn%srIaTyY_hJXm$ga+|bF&bh~iC;QU{Z=XFq z9=;4*r7q+(U@nGSLsjp-fz`fVtul+*HOSsKrW=`zv;=dNK(0Y)ml3UE2!;cf$U z^KumZIWz{m8@5wxo$7sPpzd<+ab@CRB`s+>7qj(Qe_e4M1@yMk&axLQXk}}hx{?y? zc2G;Rwp`nhPqWaPAGBq;^jijH){8}AEN`IFFQ?hx3JPp@tF#-ce0rvLIdiZ$R9X3Z z_YcGtZy*vgY>T^xaRE!8^T~BRV;D6=yT`8-Bv{Lx4+!OYYQiHOlhRk z`y;!uO6IbT@{MSC0`xW->Z&TUqc)w7-qH1|%LeM1Wv*2O?2k4k?IFeAF4GvQYCWi0 z(G4Kgv$Cc7?c1bA_TN@lv8@*l>ZNHwtM43ZGkSCDR+9Uf?efkwqdwN1xO{F2{$?yw z_`D;Cd+hIkq8)WR=2;X^sgIhg-qBLSXg%v~bNW}$a=6S%s-KOa&mp{eiJNcNHKTg3 z;SkWyrNfh=X2p-9ej-9#qk5#IyKC2q+1ksTY>Z)rTF+$KxwOpm-rj4EslrA~K~76` z8h6{Y8|WZWW!%rv8N=zzsj7yZhw?lSam7;AX0|(1P;z#JI|rJCtds5II?inrH%@v% z(Sl1((Vn5XOqUPsP-0re*j_Wn_Koer<+jOg?)6BuE*CtAJMC?-dk6jmLDS8x+vRL- z9hlsGWdn804lkdl!pdoH(>_ljltOjcgQ*P}_acWLFzQ+^A?&V}DDB#yk-pS2?x%Ko7KQfq3~(Pk#5H}VY)U@wD@Rktwn6$_PWAH;nlTm6-T3OGv|u!c}u$A zIqYB3V*1FVV7G++rAj8R+)YR(w@%7?<~BHUHKl~LrDcMi4&KjTti1-_E#0$5i#oq5u0kt+G<&u}QnV>z-D5VDh6vAKtd++)NRjnuKdP1)PGQO-AGk-0p;ly%l53?t z0UA_&nv!aHug;oKjUFfr#25h^{OQ)i@5AT?Pln3fX{pcmz zWP4+Y%HMk2IBl{!tbMY!lq(-zmQq33hX82JH}L7IeLw~&amwlebf*aAP!9kkaH2h@ zU5$L&jI*t6@zlrztn3=y8|#@pbla&aEvxmU&Fs0VY88#m`xV}!LC;}&dV#idYzh72 zGk0~g@tLcQYOqE~Zh5O*ysE`jMyfV@M`q_Pz#XYxn zh~2zhn0wwez;=*A=ROG_o7t+tYr*xmE?7Ebo0pQR_wt7WZF3GNeCoAN&njHHXm(TY z;+mU3viLKfRl#q3@O>9l%zj~C@H0<*{>*Q@e*SKMet88xmH1TQGr^CiOa(%YhYO_PXj)S@M+9bPO!2Rp=J0q7a)K6vhwCU6fR$tublFA<*Sge0iR70 zNmyFGNitqkzR8zg>dW^r1w=y1hfk@0629}x!}vt-iQ>~4{K`3-FDrYxXaSI&_>94) z8=oG0E)C?D_x2H7L9mbDN`h+$t|Qn_aDy~p41)*qLdwG1Bzk9l$nll+9%RGDl=ptw zd>=O7Uo+oF%=bNHPifvHp+a~Y7~z!Xk@#%{_Y*us@Lht(2%aQ(n&3Iq=CDvmmG%CZ z2)+b)Q6n!3^0GAZ6;#7y!WRX;EET^Z4aeY+)N8?z-wBqM_Z~GZe1rA8r4#?c)&_fT zR^ycl^eT0&QYzmE0DOH*W4#LSNwbc6{QTl?&souVWl6&?zIE=8i(mY}%x~VX>+CB7 zf4T0OBejX>j|(4o`2CMuaMnwozT@_aVfP+b^q>E9+P2s;KYpa<&89#9e7pKLf3rXQ z`O$~g582$kuj%or=l}7Wm(-u;d*V~KJ-+VV&h@|i$gDSf%U7&vs=T7Ot?K&1TjnjO zey09{-}wLYk*|JY?vqtx@5ocCysw^}?wb>Y@bop5^(_j9e3fGm^yMj^ue21fv~-L> zgu(e&1Rl*-e#DO{F31Oo(#kQVr9OWFB^cc4YY?vXt;@sc27`k19@KFg7&m5=&bLX& zU8J$F{)$M0q8eGIb992EV@h=tMaL=Y>&`1cO(OJtJ(5(`cc~QZV}{D|MLORV`fH#5 zx+YlQLn)+6=l2KDdCh?XmP+1B}Uz5B? z(7a%fZ44F^_=CuTIR;ATtW&-y7%T_`gTQ{&I}y)5u%C_q6i8W#yruuK?rShyqf20$aPcR)&i_DBn8=Ef1EjV}JM7m#;!1 z8hrr$4Ho#JWblt&yQq|z`x?l_P3UDgR7|Na4=k3Hvb_!9-6-m%y^BUM)6T+>zie+~ zY5C6Jkb*pGmbN&wY1pthJhhX(LH>#V<;65rSPoj8M#?1`8tD8d~2vJ{ni`i zj`B4d?U9o&5ZNM4z9x*7bl|-%vvQjhYQfvE@jUaSWWdwY*}M+Clql4t zUm`g#x6F7xRUPjj!Mk}nI(kBh?pP?bJt71m?Y7*8+;WR^%O%ab+=OGvP&^R=NrObU zhGKX%WC#!057~U@=Te=g-^sup^L3x0cD&&dFX0a1?HHk5cyB8EgjZRIx?`R4I^^~c z9-NOCjLgm@RkaeYKJ3O*!O1YZ?oMd1Yw}F?(DDt<3vvrhT$aF-`lX7F$kr5|f1kkk zwxQHkKGhxx?V-q?Xlk;fd=QyDys#vZa?Z&Vo)YuO`OtQ}|07V~^Z7(&VU`s*r2(bN zBLq>1u~XhHGQXif^hWOuoI_=MH(~ab?G>ez{)*@%t(^9XCcUZ_rmOh-`)=|{O%jKLJaTEdwgMDY;?fJd1}{@>v9F&r#V zPGzjQ}At2qn z5}KoYCuZbn1qIMjy$6FqXd`GYXn|`meM=B3+k0IR);mO$Ac%54d|{z*%6Brr`F#U* z32N(m897VK_d-{^JceE0E8N(7jVLG(5W=?+g9@Z!5@eS_6R?!J5no6sLu;_CgDaqX zfSOja+#eLK-oS2_?}gq~<=xWP!#?@C#|O1dF73UaYG{&=IaV<^$`?RuN*D|x6WR{S zvexWT_D3^5l9 zbOfWvQ4N+BVv&a6;J@am$Pn81B-E?Kzh;`xUO`Msprm_kTu{~>sBFk!X%J(5T0U3% zN~~i3^2;6A0g&2KNEnM&mJdg30a;Ob-!h;17NNd;IOkENtUhIzR|t%JXEXX|c#8e@}*!wbt zh!e52AXr*i%Hoy&%2I8?Tt0ykc6p<(gmqlLh*GwRV-XY~+aS{4L$T@Wp=J15T5h=< zjwuNF`8B2l87{&+6~aT%&5I!Ja||bn&<=_Vo991&2ZcbhOjJo>z84b8FS>vcGt*)ccy`fYBufXgKCw6dM({JmDC*UIO zJ>sa|uP%vq^(6TI($J(OlS4CS%$QjV&=BHl>hS8@&|1EduI{v={`1WaosZY_BtskP zLU?J)j%Z@Xw9u+(+xBpzBebM0)Ve!9E!5Z%*%OI|8tXzA#1nW4OESKzKYBA*@66EJ z?a_{CS7=Eh9NmU&c>hpnJ)4&d;VoWxC32)48_Oa`; z2)>webv%}S_Xyq<7T=u&JMVtXCm9KTz;GyyW(4j_=fgXl5=%QeR^cU!sx#S!H-AOy z+VOrQ{vDs7Lgz|o5DaqQ?K$9AF!u4YKGj=_@AL3I6yF!)8(*G3A1o#X|E20>{!iwl zLy#|1>Yw|Gr^dLipLj&8X9+U?m|Lk|X2cQE@ox?gkJ+Z4ec7je=}skeACO79n3VeE zD?T;OQ-0KoK6PKfjkqr`8wj75yBTm9ekRd^AB?TRS?p$fuU1V6^Y5O(Z~w~nU~8*d zrxvBZ@nb;wBS}v)ByK671FAeUq92$}(PntLg@#w(VhTagD*N#je_J~APoz7hx_ zi-R_$kV|{Law+{8gX74{W%z=b8Myzx1yJF;2=V$jOdqiIxX;N#x_gzS4sK;$lT+~H z`%uQ#!3!<9?`dG$Lin7;hjOR$UVyyrD^!?=ck$=oQ;*gV^1A`C{9CDpqb#{WAD+EN zYMqt}@w~oH=c|1agZ+sOy@Y)7nf_TTX??=E3$#`u9&gqJ7un;iw{-Lq7aDvq55_{j zl89H#c!I(c7+yVD0uJ+v$Em)UM}fk)jIq$tO+PL@zI>)7E{NdIl|6ertgpbZUTGBQ`!+988HHFBlW+is=K75Uc}rflBq zS#Y8`uvE%tUe=;d{8VT_hs#_%7vGNP69hbphLG0a diff --git a/packages/NUnit.2.5.10.11092/tools/lib/nunit.core.dll b/packages/NUnit.2.5.10.11092/tools/lib/nunit.core.dll deleted file mode 100644 index a1dd69866dfe9f4a0ea9975d961b02230aa66969..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 139264 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˜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Ê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 QFk*ob3yfIc^DOZH0B8(6)c^nh diff --git a/packages/NUnit.2.5.10.11092/tools/lib/nunit.fixtures.dll b/packages/NUnit.2.5.10.11092/tools/lib/nunit.fixtures.dll deleted file mode 100644 index 8fd1932d757ee0bdc41cc8a4af94c6ed2230a146..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9728 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 UG&KHr_lvrH_9GSlM?Bd71>;s!w*UYD diff --git a/packages/NUnit.2.5.10.11092/tools/lib/nunit.uiexception.dll b/packages/NUnit.2.5.10.11092/tools/lib/nunit.uiexception.dll deleted file mode 100644 index 610c1700ed22be35144f6522175332e291d288c0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 90112 zcmeFa2bfgF(m&jDCeLgRvw=@acS({n95}OpvMwx$1jz;zBnc>>hdk5=(XqEm(tMLO>99>0A&|F_3qo!92d z4~yGW*nG4@l|Elhv9#Sj=gW~BIzK&N?QdrfJ@s4jN_8)f8kv4=(?cuw?)c`NB0loj)%9NZUH8C)S<`pYdot$CnL{r>AEsUaX>B5HVB4Rx*o*h@pnjViH12 zoHrVYo|~pHM|LTp0X62Jf{J@%fL3D>_~Q_`Y_x*5$UJVJuoEwnaDx}9!3&|q;FUg5B@{?8~-7F zNz;E;-=_DZ?_o5e;!lL?3ZYbsPe8{eD3=-r52b*xY7(iIS_1eIXoK;1VjCw~n6k*xaY9A~_8hfJaY9#wa&E zD6NE=4wN`4v`4_&ti419WB}zyOS&eKnFtfCPZ8-Nr@e@TC}?LzRKOELK&H5xCY0f} zXInfjUxJy6c14+_bY`_QpkQ4TF$DSSA^Bjm7LVK4?T+e%qdMlhR)?}AxKEcvGF1m4 zRmWVsI^cu&>|>EWUkT{*cEPckX9#YtWD#?bhyTpldx1QbkoK_1 ziYpeiEOL5oD%vs7NrLyO!7S-HDoS?6-!y4XrC5?wmW7q2HAb36yB{I9gXFM>IOt?% zwLI7e7!L%ZwxIerLv-r0Wh-~Kgcq60AyXYg)o4N&^C$rxoxlSgCR+Hx)#Wm1phTCN zg&^D)1$}2D=C;|@96ZYbu83!>CEAkxm23f6X~3XtVLsu=l(v&3O4c#-ZxXOp@;d>0 z518;AGDx<#D8&zL*a}fHbtm>|v|q^Ws}vBL z8FoiwzfC&j&ZC$)1FA~>kLdA_4|munnXLJU1}vVa=VDOr@PqI#k!;2*~!8YZHcxncOtYbkG3V`##*B-2rYsE zn}~J+az(qMo$L{AS~%a!(H2=`Lf%bcNCYk=MtG}0)M0p5rKi6dLT_~hn8DPbhvDaBKh@==(pW_5U#QLP{x2XO%M}<2 z*)ztW_fvjFQEQ?A6=o^@py3PP1V|Tf2}T(f(E(*(E=72%87h3&N{ymQ*%WVW@J#GE zBF}}gh>zm24fDgFxV&|#G`(uN{y`uxMI+v%Oub&RzULePG z1hoMp%!O1F#aj)gBn`q+$QBW=tAp#HuocP1@M2c$!rVbL_BTRIMF$`~HK906hvGm% zs06hcfiQ~}(1jPaL}@MXD91W+h-bmY!#Xj0TXJ%+v0PG5X0;U(h!Z$+s?>3|Io<~= zr6wZ^O1#~W6>n=~b;p>zZSWiv1fhBYp>CHn06!G#Qbz>Ku*m}DI3>py*}i5k6pm`J zB$!aaPD>hcsU3+6>IY#$Emn36>Ys;EU-UfKfVUH9UFrDG=I@NC+wO%^cfreb#RFp{ z)M+auLy<)}ifJIUB$g!J&;jL;O@TTa8uNAoPu;qhTvABWk%;?<0%U$$mbyycl1M7h#I? zf(g-_8RIX!7qzubT10T&tX?XEbF z+i9dd{XGra!)>zM&PTTY-}8~}`u8-lz5bp?w!@t?A-d7)ey4syX=L61o<`RF?`dS+ z|DHzH{qJdH-T$6O);&P8(NjdZ5{gKM#3CvssfcKji^%JgD55&16j3cQUkvzOb0Ik+ z#q7_8gDoUQBA!QaVvM0}I82bxY7Zb0C$!p=;&4l_MLUnrSh-`Z*$Zfwg7rdgM66yv z+?kueJ`BR|+rm8IzMjJ2xoN>-3sY<>mbOhDX0;Y37MM~?L^GSi>`?0hg}e_S?;yot z^^QY!omZZ}FR=cvfKmG)hWTPbZnz^MH_U0*xjbuA`y(Y5RfvW&j;&-9ubBjPJ*eLm zTW>{T=BqCw6XdkkqSB1kI~GB>Vzzn*fRWQX8lYR)c_~rre(<8z#FAJCX7cKJq*+u< zPHdJ#k22PV95o@=pEdbHd#8zuMp={AM75hxKFj=@mZ3RGzU~#Ce z0jOvj8+cv7BQ`81%sUVQMcZ>jQGv-`HkSVO0wc}dAt-W$QyoerOL`D}9Vp+T!Y1yN zJ)|x{!9$i<^M>hyJaZF*@IHW9JPc)J+}VCff%da%sew3+oGzDHt&K{B`J!xEc_fiz zc9nA^1y9TdtKuQ;azqdRC;;I;;p9Ek>X4%($zjp% zUbck`lN?><5&BxFN6^1J#B%U}N~1-D6&->40&TmvSPP_vA0PPm7i%WWzFcD7m;vMC-Gjf`B_xrLF#fryL17l6(w>XWG2uSt z;7#-Y&d@_?(x0N3%eo3F%~lAp7Cmy)gt3FNVEe`72`L{eW>CpACOGUj6=(|k%0!9%H>3kJ%5pU%0P;yO&#-)t!(h*5)e* zzg~#C=GTGh!r+!2-svdSW!J0horFX;{I5D05$^x{Pp3xP#?_;aZjZKO;mBA=wB6X% zw-1v-C<6si1Y#EU&>o+3ktXU5Zu~rcRJr{bg zdy9~9P?)5&^Z;TC5P9L2#NJsBrGR_@?H5qbcSTsUfufE@DC&Q1mE0Chs{o%BipITJk-jAk>ctY@v0iVkYzh5fehMxXcV)G8If&HBbb}_5wN!_WW(sX)D=Z|X~^1@~Pt(Lw03kK)-o9FZa&K_=Kc*5VBFb%?gOeHF2* zYjfke8U4lNh!KR^I~)`&h}{hEN{@6 z6Y}8QDH(HIy>fb^uu|D8X7-i5|M5b*)C=&+=S zzDzeg6smKPIV%Nzfa=D#5wgg3sX`24q~M{UKZJ)PwwS&1kRu<>V=5##Gnjz6!tDu| zR~O4cFz1j7!5o}Gd)3RJ3;GM}Rr`0LMGLDTqf$Vj|1eOqNLh`1zIA4e4GqpTkFiBRClARu>s)u%!+wE?J$f|&G3^=X0(8!dLGfn|c6)6ska zeMMwZ8z=>Y51e4&oL%v$*n1?bF1>mh5{LQX9CG@A2?q8?&FVR-hl3{z$aU^?f`exY z;Z7I_5O$|ANsz4~u`v=*{Lhf+ivz;S`9h{B)sBaD^lf=>0VV|*S&8aV6v(4{107>l zkC6=0t`yM@b#k&@Y2yN8yv%D>j}s*flIkTz58)cQ=@EjL@J|JXxU+gj+KIj z2A=n-2|_~{d81_BItC5-YK-aRN5IqU-HEbXX7978bat#PLplRqeELiYu%JYVkJBDS zYsULugo{((LV$HhL0vGG$w~p{rxsd%*z|L~_`>>>s(4=pE*n13Wb^)u>K1b1XUGZn zMRi0+GW2T}gCHjq0soYRF`ue$R^LInS(w|?vDlUQ5vCih=_p2`C;G3f%$s zK)g%Irs4VE`w2wnF+kdX6jS|f7r!!I~fR~Y8oL-6Fj#ZYi!QQR;{ zRCy9-Qy*jlC?Lzg4H*pZ&5F}f0uPi5(7gJQKyuN(s3n_HvadJ31 zA?xN1(t|xd2diB&6gw-?SU$k~nL1V|cJ*~`0z3Ck;jp&l&dr4cNYjjQQ74L$nQx7IH$LNMz zSa2BJ854pVVmRr17YQo&wm5Wis)0y{>&eIw1T2^WSXKid` z1;x8Wfo%(yy8eHpc#$bG_CjdyQz7w16i4foLtRiS4E4d7+*9x%3%nrt&EmrISSbBq zSJ3d^J*xRqhi|@S`E2n< z@W@H4EsvK(#@tm}9A;}S15-TLq$VT~x4q6VP;*YY9jU@GyLkO{_e{28#RPcWE-YO& za2eBYDI+oFBJ&K+gqQO1)Eu_i#ZyE^lTbvA)02xxc$y1Z#R%vg{sH$2PJV=ET!OR(slwi-2Rd$R*6iq<15G{$ZUZ!}A8p%{0gfMK65hz!; z1Ilw18qedL)Kvg^9)ob1ZSX}K>gGzx}!Y$Q@k6XcRc-=z_|)BRKi(l+b{`?i&Hle zstuvkR}fVSD6Vcov>XN$jDT=vHrS&2Do}Kr=U?1q!(y#u!gi9I2`u41_lAPGH

y*fMd@bs400P|VpAOs6Ar#z=_?&=jkYZb7fz3gK?uB=ol_b~;CwOK%7=P%%ymF7 zo?9|xw0B@Sa*T9=%5FDk-V3s%m6yRj)DS^VYwRV^4W>vi7g;;n5x_atP|Vc!Am+xL zh}*6#-Pty_X%$~9yHUL$u9}cYS-}LZV3@;(<$$cBacCM+sS^U_e1LLz;xJoYpmu~@ zpyoay*WD4~p&9c2G|Bw{B_;4mbjm{$NCAA2UQ}IaM zBVPx&y>O%K2JK|o)Hk}I?1pSla=fA=fOxmB5j;&f*^W3109Wo6W@9!>ROp|{*jA(d zOpbw8+Ssu}%3kD0&z189jC`UI^BU=X^9+1-Of!1A7~1&QhYA7 znPC#-3uyk~CVnAJJclaEopqkERR=@*h73uuc(3r&>it$Xtl*ki_bDCG(>S-WMvapE zJKc`QfJ5bW4&oJ&2YE08(c0B*9+w31<8GQ|t>`_7h7yN2IL@PZ#YX z;+HzIVr_i5uXryI>LaKUJajd}$I1DIl-Iitsk*#oF&X7!G>;bP&bcNzoM~<02WTwg z(&j+>rd9StZ5(5hWT~s{$r>)lgRF!slNNac!FWzDCQs2G;ndV%>Y!k1nl_75y&oH* zNDo}iCq>dk(p*TY<54LWka;=G?CEW}ufwYYYO&@e~ZfxL-_oU${;{h;tWuyS!L_QGyNUcli^ z+jWCb#Y~SR(D63{c%0Z`&1X|1_$eh(qa-m&l|YxC*=^FCBNg?AXk@FT4D=>!S>yIS zYsw-w0nt67qhhqA>HsYPIEY(}hS2x>{va#IEN}Tr-jZIIgLJAs z4;cgWgfUB%htgM({F#33o%HLdnxXW~B|T|ObwVKl{)92BF49pbeQXH5`%d~WrtgCV zuJ>0Im1U-#C+}}mD!XsIzhx26L3b@eos0&llLK_4F6zd!uU`z629YvJW!bfG>gbrFSf&MZ#S2)jTsMt6gPhl7Jto8Ps7w z-Lg4XQ^DLT$CCO(=A#6MBm}!_AVIq=2f>^}CIoYE0`1#0gu|ouRJ;esOmT<(anvAV zGX-Z5gxm-j24+h7kc^p>h6#|Kh92Q698PJtE#gcMm)A8$FtIBHGmoYKPDMy-k^ZF-1YjRPlF*H(qK0PgK~#(n?&-ZkX2E?2Udo9Q zi3N76%q+A~v>~HzdsJ&KhUPFZV#D7NK4j0fNii+K{bMdG`zgwT)TCL+V3yitjhYQ* z2Gn!A-S@pm*@O=*yI4uoZowS@B2`%&ludw?^KZ&-E&CjXXrta{0i!nRT}+8yq3;8j zd6CY00aVKoa(7@vPgb$;l_R>^P>Lml4riL6BP{5sRk1uYRDn_6A@_!-vq4p}KAL>MU za~Ic-+a96{sUJ*8JX~$5xjXbT1I)t|hmC1i1CoUG%Ph(1#g~yfm*ufqLHzJv#7~;o`WK#qgg}rFfoJ22MBRY;v3Dm=my)GKRbiV&TI^fZ6+5as8DH=&yigB(lx14MRZaS+N`g<#!aE(kIh= zBtTEVo%D9G*Ca$+qL;^6O2IH9EFk|w=j`wSUYfqj%@CKZ4m5>LI)1B7Dc~7Ouxr5j zqd`ljcHC2B%A?>y=kv5(18cxeT}ZZ>KqTaaWRwWKOWmH;>q5gT1>C<2Xf~wZrIL*G zRPNdZG&8zes_fM?OVU$Ct#@v(lHu^CleBUykyRnYomDZ&$&KJ*PiO{-3e8fi3N$sl zn~<^!G)uc%s;mOd*o-Q`Y+9ml>UPvWFrv^uGG)CzaM_4VoVG`>fl^uT0TP*=rdzlU zM(P$UK`b-$`HWd~1>g2TzBsnj`DWp51dHJjXoJ9>9f`u1le(6%U}+eX*^YAT-s8ad ztlrOqsUmZ9y0eG|M)uQ*J&S1MOb;)jfiDw#!gl^P1+`OP4?RKajJ1c?4U5p1y7?f+ zQg;TStz;-SZP_r#kfrW8qVRu#f(!i=Eub(##hxdPbrLuk1d>#E8rCWuJ8}+r?AVxT zjAKXmRk@d|_d6owH-7n6gLH3B;XTc~aK|B-{-w?y^)lv>Xh&NAP+bCgPe3|)POY57Y4-WH&O_{_{po+fj=vGo8C3q;{~P{CzRz(XIS=&EN2lxYy+a}=ak z-o>?Op9kVr?fXDH!lIdN29e@#6yRJy{LO_AQYjqwpMgMy4*?bydL7=Eiuc=}glize z0>azqnv4st$k40q(H1A~(b8KuM|BS8h{HtUV2!mAi?nE4v}GX{vdn{0?CMvcJfdv@ zCPzZWC?F;gA#&gvF7u!S$35jR#yI(Hn~u~z{wk<4s~+uXrM^OU+^9X7U$FjMMcR5Z zs!Zb2=9>Xi(VWh&<-2UmAh_?Q(0L5q$48l@W|vLA;Y=mig38sS#LVUoC`=w;AV1k$ zG@enn$tY_e(>+MHgru`z7a*ukM0@{zK+{mtkOjfw@jrY`6ZSPq0U;Hew+;m5cZ@u9 z`(YWcUIZ8UCdp%nvGK`$Td#cS3LM^*nFIT_X8Jw=?F}0`HTydSRL=d7(q(l?d9ZY#*{a+U_(Ofg9x#V0=lXEQnX~nqJbQtCgbvi*TNJ69>}R) zMsDm^RI%9|e3LzuH$%yyJ=&vSxe5mEoYRQ*HlrMR-~wQv`rOuAh|EL;r;3~IC{BXjeRS-C#+TxlFj1?t@nk3 zkj_L=+E#aE50xE7cCV0@475|#7CJ?sZS|H6z*WoW6ah;Q@dj)ibeYSe%LVHY*blE7 zQm&m<9bzC7!CP=tl`Y6(PrxnbkUWwvT{nIm+$x30XjiYGVj)6G1aq_CR?qNIR)I?J z&E;(&tf(@@1PdYptkOeS1!^x@CGbafAh|J4NuLn9=Wh{DppovQHe_eyCa2sS9vpA9 z!7}MpzU(kN@89z!e7F2|Mu?)KEvz~=B{~*y;UyH^|A$cNx?+CMaYE)6f zvP*_q5N!YEd|pY%qSL<7$zsbgL#WHPyG(Mj;<0P_iu@VAcScRliM)0xyT z*B4W&fOe$9;E(QQAZ)^+YG4};^JN=)Bx5qNGyCum_Hw|)0lqCye-oR$hFg0Q!ux+f z1t*3m*aj-8c^XcGa|#;VbhFPi%sp_{5(f3?^PS0%MAw1b1MDGnP;@(9pZ`n=;uYT4 z=*ewB=c^?H;}tKl+`b%%!}75e+RnzWPRkS3C|qr26oovL@a*Q^epRmNS!S)O6K^Xr zOUY$Uc@)fNE?f~*w4Dr2jjaooQ9oUYEIy(4PjNmF9yoRz*LE* z{-p5ykmt5a0pb0*;Gs{acr3vBOX^db4B2D~<*Nof=QC@MB0)cM4HkeU>wREF+rQrK zB$wjtVz8z)Y+2-wWc|v0as67%-M>8rTAFVU!uW#~Bi%uHHdv-nkiRGRhda$`A1cm2 zhDzg?v19RWA-=~|>qD@iIoktBQT+(Q>{&^;{7Ur>`ap-;14)-3>|M#hdpw zq30fmxI>Q*M*Mar{yZRQbPJ(Zhr_kX*bRxr#GjH zncwi2Qd$bgx0&T<19({m9xd>~B&385n|TQ;GFKTE3`~gi;(aCReM*F-@DV(bm29j8 z+Dl(^7XfRj3QtAJIP5_CNL!@)@0(#4^k+B&taN7)Hy*1CvG~BIz$C~~IESJI6l&{X zKuPKpl1|6G0!(r-%obou6vMm;jHei82QUf6Ft_mSwBnfe?x3MLba9#w?x5Ls2j;*X zm{0G(9J>Q^;ttH0cVND{19R~X%#}MZ-`|0ufiSU{Ht0K`Da9~1kSkSUxSgeM?k#;Y zwGB5c_BMiT2D*v2U+&;$l?{z#_EqHj`$#^s4L)Q?NxxcKceS#Xa%%Sv3pbX%=v`Fy(wx)TunkK$MrOu%AVd!Vbv%b zYf15vu7aaH+0ni3Oj+nXJbf(v1${s=SD4?NMp&pwW^;Tf-+LYH$}&H$c>ALW;B>u7 zr^cEz8yXrcl(GecGS5NXOx_#F&AQB-N(T~5%pu#DIZypDKv0f+Gigpmn#2F%(KH1|=nhrX}l8dY8F% zQ3ZS$M62tD%`BDAk%BvSiDMxr#co61d()*@vjMoX8GSgpK_#A%gfBwnj4 zBOa}#j3j7zGLoqElaVBCgp4F>6J(@>_Na`cXivyUs+rv_E8|tmY15;mc|9GE!bEEhAp7ri@h3n#xF~)>=kia(lXLPt12TM zwYoCWNoy)2owd#!!9~DdsLwoy{(%WA?QJAsmAM3y8$#I=)L*Fs89O7vo$)UeuSTwb zhP!~DaZ2B}3OU(dv>`{a0uUaAlw+eJii8jY*zakBAck>A(wh&CxRZiS2rAqxef)0_ z0OJs5i?rNHaQj-y1dZlD(j7)C1yo9MRjjSK9Hw>RpqL@MUc7VzHuZOK)Ym~4x;JX< zClfJBqGFQqB0roJaW%7Z^^Paml;XH?*9RY_oc!h4yQdc# z>7j$qYUIVLX^nh5j|Y_3flj_AfE*s!T1ZHFAO1zX4u(&}C%gk{wagoqhArh;Ku9dF z$T4Buk@aNEBe@>C42zrM$I4+c!n*+Xu>!{oU3O$~*x!FMBRhUGNpVWw#VG@j3qQ{6O zB_-&o$;qAs|AS0eqC}#OOi4-7W2vdhdd&Y25y@f_5`x7Tj1m%zSRy#eqVG|Rk(`oZ z#8Oj@SZFbciNRtF$rBO`Arn1DEGfx|B_|uP(8?IN)KnuDT1rwV)pox0~NS^dD({|69J) zf$zUI*4LH-;C z$)Hcl1D~+KX^Q;)28D|TsQ(;AXwinn81JCu)HBMniZdobcNwW2g6|DjwAd(Pd<@k^ ztfkgS(8pLf+-8tg{%bS@d%x5mltNw9m#T!(-ZF>0QHBT zY6l(`X$#+g4=o3Y^%Zc2IAn&ZmDH$U(}^JOG-MMAVYOZjQaI>B{~gUOCxdUB6 zp=)3CKGfIpeJHG316_fvU)o}Ik={*;L2E`2WN?!VA>D5dRh1pf#=t62E}Jp9^P)~) zDoYndGU?;IMWmpPBV?Ug2J4{(zd4GJ`M_{A+AmVw5Z9$6XiJF^Zd-g#INtYnV!lEL zd}I`Xt&n#hu07nIkcW-uaeh8xY67hXHY-11=4n%^7E}z6>+k>)} zzcVYD3l+n;acp;I?tS=%Ccj2UWb`u&zN!xW#kv5dq!h_vbL1uD>W2t)R)6;M_5BAzbF18j-(cW*O-)c{aGtK`eYqG7K_N8y9Cl+d z8iJU{!goSofMg@YU2dFf{UEaT9m&mpTqz)~l0qq<-26e6;P@o(h>rX>Y=ia**%XWy z7s=z|Ou8Jt^hynG^FE2NtQ&)mo)U&Wu#i<8JWsZWBQTaxRGzOh=H_f8m8ygr(b_i^ zEHuENBIb*gQ_L2OTGEbkB7;C3UXFmu9v@cgQ84ty-~cm9!RSivmQS%)g#woNFkfGM zoUEMLZWI}1L{X$PXz-&q8tJq?gwKA(Z0D-Ms;FY%%`e$qEo_H0o)X6W;W$A}7E8l~4-32aanHcouF#vjpcy5y+>?cBKSQ@I7vYkNZN> z5`t-F{=JGZln(|$8EIaX%JVAdb_PnKzQj{`{LInqbE#v-$SCJ55LAC3(}ge2*rdv! zbg-bs8CF~I`b(Em-9UaGeBaU{79jsvlEtju-QVao|KHca3J7StReOgHlB5pY z_Wwu+Nq?_{e4~9)n;tZIsYI^2Ulq3zomkmpL>pJhG@?B!rJK?2x;a#hG20S#pqHT~ z-8>TMTX*#4H#JCN9xq9smKI{@=&?Y@@JFEW3jYP0m4`ImHPm9%Bgm)1ppErBk*JY0 zJOzG7M((dh$^P;x(sf^~(6?*lK7a76D)9R)=0YOHOnNPqB)^{!1A3hgm4n}63KnGe zcHJkx7A(giwj-ZL<$JJa!xG{eE@ot&LL&1u5@x%@u21WN$JTVKfzsvi0KXi=^pb^5 zjUgWRMi0K^$|r;NWEHo}TxG-X6CI`1w)<$GU&1qI5NSC8DjnhN7XWH5Xj3dD;al*#SG&_I!3$wI!b zZWfinKcDO8-2@6;_@s$gvYLR};DR9!SZH;(&108`K0b>afRK;I9&Cw;aWa2UKFYvL ziLhEzkbX}QK_}}G=Ie#`IH3^C>`-duc$q~XL38vjPnY9P~ZQ)wti{#>`7*QR#` zIU~5OUy+dn`Y%k+IH#lbkvi6mgVxpkkv=|X1N06JEjT@z3-&47lvg5tyk$c-N!|!B z0TulY4srD-lYL->D}iSrk=RsBmR&T662z83I+gd~Cs29vRwopqH9<-IxfWtYZ@2eh z1U?@})e-27R$L6f-M>MEbty9X|!Q4Lz)I8>*oAXHgUm9nnP;eUqb4QS>cD zNj1zn3}sZ3@>51u3+?4#(M7*&Mmiz9{6tvspNYd^>N@ZX_vJd}m%{jfOE~G0D_r#pR&xtKPo#K>V6T^}V_QV_= zSem87)8T7kR3W+kEG>r4rk`q|`pIuw$@bB^9X>W|_LqYOC+a#dqmo7&(p#+9Fe)EN z1`jj+_L$zrvROk(@MExkFOeIQ0npwmA;c#ieg6)Ys$wDjjqLi6KY!4uoGyd>>Nst{ zAb%j%Wl+C?gS4!SQT_p{HgZ`1tc>o1H2*Mlbp0whmFT~$jHcs8=8w|`)gL`*T)x(C zWL8F}as5XQ8_;&pL*3L7gGSfyU$bVv>I16Rs9d{hwLz6?)h>N!VdF;U4;wYeD81{T zeA+ay;~xn)RHtvI^_wtk^pKn;!}3S<8XrIc?boSs zGyFg7xxZEp4L`gm;X?TFJxRlzn8~&TO~Jp} zkQv`r93}c;TVoK8T2y>a_#sSzRm4YPyK4;GsESmLjsftO6C`d9q=rNdUlyU~1dO8QO#P?}~#c7@7znh{{nMu;s)QD$}O z&@$YWjIm0Dw{F#p<|I&`2zNl|VtiV)#(0?gU0OB~8$U_848Ss^aeE+No$vm$pA~S% zfL2}F3o)^r5Jl63_#LRCOPDyovwhPSAIy3NKL9so>Gsa`kdT<)JU73qIyiqqKW&ic z)Nk16{G1NWyJd{8np3sL`iti<&o@Q3Zq~S4t&Vda&z|>QrKm>>rX8%`Vq>Sot(7*n zbcAJxRjU>rR_(`lB|N-oxO?r5&&Smq_1UNu)sidx{ML%G5#>godpIU`S=OZZ9lxK9 z{IY1*kXjel)a|&!Ip;>j_x4P5mi*}8iCfN1&Q-}7O}?u$=cnZLyEA`CJKXoxsf{;1 z|767m@6BsH@2}D6>%=n^>TW#Te*4xUp3T7K)!3UHGgW+?%n%N?Ad>E?}5|%4t=@*)3XOYJ9qfl`6Hiyee}eI&re-C z@#W=HXRmzu)wgHA{_gz6?=M{b;nJ1sSFYZ;`u$JeU;p{~kH7x-^KU=@`p2)o|M|zC zII8&P?;j2PH)&wm2W`l$I>)ri!{Rhz7yUDBT{z+@kpG7N6!pk|Cf*;vYlf*PL+sp? z8L@Qhu3PC_%DuH}W>(tR*=?7ei+b~TvzV81cW0HW{8-~=hh}%!yehi!kySA}BHy}b zjrW)PqZBFZzr)$IaNOP5&_LFf2eGeyI=C0WZO-O@tzi3ZQt*R)t}Y!h@`?KrKX8}2 z)_V0J@9!VBs+K%AJ+sB?Lzl`Q99k{8;jl7MCH@?k(dXKtto~6mn>kCxIWy;6*|Vp{ z@xEb+k5sk|8Zi2i-ihx$b|Udj@0;UlrrkPFyRhwNFJH{RGOS~H_1EWzs4Lzn{PN2` z8a{n!>XmnYOKvl`*YPhtY+h%~r~ys0o4*io;8^srZzi7YasM~-V%i*7zw)yy{t8{{ zX1~-cFLu(>2S2+}-Lh_4{+TaEG+Sdn_IjVu!G9e#UsQk@GU)(#xmv-I^bW8F`6&+pu$ zL-n!)dOp_f{ei3ZTpHMQ{Oc>K+!%iO(ud<8JMzgVYNw;q(#!YxsmpoK%x(j^t;sc) z{q1PWo+Z14KTvMb!X7=3T-jUSIyZmSTeCB-%zFIQ?AUGLr9MlHf9S=3b!^+e`PEHP zqk6twy;SX41(AK`WIk2nv$hLQENoT1MeO1^r)vMX^!dH1QS0}t+dD8VJ#Ssywphx# zc*7HOo@i5{3iDb2>6RN2x6(dKOg?~WzPNpSz31nA{X(0Cms_n#UOnr`&yQQ|TsVBrV@n*DI3AvF-+yzRs{ zOH1r?cJefP@obM}k?(AsK4M&hU(Y3P9Cx`xMx7_Rlp4MvdhyKJ^S|EzM5)(U;Psyt zj_lL6&BEHu`Mx?M7hU>uW9rKK3@+Q4dcZn<^TpD!+Y+b_5PQ_dS6d9+?CyKwo9FlT zD$`}|p=KTCSRYCw84q6={gQulm4$y~beY?E;fr}aFZPegE8YCN8Bk2~Z$5sUD)5^u zW=Xq>g};`YJLKizb6cI-II72`-1!xor!_(u?bqx-)&1hh+zt)n7eusZ{>86XXAM32 zVwdxcxtUP@?>{%IHlk;R>rt$hwSOG%Rl0fFbSmP-!K0ondwpA8=`ItFzJA}jxV)Jl zS<Y12ne6^$2*Din6vvim8sjs)mpL8s3WtYRdhL#%l=Ii_2+Ok`T(?;Z;KX|QD^TCb- zk+Z(om)#!SWPARb%R6YXolEDuJAG8Cti7YICH}r@Se0Ah+u}>9`J;TJ-<$iy%%MB4 z{M4z|p-Ug-y!hP0y|ubEulw`UU59t5@U`c@k1B4OKlZ)Zzg4w;T{-{Co(Gdx@A!CO z%LWw}9%%Yb##<{M_s~ys(;LUy zj;{B?)=dx8o0s9AaQ5?CGnZ~3omu_$>W2>=tlr~^?JKU&erejrgRUHYs!Hm@vsE6^ z-YF_NuybwS%D*N)>}Vin?`(2yQm^L!YW6^PM^d{1;|8I-2)&+4WQ7+TTC7O+2{s&Attuv0s=v zVdsf6FK?aw$H@dwd>U`km$NC@6Us$O00bU`PsvkOh|5jvtN}h<9kOp*>e-iD4-~E4)%8s4YnEr??_c;sA$k=fUa<=^3bwJxjJqzucxM`Po0#9sRO|d*LtVu6}2l@W`7x zmz{|iQ+I3lN!RGsGh1y?r`4MlS)tkQ*Q$P7YF4Y#<*Pi|#*sSgt8TUr_U<~{xN?I< ze;nvE;mb-}^20j4m)@oS*N-mGow;;g*JoU#Z8fKS7=5_zxy#9)fB1Orsz+L-mDygY zz~8e?Sh>g3TYmm$`%%>@JvjHpD-}EE-De)PFK1Q7`$s+ZXxpQoPVLzJ(8=b$OZmNz zZEgNdne38ot^C+|t#0P+jT?6UyR@8`KU#kNV9eQ97sT%U>g@X$#Am&~S^dqI6W5=6 zIP$mQ+t;s|_;9JYWhxA|$M?=1KWhG^J=%sRl{{~kq&5QwF3e8-YjeMgC42m}uTPKH zYbQ6BoCy+xkuBtGlOuI=MsNg<0i$b$_t#Gp&Yf=r-$o>-Y2WTTVQZ z*D~4JzE?!@(%jtzk2;SOszaXJ|9Jkv`rpmnerwj09j0>InqFMCdK|A0{yQc*c!lh) zt14QpNAg6c?$M{(0Qi4$wJtX6tM!Fb!gpslnlF2|dG5|($7hYIBYd@He{lcz5uZLb zs>zY#7bo{`^Ihqq7mhvq+h6I?ql%i(x1a1+!->Ac>L2v_GdKfg7j zT8(QJwmf;b)8J1(sC{c+$>Rw=cUoi-xUf9O%~%!!V6v87z4zB$zD#-w4@lE&rdFWt1pd%1t&k|i&FKBQK+K0Cu_ zZ#mHKl`TKl{&?{HXMTLRapxVi*Ch-&^l8|XEeXB5yxMfSY1R+#EW5n%r3VL(H-Ge6 z$>l?qw)W1kd|G(_5AUA)t>LScYN^Y{maY>!bmM@llb#s1v1z+`f4%ik{>Y7Q<{lg8 z7}_K4#U(A<99qz7=rc=~w5YbEX|2Z}ZMgE?D_zfS|LDx&#irHcS{?6LeMxq=m)dvB z3{OdI+jsN4s05eQu^{QE?UQEr%9%g$?f091t%X;7<-X&QO$Jwa`QS@8UwHfN&pKrm zo;!Qiyy)$s#aX+P2V``rVB2TwZ}Vmk-E^#I-_BE~>e^=P*&jKw<9APue;}*rj>6_O z?tk~fqJ42ImcH;{^4sk@|7*e5VdutLk9CQ8Zd2Hbh7oVnb*=3>^}XoEReqY;d-ex$ z6|?Ie?AW8uUzXZG%sk#c+V@hzj{a3Peb@Hn!oFLqzdaB(zumPPKhK+eC3ft;4J08#im=`!=`cbPLyPaR@S%ja{&L>9GbDFeiv)%cTMr$Hbvn6Z>*_J zbIH(iTkc;}zk{W6*rOLWk8$O7G-tP;Q*s{^55&{#9=lM%>0Gzo;qLDyx-A?A;Xi;HhJUS7G0O^iGFhX=KfQz z{xopZn4^gi%YD(^>c0MV(PjUQT0U)gR`;3JJ{y+OcwCKPk!OxCt^aA|XO}jZI&aVy zPo5rJe|{BTvnAhDo44}$ErY+`-{s2-Wj32~xA$!R%@^aYF5cc~#B0Z_J$kOqIoP9x zHsz@HihJ|Vi^fh_bo%**k;8`kF}u!Rw#+VP>>nvx=&19*#C;FB$JmYAnZnJczJ9|5 zY@q+&GxdMNs>Lp{YH!y8eOJ0`<^O)})~6Ge|MkF_Gk@MX_fGt+u{|c9IseqH6+3SI zdh2_fUqnv6d8^@#gI8}=?LO**jr|V%R-*5tJEmN_Ipcv_Z=Cw;r-siz)L{JkBj$g3 z^VazTw{E?$%{<-3dt%+}*duLGHn-y!_`1RK7EpOedxb6DalaKDc zdh3a<1IE7j=GenaZjHMUd8^`z?N=su>AvgMfPGDGrROHi?P=B=-Gml`h_*!Rh`l->1V#D}OU_ERgYtzZwVF63%5>vAVXW7L1ERu5*LYMd!GyQIn9P&bEmZZ;uu0$FQ;7x6b`5&L%##E0&ap*qC}*L`g9`B zYbjrDPJwrFg1%%z?9Qs8|T@j0M)d~x$D zru+_&6(`sd5(+_G#8pm<0hANG&%I212uBFQQ#_2GQRiyThtsF3Eziz+4s zl)aH+MO_B;#NGs!Ybha3#e75xL{t-kuyS05V%B->c$TPK(i@Z6#`T=P7GP$Vox=t@|Lym1L@5T+)qL+ItO zasu(6hOma%n@Ca}wavmCDG@Fj#M@h_&Ay8R<%6EJV3ZUG;{5YNMiho=SG#p*l^J`K_+Y{g+04*PPb zayXI0=^Q?eyxogdaJY%X_c%O=&?LT0^H@#dD~^AcRs!)K)5;>enRXg=zd!vjYTZAb zv@x8+2^>yK?+%&;=@Sq>lU|5$dHQsW{KpWQ#MN}NlV3Re3-oB^48lB?u@9-TraxwU zg*fTipo}d^G?HG@RE+%vG_n^oD;19`UH5U=AK}3a3>)H+#AenQdL&hvrx-V!r#J4n5D%Ivv`@&~Y6)!jPks_Y%8W$1$GdHYDZeaL@%tRLEoLZE~8 z8F;(yJ(-WC4ikUsT>h{>iTO_)t?0ybN0ehRpe!9K>sWyiyqSbVHAg2vb9AUZpa^k9 zhlV(ca2Kl@U2_!|OjLTbcv6R`^jJ#3-=6TN9UFPYz!2p87og*k(n)FY;#z>qzW|-| z66JL9vSS7oE8&=N0^&O0&Km#i3Ezr*L1>qwe+Wc869beVAuR|UbF|~HBT@36@QaSO zLZDw9yF{{x4=FEMWHGeILFFZjb~;4mC5s~rUEn&D5Z~$$l~+R4!Yx|p#YyF*h)z00 z<)w%XIz;8AiroxNcRcJo59p*0EpT1}bV-L^bY8`8CE&xC_?zx{&v_kCiVmGbTDqvM zLq8!cU36k-8g%xn$Pkwp+AR{XKr1Ew)S+rFo2j%|lSMpti+V^aBfe#5ifDr`p_dgO z)3r-o^JPW59EKbz?oy_*VxSIHaF+)(Mu%#+vrXm1OdV?It^(*u9U@JX7aMelG*Mn` z)uC4ItC&ll(4k&9vGxiJ*1c3)s(S@dUWcge6+|Z;qPk}a`k67Jq`GH{r8+bQJbhw^ z4ov}1pSYw$k0UKhxN!-P@~uW%mZ+vfn~|0+?$@Drk(Morbm$<`a>QyKI)k(v@v#m? z+iRIBifa-QKf4>5Dv2oG@SHBpVXZJjsU#tXE3A{Lis+_8X$(E6Lp2#%szaR^+NneR z7&@;*8bgjMvJOQIW$Dm@u=`L#CmmYFP`(arW9S(jI>^vlI`kz&XLRU0hAdTO3BNN` zo}q<_d&>WgqPxm8*x7ZgMsmXcL2H` zamDn20fkc!=pTTn2lN+bLdqK;j?|*$3r?aOAimWhq8uRF)#fzR{e9Cw(F^ZLkS3_~ zp<;{=?IVVpt#n6poQYw z$g;|0F%$bt1pNu<5n*XW&=h>bva&KmWa&^MpjqMphNPBei=hlj4bB$%0jRMuTU?V6 zTfux$zOlgHbTKHZylK9ur$eLg%WVt9Gk`MC{}xAeRh|&9>d+QIPl}Ip=qjM6#8*1x zitef`5`O{$PaYAT7VDZYQL9{{(uHHm1#qxdn?a~DLV9UbbmlkN=PgK zv{-zrLo1_W@av|D%_!d#u|9gJvP2AIXqw~0XjNG%9@e4Hqw@jLUj{~!qQ6?u>Z?&~nI< z0b8QdpA&EB5S6}49Ar7AmR5^15^~Ip-J+}(zcO^eN#(5;QO$|%1t*oaTBPU@Nxeo? z(;JaWAxGIZ#}*uBaI(MyLu1N5@UYb`0y#tPF$;nyJ= z)m{+`7@8)|#(tt~!kMt7ybQ`$#a@P{h+krlDE|^m+fbU+*=s^;OVAXd#$8oj6A$aq zqPU^T7BQ2d>5k8%e^lNO8+7QkxZePUwPP-h9dSP@TSX-u`Uq)T#R47r3~AfMIvqNT zv~A)~hNg(CaWQz~GNJ=o#IcK#xvaABBc{kqPzxX%oTKq zde!@)NQbCby)PV{nNl>f_gD6apLB?3u^)&sT_|me*d6~Cpp!cE1)#kmm!0htaV@@? z`9rZ)hklJ8s(d6I-6)@&?|w{C{Ot)hdpeneP>iR02t?Wqq*+VhCmBB$naqVWIKjMM zbdr!`p{E^oz=rA&&GHV4A{|=cDKZ}v&oHz{jEb5Lh&~68(!~bkJ0ucyXsc%iwt0AswRL ze@dL!A?n3ghv#y64(i4Kr@gO_kF%=szxSC;=9y$Nbfz!#C85*W_m@CwE0h-{P0}`y zv}ux-RtsU8nI>Z=nJ_bH8)zlbf^;nkqWD&S3tB~_upsQpn=C3~Syx3@#jdi#3RqlF z*hK{e`F+3VKF>T)lH&UNeSW`x_LH=8=AL`cJ@?#m&pr3`dFJ2L6bD-~{r12wRGoue zH2rR1jSiNbet+O8m2|L?=??+BOt2C3zh3KUbx5!S*c0iseyLivv4rQsY|Up?%E8#0 z&#G%2jIH^sy2)Ugt@*6F6BsqPYG#M^oO;Z`T7dmZ{kwxvgD2FV9E=)#UQKzo)JVpT zU#m;sW9qka=Iw!BtGy1kd*XQz3JJMcMuRGZNGk+NPjhZ5ph^y7(GoJu<(7~RZ8CNf%LJ0t1YdZ=U|@^>|wzk5nuj0 z^|2JWjHs{9dNS~P^@4+ad)5tV{7GHoV6>h;shbQY*7GNIr(nh+UnfKSJzCXO-J;~mm0*3NFnWek zTJVbM7XyD*_X`&z=bP%MCG7WsH&t0LdERK>QLV8xS1s7p>fY*dV0%rP`g(OGu!jYE zF3b`F`Y8vaECF4XA(!XElqH}C1iKnucoOnmXVNrfDbsffcBA@k^{Hh+y?z(-8J|_I zU&$JbJ}aaneFme?3hCSWiJ3Zt^xcASoQ@;ypG}&K0U>>9PAF0Oxn&`JonRx%u4yQ< zb#Z`cBkI(emaYj%}Y>Dx{PwaVCveM&z8;7M@ngNoC~G)kjvHfv6}nKYV}~w>TKvVXi(P80-EZuv-nLrkwUd+1vCt9V~I$gKD0B#=#b!_Hx;L z{Tm14NV!12>R_utxlrTS5Pzm^7wNb zln2zj+3yH0)<+!d?X%AdF42!T*gJtO)4vpqB{T(Vb=ffU5o-;ep{JLy?ZLO}#|?%a zkPfcW)gvxtT)jg#en2qA65gQ?I~YqiOTTO|X@|4*lmkL3z3Obe(!pY(j|9)wod#34 z%)T*rj?P|Xc-}U9i#kvL+`;ad{l9|m)X#j7X$RETW`8kwzV5w-n3*B1(SIWt>u_Um zjb;j3Ecndq2ZD|IUWby{TK&{PrWx(7*C$HY4z*s}e74MX<9RY))ba z(i$DC7HJpg?GAP((k{@w4t9Q`MO~AFtn_e~wOBu|*KJkNKn;v$sTLe2SnBm!`PY8CSxb zr+!4R5%qnPw?)tUuvgwzy-YAexm6z%3}Xi<->uhw#G~A<+eTqU!JZ4#mv7e}b1?e( z?fR&pw7HYGUH{yqi7&rczwS`d>tCX$T*ned)SsZwOZ3kLGcDbv|122W@7KXDJ@0x~ zmY0G_-BiNjDy7>DhPOi80c^m**kUPtjf0&nX)ifgi(vLgg{Pentk=Qz3ic%j`;cIr zHyFxK&1nJ8tb=`N&NILc8B9Gal&=f+sG`?M>Fpn5KI30f`auWdSe4d463p0VTEAd0 z={ac~`M4=B7E6x}!($bFkZHhst~OrycCvxpCF2j|yh=*{i>2 z(!|bswSA*0fotYoEx#I$nFqaauRbAZH>$z8Gs`nN@(EJjsNO#}QNBwrbFf3e`gMzg zePZsy^2_vQ!AyjaXUD}&+l*Fz)Q_k_dxh2-Ohe?6b^l;03;e)wI9F?IPjgac~BB$jAmekn1}3eB$p zE#;3fG^7uxSA^#Ojt_ZSilyL9WTSKWAQkRfZm%D`0w9(%q?CRk@U;IN7{|!K`ekSpzM1R=G!*T=aX`wgz z@oULT9j&GDR%c=^UBVK30WHU#--`0Dk2igUn$e=4(LKfAYy4r;vL@!?aZ>$d3B9r` z$HSNyzs!4?5FpK$F~~2mR3d^=i+3|QtJQ% zsvWRQZ3lEy4b7m$7#*6nGa9}|a@`=QrY?qtnzxkknYSa=a?1LOP%>4kuSxh3Ni`fu zXPg5^> z*9qnSt9VnQu?nNlUMZzdN-^QR2nUpj@wbTQnYHqIge9k|xRG=^HLw^k@Rl))PYxZ&ga883Ez%W?d>>|F5-UVbfkuH{&!5R!UuPR)S394 zh0kiluLjLI_@1L1gFDn>fpvf<)M^RW3&ffNshb3D6POg35qKHkgScnMU5XLF@0A~v z@bv=2it%A}+q|ivPw5}dn+5pdym_J3h+hJz=D#a+7bsgoUkBWQyAPy~DBk6WsQ1m! zho-16ggzLmRv(*xICNa!H2-FVkIsKaJ*|1Nd0c;e{w<;BCGTxKCbh4ALy z&`&{s%7PZq%v|scVs4rJJYZ{xsho>$bIMw|;CG>UD5b()hEitR+dw%FVU}`SZ(Xp> zKCXKf6zp47Zo&P5Th$QYeaQPnAZFdTV92ghM;F9#D~xN2I>j|a9cWr`&(qL+b;0+n z8B$iAdUnALp#RN+6KakXS@;?IAmVRE3{M<0YR3EizLy$uYmuD7QY%!O8ed{I=oqQ zIHGP@Jg?$7cA4q`zdrxWikl_Z&8RPR8(Kv8=wiah0my^d5 z6+>2QsJG$=D7{!wr=m+PuNbjznf;nor)DjA5bZTj;4*>l5V&Ez+mc@E zGWA6DCm=~~$!!(aTZfiB06rgI@^yr7lJL+WaN4r=%5$avo{K)X0~}(ZUc{eQ z^Gf(NwQyMx;nSCOSm%n(+-kivbrEP*FB?Mq`O8kIbER+IYO#l&i(YwMWux@UMrkjt z-wm4M7X3pQ-r%Q|VLAO_dp%$IymkMwJJ4qz3k4%}QWx6NtKm9zY}wuDS=>**S=~1K z$v~axtxj>@oHn^4GNOLC?Ci+(*3Xtb01ZC}I0H3}tCy`eP~yv0#qtwshJM@fiy}JE z8TzBG1CLExSl%L~v`Ae#CEO|D7U>I}0?(z8-xR&={hbbDM+tKEXJfW3I1=s7FlqO?U(=!=rKD7g+ut^u=nqNWL&E2f@I0NchYMTwl8lxn?f71n{M)mqh0T zK398N#o_?#TPJXJ;0f?t9eBDnt_}<5!@~Kna6T+N4-5apXxWEChZXk{4h#Q!aKKX@ z!iQtT_sTa(*j6ibZ@^Y(=|0@ko??Be3{M4EUk0qUjshmEJIZX;Xpv^U)d$#Oy^5GN z>kYt8%L>|f6I}>!yA=Vv)QSP7guYkkvqC>0^hMAwR(Gq8P_4R9J$y>7dXM^7zy=ir z>`>nU>{h=7tWye>-zIRW`e($PgIgmF*ck5%G^i^C?ovN0Zx+to>H)Pq z)SwAJZxMdeK%7Bu4+Y93CMe-@!tM~^@L5a4eSw<{J?GM`z*gvrU)qcu;*8a8qlKngT)Nn(%FFX|f zO8B|(3*kS9V-+(h&Z}5gv8f_i@xh9ZR(z)7riw3A+*$Dt6~`)mSn))~zgPUZB2XEr z+*a9NIb8X<%73VQr1GCCe^~kNmA|cgwero%NMw5Cw8+B9vPfg(g2<-Gdn3CeS47?) z`AFpBktcGC90NJy}fE%Rl2ILYG2g{s&1`%pz1qS zC#wEf6^u@f&Wz59E{v{>UKrgO%|;8+%cJj)UK71J8p8}Xj(OK)%>Jigel-(o9 zdwE6NzuS%baznWLb~)yHSKya%_k;5Y=5`-YXJd!#9EF=c7|WIVL)l8e)#aFVsrvGF z0&Wr5FL1xW8w7q?-~$5h4qXPy`$B_&4~2LDaD{yY@DS!hcyhwNw*-S>FI*93u4&;% z0pBWqTSWwWZkdWnfbSFd`wG6fAY9o6XgJtaO!d=DmzeniR|q^;;C-PKDA!kI0k;b5 z6Zn3C9}#$1;1>mcrRp+JJ}mHG1U@J5Wr42?EQ^xH$YbEMG1l?-u^|h)DDn3J#^WCV zJP~L7f5ktAu$s(zO_}_+2$xOySt-U(V^ZUB{93E}{S?AC1l|`)1e9`hegVR!tanV~ zb1L=Ib^sd6C#O-vMz_D3_EE&&IGuX)m;S}+-$eXZr#}Wbp2ItQsXv-U8J-mQ+^k=M z{#AjM)eN5|a6E^rswu-q1R6=6sIDnH!u`Mywp(Bpg$!j~l27Ab*!0`m!Sj+Z@&)PO)Enq+Vctl?}t4Q9!|0Ky-GPno1X z4rswE@aeZQKwI4e-!KVtN&LbR@DO5d#b=WGGN6UnFv358zp!x&2CsJqMJ2*7VudqF z{RWWbRN?bm_>)PvUl2u17=Fc8WqJ}~f`Ars#t>7kn$I2X5+!rSc5MLhd=va9f9H$vLRF6#%+3KfAfKgL0kvvFZVS)N5pF_0t=a{4A|HSI zsTna_klVtgBEpN1&%(2G8v);g92VBp9e@`j-NNtuUIf?$-)yN%k#505UktbdaTZ4N zBwz~PmP+HFrFOz|^Ot@yC}lsMIJDG0dG2r+Z=I?AsT741F!c&s_5&jY&o{9iht?s}`V5!>ywYn1{ zf~Ecr5KqLYs}Q~mP^){?2NAwo;3IerPpfYU{I>cK;vWUn>M=a+XkpiY&pdt)BZ`Hm zE(w2xk;TGO$TuMV3D~%$ej@M}sE4JVLOm??wE7I-GwQQ|&!QfddJa~P-FehT|0Ce3`s;v;^)~^R=x+fo)!zoJ)sF$5 zuD=6#hW;+#O8tGnGxZMu&(i+_xLW@h@NE4A;2M1#utEO}aIJn4aJ~KoU^7-?7EWP* z3D~Zm1?G1-wh23iuU01MqG=3-BIY19-ol4fueb1NaU7HoY_SzR(RJZBMiR zY{x1;U3p0)6=|+&uez@4lT|lW{i5pJXnXX!=qICP!`$f#!Z&p;<&d?keD*xXcz;^$ zrRN_LcgMK61!^~Z`dGRVp<_I`uf>j9CCb9{zwmTZ;L}c1b5#PK>@;|=d1?VZOW@y@ zV;)tD&*}K!`2c2D>fF{`YA~CAr|KW<&lGD1GwHqE>475N{au^NW|jN4?t29((Nv2Vh1=Z~3!dscMxgNDH-Jiw_ z#z)bq=Fw)!64jOX(MX*C; zHkWTrq7s>8)|6^!(s|XG-kHQp&{hnAse3{uXyIWr;VI zz_z)gnC#xwnNN17Mf6feL)Mn;PiI?_L%G4CYKD;c{$#deAe*704Mk@zm)(&BBgxsA zDGX$jLneuWZOo&JZ8^NFeaO6Jx+T+}Zpn2grGYx+P4KLfo6%)X9eJX;sm;`SYqCGt zgW|`TgmPOmMUJB4=Kh^{HF`E#C}ehK(kXdayw5CbS12zV_d$D-ei7YO!GVH z87oA8cRpQA8;)*yruv=99@UcGi>d$`0znyXN^}L!E3{C5Aw#7}8$vb3G!;}#wG30Ah zuOe;{p4V8P&cbOZ_m>8gc}=_8xZ}NW84gzK@q&kF>L2WbN7#{ty3G$5I3m`vp$lp= z>dgL&-i;>6W%>4!0mWP}Kojlc^PHI*axFRU{3HT!w~%#ssYx=Mx!m*<=jRW^nq6Wi zPSti7b9vR1E_RJ&%Q%;+;0up_H@z~ybs!v?`_Qu*as&8Pg@$ZqU`H;QPk9NVcE@q7 zm)~p{lg1A3MYX4Q!yM9V9q|HQ%J^>> z(dRLa0clD0_Y9(OFhCX8=5u{sVtcv=YKKv`r~7id;r6m=xZ{(^(J_$j#<-HXJe`8) zFyl^XsHCn-JUz3gX`w`?6A&|Un$G762uC5KuX3dvEn(MAcWf@Gu9O+aq^3^S_7p)Y z9T!Q_N+bnQfXk2NxMhw@C{@RiZnRM2it!b}5=(4Lfwp`aa}NA)NkN3CLsAsD6ev+L zf5TutpYAWx2MU!RA5|kI`TfZyNmSRKTz;2tf>6?=8R1H3UUi``jI=O=uB>Y+U4`D< z9zWx*Zl6#TqGJpJt1~tZrtJ6^AFDN(G?)bASW0#E62>S2m4as>t1&segr?n4Sbe^y zpf>im<^~Jt^|0r>nKt;-WGVxiweYVEy{Ih=8iOpx!gcxNKyRkIpvG0gtGFkjuRfj- z%^Mn|zIj|}p(WnS%wOn5xTEb(4G24qU6e)jWVzy<7nO1TwPE-5wHTl6pFFUFUw59ur z@QXP;X-zWYd~L+!lP0k7yacB@UW6mPKO*I$H}ZL@o)oTJV`Mlb9!E9FDD893X=q02wbb^e9%CdP7wKtil(t4`iY1whehqn&QtmP3jEQo! z;?syv8|2Rno)$Q`=L%^IWZgydYRtI!b4;DNlHqq?>{?5UY0PzFR@Pr+giJG=;ruX# z-qw(VX=nO5Ic{yL@7Ubl)Udw3y=zVLx~_|w8#~vJi(TK;yl#D`SL9m7Wzaw_FPoJOQw*)oRIFlpnS!4<`^a7i1ad0ikNLV{Kk$VUXO#nrmdY_ zt@Z8enm2T9H64F5{dX3bQ>rTis`cqiPcPiT4)&Qf*}=3Egf@m$S8nG{^nMv#;QG4} zDipCO!Q7ccfx*4DGI1>1NpqnwlP?abR--o-Vx~&Qjr&9rFW#9!QEM~#LQz!aXchB_F%cJ;aj;|w zT{|TYxffi))o!QdO2eki(M-XeIn{L8U=k~E8A;YB`%y_ulS&gfXUgXcC&^R_jtsp@ zR>q^#@-okQ%VaN`Gg)Bg0Gw5RiHW=4;MR==m~8^tF)$M(XJ=rXG-D<4XLPp{L|Kk> zG$OYkS5GHNl1i4^Y>Xm|vV6HDqJFTLGtw9vH1<^NI$69_am09B%FWQhO>; z{$zEsa>nxO%DRObzkoS(LF&PkfiVX$(vsDCourrZr*z7Aqpm(qsZ>|;Bz0!pC~sku zRhZ6;=q7G$z%MbPC7s-jpv=$wlQM~D%jBM=3Iof|i{tbqe}+;ms3S#}yD!%PW+!SOgt3Kw@qC3pSp zNhxbW-yNmJ+aA#X6-hURMQBed>L>sT)0Lvw%hr8$=I|pJ!Nb%b$@9c)?;SJuHbE6NXf9V zfn+|(6<=vrV+~#!&Rx~?9u9{C4$7(a#{BwBDsAe;?3jS3vGupPAKGf@O?U4~r`Be% zt0k7Wai_|Frps6cwbhm#?8)>?xt>Z59~e%lOP9>YBlj1%JBdNEs|$r-pDdX*dk)U} z-XQ2o?%3Q_x^@)%jbdrtgE}!NlPrz_s6FBS)L@hRGF@^8NHN~2ugKRy~xB(WLeq3fX2o7 zvKqHOre?;8jg2Jtv32z*eYJq!7%jtCrJGjp=jdo_Y3}T7YVYc3es_~9Ve9K#)=JEp z&7GYaH<;9}bl*U6$niYrfPNJFLf!Bj*h@r$6GB|hYjD*C!@&Fx8WMBy=E|VYW|ISj zblpkfR`}vl8BYH&didh7bA)XMS3S;56Z1OE&%5$lc+AqxLlLI{UmRw8hM6zUrGw=8 z^^pB?RB3c>FV>&mi}g78+S+gHCy91!@+2v2d0({g)jpLPyK~fT49-D(DJx389Idm$ zvpbl9r$_N8a1Lx7n2}Lesj0_A7$$C{uhmScCbO^M7+q4ASEi>mXLxa&%Rw7U!;aZh zkpbKtq&E+6_MP@=$JH{UU3(bYi)CL1_F_f=?12xYFq&i7Env9tRadl#H)oBr)ss}( zjq+9aB$cI;72inr&5}6C(ou5L8b!N1*K0~U*Yv{P-fC-dZ%ewr2dlVs#$#h}^(eel zal*3Q-qlyi!Ukw!=aqsa6=Na2g*j&8KqreJLnMP87D!mG;Y7y-Se6N40~kMCj42&Y zsJaH68Id^!>Ox7#!VSwcL&fwK4s6&l#sCU(EOap>=FMI)kBTUklx3nBz`23rtpFdPGgEVFjqwN7svm&YNfls+*!s&2@LQ%6rK2&_Na}~d*PWs?^`|!O zq;6et8!#{9{)Dq}g}DYd7F=`y11Zcmo8B~-!}_-|haZ!6!X2$0o%NkfW&^N*>FEFtP}zc*=It^Ya0sOf-N^w6A_{AA5gg;B;XTaR z-;k>B=81Ue6mMO+=#(NROe1pf5(n?F(3J=?79XKALxR1a_8u`;7L39-*Bqq7Xj5xXJx z+);dP2_X#+1|?PkjFD!i*OowM&O01z7S5&Yl0%5Hx!f*nPMKYXVw#7^T}kPvWH|l^ zlCfjXDa8Ue?u7C(S=1EX3p3*kJLkrovX<;X`}HcPq{e(^ce*7lr{+>^sMziDl!(sH z9Y%K!X0t<^uvH-^)~)GcZ!WbV*=LsfYq4K43TblBU_^s!|5DyDtkxt8=`m4ab0zi^ z%pBheZ}efa#ZX_wjJ%iIZ`d|VrYI5y5l1ctJel579$&#@r{^JuG)0oe8WP19?C!t^M%=8Rmsf8KY_+*YOyx4-oWELYk&jZI( zy=4OIGnMX3=68+H!@)AoEynRlIOa+XcAq2x4it;kAuoq}w2iaNOkWx&=Y0cEK)xfL z-<`op89go{MErK>V6TJ;a*fatC~_7tia{Soi`9XX~rZNPwwo4 zw8BW!d5^Yq9w_q&pR1u;lQ?XOnp+NB?laciLCFntNp;aG*zwt&mhrop>$6-zu0+6k zahFBm&`$Q_OSiKWMtkS*8av{-J@ByZ0D|75T#>}r7z4*VT8eh2XQdrr>=q!$7^x9c zP_lyW=9H#Tx<-VVPx0-}#9Af}oIk-$VLj<=n3_F&R?^vE@94&aKFiurLSEzGU?Mwn zlG2)yy(@4=n`KfQGDj1%xicb|hdF|E7thF)|@FxGaf6tK;02Jg~J z!|0P!TCUkQXRdb0$nQ1K-!3C!K8=Z$iG$bVq_nnMuAp>_WF5Hcl``i>Ngn0)C^^-{ zAnBZn5Oq{fE}c0uJ8ent#IZ=uOpal9&3#xkbYmICGazTT1l5~+GiqMDGzVF{ z8l*CPJ!;3U9#w>wSA~4HN;x-v+U2lH%p!+f!amh4_gT0(;2hbWlOZQ|4PiKE>_n&Pcwa1ptJBlNxGBLo$Qy{4w{pVnsYYknL*;+U3*3t zzN2K2s19rhap_W`aU<9tg@OY<=Pg1qK6VsKXUos$Cr!(F5nR@ay5u~e89U2ZE3$C+ z%+T#5W^Gui3$*Mwic$CWY8_S3-|zxSQ#S2fad2mQr9I)?j`uptMdgiew1!q(1)~0N zQx!KFOh2Z#;>1;Y-g>hUMA|JTNHt*pf^%LGo)hSe{qX*jw-xt$xtf3nl96W(SH4W} zq29H;?gCuRfOx+`F)y{oU;}^b4Cy70%V`)$v2e@aBqyaXge4U{Y=4?3q8!_cTpb$4 zIcwF9!5!er21b^Gtmf;k*Ur$Ezmt3scdmJ~}@R}F246Q42r z^ka!IV3L6;a{z;+*=A6}7M&PtezZOOBNvNlUVt`9MtoM%@!2w|%x4O)K&}WB72>RC zxW@7=K^y~V-pC2rsHF^A94lemZ-c+Xl3^_y*)sx+Ea_w)+Ykb=C7d9?un>i=&Ax*> z=jCc*1Z&3 zsC6%n7I5#rbpxKW!GaY}IMyPR!E-x%(PU{gfS3%Pk?BW#8=is8AtsG)#=>L~+b-WZ zJTH@%9ALM&8Bf?GG1SAmOAhRK;kyCPQf82U2f|5Er<6L~qijM9`RCOd`Q8KWENMMp z60{7fnv>DDfGaE=&)0jYlxnx+A(v*PrXkZt@NhUS_h>s%sw+L^B}Jp~9Du}0JolsK z_^BC7O_3+1%|Tac6u%;Jb>oSnPNXw5j$e#?F>OM*Mo((tAn;xIh z@a$IrpULzwEFHcSlCX8ul8wE6E$Weh)CrW30~`R(x{^O@Y;20Du2rePa;4WbAjNA_(o>t= zpi7{x{h-G1BV`$j#XJZpqf5stbY^$>a*}3DADBNj2Q@q>ocl{XOf7DcT2NnZ{aa8Q z+MVl3Xvui8Ie0dncMM2TC-_w6JnW8JD)zf z|9kyD0X>-ZOCWE_8*Ch{L*wOWpR_k>)AT;mjtlWLX9YZ@>#y9jI>>I)^s2FPv+at~ z+u6Qv(VFMb`wU3$I5~xD8QqX+j3=GSzQEpu5fOgJvv*ocGpvBUVlO_lTiQ|&p1)+D zWWPb&spLpo9zz?(tQ3+bmFn_R>ZR`VjJ4w7X=SuF)0Yz{pZwp7st;wdehJ50bwh60 z-#KfLi?SaAx@Yoyd*V738FyjjuDx2wu!zsSQAu;jgY0 zbM@Ri<`Rza8^QT<0@LW{p&G_ejfgbgelWTMkJ;^q1EOe)qycCw?35gc+Q5y2iQ7pH zmleoyaVd{68 zIk65^xl`JlW1@<=b62)0eZQ(?4%!DKtlWVRXD7QbGSk}nC1;kizYvWV<3CEsBgA>e z4#cy=v4o8HRm^5lf|+yDo@5phVh(V?yo7Z&^jVZh8B~=S;ge=IQB?#beN+zCt}4xl zDfJJTxt%&?0NgU-=cMfLpvXzdNXPC>*;zN%MDk8%9?teW-=`|s6*;HD?B*0wF^#Kr-Zxcu8R2zkY*?NvsNsZ)}Ue;)Z5IZ zo%RngH@F~=aT#<^DrWK+MM$tDjijj^1=(~7BA`T@4~Zq$YKr(}#%G4f!@_zlK*T#P+Y z20BBjS(qGXDJn>fQHQWzl#;>QWn4Sh1A2#l6{$>{fOnW}$adqbmads$eimNda(7i_Tq$9v#iR^>X!HcT+o?Q-H&Z#om@bAfbb$%q6uTLPaM9%r z(57HEqT4v^NN$*J!thPt1t!LIl`0V%7Zav&%dmdtTBoydfs_LmD&K8p8Yi2Ni%;_P zmIi88Cu(Fmjw>st99M9099k%IE*;pf@ON$Jrw_jQ!OXhPC9XI<^4NDemHpMrw{MxT z@~MM?@^}qCb1C@Aiq$!5eIJe2#tRySlE7{kY<6#?8lT(U1x-hhV;4J~h7B zipHlSryWe_`1EL5LR-=Dgyn=aB2;`iK^mq#i;=}M6R(aGax2$p-xh&EGsMsnpj;#t& zxJmIdq?pwL&jU{joMNkxyB?pWvhtevG8RxT1oaFyNw6uD0F&78VSLA%o$pqBlcbrT zl`_>6G=&x!S|ZH^t$}hWq#1>@h7$o)D84ARsUi`GZAP#@-ee~N5t{+4Jc8(&cq+a( zwhh5xgt1W@ini=X1TbPpsuE>7KKw#__(Z%uwy7$C7XS^Puq}&NIAO&uW@3FL5g-MF zu_PqegwoHiOav^G)sSum`{5JO1l}GbEQCiTUNRIOT8~cxpDaG}SbwsO4Ieag2VvC_T6IJ+9E9;k z$oe34xCwSa;S&}bi#n9{x)$V78{GC)z+j>^c1^IxhG6l%)W|-D_KEI>?Vy5g_m!qE_WrA_vQDIDl*8#yc+A*(#7A&|CofCYbv;9;P0D0Wt<(R$Ro#H_&LbO4M}3P#+Nm zAFg({5Gi+RH_5BMf|8doYeb+`- z|LVc>pR9cPy({kj?Cy77TlU7sufK13KJ#Sw8;@S{?Jej2@`j_g%$WSp&FB5(b5%Y4 zPdxeU1+T7s{kdNCK%hC0{Pe6Zx1Z8AcyR6amtOGu`}fsVS&x783*X=LP+$9rtKa@R zYu$w#*VbHB**)iQ`15C;{kA9Sw)`gWlW*UB=p8?pGyAC2F?v2;Mdlo$c;^i~;49#@ zBKaJyS`P7!Ov+7k4(dZIYR}+5%!HL?Rae^zZSmdM@DD_#KbAI$5C1q63dC#TH5Pt~ zD?SIdTph(I8M3P5^PxmE|C6?M-eeTU%irY8RE69T67Nf@OsJ{x;b*PM_ysFlLKr$3 z85@4yiDU?o=#`T-Wr?yGqWC){R2H8epDv^zu+U+Ur7UEDhDny?CP9|Tnn^N?)3@#QE$Ql$QM| z3=Yl#drBx0AAW{zrpCr!00XxTp-~|Y<2rURGQ~ENK0;2D0L;)F8>zC;CF3J8%8joG zEG)JP8i^%C@DJoxjsh`~;U$Vdk`-91Ok|n8&tpgbwOxyeZxsiG&g4cO)`1R0RjgA$s^g zB#PlUo&sW9@Z#)UBQ;UfA+{O$Dxt%Xn%HI=b(We(*iTUt>SAO$<`TLlHZq?TB;#nJ ztR_BEhm5gp@sY)#!gu}DP>4i`U}D4~65AG1f!HdrqOFd^Kx)NCR*83QLV#`4g!d?y zp={g2$We`gQ9?WfQP4yu@Oz?|CDg@-UxsFJQV!%8{`NQ(jCg(E(c7=BSm0iD4)JD0aQcGD_GV zeQ)1u;gF`K27)z#JI zG`$)KYttjzQH!;LuCGD&qieD4NQgOY&aW_afQP|6B#hD-6*c-fOl=Jxuq&-t58s6D2?xcxKP>PFc!BT;xIzL%VeFQyM=UF(%Fq+4r7vK#po`~Z0S3gmLS?AD z26Ez`G>uGSqO{6;@Lwhc5Dgw`_?`%3@8v|{UXVI70_XdPZ5ny_kr*525&VaXhkYQx z!C?4E2}M;fY(El3?>*v@SZ?+sZgw~62s$_wf_Vcp3v&_$V;Gr)9t#W|L8Ln-YB(k` z9)s--A7gcb$Om;$)+o9Gn8Zd7A|KR*4n+AlV~Eo6p%q3B(sHmEBY}J|JJmSyDYl1& z<`ku#fKpBUPq>1gfG5Tff=Ny^UWZnG88borP0{L<+S=3c-`vVA^kX9mza$x1QM;

Hx-(XmATqP{kU+!cwoUR=K!NHpM5e-Fs;;Cn*uwG|SW zxZp~2I)#mr3ax@t6Q!a!I`&lx(-51g!jDs8X4Yv+c6A~N;?)1^&K&~N|$J-cM@fe1AgIPK)Z%JgfH|MLw`Q!3WL`-O4LIV>Tn9#t4 z1|~Exp@9hvOlV+211Hk}-d>OB=~$VJPUTEq@onYf;z_q2pRJc_^>7(6^Y^g)4$KzS zf!`|FqMC5OwF7tTHsaS3@M;>swFvX?Yh}OvGxu<@v4i)t^Ve+5_qz-mMV8#~_5U>j z;qNH$WZpfFY{qdV?||@cp5!t|lRQ6nZ!5@oyinX(mH=Z7nRs4qPTa?HdYxN!sI~iV zCGJu1jqNLO4^qoTG~VRkdHxV;WNs3Wz5iA@?>u0ohoeybUXNQwqa3mFIGFbtOGmVz zOW<=ZZd!V@TR_YEu+CXD(pTUhb`?H+e>@?-S0k2xEovI_QX4!v<{c59xqH&_=7W3V zo%d*XxI6a7JMSgqZV2A{e-C)^z5#D`;3;9~m-jR&bq`M4asS~YaS7b1YQP<-1SF#7 z_`4h?v>I^@$j5f${Td!t^8z04lcZ4--Y*?r##{4SiToEhdgp=lMc|P@U3vFv7x?D^ zd3&oBVcy|MA|(sFLFhU`m6P;(DWA7QGf1tM)GbKk%>wF?w{Lg<)$;K!rCW2>&)j2S zJF{dSms5MDwk(+vwM!f|%6haz5_6k?_o{d=LV;@TsJ1ZH&HEF)?ZcYl9tr+D+v7z5 za^qD2S~>4rc+~D?1CPE|YD`=06dT%zJd~8ZgRSq{E-~JjQHcNRZD|>PYlgp%LY=0N zkGCs4tMtpQ)cIonqiM(Xg1^)U8YO={YELcp$!#v)z5hSqL0wM#O=w_30}~pU(7=QS zCNwaife8&vXyAXG2F}OfB`Wp!%KvdSo2bx)1|~Exp@9hvOlV+20}~pU(7=QSCNwai Pfe8&vXkbDEjt2fWQQ5Ds diff --git a/packages/NUnit.2.5.10.11092/tools/lib/nunit.uikit.dll b/packages/NUnit.2.5.10.11092/tools/lib/nunit.uikit.dll deleted file mode 100644 index 9087db2d16660e0fa83bc9d3c64bd01e21807d61..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 258048 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%0Dm_i&pCp`yRimy@ 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%0An#yj#N#!l?OiRN0uMO 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 diff --git a/packages/NUnit.2.5.10.11092/tools/nunit-agent-x86.exe.config b/packages/NUnit.2.5.10.11092/tools/nunit-agent-x86.exe.config deleted file mode 100644 index d840f37..0000000 --- a/packages/NUnit.2.5.10.11092/tools/nunit-agent-x86.exe.config +++ /dev/null @@ -1,69 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/packages/NUnit.2.5.10.11092/tools/nunit-agent.exe b/packages/NUnit.2.5.10.11092/tools/nunit-agent.exe deleted file mode 100644 index ec41f32382a836eb24b238fd8969cf5811760925..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7680 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 diff --git a/packages/NUnit.2.5.10.11092/tools/nunit-agent.exe.config b/packages/NUnit.2.5.10.11092/tools/nunit-agent.exe.config deleted file mode 100644 index d840f37..0000000 --- a/packages/NUnit.2.5.10.11092/tools/nunit-agent.exe.config +++ /dev/null @@ -1,69 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/packages/NUnit.2.5.10.11092/tools/nunit-console-x86.exe b/packages/NUnit.2.5.10.11092/tools/nunit-console-x86.exe deleted file mode 100644 index e08ac9c81d7a252455cddaba10fff7b0807c33f9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 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/packages/NUnit.2.5.10.11092/tools/nunit-console.exe b/packages/NUnit.2.5.10.11092/tools/nunit-console.exe deleted file mode 100644 index 1544a9d831c682670bf233f02c88b2dbe8854065..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 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/packages/NUnit.2.5.10.11092/tools/nunit-x86.exe b/packages/NUnit.2.5.10.11092/tools/nunit-x86.exe deleted file mode 100644 index fd342c070ace450cfb50c83775d74b018ae7f6f1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 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 diff --git a/packages/NUnit.2.5.10.11092/tools/nunit-x86.exe.config b/packages/NUnit.2.5.10.11092/tools/nunit-x86.exe.config deleted file mode 100644 index 1641a50..0000000 --- a/packages/NUnit.2.5.10.11092/tools/nunit-x86.exe.config +++ /dev/null @@ -1,83 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/packages/NUnit.2.5.10.11092/tools/nunit.exe b/packages/NUnit.2.5.10.11092/tools/nunit.exe deleted file mode 100644 index ad8b08af381ca783992e342487e6705bc79c247d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 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 diff --git a/packages/NUnit.2.5.10.11092/tools/nunit.framework.dll b/packages/NUnit.2.5.10.11092/tools/nunit.framework.dll deleted file mode 100644 index 6856e51ef08a8e681896c3a84ccbeea8975d5947..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 139264 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


jGx_)XGKVSL!mZ7A z?}9$BR{Rx1;BOrQf7KB9t0VX(#H5U;Zs8iA;M*hk!nHmcF|76|{<QMj4CT3P+%btl&ek z0mH{6D`SjX;m8unSMZ^H1BOt(GM=~!KgfJP$e7|*IHXve z8rw3C$S@-4z;7}xxD^f^fennAq3|+BxD^f&5&oGPOB@#dEj|zZ!e5yHHH88aw=~z+ zSglj(|J@3Qh=|U5co%Qh4DfqC?`L#M_TyQHKIwCsj;i*&b zVV#H8>XdQBt#BBL=#;U;t#Igw;AOmUD;zE?-sL+FM#cy`L$iAJ*j2x8!W`V~yCtr4lx|@nt3-TP;buUh z*OSF-$~%QyfyC(MbdJvsQdMe@8TsoEEXQb#L2hl6avT>3bqcT3t&(+Q7Wy*C{Ts~P zZ%XdURR#oYTT>O=fdY$)Gly!wb-D)-C67_mslH`p9_xU z=daK2w-DMiGKh&Ef`jd&t4{mSzCdHylij3}F=XrO81Zj)JmL=+qQfy?#qVrw{|ix7 z`cMGRt_HBkhIx`FTVgfnfaNB*lYm`}sa2vPgN8HkDIl;23Nrk8B^#8J8l*B)+`{t9 zIMwJ3oD3|o0Bc)X_Nyq$?x#ts6l5qZoAsniBZQFY7^Hak0SHY&%Ve8xMmc1R!}EI@ zRK3^Iy*>#kqwcwM3Xj3(y4y?qiFH+rx(e>GZC#&5s7~D;r1@(NFwgcNPtf_?UhJz+ zN58OcI{daSc{eK0Hwp6vZh?gjXxb9HSXPpD0~dXp=>+CJ7-91udZipRnI!Ki`}a89?_iSvNWG@YkCjHLsT&>KPWco&PFsA#>6hj^Po_k?9jBELynos zHSET)ze)Q*8WbYFgl3m5W-8Cc+QJCvjP^5YYx@~RX+MJj0jqPV-V4!bEvDNl`?4EY z!pqQe-U?tga@yU2JhoT6$yT$kk^P|3^QzJg7>^?F@41 zM@Zn3#`4$(|H+t=-OBx>V^?cchrSmQvM;RZhcR|3&qjg0l4qFz2mc}eL;oTF!~Y@w zBmW`)qyHg4PJoTL^WXXB@p}BZz@Kj6ZHZHvl8Y|JXQ*!0x#u;?hrwrvJ+Bcy4sz?o zN6U9Y;;&L_Y}eSwL9d3-mHAwxo!QV~J8`S~Uk}6B=ph&sp2u- z63jXi%!a@IodgRdB19$^Glj_eA~HEtJj~m`nRh+x(W{nu6pLGI0Jb!em*}QYwv@RI zzw_9acuBnUCj4|pp%+P3Uw})>YjE~OyZ(N68S2E-SI(O_w?l^4rE; z_8BniJLfgbs@O_&MMYsK<|lzY&H($}(gtEW>*PGxeX!VFIt0T=Qc~Z>-TZpp75vSf zocVAQMv_FIG26CFmrIQTUe-@OmF?-n2QDlna0NCHnqu zFs2G0fGep#&0go+@hzUVr{ZoZ84`ocNHmj281R!g7`w^Th|)%MvMF|f@~bMv3n)SC z+zQ(|r49EgOKP~)fT#Ualm6o$% zbV9d*+w3h{ih2p&^-EpfQ0k)5#WAD}1a*e@072_a`*d4BZ^CZOJrMI^KvwN&Oz{rz zh;W($gF!)K0-detm~1ciz~6{+Bi=D@&~m5xnzgi@GGj-+r-|xgxL@F^Iy3;YZfhMFI2vWSL|ZS zV;XVA#$CRcS8TZD*LcNHDNks^6$7Ju46o?w^5wju54A7UJqW0L_(!&nR~i}A!9G@9 z>sNXu?UOiPYl2M{e*_94BE+K)u=s+9234akL{CQOm~T#iBJR{oAtUwxgUev3jERx` zw8Ubs=aGK4VTq&YP%WElPtR3ISu0+Y`C$0T@JL(2{u*cSbV#)&T>Uizp9k38eN0nZ!oSR+=w^AF zlICR&Z}-~pf{KMR#~pseAZ3(Eh2}LJ-kxkrwBk>cH26#qIzzIPpLvC2P&`i$9Kh~$ z*__TbANGxCKx!}U2gP3bg}p1Rz4B`Y&ZNCNh`shQHx}ajN1KTY+e}z&=0%k;p^PEB zNf*0$0YzWnPeOj?6^^ZEwlz45twwh@{u_V4BBb7DW5Cm@LI(JUN>~k<@HIp76re> zxl$Vd(4GA0?)jyKfF@uJC{9G2+4CrvRYSVFPl;*t|1xrvunZ>eOJTIYK%qS{&axo; z57XU;DtoahT~6gNPVYeO2K2Bws1>Hy#r(8xv*v;W#wF95wmE6iKSw6qIes1%ha+B9;rHD?k*>sq&aA zbWEx|t_sabm3ynu?y2&mDl|1!-l_`qrOMN)(3n(t1|U7GtAvtdCls?dU`}chLz14g zrc+@#Xk_XmIB8Aa!f1gD<=`;w&(QA8arC(aP&O6BLu0Yuq%|5a5H_UzSV%ePFLMSc zZ}n&m+x&Pe30QxW^5Z}=^v^2L^9}KwrW)5ghya5TUe3jFIOkGpQ#yyq9NyeP|A}!r z)8MvxhhB|jehbcH4M)=RnY?>7fCWtwRf3)#N3*RvOVD>#xtYnJY&E{JYr3@*${U-Q=!5qPnWDRNV-t zfV)YkW9rQ+Y%cn45x>$8l&ShdW%5n|vuDUKh0GR|DW0m%q(IfFfdD4i5MT;{Ek$5A ztq}@TYbFplRRowqU@H+ozMmB=Q((6itOOJNJsp0-_{zAQ42Hf&SAG!!2wgr;=xm&V zXV@TPPM__^<5sfuhuQc9Vi+E{y9G>mvyD^UQonL>v~T#b+u`JmfRTUxJr5*WJt4^< zhq79_pRJ2r!!90}llW`L-=_G32h5bSkW@1{2aw~=E1ZTbA;{$=i3d4-w6S=yQ_Yie z4rJIE2p4BT(wQ%^=%+%`R%qVz`Bu*a+}>L{tD(@0d>V@_qGpiBVeKPuvE6 z!u*83+zib0C4VEn#9I*{qc;;@l1yI)Y*k+_1F3P!8z?3W_?Uc&^#+5E-Ap+h3EiQY zd>#;e`8i~{&@V0N!a&tf6eR2wWf z@kq=0EPgQ&^~=dYC@5(MXb0eL%8f{9CBh#Qi77V$w7Ib(K~WdzfxDc#jzBeTk#wDT zMQlQu*NBr(riXl{gyxmSKz+(W=ahw7$XvtFg~ae! z(J|GREq150=nx*qFtlF4?ecPHb^fz~E>(95d;^8!31dFqS zat&S2!0c@pB%2{_C33c>FHxMfc#BF;-W*vxI0IQo=7I*CwesTUTt@ zEMT;%aQBz>tLiWoOyr6O_~i;}O7Z_?O>zBaTlBA(f3gqm=Kz#(71 zQaevW=gaw;^wFGLjMT|RQyW~%=3F?R1)K6Z%02Xa07C3{a@b`f7X?hQAoOh!nm5FR z0Mi(@U@VJxIw>ezNU7qop{E28VVl4rNm8c;d_)S7y@s9?K!mZ^o@&DqBd>T|7es(( zm9?ka(ymsM`ov~}>qQZ@+I5t;oEH4Nmu_1mh(Fmh4h{E4| z0BarC!H`onSm{$hj@VtZS>8nz>g75XG5j>dC8HB@Sa63Cd zK_h;!$2DG`vLw{klGb0mSIv_8nc(5w;?WEmNejD6bR9z_OWT9_$H zz5^xB0PDssCt(&YAlBQAa9kwWY|U&?ApX|cMyx(AE$k&ihl$WgE5zSgA!0pw>{-}H zgt&C2+h3T|n7Ts5dW)GB_7x zioVZh6_%UG(&R4L7(cX*ztJLXk%64KvZ7!fvcEkqJL*`suo#HFbucH63g=KUbeM zvERU)+$`0yFl!WsKaDV{$6ycDRsi%E70Fqes#Dy+@WTQrIn|~Q-xt^dTquiBf0S|M zdF|%S8Q(FX;l{%WSa>eX-YIXFAg_fmK2yQ(5x^GCCnn=}K>9N2b3?03*uuwtx8L=O z@G9a8V@tYp9e!=~$h{2e-QXUTbssC!p?E+|V{`UI9uJ=6GfSMfgV|n^PdayKX!SPl zs4Y6nXXpEM%!gpg@Z6rOu^`PdpszPQYQy!&&?_9z2v4Nq4`wO6$ z3Q7Y5^CDTL8R3?`28!(9$J_q6ludvB+7#pQhJ-9lqr9F@UGZ48KZA3Mrko9mTe=xS zd~%ADHJ-%?7&=+QtD%)}dZg~ibW5wMa;af4xi~E>cL?M>yHP>%&ET2vlz+h^%P@iV z&gG(6wtCr!*C-&-PEdv|_cA zGWX%Rm%t0;{BBpvD72|daj=tFJKSKsxrFtXtif|}y}-j>)I|}&fV)tA-usNXeMMq8 z9AYN+@KXZI=@%USQMeDyd+;0p_Nh7e#}+YLC6x|@x&B-!$#YOJ zHlp2?w?Me)!O1>5ZSPN)XM=!~j2Ggkfab1~U-m=CBT})XA?K^hVz9lfK@IdzGt16{ zcss(Vp*Xe`CuLpK=;UREIjsRtE~hiwinV1{RBJ|#IVbj~j>yXA7%JaFj(os%qQT1a zjsRp66T7YUY-_e}uhwk&3|fXcMYg{M(3t_$RP2Y$3=m9l6aNaIt&w{#X4I6CM+}xF z#Z_)pc|)c&9Wsa?@|=}XuybBDclq#^zwJY~hE=&FKM8>L#qC2rc;ygA%iMLMnCktw&P}g zr~CP7M(9KQ{ODzWq(t_-KL^NZ%m4$+H@>O36SkqNK~aho9_K}^YQfW)lTjwIQI}uk zbZosh?}9zc;h!$~um|q6yAQc4)!Du2RjK8SM>$|)KePa_$+`6W%=UZ^#!z=#;yH%>7;Qn8IRPVtkkU zVS#?9`~YP9Q$4w#X%GcL+h9ADy!7q{e!{|V%`vscmHQZ(`Q(bD8e|HGc@qX*1Uu&6 zJXc6gf@_ee5TF;!@DB$!YQwt+%>f6y%EwIxp#fbm(}0Z!xnp3-hG@ycA+23*;8c7?BR3>TRw#mr};M5)d&O;vdIkc}lp(<3MQa-HR(+M3F z{}qVZzQ!}Kz8To@O^<0=BO; zrCmLYbnp^TwF;a8UTaefzQr&H_DO%@dqcEMM8R~RP*LQGJi90}T(z9|! zpNy$tay`w%nK=Y9yH7knW$Th%zHi=E5GVJ5Spf%Exz;s(0)5?TAP|+@=a@v-BZi2JWSfxq>e?i z;!9p{(j*+f-gM;bhUs@Qow34O@a*=<=pWIlR8ei4_qIItvt5O z+r#pYR^}u8GW&0YMTQG3RM|GK_m*c$U3Ly$!y;+Zk~Vrd^}Nj1omOHv`tFNy@jvCEuZpH?D@9L`54FA?|)I+?!dK(OUZ`) zGjQfCiM1sd51i0+sHc1hGSzNO@5ngy3NyDaOF1~7O}RAVg=v9a(EVotrsyt%|i&{4D}BJ9~X0KpnU}z!-Uia z`yQ>+P|;MjtHbYpi<_t{G=qe1-RuCPWWgWr^5pQ&-nA@+KQ$A*#U``KO~}cbRC@%t0Tcl9q|eo%E}DyDbVei#w}}o{~E21 z`TiXGe!lfR8R+{%>iV8D|Lb9z{cQ7Nh$K5&?a$*|X+`OABGobeP^5EB+`XG6^iN)1 zqRLmk$ExK$06w_WSs+BaaeT@IsNigAa1|6{#(Fc23gZ7u>SH2Bn)9fgAepG*JEhhz z6(v(&dfBb`DJGZQf*-qSae%7jVH>KqaoN`c3S%;IHVzqWKCXQ8Matk5zE67{(bH8e z3hdzcHo`A!gl|NQ&*Ay+>XQhcZmIYYys&adluP#gi3t*C>ymlmBgp*tBgj1Y5oDhF z&tyIWc78mit`CMq>l@>?_-9%98ARuD)^mC1;kaVOm+#;eYZy11p(!#RO(3e4F>t5g zvJbrlf8|yfp8>Wp%vF&eOK3Xfcc93h#b{qLHn794^Wf93qQDuTdRZ|Q%jC|OC_AqX ztHoPJA+=J+-8FjgQ6`GJrJukh{s_aFdmhrk%srF?rx0p5`U18Q_D|YId|TVYw#p~j z!ip!ZhvFgh`nJkMeRRy=eb%A(r{IN|`U$R|g@K=2fW`WMmn*!{hkXO48)hZ@nq}WW zg=F)~`J-o1PgPv!T*38fj5PUvFE2pJE6*XAmTqRsPXqwyoNLVY`TWhpx|tZU&00zI zZ{W%~UPM*a2erKag?{mk=zk}wU%~%c|BHeBe~s!_ z@W0mot3dyIQT+=Q6Hzl^|RA19jky4Vn66`bXnM_{wCC z(|CZ6HIJ0h7ppX)dUy4g7m$N-Svvs+*(e5awvK#o+s~Ee{~#X>*u`i*idlC)X-NJ1 zd~h<3eqi`EL^_tSB+z@KSl@jSY~W!8l3VzPR0N;7V^+a;^Z8vPxY$m1(~TybHJC%C z951PP*lDJn!@8!i+2HIPlVBU=xbsDsXRz)vaI-%yd(tmhnr#(PdPg8D$5`Uc`Kkiy zuAzrAAiXOlAJ2q5=xfcFY2O<3^!l9?E&(>eP#hy>Mya)ob61`*3onAQfC3gRku=WL zl;-CWrfWV@);08uJld24IGI_s)S3^MJnHin8hi(G9KmuzeZE50XOn(1L+?XHr z9b~NsF$oq0*+5>uWgMo5)QkQN{jyhm7%5xWk@OYk05P9ie#tn@F8TKi#V>|b*?Et! z4S3IIed4t>8?i-1uc!S$x;(8DpGwv#_b)g=+E*?A!k}kVV+gWwjPQ`v@Z4`&s{`oa-xkSVd46OF3XP{oEd z1lT|Wtd!%j!e%SNm-9IyBF~}Mj)({%EJ8#e0z0)vu=%|z7sdL*5$wmPf#tYXIxRb% z1qeT99}&(}MC7~OL2+SV2GSq z^7Yh`0)+=-cPmdLcS?Js0s>oNXkSqj9Vl65E3w))i?+bDq3FKaA?SgA@x%9Od?grP zN5J!6N=1FeEP`UxA^Ex2k^(cTKHHon zZD94OT>FoEFv@qeXPi6`f3Lb;fC7oiSQO=RDEL zv{q-F7S9RS;hFG0Va^DDw`f|B{8%wA4LaBPR49;8~8>0@4|P&M%1JE>gv!UIvK#OM1QT$ zI4!I*MvLfVyK{9ksIfCn3+s&0B0AX$+?CQ6YIMeFVVyBrL?^@E)t)laM0Qy~d zUpM@$aXp?g>a$H&r0>vCqCCJL2gOJk>gMt9o-o$t(O|2<=88NNGjtwlNUZDWqUM1W zhiaw4`|6u0*7sNhi%L`8UQRyq;sSqnTea@iSvOeXb?s9ZoW5JF9|aBuRh}PJ_+_df zp0+oRl_`qMM6h)f^cuZ#hkPDa)`&$eSZS-uO$^EDHP@P73@@T{mx_L8S09_QZatgr z79u{w=fGj$k!2kvOB?2gdIP(UstUXfe6?wYys&lH3kry$m&4rycbHWRX`4&f!0ki} zT3CoJZl&_z)-=pxpZoTn;-fwJ?twV7uD#R4_9`GMX|G5Hr4JQyr?8L$v_9GghWK|4 z^D7{s!9H`yO!f#1DIh}FQaQBH%&?FGVi|?PC6Vt}27#pkxVOkwgG^zx7-1GWV-mAs z5(+aEUq^m1<^y8P3ZqEMTzDgFqV4A9h)l?niU=C1-@ne3=lJ>wD(*t`@p~$se)jv_ z30Rp7=<96Tq0K_IZ2<$7gC6V%YoP15Xhrb({Ydm{7i#{`BG0T_;SV-^pdOUV7V_wL zAr&!1WZR67i)X9|=}Xt0w=&wiPmJdsAS(Q>O{@wR3U@U^6lQ(1Xkb=^hEplVtT4lg zn(KvAIVPd7zlY(XkS}SNQZ=t7F-e8lhkN`+WqglROL-9R6yDbQX!hFfUTu~bK0G`Q*%(lAsFD5OlrdR2 z{r|{!RlOg-?^L(6MfxtJ53JWByS$Wb1`_G;gnOZZDG%e zTcQZQTNbvZ@Vwe0zyDXZoEx`A5kvNz;>z>mLW+plU(c7q_;LF3qPQuFSRY@0?6zDI zw?z@#Z^Ss@zvZ`MZ*1t`HtwHgU|_Eo&TR|60W9Ne9a=9s{h?^Zbcl9 zn;#B5^og*;&r|5-z42|s=y%I$tJ3DLgLeEnXrGDEYVFx9X3uax&*~nBLhw;@v03|v zq30nVYtR{Uzo+j5SwC_j>ql}QgTr0;D=%1m6Wud6iE>qWC%G96f;hqRMg*Aeh|}R9F+<`XY~NtR3@#*DU{G3$j3zF z3=?6$ZS83PdrLT{4HFB&W^j%u`V@X~DdnFrr{`o0H*-HFTb!kDVBg$NdzXEScD?`+ z>qC!yn8D!*pnV%Or-WW5yZ9Cq*?%(<)0%drRi1<2#%D{o-@^;ta=?X-3n(SOZH)F* z!cN+3;g{f(47PU)&)~Z7D@tIGEni9TuL1MkV`KbYN?G?@bax4S&ZL;bDLkc@A#$CZ zRp`ozOn(U8Y4l`G?lQ`F?!0VLBGL^U?nsd_KcJgD+{| zb8|W6lk#m1=E;+Puz2|ja=lt|g(Qy1_?_lDr}8QY%jvxeT1s{~eWmY+Fb3B-|CAep z8xV!T0)d_Cy#mje-q55|5i-3Zf8ELOYjGh(NG5E1@l1Xj=U0SeLjJm${5~$E2+4#E zIiATM%#;QO4OoM(as z+d$4T+~YLcq1vwtKWF6@^&Rd{Q9mZb)&d-m;4#^X<|}Q_8Nj3}insc|SH-*hW;wrw1N#d(ydAV`HHdNm zsV)WJKmdH)BA`g;UV079y@p@Do+rhZF@$~Cm0BK5`l|0UH#(J0hz}C!3^1+AAO_4; zBI6FyY2mXaMuuo~9G3L+)I(>5`NBHZMWZu^lA}YzG`=&Ub`_f7Be(P$hO;^7f9c84hTE401Oyhid4u|I1Imn6*+gr8A(%ixC1uPTG zP8Z&2Wj*(X2lEGkuO$uF*RF0i=V7X~m(D zR9EQ+{~$@u0MoEPD0{8S{;;m>MwBJV8DLtK)pvbtEHj(({;*PFR*n}D&Tz>d0*}1Q z!oFq{^0l(WmrwR()=aiIYi&p0Uz#4^u6M+Ef2?SxlUz?FF)YR-h@%r zRw(apX29m_g|9FUUTIA4f;Vwk3JjLjKh7o?{r+E(A2e#hfhd`-Y|$HG9q8Y)!Vj3M z$vt%FK3V6XGbOL++BO;+*EM~a0tOeg&3P#+`072oQ<_&RyN~7@nHN)5 z@L}2cwX*f*&Xg5=SoTm~)*pf9ILm$x?+?C;#3^)O9D^9f7gy$i3D{JJ!NsfEvesD` zkJb@>-PJ3|CxRJp^fku;#5%_ZW+1gN0Z(ouJK=FzKAkVI31QUR8P6b{^0SPFN$g16 z@tyPh?~a1}TC%S(8GFqZL-k`|ZE^5fvENe0^zMmV3cDd*_`4^66}7vdyux0B+6UBR zVUGxoW9vDv33FJ^UwLrLvS(oYysmlK<|GP>QK4yAVwjUk7B->3+`@SLv?M(J#jG)p zhv@v&atj_)JPlDT2s-U<@;BSFa!|_ZN2#3>p2uKZv6dkpd?*;-_(~RLiluxA@Jpz2 z?YT{apN+xKh2UP4th6Ds>kVD9YzSNRcXgtHI(|MdbIMdO*h5cFf=#+4j;~ed0r%5s z&XhcPLf^hd#o+Td^2O_XcUC_(Jmt^uVsIQ$Rn6AOzp$gI`H67s2814?4mHT=CL#(m zgyS2+!BHT>K}2CE;rNnp>>B161|38cb|y!0Vfg!6$b#ezNZv)rd+UMjfqs%VCV5vO zPqe=HUEqsh&a#)QuEtR*%U-F1@=e}fz@{4*KYBVi%8viIduT(gy;$`$ZW_={|Xspz}d+r}o79^W~)(Ubd+P5C7edq6A#=(Rx3$!K+_@Nwv@-m5tHwk19) zr)PjS^nYvJ$EM@(zp=>J|GqDj^HX#-bj!aFGD5SpXJbw?v(J|y1^2*7vkyYzMlJL2 z)m137dsnf{1ZaEdujK;9IG0QWbxdg+FX4~0G)wIkomu$mzda)0o_ zKI(eR!LioTidyl}?RF1mYpc3+OdZZU_6>!)s zWaeEw*)pwJ|1KWR*8BHk%#Sxsj7F*D9(hyNf%saxVT@6}}1@3(-kd3z)Lyx#`0 ze%@K~#PV*A;!N*_1~1N(^MN|_R@w5HC|Br zfR6+D({-7PwD>%QebBF$Ci`U0Qz*YP<<}q@^_~2}Y;f6WqsUiz_E-;|{f6Yh%-Gx{ zw%&_Mtg3*e9oWq^6*~Cc`x16-~W*EEKQ!GUK^v%X>w9J_4t8k_ZI<<`sSX@5wX+=Kj3RegEnJf=_oSeA7=B3gSu~MY#0OJ{lw<{ zcsO%s-*6ZHUc(=b)iSHoI^##A%3@|Cm^fjDKV=Q@2l)LB{-96Jl%Nh5e{J~N6Mqf( zBR^xDG(t}|J=K&lYbE`)q;E?4fuwD@OfF?M%XK52mLun`l72_hyM__}TS=2Ge;JlC z$F~x5QQH}9DYL5M+>Vr4-9f1zbP)e@!R#`e*Y^x3{!ye^GcQlhH}b@s*~PSL1Liwr z19J9s3#NzZNj=1WXY83{o6WmpUl^M*f7y?6Dd%-V8mGn*5?+vbxu&zd8Urp)g*r_=|M9=XL1Tcpems29elMk?DQpH7Z3 zlh6WvXu3cS?(s=Gz(S6JQdLHfVLFqEI>2STTeAEN^~jy8ZZIfUT8N6t=mF(0NMhl#qK1u9|B4O z+F79Igw}&6Y_#)_7TQf9*CA&Q@+7UzLVE~Qu+W|YZEc~w1lq$wGtG6Vv4a2^oNltO z(2f<_SaXm-pAo1J-?d{7UlwR0zGg<~MuE08XA1Oyg}x}z3l=&{pg#cG0$w>=pnqEE z9D!P0rF}`D2^Lx@(Ds0mkULN8Jit8;-Q(8SH+MR6KLbz>&_#%n7IQ8rIe7Cnk-H4E z)qrjn&N~I#!F*e24+DD8OgDE3?OCDCFy9s08-N~%-|rRZe=T&MKq*gY_Y0HKe> z6D{K`^q|nT1oR^6>jzTr*a3=q-_1NCv{^#i3lPh2sL1VQ9v7$#=uNEhJ|&zN2sG3D zQlPH`dK=O7yg)y&&`ScX6=-ksvOxb5Xdm-yfx42^xvzO$pe+F9(C*%n{B{=TK=ZD6 z5F@K;NgQb27w9-Z9f>*Sp8|bOXmiZJ1iC<=gUpAbY&MXDZ#(-MQVWv@N+XBh~8kXRGqrEX;b&tP;+r0L=yTb)h|Hp>GK7O+ZJ0 zcDq3DS?F5=CDTf~L!dT5)UsN%bOT}zcL{AvK#Ku=SD+aJEim^AG+UsP%>5#Fw8))g z9uQg?(2B%K<{^QWS?Cdg&IYs^C%Zo;(3OB5#5Y-gCeZCd`?PspphpF&n6&~uW1&|i zzt;if_Sn!Xh095&p1J#qJmzysL^Z=k7p4Oft&`*W)3Ui)7uL^Xf zxj>)~1-i;yBBdRXWqwziD}>f7(6#0&fu>vNT7eD$)a6`jZV+gZg}x@x7c6v(K$lwR zHi1?FdeB^JzA4Z>fL5F9%v}yb#QYRc1J<$c6WXr;<;=~1Sew5S&fCn7h4vnxotDF&^Ca^dFA$xNm`>qJ^J{^^P1ym3blPH8VfynZ0woKRFp` zDs@S2jG43i>fBhQFElc}QLb-AnlSg~wn6%&@V_eQJA(hGTxXi8XU4E`=@eN41;>&YqT=kQQ6UAe}7fmXdDMatkoqBlYds37m75?HEWJ^O5;}TpyXA zfs|$RBu$t-N02%Psb`KJF$QS`X~IkyNvpOS$(mBjXN{yc4j)Mi7mR$$8*6SJN$=f< zG+}-$=}!ft{Lcv|OEKB}2HGZ@ze<`M#p~gcj+b;RNq3WU4pNr=S7;rjj^9Z--btBb zMvqIS%!1KlaDRUC=#6n*8I9O8OGo$O`g5cEQG-iLL0u@R`nfcg zK4E#snn%Vy1nMJWAA{zJI2F^gmN*+e3p~?mguI@fvwW)!nLfM$)9)jNw}C<1-0&?} zxW|U{(vgy$iqw;sY&ESLjlojLiR0P&zB<0Qxz$`dek#(t$8X>4>wmm!LGxs@^#poj zsCK8VOxqFLd$`5zxBRn^-Ea8{(QxhrQZJeCm*#}Ia>9E^6~ole@zWdaFl^59zKxkq zk@SCCcs*UNcb9aQq;rr~rREAh(<3%!dOXs}=H!jX;927t8)uPzS<=ganQU&x^>`a4PgC26KW&Q?jsNZN-KwTZ(uvF_0S{s>Li^k8to`pUt%9H?&yv;q*G zPng}u3N3R)E)VDkg)Hra2(&1Ga^PHH<(5LuHCG0-Hb6HA&~|_x37{P6_gO2~(!3My z$KJNkgy!u4HEpQ2Ol!`={&5zX)0_h|$wG@jOPk#-v;wrWnQfsb#++)Q zyPJ2%Xn4Mb9&O$m(3KW?8gf~)+CncwE^8i8NIcPKo(`ZK_8q@rIrkWr=PKbwVzqEK znS21{Kr1MeA!p7^4`^+G_6ndJpd&2jN#JZYr&{PU!*YODSm^Vh4Kr6-=*yrDGpj7b z99qnS7Pd_V`+q05kM83X8)RUW}X^$Dppkf8OXH(Y8~(EBs3ucZ5u#mfTsT*O}4ju5i1@u zg{Jv!U}guL73>N-Er2e>n$4;Jx)kdl&j!#nW<&F)K#v;g+{m1>v2V*6W}LYtfNsNF z>X`t#6RSU7ft)H=G~W}5t?FLvWqUG!?lcok&nCXk2hl=L4WP%ccJW34{SVe0_U2N) zw9PZHx^q|n<*>JXkwTdTEqOD|oE4%?Gna*+?aZwK)P}W+J0j4%5$J~z=t+e#Y{lD~ z*DQ2S3)esX6yn^0M&jS2xyxIAAzzbKXjRMeA&70d%E?w-h3-Tdsu1(5LJzjA4M9%| z=X*i!*MK&u$o%N*ikWWa2GE6ON3$Y;E;T!u)dIcVKs$FePg;m}?rL6B&dedL6+mxW z=u@qK#hOZ?Pjbkd)|v-2-9l%#<^atU==BDcZ+CNyrLoW2-7L2>mUa(wsim>c+QZyt zA@*5&nujgKK5I|2#zO3u_A+l+i2c%D=3RkaZ=jcEnkH-{LD@5`m6@hXpw}Dd&%Mng zOS=Si?ro-7=!Vv{*j+N)LbtcR59kOhM_=!2PPMdqK-<@>urzvpmbuc>9)ZqT<}rof z`JCC$JQqM-Vt@0lt&NHE#JOd;y5!afc8louZ-Xv1Gy7S#nL7NI?=39$n4ynHw(;afgVom zEzmSPW#hL|k8PimSYXZ<=#osieLhyR?zYf!K%X)%Tj<>O;}a#*gh!){kSp33B^H_4 z7P>*8g%-L^pw$YQJKIkI=W78pnE15m*os@bBT| z@g3h!oNxXX$hG0kmZoW>QD+6vIE6B&c07@|(Cn;``C`W!Knnxt*~CTW;sE+h;$m}u z0KJp=ig_)7-cMX&nzmyOE6i^@(#}^+pM~D($T^ppnF2j*XxZiF7=g6juP_yXw6s^6 z(?XnAn%Ub^r*d9pjuuEcuQn$IPzCFOD+SUVt}!|QtK79_0~wqt*X>+qrU|5+*PHJM zq?|XHpN2SZG;fDEZ!#UztG0a2OcF?Kx!KHCC{q~T>)dP>DFlB`0(5NvO>tJ4H377X zbBn=%kAG*Ht%vXL+-f!uNG*!~_fFA8)f>fu+; z8ZZ8n*kM%E^)PS#yg*uxtxJ4=R*79yvT`UbfJu^IN&knSWWi z&mzC)Ov_%XWf^GCn|_5v%kyTYLZambv(Q4H&To=IGfiinbewiBtDp=??fp%BOd?&xqeZ`z$X%FNp?yKf33(X!* zXqAP2B(%pZ^b3LBPzd`|J`2vwK3cw~n@)FsZTb|-a18&onQ3YH_M<^NA%Mbw)s5f<90^BzDe zEHt(A`+!y{WcKNN1kjTfn$!8D`?`7CLWg$#-2JWTn588;vGaNN4Ku|;%K-h(9Acp} zJ6~~sZ2? zb93)6=30d^|LE*>-Zc+fTDogn?_KkTgc-yH#5mX&0TwV|7&Jj zs2k9G=2Q#anw#bQ-CSv*$z8L&_sxSAn%;Gg_Yd=$h4ujSPm`IgIpo_9^ZsS}EHtO< zFz*91%R=}pajAaWlwNW zQD~9|S~>})JF*NYLEKT%L0kqE6xS)*)shOtl~8V?!93XO{0nZ~0E(Rj!-UR8+3LzeNGL_8j{4RNZ>oyJ49 zk*5%iha96+qoM9xW0XQP9`cN73ekATH|E)K`4#Rq#wvwqbhI@#C`6;9z}T)(yZrI) zcE(o<(O7A3_)e2$p|R4zC{(B<{}1j$qg){xIUS8D3em{vWW*I3oPVaf$hb}+8b`&( zdWC2lbv9m5h{jPDW4A&yj*c>Zl!#}iZif4GE{ktz{=1@^QJ~O@{1{MIh1MeOXk&;% z4F{}{%!eDv%68F&^wGsBdx){%zw$n0Z}_I#CCdqO&6oermkM%Fae zf}PuI?lPm4k=#X=8Iu&E)$dSamXyQ_cc*)paj{0b-Q~s|8hz;=ZoHt;KiwmY&onYU zBMomz;2+f}+cV0@)2N;2Bx5oonfn-HnMNaxu}0~1N=I>Hjd8{&3Q@_%8yVFyj`qb9 zjABM|XEV{LQgO7SooGCz5T&a$UUj6aGP>807TMO5jB-Y@1t%HTF_I;lWNcQ5w47qR z>`32!03QN?=UKu$y&sowmp#F0EI5f>ft%fn5I!b z&*{d+8kKpb80$3}>p8>NsnIE(GYv6|bjmiHYIIkKPQ|7fzQFpIZL7r1?PAo#zBS33zm3ljoq_lTnOlF8u_g&jSXkZlC^2q+Pd1ij1wjMU3=g7E++Rw8dHFhfWV*4f56GrV^ijyt4#RxIFimh&oF^|zo@j?4b ztu4kXg$@8cZR}OZ)!|a>8Dq;lnL}=eE3IdZ(glRB61g3&x3(Dz|7fFItrv~03vG0- zwcWU9k&Pa;{%R~g*G5lUuNjliv(Zb|o5rBUHhSIKX<)G7-%6aS?6Tf7MlK;FZQ^~S ziV>aZd~CgML>YZz(D}>z#-{U0Qr7lEV=E(){MP!=*d^oO`92UI8s90@)Zw2%IMkzb zzU3W05W9^$h3-JyZlhSCEggQeJ~9R=^k#=&fJQ0wc?Zk;u`x}dgB^lEQH89+@5LTt zsYE>D_82QJqWqdf`@&4`KI1EejxKEL{nU8kVi`B6u*kdL7=MXGV+y-_zc7|7bXs9= z@0Ui_r7~`Q;Xv=-jl~LGT3F`&+8Diz;$%yFYYbr|`~6#E8YA)ysp4B>sgy*!O!a+9ByRpKwU}%oiMze$#su|8=K^og9H8Q8o=!DaI3&}|&$MJ0S1a>7 zhh%HB;Od0VbaQ}0v=YcLM=_!ty0|jUX)2C#$TAN((q)@@eN%P+^!JK zRe9!T4#|9zKKW?Rac#_13Xx=6^HD~!%?ixz4#{?A*)=j9NwzmnSBOg8!HhDJJzZ#C z!HBdh^%k0Il_b@nlUcqpp{2;YO(D`!Y(C0JYUyn5W<*++dpn!HYZIkD$~;dYDoa;$ z6(c(1yw2Ord_tqu-lNT38r|#dZvIOm=*$p3OzS$*Njda0dYD-f@x7&L2{DKkHC_@}$(ubhzo<7FBP9bWuW6j$Y zA}#&R7Z^z`1I!N@Ni74+Pc=#v1I$Ab!53`z4m9)roXBCIIZ+|X;W#tINNPFWj3lAO zj&#SHZ#vQqGWTl9R5956${~4zS+gq9N++6Y8Bq>+631Mx;;7Ba%)A>Dl0(gzjHKi+ zGp^!DvfSL|kQ{Cn+(hZ5BtH1TNRFzJW>g`n-zf7QE!o9YVLmF6FQd~g?@8vXj&vuP z%Wjrsp*yH2n_CnjEu+mt3Q<3dF{@USr0j>W=2Av7_pzpL4aE@}X^b zhtU>=9_#c0a(|DJoDn9O|B`X2!(havttFk?1hvE|W(gx|iNSc2X_ShiexGbMDnu=K zs(FD!@-%a`L-KUtybvbE-Lnk<5LXIa0YR zbIibP+z&jC8q6GxQhYJ9h>^^_(Ih$hUe8>G=w45Tn6DAt>q(&9*#*8onxzRXVxc*R z(Mn%_Q77L*^K?d6iOxk`fTA)^99MKS&{BoUib{RwnkyKs5EF`y^({6JskoU%LwpyQ zLvE+CtrRnhM*1!?Pu8f5?_zU`LQzOwY_8U5r0-JmZjHM5E;FA{==1a;K;jOm^YiqP zzRS%Njk@@*Fbfnq8#=Err)f0Ox7?hqQ5WA;<^qMzEgB7Ukw#U%Kbb2uI>Wcpd|RVg zz8lQ_8a4PW29Ng~PU=FxT=C?WcuJ2K^N~2GFkDGCgzV>Z4S7`LJ?`d;` zMt=WRbEig`{%xlFZd+#u|BGg!M&0~>F^4F0eo-I)b~CEcVE8LAD9a@>gL~V-l5PXMPvORnRtZ+|5l1i ziYEK_nn8`G`9CoW6nZ)De&45NAB{HpJ~u~cwApvSJX4{SMfdx@G~*g=^nGPss?lcO zH|A=EUW3kW%||ra==+DcU8BvugXYHy-3XmOng=!7=sRSl-6uxyRj ze=(2Ks2(qGjn}Br?{>{l=w3*ATnja-$0tp$)~L}RaNVKM3wbmBDXvW#)%(+2FKN{1 zZ|!nql^6ouJIaO?r-Os zq0tTgLf1l#*7-ZRu2yJj*8Tn>*R2|D^mlP>&}gKutLr(9Hv7A|-qL8BzlZBnjb8Sb zxDG1x*P{FVyg?=o0-9OUhdO()*$D;TB zC%dvW+UFnZI!dDh{_(D%8h!7tbe*BmA^#-TJcRNo;f2nJXM*IAiyJ~d01O6*rOEvo5f3<6^Mu+?>Tw4{&?O+D3aqZS9C2+m# zkVYASRj#}ZvMjkB@&Y%x`f1cLaEoiaMqLBzTv3fm0=K&^)~J8rZr56kP6*uR+M-c; zV7+UXMq>gSTn9C(3T$*`J#6QGT40l_RHJZUvum_Qb%8CeSsESdd&V_aqjLh!yDre^ z+`wO4f70lJz$>mhHChpP-SwnKYXWb(Uf1Z}z`L$}8a)#D!1aShrM{0`{zqgvrxlxl zJ+7lQN(p@GI$5KPz~`>0MtOk)uFEy*82HL{pGI8+-@5*)QAyx?*H;?#5B%s#-)QG| zLg0|Ak4EKzpIwz2jR~0UxJFe0kNX;pP78S5k7yJQq`2SKs4kG^KB&>=Kx=pYqjrAV z0$J|kGpoqh*8})N4Rmt9snH{WF75*wmHN85U7KWn z(c*jY{lRRF9trevAEi;LuaA46LUBm;bC1{Pk-z}=OpQu?$Ggu}=sfh%VD}9gr3A{{ zk7$$;D0jc6QAuEg`)?Zc51ixe`#z0c4lHoLq|yGsLia9>z6&gN|4pNx0_VHM6S6E9p*=5f z7ig3cxWqj`ql~~Zca=sZfh*i|H0mF?+PzGp69U(`@6aeOaIJf*MjZoxcJJ1xYv3mL zA&trdtKE50!Z>~KG(QAXem_gfm31m1Fgqf!6ByY957WLcKMKHqmAtx;a!L-z=cItKQ* zr)$(T@QM3ejmiU`xo^;DOyGd~5sj(>e|Nv8(P@FN-G9?49QfWH*kb2i7dYtdqS5Pt zf4YZiv9J%+B4fzs8LEF-!n*~j6i{BvPLC=_MW&#{R5pm%QZS7(Ajg3MtOmwJTGX} zG0@$!SEH_h5|4Ps&b>TP>M77@OrW1glD%#djb`nLmF)kob1Va)-KDoz&KAojb08+^o-YNf1t`UU8C;;lRa^b zehQrKxlp0^QamYVc&^i^RZ7TnmqxiMHJ&FJ$+MCfo~?{76!#Z*N}1u=q0!MPvpgSY z)Hh|e=YU2hq||$U)@W49*`C&0sSc#2G9~V5uhF!Wd7e^@W~VIh4Ap3E$|BErjV?%O z^32fa@|2~Xg&O@+T%X`IdXcbFv@KEjq*ZC(mGwX8Er5jMJ#WcfF@ZqeZ?|o;4a>>Rau3 zNTX|fw|HLAXpL{3$Ft4O;eOwpp0*lo^xfm>t$FIGm()zy?ekjMa9v1 z$OE3ZLR7zpJWUEcR=h6dVb9eX-J7z}bF)T|q&((%M4>l}pH6wwvrVJtQ=am?rqL@Y zPka8R&}Wd`>iJot=Tn~Z1fG{Q`mFesl;=Hd70T`KcFIeh?iziVvfVRSqx~s=^^Dc% zo0Qi)Q#AT1KA*ZJ*~pFE>9+Mn`^XOc!g zrI=P!q4!dTd$V2ZU$p|t$$U@PlhjS7P4)?*qK2eYgl3gsjBJnLhP z_NTP5{;ttaDeWxlMOlZVAlcE%)o6c8kyWhGPbpojV-=d3^-9Xo)<}(>Pw8n@YV>qU zFRNOizZSicQfkfD==qes)&&|popOwIjY54ozmjsSb(==drwp_n)adDy{jDhUp< z-qC1aaESGZMni+ctREOjn;&k8mt_40bv`LL+{#mEMCS>?5mqT9DLK*_pyFtBjI_op zM5Cj^I)jmXy5VGNmWs>mFgbX#wLqil;5h3djiSMc)^!@igH_g(8Z8P=w*I2gM*r#7 zE`_EQPY#}8eXCJ*Fl6BodSz$PV2zcfQ9L-qI!>cS!LzK98g2B~T9Xx;nzb}oZ$&h^ zJlJ40YP2F4w=U4=et)C2QlpLjdDbl&jr1+B9#rVBMN5N!v|iBY^5D7F8yc+$F1Ge+ zbicpJGPlb*(7DD^D@~)3z6-5Fg--4~Ie3vZPowJKW!9@2MT1vZJzkbtPVO8JF1Jq5 zXi;#5b+Seq{nuJk6sm&G>#YqMRR?dhg0Dy|Rh^^3)z&PH;=x<2^E6r%yv$FAqjkYotm8Dg zFSx@Rt)2lD-u=JA?bI>lFGkqYVn(%IH;v?qPI5B0K^80n!Cunj!Nphv{yPRO^eydcWpK>yQMk!?F<^fGpsC908pm_?-%qa$1 zu25d?(Li@7RFqo^v_+xga*qYtDG{Ed9t8B2LZ{>oOa0vPy}@M>XXKug`h``fP$YLk z>H%wjLgxZ~X^mIt!raNJf3s#ObY${mvS#(2KcCfoe2bmioPQu|hj@{{*yJqd%wq z!`iCQzT8`Yb}95t?p>)rSl>y6=cpe{J!l2rlDVhlofJH16)V&`@6psBtw9P^zFg6wZ4&^^mnxp}M>`Qh%~mDRfTWd#OKL8x*=a@8i^8td|){>oL4< zCZXL*@{!_BX@>WpBhK{Vr6c^KbR}t~H%lVee7`i8cPpcnzO9`*`P|;!5{VBw4@+}< zi+9TUeb9Myn#WtlNak*NCuoHCF1^zv!Z!}8(!Aak8l9Hr^S+_b51pr{rFi}CkWM*n z)4YX@%9B++A8~yp-MupPykR#^!0?8caTE#6@-|#N+J60LChOfh`ve?^Db40-tUijS1Cka9*B82C`9k# z$Gr5tWO`13-sneu?@L5q42gLsOC*MNsZWb};|gsKo|6{$uF~k-v_|iv3Z2yD+_ZDN zZzwboXs-7wg+f5{yeITkPGhnwmn)Q$xh?e)?;Q#a&fk`LsrMyD(mpTqzLtbO)2P(C%-iE*%6*%Up31%4 zTdoj2m3z5&yhL~^x4(6T_b!F#Iozwfn>D&xT@6j5?#J%1D8lBhbKJPMxHb8Q{_b!cM;sNgq3T^GW zL_Fv{z)0HlL*5miQw}SAuXo)Se8~H#LbT3$$oqyuA9cN`)kEHc3jM;U;0u{9yBoy~ zQK)aX%Yi0KBxrTR*iBz1RZ)3F~T9-;R)SYNO(?!354sAv9lAg}tmZ{EXJ(n|WolRe4U-_$H z8M}*R_A`AcgK{Bi;%j}$VVC%pWez&zySFBp-k_#92GoV`7#^M@_0Q}`l2K6l)|(x6 ziMM+EevZs>3g=7TvcXrzn9BAErW5BY=KOlSTDIqZm-98}bqLhNw-hN~nftHnN$p9J z?U=UI(6Z!jaKA{My*Sl+<{aw?OTMIK%6a6R|M?QEGuO?+*TWCk;p znx&q(tcUpc?FZK5jFmDathp|gG&p0OVQ22nuv12AJ5sD{lN%iMeSyQ0U(aPb5`7(# zrg)R(-)1V)${d|#pt>a2;G=1U_nSr5sWLgp@8Oy(96m zX`J2!>K3+mwG5BzMWvN% zm_KlsI4;GJHc8fEs`)Dsc8Sp)sMnmFGmzGeFZNPv%s?1@%GBwX<}*k3;}Q;> zaN0o29+VuX%)cW{?PJf{9~V;l{~gp28+sGn28td5b#d?iI>(+doqD8akh%PJe#@Eq zNGq{VxSUS!@mo03>pD}(auWZ@t3Kz9=1kjiyvuo9u5c3TAG@7pUQP{1;y8P!rA*7% z-@=hInlpE2+e&XQ^K$0ck}rKbQ4`;rCTo%NmrT`iUH$tw-hJJN2L`F6C5-u$`(o$4-^d-%@i+j-BdC=`G)F$9J2`+qDWXCkT#R_vh3 zWp2(lxYkmVzW#ssRL%KLNjqO^f4gk5B(g^+{M%%j=VI5rIsf02d!jwX72363EsYzVo|an?P-k+D)T zIj?`8o`hz*-xD0W%uY{5CAY1&Ip4X~vd6o#rqVwUN5(qklgIM^mgeU9{%_ax{~P7` zeYN=CN;MzjG(9vz-4)^`F*Aw1D&eMY5+&od4Uay9DPy zshlm~4F9JM|I-@I7I23DV;lcz4QC5D!~e03-`g6Axh%O2oAaG(FnbRo&kf}6gThjS zGd5Xg;(WuvuXfodA$F?f9D9$D(BD$C&7m`j^>x^E!M9sj+QSZR zhxeE|$DK2ru&89s&G}AybB6z~rrOPx;Ow0Q#}E{jH2I9~-!0S9&Sj1XzFjKfIK#>9 z{C_8v)0Uj!=JsP-Y;(TTmYm__`u_hjmGikEY61M>Z$F|k{M+gOn!5KiTpbOQ#h%!_95rKNe-*c|6jpgZR!d?5BL?^Lx&xl%>VirBYi};tnI$&#+iioWW1x9VslI zSeAFCo%FYiN~()2zab7GU;DWo`2@(n`{^C|+>R`#9Jxn&dS?-jT>12le5&Dm=3Ky3 zhA-l<+}9-PZmMUB61z4-J;`JHqK;y*=qc9YSNz)Hnf~=+3I6T@ugsutiB>S30QygH zD$@{iB23R_I-hA1(@U6M#q@g6C1MR|2EO`zT54Hqzo76YqpEujena=v?!!cHgWdw! zWDLoxZ@tNQGAC+oG6r>yx1J#AeUPU)?Wy9m?pKR#BW7d4L zYf0CvCU88mwiStUH%c>Idb6y2KH|M#mDI7b6W2bQJ6po$3u{DTY z;Ju3VTyL%``8xY+ad*i-KsS{9lua!V$k`#D%o&lhAHQQ7HTR2mN+uxOwPaRK6luTq zT!pssnsJnKzh@!B*XOJ;|537r>4uy;p?OcvCeS7L4dK&LKhL2S$iT0#F7GuA^yXe4 zaBF-GeooH8oK42Py;5_V%#FP=a>+uD&s}5w(5nK}EUn1RH`|s@1}!c<1GH!9bkP2# zvp|QG)`E^IZ2+B6IyZNRacb$~nLCW*iWVa6KT4W%dz+`0Zb3gDS9B$FR^)z!(%u3} zW&23fl-_}GtaLrcZbEnobBcNp|C-V*xi2E^4#fV@>n%{T^sU@(;Cz<*H0Te^Kg9e) zxi2E$w7eb0n$mW74QWkjr@R-j|Dw9dq(~;Jnh}!T>(36 z%1?K_*ZU&y?@Fz2O*T)zvRhDceLmT3hUn-b`lD#o=kfd>MSh=W^2x4tAWVD%<9#qF z#To|1ZZanJc|U)kE70-d{0dG>V>Yu*8G91H`Ana}HfR~9Z!-Oe>6c7@?sHU|38H)P zP-6n8EkiD;_`$`~Qd4|HGkm9l-?z=F=1qNfw@=Jrew_L9m|tj+WU)b#T@8|4W)f$)Nt_iXajr8d z?RN0f#6k1cv@~(Zd^Zi6T_joHBFRD*Nfu){3_Y&$RzA_gRRLP+8VlObRS7zX<%h6* zIm?fNdD5g4FvsPJiGArsprcw3V_FRw%s3ykZ^o^lr)50LoIOm7+%eIV zF^p-s`!8tuYJ|6BoDUkzxRvR%O!t7k+S=veaxxvpv>Mctxz|f+mj;NsvK}|jX)`S6 zadT|jTXXtaM~i2fR^&czx(lXtd)%Cqy%=97N0?M@fo*T$F{O1OMszRJwISwDXMQ#FnXav2ewg_)n9p?WOyYFfSyIPcs9|+vmZih ztY*4}X>pYJtE0rxy7G#dQ=O!r^I57c*VWbPLnsdXjO^;Z$dHs=J%yc!=Eli6WI8}^jah&MlIHg_9bPLlVjl?O(hfIzZ(>T1CY0Wt-KbK;c&ZY2b z4sT&PWFGOSFpYSvU%;sra4t-@FdgzomS?({>DoV%6XZoPu&-YbbNUQV&@t0-K2HPP}v5v^H4bm=uj*WyzzNOdjI-Pe-M zi|fed_g+UF_YFjg|ID#}CT-=bC|q+R(WN&LU3)Xpt*eRdT|?A;E79V$M0c-+wzgv3 z&vflyDO~d^(efP}evRnT*NLuugZXbU z|83^)Wd1uux4uhs?|aPom^pixvzMs*6QaeR5-tCXXw812OFt*N_6wq04>0FTre70v ze?yf1H8EYn^n9jEnO?y3Lb0Irxvkr$7p0F&uS#E>erNio^ykxGNq;l_{q#FB?#tMe z@oC0^jBhf2%s3{qB6D))w9IH`W9E687i37e_h!3t(sOci+UJ~@ zb5hPJIdwS;b8gGol=FPfD>-lG?8^Bir%i6>+>+cOx#My#%)LH$TkfvhFLTYj%)I`2 z!}2QgYVyv?o0E5A-aUDn^IpsQAa8G8*ZdRmC*{}XU!H$!{@wWx=f9BucK#RnU*-Rj z?{CwlO-Y+!ZN{`YrOoMW=CrxB&0TFCZnLe;&NiR5`KHak+N8A2YTKr5VcYI)d$%3X z_QbZs+h!GXEEri}VyEoE4%v&7Z=dkvzX1MA5vf=mF9Sn~`LmEr_Zh0r9->1T?WB7`3vs}W}* z6h){OYZrVkLChC%u|PCpU)qEn>V^14oXf=pVmU&87FUZ~#h=7Fgzgl#Vefi7K2!dH zxKBJR?iY`W2gPIJA^g7d2L3Q;Bo!|jh)bCsNUKEn=QQGEwIW)~w6xV^gpcEJm4n{K z;rkq%U9A>Da$)O)&i7k?49=&m>BV=a{=Ye7erWv#Vt-+dQ~s^=U%>w;owPaA%CgB) z$&yQLpQn=^r?$=+l(sa3>Ln$mHmOhLuFXP^x~XBu0;4`gm1_r4L31e!*m_fajf&Myrpi^M)Uy= zZ(=I*eIf5s@L$eb4*FW&O3fqn85Cj-({)V8 zWfAADJU9*XJJAO?you=z4*3`I4j}gByl+5X%R30VGw)~6B{}Xi>iq!dp1jte|H#V$ zwekx(fA935#4%F!Xm@@rkPTVV`#X$$&k>yDtGbfFO;`_wp!!cwxsQGF5H z`KW=QvW~Jx2BlKHWQ|Vj_9w)i%5*l<3%Xt3%7h1Xu_q;engWlC_xPEn!K<1`PP7$b z4EWR(gww$@LHsO=of?o`Z z_d9XkXNuvF#Tg;u4KW53ci|vq!aH{cogj_^ohZ72R>GT`@YFp)C&90q;uLsxyqPWf zBJCOQ@TQo;^h|hpQ%r@AH^eli)5Y=NgqT(f?CRm+2ZIw9Cn7up)P%n;LwFXbiQV)t zgwFys#cY((z+5mK;aV{g;W|(}!GV3Yf!Uz~;j_ib2seP5m?Or3o`ZUrm^CJVzkumN z)W8&fWV#47FvYpz51{8^Uv7xSpeE*)(-B?*YKrqwC;F+oGZ0>m+L-tazYyrPn5PVJ z9jJ*pCk%QU%8qw=QEGhC0_8Qurzoi@zCsyI@f}KMiq=L9G}mYZ%`@hL78vtE+ZlfZ z?P@Fn?Pi<@dbH65+TA!Gw1;s4Xo+zVXfNXu&{E?v(B8)7p#6+1LHiq5fetYK1Uk^T z2J|@NTF~Q->p=$@e+C_F+z5JtaWiP8u?Do-xD~X!V+zC3)MOxGHJL3o|uY*2syoppVfSTeZ<89CnjCVly81I4Z zHQoo^XM70ysqqo$XT~1T{l-4f&y7z(zcBWL9x%QD{nGdn^l!%BL9@-Tp*aT>ZDoE7 zI@tUk^aS$<@K0n~X8s7y5T--Te}O*?)D-3BPY4eOHN^hgTSyKe?8?*3f_%&Hm1U*whQ#~Qjww`Lx0#6vUoo6O! zd;A`(DGEKaK|A8tU`^48KZ1_; zECQW?-+4tZ;1^xd3;4Cxo}$Vq#u&=*6dOG<*JMVs;#mu`mS$a)wKD6btj$?(Wqp~o zB|u$ryvPRpK~TV-`8PU4>-wqo9D&U^VVyjMGtTsHi3 z2|VRMtaXQD#XACjBk?y1f8*hqCgATZ_>0;2i{h^i{-Pd#_hIFFKmH!Z>h=+F1*ro4 zoby?(u5YR9H|jdjkny*w>pFG4Q(a$I*EiMmOLhIbx~7;ieX6?7RM%Q{y-HoLQP=C$ z^+t7Fqpt6(tKpLRJnHIK*Hm>)SJxZW^=5UwRbB5@*FEaGPhIz`tJf{{`_(l?UA-Q~ zS67#%%Au}ab#14v9n`g>y7p4n-s;*{UDv4Vt?If?UGG)b`_=UUb$v=*pH|mr)pduu zzOJrss%x%KmNQ>n+p6n8bv<5P2dnGJekng+T^Ffqle%7@u9v9m-2o|oKdwIazRUpr zEc_iX_GSJJf0nf`a{#UdxDN8|%j}L-Ko9) s;idf~4WfA}|OOnpsbG<<@nYpjdJ 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 K#)0=F2mTF_u(`ni diff --git a/packages/NUnit.2.5.10.11092/tools/pnunit-agent.exe b/packages/NUnit.2.5.10.11092/tools/pnunit-agent.exe deleted file mode 100644 index 7a555e16c9e73d40be60475b21cd92580babce74..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13824 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 Knf(7c0{;V5qqk20 diff --git a/packages/NUnit.2.5.10.11092/tools/pnunit-agent.exe.config b/packages/NUnit.2.5.10.11092/tools/pnunit-agent.exe.config deleted file mode 100644 index 0bf29b3..0000000 --- a/packages/NUnit.2.5.10.11092/tools/pnunit-agent.exe.config +++ /dev/null @@ -1,77 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/packages/NUnit.2.5.10.11092/tools/pnunit-launcher.exe b/packages/NUnit.2.5.10.11092/tools/pnunit-launcher.exe deleted file mode 100644 index c70e58ef13579a520e37d2b190ecadbf73cf859c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24576 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 diff --git a/packages/NUnit.2.5.10.11092/tools/pnunit-launcher.exe.config b/packages/NUnit.2.5.10.11092/tools/pnunit-launcher.exe.config deleted file mode 100644 index 0bf29b3..0000000 --- a/packages/NUnit.2.5.10.11092/tools/pnunit-launcher.exe.config +++ /dev/null @@ -1,77 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/packages/NUnit.2.5.10.11092/tools/pnunit.framework.dll b/packages/NUnit.2.5.10.11092/tools/pnunit.framework.dll deleted file mode 100644 index 6c105d70f908dc7047aad6fbeba58162189c6070..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6656 zcmeHLZ)_aZ5udlacX2N95sYIJu#-(4sx*PC^AA)tC3ftD7!t?$9FsJa!uq^+Ho3cX zclVMw(IF#9X{4$RQX3K!74e}}KeQE6X+agBh)VuKiQq#~3sp%4MXf+;K}ZFJpud^7 zdp_rYkk8Gt_qQ`|=FOX#H}CE4?fmvBGKt8-_35WXPvg$5Tkwlv8shBo-)HH``7f?` zTJ3mo#qa?yv?l|9B5+D}!6}#h$R2g=pi;KIvfZ~UZnuak-W8)|lf9_|*`+O${KYlo0o-4Z`; zO#GnLuNtjYgk<4{Xsp_dW(8R@w8*NMOpAOPak87ldHX8+h`iB#+^dteVBReYDd>eO zVLPTdCZfz5O2=b5FottY#&Mpvmgxn-L~YFK(+C~8NykdZd8xGiab8m&OPQwCkAAV1 z>0_m#_S4I#Sw74|5Bs*uqWy8MW(RTH!C5$0=YhEjab$c1KgUPYN0o4ojCt+z$E-&F zlx!2E7P*)cEr%!>OLWk2sSX!$tYZ)oo#d1!Mov+>&Dsl7J1KSk#d`1rS-1{4SoT@= zu8HkgDIfkob6Kkt1M;>df9Dnz?_53y4zJ5~TGr((ef!3Rb1(q&f@f4~0H0__#U;-``MA0{^9+M!CMHo}ob- zF4Fgwyh20h*KH>CR~o6~-lBcHp3-JgZ;>Ob#q3P#9r7@bZZoM5F%COb+Ds~~CiVJ* zXYMd^kjPrp2%_F&GtaZ1ARM~VW>R@|3Xiex+sv};7qpm`tVp2r8y@m$;1GGtROV4t}JLlaR ztxyBp^Fggg(_pbt)SUiR&@^cy(4x)26zYU^ZV*jv^Cv=ck3o;rSz!Cd9Gjo-=L&iS zaeqy4E$~(PhR{8N{epK3?iF+dJ;Cn^P6^%*e4S1LhfpPq4+~yP%dIz2oi|%A12+oY zD|ol`IMzSWe^BVdf+wtZu$oL`O$FJ*v-C^rBh;8h&A=u+3A5OB-=Z96^>QMio_erUgvZgu9M9qtyKY<(C1)WXJ02Td6Xnu#v z(C`{&9;09JAl)|Y^v5bi_jZ~rSISv+V%oQR(pnC!@a(8%TS5q|LN8b2UJaIoF ziq+x#ECVyqtWEY*rs@epw=`Ou5{7$+{h>-(q8xOPmr$IM$kERVwDqW4s6_6VB$4{V zd?n6QxXtm3mB6JwH!K9+WaRm<$EZq8#b z$Dt6CUYuU^iaT+9TaOl8ZMh`NP>Pp}z=n}ihUq)phb?-5K?tisBqS7JWyPXyiu>{MRg8ex`%OCj8?|UE04KHsUS5J z=zTXDZo z#1jo08V=}CG;la}mhk>m1|OlnEZVlnZEzK_MQewl%^IvZ4m&K<^Ln5>vF-x*oD;o?anon6vTgET<9WAA(5i3>WSwmfac!*E0}kLi2B z4O8n@X!qeGo!KGeft5^~lw~WGO#wR0dA12`YD(LN%C@wp_?AthGn;KP(;Zne-LfcS zr@&@AvMq~vP)np|Sd8D%R)0@cd z)@oPrOJsn*f#heS>AA|hZuoX2YUpRZ?YQ=IZ;eT;wpAn6g{wz9Oh+F?{z$wCIc{4mxwVC@cdx#T_?aZEl zJd2I18{a&$x+BmHpsi0y)>(^p)h=8cKy~3QJ4fq5uak@AJMdkkBszVbl@SYG7l9?% z!Y><$uo9myIh>jtGfR%( diff --git a/packages/NUnit.2.5.10.11092/tools/pnunit.tests.dll b/packages/NUnit.2.5.10.11092/tools/pnunit.tests.dll deleted file mode 100644 index dce018acda64eb9f1162a3b3e95f473ecbe029cb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4608 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 Y?6r?uAHJc?Z(=_8@TK;DMtfJ_FVQj;bN~PV diff --git a/packages/NUnit.2.5.10.11092/tools/runFile.exe.config b/packages/NUnit.2.5.10.11092/tools/runFile.exe.config deleted file mode 100644 index f58f099..0000000 --- a/packages/NUnit.2.5.10.11092/tools/runFile.exe.config +++ /dev/null @@ -1,43 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/packages/NUnit.2.5.10.11092/tools/runpnunit.bat b/packages/NUnit.2.5.10.11092/tools/runpnunit.bat deleted file mode 100644 index a05cbb7..0000000 --- a/packages/NUnit.2.5.10.11092/tools/runpnunit.bat +++ /dev/null @@ -1,2 +0,0 @@ -start pnunit-agent agent.conf -pnunit-launcher test.conf \ No newline at end of file diff --git a/packages/NUnit.2.5.10.11092/tools/test.conf b/packages/NUnit.2.5.10.11092/tools/test.conf deleted file mode 100644 index 14cd113..0000000 --- a/packages/NUnit.2.5.10.11092/tools/test.conf +++ /dev/null @@ -1,24 +0,0 @@ - - - - - Testing - - - Testing - pnunit.tests.dll - TestLibraries.Testing.EqualTo19 - localhost:8080 - - ..\server - - - - - - - - - - - \ No newline at end of file diff --git a/packages/log4net.1.2.10/lib/1.0/log4net.dll b/packages/log4net.1.2.10/lib/1.0/log4net.dll deleted file mode 100644 index 9e8d77bf783890208419ae230fa7b9513bfdb091..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 266240 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�%noJ$pK|wo>Cv8p6xc_wr{k|BwwYkQ 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�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 - - - log4net - - - - - Appender that logs to a database. - - - - appends logging events to a table within a - database. The appender can be configured to specify the connection - string by setting the property. - The connection type (provider) can be specified by setting the - property. For more information on database connection strings for - your specific database see http://www.connectionstrings.com/. - - - Records are written into the database either using a prepared - statement or a stored procedure. The property - is set to (System.Data.CommandType.Text) to specify a prepared statement - or to (System.Data.CommandType.StoredProcedure) to specify a stored - procedure. - - - The prepared statement text or the name of the stored procedure - must be set in the property. - - - The prepared statement or stored procedure can take a number - of parameters. Parameters are added using the - method. This adds a single to the - ordered list of parameters. The - type may be subclassed if required to provide database specific - functionality. The specifies - the parameter name, database type, size, and how the value should - be generated using a . - - - - An example of a SQL Server table that could be logged to: - - CREATE TABLE [dbo].[Log] ( - [ID] [int] IDENTITY (1, 1) NOT NULL , - [Date] [datetime] NOT NULL , - [Thread] [varchar] (255) NOT NULL , - [Level] [varchar] (20) NOT NULL , - [Logger] [varchar] (255) NOT NULL , - [Message] [varchar] (4000) NOT NULL - ) ON [PRIMARY] - - - - An example configuration to log to the above table: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Julian Biddle - Nicko Cadell - Gert Driesen - Lance Nehring - - - - Abstract base class implementation of that - buffers events in a fixed size buffer. - - - - This base class should be used by appenders that need to buffer a - number of events before logging them. For example the - buffers events and then submits the entire contents of the buffer to - the underlying database in one go. - - - Subclasses should override the - method to deliver the buffered events. - - The BufferingAppenderSkeleton maintains a fixed size cyclic - buffer of events. The size of the buffer is set using - the property. - - A is used to inspect - each event as it arrives in the appender. If the - triggers, then the current buffer is sent immediately - (see ). Otherwise the event - is stored in the buffer. For example, an evaluator can be used to - deliver the events immediately when an ERROR event arrives. - - - The buffering appender can be configured in a mode. - By default the appender is NOT lossy. When the buffer is full all - the buffered events are sent with . - If the property is set to true then the - buffer will not be sent when it is full, and new events arriving - in the appender will overwrite the oldest event in the buffer. - In lossy mode the buffer will only be sent when the - triggers. This can be useful behavior when you need to know about - ERROR events but not about events with a lower level, configure an - evaluator that will trigger when an ERROR event arrives, the whole - buffer will be sent which gives a history of events leading up to - the ERROR event. - - - Nicko Cadell - Gert Driesen - - - - Abstract base class implementation of . - - - - This class provides the code for common functionality, such - as support for threshold filtering and support for general filters. - - - Appenders can also implement the interface. Therefore - they would require that the method - be called after the appenders properties have been configured. - - - Nicko Cadell - Gert Driesen - - - - Implement this interface for your own strategies for printing log statements. - - - - Implementors should consider extending the - class which provides a default implementation of this interface. - - - Appenders can also implement the interface. Therefore - they would require that the method - be called after the appenders properties have been configured. - - - Nicko Cadell - Gert Driesen - - - - Closes the appender and releases resources. - - - - Releases any resources allocated within the appender such as file handles, - network connections, etc. - - - It is a programming error to append to a closed appender. - - - - - - Log the logging event in Appender specific way. - - The event to log - - - This method is called to log a message into this appender. - - - - - - Gets or sets the name of this appender. - - The name of the appender. - - The name uniquely identifies the appender. - - - - - Interface for appenders that support bulk logging. - - - - This interface extends the interface to - support bulk logging of objects. Appenders - should only implement this interface if they can bulk log efficiently. - - - Nicko Cadell - - - - Log the array of logging events in Appender specific way. - - The events to log - - - This method is called to log an array of events into this appender. - - - - - - Interface used to delay activate a configured object. - - - - This allows an object to defer activation of its options until all - options have been set. This is required for components which have - related options that remain ambiguous until all are set. - - - If a component implements this interface then the method - must be called by the container after its all the configured properties have been set - and before the component can be used. - - - Nicko Cadell - - - - Activate the options that were previously set with calls to properties. - - - - This allows an object to defer activation of its options until all - options have been set. This is required for components which have - related options that remain ambiguous until all are set. - - - If a component implements this interface then this method must be called - after its properties have been set before the component can be used. - - - - - - Initial buffer size - - - - - Maximum buffer size before it is recycled - - - - - Default constructor - - - Empty default constructor - - - - - Finalizes this appender by calling the implementation's - method. - - - - If this appender has not been closed then the Finalize method - will call . - - - - - - Initialize the appender based on the options set - - - - This is part of the delayed object - activation scheme. The method must - be called on this object after the configuration properties have - been set. Until is called this - object is in an undefined state and must not be used. - - - If any of the configuration properties are modified then - must be called again. - - - - - - Closes the appender and release resources. - - - - Release any resources allocated within the appender such as file handles, - network connections, etc. - - - It is a programming error to append to a closed appender. - - - This method cannot be overridden by subclasses. This method - delegates the closing of the appender to the - method which must be overridden in the subclass. - - - - - - Performs threshold checks and invokes filters before - delegating actual logging to the subclasses specific - method. - - The event to log. - - - This method cannot be overridden by derived classes. A - derived class should override the method - which is called by this method. - - - The implementation of this method is as follows: - - - - - - Checks that the severity of the - is greater than or equal to the of this - appender. - - - - Checks that the chain accepts the - . - - - - - Calls and checks that - it returns true. - - - - - If all of the above steps succeed then the - will be passed to the abstract method. - - - - - - Performs threshold checks and invokes filters before - delegating actual logging to the subclasses specific - method. - - The array of events to log. - - - This method cannot be overridden by derived classes. A - derived class should override the method - which is called by this method. - - - The implementation of this method is as follows: - - - - - - Checks that the severity of the - is greater than or equal to the of this - appender. - - - - Checks that the chain accepts the - . - - - - - Calls and checks that - it returns true. - - - - - If all of the above steps succeed then the - will be passed to the method. - - - - - - Test if the logging event should we output by this appender - - the event to test - true if the event should be output, false if the event should be ignored - - - This method checks the logging event against the threshold level set - on this appender and also against the filters specified on this - appender. - - - The implementation of this method is as follows: - - - - - - Checks that the severity of the - is greater than or equal to the of this - appender. - - - - Checks that the chain accepts the - . - - - - - - - - - Adds a filter to the end of the filter chain. - - the filter to add to this appender - - - The Filters are organized in a linked list. - - - Setting this property causes the new filter to be pushed onto the - back of the filter chain. - - - - - - Clears the filter list for this appender. - - - - Clears the filter list for this appender. - - - - - - Checks if the message level is below this appender's threshold. - - to test against. - - - If there is no threshold set, then the return value is always true. - - - - true if the meets the - requirements of this appender. - - - - - Is called when the appender is closed. Derived classes should override - this method if resources need to be released. - - - - Releases any resources allocated within the appender such as file handles, - network connections, etc. - - - It is a programming error to append to a closed appender. - - - - - - Subclasses of should implement this method - to perform actual logging. - - The event to append. - - - A subclass must implement this method to perform - logging of the . - - This method will be called by - if all the conditions listed for that method are met. - - - To restrict the logging of events in the appender - override the method. - - - - - - Append a bulk array of logging events. - - the array of logging events - - - This base class implementation calls the - method for each element in the bulk array. - - - A sub class that can better process a bulk array of events should - override this method in addition to . - - - - - - Called before as a precondition. - - - - This method is called by - before the call to the abstract method. - - - This method can be overridden in a subclass to extend the checks - made before the event is passed to the method. - - - A subclass should ensure that they delegate this call to - this base class if it is overridden. - - - true if the call to should proceed. - - - - Renders the to a string. - - The event to render. - The event rendered as a string. - - - Helper method to render a to - a string. This appender must have a - set to render the to - a string. - - If there is exception data in the logging event and - the layout does not process the exception, this method - will append the exception text to the rendered string. - - - Where possible use the alternative version of this method - . - That method streams the rendering onto an existing Writer - which can give better performance if the caller already has - a open and ready for writing. - - - - - - Renders the to a string. - - The event to render. - The TextWriter to write the formatted event to - - - Helper method to render a to - a string. This appender must have a - set to render the to - a string. - - If there is exception data in the logging event and - the layout does not process the exception, this method - will append the exception text to the rendered string. - - - Use this method in preference to - where possible. If, however, the caller needs to render the event - to a string then does - provide an efficient mechanism for doing so. - - - - - - The layout of this appender. - - - See for more information. - - - - - The name of this appender. - - - See for more information. - - - - - The level threshold of this appender. - - - - There is no level threshold filtering by default. - - - See for more information. - - - - - - It is assumed and enforced that errorHandler is never null. - - - - It is assumed and enforced that errorHandler is never null. - - - See for more information. - - - - - - The first filter in the filter chain. - - - - Set to null initially. - - - See for more information. - - - - - - The last filter in the filter chain. - - - See for more information. - - - - - Flag indicating if this appender is closed. - - - See for more information. - - - - - The guard prevents an appender from repeatedly calling its own DoAppend method - - - - - StringWriter used to render events - - - - - Gets or sets the threshold of this appender. - - - The threshold of the appender. - - - - All log events with lower level than the threshold level are ignored - by the appender. - - - In configuration files this option is specified by setting the - value of the option to a level - string, such as "DEBUG", "INFO" and so on. - - - - - - Gets or sets the for this appender. - - The of the appender - - - The provides a default - implementation for the property. - - - - - - The filter chain. - - The head of the filter chain filter chain. - - - Returns the head Filter. The Filters are organized in a linked list - and so all Filters on this Appender are available through the result. - - - - - - Gets or sets the for this appender. - - The layout of the appender. - - - See for more information. - - - - - - - Gets or sets the name of this appender. - - The name of the appender. - - - The name uniquely identifies the appender. - - - - - - Tests if this appender requires a to be set. - - - - In the rather exceptional case, where the appender - implementation admits a layout but can also work without it, - then the appender should return true. - - - This default implementation always returns true. - - - - true if the appender requires a layout object, otherwise false. - - - - - The default buffer size. - - - The default size of the cyclic buffer used to store events. - This is set to 512 by default. - - - - - Initializes a new instance of the class. - - - - Protected default constructor to allow subclassing. - - - - - - Initializes a new instance of the class. - - the events passed through this appender must be - fixed by the time that they arrive in the derived class' SendBuffer method. - - - Protected constructor to allow subclassing. - - - The should be set if the subclass - expects the events delivered to be fixed even if the - is set to zero, i.e. when no buffering occurs. - - - - - - Flush the currently buffered events - - - - Flushes any events that have been buffered. - - - If the appender is buffering in mode then the contents - of the buffer will NOT be flushed to the appender. - - - - - - Flush the currently buffered events - - set to true to flush the buffer of lossy events - - - Flushes events that have been buffered. If is - false then events will only be flushed if this buffer is non-lossy mode. - - - If the appender is buffering in mode then the contents - of the buffer will only be flushed if is true. - In this case the contents of the buffer will be tested against the - and if triggering will be output. All other buffered - events will be discarded. - - - If is true then the buffer will always - be emptied by calling this method. - - - - - - Initialize the appender based on the options set - - - - This is part of the delayed object - activation scheme. The method must - be called on this object after the configuration properties have - been set. Until is called this - object is in an undefined state and must not be used. - - - If any of the configuration properties are modified then - must be called again. - - - - - - Close this appender instance. - - - - Close this appender instance. If this appender is marked - as not then the remaining events in - the buffer must be sent when the appender is closed. - - - - - - This method is called by the method. - - the event to log - - - Stores the in the cyclic buffer. - - - The buffer will be sent (i.e. passed to the - method) if one of the following conditions is met: - - - - The cyclic buffer is full and this appender is - marked as not lossy (see ) - - - An is set and - it is triggered for the - specified. - - - - Before the event is stored in the buffer it is fixed - (see ) to ensure that - any data referenced by the event will be valid when the buffer - is processed. - - - - - - Sends the contents of the buffer. - - The first logging event. - The buffer containing the events that need to be send. - - - The subclass must override . - - - - - - Sends the events. - - The events that need to be send. - - - The subclass must override this method to process the buffered events. - - - - - - The size of the cyclic buffer used to hold the logging events. - - - Set to by default. - - - - - The cyclic buffer used to store the logging events. - - - - - The triggering event evaluator that causes the buffer to be sent immediately. - - - The object that is used to determine if an event causes the entire - buffer to be sent immediately. This field can be null, which - indicates that event triggering is not to be done. The evaluator - can be set using the property. If this appender - has the ( property) set to - true then an must be set. - - - - - Indicates if the appender should overwrite events in the cyclic buffer - when it becomes full, or if the buffer should be flushed when the - buffer is full. - - - If this field is set to true then an must - be set. - - - - - The triggering event evaluator filters discarded events. - - - The object that is used to determine if an event that is discarded should - really be discarded or if it should be sent to the appenders. - This field can be null, which indicates that all discarded events will - be discarded. - - - - - Value indicating which fields in the event should be fixed - - - By default all fields are fixed - - - - - The events delivered to the subclass must be fixed. - - - - - Gets or sets a value that indicates whether the appender is lossy. - - - true if the appender is lossy, otherwise false. The default is false. - - - - This appender uses a buffer to store logging events before - delivering them. A triggering event causes the whole buffer - to be send to the remote sink. If the buffer overruns before - a triggering event then logging events could be lost. Set - to false to prevent logging events - from being lost. - - If is set to true then an - must be specified. - - - - - Gets or sets the size of the cyclic buffer used to hold the - logging events. - - - The size of the cyclic buffer used to hold the logging events. - - - - The option takes a positive integer - representing the maximum number of logging events to collect in - a cyclic buffer. When the is reached, - oldest events are deleted as new events are added to the - buffer. By default the size of the cyclic buffer is 512 events. - - - If the is set to a value less than - or equal to 1 then no buffering will occur. The logging event - will be delivered synchronously (depending on the - and properties). Otherwise the event will - be buffered. - - - - - - Gets or sets the that causes the - buffer to be sent immediately. - - - The that causes the buffer to be - sent immediately. - - - - The evaluator will be called for each event that is appended to this - appender. If the evaluator triggers then the current buffer will - immediately be sent (see ). - - If is set to true then an - must be specified. - - - - - Gets or sets the value of the to use. - - - The value of the to use. - - - - The evaluator will be called for each event that is discarded from this - appender. If the evaluator triggers then the current buffer will immediately - be sent (see ). - - - - - - Gets or sets a value indicating if only part of the logging event data - should be fixed. - - - true if the appender should only fix part of the logging event - data, otherwise false. The default is false. - - - - Setting this property to true will cause only part of the - event data to be fixed and serialized. This will improve performance. - - - See for more information. - - - - - - Gets or sets a the fields that will be fixed in the event - - - The event fields that will be fixed before the event is buffered - - - - The logging event needs to have certain thread specific values - captured before it can be buffered. See - for details. - - - - - - - Initializes a new instance of the class. - - - Public default constructor to initialize a new instance of this class. - - - - - Initialize the appender based on the options set - - - - This is part of the delayed object - activation scheme. The method must - be called on this object after the configuration properties have - been set. Until is called this - object is in an undefined state and must not be used. - - - If any of the configuration properties are modified then - must be called again. - - - - - - Override the parent method to close the database - - - - Closes the database command and database connection. - - - - - - Inserts the events into the database. - - The events to insert into the database. - - - Insert all the events specified in the - array into the database. - - - - - - Adds a parameter to the command. - - The parameter to add to the command. - - - Adds a parameter to the ordered list of command parameters. - - - - - - Writes the events to the database using the transaction specified. - - The transaction that the events will be executed under. - The array of events to insert into the database. - - - The transaction argument can be null if the appender has been - configured not to use transactions. See - property for more information. - - - - - - Formats the log message into database statement text. - - The event being logged. - - This method can be overridden by subclasses to provide - more control over the format of the database statement. - - - Text that can be passed to a . - - - - - Connects to the database. - - - - - Retrieves the class type of the ADO.NET provider. - - - - Gets the Type of the ADO.NET provider to use to connect to the - database. This method resolves the type specified in the - property. - - - Subclasses can override this method to return a different type - if necessary. - - - The of the ADO.NET provider - - - - Prepares the database command and initialize the parameters. - - - - - Flag to indicate if we are using a command object - - - - Set to true when the appender is to use a prepared - statement or stored procedure to insert into the database. - - - - - - The list of objects. - - - - The list of objects. - - - - - - The security context to use for privileged calls - - - - - The that will be used - to insert logging events into a database. - - - - - The database command. - - - - - Database connection string. - - - - - String type name of the type name. - - - - - The text of the command. - - - - - The command type. - - - - - Indicates whether to use transactions when writing to the database. - - - - - Indicates whether to use transactions when writing to the database. - - - - - Gets or sets the database connection string that is used to connect to - the database. - - - The database connection string used to connect to the database. - - - - The connections string is specific to the connection type. - See for more information. - - - Connection string for MS Access via ODBC: - "DSN=MS Access Database;UID=admin;PWD=;SystemDB=C:\data\System.mdw;SafeTransactions = 0;FIL=MS Access;DriverID = 25;DBQ=C:\data\train33.mdb" - - Another connection string for MS Access via ODBC: - "Driver={Microsoft Access Driver (*.mdb)};DBQ=C:\Work\cvs_root\log4net-1.2\access.mdb;UID=;PWD=;" - - Connection string for MS Access via OLE DB: - "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Work\cvs_root\log4net-1.2\access.mdb;User Id=;Password=;" - - - - - Gets or sets the type name of the connection - that should be created. - - - The type name of the connection. - - - - The type name of the ADO.NET provider to use. - - - The default is to use the OLE DB provider. - - - Use the OLE DB Provider. This is the default value. - System.Data.OleDb.OleDbConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - Use the MS SQL Server Provider. - System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - Use the ODBC Provider. - Microsoft.Data.Odbc.OdbcConnection,Microsoft.Data.Odbc,version=1.0.3300.0,publicKeyToken=b77a5c561934e089,culture=neutral - This is an optional package that you can download from - http://msdn.microsoft.com/downloads - search for ODBC .NET Data Provider. - - Use the Oracle Provider. - System.Data.OracleClient.OracleConnection, System.Data.OracleClient, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - This is an optional package that you can download from - http://msdn.microsoft.com/downloads - search for .NET Managed Provider for Oracle. - - - - - Gets or sets the command text that is used to insert logging events - into the database. - - - The command text used to insert logging events into the database. - - - - Either the text of the prepared statement or the - name of the stored procedure to execute to write into - the database. - - - The property determines if - this text is a prepared statement or a stored procedure. - - - - - - Gets or sets the command type to execute. - - - The command type to execute. - - - - This value may be either (System.Data.CommandType.Text) to specify - that the is a prepared statement to execute, - or (System.Data.CommandType.StoredProcedure) to specify that the - property is the name of a stored procedure - to execute. - - - The default value is (System.Data.CommandType.Text). - - - - - - Should transactions be used to insert logging events in the database. - - - true if transactions should be used to insert logging events in - the database, otherwise false. The default value is true. - - - - Gets or sets a value that indicates whether transactions should be used - to insert logging events in the database. - - - When set a single transaction will be used to insert the buffered events - into the database. Otherwise each event will be inserted without using - an explicit transaction. - - - - - - Gets or sets the used to call the NetSend method. - - - The used to call the NetSend method. - - - - Unless a specified here for this appender - the is queried for the - security context to use. The default behavior is to use the security context - of the current thread. - - - - - - Should this appender try to reconnect to the database on error. - - - true if the appender should try to reconnect to the database after an - error has occurred, otherwise false. The default value is false, - i.e. not to try to reconnect. - - - - The default behaviour is for the appender not to try to reconnect to the - database if an error occurs. Subsequent logging events are discarded. - - - To force the appender to attempt to reconnect to the database set this - property to true. - - - When the appender attempts to connect to the database there may be a - delay of up to the connection timeout specified in the connection string. - This delay will block the calling application's thread. - Until the connection can be reestablished this potential delay may occur multiple times. - - - - - - Gets or sets the underlying . - - - The underlying . - - - creates a to insert - logging events into a database. Classes deriving from - can use this property to get or set this . Use the - underlying returned from if - you require access beyond that which provides. - - - - - Parameter type used by the . - - - - This class provides the basic database parameter properties - as defined by the interface. - - This type can be subclassed to provide database specific - functionality. The two methods that are called externally are - and . - - - - - - Initializes a new instance of the class. - - - Default constructor for the AdoNetAppenderParameter class. - - - - - Prepare the specified database command object. - - The command to prepare. - - - Prepares the database command object by adding - this parameter to its collection of parameters. - - - - - - Renders the logging event and set the parameter value in the command. - - The command containing the parameter. - The event to be rendered. - - - Renders the logging event using this parameters layout - object. Sets the value of the parameter on the command object. - - - - - - The name of this parameter. - - - - - The database type for this parameter. - - - - - Flag to infer type rather than use the DbType - - - - - The precision for this parameter. - - - - - The scale for this parameter. - - - - - The size for this parameter. - - - - - The to use to render the - logging event into an object for this parameter. - - - - - Gets or sets the name of this parameter. - - - The name of this parameter. - - - - The name of this parameter. The parameter name - must match up to a named parameter to the SQL stored procedure - or prepared statement. - - - - - - Gets or sets the database type for this parameter. - - - The database type for this parameter. - - - - The database type for this parameter. This property should - be set to the database type from the - enumeration. See . - - - This property is optional. If not specified the ADO.NET provider - will attempt to infer the type from the value. - - - - - - - Gets or sets the precision for this parameter. - - - The precision for this parameter. - - - - The maximum number of digits used to represent the Value. - - - This property is optional. If not specified the ADO.NET provider - will attempt to infer the precision from the value. - - - - - - - Gets or sets the scale for this parameter. - - - The scale for this parameter. - - - - The number of decimal places to which Value is resolved. - - - This property is optional. If not specified the ADO.NET provider - will attempt to infer the scale from the value. - - - - - - - Gets or sets the size for this parameter. - - - The size for this parameter. - - - - The maximum size, in bytes, of the data within the column. - - - This property is optional. If not specified the ADO.NET provider - will attempt to infer the size from the value. - - - - - - - Gets or sets the to use to - render the logging event into an object for this - parameter. - - - The used to render the - logging event into an object for this parameter. - - - - The that renders the value for this - parameter. - - - The can be used to adapt - any into a - for use in the property. - - - - - - Appends logging events to the terminal using ANSI color escape sequences. - - - - AnsiColorTerminalAppender appends log events to the standard output stream - or the error output stream using a layout specified by the - user. It also allows the color of a specific level of message to be set. - - - This appender expects the terminal to understand the VT100 control set - in order to interpret the color codes. If the terminal or console does not - understand the control codes the behavior is not defined. - - - By default, all output is written to the console's standard output stream. - The property can be set to direct the output to the - error stream. - - - NOTE: This appender writes each message to the System.Console.Out or - System.Console.Error that is set at the time the event is appended. - Therefore it is possible to programmatically redirect the output of this appender - (for example NUnit does this to capture program output). While this is the desired - behavior of this appender it may have security implications in your application. - - - When configuring the ANSI colored terminal appender, a mapping should be - specified to map a logging level to a color. For example: - - - - - - - - - - - - - - - The Level is the standard log4net logging level and ForeColor and BackColor can be any - of the following values: - - Blue - Green - Red - White - Yellow - Purple - Cyan - - These color values cannot be combined together to make new colors. - - - The attributes can be any combination of the following: - - Brightforeground is brighter - Dimforeground is dimmer - Underscoremessage is underlined - Blinkforeground is blinking (does not work on all terminals) - Reverseforeground and background are reversed - Hiddenoutput is hidden - Strikethroughmessage has a line through it - - While any of these attributes may be combined together not all combinations - work well together, for example setting both Bright and Dim attributes makes - no sense. - - - Patrick Wagstrom - Nicko Cadell - - - - The to use when writing to the Console - standard output stream. - - - - The to use when writing to the Console - standard output stream. - - - - - - The to use when writing to the Console - standard error output stream. - - - - The to use when writing to the Console - standard error output stream. - - - - - - Ansi code to reset terminal - - - - - Initializes a new instance of the class. - - - The instance of the class is set up to write - to the standard output stream. - - - - - Add a mapping of level to color - - The mapping to add - - - Add a mapping to this appender. - Each mapping defines the foreground and background colours - for a level. - - - - - - This method is called by the method. - - The event to log. - - - Writes the event to the console. - - - The format of the output will depend on the appender's layout. - - - - - - Initialize the options for this appender - - - - Initialize the level to color mappings set on this appender. - - - - - - Flag to write output to the error stream rather than the standard output stream - - - - - Mapping from level object to color value - - - - - Target is the value of the console output stream. - - - Target is the value of the console output stream. - This is either "Console.Out" or "Console.Error". - - - - Target is the value of the console output stream. - This is either "Console.Out" or "Console.Error". - - - - - - This appender requires a to be set. - - true - - - This appender requires a to be set. - - - - - - The enum of possible display attributes - - - - The following flags can be combined together to - form the ANSI color attributes. - - - - - - - text is bright - - - - - text is dim - - - - - text is underlined - - - - - text is blinking - - - Not all terminals support this attribute - - - - - text and background colors are reversed - - - - - text is hidden - - - - - text is displayed with a strikethrough - - - - - The enum of possible foreground or background color values for - use with the color mapping method - - - - The output can be in one for the following ANSI colors. - - - - - - - color is black - - - - - color is red - - - - - color is green - - - - - color is yellow - - - - - color is blue - - - - - color is magenta - - - - - color is cyan - - - - - color is white - - - - - A class to act as a mapping between the level that a logging call is made at and - the color it should be displayed as. - - - - Defines the mapping between a level and the color it should be displayed in. - - - - - - An entry in the - - - - This is an abstract base class for types that are stored in the - object. - - - Nicko Cadell - - - - Default protected constructor - - - - Default protected constructor - - - - - - Initialize any options defined on this entry - - - - Should be overridden by any classes that need to initialise based on their options - - - - - - The level that is the key for this mapping - - - The that is the key for this mapping - - - - Get or set the that is the key for this - mapping subclass. - - - - - - Initialize the options for the object - - - - Combine the and together - and append the attributes. - - - - - - The mapped foreground color for the specified level - - - - Required property. - The mapped foreground color for the specified level - - - - - - The mapped background color for the specified level - - - - Required property. - The mapped background color for the specified level - - - - - - The color attributes for the specified level - - - - Required property. - The color attributes for the specified level - - - - - - The combined , and - suitable for setting the ansi terminal color. - - - - - A strongly-typed collection of objects. - - Nicko Cadell - - - - Creates a read-only wrapper for a AppenderCollection instance. - - list to create a readonly wrapper arround - - An AppenderCollection wrapper that is read-only. - - - - - An empty readonly static AppenderCollection - - - - - Initializes a new instance of the AppenderCollection class - that is empty and has the default initial capacity. - - - - - Initializes a new instance of the AppenderCollection class - that has the specified initial capacity. - - - The number of elements that the new AppenderCollection is initially capable of storing. - - - - - Initializes a new instance of the AppenderCollection class - that contains elements copied from the specified AppenderCollection. - - The AppenderCollection whose elements are copied to the new collection. - - - - Initializes a new instance of the AppenderCollection class - that contains elements copied from the specified array. - - The array whose elements are copied to the new list. - - - - Initializes a new instance of the AppenderCollection class - that contains elements copied from the specified collection. - - The collection whose elements are copied to the new list. - - - - Allow subclasses to avoid our default constructors - - - - - - - Copies the entire AppenderCollection to a one-dimensional - array. - - The one-dimensional array to copy to. - - - - Copies the entire AppenderCollection to a one-dimensional - array, starting at the specified index of the target array. - - The one-dimensional array to copy to. - The zero-based index in at which copying begins. - - - - Adds a to the end of the AppenderCollection. - - The to be added to the end of the AppenderCollection. - The index at which the value has been added. - - - - Removes all elements from the AppenderCollection. - - - - - Creates a shallow copy of the . - - A new with a shallow copy of the collection data. - - - - Determines whether a given is in the AppenderCollection. - - The to check for. - true if is found in the AppenderCollection; otherwise, false. - - - - Returns the zero-based index of the first occurrence of a - in the AppenderCollection. - - The to locate in the AppenderCollection. - - The zero-based index of the first occurrence of - in the entire AppenderCollection, if found; otherwise, -1. - - - - - Inserts an element into the AppenderCollection at the specified index. - - The zero-based index at which should be inserted. - The to insert. - - is less than zero - -or- - is equal to or greater than . - - - - - Removes the first occurrence of a specific from the AppenderCollection. - - The to remove from the AppenderCollection. - - The specified was not found in the AppenderCollection. - - - - - Removes the element at the specified index of the AppenderCollection. - - The zero-based index of the element to remove. - - is less than zero - -or- - is equal to or greater than . - - - - - Returns an enumerator that can iterate through the AppenderCollection. - - An for the entire AppenderCollection. - - - - Adds the elements of another AppenderCollection to the current AppenderCollection. - - The AppenderCollection whose elements should be added to the end of the current AppenderCollection. - The new of the AppenderCollection. - - - - Adds the elements of a array to the current AppenderCollection. - - The array whose elements should be added to the end of the AppenderCollection. - The new of the AppenderCollection. - - - - Adds the elements of a collection to the current AppenderCollection. - - The collection whose elements should be added to the end of the AppenderCollection. - The new of the AppenderCollection. - - - - Sets the capacity to the actual number of elements. - - - - - Return the collection elements as an array - - the array - - - - is less than zero - -or- - is equal to or greater than . - - - - - is less than zero - -or- - is equal to or greater than . - - - - - Gets the number of elements actually contained in the AppenderCollection. - - - - - Gets a value indicating whether access to the collection is synchronized (thread-safe). - - true if access to the ICollection is synchronized (thread-safe); otherwise, false. - - - - Gets an object that can be used to synchronize access to the collection. - - - - - Gets or sets the at the specified index. - - The zero-based index of the element to get or set. - - is less than zero - -or- - is equal to or greater than . - - - - - Gets a value indicating whether the collection has a fixed size. - - true if the collection has a fixed size; otherwise, false. The default is false - - - - Gets a value indicating whether the IList is read-only. - - true if the collection is read-only; otherwise, false. The default is false - - - - Gets or sets the number of elements the AppenderCollection can contain. - - - - - Supports type-safe iteration over a . - - - - - - Advances the enumerator to the next element in the collection. - - - true if the enumerator was successfully advanced to the next element; - false if the enumerator has passed the end of the collection. - - - The collection was modified after the enumerator was created. - - - - - Sets the enumerator to its initial position, before the first element in the collection. - - - - - Gets the current element in the collection. - - - - - Type visible only to our subclasses - Used to access protected constructor - - - - - - A value - - - - - Supports simple iteration over a . - - - - - - Initializes a new instance of the Enumerator class. - - - - - - Advances the enumerator to the next element in the collection. - - - true if the enumerator was successfully advanced to the next element; - false if the enumerator has passed the end of the collection. - - - The collection was modified after the enumerator was created. - - - - - Sets the enumerator to its initial position, before the first element in the collection. - - - - - Gets the current element in the collection. - - - - - - - - - Appends log events to the ASP.NET system. - - - - - Diagnostic information and tracing messages that you specify are appended to the output - of the page that is sent to the requesting browser. Optionally, you can view this information - from a separate trace viewer (Trace.axd) that displays trace information for every page in a - given application. - - - Trace statements are processed and displayed only when tracing is enabled. You can control - whether tracing is displayed to a page, to the trace viewer, or both. - - - The logging event is passed to the or - method depending on the level of the logging event. - - - Nicko Cadell - Gert Driesen - - - - Initializes a new instance of the class. - - - - Default constructor. - - - - - - Write the logging event to the ASP.NET trace - - the event to log - - - Write the logging event to the ASP.NET trace - HttpContext.Current.Trace - (). - - - - - - This appender requires a to be set. - - true - - - This appender requires a to be set. - - - - - - Buffers events and then forwards them to attached appenders. - - - - The events are buffered in this appender until conditions are - met to allow the appender to deliver the events to the attached - appenders. See for the - conditions that cause the buffer to be sent. - - The forwarding appender can be used to specify different - thresholds and filters for the same appender at different locations - within the hierarchy. - - - Nicko Cadell - Gert Driesen - - - - Interface for attaching appenders to objects. - - - - Interface for attaching, removing and retrieving appenders. - - - Nicko Cadell - Gert Driesen - - - - Attaches an appender. - - The appender to add. - - - Add the specified appender. The implementation may - choose to allow or deny duplicate appenders. - - - - - - Gets an attached appender with the specified name. - - The name of the appender to get. - - The appender with the name specified, or null if no appender with the - specified name is found. - - - - Returns an attached appender with the specified. - If no appender with the specified name is found null will be - returned. - - - - - - Removes all attached appenders. - - - - Removes and closes all attached appenders - - - - - - Removes the specified appender from the list of attached appenders. - - The appender to remove. - The appender removed from the list - - - The appender removed is not closed. - If you are discarding the appender you must call - on the appender removed. - - - - - - Removes the appender with the specified name from the list of appenders. - - The name of the appender to remove. - The appender removed from the list - - - The appender removed is not closed. - If you are discarding the appender you must call - on the appender removed. - - - - - - Gets all attached appenders. - - - A collection of attached appenders. - - - - Gets a collection of attached appenders. - If there are no attached appenders the - implementation should return an empty - collection rather than null. - - - - - - Initializes a new instance of the class. - - - - Default constructor. - - - - - - Closes the appender and releases resources. - - - - Releases any resources allocated within the appender such as file handles, - network connections, etc. - - - It is a programming error to append to a closed appender. - - - - - - Send the events. - - The events that need to be send. - - - Forwards the events to the attached appenders. - - - - - - Adds an to the list of appenders of this - instance. - - The to add to this appender. - - - If the specified is already in the list of - appenders, then it won't be added again. - - - - - - Looks for the appender with the specified name. - - The name of the appender to lookup. - - The appender with the specified name, or null. - - - - Get the named appender attached to this buffering appender. - - - - - - Removes all previously added appenders from this appender. - - - - This is useful when re-reading configuration information. - - - - - - Removes the specified appender from the list of appenders. - - The appender to remove. - The appender removed from the list - - The appender removed is not closed. - If you are discarding the appender you must call - on the appender removed. - - - - - Removes the appender with the specified name from the list of appenders. - - The name of the appender to remove. - The appender removed from the list - - The appender removed is not closed. - If you are discarding the appender you must call - on the appender removed. - - - - - Implementation of the interface - - - - - Gets the appenders contained in this appender as an - . - - - If no appenders can be found, then an - is returned. - - - A collection of the appenders in this appender. - - - - - Appends logging events to the console. - - - - ColoredConsoleAppender appends log events to the standard output stream - or the error output stream using a layout specified by the - user. It also allows the color of a specific type of message to be set. - - - By default, all output is written to the console's standard output stream. - The property can be set to direct the output to the - error stream. - - - NOTE: This appender writes directly to the application's attached console - not to the System.Console.Out or System.Console.Error TextWriter. - The System.Console.Out and System.Console.Error streams can be - programmatically redirected (for example NUnit does this to capture program output). - This appender will ignore these redirections because it needs to use Win32 - API calls to colorize the output. To respect these redirections the - must be used. - - - When configuring the colored console appender, mapping should be - specified to map a logging level to a color. For example: - - - - - - - - - - - - - - The Level is the standard log4net logging level and ForeColor and BackColor can be any - combination of the following values: - - Blue - Green - Red - White - Yellow - Purple - Cyan - HighIntensity - - - - Rick Hobbs - Nicko Cadell - - - - The to use when writing to the Console - standard output stream. - - - - The to use when writing to the Console - standard output stream. - - - - - - The to use when writing to the Console - standard error output stream. - - - - The to use when writing to the Console - standard error output stream. - - - - - - Initializes a new instance of the class. - - - The instance of the class is set up to write - to the standard output stream. - - - - - Initializes a new instance of the class - with the specified layout. - - the layout to use for this appender - - The instance of the class is set up to write - to the standard output stream. - - - - - Initializes a new instance of the class - with the specified layout. - - the layout to use for this appender - flag set to true to write to the console error stream - - When is set to true, output is written to - the standard error output stream. Otherwise, output is written to the standard - output stream. - - - - - Add a mapping of level to color - done by the config file - - The mapping to add - - - Add a mapping to this appender. - Each mapping defines the foreground and background colors - for a level. - - - - - - This method is called by the method. - - The event to log. - - - Writes the event to the console. - - - The format of the output will depend on the appender's layout. - - - - - - Initialize the options for this appender - - - - Initialize the level to color mappings set on this appender. - - - - - - Flag to write output to the error stream rather than the standard output stream - - - - - Mapping from level object to color value - - - - - The console output stream writer to write to - - - - This writer is not thread safe. - - - - - - Target is the value of the console output stream. - This is either "Console.Out" or "Console.Error". - - - Target is the value of the console output stream. - This is either "Console.Out" or "Console.Error". - - - - Target is the value of the console output stream. - This is either "Console.Out" or "Console.Error". - - - - - - This appender requires a to be set. - - true - - - This appender requires a to be set. - - - - - - The enum of possible color values for use with the color mapping method - - - - The following flags can be combined together to - form the colors. - - - - - - - color is blue - - - - - color is green - - - - - color is red - - - - - color is white - - - - - color is yellow - - - - - color is purple - - - - - color is cyan - - - - - color is intensified - - - - - A class to act as a mapping between the level that a logging call is made at and - the color it should be displayed as. - - - - Defines the mapping between a level and the color it should be displayed in. - - - - - - Initialize the options for the object - - - - Combine the and together. - - - - - - The mapped foreground color for the specified level - - - - Required property. - The mapped foreground color for the specified level. - - - - - - The mapped background color for the specified level - - - - Required property. - The mapped background color for the specified level. - - - - - - The combined and suitable for - setting the console color. - - - - - Appends logging events to the console. - - - - ConsoleAppender appends log events to the standard output stream - or the error output stream using a layout specified by the - user. - - - By default, all output is written to the console's standard output stream. - The property can be set to direct the output to the - error stream. - - - NOTE: This appender writes each message to the System.Console.Out or - System.Console.Error that is set at the time the event is appended. - Therefore it is possible to programmatically redirect the output of this appender - (for example NUnit does this to capture program output). While this is the desired - behavior of this appender it may have security implications in your application. - - - Nicko Cadell - Gert Driesen - - - - The to use when writing to the Console - standard output stream. - - - - The to use when writing to the Console - standard output stream. - - - - - - The to use when writing to the Console - standard error output stream. - - - - The to use when writing to the Console - standard error output stream. - - - - - - Initializes a new instance of the class. - - - The instance of the class is set up to write - to the standard output stream. - - - - - Initializes a new instance of the class - with the specified layout. - - the layout to use for this appender - - The instance of the class is set up to write - to the standard output stream. - - - - - Initializes a new instance of the class - with the specified layout. - - the layout to use for this appender - flag set to true to write to the console error stream - - When is set to true, output is written to - the standard error output stream. Otherwise, output is written to the standard - output stream. - - - - - This method is called by the method. - - The event to log. - - - Writes the event to the console. - - - The format of the output will depend on the appender's layout. - - - - - - Target is the value of the console output stream. - This is either "Console.Out" or "Console.Error". - - - Target is the value of the console output stream. - This is either "Console.Out" or "Console.Error". - - - - Target is the value of the console output stream. - This is either "Console.Out" or "Console.Error". - - - - - - This appender requires a to be set. - - true - - - This appender requires a to be set. - - - - - - Appends log events to the system. - - - - The application configuration file can be used to control what listeners - are actually used. See the MSDN documentation for the - class for details on configuring the - debug system. - - - Events are written using the - method. The event's logger name is passed as the value for the category name to the Write method. - - - Nicko Cadell - - - - Initializes a new instance of the . - - - - Default constructor. - - - - - - Initializes a new instance of the - with a specified layout. - - The layout to use with this appender. - - - Obsolete constructor. - - - - - - Writes the logging event to the system. - - The event to log. - - - Writes the logging event to the system. - If is true then the - is called. - - - - - - Immediate flush means that the underlying writer or output stream - will be flushed at the end of each append operation. - - - - Immediate flush is slower but ensures that each append request is - actually written. If is set to - false, then there is a good chance that the last few - logs events are not actually written to persistent media if and - when the application crashes. - - - The default value is true. - - - - - Gets or sets a value that indicates whether the appender will - flush at the end of each write. - - - The default behavior is to flush at the end of each - write. If the option is set tofalse, then the underlying - stream can defer writing to physical medium to a later time. - - - Avoiding the flush operation at the end of each append results - in a performance gain of 10 to 20 percent. However, there is safety - trade-off involved in skipping flushing. Indeed, when flushing is - skipped, then it is likely that the last few log events will not - be recorded on disk when the application exits. This is a high - price to pay even for a 20% performance gain. - - - - - - This appender requires a to be set. - - true - - - This appender requires a to be set. - - - - - - Writes events to the system event log. - - - - The EventID of the event log entry can be - set using the EventLogEventID property () - on the . - - - There is a limit of 32K characters for an event log message - - - When configuring the EventLogAppender a mapping can be - specified to map a logging level to an event log entry type. For example: - - - <mapping> - <level value="ERROR" /> - <eventLogEntryType value="Error" /> - </mapping> - <mapping> - <level value="DEBUG" /> - <eventLogEntryType value="Information" /> - </mapping> - - - The Level is the standard log4net logging level and eventLogEntryType can be any value - from the enum, i.e.: - - Erroran error event - Warninga warning event - Informationan informational event - - - - Aspi Havewala - Douglas de la Torre - Nicko Cadell - Gert Driesen - Thomas Voss - - - - Initializes a new instance of the class. - - - - Default constructor. - - - - - - Initializes a new instance of the class - with the specified . - - The to use with this appender. - - - Obsolete constructor. - - - - - - Add a mapping of level to - done by the config file - - The mapping to add - - - Add a mapping to this appender. - Each mapping defines the event log entry type for a level. - - - - - - Initialize the appender based on the options set - - - - This is part of the delayed object - activation scheme. The method must - be called on this object after the configuration properties have - been set. Until is called this - object is in an undefined state and must not be used. - - - If any of the configuration properties are modified then - must be called again. - - - - - - Create an event log source - - - Uses different API calls under NET_2_0 - - - - - This method is called by the - method. - - the event to log - - Writes the event to the system event log using the - . - - If the event has an EventID property (see ) - set then this integer will be used as the event log event id. - - - There is a limit of 32K characters for an event log message - - - - - - Get the equivalent for a - - the Level to convert to an EventLogEntryType - The equivalent for a - - Because there are fewer applicable - values to use in logging levels than there are in the - this is a one way mapping. There is - a loss of information during the conversion. - - - - - The log name is the section in the event logs where the messages - are stored. - - - - - Name of the application to use when logging. This appears in the - application column of the event log named by . - - - - - The name of the machine which holds the event log. This is - currently only allowed to be '.' i.e. the current machine. - - - - - Mapping from level object to EventLogEntryType - - - - - The security context to use for privileged calls - - - - - The name of the log where messages will be stored. - - - The string name of the log where messages will be stored. - - - This is the name of the log as it appears in the Event Viewer - tree. The default value is to log into the Application - log, this is where most applications write their events. However - if you need a separate log for your application (or applications) - then you should set the appropriately. - This should not be used to distinguish your event log messages - from those of other applications, the - property should be used to distinguish events. This property should be - used to group together events into a single log. - - - - - - Property used to set the Application name. This appears in the - event logs when logging. - - - The string used to distinguish events from different sources. - - - Sets the event log source property. - - - - - This property is used to return the name of the computer to use - when accessing the event logs. Currently, this is the current - computer, denoted by a dot "." - - - The string name of the machine holding the event log that - will be logged into. - - - This property cannot be changed. It is currently set to '.' - i.e. the local machine. This may be changed in future. - - - - - Gets or sets the used to write to the EventLog. - - - The used to write to the EventLog. - - - - The system security context used to write to the EventLog. - - - Unless a specified here for this appender - the is queried for the - security context to use. The default behavior is to use the security context - of the current thread. - - - - - - This appender requires a to be set. - - true - - - This appender requires a to be set. - - - - - - A class to act as a mapping between the level that a logging call is made at and - the color it should be displayed as. - - - - Defines the mapping between a level and its event log entry type. - - - - - - The for this entry - - - - Required property. - The for this entry - - - - - - Appends logging events to a file. - - - - Logging events are sent to the file specified by - the property. - - - The file can be opened in either append or overwrite mode - by specifying the property. - If the file path is relative it is taken as relative from - the application base directory. The file encoding can be - specified by setting the property. - - - The layout's and - values will be written each time the file is opened and closed - respectively. If the property is - then the file may contain multiple copies of the header and footer. - - - This appender will first try to open the file for writing when - is called. This will typically be during configuration. - If the file cannot be opened for writing the appender will attempt - to open the file again each time a message is logged to the appender. - If the file cannot be opened for writing when a message is logged then - the message will be discarded by this appender. - - - The supports pluggable file locking models via - the property. - The default behavior, implemented by - is to obtain an exclusive write lock on the file until this appender is closed. - The alternative model, , only holds a - write lock while the appender is writing a logging event. - - - Nicko Cadell - Gert Driesen - Rodrigo B. de Oliveira - Douglas de la Torre - Niall Daley - - - - Sends logging events to a . - - - - An Appender that writes to a . - - - This appender may be used stand alone if initialized with an appropriate - writer, however it is typically used as a base class for an appender that - can open a to write to. - - - Nicko Cadell - Gert Driesen - Douglas de la Torre - - - - Initializes a new instance of the class. - - - - Default constructor. - - - - - - Initializes a new instance of the class and - sets the output destination to a new initialized - with the specified . - - The layout to use with this appender. - The to output to. - - - Obsolete constructor. - - - - - - Initializes a new instance of the class and sets - the output destination to the specified . - - The layout to use with this appender - The to output to - - The must have been previously opened. - - - - Obsolete constructor. - - - - - - This method determines if there is a sense in attempting to append. - - - - This method checked if an output target has been set and if a - layout has been set. - - - false if any of the preconditions fail. - - - - This method is called by the - method. - - The event to log. - - - Writes a log statement to the output stream if the output stream exists - and is writable. - - - The format of the output will depend on the appender's layout. - - - - - - This method is called by the - method. - - The array of events to log. - - - This method writes all the bulk logged events to the output writer - before flushing the stream. - - - - - - Close this appender instance. The underlying stream or writer is also closed. - - - Closed appenders cannot be reused. - - - - - Writes the footer and closes the underlying . - - - - Writes the footer and closes the underlying . - - - - - - Closes the underlying . - - - - Closes the underlying . - - - - - - Clears internal references to the underlying - and other variables. - - - - Subclasses can override this method for an alternate closing behavior. - - - - - - Writes a footer as produced by the embedded layout's property. - - - - Writes a footer as produced by the embedded layout's property. - - - - - - Writes a header produced by the embedded layout's property. - - - - Writes a header produced by the embedded layout's property. - - - - - - Called to allow a subclass to lazily initialize the writer - - - - This method is called when an event is logged and the or - have not been set. This allows a subclass to - attempt to initialize the writer multiple times. - - - - - - This is the where logging events - will be written to. - - - - - Immediate flush means that the underlying - or output stream will be flushed at the end of each append operation. - - - - Immediate flush is slower but ensures that each append request is - actually written. If is set to - false, then there is a good chance that the last few - logging events are not actually persisted if and when the application - crashes. - - - The default value is true. - - - - - - Gets or set whether the appender will flush at the end - of each append operation. - - - - The default behavior is to flush at the end of each - append operation. - - - If this option is set to false, then the underlying - stream can defer persisting the logging event to a later - time. - - - - Avoiding the flush operation at the end of each append results in - a performance gain of 10 to 20 percent. However, there is safety - trade-off involved in skipping flushing. Indeed, when flushing is - skipped, then it is likely that the last few log events will not - be recorded on disk when the application exits. This is a high - price to pay even for a 20% performance gain. - - - - - Sets the where the log output will go. - - - - The specified must be open and writable. - - - The will be closed when the appender - instance is closed. - - - Note: Logging to an unopened will fail. - - - - - - Gets or set the and the underlying - , if any, for this appender. - - - The for this appender. - - - - - This appender requires a to be set. - - true - - - This appender requires a to be set. - - - - - - Gets or sets the where logging events - will be written to. - - - The where logging events are written. - - - - This is the where logging events - will be written to. - - - - - - Default constructor - - - - Default constructor - - - - - - Construct a new appender using the layout, file and append mode. - - the layout to use with this appender - the full path to the file to write to - flag to indicate if the file should be appended to - - - Obsolete constructor. - - - - - - Construct a new appender using the layout and file specified. - The file will be appended to. - - the layout to use with this appender - the full path to the file to write to - - - Obsolete constructor. - - - - - - Activate the options on the file appender. - - - - This is part of the delayed object - activation scheme. The method must - be called on this object after the configuration properties have - been set. Until is called this - object is in an undefined state and must not be used. - - - If any of the configuration properties are modified then - must be called again. - - - This will cause the file to be opened. - - - - - - Closes any previously opened file and calls the parent's . - - - - Resets the filename and the file stream. - - - - - - Called to initialize the file writer - - - - Will be called for each logged message until the file is - successfully opened. - - - - - - This method is called by the - method. - - The event to log. - - - Writes a log statement to the output stream if the output stream exists - and is writable. - - - The format of the output will depend on the appender's layout. - - - - - - This method is called by the - method. - - The array of events to log. - - - Acquires the output file locks once before writing all the events to - the stream. - - - - - - Writes a footer as produced by the embedded layout's property. - - - - Writes a footer as produced by the embedded layout's property. - - - - - - Writes a header produced by the embedded layout's property. - - - - Writes a header produced by the embedded layout's property. - - - - - - Closes the underlying . - - - - Closes the underlying . - - - - - - Closes the previously opened file. - - - - Writes the to the file and then - closes the file. - - - - - - Sets and opens the file where the log output will go. The specified file must be writable. - - The path to the log file. Must be a fully qualified path. - If true will append to fileName. Otherwise will truncate fileName - - - Calls but guarantees not to throw an exception. - Errors are passed to the . - - - - - - Sets and opens the file where the log output will go. The specified file must be writable. - - The path to the log file. Must be a fully qualified path. - If true will append to fileName. Otherwise will truncate fileName - - - If there was already an opened file, then the previous file - is closed first. - - - This method will ensure that the directory structure - for the specified exists. - - - - - - Sets the quiet writer used for file output - - the file stream that has been opened for writing - - - This implementation of creates a - over the and passes it to the - method. - - - This method can be overridden by sub classes that want to wrap the - in some way, for example to encrypt the output - data using a System.Security.Cryptography.CryptoStream. - - - - - - Sets the quiet writer being used. - - the writer over the file stream that has been opened for writing - - - This method can be overridden by sub classes that want to - wrap the in some way. - - - - - - Convert a path into a fully qualified path. - - The path to convert. - The fully qualified path. - - - Converts the path specified to a fully - qualified path. If the path is relative it is - taken as relative from the application base - directory. - - - - - - Flag to indicate if we should append to the file - or overwrite the file. The default is to append. - - - - - The name of the log file. - - - - - The encoding to use for the file stream. - - - - - The security context to use for privileged calls - - - - - The stream to log to. Has added locking semantics - - - - - The locking model to use - - - - - Gets or sets the path to the file that logging will be written to. - - - The path to the file that logging will be written to. - - - - If the path is relative it is taken as relative from - the application base directory. - - - - - - Gets or sets a flag that indicates whether the file should be - appended to or overwritten. - - - Indicates whether the file should be appended to or overwritten. - - - - If the value is set to false then the file will be overwritten, if - it is set to true then the file will be appended to. - - The default value is true. - - - - - Gets or sets used to write to the file. - - - The used to write to the file. - - - - The default encoding set is - which is the encoding for the system's current ANSI code page. - - - - - - Gets or sets the used to write to the file. - - - The used to write to the file. - - - - Unless a specified here for this appender - the is queried for the - security context to use. The default behavior is to use the security context - of the current thread. - - - - - - Gets or sets the used to handle locking of the file. - - - The used to lock the file. - - - - Gets or sets the used to handle locking of the file. - - - There are two built in locking models, and . - The former locks the file from the start of logging to the end and the - later lock only for the minimal amount of time when logging each message. - - - The default locking model is the . - - - - - - Write only that uses the - to manage access to an underlying resource. - - - - - True asynchronous writes are not supported, the implementation forces a synchronous write. - - - - - Exception base type for log4net. - - - - This type extends . It - does not add any new functionality but does differentiate the - type of exception being thrown. - - - Nicko Cadell - Gert Driesen - - - - Constructor - - - - Initializes a new instance of the class. - - - - - - Constructor - - A message to include with the exception. - - - Initializes a new instance of the class with - the specified message. - - - - - - Constructor - - A message to include with the exception. - A nested exception to include. - - - Initializes a new instance of the class - with the specified message and inner exception. - - - - - - Serialization constructor - - The that holds the serialized object data about the exception being thrown. - The that contains contextual information about the source or destination. - - - Initializes a new instance of the class - with serialized data. - - - - - - Locking model base class - - - - Base class for the locking models available to the derived loggers. - - - - - - Open the output file - - The filename to use - Whether to append to the file, or overwrite - The encoding to use - - - Open the file specified and prepare for logging. - No writes will be made until is called. - Must be called before any calls to , - and . - - - - - - Close the file - - - - Close the file. No further writes will be made. - - - - - - Acquire the lock on the file - - A stream that is ready to be written to. - - - Acquire the lock on the file in preparation for writing to it. - Return a stream pointing to the file. - must be called to release the lock on the output file. - - - - - - Release the lock on the file - - - - Release the lock on the file. No further writes will be made to the - stream until is called again. - - - - - - Gets or sets the for this LockingModel - - - The for this LockingModel - - - - The file appender this locking model is attached to and working on - behalf of. - - - The file appender is used to locate the security context and the error handler to use. - - - The value of this property will be set before is - called. - - - - - - Hold an exclusive lock on the output file - - - - Open the file once for writing and hold it open until is called. - Maintains an exclusive lock on the file during this time. - - - - - - Open the file specified and prepare for logging. - - The filename to use - Whether to append to the file, or overwrite - The encoding to use - - - Open the file specified and prepare for logging. - No writes will be made until is called. - Must be called before any calls to , - and . - - - - - - Close the file - - - - Close the file. No further writes will be made. - - - - - - Acquire the lock on the file - - A stream that is ready to be written to. - - - Does nothing. The lock is already taken - - - - - - Release the lock on the file - - - - Does nothing. The lock will be released when the file is closed. - - - - - - Acquires the file lock for each write - - - - Opens the file once for each / cycle, - thus holding the lock for the minimal amount of time. This method of locking - is considerably slower than but allows - other processes to move/delete the log file whilst logging continues. - - - - - - Prepares to open the file when the first message is logged. - - The filename to use - Whether to append to the file, or overwrite - The encoding to use - - - Open the file specified and prepare for logging. - No writes will be made until is called. - Must be called before any calls to , - and . - - - - - - Close the file - - - - Close the file. No further writes will be made. - - - - - - Acquire the lock on the file - - A stream that is ready to be written to. - - - Acquire the lock on the file in preparation for writing to it. - Return a stream pointing to the file. - must be called to release the lock on the output file. - - - - - - Release the lock on the file - - - - Release the lock on the file. No further writes will be made to the - stream until is called again. - - - - - - This appender forwards logging events to attached appenders. - - - - The forwarding appender can be used to specify different thresholds - and filters for the same appender at different locations within the hierarchy. - - - Nicko Cadell - Gert Driesen - - - - Initializes a new instance of the class. - - - - Default constructor. - - - - - - Closes the appender and releases resources. - - - - Releases any resources allocated within the appender such as file handles, - network connections, etc. - - - It is a programming error to append to a closed appender. - - - - - - Forward the logging event to the attached appenders - - The event to log. - - - Delivers the logging event to all the attached appenders. - - - - - - Forward the logging events to the attached appenders - - The array of events to log. - - - Delivers the logging events to all the attached appenders. - - - - - - Adds an to the list of appenders of this - instance. - - The to add to this appender. - - - If the specified is already in the list of - appenders, then it won't be added again. - - - - - - Looks for the appender with the specified name. - - The name of the appender to lookup. - - The appender with the specified name, or null. - - - - Get the named appender attached to this appender. - - - - - - Removes all previously added appenders from this appender. - - - - This is useful when re-reading configuration information. - - - - - - Removes the specified appender from the list of appenders. - - The appender to remove. - The appender removed from the list - - The appender removed is not closed. - If you are discarding the appender you must call - on the appender removed. - - - - - Removes the appender with the specified name from the list of appenders. - - The name of the appender to remove. - The appender removed from the list - - The appender removed is not closed. - If you are discarding the appender you must call - on the appender removed. - - - - - Implementation of the interface - - - - - Gets the appenders contained in this appender as an - . - - - If no appenders can be found, then an - is returned. - - - A collection of the appenders in this appender. - - - - - Logs events to a local syslog service. - - - - This appender uses the POSIX libc library functions openlog, syslog, and closelog. - If these functions are not available on the local system then this appender will not work! - - - The functions openlog, syslog, and closelog are specified in SUSv2 and - POSIX 1003.1-2001 standards. These are used to log messages to the local syslog service. - - - This appender talks to a local syslog service. If you need to log to a remote syslog - daemon and you cannot configure your local syslog service to do this you may be - able to use the to log via UDP. - - - Syslog messages must have a facility and and a severity. The severity - is derived from the Level of the logging event. - The facility must be chosen from the set of defined syslog - values. The facilities list is predefined - and cannot be extended. - - - An identifier is specified with each log message. This can be specified - by setting the property. The identity (also know - as the tag) must not contain white space. The default value for the - identity is the application name (from ). - - - Rob Lyon - Nicko Cadell - - - - Initializes a new instance of the class. - - - This instance of the class is set up to write - to a local syslog service. - - - - - Add a mapping of level to severity - - The mapping to add - - - Adds a to this appender. - - - - - - Initialize the appender based on the options set. - - - - This is part of the delayed object - activation scheme. The method must - be called on this object after the configuration properties have - been set. Until is called this - object is in an undefined state and must not be used. - - - If any of the configuration properties are modified then - must be called again. - - - - - - This method is called by the method. - - The event to log. - - - Writes the event to a remote syslog daemon. - - - The format of the output will depend on the appender's layout. - - - - - - Close the syslog when the appender is closed - - - - Close the syslog when the appender is closed - - - - - - Translates a log4net level to a syslog severity. - - A log4net level. - A syslog severity. - - - Translates a log4net level to a syslog severity. - - - - - - Generate a syslog priority. - - The syslog facility. - The syslog severity. - A syslog priority. - - - - The facility. The default facility is . - - - - - The message identity - - - - - Marshaled handle to the identity string. We have to hold on to the - string as the openlog and syslog APIs just hold the - pointer to the ident and dereference it for each log message. - - - - - Mapping from level object to syslog severity - - - - - Open connection to system logger. - - - - - Generate a log message. - - - - The libc syslog method takes a format string and a variable argument list similar - to the classic printf function. As this type of vararg list is not supported - by C# we need to specify the arguments explicitly. Here we have specified the - format string with a single message argument. The caller must set the format - string to "%s". - - - - - - Close descriptor used to write to system logger. - - - - - Message identity - - - - An identifier is specified with each log message. This can be specified - by setting the property. The identity (also know - as the tag) must not contain white space. The default value for the - identity is the application name (from ). - - - - - - Syslog facility - - - Set to one of the values. The list of - facilities is predefined and cannot be extended. The default value - is . - - - - - This appender requires a to be set. - - true - - - This appender requires a to be set. - - - - - - syslog severities - - - - The log4net Level maps to a syslog severity using the - method and the - class. The severity is set on . - - - - - - system is unusable - - - - - action must be taken immediately - - - - - critical conditions - - - - - error conditions - - - - - warning conditions - - - - - normal but significant condition - - - - - informational - - - - - debug-level messages - - - - - syslog facilities - - - - The syslog facility defines which subsystem the logging comes from. - This is set on the property. - - - - - - kernel messages - - - - - random user-level messages - - - - - mail system - - - - - system daemons - - - - - security/authorization messages - - - - - messages generated internally by syslogd - - - - - line printer subsystem - - - - - network news subsystem - - - - - UUCP subsystem - - - - - clock (cron/at) daemon - - - - - security/authorization messages (private) - - - - - ftp daemon - - - - - NTP subsystem - - - - - log audit - - - - - log alert - - - - - clock daemon - - - - - reserved for local use - - - - - reserved for local use - - - - - reserved for local use - - - - - reserved for local use - - - - - reserved for local use - - - - - reserved for local use - - - - - reserved for local use - - - - - reserved for local use - - - - - A class to act as a mapping between the level that a logging call is made at and - the syslog severity that is should be logged at. - - - - A class to act as a mapping between the level that a logging call is made at and - the syslog severity that is should be logged at. - - - - - - The mapped syslog severity for the specified level - - - - Required property. - The mapped syslog severity for the specified level - - - - - - Stores logging events in an array. - - - - The memory appender stores all the logging events - that are appended in an in-memory array. - - - Use the method to get - the current list of events that have been appended. - - - Use the method to clear the - current list of events. - - - Julian Biddle - Nicko Cadell - Gert Driesen - - - - Initializes a new instance of the class. - - - - Default constructor. - - - - - - Gets the events that have been logged. - - The events that have been logged - - - Gets the events that have been logged. - - - - - - This method is called by the method. - - the event to log - - Stores the in the events list. - - - - - Clear the list of events - - - Clear the list of events - - - - - The list of events that have been appended. - - - - - Value indicating which fields in the event should be fixed - - - By default all fields are fixed - - - - - Gets or sets a value indicating whether only part of the logging event - data should be fixed. - - - true if the appender should only fix part of the logging event - data, otherwise false. The default is false. - - - - Setting this property to true will cause only part of the event - data to be fixed and stored in the appender, hereby improving performance. - - - See for more information. - - - - - - Gets or sets the fields that will be fixed in the event - - - - The logging event needs to have certain thread specific values - captured before it can be buffered. See - for details. - - - - - - Logs entries by sending network messages using the - native function. - - - - You can send messages only to names that are active - on the network. If you send the message to a user name, - that user must be logged on and running the Messenger - service to receive the message. - - - The receiver will get a top most window displaying the - messages one at a time, therefore this appender should - not be used to deliver a high volume of messages. - - - The following table lists some possible uses for this appender : - - - - - Action - Property Value(s) - - - Send a message to a user account on the local machine - - - = <name of the local machine> - - - = <user name> - - - - - Send a message to a user account on a remote machine - - - = <name of the remote machine> - - - = <user name> - - - - - Send a message to a domain user account - - - = <name of a domain controller | uninitialized> - - - = <user name> - - - - - Send a message to all the names in a workgroup or domain - - - = <workgroup name | domain name>* - - - - - Send a message from the local machine to a remote machine - - - = <name of the local machine | uninitialized> - - - = <name of the remote machine> - - - - - - - Note : security restrictions apply for sending - network messages, see - for more information. - - - - - An example configuration section to log information - using this appender from the local machine, named - LOCAL_PC, to machine OPERATOR_PC : - - - - - - - - - - Nicko Cadell - Gert Driesen - - - - The DNS or NetBIOS name of the server on which the function is to execute. - - - - - The sender of the network message. - - - - - The message alias to which the message should be sent. - - - - - The security context to use for privileged calls - - - - - Initializes the appender. - - - The default constructor initializes all fields to their default values. - - - - - Initialize the appender based on the options set. - - - - This is part of the delayed object - activation scheme. The method must - be called on this object after the configuration properties have - been set. Until is called this - object is in an undefined state and must not be used. - - - If any of the configuration properties are modified then - must be called again. - - - The appender will be ignored if no was specified. - - - The required property was not specified. - - - - This method is called by the method. - - The event to log. - - - Sends the event using a network message. - - - - - - Sends a buffer of information to a registered message alias. - - The DNS or NetBIOS name of the server on which the function is to execute. - The message alias to which the message buffer should be sent - The originator of the message. - The message text. - The length, in bytes, of the message text. - - - The following restrictions apply for sending network messages: - - - - - Platform - Requirements - - - Windows NT - - - No special group membership is required to send a network message. - - - Admin, Accounts, Print, or Server Operator group membership is required to - successfully send a network message on a remote server. - - - - - Windows 2000 or later - - - If you send a message on a domain controller that is running Active Directory, - access is allowed or denied based on the access control list (ACL) for the securable - object. The default ACL permits only Domain Admins and Account Operators to send a network message. - - - On a member server or workstation, only Administrators and Server Operators can send a network message. - - - - - - - For more information see Security Requirements for the Network Management Functions. - - - - - If the function succeeds, the return value is zero. - - - - - - Gets or sets the sender of the message. - - - The sender of the message. - - - If this property is not specified, the message is sent from the local computer. - - - - - Gets or sets the message alias to which the message should be sent. - - - The recipient of the message. - - - This property should always be specified in order to send a message. - - - - - Gets or sets the DNS or NetBIOS name of the remote server on which the function is to execute. - - - DNS or NetBIOS name of the remote server on which the function is to execute. - - - - For Windows NT 4.0 and earlier, the string should begin with \\. - - - If this property is not specified, the local computer is used. - - - - - - Gets or sets the used to call the NetSend method. - - - The used to call the NetSend method. - - - - Unless a specified here for this appender - the is queried for the - security context to use. The default behavior is to use the security context - of the current thread. - - - - - - This appender requires a to be set. - - true - - - This appender requires a to be set. - - - - - - Appends log events to the OutputDebugString system. - - - - OutputDebugStringAppender appends log events to the - OutputDebugString system. - - - The string is passed to the native OutputDebugString - function. - - - Nicko Cadell - Gert Driesen - - - - Initializes a new instance of the class. - - - - Default constructor. - - - - - - Write the logging event to the output debug string API - - the event to log - - - Write the logging event to the output debug string API - - - - - - Stub for OutputDebugString native method - - the string to output - - - Stub for OutputDebugString native method - - - - - - This appender requires a to be set. - - true - - - This appender requires a to be set. - - - - - - Logs events to a remote syslog daemon. - - - - The BSD syslog protocol is used to remotely log to - a syslog daemon. The syslogd listens for for messages - on UDP port 514. - - - The syslog UDP protocol is not authenticated. Most syslog daemons - do not accept remote log messages because of the security implications. - You may be able to use the LocalSyslogAppender to talk to a local - syslog service. - - - There is an RFC 3164 that claims to document the BSD Syslog Protocol. - This RFC can be seen here: http://www.faqs.org/rfcs/rfc3164.html. - This appender generates what the RFC calls an "Original Device Message", - i.e. does not include the TIMESTAMP or HOSTNAME fields. By observation - this format of message will be accepted by all current syslog daemon - implementations. The daemon will attach the current time and the source - hostname or IP address to any messages received. - - - Syslog messages must have a facility and and a severity. The severity - is derived from the Level of the logging event. - The facility must be chosen from the set of defined syslog - values. The facilities list is predefined - and cannot be extended. - - - An identifier is specified with each log message. This can be specified - by setting the property. The identity (also know - as the tag) must not contain white space. The default value for the - identity is the application name (from ). - - - Rob Lyon - Nicko Cadell - - - - Sends logging events as connectionless UDP datagrams to a remote host or a - multicast group using an . - - - - UDP guarantees neither that messages arrive, nor that they arrive in the correct order. - - - To view the logging results, a custom application can be developed that listens for logging - events. - - - When decoding events send via this appender remember to use the same encoding - to decode the events as was used to send the events. See the - property to specify the encoding to use. - - - - This example shows how to log receive logging events that are sent - on IP address 244.0.0.1 and port 8080 to the console. The event is - encoded in the packet as a unicode string and it is decoded as such. - - IPEndPoint remoteEndPoint = new IPEndPoint(IPAddress.Any, 0); - UdpClient udpClient; - byte[] buffer; - string loggingEvent; - - try - { - udpClient = new UdpClient(8080); - - while(true) - { - buffer = udpClient.Receive(ref remoteEndPoint); - loggingEvent = System.Text.Encoding.Unicode.GetString(buffer); - Console.WriteLine(loggingEvent); - } - } - catch(Exception e) - { - Console.WriteLine(e.ToString()); - } - - - Dim remoteEndPoint as IPEndPoint - Dim udpClient as UdpClient - Dim buffer as Byte() - Dim loggingEvent as String - - Try - remoteEndPoint = new IPEndPoint(IPAddress.Any, 0) - udpClient = new UdpClient(8080) - - While True - buffer = udpClient.Receive(ByRef remoteEndPoint) - loggingEvent = System.Text.Encoding.Unicode.GetString(buffer) - Console.WriteLine(loggingEvent) - Wend - Catch e As Exception - Console.WriteLine(e.ToString()) - End Try - - - An example configuration section to log information using this appender to the - IP 224.0.0.1 on port 8080: - - - - - - - - - - Gert Driesen - Nicko Cadell - - - - Initializes a new instance of the class. - - - The default constructor initializes all fields to their default values. - - - - - Initialize the appender based on the options set. - - - - This is part of the delayed object - activation scheme. The method must - be called on this object after the configuration properties have - been set. Until is called this - object is in an undefined state and must not be used. - - - If any of the configuration properties are modified then - must be called again. - - - The appender will be ignored if no was specified or - an invalid remote or local TCP port number was specified. - - - The required property was not specified. - The TCP port number assigned to or is less than or greater than . - - - - This method is called by the method. - - The event to log. - - - Sends the event using an UDP datagram. - - - Exceptions are passed to the . - - - - - - Closes the UDP connection and releases all resources associated with - this instance. - - - - Disables the underlying and releases all managed - and unmanaged resources associated with the . - - - - - - Initializes the underlying connection. - - - - The underlying is initialized and binds to the - port number from which you intend to communicate. - - - Exceptions are passed to the . - - - - - - The IP address of the remote host or multicast group to which - the logging event will be sent. - - - - - The TCP port number of the remote host or multicast group to - which the logging event will be sent. - - - - - The cached remote endpoint to which the logging events will be sent. - - - - - The TCP port number from which the will communicate. - - - - - The instance that will be used for sending the - logging events. - - - - - The encoding to use for the packet. - - - - - Gets or sets the IP address of the remote host or multicast group to which - the underlying should sent the logging event. - - - The IP address of the remote host or multicast group to which the logging event - will be sent. - - - - Multicast addresses are identified by IP class D addresses (in the range 224.0.0.0 to - 239.255.255.255). Multicast packets can pass across different networks through routers, so - it is possible to use multicasts in an Internet scenario as long as your network provider - supports multicasting. - - - Hosts that want to receive particular multicast messages must register their interest by joining - the multicast group. Multicast messages are not sent to networks where no host has joined - the multicast group. Class D IP addresses are used for multicast groups, to differentiate - them from normal host addresses, allowing nodes to easily detect if a message is of interest. - - - Static multicast addresses that are needed globally are assigned by IANA. A few examples are listed in the table below: - - - - - IP Address - Description - - - 224.0.0.1 - - - Sends a message to all system on the subnet. - - - - - 224.0.0.2 - - - Sends a message to all routers on the subnet. - - - - - 224.0.0.12 - - - The DHCP server answers messages on the IP address 224.0.0.12, but only on a subnet. - - - - - - - A complete list of actually reserved multicast addresses and their owners in the ranges - defined by RFC 3171 can be found at the IANA web site. - - - The address range 239.0.0.0 to 239.255.255.255 is reserved for administrative scope-relative - addresses. These addresses can be reused with other local groups. Routers are typically - configured with filters to prevent multicast traffic in this range from flowing outside - of the local network. - - - - - - Gets or sets the TCP port number of the remote host or multicast group to which - the underlying should sent the logging event. - - - An integer value in the range to - indicating the TCP port number of the remote host or multicast group to which the logging event - will be sent. - - - The underlying will send messages to this TCP port number - on the remote host or multicast group. - - The value specified is less than or greater than . - - - - Gets or sets the TCP port number from which the underlying will communicate. - - - An integer value in the range to - indicating the TCP port number from which the underlying will communicate. - - - - The underlying will bind to this port for sending messages. - - - Setting the value to 0 (the default) will cause the udp client not to bind to - a local port. - - - The value specified is less than or greater than . - - - - Gets or sets used to write the packets. - - - The used to write the packets. - - - - The used to write the packets. - - - - - - Gets or sets the underlying . - - - The underlying . - - - creates a to send logging events - over a network. Classes deriving from can use this - property to get or set this . Use the underlying - returned from if you require access beyond that which - provides. - - - - - Gets or sets the cached remote endpoint to which the logging events should be sent. - - - The cached remote endpoint to which the logging events will be sent. - - - The method will initialize the remote endpoint - with the values of the and - properties. - - - - - This appender requires a to be set. - - true - - - This appender requires a to be set. - - - - - - Syslog port 514 - - - - - Initializes a new instance of the class. - - - This instance of the class is set up to write - to a remote syslog daemon. - - - - - Add a mapping of level to severity - - The mapping to add - - - Add a mapping to this appender. - - - - - - This method is called by the method. - - The event to log. - - - Writes the event to a remote syslog daemon. - - - The format of the output will depend on the appender's layout. - - - - - - Initialize the options for this appender - - - - Initialize the level to syslog severity mappings set on this appender. - - - - - - Translates a log4net level to a syslog severity. - - A log4net level. - A syslog severity. - - - Translates a log4net level to a syslog severity. - - - - - - Generate a syslog priority. - - The syslog facility. - The syslog severity. - A syslog priority. - - - Generate a syslog priority. - - - - - - The facility. The default facility is . - - - - - The message identity - - - - - Mapping from level object to syslog severity - - - - - Message identity - - - - An identifier is specified with each log message. This can be specified - by setting the property. The identity (also know - as the tag) must not contain white space. The default value for the - identity is the application name (from ). - - - - - - Syslog facility - - - Set to one of the values. The list of - facilities is predefined and cannot be extended. The default value - is . - - - - - syslog severities - - - - The syslog severities. - - - - - - system is unusable - - - - - action must be taken immediately - - - - - critical conditions - - - - - error conditions - - - - - warning conditions - - - - - normal but significant condition - - - - - informational - - - - - debug-level messages - - - - - syslog facilities - - - - The syslog facilities - - - - - - kernel messages - - - - - random user-level messages - - - - - mail system - - - - - system daemons - - - - - security/authorization messages - - - - - messages generated internally by syslogd - - - - - line printer subsystem - - - - - network news subsystem - - - - - UUCP subsystem - - - - - clock (cron/at) daemon - - - - - security/authorization messages (private) - - - - - ftp daemon - - - - - NTP subsystem - - - - - log audit - - - - - log alert - - - - - clock daemon - - - - - reserved for local use - - - - - reserved for local use - - - - - reserved for local use - - - - - reserved for local use - - - - - reserved for local use - - - - - reserved for local use - - - - - reserved for local use - - - - - reserved for local use - - - - - A class to act as a mapping between the level that a logging call is made at and - the syslog severity that is should be logged at. - - - - A class to act as a mapping between the level that a logging call is made at and - the syslog severity that is should be logged at. - - - - - - The mapped syslog severity for the specified level - - - - Required property. - The mapped syslog severity for the specified level - - - - - - Delivers logging events to a remote logging sink. - - - - This Appender is designed to deliver events to a remote sink. - That is any object that implements the - interface. It delivers the events using .NET remoting. The - object to deliver events to is specified by setting the - appenders property. - - The RemotingAppender buffers events before sending them. This allows it to - make more efficient use of the remoting infrastructure. - - Once the buffer is full the events are still not sent immediately. - They are scheduled to be sent using a pool thread. The effect is that - the send occurs asynchronously. This is very important for a - number of non obvious reasons. The remoting infrastructure will - flow thread local variables (stored in the ), - if they are marked as , across the - remoting boundary. If the server is not contactable then - the remoting infrastructure will clear the - objects from the . To prevent a logging failure from - having side effects on the calling application the remoting call must be made - from a separate thread to the one used by the application. A - thread is used for this. If no thread is available then - the events will block in the thread pool manager until a thread is available. - - Because the events are sent asynchronously using pool threads it is possible to close - this appender before all the queued events have been sent. - When closing the appender attempts to wait until all the queued events have been sent, but - this will timeout after 30 seconds regardless. - - If this appender is being closed because the - event has fired it may not be possible to send all the queued events. During process - exit the runtime limits the time that a - event handler is allowed to run for. If the runtime terminates the threads before - the queued events have been sent then they will be lost. To ensure that all events - are sent the appender must be closed before the application exits. See - for details on how to shutdown - log4net programmatically. - - - Nicko Cadell - Gert Driesen - Daniel Cazzulino - - - - Initializes a new instance of the class. - - - - Default constructor. - - - - - - Initialize the appender based on the options set - - - - This is part of the delayed object - activation scheme. The method must - be called on this object after the configuration properties have - been set. Until is called this - object is in an undefined state and must not be used. - - - If any of the configuration properties are modified then - must be called again. - - - - - - Send the contents of the buffer to the remote sink. - - - The events are not sent immediately. They are scheduled to be sent - using a pool thread. The effect is that the send occurs asynchronously. - This is very important for a number of non obvious reasons. The remoting - infrastructure will flow thread local variables (stored in the ), - if they are marked as , across the - remoting boundary. If the server is not contactable then - the remoting infrastructure will clear the - objects from the . To prevent a logging failure from - having side effects on the calling application the remoting call must be made - from a separate thread to the one used by the application. A - thread is used for this. If no thread is available then - the events will block in the thread pool manager until a thread is available. - - The events to send. - - - - Override base class close. - - - - This method waits while there are queued work items. The events are - sent asynchronously using work items. These items - will be sent once a thread pool thread is available to send them, therefore - it is possible to close the appender before all the queued events have been - sent. - - This method attempts to wait until all the queued events have been sent, but this - method will timeout after 30 seconds regardless. - - If the appender is being closed because the - event has fired it may not be possible to send all the queued events. During process - exit the runtime limits the time that a - event handler is allowed to run for. - - - - - A work item is being queued into the thread pool - - - - - A work item from the thread pool has completed - - - - - Send the contents of the buffer to the remote sink. - - - This method is designed to be used with the . - This method expects to be passed an array of - objects in the state param. - - the logging events to send - - - - The URL of the remote sink. - - - - - The local proxy (.NET remoting) for the remote logging sink. - - - - - The number of queued callbacks currently waiting or executing - - - - - Event used to signal when there are no queued work items - - - This event is set when there are no queued work items. In this - state it is safe to close the appender. - - - - - Gets or sets the URL of the well-known object that will accept - the logging events. - - - The well-known URL of the remote sink. - - - - The URL of the remoting sink that will accept logging events. - The sink must implement the - interface. - - - - - - Interface used to deliver objects to a remote sink. - - - This interface must be implemented by a remoting sink - if the is to be used - to deliver logging events to the sink. - - - - - Delivers logging events to the remote sink - - Array of events to log. - - - Delivers logging events to the remote sink - - - - - - Appender that rolls log files based on size or date or both. - - - - RollingFileAppender can roll log files based on size or date or both - depending on the setting of the property. - When set to the log file will be rolled - once its size exceeds the . - When set to the log file will be rolled - once the date boundary specified in the property - is crossed. - When set to the log file will be - rolled once the date boundary specified in the property - is crossed, but within a date boundary the file will also be rolled - once its size exceeds the . - When set to the log file will be rolled when - the appender is configured. This effectively means that the log file can be - rolled once per program execution. - - - A of few additional optional features have been added: - - Attach date pattern for current log file - Backup number increments for newer files - Infinite number of backups by file size - - - - - - For large or infinite numbers of backup files a - greater than zero is highly recommended, otherwise all the backup files need - to be renamed each time a new backup is created. - - - When Date/Time based rolling is used setting - to will reduce the number of file renamings to few or none. - - - - - - Changing or without clearing - the log file directory of backup files will cause unexpected and unwanted side effects. - - - - - If Date/Time based rolling is enabled this appender will attempt to roll existing files - in the directory without a Date/Time tag based on the last write date of the base log file. - The appender only rolls the log file when a message is logged. If Date/Time based rolling - is enabled then the appender will not roll the log file at the Date/Time boundary but - at the point when the next message is logged after the boundary has been crossed. - - - - The extends the and - has the same behavior when opening the log file. - The appender will first try to open the file for writing when - is called. This will typically be during configuration. - If the file cannot be opened for writing the appender will attempt - to open the file again each time a message is logged to the appender. - If the file cannot be opened for writing when a message is logged then - the message will be discarded by this appender. - - - When rolling a backup file necessitates deleting an older backup file the - file to be deleted is moved to a temporary name before being deleted. - - - - - A maximum number of backup files when rolling on date/time boundaries is not supported. - - - - Nicko Cadell - Gert Driesen - Aspi Havewala - Douglas de la Torre - Edward Smit - - - - Initializes a new instance of the class. - - - - Default constructor. - - - - - - Sets the quiet writer being used. - - - This method can be overridden by sub classes. - - the writer to set - - - - Write out a logging event. - - the event to write to file. - - - Handles append time behavior for RollingFileAppender. This checks - if a roll over either by date (checked first) or time (checked second) - is need and then appends to the file last. - - - - - - Write out an array of logging events. - - the events to write to file. - - - Handles append time behavior for RollingFileAppender. This checks - if a roll over either by date (checked first) or time (checked second) - is need and then appends to the file last. - - - - - - Performs any required rolling before outputting the next event - - - - Handles append time behavior for RollingFileAppender. This checks - if a roll over either by date (checked first) or time (checked second) - is need and then appends to the file last. - - - - - - Creates and opens the file for logging. If - is false then the fully qualified name is determined and used. - - the name of the file to open - true to append to existing file - - This method will ensure that the directory structure - for the specified exists. - - - - - Get the current output file name - - the base file name - the output file name - - The output file name is based on the base fileName specified. - If is set then the output - file name is the same as the base file passed in. Otherwise - the output file depends on the date pattern, on the count - direction or both. - - - - - Determines curSizeRollBackups (only within the current roll point) - - - - - Generates a wildcard pattern that can be used to find all files - that are similar to the base file name. - - - - - - - Builds a list of filenames for all files matching the base filename plus a file - pattern. - - - - - - - Initiates a roll over if needed for crossing a date boundary since the last run. - - - - - Initializes based on existing conditions at time of . - - - - Initializes based on existing conditions at time of . - The following is done - - determine curSizeRollBackups (only within the current roll point) - initiates a roll over if needed for crossing a date boundary since the last run. - - - - - - - Does the work of bumping the 'current' file counter higher - to the highest count when an incremental file name is seen. - The highest count is either the first file (when count direction - is greater than 0) or the last file (when count direction less than 0). - In either case, we want to know the highest count that is present. - - - - - - - Takes a list of files and a base file name, and looks for - 'incremented' versions of the base file. Bumps the max - count up to the highest count seen. - - - - - - - Calculates the RollPoint for the datePattern supplied. - - the date pattern to calculate the check period for - The RollPoint that is most accurate for the date pattern supplied - - Essentially the date pattern is examined to determine what the - most suitable roll point is. The roll point chosen is the roll point - with the smallest period that can be detected using the date pattern - supplied. i.e. if the date pattern only outputs the year, month, day - and hour then the smallest roll point that can be detected would be - and hourly roll point as minutes could not be detected. - - - - - Initialize the appender based on the options set - - - - This is part of the delayed object - activation scheme. The method must - be called on this object after the configuration properties have - been set. Until is called this - object is in an undefined state and must not be used. - - - If any of the configuration properties are modified then - must be called again. - - - Sets initial conditions including date/time roll over information, first check, - scheduledFilename, and calls to initialize - the current number of backups. - - - - - - Rollover the file(s) to date/time tagged file(s). - - set to true if the file to be rolled is currently open - - - Rollover the file(s) to date/time tagged file(s). - Resets curSizeRollBackups. - If fileIsOpen is set then the new file is opened (through SafeOpenFile). - - - - - - Renames file to file . - - Name of existing file to roll. - New name for file. - - - Renames file to file . It - also checks for existence of target file and deletes if it does. - - - - - - Test if a file exists at a specified path - - the path to the file - true if the file exists - - - Test if a file exists at a specified path - - - - - - Deletes the specified file if it exists. - - The file to delete. - - - Delete a file if is exists. - The file is first moved to a new filename then deleted. - This allows the file to be removed even when it cannot - be deleted, but it still can be moved. - - - - - - Implements file roll base on file size. - - - - If the maximum number of size based backups is reached - (curSizeRollBackups == maxSizeRollBackups) then the oldest - file is deleted -- its index determined by the sign of countDirection. - If countDirection < 0, then files - {File.1, ..., File.curSizeRollBackups -1} - are renamed to {File.2, ..., - File.curSizeRollBackups}. Moreover, File is - renamed File.1 and closed. - - - A new file is created to receive further log output. - - - If maxSizeRollBackups is equal to zero, then the - File is truncated with no backup files created. - - - If maxSizeRollBackups < 0, then File is - renamed if needed and no files are deleted. - - - - - - Implements file roll. - - the base name to rename - - - If the maximum number of size based backups is reached - (curSizeRollBackups == maxSizeRollBackups) then the oldest - file is deleted -- its index determined by the sign of countDirection. - If countDirection < 0, then files - {File.1, ..., File.curSizeRollBackups -1} - are renamed to {File.2, ..., - File.curSizeRollBackups}. - - - If maxSizeRollBackups is equal to zero, then the - File is truncated with no backup files created. - - - If maxSizeRollBackups < 0, then File is - renamed if needed and no files are deleted. - - - This is called by to rename the files. - - - - - - Get the start time of the next window for the current rollpoint - - the current date - the type of roll point we are working with - the start time for the next roll point an interval after the currentDateTime date - - - Returns the date of the next roll point after the currentDateTime date passed to the method. - - - The basic strategy is to subtract the time parts that are less significant - than the rollpoint from the current time. This should roll the time back to - the start of the time window for the current rollpoint. Then we add 1 window - worth of time and get the start time of the next window for the rollpoint. - - - - - - This object supplies the current date/time. Allows test code to plug in - a method to control this class when testing date/time based rolling. - - - - - The date pattern. By default, the pattern is set to ".yyyy-MM-dd" - meaning daily rollover. - - - - - The actual formatted filename that is currently being written to - or will be the file transferred to on roll over - (based on staticLogFileName). - - - - - The timestamp when we shall next recompute the filename. - - - - - Holds date of last roll over - - - - - The type of rolling done - - - - - The default maximum file size is 10MB - - - - - There is zero backup files by default - - - - - How many sized based backups have been made so far - - - - - The rolling file count direction. - - - - - The rolling mode used in this appender. - - - - - Cache flag set if we are rolling by date. - - - - - Cache flag set if we are rolling by size. - - - - - Value indicating whether to always log to the same file. - - - - - FileName provided in configuration. Used for rolling properly - - - - - The 1st of January 1970 in UTC - - - - - Gets or sets the date pattern to be used for generating file names - when rolling over on date. - - - The date pattern to be used for generating file names when rolling - over on date. - - - - Takes a string in the same format as expected by - . - - - This property determines the rollover schedule when rolling over - on date. - - - - - - Gets or sets the maximum number of backup files that are kept before - the oldest is erased. - - - The maximum number of backup files that are kept before the oldest is - erased. - - - - If set to zero, then there will be no backup files and the log file - will be truncated when it reaches . - - - If a negative number is supplied then no deletions will be made. Note - that this could result in very slow performance as a large number of - files are rolled over unless is used. - - - The maximum applies to each time based group of files and - not the total. - - - - - - Gets or sets the maximum size that the output file is allowed to reach - before being rolled over to backup files. - - - The maximum size in bytes that the output file is allowed to reach before being - rolled over to backup files. - - - - This property is equivalent to except - that it is required for differentiating the setter taking a - argument from the setter taking a - argument. - - - The default maximum file size is 10MB (10*1024*1024). - - - - - - Gets or sets the maximum size that the output file is allowed to reach - before being rolled over to backup files. - - - The maximum size that the output file is allowed to reach before being - rolled over to backup files. - - - - This property allows you to specify the maximum size with the - suffixes "KB", "MB" or "GB" so that the size is interpreted being - expressed respectively in kilobytes, megabytes or gigabytes. - - - For example, the value "10KB" will be interpreted as 10240 bytes. - - - The default maximum file size is 10MB. - - - If you have the option to set the maximum file size programmatically - consider using the property instead as this - allows you to set the size in bytes as a . - - - - - - Gets or sets the rolling file count direction. - - - The rolling file count direction. - - - - Indicates if the current file is the lowest numbered file or the - highest numbered file. - - - By default newer files have lower numbers ( < 0), - i.e. log.1 is most recent, log.5 is the 5th backup, etc... - - - >= 0 does the opposite i.e. - log.1 is the first backup made, log.5 is the 5th backup made, etc. - For infinite backups use >= 0 to reduce - rollover costs. - - The default file count direction is -1. - - - - - Gets or sets the rolling style. - - The rolling style. - - - The default rolling style is . - - - When set to this appender's - property is set to false, otherwise - the appender would append to a single file rather than rolling - the file each time it is opened. - - - - - - Gets or sets a value indicating whether to always log to - the same file. - - - true if always should be logged to the same file, otherwise false. - - - - By default file.log is always the current file. Optionally - file.log.yyyy-mm-dd for current formatted datePattern can by the currently - logging file (or file.log.curSizeRollBackup or even - file.log.yyyy-mm-dd.curSizeRollBackup). - - - This will make time based rollovers with a large number of backups - much faster as the appender it won't have to rename all the backups! - - - - - - Style of rolling to use - - - - Style of rolling to use - - - - - - Roll files once per program execution - - - - Roll files once per program execution. - Well really once each time this appender is - configured. - - - Setting this option also sets AppendToFile to - false on the RollingFileAppender, otherwise - this appender would just be a normal file appender. - - - - - - Roll files based only on the size of the file - - - - - Roll files based only on the date - - - - - Roll files based on both the size and date of the file - - - - - The code assumes that the following 'time' constants are in a increasing sequence. - - - - The code assumes that the following 'time' constants are in a increasing sequence. - - - - - - Roll the log not based on the date - - - - - Roll the log for each minute - - - - - Roll the log for each hour - - - - - Roll the log twice a day (midday and midnight) - - - - - Roll the log each day (midnight) - - - - - Roll the log each week - - - - - Roll the log each month - - - - - This interface is used to supply Date/Time information to the . - - - This interface is used to supply Date/Time information to the . - Used primarily to allow test classes to plug themselves in so they can - supply test date/times. - - - - - Gets the current time. - - The current time. - - - Gets the current time. - - - - - - Default implementation of that returns the current time. - - - - - Gets the current time. - - The current time. - - - Gets the current time. - - - - - - Send an e-mail when a specific logging event occurs, typically on errors - or fatal errors. - - - - The number of logging events delivered in this e-mail depend on - the value of option. The - keeps only the last - logging events in its - cyclic buffer. This keeps memory requirements at a reasonable level while - still delivering useful application context. - - - Authentication and setting the server Port are only available on the MS .NET 1.1 runtime. - For these features to be enabled you need to ensure that you are using a version of - the log4net assembly that is built against the MS .NET 1.1 framework and that you are - running the your application on the MS .NET 1.1 runtime. On all other platforms only sending - unauthenticated messages to a server listening on port 25 (the default) is supported. - - - Authentication is supported by setting the property to - either or . - If using authentication then the - and properties must also be set. - - - To set the SMTP server port use the property. The default port is 25. - - - Nicko Cadell - Gert Driesen - - - - Default constructor - - - - Default constructor - - - - - - Sends the contents of the cyclic buffer as an e-mail message. - - The logging events to send. - - - - Send the email message - - the body text to include in the mail - - - - Gets or sets a semicolon-delimited list of recipient e-mail addresses. - - - A semicolon-delimited list of e-mail addresses. - - - - A semicolon-delimited list of recipient e-mail addresses. - - - - - - Gets or sets the e-mail address of the sender. - - - The e-mail address of the sender. - - - - The e-mail address of the sender. - - - - - - Gets or sets the subject line of the e-mail message. - - - The subject line of the e-mail message. - - - - The subject line of the e-mail message. - - - - - - Gets or sets the name of the SMTP relay mail server to use to send - the e-mail messages. - - - The name of the e-mail relay server. If SmtpServer is not set, the - name of the local SMTP server is used. - - - - The name of the e-mail relay server. If SmtpServer is not set, the - name of the local SMTP server is used. - - - - - - Obsolete - - - Use the BufferingAppenderSkeleton Fix methods instead - - - - Obsolete property. - - - - - - The mode to use to authentication with the SMTP server - - - Authentication is only available on the MS .NET 1.1 runtime. - - Valid Authentication mode values are: , - , and . - The default value is . When using - you must specify the - and to use to authenticate. - When using the Windows credentials for the current - thread, if impersonating, or the process will be used to authenticate. - - - - - - The username to use to authenticate with the SMTP server - - - Authentication is only available on the MS .NET 1.1 runtime. - - A and must be specified when - is set to , - otherwise the username will be ignored. - - - - - - The password to use to authenticate with the SMTP server - - - Authentication is only available on the MS .NET 1.1 runtime. - - A and must be specified when - is set to , - otherwise the password will be ignored. - - - - - - The port on which the SMTP server is listening - - - Server Port is only available on the MS .NET 1.1 runtime. - - The port on which the SMTP server is listening. The default - port is 25. The Port can only be changed when running on - the MS .NET 1.1 runtime. - - - - - - Gets or sets the priority of the e-mail message - - - One of the values. - - - - Sets the priority of the e-mails generated by this - appender. The default priority is . - - - If you are using this appender to report errors then - you may want to set the priority to . - - - - - - This appender requires a to be set. - - true - - - This appender requires a to be set. - - - - - - Values for the property. - - - - SMTP authentication modes. - - - - - - No authentication - - - - - Basic authentication. - - - Requires a username and password to be supplied - - - - - Integrated authentication - - - Uses the Windows credentials from the current thread or process to authenticate. - - - - - Send an email when a specific logging event occurs, typically on errors - or fatal errors. Rather than sending via smtp it writes a file into the - directory specified by . This allows services such - as the IIS SMTP agent to manage sending the messages. - - - - The configuration for this appender is identical to that of the SMTPAppender, - except that instead of specifying the SMTPAppender.SMTPHost you specify - . - - - The number of logging events delivered in this e-mail depend on - the value of option. The - keeps only the last - logging events in its - cyclic buffer. This keeps memory requirements at a reasonable level while - still delivering useful application context. - - - Niall Daley - Nicko Cadell - - - - Default constructor - - - - Default constructor - - - - - - Sends the contents of the cyclic buffer as an e-mail message. - - The logging events to send. - - - Sends the contents of the cyclic buffer as an e-mail message. - - - - - - Activate the options on this appender. - - - - This is part of the delayed object - activation scheme. The method must - be called on this object after the configuration properties have - been set. Until is called this - object is in an undefined state and must not be used. - - - If any of the configuration properties are modified then - must be called again. - - - - - - Convert a path into a fully qualified path. - - The path to convert. - The fully qualified path. - - - Converts the path specified to a fully - qualified path. If the path is relative it is - taken as relative from the application base - directory. - - - - - - The security context to use for privileged calls - - - - - Gets or sets a semicolon-delimited list of recipient e-mail addresses. - - - A semicolon-delimited list of e-mail addresses. - - - - A semicolon-delimited list of e-mail addresses. - - - - - - Gets or sets the e-mail address of the sender. - - - The e-mail address of the sender. - - - - The e-mail address of the sender. - - - - - - Gets or sets the subject line of the e-mail message. - - - The subject line of the e-mail message. - - - - The subject line of the e-mail message. - - - - - - Gets or sets the path to write the messages to. - - - - Gets or sets the path to write the messages to. This should be the same - as that used by the agent sending the messages. - - - - - - Gets or sets the used to write to the pickup directory. - - - The used to write to the pickup directory. - - - - Unless a specified here for this appender - the is queried for the - security context to use. The default behavior is to use the security context - of the current thread. - - - - - - This appender requires a to be set. - - true - - - This appender requires a to be set. - - - - - - Appender that allows clients to connect via Telnet to receive log messages - - - - The TelnetAppender accepts socket connections and streams logging messages - back to the client. - The output is provided in a telnet-friendly way so that a log can be monitored - over a TCP/IP socket. - This allows simple remote monitoring of application logging. - - - The default is 23 (the telnet port). - - - Keith Long - Nicko Cadell - - - - Default constructor - - - - Default constructor - - - - - - Overrides the parent method to close the socket handler - - - - Closes all the outstanding connections. - - - - - - Initialize the appender based on the options set. - - - - This is part of the delayed object - activation scheme. The method must - be called on this object after the configuration properties have - been set. Until is called this - object is in an undefined state and must not be used. - - - If any of the configuration properties are modified then - must be called again. - - - Create the socket handler and wait for connections - - - - - - Writes the logging event to each connected client. - - The event to log. - - - Writes the logging event to each connected client. - - - - - - Gets or sets the TCP port number on which this will listen for connections. - - - An integer value in the range to - indicating the TCP port number on which this will listen for connections. - - - - The default value is 23 (the telnet port). - - - The value specified is less than - or greater than . - - - - This appender requires a to be set. - - true - - - This appender requires a to be set. - - - - - - Helper class to manage connected clients - - - - The SocketHandler class is used to accept connections from - clients. It is threaded so that clients can connect/disconnect - asynchronously. - - - - - - Opens a new server port on - - the local port to listen on for connections - - - Creates a socket handler on the specified local server port. - - - - - - Sends a string message to each of the connected clients - - the text to send - - - Sends a string message to each of the connected clients - - - - - - Add a client to the internal clients list - - client to add - - - - Remove a client from the internal clients list - - client to remove - - - - Callback used to accept a connection on the server socket - - The result of the asynchronous operation - - - On connection adds to the list of connections - if there are two many open connections you will be disconnected - - - - - - Close all network connections - - - - Make sure we close all network connections - - - - - - Test if this handler has active connections - - - true if this handler has active connections - - - - This property will be true while this handler has - active connections, that is at least one connection that - the handler will attempt to send a message to. - - - - - - Class that represents a client connected to this handler - - - - Class that represents a client connected to this handler - - - - - - Create this for the specified - - the client's socket - - - Opens a stream writer on the socket. - - - - - - Write a string to the client - - string to send - - - Write a string to the client - - - - - - Cleanup the clients connection - - - - Close the socket connection. - - - - - - Appends log events to the system. - - - - The application configuration file can be used to control what listeners - are actually used. See the MSDN documentation for the - class for details on configuring the - trace system. - - - Events are written using the System.Diagnostics.Trace.Write(string,string) - method. The event's logger name is passed as the value for the category name to the Write method. - - - Compact Framework
- The Compact Framework does not support the - class for any operation except Assert. When using the Compact Framework this - appender will write to the system rather than - the Trace system. This appender will therefore behave like the . -
-
- Douglas de la Torre - Nicko Cadell - Gert Driesen -
- - - Initializes a new instance of the . - - - - Default constructor. - - - - - - Initializes a new instance of the - with a specified layout. - - The layout to use with this appender. - - - Obsolete constructor. - - - - - - Writes the logging event to the system. - - The event to log. - - - Writes the logging event to the system. - - - - - - Immediate flush means that the underlying writer or output stream - will be flushed at the end of each append operation. - - - - Immediate flush is slower but ensures that each append request is - actually written. If is set to - false, then there is a good chance that the last few - logs events are not actually written to persistent media if and - when the application crashes. - - - The default value is true. - - - - - Gets or sets a value that indicates whether the appender will - flush at the end of each write. - - - The default behavior is to flush at the end of each - write. If the option is set tofalse, then the underlying - stream can defer writing to physical medium to a later time. - - - Avoiding the flush operation at the end of each append results - in a performance gain of 10 to 20 percent. However, there is safety - trade-off involved in skipping flushing. Indeed, when flushing is - skipped, then it is likely that the last few log events will not - be recorded on disk when the application exits. This is a high - price to pay even for a 20% performance gain. - - - - - - This appender requires a to be set. - - true - - - This appender requires a to be set. - - - - - - Assembly level attribute that specifies a domain to alias to this assembly's repository. - - - - AliasDomainAttribute is obsolete. Use AliasRepositoryAttribute instead of AliasDomainAttribute. - - - An assembly's logger repository is defined by its , - however this can be overridden by an assembly loaded before the target assembly. - - - An assembly can alias another assembly's domain to its repository by - specifying this attribute with the name of the target domain. - - - This attribute can only be specified on the assembly and may be used - as many times as necessary to alias all the required domains. - - - Nicko Cadell - Gert Driesen - - - - Assembly level attribute that specifies a repository to alias to this assembly's repository. - - - - An assembly's logger repository is defined by its , - however this can be overridden by an assembly loaded before the target assembly. - - - An assembly can alias another assembly's repository to its repository by - specifying this attribute with the name of the target repository. - - - This attribute can only be specified on the assembly and may be used - as many times as necessary to alias all the required repositories. - - - Nicko Cadell - Gert Driesen - - - - Initializes a new instance of the class with - the specified repository to alias to this assembly's repository. - - The repository to alias to this assemby's repository. - - - Initializes a new instance of the class with - the specified repository to alias to this assembly's repository. - - - - - - Gets or sets the repository to alias to this assemby's repository. - - - The repository to alias to this assemby's repository. - - - - The name of the repository to alias to this assemby's repository. - - - - - - Initializes a new instance of the class with - the specified domain to alias to this assembly's repository. - - The domain to alias to this assemby's repository. - - - Obsolete. Use instead of . - - - - - - Use this class to quickly configure a . - - - - Allows very simple programmatic configuration of log4net. - - - Only one appender can be configured using this configurator. - The appender is set at the root of the hierarchy and all logging - events will be delivered to that appender. - - - Appenders can also implement the interface. Therefore - they would require that the method - be called after the appenders properties have been configured. - - - Nicko Cadell - Gert Driesen - - - - Initializes a new instance of the class. - - - - Uses a private access modifier to prevent instantiation of this class. - - - - - - Initializes the log4net system with a default configuration. - - - - Initializes the log4net logging system using a - that will write to Console.Out. The log messages are - formatted using the layout object - with the - layout style. - - - - - - Initializes the log4net system using the specified appender. - - The appender to use to log all logging events. - - - Initializes the log4net system using the specified appender. - - - - - - Initializes the with a default configuration. - - The repository to configure. - - - Initializes the specified repository using a - that will write to Console.Out. The log messages are - formatted using the layout object - with the - layout style. - - - - - - Initializes the using the specified appender. - - The repository to configure. - The appender to use to log all logging events. - - - Initializes the using the specified appender. - - - - - - Base class for all log4net configuration attributes. - - - This is an abstract class that must be extended by - specific configurators. This attribute allows the - configurator to be parameterized by an assembly level - attribute. - - Nicko Cadell - Gert Driesen - - - - Constructor used by subclasses. - - the ordering priority for this configurator - - - The is used to order the configurator - attributes before they are invoked. Higher priority configurators are executed - before lower priority ones. - - - - - - Configures the for the specified assembly. - - The assembly that this attribute was defined on. - The repository to configure. - - - Abstract method implemented by a subclass. When this method is called - the subclass should configure the . - - - - - - Compare this instance to another ConfiguratorAttribute - - the object to compare to - see - - - Compares the priorities of the two instances. - Sorts by priority in descending order. Objects with the same priority are - randomly ordered. - - - - - - Assembly level attribute that specifies the logging domain for the assembly. - - - - DomainAttribute is obsolete. Use RepositoryAttribute instead of DomainAttribute. - - - Assemblies are mapped to logging domains. Each domain has its own - logging repository. This attribute specified on the assembly controls - the configuration of the domain. The property specifies the name - of the domain that this assembly is a part of. The - specifies the type of the repository objects to create for the domain. If - this attribute is not specified and a is not specified - then the assembly will be part of the default shared logging domain. - - - This attribute can only be specified on the assembly and may only be used - once per assembly. - - - Nicko Cadell - Gert Driesen - - - - Assembly level attribute that specifies the logging repository for the assembly. - - - - Assemblies are mapped to logging repository. This attribute specified - on the assembly controls - the configuration of the repository. The property specifies the name - of the repository that this assembly is a part of. The - specifies the type of the object - to create for the assembly. If this attribute is not specified or a - is not specified then the assembly will be part of the default shared logging repository. - - - This attribute can only be specified on the assembly and may only be used - once per assembly. - - - Nicko Cadell - Gert Driesen - - - - Initializes a new instance of the class. - - - - Default constructor. - - - - - - Initialize a new instance of the class - with the name of the repository. - - The name of the repository. - - - Initialize the attribute with the name for the assembly's repository. - - - - - - Gets or sets the name of the logging repository. - - - The string name to use as the name of the repository associated with this - assembly. - - - - This value does not have to be unique. Several assemblies can share the - same repository. They will share the logging configuration of the repository. - - - - - - Gets or sets the type of repository to create for this assembly. - - - The type of repository to create for this assembly. - - - - The type of the repository to create for the assembly. - The type must implement the - interface. - - - This will be the type of repository created when - the repository is created. If multiple assemblies reference the - same repository then the repository is only created once using the - of the first assembly to call into the - repository. - - - - - - Initializes a new instance of the class. - - - - Obsolete. Use RepositoryAttribute instead of DomainAttribute. - - - - - - Initialize a new instance of the class - with the name of the domain. - - The name of the domain. - - - Obsolete. Use RepositoryAttribute instead of DomainAttribute. - - - - - - Use this class to initialize the log4net environment using an Xml tree. - - - - DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator. - - - Configures a using an Xml tree. - - - Nicko Cadell - Gert Driesen - - - - Private constructor - - - - - Automatically configures the log4net system based on the - application's configuration settings. - - - - DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator. - - Each application has a configuration file. This has the - same name as the application with '.config' appended. - This file is XML and calling this function prompts the - configurator to look in that file for a section called - log4net that contains the configuration data. - - - - - Automatically configures the using settings - stored in the application's configuration file. - - - - DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator. - - Each application has a configuration file. This has the - same name as the application with '.config' appended. - This file is XML and calling this function prompts the - configurator to look in that file for a section called - log4net that contains the configuration data. - - The repository to configure. - - - - Configures log4net using a log4net element - - - - DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator. - - Loads the log4net configuration from the XML element - supplied as . - - The element to parse. - - - - Configures the using the specified XML - element. - - - - DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator. - - Loads the log4net configuration from the XML element - supplied as . - - The repository to configure. - The element to parse. - - - - Configures log4net using the specified configuration file. - - The XML file to load the configuration from. - - - DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator. - - - The configuration file must be valid XML. It must contain - at least one element called log4net that holds - the log4net configuration data. - - - The log4net configuration file can possible be specified in the application's - configuration file (either MyAppName.exe.config for a - normal application on Web.config for an ASP.NET application). - - - The following example configures log4net using a configuration file, of which the - location is stored in the application's configuration file : - - - using log4net.Config; - using System.IO; - using System.Configuration; - - ... - - DOMConfigurator.Configure(new FileInfo(ConfigurationSettings.AppSettings["log4net-config-file"])); - - - In the .config file, the path to the log4net can be specified like this : - - - - - - - - - - - - - Configures log4net using the specified configuration file. - - A stream to load the XML configuration from. - - - DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator. - - - The configuration data must be valid XML. It must contain - at least one element called log4net that holds - the log4net configuration data. - - - Note that this method will NOT close the stream parameter. - - - - - - Configures the using the specified configuration - file. - - The repository to configure. - The XML file to load the configuration from. - - - DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator. - - - The configuration file must be valid XML. It must contain - at least one element called log4net that holds - the configuration data. - - - The log4net configuration file can possible be specified in the application's - configuration file (either MyAppName.exe.config for a - normal application on Web.config for an ASP.NET application). - - - The following example configures log4net using a configuration file, of which the - location is stored in the application's configuration file : - - - using log4net.Config; - using System.IO; - using System.Configuration; - - ... - - DOMConfigurator.Configure(new FileInfo(ConfigurationSettings.AppSettings["log4net-config-file"])); - - - In the .config file, the path to the log4net can be specified like this : - - - - - - - - - - - - - Configures the using the specified configuration - file. - - The repository to configure. - The stream to load the XML configuration from. - - - DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator. - - - The configuration data must be valid XML. It must contain - at least one element called log4net that holds - the configuration data. - - - Note that this method will NOT close the stream parameter. - - - - - - Configures log4net using the file specified, monitors the file for changes - and reloads the configuration if a change is detected. - - The XML file to load the configuration from. - - - DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator. - - - The configuration file must be valid XML. It must contain - at least one element called log4net that holds - the configuration data. - - - The configuration file will be monitored using a - and depends on the behavior of that class. - - - For more information on how to configure log4net using - a separate configuration file, see . - - - - - - - Configures the using the file specified, - monitors the file for changes and reloads the configuration if a change - is detected. - - The repository to configure. - The XML file to load the configuration from. - - - DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator. - - - The configuration file must be valid XML. It must contain - at least one element called log4net that holds - the configuration data. - - - The configuration file will be monitored using a - and depends on the behavior of that class. - - - For more information on how to configure log4net using - a separate configuration file, see . - - - - - - - Assembly level attribute to configure the . - - - - AliasDomainAttribute is obsolete. Use AliasRepositoryAttribute instead of AliasDomainAttribute. - - - This attribute may only be used at the assembly scope and can only - be used once per assembly. - - - Use this attribute to configure the - without calling one of the - methods. - - - Nicko Cadell - Gert Driesen - - - - Assembly level attribute to configure the . - - - - This attribute may only be used at the assembly scope and can only - be used once per assembly. - - - Use this attribute to configure the - without calling one of the - methods. - - - If neither of the or - properties are set the configuration is loaded from the application's .config file. - If set the property takes priority over the - property. The property - specifies a path to a file to load the config from. The path is relative to the - application's base directory; . - The property is used as a postfix to the assembly file name. - The config file must be located in the application's base directory; . - For example in a console application setting the to - config has the same effect as not specifying the or - properties. - - - The property can be set to cause the - to watch the configuration file for changes. - - - - Log4net will only look for assembly level configuration attributes once. - When using the log4net assembly level attributes to control the configuration - of log4net you must ensure that the first call to any of the - methods is made from the assembly with the configuration - attributes. - - - If you cannot guarantee the order in which log4net calls will be made from - different assemblies you must use programmatic configuration instead, i.e. - call the method directly. - - - - Nicko Cadell - Gert Driesen - - - - Default constructor - - - - Default constructor - - - - - - Configures the for the specified assembly. - - The assembly that this attribute was defined on. - The repository to configure. - - - Configure the repository using the . - The specified must extend the - class otherwise the will not be able to - configure it. - - - The does not extend . - - - - Attempt to load configuration from the local file system - - The assembly that this attribute was defined on. - The repository to configure. - - - - Configure the specified repository using a - - The repository to configure. - the FileInfo pointing to the config file - - - - Attempt to load configuration from a URI - - The assembly that this attribute was defined on. - The repository to configure. - - - - Gets or sets the filename of the configuration file. - - - The filename of the configuration file. - - - - If specified, this is the name of the configuration file to use with - the . This file path is relative to the - application base directory (). - - - The takes priority over the . - - - - - - Gets or sets the extension of the configuration file. - - - The extension of the configuration file. - - - - If specified this is the extension for the configuration file. - The path to the config file is built by using the application - base directory (), - the assembly file name and the config file extension. - - - If the is set to MyExt then - possible config file names would be: MyConsoleApp.exe.MyExt or - MyClassLibrary.dll.MyExt. - - - The takes priority over the . - - - - - - Gets or sets a value indicating whether to watch the configuration file. - - - true if the configuration should be watched, false otherwise. - - - - If this flag is specified and set to true then the framework - will watch the configuration file and will reload the config each time - the file is modified. - - - The config file can only be watched if it is loaded from local disk. - In a No-Touch (Smart Client) deployment where the application is downloaded - from a web server the config file may not reside on the local disk - and therefore it may not be able to watch it. - - - Watching configuration is not supported on the SSCLI. - - - - - - Class to register for the log4net section of the configuration file - - - The log4net section of the configuration file needs to have a section - handler registered. This is the section handler used. It simply returns - the XML element that is the root of the section. - - - Example of registering the log4net section handler : - - - -
- - - log4net configuration XML goes here - - - - - Nicko Cadell - Gert Driesen - - - - Initializes a new instance of the class. - - - - Default constructor. - - - - - - Parses the configuration section. - - The configuration settings in a corresponding parent configuration section. - The configuration context when called from the ASP.NET configuration system. Otherwise, this parameter is reserved and is a null reference. - The for the log4net section. - The for the log4net section. - - - Returns the containing the configuration data, - - - - - - Assembly level attribute that specifies a plugin to attach to - the repository. - - - - Specifies the type of a plugin to create and attach to the - assembly's repository. The plugin type must implement the - interface. - - - Nicko Cadell - Gert Driesen - - - - Interface used to create plugins. - - - - Interface used to create a plugin. - - - Nicko Cadell - Gert Driesen - - - - Creates the plugin object. - - the new plugin instance - - - Create and return a new plugin instance. - - - - - - Initializes a new instance of the class - with the specified type. - - The type name of plugin to create. - - - Create the attribute with the plugin type specified. - - - Where possible use the constructor that takes a . - - - - - - Initializes a new instance of the class - with the specified type. - - The type of plugin to create. - - - Create the attribute with the plugin type specified. - - - - - - Creates the plugin object defined by this attribute. - - - - Creates the instance of the object as - specified by this attribute. - - - The plugin object. - - - - Returns a representation of the properties of this object. - - - - Overrides base class method to - return a representation of the properties of this object. - - - A representation of the properties of this object - - - - Gets or sets the type for the plugin. - - - The type for the plugin. - - - - The type for the plugin. - - - - - - Gets or sets the type name for the plugin. - - - The type name for the plugin. - - - - The type name for the plugin. - - - Where possible use the property instead. - - - - - - Assembly level attribute to configure the . - - - - This attribute may only be used at the assembly scope and can only - be used once per assembly. - - - Use this attribute to configure the - without calling one of the - methods. - - - Nicko Cadell - - - - Construct provider attribute with type specified - - the type of the provider to use - - - The provider specified must subclass the - class. - - - - - - Configures the SecurityContextProvider - - The assembly that this attribute was defined on. - The repository to configure. - - - Creates a provider instance from the specified. - Sets this as the default security context provider . - - - - - - Gets or sets the type of the provider to use. - - - the type of the provider to use. - - - - The provider specified must subclass the - class. - - - - - - Use this class to initialize the log4net environment using an Xml tree. - - - - Configures a using an Xml tree. - - - Nicko Cadell - Gert Driesen - - - - Private constructor - - - - - Automatically configures the log4net system based on the - application's configuration settings. - - - - Each application has a configuration file. This has the - same name as the application with '.config' appended. - This file is XML and calling this function prompts the - configurator to look in that file for a section called - log4net that contains the configuration data. - - - To use this method to configure log4net you must specify - the section - handler for the log4net configuration section. See the - for an example. - - - - - - - Automatically configures the using settings - stored in the application's configuration file. - - - - Each application has a configuration file. This has the - same name as the application with '.config' appended. - This file is XML and calling this function prompts the - configurator to look in that file for a section called - log4net that contains the configuration data. - - - To use this method to configure log4net you must specify - the section - handler for the log4net configuration section. See the - for an example. - - - The repository to configure. - - - - Configures log4net using a log4net element - - - - Loads the log4net configuration from the XML element - supplied as . - - - The element to parse. - - - - Configures the using the specified XML - element. - - - Loads the log4net configuration from the XML element - supplied as . - - The repository to configure. - The element to parse. - - - - Configures log4net using the specified configuration file. - - The XML file to load the configuration from. - - - The configuration file must be valid XML. It must contain - at least one element called log4net that holds - the log4net configuration data. - - - The log4net configuration file can possible be specified in the application's - configuration file (either MyAppName.exe.config for a - normal application on Web.config for an ASP.NET application). - - - The first element matching <configuration> will be read as the - configuration. If this file is also a .NET .config file then you must specify - a configuration section for the log4net element otherwise .NET will - complain. Set the type for the section handler to , for example: - - -
- - - - - The following example configures log4net using a configuration file, of which the - location is stored in the application's configuration file : - - - using log4net.Config; - using System.IO; - using System.Configuration; - - ... - - XmlConfigurator.Configure(new FileInfo(ConfigurationSettings.AppSettings["log4net-config-file"])); - - - In the .config file, the path to the log4net can be specified like this : - - - - - - - - - - - - - Configures log4net using the specified configuration URI. - - A URI to load the XML configuration from. - - - The configuration data must be valid XML. It must contain - at least one element called log4net that holds - the log4net configuration data. - - - The must support the URI scheme specified. - - - - - - Configures log4net using the specified configuration data stream. - - A stream to load the XML configuration from. - - - The configuration data must be valid XML. It must contain - at least one element called log4net that holds - the log4net configuration data. - - - Note that this method will NOT close the stream parameter. - - - - - - Configures the using the specified configuration - file. - - The repository to configure. - The XML file to load the configuration from. - - - The configuration file must be valid XML. It must contain - at least one element called log4net that holds - the configuration data. - - - The log4net configuration file can possible be specified in the application's - configuration file (either MyAppName.exe.config for a - normal application on Web.config for an ASP.NET application). - - - The first element matching <configuration> will be read as the - configuration. If this file is also a .NET .config file then you must specify - a configuration section for the log4net element otherwise .NET will - complain. Set the type for the section handler to , for example: - - -
- - - - - The following example configures log4net using a configuration file, of which the - location is stored in the application's configuration file : - - - using log4net.Config; - using System.IO; - using System.Configuration; - - ... - - XmlConfigurator.Configure(new FileInfo(ConfigurationSettings.AppSettings["log4net-config-file"])); - - - In the .config file, the path to the log4net can be specified like this : - - - - - - - - - - - - - Configures the using the specified configuration - URI. - - The repository to configure. - A URI to load the XML configuration from. - - - The configuration data must be valid XML. It must contain - at least one element called log4net that holds - the configuration data. - - - The must support the URI scheme specified. - - - - - - Configures the using the specified configuration - file. - - The repository to configure. - The stream to load the XML configuration from. - - - The configuration data must be valid XML. It must contain - at least one element called log4net that holds - the configuration data. - - - Note that this method will NOT close the stream parameter. - - - - - - Configures log4net using the file specified, monitors the file for changes - and reloads the configuration if a change is detected. - - The XML file to load the configuration from. - - - The configuration file must be valid XML. It must contain - at least one element called log4net that holds - the configuration data. - - - The configuration file will be monitored using a - and depends on the behavior of that class. - - - For more information on how to configure log4net using - a separate configuration file, see . - - - - - - - Configures the using the file specified, - monitors the file for changes and reloads the configuration if a change - is detected. - - The repository to configure. - The XML file to load the configuration from. - - - The configuration file must be valid XML. It must contain - at least one element called log4net that holds - the configuration data. - - - The configuration file will be monitored using a - and depends on the behavior of that class. - - - For more information on how to configure log4net using - a separate configuration file, see . - - - - - - - Configures the specified repository using a log4net element. - - The hierarchy to configure. - The element to parse. - - - Loads the log4net configuration from the XML element - supplied as . - - - This method is ultimately called by one of the Configure methods - to load the configuration from an . - - - - - - Class used to watch config files. - - - - Uses the to monitor - changes to a specified file. Because multiple change notifications - may be raised when the file is modified, a timer is used to - compress the notifications into a single event. The timer - waits for time before delivering - the event notification. If any further - change notifications arrive while the timer is waiting it - is reset and waits again for to - elapse. - - - - - - The default amount of time to wait after receiving notification - before reloading the config file. - - - - - Watch a specified config file used to configure a repository - - The repository to configure. - The configuration file to watch. - - - Watch a specified config file used to configure a repository - - - - - - Holds the FileInfo used to configure the XmlConfigurator - - - - - Holds the repository being configured. - - - - - The timer used to compress the notification events. - - - - - Initializes a new instance of the class. - - The repository to configure. - The configuration file to watch. - - - Initializes a new instance of the class. - - - - - - Event handler used by . - - The firing the event. - The argument indicates the file that caused the event to be fired. - - - This handler reloads the configuration from the file when the event is fired. - - - - - - Event handler used by . - - The firing the event. - The argument indicates the file that caused the event to be fired. - - - This handler reloads the configuration from the file when the event is fired. - - - - - - Called by the timer when the configuration has been updated. - - null - - - - The implementation of the interface suitable - for use with the compact framework - - - - This implementation is a simple - mapping between repository name and - object. - - - The .NET Compact Framework 1.0 does not support retrieving assembly - level attributes therefore unlike the DefaultRepositorySelector - this selector does not examine the calling assembly for attributes. - - - Nicko Cadell - - - - Interface used by the to select the . - - - - The uses a - to specify the policy for selecting the correct - to return to the caller. - - - Nicko Cadell - Gert Driesen - - - - Gets the for the specified assembly. - - The assembly to use to lookup to the - The for the assembly. - - - Gets the for the specified assembly. - - - How the association between and - is made is not defined. The implementation may choose any method for - this association. The results of this method must be repeatable, i.e. - when called again with the same arguments the result must be the - save value. - - - - - - Gets the named . - - The name to use to lookup to the . - The named - - Lookup a named . This is the repository created by - calling . - - - - - Creates a new repository for the assembly specified. - - The assembly to use to create the domain to associate with the . - The type of repository to create, must implement . - The repository created. - - - The created will be associated with the domain - specified such that a call to with the - same assembly specified will return the same repository instance. - - - How the association between and - is made is not defined. The implementation may choose any method for - this association. - - - - - - Creates a new repository with the name specified. - - The name to associate with the . - The type of repository to create, must implement . - The repository created. - - - The created will be associated with the name - specified such that a call to with the - same name will return the same repository instance. - - - - - - Test if a named repository exists - - the named repository to check - true if the repository exists - - - Test if a named repository exists. Use - to create a new repository and to retrieve - a repository. - - - - - - Gets an array of all currently defined repositories. - - - An array of the instances created by - this . - - - Gets an array of all of the repositories created by this selector. - - - - - - Event to notify that a logger repository has been created. - - - Event to notify that a logger repository has been created. - - - - Event raised when a new repository is created. - The event source will be this selector. The event args will - be a which - holds the newly created . - - - - - - Create a new repository selector - - the type of the repositories to create, must implement - - - Create an new compact repository selector. - The default type for repositories must be specified, - an appropriate value would be . - - - throw if is null - throw if does not implement - - - - Get the for the specified assembly - - not used - The default - - - The argument is not used. This selector does not create a - separate repository for each assembly. - - - As a named repository is not specified the default repository is - returned. The default repository is named log4net-default-repository. - - - - - - Get the named - - the name of the repository to lookup - The named - - - Get the named . The default - repository is log4net-default-repository. Other repositories - must be created using the . - If the named repository does not exist an exception is thrown. - - - throw if is null - throw if the does not exist - - - - Create a new repository for the assembly specified - - not used - the type of repository to create, must implement - the repository created - - - The argument is not used. This selector does not create a - separate repository for each assembly. - - - If the is null then the - default repository type specified to the constructor is used. - - - As a named repository is not specified the default repository is - returned. The default repository is named log4net-default-repository. - - - - - - Create a new repository for the repository specified - - the repository to associate with the - the type of repository to create, must implement . - If this param is null then the default repository type is used. - the repository created - - - The created will be associated with the repository - specified such that a call to with the - same repository specified will return the same repository instance. - - - If the named repository already exists an exception will be thrown. - - - If is null then the default - repository type specified to the constructor is used. - - - throw if is null - throw if the already exists - - - - Test if a named repository exists - - the named repository to check - true if the repository exists - - - Test if a named repository exists. Use - to create a new repository and to retrieve - a repository. - - - - - - Gets a list of objects - - an array of all known objects - - - Gets an array of all of the repositories created by this selector. - - - - - - Notify the registered listeners that the repository has been created - - The repository that has been created - - - Raises the LoggerRepositoryCreatedEvent - event. - - - - - - Event to notify that a logger repository has been created. - - - Event to notify that a logger repository has been created. - - - - Event raised when a new repository is created. - The event source will be this selector. The event args will - be a which - holds the newly created . - - - - - - The default implementation of the interface. - - - - Uses attributes defined on the calling assembly to determine how to - configure the hierarchy for the repository. - - - Nicko Cadell - Gert Driesen - - - - Creates a new repository selector. - - The type of the repositories to create, must implement - - - Create an new repository selector. - The default type for repositories must be specified, - an appropriate value would be . - - - is . - does not implement . - - - - Gets the for the specified assembly. - - The assembly use to lookup the . - - - The type of the created and the repository - to create can be overridden by specifying the - attribute on the . - - - The default values are to use the - implementation of the interface and to use the - as the name of the repository. - - - The created will be automatically configured using - any attributes defined on - the . - - - The for the assembly - is . - - - - Gets the for the specified repository. - - The repository to use to lookup the . - The for the specified repository. - - - Returns the named repository. If is null - a is thrown. If the repository - does not exist a is thrown. - - - Use to create a repository. - - - is . - does not exist. - - - - Create a new repository for the assembly specified - - the assembly to use to create the repository to associate with the . - The type of repository to create, must implement . - The repository created. - - - The created will be associated with the repository - specified such that a call to with the - same assembly specified will return the same repository instance. - - - The type of the created and - the repository to create can be overridden by specifying the - attribute on the - . The default values are to use the - implementation of the - interface and to use the - as the name of the repository. - - - The created will be automatically - configured using any - attributes defined on the . - - - If a repository for the already exists - that repository will be returned. An error will not be raised and that - repository may be of a different type to that specified in . - Also the attribute on the - assembly may be used to override the repository type specified in - . - - - is . - - - - Creates a new repository for the assembly specified. - - the assembly to use to create the repository to associate with the . - The type of repository to create, must implement . - The name to assign to the created repository - Set to true to read and apply the assembly attributes - The repository created. - - - The created will be associated with the repository - specified such that a call to with the - same assembly specified will return the same repository instance. - - - The type of the created and - the repository to create can be overridden by specifying the - attribute on the - . The default values are to use the - implementation of the - interface and to use the - as the name of the repository. - - - The created will be automatically - configured using any - attributes defined on the . - - - If a repository for the already exists - that repository will be returned. An error will not be raised and that - repository may be of a different type to that specified in . - Also the attribute on the - assembly may be used to override the repository type specified in - . - - - is . - - - - Creates a new repository for the specified repository. - - The repository to associate with the . - The type of repository to create, must implement . - If this param is then the default repository type is used. - The new repository. - - - The created will be associated with the repository - specified such that a call to with the - same repository specified will return the same repository instance. - - - is . - already exists. - - - - Test if a named repository exists - - the named repository to check - true if the repository exists - - - Test if a named repository exists. Use - to create a new repository and to retrieve - a repository. - - - - - - Gets a list of objects - - an array of all known objects - - - Gets an array of all of the repositories created by this selector. - - - - - - Aliases a repository to an existing repository. - - The repository to alias. - The repository that the repository is aliased to. - - - The repository specified will be aliased to the repository when created. - The repository must not already exist. - - - When the repository is created it must utilize the same repository type as - the repository it is aliased to, otherwise the aliasing will fail. - - - - is . - -or- - is . - - - - - Notifies the registered listeners that the repository has been created. - - The repository that has been created. - - - Raises the event. - - - - - - Gets the repository name and repository type for the specified assembly. - - The assembly that has a . - in/out param to hold the repository name to use for the assembly, caller should set this to the default value before calling. - in/out param to hold the type of the repository to create for the assembly, caller should set this to the default value before calling. - is . - - - - Configures the repository using information from the assembly. - - The assembly containing - attributes which define the configuration for the repository. - The repository to configure. - - is . - -or- - is . - - - - - Loads the attribute defined plugins on the assembly. - - The assembly that contains the attributes. - The repository to add the plugins to. - - is . - -or- - is . - - - - - Loads the attribute defined aliases on the assembly. - - The assembly that contains the attributes. - The repository to alias to. - - is . - -or- - is . - - - - - Event to notify that a logger repository has been created. - - - Event to notify that a logger repository has been created. - - - - Event raised when a new repository is created. - The event source will be this selector. The event args will - be a which - holds the newly created . - - - - - - Defined error codes that can be passed to the method. - - - - Values passed to the method. - - - Nicko Cadell - - - - A general error - - - - - Error while writing output - - - - - Failed to flush file - - - - - Failed to close file - - - - - Unable to open output file - - - - - No layout specified - - - - - Failed to parse address - - - - - Appenders may delegate their error handling to an . - - - - Error handling is a particularly tedious to get right because by - definition errors are hard to predict and to reproduce. - - - Nicko Cadell - Gert Driesen - - - - Handles the error and information about the error condition is passed as - a parameter. - - The message associated with the error. - The that was thrown when the error occurred. - The error code associated with the error. - - - Handles the error and information about the error condition is passed as - a parameter. - - - - - - Prints the error message passed as a parameter. - - The message associated with the error. - The that was thrown when the error occurred. - - - See . - - - - - - Prints the error message passed as a parameter. - - The message associated with the error. - - - See . - - - - - - Interface for objects that require fixing. - - - - Interface that indicates that the object requires fixing before it - can be taken outside the context of the appender's - method. - - - When objects that implement this interface are stored - in the context properties maps - and - are fixed - (see ) the - method will be called. - - - Nicko Cadell - - - - Get a portable version of this object - - the portable instance of this object - - - Get a portable instance object that represents the current - state of this object. The portable object can be stored - and logged from any thread with identical results. - - - - - - Interface that all loggers implement - - - - This interface supports logging events and testing if a level - is enabled for logging. - - - These methods will not throw exceptions. Note to implementor, ensure - that the implementation of these methods cannot allow an exception - to be thrown to the caller. - - - Nicko Cadell - Gert Driesen - - - - This generic form is intended to be used by wrappers. - - The declaring type of the method that is - the stack boundary into the logging system for this call. - The level of the message to be logged. - The message object to log. - the exception to log, including its stack trace. Pass null to not log an exception. - - - Generates a logging event for the specified using - the and . - - - - - - This is the most generic printing method that is intended to be used - by wrappers. - - The event being logged. - - - Logs the specified logging event through this logger. - - - - - - Checks if this logger is enabled for a given passed as parameter. - - The level to check. - - true if this logger is enabled for level, otherwise false. - - - - Test if this logger is going to log events of the specified . - - - - - - Gets the name of the logger. - - - The name of the logger. - - - - The name of this logger - - - - - - Gets the where this - Logger instance is attached to. - - - The that this logger belongs to. - - - - Gets the where this - Logger instance is attached to. - - - - - - Base interface for all wrappers - - - - Base interface for all wrappers. - - - All wrappers must implement this interface. - - - Nicko Cadell - - - - Get the implementation behind this wrapper object. - - - The object that in implementing this object. - - - - The object that in implementing this - object. The Logger object may not - be the same object as this object because of logger decorators. - This gets the actual underlying objects that is used to process - the log events. - - - - - - Delegate used to handle logger repository creation event notifications - - The which created the repository. - The event args - that holds the instance that has been created. - - - Delegate used to handle logger repository creation event notifications. - - - - - - Provides data for the event. - - - - A - event is raised every time a is created. - - - - - - The created - - - - - Construct instance using specified - - the that has been created - - - Construct instance using specified - - - - - - The that has been created - - - The that has been created - - - - The that has been created - - - - - - Test if an triggers an action - - - - Implementations of this interface allow certain appenders to decide - when to perform an appender specific action. - - - The action or behavior triggered is defined by the implementation. - - - Nicko Cadell - - - - Test if this event triggers the action - - The event to check - true if this event triggers the action, otherwise false - - - Return true if this event triggers the action - - - - - - Defines the default set of levels recognized by the system. - - - - Each has an associated . - - - Levels have a numeric that defines the relative - ordering between levels. Two Levels with the same - are deemed to be equivalent. - - - The levels that are recognized by log4net are set for each - and each repository can have different levels defined. The levels are stored - in the on the repository. Levels are - looked up by name from the . - - - When logging at level INFO the actual level used is not but - the value of LoggerRepository.LevelMap["INFO"]. The default value for this is - , but this can be changed by reconfiguring the level map. - - - Each level has a in addition to its . The - is the string that is written into the output log. By default - the display name is the same as the level name, but this can be used to alias levels - or to localize the log output. - - - Some of the predefined levels recognized by the system are: - - - - . - - - . - - - . - - - . - - - . - - - . - - - . - - - - Nicko Cadell - Gert Driesen - - - - Constructor - - Integer value for this level, higher values represent more severe levels. - The string name of this level. - The display name for this level. This may be localized or otherwise different from the name - - - Initializes a new instance of the class with - the specified level name and value. - - - - - - Constructor - - Integer value for this level, higher values represent more severe levels. - The string name of this level. - - - Initializes a new instance of the class with - the specified level name and value. - - - - - - Returns the representation of the current - . - - - A representation of the current . - - - - Returns the level . - - - - - - Compares levels. - - The object to compare against. - true if the objects are equal. - - - Compares the levels of instances, and - defers to base class if the target object is not a - instance. - - - - - - Returns a hash code - - A hash code for the current . - - - Returns a hash code suitable for use in hashing algorithms and data - structures like a hash table. - - - Returns the hash code of the level . - - - - - - Compares this instance to a specified object and returns an - indication of their relative values. - - A instance or to compare with this instance. - - A 32-bit signed integer that indicates the relative order of the - values compared. The return value has these meanings: - - - Value - Meaning - - - Less than zero - This instance is less than . - - - Zero - This instance is equal to . - - - Greater than zero - - This instance is greater than . - -or- - is . - - - - - - - must be an instance of - or ; otherwise, an exception is thrown. - - - is not a . - - - - Returns a value indicating whether a specified - is greater than another specified . - - A - A - - true if is greater than - ; otherwise, false. - - - - Compares two levels. - - - - - - Returns a value indicating whether a specified - is less than another specified . - - A - A - - true if is less than - ; otherwise, false. - - - - Compares two levels. - - - - - - Returns a value indicating whether a specified - is greater than or equal to another specified . - - A - A - - true if is greater than or equal to - ; otherwise, false. - - - - Compares two levels. - - - - - - Returns a value indicating whether a specified - is less than or equal to another specified . - - A - A - - true if is less than or equal to - ; otherwise, false. - - - - Compares two levels. - - - - - - Returns a value indicating whether two specified - objects have the same value. - - A or . - A or . - - true if the value of is the same as the - value of ; otherwise, false. - - - - Compares two levels. - - - - - - Returns a value indicating whether two specified - objects have different values. - - A or . - A or . - - true if the value of is different from - the value of ; otherwise, false. - - - - Compares two levels. - - - - - - Compares two specified instances. - - The first to compare. - The second to compare. - - A 32-bit signed integer that indicates the relative order of the - two values compared. The return value has these meanings: - - - Value - Meaning - - - Less than zero - is less than . - - - Zero - is equal to . - - - Greater than zero - is greater than . - - - - - - Compares two levels. - - - - - - The level designates a higher level than all the rest. - - - - - The level designates very severe error events. - System unusable, emergencies. - - - - - The level designates very severe error events - that will presumably lead the application to abort. - - - - - The level designates very severe error events. - Take immediate action, alerts. - - - - - The level designates very severe error events. - Critical condition, critical. - - - - - The level designates very severe error events. - - - - - The level designates error events that might - still allow the application to continue running. - - - - - The level designates potentially harmful - situations. - - - - - The level designates informational messages - that highlight the progress of the application at the highest level. - - - - - The level designates informational messages that - highlight the progress of the application at coarse-grained level. - - - - - The level designates fine-grained informational - events that are most useful to debug an application. - - - - - The level designates fine-grained informational - events that are most useful to debug an application. - - - - - The level designates fine-grained informational - events that are most useful to debug an application. - - - - - The level designates fine-grained informational - events that are most useful to debug an application. - - - - - The level designates fine-grained informational - events that are most useful to debug an application. - - - - - The level designates fine-grained informational - events that are most useful to debug an application. - - - - - The level designates the lowest level possible. - - - - - Gets the name of this level. - - - The name of this level. - - - - Gets the name of this level. - - - - - - Gets the value of this level. - - - The value of this level. - - - - Gets the value of this level. - - - - - - Gets the display name of this level. - - - The display name of this level. - - - - Gets the display name of this level. - - - - - - A strongly-typed collection of objects. - - Nicko Cadell - - - - Creates a read-only wrapper for a LevelCollection instance. - - list to create a readonly wrapper arround - - A LevelCollection wrapper that is read-only. - - - - - Initializes a new instance of the LevelCollection class - that is empty and has the default initial capacity. - - - - - Initializes a new instance of the LevelCollection class - that has the specified initial capacity. - - - The number of elements that the new LevelCollection is initially capable of storing. - - - - - Initializes a new instance of the LevelCollection class - that contains elements copied from the specified LevelCollection. - - The LevelCollection whose elements are copied to the new collection. - - - - Initializes a new instance of the LevelCollection class - that contains elements copied from the specified array. - - The array whose elements are copied to the new list. - - - - Initializes a new instance of the LevelCollection class - that contains elements copied from the specified collection. - - The collection whose elements are copied to the new list. - - - - Allow subclasses to avoid our default constructors - - - - - - Copies the entire LevelCollection to a one-dimensional - array. - - The one-dimensional array to copy to. - - - - Copies the entire LevelCollection to a one-dimensional - array, starting at the specified index of the target array. - - The one-dimensional array to copy to. - The zero-based index in at which copying begins. - - - - Adds a to the end of the LevelCollection. - - The to be added to the end of the LevelCollection. - The index at which the value has been added. - - - - Removes all elements from the LevelCollection. - - - - - Creates a shallow copy of the . - - A new with a shallow copy of the collection data. - - - - Determines whether a given is in the LevelCollection. - - The to check for. - true if is found in the LevelCollection; otherwise, false. - - - - Returns the zero-based index of the first occurrence of a - in the LevelCollection. - - The to locate in the LevelCollection. - - The zero-based index of the first occurrence of - in the entire LevelCollection, if found; otherwise, -1. - - - - - Inserts an element into the LevelCollection at the specified index. - - The zero-based index at which should be inserted. - The to insert. - - is less than zero - -or- - is equal to or greater than . - - - - - Removes the first occurrence of a specific from the LevelCollection. - - The to remove from the LevelCollection. - - The specified was not found in the LevelCollection. - - - - - Removes the element at the specified index of the LevelCollection. - - The zero-based index of the element to remove. - - is less than zero - -or- - is equal to or greater than . - - - - - Returns an enumerator that can iterate through the LevelCollection. - - An for the entire LevelCollection. - - - - Adds the elements of another LevelCollection to the current LevelCollection. - - The LevelCollection whose elements should be added to the end of the current LevelCollection. - The new of the LevelCollection. - - - - Adds the elements of a array to the current LevelCollection. - - The array whose elements should be added to the end of the LevelCollection. - The new of the LevelCollection. - - - - Adds the elements of a collection to the current LevelCollection. - - The collection whose elements should be added to the end of the LevelCollection. - The new of the LevelCollection. - - - - Sets the capacity to the actual number of elements. - - - - - is less than zero - -or- - is equal to or greater than . - - - - - is less than zero - -or- - is equal to or greater than . - - - - - Gets the number of elements actually contained in the LevelCollection. - - - - - Gets a value indicating whether access to the collection is synchronized (thread-safe). - - true if access to the ICollection is synchronized (thread-safe); otherwise, false. - - - - Gets an object that can be used to synchronize access to the collection. - - - - - Gets or sets the at the specified index. - - The zero-based index of the element to get or set. - - is less than zero - -or- - is equal to or greater than . - - - - - Gets a value indicating whether the collection has a fixed size. - - true if the collection has a fixed size; otherwise, false. The default is false - - - - Gets a value indicating whether the IList is read-only. - - true if the collection is read-only; otherwise, false. The default is false - - - - Gets or sets the number of elements the LevelCollection can contain. - - - - - Supports type-safe iteration over a . - - - - - Advances the enumerator to the next element in the collection. - - - true if the enumerator was successfully advanced to the next element; - false if the enumerator has passed the end of the collection. - - - The collection was modified after the enumerator was created. - - - - - Sets the enumerator to its initial position, before the first element in the collection. - - - - - Gets the current element in the collection. - - - - - Type visible only to our subclasses - Used to access protected constructor - - - - - A value - - - - - Supports simple iteration over a . - - - - - Initializes a new instance of the Enumerator class. - - - - - - Advances the enumerator to the next element in the collection. - - - true if the enumerator was successfully advanced to the next element; - false if the enumerator has passed the end of the collection. - - - The collection was modified after the enumerator was created. - - - - - Sets the enumerator to its initial position, before the first element in the collection. - - - - - Gets the current element in the collection. - - - - - An evaluator that triggers at a threshold level - - - - This evaluator will trigger if the level of the event - passed to - is equal to or greater than the - level. - - - Nicko Cadell - - - - The threshold for triggering - - - - - Create a new evaluator using the threshold. - - - - Create a new evaluator using the threshold. - - - This evaluator will trigger if the level of the event - passed to - is equal to or greater than the - level. - - - - - - Create a new evaluator using the specified threshold. - - the threshold to trigger at - - - Create a new evaluator using the specified threshold. - - - This evaluator will trigger if the level of the event - passed to - is equal to or greater than the - level. - - - - - - Is this the triggering event? - - The event to check - This method returns true, if the event level - is equal or higher than the . - Otherwise it returns false - - - This evaluator will trigger if the level of the event - passed to - is equal to or greater than the - level. - - - - - - the threshold to trigger at - - - The that will cause this evaluator to trigger - - - - This evaluator will trigger if the level of the event - passed to - is equal to or greater than the - level. - - - - - - Mapping between string name and Level object - - - - Mapping between string name and object. - This mapping is held separately for each . - The level name is case insensitive. - - - Nicko Cadell - - - - Mapping from level name to Level object. The - level name is case insensitive - - - - - Construct the level map - - - - Construct the level map. - - - - - - Clear the internal maps of all levels - - - - Clear the internal maps of all levels - - - - - - Create a new Level and add it to the map - - the string to display for the Level - the level value to give to the Level - - - Create a new Level and add it to the map - - - - - - - Create a new Level and add it to the map - - the string to display for the Level - the level value to give to the Level - the display name to give to the Level - - - Create a new Level and add it to the map - - - - - - Add a Level to the map - - the Level to add - - - Add a Level to the map - - - - - - Lookup a named level from the map - - the name of the level to lookup is taken from this level. - If the level is not set on the map then this level is added - the level in the map with the name specified - - - Lookup a named level from the map. The name of the level to lookup is taken - from the property of the - argument. - - - If no level with the specified name is found then the - argument is added to the level map - and returned. - - - - - - Lookup a by name - - The name of the Level to lookup - a Level from the map with the name specified - - - Returns the from the - map with the name specified. If the no level is - found then null is returned. - - - - - - Return all possible levels as a list of Level objects. - - all possible levels as a list of Level objects - - - Return all possible levels as a list of Level objects. - - - - - - The internal representation of caller location information. - - - - This class uses the System.Diagnostics.StackTrace class to generate - a call stack. The caller's information is then extracted from this stack. - - - The System.Diagnostics.StackTrace class is not supported on the - .NET Compact Framework 1.0 therefore caller location information is not - available on that framework. - - - The System.Diagnostics.StackTrace class has this to say about Release builds: - - - "StackTrace information will be most informative with Debug build configurations. - By default, Debug builds include debug symbols, while Release builds do not. The - debug symbols contain most of the file, method name, line number, and column - information used in constructing StackFrame and StackTrace objects. StackTrace - might not report as many method calls as expected, due to code transformations - that occur during optimization." - - - This means that in a Release build the caller information may be incomplete or may - not exist at all! Therefore caller location information cannot be relied upon in a Release build. - - - Nicko Cadell - Gert Driesen - - - - When location information is not available the constant - NA is returned. Current value of this string - constant is ?. - - - - - Constructor - - The declaring type of the method that is - the stack boundary into the logging system for this call. - - - Initializes a new instance of the - class based on the current thread. - - - - - - Constructor - - The fully qualified class name. - The method name. - The file name. - The line number of the method within the file. - - - Initializes a new instance of the - class with the specified data. - - - - - - Gets the fully qualified class name of the caller making the logging - request. - - - The fully qualified class name of the caller making the logging - request. - - - - Gets the fully qualified class name of the caller making the logging - request. - - - - - - Gets the file name of the caller. - - - The file name of the caller. - - - - Gets the file name of the caller. - - - - - - Gets the line number of the caller. - - - The line number of the caller. - - - - Gets the line number of the caller. - - - - - - Gets the method name of the caller. - - - The method name of the caller. - - - - Gets the method name of the caller. - - - - - - Gets all available caller information - - - All available caller information, in the format - fully.qualified.classname.of.caller.methodName(Filename:line) - - - - Gets all available caller information, in the format - fully.qualified.classname.of.caller.methodName(Filename:line) - - - - - - Static manager that controls the creation of repositories - - - - Static manager that controls the creation of repositories - - - This class is used by the wrapper managers (e.g. ) - to provide access to the objects. - - - This manager also holds the that is used to - lookup and create repositories. The selector can be set either programmatically using - the property, or by setting the log4net.RepositorySelector - AppSetting in the applications config file to the fully qualified type name of the - selector to use. - - - Nicko Cadell - Gert Driesen - - - - Private constructor to prevent instances. Only static methods should be used. - - - - Private constructor to prevent instances. Only static methods should be used. - - - - - - Hook the shutdown event - - - - On the full .NET runtime, the static constructor hooks up the - AppDomain.ProcessExit and AppDomain.DomainUnload> events. - These are used to shutdown the log4net system as the application exits. - - - - - - Register for ProcessExit and DomainUnload events on the AppDomain - - - - This needs to be in a separate method because the events make - a LinkDemand for the ControlAppDomain SecurityPermission. Because - this is a LinkDemand it is demanded at JIT time. Therefore we cannot - catch the exception in the method itself, we have to catch it in the - caller. - - - - - - Return the default instance. - - the repository to lookup in - Return the default instance - - - Gets the for the repository specified - by the argument. - - - - - - Returns the default instance. - - The assembly to use to lookup the repository. - The default instance. - - - - Return the default instance. - - the repository to lookup in - Return the default instance - - - Gets the for the repository specified - by the argument. - - - - - - Returns the default instance. - - The assembly to use to lookup the repository. - The default instance. - - - Returns the default instance. - - - - - - Returns the named logger if it exists. - - The repository to lookup in. - The fully qualified logger name to look for. - - The logger found, or null if the named logger does not exist in the - specified repository. - - - - If the named logger exists (in the specified repository) then it - returns a reference to the logger, otherwise it returns - null. - - - - - - Returns the named logger if it exists. - - The assembly to use to lookup the repository. - The fully qualified logger name to look for. - - The logger found, or null if the named logger does not exist in the - specified assembly's repository. - - - - If the named logger exists (in the specified assembly's repository) then it - returns a reference to the logger, otherwise it returns - null. - - - - - - Returns all the currently defined loggers in the specified repository. - - The repository to lookup in. - All the defined loggers. - - - The root logger is not included in the returned array. - - - - - - Returns all the currently defined loggers in the specified assembly's repository. - - The assembly to use to lookup the repository. - All the defined loggers. - - - The root logger is not included in the returned array. - - - - - - Retrieves or creates a named logger. - - The repository to lookup in. - The name of the logger to retrieve. - The logger with the name specified. - - - Retrieves a logger named as the - parameter. If the named logger already exists, then the - existing instance will be returned. Otherwise, a new instance is - created. - - - By default, loggers do not have a set level but inherit - it from the hierarchy. This is one of the central features of - log4net. - - - - - - Retrieves or creates a named logger. - - The assembly to use to lookup the repository. - The name of the logger to retrieve. - The logger with the name specified. - - - Retrieves a logger named as the - parameter. If the named logger already exists, then the - existing instance will be returned. Otherwise, a new instance is - created. - - - By default, loggers do not have a set level but inherit - it from the hierarchy. This is one of the central features of - log4net. - - - - - - Shorthand for . - - The repository to lookup in. - The of which the fullname will be used as the name of the logger to retrieve. - The logger with the name specified. - - - Gets the logger for the fully qualified name of the type specified. - - - - - - Shorthand for . - - the assembly to use to lookup the repository - The of which the fullname will be used as the name of the logger to retrieve. - The logger with the name specified. - - - Gets the logger for the fully qualified name of the type specified. - - - - - - Shuts down the log4net system. - - - - Calling this method will safely close and remove all - appenders in all the loggers including root contained in all the - default repositories. - - - Some appenders need to be closed before the application exists. - Otherwise, pending logging events might be lost. - - - The shutdown method is careful to close nested - appenders before closing regular appenders. This is allows - configurations where a regular appender is attached to a logger - and again to a nested appender. - - - - - - Shuts down the repository for the repository specified. - - The repository to shutdown. - - - Calling this method will safely close and remove all - appenders in all the loggers including root contained in the - repository for the specified. - - - Some appenders need to be closed before the application exists. - Otherwise, pending logging events might be lost. - - - The shutdown method is careful to close nested - appenders before closing regular appenders. This is allows - configurations where a regular appender is attached to a logger - and again to a nested appender. - - - - - - Shuts down the repository for the repository specified. - - The assembly to use to lookup the repository. - - - Calling this method will safely close and remove all - appenders in all the loggers including root contained in the - repository for the repository. The repository is looked up using - the specified. - - - Some appenders need to be closed before the application exists. - Otherwise, pending logging events might be lost. - - - The shutdown method is careful to close nested - appenders before closing regular appenders. This is allows - configurations where a regular appender is attached to a logger - and again to a nested appender. - - - - - - Resets all values contained in this repository instance to their defaults. - - The repository to reset. - - - Resets all values contained in the repository instance to their - defaults. This removes all appenders from all loggers, sets - the level of all non-root loggers to null, - sets their additivity flag to true and sets the level - of the root logger to . Moreover, - message disabling is set its default "off" value. - - - - - - Resets all values contained in this repository instance to their defaults. - - The assembly to use to lookup the repository to reset. - - - Resets all values contained in the repository instance to their - defaults. This removes all appenders from all loggers, sets - the level of all non-root loggers to null, - sets their additivity flag to true and sets the level - of the root logger to . Moreover, - message disabling is set its default "off" value. - - - - - - Creates a repository with the specified name. - - The name of the repository, this must be unique amongst repositories. - The created for the repository. - - - CreateDomain is obsolete. Use CreateRepository instead of CreateDomain. - - - Creates the default type of which is a - object. - - - The name must be unique. Repositories cannot be redefined. - An will be thrown if the repository already exists. - - - The specified repository already exists. - - - - Creates a repository with the specified name. - - The name of the repository, this must be unique amongst repositories. - The created for the repository. - - - Creates the default type of which is a - object. - - - The name must be unique. Repositories cannot be redefined. - An will be thrown if the repository already exists. - - - The specified repository already exists. - - - - Creates a repository with the specified name and repository type. - - The name of the repository, this must be unique to the repository. - A that implements - and has a no arg constructor. An instance of this type will be created to act - as the for the repository specified. - The created for the repository. - - - CreateDomain is obsolete. Use CreateRepository instead of CreateDomain. - - - The name must be unique. Repositories cannot be redefined. - An Exception will be thrown if the repository already exists. - - - The specified repository already exists. - - - - Creates a repository with the specified name and repository type. - - The name of the repository, this must be unique to the repository. - A that implements - and has a no arg constructor. An instance of this type will be created to act - as the for the repository specified. - The created for the repository. - - - The name must be unique. Repositories cannot be redefined. - An Exception will be thrown if the repository already exists. - - - The specified repository already exists. - - - - Creates a repository for the specified assembly and repository type. - - The assembly to use to get the name of the repository. - A that implements - and has a no arg constructor. An instance of this type will be created to act - as the for the repository specified. - The created for the repository. - - - CreateDomain is obsolete. Use CreateRepository instead of CreateDomain. - - - The created will be associated with the repository - specified such that a call to with the - same assembly specified will return the same repository instance. - - - - - - Creates a repository for the specified assembly and repository type. - - The assembly to use to get the name of the repository. - A that implements - and has a no arg constructor. An instance of this type will be created to act - as the for the repository specified. - The created for the repository. - - - The created will be associated with the repository - specified such that a call to with the - same assembly specified will return the same repository instance. - - - - - - Gets an array of all currently defined repositories. - - An array of all the known objects. - - - Gets an array of all currently defined repositories. - - - - - - Internal method to get pertinent version info. - - A string of version info. - - - - Called when the event fires - - the that is exiting - null - - - Called when the event fires. - - - When the event is triggered the log4net system is . - - - - - - Called when the event fires - - the that is exiting - null - - - Called when the event fires. - - - When the event is triggered the log4net system is . - - - - - - Initialize the default repository selector - - - - - Gets or sets the repository selector used by the . - - - The repository selector used by the . - - - - The repository selector () is used by - the to create and select repositories - (). - - - The caller to supplies either a string name - or an assembly (if not supplied the assembly is inferred using - ). - - - This context is used by the selector to lookup a specific repository. - - - For the full .NET Framework, the default repository is DefaultRepositorySelector; - for the .NET Compact Framework CompactRepositorySelector is the default - repository. - - - - - - Implementation of the interface. - - - - This class should be used as the base for all wrapper implementations. - - - Nicko Cadell - Gert Driesen - - - - Constructs a new wrapper for the specified logger. - - The logger to wrap. - - - Constructs a new wrapper for the specified logger. - - - - - - The logger that this object is wrapping - - - - - Gets the implementation behind this wrapper object. - - - The object that this object is implementing. - - - - The Logger object may not be the same object as this object - because of logger decorators. - - - This gets the actual underlying objects that is used to process - the log events. - - - - - - Portable data structure used by - - - - Portable data structure used by - - - Nicko Cadell - - - - The logger name. - - - - The logger name. - - - - - - Level of logging event. - - - - Level of logging event. Level cannot be Serializable - because it is a flyweight. Due to its special serialization it - cannot be declared final either. - - - - - - The application supplied message. - - - - The application supplied message of logging event. - - - - - - The name of thread - - - - The name of thread in which this logging event was generated - - - - - - The time the event was logged - - - - The TimeStamp is stored in the local time zone for this computer. - - - - - - Location information for the caller. - - - - Location information for the caller. - - - - - - String representation of the user - - - - String representation of the user's windows name, - like DOMAIN\username - - - - - - String representation of the identity. - - - - String representation of the current thread's principal identity. - - - - - - The string representation of the exception - - - - The string representation of the exception - - - - - - String representation of the AppDomain. - - - - String representation of the AppDomain. - - - - - - Additional event specific properties - - - - A logger or an appender may attach additional - properties to specific events. These properties - have a string key and an object value. - - - - - - Flags passed to the property - - - - Flags passed to the property - - - Nicko Cadell - - - - Fix the MDC - - - - - Fix the NDC - - - - - Fix the rendered message - - - - - Fix the thread name - - - - - Fix the callers location information - - - CAUTION: Very slow to generate - - - - - Fix the callers windows user name - - - CAUTION: Slow to generate - - - - - Fix the domain friendly name - - - - - Fix the callers principal name - - - CAUTION: May be slow to generate - - - - - Fix the exception text - - - - - Fix the event properties - - - - - No fields fixed - - - - - All fields fixed - - - - - Partial fields fixed - - - - This set of partial fields gives good performance. The following fields are fixed: - - - - - - - - - - - - - The internal representation of logging events. - - - - When an affirmative decision is made to log then a - instance is created. This instance - is passed around to the different log4net components. - - - This class is of concern to those wishing to extend log4net. - - - Some of the values in instances of - are considered volatile, that is the values are correct at the - time the event is delivered to appenders, but will not be consistent - at any time afterwards. If an event is to be stored and then processed - at a later time these volatile values must be fixed by calling - . There is a performance penalty - for incurred by calling but it - is essential to maintaining data consistency. - - - Nicko Cadell - Gert Driesen - Douglas de la Torre - Daniel Cazzulino - - - - The key into the Properties map for the host name value. - - - - - The key into the Properties map for the thread identity value. - - - - - The key into the Properties map for the user name value. - - - - - Initializes a new instance of the class - from the supplied parameters. - - The declaring type of the method that is - the stack boundary into the logging system for this call. - The repository this event is logged in. - The name of the logger of this event. - The level of this event. - The message of this event. - The exception for this event. - - - Except , and , - all fields of LoggingEvent are filled when actually needed. Call - to cache all data locally - to prevent inconsistencies. - - This method is called by the log4net framework - to create a logging event. - - - - - - Initializes a new instance of the class - using specific data. - - The declaring type of the method that is - the stack boundary into the logging system for this call. - The repository this event is logged in. - Data used to initialize the logging event. - The fields in the struct that have already been fixed. - - - This constructor is provided to allow a - to be created independently of the log4net framework. This can - be useful if you require a custom serialization scheme. - - - Use the method to obtain an - instance of the class. - - - The parameter should be used to specify which fields in the - struct have been preset. Fields not specified in the - will be captured from the environment if requested or fixed. - - - - - - Initializes a new instance of the class - using specific data. - - The declaring type of the method that is - the stack boundary into the logging system for this call. - The repository this event is logged in. - Data used to initialize the logging event. - - - This constructor is provided to allow a - to be created independently of the log4net framework. This can - be useful if you require a custom serialization scheme. - - - Use the method to obtain an - instance of the class. - - - This constructor sets this objects flags to , - this assumes that all the data relating to this event is passed in via the - parameter and no other data should be captured from the environment. - - - - - - Initializes a new instance of the class - using specific data. - - Data used to initialize the logging event. - - - This constructor is provided to allow a - to be created independently of the log4net framework. This can - be useful if you require a custom serialization scheme. - - - Use the method to obtain an - instance of the class. - - - This constructor sets this objects flags to , - this assumes that all the data relating to this event is passed in via the - parameter and no other data should be captured from the environment. - - - - - - Serialization constructor - - The that holds the serialized object data. - The that contains contextual information about the source or destination. - - - Initializes a new instance of the class - with serialized data. - - - - - - Ensure that the repository is set. - - the value for the repository - - - - Write the rendered message to a TextWriter - - the writer to write the message to - - - Unlike the property this method - does store the message data in the internal cache. Therefore - if called only once this method should be faster than the - property, however if the message is - to be accessed multiple times then the property will be more efficient. - - - - - - Serializes this object into the provided. - - The to populate with data. - The destination for this serialization. - - - The data in this event must be fixed before it can be serialized. - - - The method must be called during the - method call if this event - is to be used outside that method. - - - - - - Gets the portable data for this . - - The for this event. - - - A new can be constructed using a - instance. - - - Does a fix of the data - in the logging event before returning the event data. - - - - - - Gets the portable data for this . - - The set of data to ensure is fixed in the LoggingEventData - The for this event. - - - A new can be constructed using a - instance. - - - - - - Returns this event's exception's rendered using the - . - - - This event's exception's rendered using the . - - - - Obsolete. Use instead. - - - - - - Returns this event's exception's rendered using the - . - - - This event's exception's rendered using the . - - - - Returns this event's exception's rendered using the - . - - - - - - Fix instance fields that hold volatile data. - - - - Some of the values in instances of - are considered volatile, that is the values are correct at the - time the event is delivered to appenders, but will not be consistent - at any time afterwards. If an event is to be stored and then processed - at a later time these volatile values must be fixed by calling - . There is a performance penalty - incurred by calling but it - is essential to maintaining data consistency. - - - Calling is equivalent to - calling passing the parameter - false. - - - See for more - information. - - - - - - Fixes instance fields that hold volatile data. - - Set to true to not fix data that takes a long time to fix. - - - Some of the values in instances of - are considered volatile, that is the values are correct at the - time the event is delivered to appenders, but will not be consistent - at any time afterwards. If an event is to be stored and then processed - at a later time these volatile values must be fixed by calling - . There is a performance penalty - for incurred by calling but it - is essential to maintaining data consistency. - - - The param controls the data that - is fixed. Some of the data that can be fixed takes a long time to - generate, therefore if you do not require those settings to be fixed - they can be ignored by setting the param - to true. This setting will ignore the - and settings. - - - Set to false to ensure that all - settings are fixed. - - - - - - Fix the fields specified by the parameter - - the fields to fix - - - Only fields specified in the will be fixed. - Fields will not be fixed if they have previously been fixed. - It is not possible to 'unfix' a field. - - - - - - Lookup a composite property in this event - - the key for the property to lookup - the value for the property - - - This event has composite properties that combine together properties from - several different contexts in the following order: - - - this events properties - - This event has that can be set. These - properties are specific to this event only. - - - - the thread properties - - The that are set on the current - thread. These properties are shared by all events logged on this thread. - - - - the global properties - - The that are set globally. These - properties are shared by all the threads in the AppDomain. - - - - - - - - - Get all the composite properties in this event - - the containing all the properties - - - See for details of the composite properties - stored by the event. - - - This method returns a single containing all the - properties defined for this event. - - - - - - The internal logging event data. - - - - - The internal logging event data. - - - - - The internal logging event data. - - - - - The fully qualified Type of the calling - logger class in the stack frame (i.e. the declaring type of the method). - - - - - The application supplied message of logging event. - - - - - The exception that was thrown. - - - This is not serialized. The string representation - is serialized instead. - - - - - The repository that generated the logging event - - - This is not serialized. - - - - - The fix state for this event - - - These flags indicate which fields have been fixed. - Not serialized. - - - - - Indicated that the internal cache is updateable (ie not fixed) - - - This is a seperate flag to m_fixFlags as it allows incrementel fixing and simpler - changes in the caching strategy. - - - - - Gets the time when the current process started. - - - This is the time when this process started. - - - - The TimeStamp is stored in the local time zone for this computer. - - - Tries to get the start time for the current process. - Failing that it returns the time of the first call to - this property. - - - Note that AppDomains may be loaded and unloaded within the - same process without the process terminating and therefore - without the process start time being reset. - - - - - - Gets the of the logging event. - - - The of the logging event. - - - - Gets the of the logging event. - - - - - - Gets the time of the logging event. - - - The time of the logging event. - - - - The TimeStamp is stored in the local time zone for this computer. - - - - - - Gets the name of the logger that logged the event. - - - The name of the logger that logged the event. - - - - Gets the name of the logger that logged the event. - - - - - - Gets the location information for this logging event. - - - The location information for this logging event. - - - - The collected information is cached for future use. - - - See the class for more information on - supported frameworks and the different behavior in Debug and - Release builds. - - - - - - Gets the message object used to initialize this event. - - - The message object used to initialize this event. - - - - Gets the message object used to initialize this event. - Note that this event may not have a valid message object. - If the event is serialized the message object will not - be transferred. To get the text of the message the - property must be used - not this property. - - - If there is no defined message object for this event then - null will be returned. - - - - - - Gets the exception object used to initialize this event. - - - The exception object used to initialize this event. - - - - Gets the exception object used to initialize this event. - Note that this event may not have a valid exception object. - If the event is serialized the exception object will not - be transferred. To get the text of the exception the - method must be used - not this property. - - - If there is no defined exception object for this event then - null will be returned. - - - - - - The that this event was created in. - - - - The that this event was created in. - - - - - - Gets the message, rendered through the . - - - The message rendered through the . - - - - The collected information is cached for future use. - - - - - - Gets the name of the current thread. - - - The name of the current thread, or the thread ID when - the name is not available. - - - - The collected information is cached for future use. - - - - - - Gets the name of the current user. - - - The name of the current user, or NOT AVAILABLE when the - underlying runtime has no support for retrieving the name of the - current user. - - - - Calls WindowsIdentity.GetCurrent().Name to get the name of - the current windows user. - - - To improve performance, we could cache the string representation of - the name, and reuse that as long as the identity stayed constant. - Once the identity changed, we would need to re-assign and re-render - the string. - - - However, the WindowsIdentity.GetCurrent() call seems to - return different objects every time, so the current implementation - doesn't do this type of caching. - - - Timing for these operations: - - - - Method - Results - - - WindowsIdentity.GetCurrent() - 10000 loops, 00:00:00.2031250 seconds - - - WindowsIdentity.GetCurrent().Name - 10000 loops, 00:00:08.0468750 seconds - - - - This means we could speed things up almost 40 times by caching the - value of the WindowsIdentity.GetCurrent().Name property, since - this takes (8.04-0.20) = 7.84375 seconds. - - - - - - Gets the identity of the current thread principal. - - - The string name of the identity of the current thread principal. - - - - Calls System.Threading.Thread.CurrentPrincipal.Identity.Name to get - the name of the current thread principal. - - - - - - Gets the AppDomain friendly name. - - - The AppDomain friendly name. - - - - Gets the AppDomain friendly name. - - - - - - Additional event specific properties. - - - Additional event specific properties. - - - - A logger or an appender may attach additional - properties to specific events. These properties - have a string key and an object value. - - - This property is for events that have been added directly to - this event. The aggregate properties (which include these - event properties) can be retrieved using - and . - - - Once the properties have been fixed this property - returns the combined cached properties. This ensures that updates to - this property are always reflected in the underlying storage. When - returning the combined properties there may be more keys in the - Dictionary than expected. - - - - - - The fixed fields in this event - - - The set of fields that are fixed in this event - - - - Fields will not be fixed if they have previously been fixed. - It is not possible to 'unfix' a field. - - - - - - Implementation of wrapper interface. - - - - This implementation of the interface - forwards to the held by the base class. - - - This logger has methods to allow the caller to log at the following - levels: - - - - DEBUG - - The and methods log messages - at the DEBUG level. That is the level with that name defined in the - repositories . The default value - for this level is . The - property tests if this level is enabled for logging. - - - - INFO - - The and methods log messages - at the INFO level. That is the level with that name defined in the - repositories . The default value - for this level is . The - property tests if this level is enabled for logging. - - - - WARN - - The and methods log messages - at the WARN level. That is the level with that name defined in the - repositories . The default value - for this level is . The - property tests if this level is enabled for logging. - - - - ERROR - - The and methods log messages - at the ERROR level. That is the level with that name defined in the - repositories . The default value - for this level is . The - property tests if this level is enabled for logging. - - - - FATAL - - The and methods log messages - at the FATAL level. That is the level with that name defined in the - repositories . The default value - for this level is . The - property tests if this level is enabled for logging. - - - - - The values for these levels and their semantic meanings can be changed by - configuring the for the repository. - - - Nicko Cadell - Gert Driesen - - - - The ILog interface is use by application to log messages into - the log4net framework. - - - - Use the to obtain logger instances - that implement this interface. The - static method is used to get logger instances. - - - This class contains methods for logging at different levels and also - has properties for determining if those logging levels are - enabled in the current configuration. - - - This interface can be implemented in different ways. This documentation - specifies reasonable behavior that a caller can expect from the actual - implementation, however different implementations reserve the right to - do things differently. - - - Simple example of logging messages - - ILog log = LogManager.GetLogger("application-log"); - - log.Info("Application Start"); - log.Debug("This is a debug message"); - - if (log.IsDebugEnabled) - { - log.Debug("This is another debug message"); - } - - - - - Nicko Cadell - Gert Driesen - - - Log a message object with the level. - - Log a message object with the level. - - The message object to log. - - - This method first checks if this logger is DEBUG - enabled by comparing the level of this logger with the - level. If this logger is - DEBUG enabled, then it converts the message object - (passed as parameter) to a string by invoking the appropriate - . It then - proceeds to call all the registered appenders in this logger - and also higher in the hierarchy depending on the value of - the additivity flag. - - WARNING Note that passing an - to this method will print the name of the - but no stack trace. To print a stack trace use the - form instead. - - - - - - - - Log a message object with the level including - the stack trace of the passed - as a parameter. - - The message object to log. - The exception to log, including its stack trace. - - - See the form for more detailed information. - - - - - - - Log a formatted string with the level. - - Logs a formatted message string with the level. - - A String containing zero or more format items - An Object array containing zero or more objects to format - - - The message is formatted using the String.Format method. See - for details of the syntax of the format string and the behavior - of the formatting. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - - - Logs a formatted message string with the level. - - A String containing zero or more format items - An Object to format - - - The message is formatted using the String.Format method. See - for details of the syntax of the format string and the behavior - of the formatting. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - - - Logs a formatted message string with the level. - - A String containing zero or more format items - An Object to format - An Object to format - - - The message is formatted using the String.Format method. See - for details of the syntax of the format string and the behavior - of the formatting. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - - - Logs a formatted message string with the level. - - A String containing zero or more format items - An Object to format - An Object to format - An Object to format - - - The message is formatted using the String.Format method. See - for details of the syntax of the format string and the behavior - of the formatting. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - - - Logs a formatted message string with the level. - - An that supplies culture-specific formatting information - A String containing zero or more format items - An Object array containing zero or more objects to format - - - The message is formatted using the String.Format method. See - for details of the syntax of the format string and the behavior - of the formatting. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - - Log a message object with the level. - - Logs a message object with the level. - - - - This method first checks if this logger is INFO - enabled by comparing the level of this logger with the - level. If this logger is - INFO enabled, then it converts the message object - (passed as parameter) to a string by invoking the appropriate - . It then - proceeds to call all the registered appenders in this logger - and also higher in the hierarchy depending on the value of the - additivity flag. - - WARNING Note that passing an - to this method will print the name of the - but no stack trace. To print a stack trace use the - form instead. - - - The message object to log. - - - - - - Logs a message object with the INFO level including - the stack trace of the passed - as a parameter. - - The message object to log. - The exception to log, including its stack trace. - - - See the form for more detailed information. - - - - - - - Log a formatted message string with the level. - - Logs a formatted message string with the level. - - A String containing zero or more format items - An Object array containing zero or more objects to format - - - The message is formatted using the String.Format method. See - for details of the syntax of the format string and the behavior - of the formatting. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - - - Logs a formatted message string with the level. - - A String containing zero or more format items - An Object to format - - - The message is formatted using the String.Format method. See - for details of the syntax of the format string and the behavior - of the formatting. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - - - Logs a formatted message string with the level. - - A String containing zero or more format items - An Object to format - An Object to format - - - The message is formatted using the String.Format method. See - for details of the syntax of the format string and the behavior - of the formatting. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - - - Logs a formatted message string with the level. - - A String containing zero or more format items - An Object to format - An Object to format - An Object to format - - - The message is formatted using the String.Format method. See - for details of the syntax of the format string and the behavior - of the formatting. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - - - Logs a formatted message string with the level. - - An that supplies culture-specific formatting information - A String containing zero or more format items - An Object array containing zero or more objects to format - - - The message is formatted using the String.Format method. See - for details of the syntax of the format string and the behavior - of the formatting. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - - Log a message object with the level. - - Log a message object with the level. - - - - This method first checks if this logger is WARN - enabled by comparing the level of this logger with the - level. If this logger is - WARN enabled, then it converts the message object - (passed as parameter) to a string by invoking the appropriate - . It then - proceeds to call all the registered appenders in this logger - and also higher in the hierarchy depending on the value of the - additivity flag. - - WARNING Note that passing an - to this method will print the name of the - but no stack trace. To print a stack trace use the - form instead. - - - The message object to log. - - - - - - Log a message object with the level including - the stack trace of the passed - as a parameter. - - The message object to log. - The exception to log, including its stack trace. - - - See the form for more detailed information. - - - - - - - Log a formatted message string with the level. - - Logs a formatted message string with the level. - - A String containing zero or more format items - An Object array containing zero or more objects to format - - - The message is formatted using the String.Format method. See - for details of the syntax of the format string and the behavior - of the formatting. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - - - Logs a formatted message string with the level. - - A String containing zero or more format items - An Object to format - - - The message is formatted using the String.Format method. See - for details of the syntax of the format string and the behavior - of the formatting. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - - - Logs a formatted message string with the level. - - A String containing zero or more format items - An Object to format - An Object to format - - - The message is formatted using the String.Format method. See - for details of the syntax of the format string and the behavior - of the formatting. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - - - Logs a formatted message string with the level. - - A String containing zero or more format items - An Object to format - An Object to format - An Object to format - - - The message is formatted using the String.Format method. See - for details of the syntax of the format string and the behavior - of the formatting. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - - - Logs a formatted message string with the level. - - An that supplies culture-specific formatting information - A String containing zero or more format items - An Object array containing zero or more objects to format - - - The message is formatted using the String.Format method. See - for details of the syntax of the format string and the behavior - of the formatting. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - - Log a message object with the level. - - Logs a message object with the level. - - The message object to log. - - - This method first checks if this logger is ERROR - enabled by comparing the level of this logger with the - level. If this logger is - ERROR enabled, then it converts the message object - (passed as parameter) to a string by invoking the appropriate - . It then - proceeds to call all the registered appenders in this logger - and also higher in the hierarchy depending on the value of the - additivity flag. - - WARNING Note that passing an - to this method will print the name of the - but no stack trace. To print a stack trace use the - form instead. - - - - - - - - Log a message object with the level including - the stack trace of the passed - as a parameter. - - The message object to log. - The exception to log, including its stack trace. - - - See the form for more detailed information. - - - - - - - Log a formatted message string with the level. - - Logs a formatted message string with the level. - - A String containing zero or more format items - An Object array containing zero or more objects to format - - - The message is formatted using the String.Format method. See - for details of the syntax of the format string and the behavior - of the formatting. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - - - Logs a formatted message string with the level. - - A String containing zero or more format items - An Object to format - - - The message is formatted using the String.Format method. See - for details of the syntax of the format string and the behavior - of the formatting. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - - - Logs a formatted message string with the level. - - A String containing zero or more format items - An Object to format - An Object to format - - - The message is formatted using the String.Format method. See - for details of the syntax of the format string and the behavior - of the formatting. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - - - Logs a formatted message string with the level. - - A String containing zero or more format items - An Object to format - An Object to format - An Object to format - - - The message is formatted using the String.Format method. See - for details of the syntax of the format string and the behavior - of the formatting. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - - - Logs a formatted message string with the level. - - An that supplies culture-specific formatting information - A String containing zero or more format items - An Object array containing zero or more objects to format - - - The message is formatted using the String.Format method. See - for details of the syntax of the format string and the behavior - of the formatting. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - - Log a message object with the level. - - Log a message object with the level. - - - - This method first checks if this logger is FATAL - enabled by comparing the level of this logger with the - level. If this logger is - FATAL enabled, then it converts the message object - (passed as parameter) to a string by invoking the appropriate - . It then - proceeds to call all the registered appenders in this logger - and also higher in the hierarchy depending on the value of the - additivity flag. - - WARNING Note that passing an - to this method will print the name of the - but no stack trace. To print a stack trace use the - form instead. - - - The message object to log. - - - - - - Log a message object with the level including - the stack trace of the passed - as a parameter. - - The message object to log. - The exception to log, including its stack trace. - - - See the form for more detailed information. - - - - - - - Log a formatted message string with the level. - - Logs a formatted message string with the level. - - A String containing zero or more format items - An Object array containing zero or more objects to format - - - The message is formatted using the String.Format method. See - for details of the syntax of the format string and the behavior - of the formatting. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - - - Logs a formatted message string with the level. - - A String containing zero or more format items - An Object to format - - - The message is formatted using the String.Format method. See - for details of the syntax of the format string and the behavior - of the formatting. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - - - Logs a formatted message string with the level. - - A String containing zero or more format items - An Object to format - An Object to format - - - The message is formatted using the String.Format method. See - for details of the syntax of the format string and the behavior - of the formatting. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - - - Logs a formatted message string with the level. - - A String containing zero or more format items - An Object to format - An Object to format - An Object to format - - - The message is formatted using the String.Format method. See - for details of the syntax of the format string and the behavior - of the formatting. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - - - Logs a formatted message string with the level. - - An that supplies culture-specific formatting information - A String containing zero or more format items - An Object array containing zero or more objects to format - - - The message is formatted using the String.Format method. See - for details of the syntax of the format string and the behavior - of the formatting. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - - - Checks if this logger is enabled for the level. - - - true if this logger is enabled for events, false otherwise. - - - - This function is intended to lessen the computational cost of - disabled log debug statements. - - For some ILog interface log, when you write: - - log.Debug("This is entry number: " + i ); - - - You incur the cost constructing the message, string construction and concatenation in - this case, regardless of whether the message is logged or not. - - - If you are worried about speed (who isn't), then you should write: - - - if (log.IsDebugEnabled) - { - log.Debug("This is entry number: " + i ); - } - - - This way you will not incur the cost of parameter - construction if debugging is disabled for log. On - the other hand, if the log is debug enabled, you - will incur the cost of evaluating whether the logger is debug - enabled twice. Once in and once in - the . This is an insignificant overhead - since evaluating a logger takes about 1% of the time it - takes to actually log. This is the preferred style of logging. - - Alternatively if your logger is available statically then the is debug - enabled state can be stored in a static variable like this: - - - private static readonly bool isDebugEnabled = log.IsDebugEnabled; - - - Then when you come to log you can write: - - - if (isDebugEnabled) - { - log.Debug("This is entry number: " + i ); - } - - - This way the debug enabled state is only queried once - when the class is loaded. Using a private static readonly - variable is the most efficient because it is a run time constant - and can be heavily optimized by the JIT compiler. - - - Of course if you use a static readonly variable to - hold the enabled state of the logger then you cannot - change the enabled state at runtime to vary the logging - that is produced. You have to decide if you need absolute - speed or runtime flexibility. - - - - - - - - Checks if this logger is enabled for the level. - - - true if this logger is enabled for events, false otherwise. - - - For more information see . - - - - - - - - Checks if this logger is enabled for the level. - - - true if this logger is enabled for events, false otherwise. - - - For more information see . - - - - - - - - Checks if this logger is enabled for the level. - - - true if this logger is enabled for events, false otherwise. - - - For more information see . - - - - - - - - Checks if this logger is enabled for the level. - - - true if this logger is enabled for events, false otherwise. - - - For more information see . - - - - - - - - Construct a new wrapper for the specified logger. - - The logger to wrap. - - - Construct a new wrapper for the specified logger. - - - - - - Virtual method called when the configuration of the repository changes - - the repository holding the levels - - - Virtual method called when the configuration of the repository changes - - - - - - Logs a message object with the DEBUG level. - - The message object to log. - - - This method first checks if this logger is DEBUG - enabled by comparing the level of this logger with the - DEBUG level. If this logger is - DEBUG enabled, then it converts the message object - (passed as parameter) to a string by invoking the appropriate - . It then - proceeds to call all the registered appenders in this logger - and also higher in the hierarchy depending on the value of the - additivity flag. - - - WARNING Note that passing an - to this method will print the name of the - but no stack trace. To print a stack trace use the - form instead. - - - - - - Logs a message object with the DEBUG level - - The message object to log. - The exception to log, including its stack trace. - - - Logs a message object with the DEBUG level including - the stack trace of the passed - as a parameter. - - - See the form for more detailed information. - - - - - - - Logs a formatted message string with the DEBUG level. - - A String containing zero or more format items - An Object array containing zero or more objects to format - - - The message is formatted using the method. See - String.Format for details of the syntax of the format string and the behavior - of the formatting. - - - The string is formatted using the - format provider. To specify a localized provider use the - method. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - Logs a formatted message string with the DEBUG level. - - A String containing zero or more format items - An Object to format - - - The message is formatted using the method. See - String.Format for details of the syntax of the format string and the behavior - of the formatting. - - - The string is formatted using the - format provider. To specify a localized provider use the - method. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - Logs a formatted message string with the DEBUG level. - - A String containing zero or more format items - An Object to format - An Object to format - - - The message is formatted using the method. See - String.Format for details of the syntax of the format string and the behavior - of the formatting. - - - The string is formatted using the - format provider. To specify a localized provider use the - method. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - Logs a formatted message string with the DEBUG level. - - A String containing zero or more format items - An Object to format - An Object to format - An Object to format - - - The message is formatted using the method. See - String.Format for details of the syntax of the format string and the behavior - of the formatting. - - - The string is formatted using the - format provider. To specify a localized provider use the - method. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - Logs a formatted message string with the DEBUG level. - - An that supplies culture-specific formatting information - A String containing zero or more format items - An Object array containing zero or more objects to format - - - The message is formatted using the method. See - String.Format for details of the syntax of the format string and the behavior - of the formatting. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - Logs a message object with the INFO level. - - The message object to log. - - - This method first checks if this logger is INFO - enabled by comparing the level of this logger with the - INFO level. If this logger is - INFO enabled, then it converts the message object - (passed as parameter) to a string by invoking the appropriate - . It then - proceeds to call all the registered appenders in this logger - and also higher in the hierarchy depending on the value of - the additivity flag. - - - WARNING Note that passing an - to this method will print the name of the - but no stack trace. To print a stack trace use the - form instead. - - - - - - Logs a message object with the INFO level. - - The message object to log. - The exception to log, including its stack trace. - - - Logs a message object with the INFO level including - the stack trace of the - passed as a parameter. - - - See the form for more detailed information. - - - - - - - Logs a formatted message string with the INFO level. - - A String containing zero or more format items - An Object array containing zero or more objects to format - - - The message is formatted using the method. See - String.Format for details of the syntax of the format string and the behavior - of the formatting. - - - The string is formatted using the - format provider. To specify a localized provider use the - method. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - Logs a formatted message string with the INFO level. - - A String containing zero or more format items - An Object to format - - - The message is formatted using the method. See - String.Format for details of the syntax of the format string and the behavior - of the formatting. - - - The string is formatted using the - format provider. To specify a localized provider use the - method. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - Logs a formatted message string with the INFO level. - - A String containing zero or more format items - An Object to format - An Object to format - - - The message is formatted using the method. See - String.Format for details of the syntax of the format string and the behavior - of the formatting. - - - The string is formatted using the - format provider. To specify a localized provider use the - method. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - Logs a formatted message string with the INFO level. - - A String containing zero or more format items - An Object to format - An Object to format - An Object to format - - - The message is formatted using the method. See - String.Format for details of the syntax of the format string and the behavior - of the formatting. - - - The string is formatted using the - format provider. To specify a localized provider use the - method. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - Logs a formatted message string with the INFO level. - - An that supplies culture-specific formatting information - A String containing zero or more format items - An Object array containing zero or more objects to format - - - The message is formatted using the method. See - String.Format for details of the syntax of the format string and the behavior - of the formatting. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - Logs a message object with the WARN level. - - the message object to log - - - This method first checks if this logger is WARN - enabled by comparing the level of this logger with the - WARN level. If this logger is - WARN enabled, then it converts the message object - (passed as parameter) to a string by invoking the appropriate - . It then - proceeds to call all the registered appenders in this logger and - also higher in the hierarchy depending on the value of the - additivity flag. - - - WARNING Note that passing an to this - method will print the name of the but no - stack trace. To print a stack trace use the - form instead. - - - - - - Logs a message object with the WARN level - - The message object to log. - The exception to log, including its stack trace. - - - Logs a message object with the WARN level including - the stack trace of the - passed as a parameter. - - - See the form for more detailed information. - - - - - - - Logs a formatted message string with the WARN level. - - A String containing zero or more format items - An Object array containing zero or more objects to format - - - The message is formatted using the method. See - String.Format for details of the syntax of the format string and the behavior - of the formatting. - - - The string is formatted using the - format provider. To specify a localized provider use the - method. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - Logs a formatted message string with the WARN level. - - A String containing zero or more format items - An Object to format - - - The message is formatted using the method. See - String.Format for details of the syntax of the format string and the behavior - of the formatting. - - - The string is formatted using the - format provider. To specify a localized provider use the - method. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - Logs a formatted message string with the WARN level. - - A String containing zero or more format items - An Object to format - An Object to format - - - The message is formatted using the method. See - String.Format for details of the syntax of the format string and the behavior - of the formatting. - - - The string is formatted using the - format provider. To specify a localized provider use the - method. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - Logs a formatted message string with the WARN level. - - A String containing zero or more format items - An Object to format - An Object to format - An Object to format - - - The message is formatted using the method. See - String.Format for details of the syntax of the format string and the behavior - of the formatting. - - - The string is formatted using the - format provider. To specify a localized provider use the - method. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - Logs a formatted message string with the WARN level. - - An that supplies culture-specific formatting information - A String containing zero or more format items - An Object array containing zero or more objects to format - - - The message is formatted using the method. See - String.Format for details of the syntax of the format string and the behavior - of the formatting. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - Logs a message object with the ERROR level. - - The message object to log. - - - This method first checks if this logger is ERROR - enabled by comparing the level of this logger with the - ERROR level. If this logger is - ERROR enabled, then it converts the message object - (passed as parameter) to a string by invoking the appropriate - . It then - proceeds to call all the registered appenders in this logger and - also higher in the hierarchy depending on the value of the - additivity flag. - - - WARNING Note that passing an to this - method will print the name of the but no - stack trace. To print a stack trace use the - form instead. - - - - - - Logs a message object with the ERROR level - - The message object to log. - The exception to log, including its stack trace. - - - Logs a message object with the ERROR level including - the stack trace of the - passed as a parameter. - - - See the form for more detailed information. - - - - - - - Logs a formatted message string with the ERROR level. - - A String containing zero or more format items - An Object array containing zero or more objects to format - - - The message is formatted using the method. See - String.Format for details of the syntax of the format string and the behavior - of the formatting. - - - The string is formatted using the - format provider. To specify a localized provider use the - method. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - Logs a formatted message string with the ERROR level. - - A String containing zero or more format items - An Object to format - - - The message is formatted using the method. See - String.Format for details of the syntax of the format string and the behavior - of the formatting. - - - The string is formatted using the - format provider. To specify a localized provider use the - method. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - Logs a formatted message string with the ERROR level. - - A String containing zero or more format items - An Object to format - An Object to format - - - The message is formatted using the method. See - String.Format for details of the syntax of the format string and the behavior - of the formatting. - - - The string is formatted using the - format provider. To specify a localized provider use the - method. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - Logs a formatted message string with the ERROR level. - - A String containing zero or more format items - An Object to format - An Object to format - An Object to format - - - The message is formatted using the method. See - String.Format for details of the syntax of the format string and the behavior - of the formatting. - - - The string is formatted using the - format provider. To specify a localized provider use the - method. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - Logs a formatted message string with the ERROR level. - - An that supplies culture-specific formatting information - A String containing zero or more format items - An Object array containing zero or more objects to format - - - The message is formatted using the method. See - String.Format for details of the syntax of the format string and the behavior - of the formatting. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - Logs a message object with the FATAL level. - - The message object to log. - - - This method first checks if this logger is FATAL - enabled by comparing the level of this logger with the - FATAL level. If this logger is - FATAL enabled, then it converts the message object - (passed as parameter) to a string by invoking the appropriate - . It then - proceeds to call all the registered appenders in this logger and - also higher in the hierarchy depending on the value of the - additivity flag. - - - WARNING Note that passing an to this - method will print the name of the but no - stack trace. To print a stack trace use the - form instead. - - - - - - Logs a message object with the FATAL level - - The message object to log. - The exception to log, including its stack trace. - - - Logs a message object with the FATAL level including - the stack trace of the - passed as a parameter. - - - See the form for more detailed information. - - - - - - - Logs a formatted message string with the FATAL level. - - A String containing zero or more format items - An Object array containing zero or more objects to format - - - The message is formatted using the method. See - String.Format for details of the syntax of the format string and the behavior - of the formatting. - - - The string is formatted using the - format provider. To specify a localized provider use the - method. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - Logs a formatted message string with the FATAL level. - - A String containing zero or more format items - An Object to format - - - The message is formatted using the method. See - String.Format for details of the syntax of the format string and the behavior - of the formatting. - - - The string is formatted using the - format provider. To specify a localized provider use the - method. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - Logs a formatted message string with the FATAL level. - - A String containing zero or more format items - An Object to format - An Object to format - - - The message is formatted using the method. See - String.Format for details of the syntax of the format string and the behavior - of the formatting. - - - The string is formatted using the - format provider. To specify a localized provider use the - method. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - Logs a formatted message string with the FATAL level. - - A String containing zero or more format items - An Object to format - An Object to format - An Object to format - - - The message is formatted using the method. See - String.Format for details of the syntax of the format string and the behavior - of the formatting. - - - The string is formatted using the - format provider. To specify a localized provider use the - method. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - Logs a formatted message string with the FATAL level. - - An that supplies culture-specific formatting information - A String containing zero or more format items - An Object array containing zero or more objects to format - - - The message is formatted using the method. See - String.Format for details of the syntax of the format string and the behavior - of the formatting. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - Event handler for the event - - the repository - Empty - - - - The fully qualified name of this declaring type not the type of any subclass. - - - - - Checks if this logger is enabled for the DEBUG - level. - - - true if this logger is enabled for DEBUG events, - false otherwise. - - - - This function is intended to lessen the computational cost of - disabled log debug statements. - - - For some log Logger object, when you write: - - - log.Debug("This is entry number: " + i ); - - - You incur the cost constructing the message, concatenation in - this case, regardless of whether the message is logged or not. - - - If you are worried about speed, then you should write: - - - if (log.IsDebugEnabled()) - { - log.Debug("This is entry number: " + i ); - } - - - This way you will not incur the cost of parameter - construction if debugging is disabled for log. On - the other hand, if the log is debug enabled, you - will incur the cost of evaluating whether the logger is debug - enabled twice. Once in IsDebugEnabled and once in - the Debug. This is an insignificant overhead - since evaluating a logger takes about 1% of the time it - takes to actually log. - - - - - - Checks if this logger is enabled for the INFO level. - - - true if this logger is enabled for INFO events, - false otherwise. - - - - See for more information and examples - of using this method. - - - - - - - Checks if this logger is enabled for the WARN level. - - - true if this logger is enabled for WARN events, - false otherwise. - - - - See for more information and examples - of using this method. - - - - - - - Checks if this logger is enabled for the ERROR level. - - - true if this logger is enabled for ERROR events, - false otherwise. - - - - See for more information and examples of using this method. - - - - - - - Checks if this logger is enabled for the FATAL level. - - - true if this logger is enabled for FATAL events, - false otherwise. - - - - See for more information and examples of using this method. - - - - - - - A SecurityContext used by log4net when interacting with protected resources - - - - A SecurityContext used by log4net when interacting with protected resources - for example with operating system services. This can be used to impersonate - a principal that has been granted privileges on the system resources. - - - Nicko Cadell - - - - Impersonate this SecurityContext - - State supplied by the caller - An instance that will - revoke the impersonation of this SecurityContext, or null - - - Impersonate this security context. Further calls on the current - thread should now be made in the security context provided - by this object. When the result - method is called the security - context of the thread should be reverted to the state it was in - before was called. - - - - - - The providers default instances. - - - - A configured component that interacts with potentially protected system - resources uses a to provide the elevated - privileges required. If the object has - been not been explicitly provided to the component then the component - will request one from this . - - - By default the is - an instance of which returns only - objects. This is a reasonable default - where the privileges required are not know by the system. - - - This default behavior can be overridden by subclassing the - and overriding the method to return - the desired objects. The default provider - can be replaced by programmatically setting the value of the - property. - - - An alternative is to use the log4net.Config.SecurityContextProviderAttribute - This attribute can be applied to an assembly in the same way as the - log4net.Config.XmlConfiguratorAttribute". The attribute takes - the type to use as the as an argument. - - - Nicko Cadell - - - - The default provider - - - - - Protected default constructor to allow subclassing - - - - Protected default constructor to allow subclassing - - - - - - Create a SecurityContext for a consumer - - The consumer requesting the SecurityContext - An impersonation context - - - The default implementation is to return a . - - - Subclasses should override this method to provide their own - behavior. - - - - - - Gets or sets the default SecurityContextProvider - - - The default SecurityContextProvider - - - - The default provider is used by configured components that - require a and have not had one - given to them. - - - By default this is an instance of - that returns objects. - - - The default provider can be set programmatically by setting - the value of this property to a sub class of - that has the desired behavior. - - - - - - Delegate used to handle creation of new wrappers. - - The logger to wrap in a wrapper. - - - Delegate used to handle creation of new wrappers. This delegate - is called from the - method to construct the wrapper for the specified logger. - - - The delegate to use is supplied to the - constructor. - - - - - - Maps between logger objects and wrapper objects. - - - - This class maintains a mapping between objects and - objects. Use the method to - lookup the for the specified . - - - New wrapper instances are created by the - method. The default behavior is for this method to delegate construction - of the wrapper to the delegate supplied - to the constructor. This allows specialization of the behavior without - requiring subclassing of this type. - - - Nicko Cadell - Gert Driesen - - - - Initializes a new instance of the - - The handler to use to create the wrapper objects. - - - Initializes a new instance of the class with - the specified handler to create the wrapper objects. - - - - - - Gets the wrapper object for the specified logger. - - The wrapper object for the specified logger - - - If the logger is null then the corresponding wrapper is null. - - - Looks up the wrapper it it has previously been requested and - returns it. If the wrapper has never been requested before then - the virtual method is - called. - - - - - - Creates the wrapper object for the specified logger. - - The logger to wrap in a wrapper. - The wrapper object for the logger. - - - This implementation uses the - passed to the constructor to create the wrapper. This method - can be overridden in a subclass. - - - - - - Called when a monitored repository shutdown event is received. - - The that is shutting down - - - This method is called when a that this - is holding loggers for has signaled its shutdown - event . The default - behavior of this method is to release the references to the loggers - and their wrappers generated for this repository. - - - - - - Event handler for repository shutdown event. - - The sender of the event. - The event args. - - - - Map of logger repositories to hashtables of ILogger to ILoggerWrapper mappings - - - - - The handler to use to create the extension wrapper objects. - - - - - Internal reference to the delegate used to register for repository shutdown events. - - - - - Gets the map of logger repositories. - - - Map of logger repositories. - - - - Gets the hashtable that is keyed on . The - values are hashtables keyed on with the - value being the corresponding . - - - - - - Formats a as "HH:mm:ss,fff". - - - - Formats a in the format "HH:mm:ss,fff" for example, "15:49:37,459". - - - Nicko Cadell - Gert Driesen - - - - Render a as a string. - - - - Interface to abstract the rendering of a - instance into a string. - - - The method is used to render the - date to a text writer. - - - Nicko Cadell - Gert Driesen - - - - Formats the specified date as a string. - - The date to format. - The writer to write to. - - - Format the as a string and write it - to the provided. - - - - - - String constant used to specify AbsoluteTimeDateFormat in layouts. Current value is ABSOLUTE. - - - - - String constant used to specify DateTimeDateFormat in layouts. Current value is DATE. - - - - - String constant used to specify ISO8601DateFormat in layouts. Current value is ISO8601. - - - - - Renders the date into a string. Format is "HH:mm:ss". - - The date to render into a string. - The string builder to write to. - - - Subclasses should override this method to render the date - into a string using a precision up to the second. This method - will be called at most once per second and the result will be - reused if it is needed again during the same second. - - - - - - Renders the date into a string. Format is "HH:mm:ss,fff". - - The date to render into a string. - The writer to write to. - - - Uses the method to generate the - time string up to the seconds and then appends the current - milliseconds. The results from are - cached and is called at most once - per second. - - - Sub classes should override - rather than . - - - - - - Last stored time with precision up to the second. - - - - - Last stored time with precision up to the second, formatted - as a string. - - - - - Last stored time with precision up to the second, formatted - as a string. - - - - - Formats a as "dd MMM yyyy HH:mm:ss,fff" - - - - Formats a in the format - "dd MMM yyyy HH:mm:ss,fff" for example, - "06 Nov 1994 15:49:37,459". - - - Nicko Cadell - Gert Driesen - Angelika Schnagl - - - - Default constructor. - - - - Initializes a new instance of the class. - - - - - - Formats the date without the milliseconds part - - The date to format. - The string builder to write to. - - - Formats a DateTime in the format "dd MMM yyyy HH:mm:ss" - for example, "06 Nov 1994 15:49:37". - - - The base class will append the ",fff" milliseconds section. - This method will only be called at most once per second. - - - - - - The format info for the invariant culture. - - - - - Formats the as "yyyy-MM-dd HH:mm:ss,fff". - - - - Formats the specified as a string: "yyyy-MM-dd HH:mm:ss,fff". - - - Nicko Cadell - Gert Driesen - - - - Default constructor - - - - Initializes a new instance of the class. - - - - - - Formats the date without the milliseconds part - - The date to format. - The string builder to write to. - - - Formats the date specified as a string: "yyyy-MM-dd HH:mm:ss". - - - The base class will append the ",fff" milliseconds section. - This method will only be called at most once per second. - - - - - - Formats the using the method. - - - - Formats the using the method. - - - Nicko Cadell - Gert Driesen - - - - Constructor - - The format string. - - - Initializes a new instance of the class - with the specified format string. - - - The format string must be compatible with the options - that can be supplied to . - - - - - - Formats the date using . - - The date to convert to a string. - The writer to write to. - - - Uses the date format string supplied to the constructor to call - the method to format the date. - - - - - - The format string used to format the . - - - - The format string must be compatible with the options - that can be supplied to . - - - - - - This filter drops all . - - - - You can add this filter to the end of a filter chain to - switch from the default "accept all unless instructed otherwise" - filtering behavior to a "deny all unless instructed otherwise" - behavior. - - - Nicko Cadell - Gert Driesen - - - - Subclass this type to implement customized logging event filtering - - - - Users should extend this class to implement customized logging - event filtering. Note that and - , the parent class of all standard - appenders, have built-in filtering rules. It is suggested that you - first use and understand the built-in rules before rushing to write - your own custom filters. - - - This abstract class assumes and also imposes that filters be - organized in a linear chain. The - method of each filter is called sequentially, in the order of their - addition to the chain. - - - The method must return one - of the integer constants , - or . - - - If the value is returned, then the log event is dropped - immediately without consulting with the remaining filters. - - - If the value is returned, then the next filter - in the chain is consulted. If there are no more filters in the - chain, then the log event is logged. Thus, in the presence of no - filters, the default behavior is to log all logging events. - - - If the value is returned, then the log - event is logged without consulting the remaining filters. - - - The philosophy of log4net filters is largely inspired from the - Linux ipchains. - - - Nicko Cadell - Gert Driesen - - - - Implement this interface to provide customized logging event filtering - - - - Users should implement this interface to implement customized logging - event filtering. Note that and - , the parent class of all standard - appenders, have built-in filtering rules. It is suggested that you - first use and understand the built-in rules before rushing to write - your own custom filters. - - - This abstract class assumes and also imposes that filters be - organized in a linear chain. The - method of each filter is called sequentially, in the order of their - addition to the chain. - - - The method must return one - of the integer constants , - or . - - - If the value is returned, then the log event is dropped - immediately without consulting with the remaining filters. - - - If the value is returned, then the next filter - in the chain is consulted. If there are no more filters in the - chain, then the log event is logged. Thus, in the presence of no - filters, the default behavior is to log all logging events. - - - If the value is returned, then the log - event is logged without consulting the remaining filters. - - - The philosophy of log4net filters is largely inspired from the - Linux ipchains. - - - Nicko Cadell - Gert Driesen - - - - Decide if the logging event should be logged through an appender. - - The LoggingEvent to decide upon - The decision of the filter - - - If the decision is , then the event will be - dropped. If the decision is , then the next - filter, if any, will be invoked. If the decision is then - the event will be logged without consulting with other filters in - the chain. - - - - - - Property to get and set the next filter - - - The next filter in the chain - - - - Filters are typically composed into chains. This property allows the next filter in - the chain to be accessed. - - - - - - Points to the next filter in the filter chain. - - - - See for more information. - - - - - - Initialize the filter with the options set - - - - This is part of the delayed object - activation scheme. The method must - be called on this object after the configuration properties have - been set. Until is called this - object is in an undefined state and must not be used. - - - If any of the configuration properties are modified then - must be called again. - - - Typically filter's options become active immediately on set, - however this method must still be called. - - - - - - Decide if the should be logged through an appender. - - The to decide upon - The decision of the filter - - - If the decision is , then the event will be - dropped. If the decision is , then the next - filter, if any, will be invoked. If the decision is then - the event will be logged without consulting with other filters in - the chain. - - - This method is marked abstract and must be implemented - in a subclass. - - - - - - Property to get and set the next filter - - - The next filter in the chain - - - - Filters are typically composed into chains. This property allows the next filter in - the chain to be accessed. - - - - - - Default constructor - - - - - Always returns the integer constant - - the LoggingEvent to filter - Always returns - - - Ignores the event being logged and just returns - . This can be used to change the default filter - chain behavior from to . This filter - should only be used as the last filter in the chain - as any further filters will be ignored! - - - - - - The return result from - - - - The return result from - - - - - - The log event must be dropped immediately without - consulting with the remaining filters, if any, in the chain. - - - - - This filter is neutral with respect to the log event. - The remaining filters, if any, should be consulted for a final decision. - - - - - The log event must be logged immediately without - consulting with the remaining filters, if any, in the chain. - - - - - This is a very simple filter based on matching. - - - - The filter admits two options and - . If there is an exact match between the value - of the option and the of the - , then the method returns in - case the option value is set - to true, if it is false then - is returned. If the does not match then - the result will be . - - - Nicko Cadell - Gert Driesen - - - - flag to indicate if the filter should on a match - - - - - the to match against - - - - - Default constructor - - - - - Tests if the of the logging event matches that of the filter - - the event to filter - see remarks - - - If the of the event matches the level of the - filter then the result of the function depends on the - value of . If it is true then - the function will return , it it is false then it - will return . If the does not match then - the result will be . - - - - - - when matching - - - - The property is a flag that determines - the behavior when a matching is found. If the - flag is set to true then the filter will the - logging event, otherwise it will the event. - - - The default is true i.e. to the event. - - - - - - The that the filter will match - - - - The level that this filter will attempt to match against the - level. If a match is found then - the result depends on the value of . - - - - - - This is a simple filter based on matching. - - - - The filter admits three options and - that determine the range of priorities that are matched, and - . If there is a match between the range - of priorities and the of the , then the - method returns in case the - option value is set to true, if it is false - then is returned. If there is no match, is returned. - - - Nicko Cadell - Gert Driesen - - - - Flag to indicate the behavior when matching a - - - - - the minimum value to match - - - - - the maximum value to match - - - - - Default constructor - - - - - Check if the event should be logged. - - the logging event to check - see remarks - - - If the of the logging event is outside the range - matched by this filter then - is returned. If the is matched then the value of - is checked. If it is true then - is returned, otherwise - is returned. - - - - - - when matching and - - - - The property is a flag that determines - the behavior when a matching is found. If the - flag is set to true then the filter will the - logging event, otherwise it will the event. - - - The default is true i.e. to the event. - - - - - - Set the minimum matched - - - - The minimum level that this filter will attempt to match against the - level. If a match is found then - the result depends on the value of . - - - - - - Sets the maximum matched - - - - The maximum level that this filter will attempt to match against the - level. If a match is found then - the result depends on the value of . - - - - - - Simple filter to match a string in the event's logger name. - - - - The works very similar to the . It admits two - options and . If the - of the starts - with the value of the option, then the - method returns in - case the option value is set to true, - if it is false then is returned. - - - Daniel Cazzulino - - - - Flag to indicate the behavior when we have a match - - - - - The logger name string to substring match against the event - - - - - Default constructor - - - - - Check if this filter should allow the event to be logged - - the event being logged - see remarks - - - The rendered message is matched against the . - If the equals the beginning of - the incoming () - then a match will have occurred. If no match occurs - this function will return - allowing other filters to check the event. If a match occurs then - the value of is checked. If it is - true then is returned otherwise - is returned. - - - - - - when matching - - - - The property is a flag that determines - the behavior when a matching is found. If the - flag is set to true then the filter will the - logging event, otherwise it will the event. - - - The default is true i.e. to the event. - - - - - - The that the filter will match - - - - This filter will attempt to match this value against logger name in - the following way. The match will be done against the beginning of the - logger name (using ). The match is - case sensitive. If a match is found then - the result depends on the value of . - - - - - - Simple filter to match a keyed string in the - - - - Simple filter to match a keyed string in the - - - As the MDC has been replaced with layered properties the - should be used instead. - - - Nicko Cadell - Gert Driesen - - - - Simple filter to match a string an event property - - - - Simple filter to match a string in the value for a - specific event property - - - Nicko Cadell - - - - Simple filter to match a string in the rendered message - - - - Simple filter to match a string in the rendered message - - - Nicko Cadell - Gert Driesen - - - - Flag to indicate the behavior when we have a match - - - - - The string to substring match against the message - - - - - A string regex to match - - - - - A regex object to match (generated from m_stringRegexToMatch) - - - - - Default constructor - - - - - Initialize and precompile the Regex if required - - - - This is part of the delayed object - activation scheme. The method must - be called on this object after the configuration properties have - been set. Until is called this - object is in an undefined state and must not be used. - - - If any of the configuration properties are modified then - must be called again. - - - - - - Check if this filter should allow the event to be logged - - the event being logged - see remarks - - - The rendered message is matched against the . - If the occurs as a substring within - the message then a match will have occurred. If no match occurs - this function will return - allowing other filters to check the event. If a match occurs then - the value of is checked. If it is - true then is returned otherwise - is returned. - - - - - - when matching or - - - - The property is a flag that determines - the behavior when a matching is found. If the - flag is set to true then the filter will the - logging event, otherwise it will the event. - - - The default is true i.e. to the event. - - - - - - Sets the static string to match - - - - The string that will be substring matched against - the rendered message. If the message contains this - string then the filter will match. If a match is found then - the result depends on the value of . - - - One of or - must be specified. - - - - - - Sets the regular expression to match - - - - The regular expression pattern that will be matched against - the rendered message. If the message matches this - pattern then the filter will match. If a match is found then - the result depends on the value of . - - - One of or - must be specified. - - - - - - The key to use to lookup the string from the event properties - - - - - Default constructor - - - - - Check if this filter should allow the event to be logged - - the event being logged - see remarks - - - The event property for the is matched against - the . - If the occurs as a substring within - the property value then a match will have occurred. If no match occurs - this function will return - allowing other filters to check the event. If a match occurs then - the value of is checked. If it is - true then is returned otherwise - is returned. - - - - - - The key to lookup in the event properties and then match against. - - - - The key name to use to lookup in the properties map of the - . The match will be performed against - the value of this property if it exists. - - - - - - Simple filter to match a string in the - - - - Simple filter to match a string in the - - - As the MDC has been replaced with named stacks stored in the - properties collections the should - be used instead. - - - Nicko Cadell - Gert Driesen - - - - Default constructor - - - - Sets the to "NDC". - - - - - - Write the event appdomain name to the output - - - - Writes the to the output writer. - - - Daniel Cazzulino - Nicko Cadell - - - - Abstract class that provides the formatting functionality that - derived classes need. - - - Conversion specifiers in a conversion patterns are parsed to - individual PatternConverters. Each of which is responsible for - converting a logging event in a converter specific manner. - - Nicko Cadell - - - - Abstract class that provides the formatting functionality that - derived classes need. - - - - Conversion specifiers in a conversion patterns are parsed to - individual PatternConverters. Each of which is responsible for - converting a logging event in a converter specific manner. - - - Nicko Cadell - Gert Driesen - - - - Initial buffer size - - - - - Maximum buffer size before it is recycled - - - - - Protected constructor - - - - Initializes a new instance of the class. - - - - - - Evaluate this pattern converter and write the output to a writer. - - that will receive the formatted result. - The state object on which the pattern converter should be executed. - - - Derived pattern converters must override this method in order to - convert conversion specifiers in the appropriate way. - - - - - - Set the next pattern converter in the chains - - the pattern converter that should follow this converter in the chain - the next converter - - - The PatternConverter can merge with its neighbor during this method (or a sub class). - Therefore the return value may or may not be the value of the argument passed in. - - - - - - Write the pattern converter to the writer with appropriate formatting - - that will receive the formatted result. - The state object on which the pattern converter should be executed. - - - This method calls to allow the subclass to perform - appropriate conversion of the pattern converter. If formatting options have - been specified via the then this method will - apply those formattings before writing the output. - - - - - - Fast space padding method. - - to which the spaces will be appended. - The number of spaces to be padded. - - - Fast space padding method. - - - - - - The option string to the converter - - - - - Write an dictionary to a - - the writer to write to - a to use for object conversion - the value to write to the writer - - - Writes the to a writer in the form: - - - {key1=value1, key2=value2, key3=value3} - - - If the specified - is not null then it is used to render the key and value to text, otherwise - the object's ToString method is called. - - - - - - Write an object to a - - the writer to write to - a to use for object conversion - the value to write to the writer - - - Writes the Object to a writer. If the specified - is not null then it is used to render the object to text, otherwise - the object's ToString method is called. - - - - - - Get the next pattern converter in the chain - - - the next pattern converter in the chain - - - - Get the next pattern converter in the chain - - - - - - Gets or sets the formatting info for this converter - - - The formatting info for this converter - - - - Gets or sets the formatting info for this converter - - - - - - Gets or sets the option value for this converter - - - The option for this converter - - - - Gets or sets the option value for this converter - - - - - - Initializes a new instance of the class. - - - - - Derived pattern converters must override this method in order to - convert conversion specifiers in the correct way. - - that will receive the formatted result. - The on which the pattern converter should be executed. - - - - Derived pattern converters must override this method in order to - convert conversion specifiers in the correct way. - - that will receive the formatted result. - The state object on which the pattern converter should be executed. - - - - Flag indicating if this converter handles exceptions - - - false if this converter handles exceptions - - - - - Flag indicating if this converter handles the logging event exception - - false if this converter handles the logging event exception - - - If this converter handles the exception object contained within - , then this property should be set to - false. Otherwise, if the layout ignores the exception - object, then the property should be set to true. - - - Set this value to override a this default setting. The default - value is true, this converter does not handle the exception. - - - - - - Write the event appdomain name to the output - - that will receive the formatted result. - the event being logged - - - Writes the to the output . - - - - - - Date pattern converter, uses a to format - the date of a . - - - - Render the to the writer as a string. - - - The value of the determines - the formatting of the date. The following values are allowed: - - - Option value - Output - - - ISO8601 - - Uses the formatter. - Formats using the "yyyy-MM-dd HH:mm:ss,fff" pattern. - - - - DATE - - Uses the formatter. - Formats using the "dd MMM yyyy HH:mm:ss,fff" for example, "06 Nov 1994 15:49:37,459". - - - - ABSOLUTE - - Uses the formatter. - Formats using the "HH:mm:ss,yyyy" for example, "15:49:37,459". - - - - other - - Any other pattern string uses the formatter. - This formatter passes the pattern string to the - method. - For details on valid patterns see - DateTimeFormatInfo Class. - - - - - - The is in the local time zone and is rendered in that zone. - To output the time in Universal time see . - - - Nicko Cadell - - - - The used to render the date to a string - - - - The used to render the date to a string - - - - - - Initialize the converter pattern based on the property. - - - - This is part of the delayed object - activation scheme. The method must - be called on this object after the configuration properties have - been set. Until is called this - object is in an undefined state and must not be used. - - - If any of the configuration properties are modified then - must be called again. - - - - - - Convert the pattern into the rendered message - - that will receive the formatted result. - the event being logged - - - Pass the to the - for it to render it to the writer. - - - The passed is in the local time zone. - - - - - - Write the exception text to the output - - - - If an exception object is stored in the logging event - it will be rendered into the pattern output with a - trailing newline. - - - If there is no exception then nothing will be output - and no trailing newline will be appended. - It is typical to put a newline before the exception - and to have the exception as the last data in the pattern. - - - Nicko Cadell - - - - Default constructor - - - - - Write the exception text to the output - - that will receive the formatted result. - the event being logged - - - If an exception object is stored in the logging event - it will be rendered into the pattern output with a - trailing newline. - - - If there is no exception then nothing will be output - and no trailing newline will be appended. - It is typical to put a newline before the exception - and to have the exception as the last data in the pattern. - - - - - - Writes the caller location file name to the output - - - - Writes the value of the for - the event to the output writer. - - - Nicko Cadell - - - - Write the caller location file name to the output - - that will receive the formatted result. - the event being logged - - - Writes the value of the for - the to the output . - - - - - - Write the caller location info to the output - - - - Writes the to the output writer. - - - Nicko Cadell - - - - Write the caller location info to the output - - that will receive the formatted result. - the event being logged - - - Writes the to the output writer. - - - - - - Writes the event identity to the output - - - - Writes the value of the to - the output writer. - - - Daniel Cazzulino - Nicko Cadell - - - - Writes the event identity to the output - - that will receive the formatted result. - the event being logged - - - Writes the value of the - to - the output . - - - - - - Write the event level to the output - - - - Writes the display name of the event - to the writer. - - - Nicko Cadell - - - - Write the event level to the output - - that will receive the formatted result. - the event being logged - - - Writes the of the - to the . - - - - - - Write the caller location line number to the output - - - - Writes the value of the for - the event to the output writer. - - - Nicko Cadell - - - - Write the caller location line number to the output - - that will receive the formatted result. - the event being logged - - - Writes the value of the for - the to the output . - - - - - - Converter for logger name - - - - Outputs the of the event. - - - Nicko Cadell - - - - Converter to output and truncate '.' separated strings - - - - This abstract class supports truncating a '.' separated string - to show a specified number of elements from the right hand side. - This is used to truncate class names that are fully qualified. - - - Subclasses should override the method to - return the fully qualified string. - - - Nicko Cadell - - - - Initialize the converter - - - - This is part of the delayed object - activation scheme. The method must - be called on this object after the configuration properties have - been set. Until is called this - object is in an undefined state and must not be used. - - - If any of the configuration properties are modified then - must be called again. - - - - - - Get the fully qualified string data - - the event being logged - the fully qualified name - - - Overridden by subclasses to get the fully qualified name before the - precision is applied to it. - - - Return the fully qualified '.' (dot/period) separated string. - - - - - - Convert the pattern to the rendered message - - that will receive the formatted result. - the event being logged - - Render the to the precision - specified by the property. - - - - - Gets the fully qualified name of the logger - - the event being logged - The fully qualified logger name - - - Returns the of the . - - - - - - Writes the event message to the output - - - - Uses the method - to write out the event message. - - - Nicko Cadell - - - - Writes the event message to the output - - that will receive the formatted result. - the event being logged - - - Uses the method - to write out the event message. - - - - - - Write the method name to the output - - - - Writes the caller location to - the output. - - - Nicko Cadell - - - - Write the method name to the output - - that will receive the formatted result. - the event being logged - - - Writes the caller location to - the output. - - - - - - Converter to include event NDC - - - - Outputs the value of the event property named NDC. - - - The should be used instead. - - - Nicko Cadell - - - - Write the event NDC to the output - - that will receive the formatted result. - the event being logged - - - As the thread context stacks are now stored in named event properties - this converter simply looks up the value of the NDC property. - - - The should be used instead. - - - - - - Property pattern converter - - - - Writes out the value of a named property. The property name - should be set in the - property. - - - If the is set to null - then all the properties are written as key value pairs. - - - Nicko Cadell - - - - Write the property value to the output - - that will receive the formatted result. - the event being logged - - - Writes out the value of a named property. The property name - should be set in the - property. - - - If the is set to null - then all the properties are written as key value pairs. - - - - - - Converter to output the relative time of the event - - - - Converter to output the time of the event relative to the start of the program. - - - Nicko Cadell - - - - Write the relative time to the output - - that will receive the formatted result. - the event being logged - - - Writes out the relative time of the event in milliseconds. - That is the number of milliseconds between the event - and the . - - - - - - Helper method to get the time difference between two DateTime objects - - start time (in the current local time zone) - end time (in the current local time zone) - the time difference in milliseconds - - - - Converter to include event thread name - - - - Writes the to the output. - - - Nicko Cadell - - - - Write the ThreadName to the output - - that will receive the formatted result. - the event being logged - - - Writes the to the . - - - - - - Pattern converter for the class name - - - - Outputs the of the event. - - - Nicko Cadell - - - - Gets the fully qualified name of the class - - the event being logged - The fully qualified type name for the caller location - - - Returns the of the . - - - - - - Converter to include event user name - - Douglas de la Torre - Nicko Cadell - - - - Convert the pattern to the rendered message - - that will receive the formatted result. - the event being logged - - - - Write the TimeStamp to the output - - - - Date pattern converter, uses a to format - the date of a . - - - Uses a to format the - in Universal time. - - - See the for details on the date pattern syntax. - - - - Nicko Cadell - - - - Write the TimeStamp to the output - - that will receive the formatted result. - the event being logged - - - Pass the to the - for it to render it to the writer. - - - The passed is in the local time zone, this is converted - to Universal time before it is rendered. - - - - - - - A Layout that renders only the Exception text from the logging event - - - - A Layout that renders only the Exception text from the logging event. - - - This Layout should only be used with appenders that utilize multiple - layouts (e.g. ). - - - Nicko Cadell - Gert Driesen - - - - Extend this abstract class to create your own log layout format. - - - - This is the base implementation of the - interface. Most layout objects should extend this class. - - - - - - Subclasses must implement the - method. - - - Subclasses should set the in their default - constructor. - - - - Nicko Cadell - Gert Driesen - - - - Interface implemented by layout objects - - - - An object is used to format a - as text. The method is called by an - appender to transform the into a string. - - - The layout can also supply and - text that is appender before any events and after all the events respectively. - - - Nicko Cadell - Gert Driesen - - - - Implement this method to create your own layout format. - - The TextWriter to write the formatted event to - The event to format - - - This method is called by an appender to format - the as text and output to a writer. - - - If the caller does not have a and prefers the - event to be formatted as a then the following - code can be used to format the event into a . - - - StringWriter writer = new StringWriter(); - Layout.Format(writer, loggingEvent); - string formattedEvent = writer.ToString(); - - - - - - The content type output by this layout. - - The content type - - - The content type output by this layout. - - - This is a MIME type e.g. "text/plain". - - - - - - The header for the layout format. - - the layout header - - - The Header text will be appended before any logging events - are formatted and appended. - - - - - - The footer for the layout format. - - the layout footer - - - The Footer text will be appended after all the logging events - have been formatted and appended. - - - - - - Flag indicating if this layout handle exceptions - - false if this layout handles exceptions - - - If this layout handles the exception object contained within - , then the layout should return - false. Otherwise, if the layout ignores the exception - object, then the layout should return true. - - - - - - The header text - - - - See for more information. - - - - - - The footer text - - - - See for more information. - - - - - - Flag indicating if this layout handles exceptions - - - - false if this layout handles exceptions - - - - - - Empty default constructor - - - - Empty default constructor - - - - - - Activate component options - - - - This is part of the delayed object - activation scheme. The method must - be called on this object after the configuration properties have - been set. Until is called this - object is in an undefined state and must not be used. - - - If any of the configuration properties are modified then - must be called again. - - - This method must be implemented by the subclass. - - - - - - Implement this method to create your own layout format. - - The TextWriter to write the formatted event to - The event to format - - - This method is called by an appender to format - the as text. - - - - - - The content type output by this layout. - - The content type is "text/plain" - - - The content type output by this layout. - - - This base class uses the value "text/plain". - To change this value a subclass must override this - property. - - - - - - The header for the layout format. - - the layout header - - - The Header text will be appended before any logging events - are formatted and appended. - - - - - - The footer for the layout format. - - the layout footer - - - The Footer text will be appended after all the logging events - have been formatted and appended. - - - - - - Flag indicating if this layout handles exceptions - - false if this layout handles exceptions - - - If this layout handles the exception object contained within - , then the layout should return - false. Otherwise, if the layout ignores the exception - object, then the layout should return true. - - - Set this value to override a this default setting. The default - value is true, this layout does not handle the exception. - - - - - - Default constructor - - - - Constructs a ExceptionLayout - - - - - - Activate component options - - - - Part of the component activation - framework. - - - This method does nothing as options become effective immediately. - - - - - - Gets the exception text from the logging event - - The TextWriter to write the formatted event to - the event being logged - - - Write the exception string to the . - The exception string is retrieved from . - - - - - - Interface for raw layout objects - - - - Interface used to format a - to an object. - - - This interface should not be confused with the - interface. This interface is used in - only certain specialized situations where a raw object is - required rather than a formatted string. The - is not generally useful than this interface. - - - Nicko Cadell - Gert Driesen - - - - Implement this method to create your own layout format. - - The event to format - returns the formatted event - - - Implement this method to create your own layout format. - - - - - - Adapts any to a - - - - Where an is required this adapter - allows a to be specified. - - - Nicko Cadell - Gert Driesen - - - - The layout to adapt - - - - - Construct a new adapter - - the layout to adapt - - - Create the adapter for the specified . - - - - - - Format the logging event as an object. - - The event to format - returns the formatted event - - - Format the logging event as an object. - - - Uses the object supplied to - the constructor to perform the formatting. - - - - - - A flexible layout configurable with pattern string. - - - - The goal of this class is to a - as a string. The results - depend on the conversion pattern. - - - The conversion pattern is closely related to the conversion - pattern of the printf function in C. A conversion pattern is - composed of literal text and format control expressions called - conversion specifiers. - - - You are free to insert any literal text within the conversion - pattern. - - - Each conversion specifier starts with a percent sign (%) and is - followed by optional format modifiers and a conversion - pattern name. The conversion pattern name specifies the type of - data, e.g. logger, level, date, thread name. The format - modifiers control such things as field width, padding, left and - right justification. The following is a simple example. - - - Let the conversion pattern be "%-5level [%thread]: %message%newline" and assume - that the log4net environment was set to use a PatternLayout. Then the - statements - - - ILog log = LogManager.GetLogger(typeof(TestApp)); - log.Debug("Message 1"); - log.Warn("Message 2"); - - would yield the output - - DEBUG [main]: Message 1 - WARN [main]: Message 2 - - - Note that there is no explicit separator between text and - conversion specifiers. The pattern parser knows when it has reached - the end of a conversion specifier when it reads a conversion - character. In the example above the conversion specifier - %-5level means the level of the logging event should be left - justified to a width of five characters. - - - The recognized conversion pattern names are: - - - - Conversion Pattern Name - Effect - - - a - Equivalent to appdomain - - - appdomain - - Used to output the friendly name of the AppDomain where the - logging event was generated. - - - - c - Equivalent to logger - - - C - Equivalent to type - - - class - Equivalent to type - - - d - Equivalent to date - - - date - - - Used to output the date of the logging event in the local time zone. - To output the date in universal time use the %utcdate pattern. - The date conversion - specifier may be followed by a date format specifier enclosed - between braces. For example, %date{HH:mm:ss,fff} or - %date{dd MMM yyyy HH:mm:ss,fff}. If no date format specifier is - given then ISO8601 format is - assumed (). - - - The date format specifier admits the same syntax as the - time pattern string of the . - - - For better results it is recommended to use the log4net date - formatters. These can be specified using one of the strings - "ABSOLUTE", "DATE" and "ISO8601" for specifying - , - and respectively - . For example, - %date{ISO8601} or %date{ABSOLUTE}. - - - These dedicated date formatters perform significantly - better than . - - - - - exception - - - Used to output the exception passed in with the log message. - - - If an exception object is stored in the logging event - it will be rendered into the pattern output with a - trailing newline. - If there is no exception then nothing will be output - and no trailing newline will be appended. - It is typical to put a newline before the exception - and to have the exception as the last data in the pattern. - - - - - F - Equivalent to file - - - file - - - Used to output the file name where the logging request was - issued. - - - WARNING Generating caller location information is - extremely slow. Its use should be avoided unless execution speed - is not an issue. - - - See the note below on the availability of caller location information. - - - - - identity - - - Used to output the user name for the currently active user - (Principal.Identity.Name). - - - WARNING Generating caller information is - extremely slow. Its use should be avoided unless execution speed - is not an issue. - - - - - l - Equivalent to location - - - L - Equivalent to line - - - location - - - Used to output location information of the caller which generated - the logging event. - - - The location information depends on the CLI implementation but - usually consists of the fully qualified name of the calling - method followed by the callers source the file name and line - number between parentheses. - - - The location information can be very useful. However, its - generation is extremely slow. Its use should be avoided - unless execution speed is not an issue. - - - See the note below on the availability of caller location information. - - - - - level - - - Used to output the level of the logging event. - - - - - line - - - Used to output the line number from where the logging request - was issued. - - - WARNING Generating caller location information is - extremely slow. Its use should be avoided unless execution speed - is not an issue. - - - See the note below on the availability of caller location information. - - - - - logger - - - Used to output the logger of the logging event. The - logger conversion specifier can be optionally followed by - precision specifier, that is a decimal constant in - brackets. - - - If a precision specifier is given, then only the corresponding - number of right most components of the logger name will be - printed. By default the logger name is printed in full. - - - For example, for the logger name "a.b.c" the pattern - %logger{2} will output "b.c". - - - - - m - Equivalent to message - - - M - Equivalent to method - - - message - - - Used to output the application supplied message associated with - the logging event. - - - - - mdc - - - The MDC (old name for the ThreadContext.Properties) is now part of the - combined event properties. This pattern is supported for compatibility - but is equivalent to property. - - - - - method - - - Used to output the method name where the logging request was - issued. - - - WARNING Generating caller location information is - extremely slow. Its use should be avoided unless execution speed - is not an issue. - - - See the note below on the availability of caller location information. - - - - - n - Equivalent to newline - - - newline - - - Outputs the platform dependent line separator character or - characters. - - - This conversion pattern offers the same performance as using - non-portable line separator strings such as "\n", or "\r\n". - Thus, it is the preferred way of specifying a line separator. - - - - - ndc - - - Used to output the NDC (nested diagnostic context) associated - with the thread that generated the logging event. - - - - - p - Equivalent to level - - - P - Equivalent to property - - - properties - Equivalent to property - - - property - - - Used to output the an event specific property. The key to - lookup must be specified within braces and directly following the - pattern specifier, e.g. %property{user} would include the value - from the property that is keyed by the string 'user'. Each property value - that is to be included in the log must be specified separately. - Properties are added to events by loggers or appenders. By default - the log4net:HostName property is set to the name of machine on - which the event was originally logged. - - - If no key is specified, e.g. %property then all the keys and their - values are printed in a comma separated list. - - - The properties of an event are combined from a number of different - contexts. These are listed below in the order in which they are searched. - - - - the event properties - - The event has that can be set. These - properties are specific to this event only. - - - - the thread properties - - The that are set on the current - thread. These properties are shared by all events logged on this thread. - - - - the global properties - - The that are set globally. These - properties are shared by all the threads in the AppDomain. - - - - - - - - r - Equivalent to timestamp - - - t - Equivalent to thread - - - timestamp - - - Used to output the number of milliseconds elapsed since the start - of the application until the creation of the logging event. - - - - - thread - - - Used to output the name of the thread that generated the - logging event. Uses the thread number if no name is available. - - - - - type - - - Used to output the fully qualified type name of the caller - issuing the logging request. This conversion specifier - can be optionally followed by precision specifier, that - is a decimal constant in brackets. - - - If a precision specifier is given, then only the corresponding - number of right most components of the class name will be - printed. By default the class name is output in fully qualified form. - - - For example, for the class name "log4net.Layout.PatternLayout", the - pattern %type{1} will output "PatternLayout". - - - WARNING Generating the caller class information is - slow. Thus, its use should be avoided unless execution speed is - not an issue. - - - See the note below on the availability of caller location information. - - - - - u - Equivalent to identity - - - username - - - Used to output the WindowsIdentity for the currently - active user. - - - WARNING Generating caller WindowsIdentity information is - extremely slow. Its use should be avoided unless execution speed - is not an issue. - - - - - utcdate - - - Used to output the date of the logging event in universal time. - The date conversion - specifier may be followed by a date format specifier enclosed - between braces. For example, %utcdate{HH:mm:ss,fff} or - %utcdate{dd MMM yyyy HH:mm:ss,fff}. If no date format specifier is - given then ISO8601 format is - assumed (). - - - The date format specifier admits the same syntax as the - time pattern string of the . - - - For better results it is recommended to use the log4net date - formatters. These can be specified using one of the strings - "ABSOLUTE", "DATE" and "ISO8601" for specifying - , - and respectively - . For example, - %utcdate{ISO8601} or %utcdate{ABSOLUTE}. - - - These dedicated date formatters perform significantly - better than . - - - - - w - Equivalent to username - - - x - Equivalent to ndc - - - X - Equivalent to mdc - - - % - - - The sequence %% outputs a single percent sign. - - - - - - The single letter patterns are deprecated in favor of the - longer more descriptive pattern names. - - - By default the relevant information is output as is. However, - with the aid of format modifiers it is possible to change the - minimum field width, the maximum field width and justification. - - - The optional format modifier is placed between the percent sign - and the conversion pattern name. - - - The first optional format modifier is the left justification - flag which is just the minus (-) character. Then comes the - optional minimum field width modifier. This is a decimal - constant that represents the minimum number of characters to - output. If the data item requires fewer characters, it is padded on - either the left or the right until the minimum width is - reached. The default is to pad on the left (right justify) but you - can specify right padding with the left justification flag. The - padding character is space. If the data item is larger than the - minimum field width, the field is expanded to accommodate the - data. The value is never truncated. - - - This behavior can be changed using the maximum field - width modifier which is designated by a period followed by a - decimal constant. If the data item is longer than the maximum - field, then the extra characters are removed from the - beginning of the data item and not from the end. For - example, it the maximum field width is eight and the data item is - ten characters long, then the first two characters of the data item - are dropped. This behavior deviates from the printf function in C - where truncation is done from the end. - - - Below are various format modifier examples for the logger - conversion specifier. - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Format modifierleft justifyminimum widthmaximum widthcomment
%20loggerfalse20none - - Left pad with spaces if the logger name is less than 20 - characters long. - -
%-20loggertrue20none - - Right pad with spaces if the logger - name is less than 20 characters long. - -
%.30loggerNAnone30 - - Truncate from the beginning if the logger - name is longer than 30 characters. - -
%20.30loggerfalse2030 - - Left pad with spaces if the logger name is shorter than 20 - characters. However, if logger name is longer than 30 characters, - then truncate from the beginning. - -
%-20.30loggertrue2030 - - Right pad with spaces if the logger name is shorter than 20 - characters. However, if logger name is longer than 30 characters, - then truncate from the beginning. - -
-
- - Note about caller location information.
- The following patterns %type %file %line %method %location %class %C %F %L %l %M - all generate caller location information. - Location information uses the System.Diagnostics.StackTrace class to generate - a call stack. The caller's information is then extracted from this stack. -
- - - The System.Diagnostics.StackTrace class is not supported on the - .NET Compact Framework 1.0 therefore caller location information is not - available on that framework. - - - - - The System.Diagnostics.StackTrace class has this to say about Release builds: - - - "StackTrace information will be most informative with Debug build configurations. - By default, Debug builds include debug symbols, while Release builds do not. The - debug symbols contain most of the file, method name, line number, and column - information used in constructing StackFrame and StackTrace objects. StackTrace - might not report as many method calls as expected, due to code transformations - that occur during optimization." - - - This means that in a Release build the caller information may be incomplete or may - not exist at all! Therefore caller location information cannot be relied upon in a Release build. - - - - Additional pattern converters may be registered with a specific - instance using the method. - -
- - This is a more detailed pattern. - %timestamp [%thread] %level %logger %ndc - %message%newline - - - A similar pattern except that the relative time is - right padded if less than 6 digits, thread name is right padded if - less than 15 characters and truncated if longer and the logger - name is left padded if shorter than 30 characters and truncated if - longer. - %-6timestamp [%15.15thread] %-5level %30.30logger %ndc - %message%newline - - Nicko Cadell - Gert Driesen - Douglas de la Torre - Daniel Cazzulino -
- - - Default pattern string for log output. - - - - Default pattern string for log output. - Currently set to the string "%message%newline" - which just prints the application supplied message. - - - - - - A detailed conversion pattern - - - - A conversion pattern which includes Time, Thread, Logger, and Nested Context. - Current value is %timestamp [%thread] %level %logger %ndc - %message%newline. - - - - - - Internal map of converter identifiers to converter types. - - - - This static map is overridden by the m_converterRegistry instance map - - - - - - the pattern - - - - - the head of the pattern converter chain - - - - - patterns defined on this PatternLayout only - - - - - Initialize the global registry - - - - Defines the builtin global rules. - - - - - - Constructs a PatternLayout using the DefaultConversionPattern - - - - The default pattern just produces the application supplied message. - - - Note to Inheritors: This constructor calls the virtual method - . If you override this method be - aware that it will be called before your is called constructor. - - - As per the contract the - method must be called after the properties on this object have been - configured. - - - - - - Constructs a PatternLayout using the supplied conversion pattern - - the pattern to use - - - Note to Inheritors: This constructor calls the virtual method - . If you override this method be - aware that it will be called before your is called constructor. - - - When using this constructor the method - need not be called. This may not be the case when using a subclass. - - - - - - Create the pattern parser instance - - the pattern to parse - The that will format the event - - - Creates the used to parse the conversion string. Sets the - global and instance rules on the . - - - - - - Initialize layout options - - - - This is part of the delayed object - activation scheme. The method must - be called on this object after the configuration properties have - been set. Until is called this - object is in an undefined state and must not be used. - - - If any of the configuration properties are modified then - must be called again. - - - - - - Produces a formatted string as specified by the conversion pattern. - - the event being logged - The TextWriter to write the formatted event to - - - Parse the using the patter format - specified in the property. - - - - - - Add a converter to this PatternLayout - - the converter info - - - This version of the method is used by the configurator. - Programmatic users should use the alternative method. - - - - - - Add a converter to this PatternLayout - - the name of the conversion pattern for this converter - the type of the converter - - - Add a named pattern converter to this instance. This - converter will be used in the formatting of the event. - This method must be called before . - - - The specified must extend the - type. - - - - - - The pattern formatting string - - - - The ConversionPattern option. This is the string which - controls formatting and consists of a mix of literal content and - conversion specifiers. - - - - - - Wrapper class used to map converter names to converter types - - - - Pattern converter info class used during configuration to - pass to the - method. - - - - - - default constructor - - - - - Gets or sets the name of the conversion pattern - - - - The name of the pattern in the format string - - - - - - Gets or sets the type of the converter - - - - The value specified must extend the - type. - - - - - - Type converter for the interface - - - - Used to convert objects to the interface. - Supports converting from the interface to - the interface using the . - - - Nicko Cadell - Gert Driesen - - - - Interface supported by type converters - - - - This interface supports conversion from arbitrary types - to a single target type. See . - - - Nicko Cadell - Gert Driesen - - - - Can the source type be converted to the type supported by this object - - the type to convert - true if the conversion is possible - - - Test if the can be converted to the - type supported by this converter. - - - - - - Convert the source object to the type supported by this object - - the object to convert - the converted object - - - Converts the to the type supported - by this converter. - - - - - - Can the sourceType be converted to an - - the source to be to be converted - true if the source type can be converted to - - - Test if the can be converted to a - . Only is supported - as the . - - - - - - Convert the value to a object - - the value to convert - the object - - - Convert the object to a - object. If the object - is a then the - is used to adapt between the two interfaces, otherwise an - exception is thrown. - - - - - - Extract the value of a property from the - - - - Extract the value of a property from the - - - Nicko Cadell - - - - Constructs a RawPropertyLayout - - - - - Lookup the property for - - The event to format - returns property value - - - Looks up and returns the object value of the property - named . If there is no property defined - with than name then null will be returned. - - - - - - The name of the value to lookup in the LoggingEvent Properties collection. - - - Value to lookup in the LoggingEvent Properties collection - - - - String name of the property to lookup in the . - - - - - - Extract the date from the - - - - Extract the date from the - - - Nicko Cadell - Gert Driesen - - - - Constructs a RawTimeStampLayout - - - - - Gets the as a . - - The event to format - returns the time stamp - - - Gets the as a . - - - The time stamp is in local time. To format the time stamp - in universal time use . - - - - - - Extract the date from the - - - - Extract the date from the - - - Nicko Cadell - Gert Driesen - - - - Constructs a RawUtcTimeStampLayout - - - - - Gets the as a . - - The event to format - returns the time stamp - - - Gets the as a . - - - The time stamp is in universal time. To format the time stamp - in local time use . - - - - - - A very simple layout - - - - SimpleLayout consists of the level of the log statement, - followed by " - " and then the log message itself. For example, - - DEBUG - Hello world - - - - Nicko Cadell - Gert Driesen - - - - Constructs a SimpleLayout - - - - - Initialize layout options - - - - This is part of the delayed object - activation scheme. The method must - be called on this object after the configuration properties have - been set. Until is called this - object is in an undefined state and must not be used. - - - If any of the configuration properties are modified then - must be called again. - - - - - - Produces a simple formatted output. - - the event being logged - The TextWriter to write the formatted event to - - - Formats the event as the level of the even, - followed by " - " and then the log message itself. The - output is terminated by a newline. - - - - - - Layout that formats the log events as XML elements. - - - - The output of the consists of a series of - log4net:event elements. It does not output a complete well-formed XML - file. The output is designed to be included as an external entity - in a separate file to form a correct XML file. - - - For example, if abc is the name of the file where - the output goes, then a well-formed XML file would - be: - - - <?xml version="1.0" ?> - - <!DOCTYPE log4net:events SYSTEM "log4net-events.dtd" [<!ENTITY data SYSTEM "abc">]> - - <log4net:events version="1.2" xmlns:log4net="http://logging.apache.org/log4net/schemas/log4net-events-1.2> - &data; - </log4net:events> - - - This approach enforces the independence of the - and the appender where it is embedded. - - - The version attribute helps components to correctly - interpret output generated by . The value of - this attribute should be "1.2" for release 1.2 and later. - - - Alternatively the Header and Footer properties can be - configured to output the correct XML header, open tag and close tag. - When setting the Header and Footer properties it is essential - that the underlying data store not be appendable otherwise the data - will become invalid XML. - - - Nicko Cadell - Gert Driesen - - - - Layout that formats the log events as XML elements. - - - - This is an abstract class that must be subclassed by an implementation - to conform to a specific schema. - - - Deriving classes must implement the method. - - - Nicko Cadell - Gert Driesen - - - - Protected constructor to support subclasses - - - - Initializes a new instance of the class - with no location info. - - - - - - Protected constructor to support subclasses - - - - The parameter determines whether - location information will be output by the layout. If - is set to true, then the - file name and line number of the statement at the origin of the log - statement will be output. - - - If you are embedding this layout within an SMTPAppender - then make sure to set the LocationInfo option of that - appender as well. - - - - - - Initialize layout options - - - - This is part of the delayed object - activation scheme. The method must - be called on this object after the configuration properties have - been set. Until is called this - object is in an undefined state and must not be used. - - - If any of the configuration properties are modified then - must be called again. - - - - - - Produces a formatted string. - - The event being logged. - The TextWriter to write the formatted event to - - - Format the and write it to the . - - - This method creates an that writes to the - . The is passed - to the method. Subclasses should override the - method rather than this method. - - - - - - Does the actual writing of the XML. - - The writer to use to output the event to. - The event to write. - - - Subclasses should override this method to format - the as XML. - - - - - - Flag to indicate if location information should be included in - the XML events. - - - - - Writer adapter that ignores Close - - - - - The string to replace invalid chars with - - - - - Gets a value indicating whether to include location information in - the XML events. - - - true if location information should be included in the XML - events; otherwise, false. - - - - If is set to true, then the file - name and line number of the statement at the origin of the log - statement will be output. - - - If you are embedding this layout within an SMTPAppender - then make sure to set the LocationInfo option of that - appender as well. - - - - - - The string to replace characters that can not be expressed in XML with. - - - Not all characters may be expressed in XML. This property contains the - string to replace those that can not with. This defaults to a ?. Set it - to the empty string to simply remove offending characters. For more - details on the allowed character ranges see http://www.w3.org/TR/REC-xml/#charsets - Character replacement will occur in the log message, the property names - and the property values. - - - - - - - Gets the content type output by this layout. - - - As this is the XML layout, the value is always "text/xml". - - - - As this is the XML layout, the value is always "text/xml". - - - - - - Constructs an XmlLayout - - - - - Constructs an XmlLayout. - - - - The LocationInfo option takes a boolean value. By - default, it is set to false which means there will be no location - information output by this layout. If the the option is set to - true, then the file name and line number of the statement - at the origin of the log statement will be output. - - - If you are embedding this layout within an SmtpAppender - then make sure to set the LocationInfo option of that - appender as well. - - - - - - Initialize layout options - - - - This is part of the delayed object - activation scheme. The method must - be called on this object after the configuration properties have - been set. Until is called this - object is in an undefined state and must not be used. - - - If any of the configuration properties are modified then - must be called again. - - - Builds a cache of the element names - - - - - - Does the actual writing of the XML. - - The writer to use to output the event to. - The event to write. - - - Override the base class method - to write the to the . - - - - - - The prefix to use for all generated element names - - - - - The prefix to use for all element names - - - - The default prefix is log4net. Set this property - to change the prefix. If the prefix is set to an empty string - then no prefix will be written. - - - - - - Set whether or not to base64 encode the message. - - - - By default the log message will be written as text to the xml - output. This can cause problems when the message contains binary - data. By setting this to true the contents of the message will be - base64 encoded. If this is set then invalid character replacement - (see ) will not be performed - on the log message. - - - - - - Set whether or not to base64 encode the property values. - - - - By default the properties will be written as text to the xml - output. This can cause problems when one or more properties contain - binary data. By setting this to true the values of the properties - will be base64 encoded. If this is set then invalid character replacement - (see ) will not be performed - on the property values. - - - - - - Layout that formats the log events as XML elements compatible with the log4j schema - - - - Formats the log events according to the http://logging.apache.org/log4j schema. - - - Nicko Cadell - - - - The 1st of January 1970 in UTC - - - - - Constructs an XMLLayoutSchemaLog4j - - - - - Constructs an XMLLayoutSchemaLog4j. - - - - The LocationInfo option takes a boolean value. By - default, it is set to false which means there will be no location - information output by this layout. If the the option is set to - true, then the file name and line number of the statement - at the origin of the log statement will be output. - - - If you are embedding this layout within an SMTPAppender - then make sure to set the LocationInfo option of that - appender as well. - - - - - - Actually do the writing of the xml - - the writer to use - the event to write - - - Generate XML that is compatible with the log4j schema. - - - - - - The version of the log4j schema to use. - - - - Only version 1.2 of the log4j schema is supported. - - - - - - The default object Renderer. - - - - The default renderer supports rendering objects and collections to strings. - - - See the method for details of the output. - - - Nicko Cadell - Gert Driesen - - - - Implement this interface in order to render objects as strings - - - - Certain types require special case conversion to - string form. This conversion is done by an object renderer. - Object renderers implement the - interface. - - - Nicko Cadell - Gert Driesen - - - - Render the object to a string - - The map used to lookup renderers - The object to render - The writer to render to - - - Render the object to a - string. - - - The parameter is - provided to lookup and render other objects. This is - very useful where contains - nested objects of unknown type. The - method can be used to render these objects. - - - - - - Default constructor - - - - Default constructor - - - - - - Render the object to a string - - The map used to lookup renderers - The object to render - The writer to render to - - - Render the object to a string. - - - The parameter is - provided to lookup and render other objects. This is - very useful where contains - nested objects of unknown type. The - method can be used to render these objects. - - - The default renderer supports rendering objects to strings as follows: - - - - Value - Rendered String - - - null - - "(null)" - - - - - - - For a one dimensional array this is the - array type name, an open brace, followed by a comma - separated list of the elements (using the appropriate - renderer), followed by a close brace. - - - For example: int[] {1, 2, 3}. - - - If the array is not one dimensional the - Array.ToString() is returned. - - - - - , & - - - Rendered as an open brace, followed by a comma - separated list of the elements (using the appropriate - renderer), followed by a close brace. - - - For example: {a, b, c}. - - - All collection classes that implement its subclasses, - or generic equivalents all implement the interface. - - - - - - - - Rendered as the key, an equals sign ('='), and the value (using the appropriate - renderer). - - - For example: key=value. - - - - - other - - Object.ToString() - - - - - - - - Render the array argument into a string - - The map used to lookup renderers - the array to render - The writer to render to - - - For a one dimensional array this is the - array type name, an open brace, followed by a comma - separated list of the elements (using the appropriate - renderer), followed by a close brace. For example: - int[] {1, 2, 3}. - - - If the array is not one dimensional the - Array.ToString() is returned. - - - - - - Render the enumerator argument into a string - - The map used to lookup renderers - the enumerator to render - The writer to render to - - - Rendered as an open brace, followed by a comma - separated list of the elements (using the appropriate - renderer), followed by a close brace. For example: - {a, b, c}. - - - - - - Render the DictionaryEntry argument into a string - - The map used to lookup renderers - the DictionaryEntry to render - The writer to render to - - - Render the key, an equals sign ('='), and the value (using the appropriate - renderer). For example: key=value. - - - - - - Map class objects to an . - - - - Maintains a mapping between types that require special - rendering and the that - is used to render them. - - - The method is used to render an - object using the appropriate renderers defined in this map. - - - Nicko Cadell - Gert Driesen - - - - Default Constructor - - - - Default constructor. - - - - - - Render using the appropriate renderer. - - the object to render to a string - the object rendered as a string - - - This is a convenience method used to render an object to a string. - The alternative method - should be used when streaming output to a . - - - - - - Render using the appropriate renderer. - - the object to render to a string - The writer to render to - - - Find the appropriate renderer for the type of the - parameter. This is accomplished by calling the - method. Once a renderer is found, it is - applied on the object and the result is returned - as a . - - - - - - Gets the renderer for the specified object type - - the object to lookup the renderer for - the renderer for - - - Gets the renderer for the specified object type. - - - Syntactic sugar method that calls - with the type of the object parameter. - - - - - - Gets the renderer for the specified type - - the type to lookup the renderer for - the renderer for the specified type - - - Returns the renderer for the specified type. - If no specific renderer has been defined the - will be returned. - - - - - - Internal function to recursively search interfaces - - the type to lookup the renderer for - the renderer for the specified type - - - - Clear the map of renderers - - - - Clear the custom renderers defined by using - . The - cannot be removed. - - - - - - Register an for . - - the type that will be rendered by - the renderer for - - - Register an object renderer for a specific source type. - This renderer will be returned from a call to - specifying the same as an argument. - - - - - - Get the default renderer instance - - the default renderer - - - Get the default renderer - - - - - - Interface implemented by logger repository plugins. - - - - Plugins define additional behavior that can be associated - with a . - The held by the - property is used to store the plugins for a repository. - - - The log4net.Config.PluginAttribute can be used to - attach plugins to repositories created using configuration - attributes. - - - Nicko Cadell - Gert Driesen - - - - Attaches the plugin to the specified . - - The that this plugin should be attached to. - - - A plugin may only be attached to a single repository. - - - This method is called when the plugin is attached to the repository. - - - - - - Is called when the plugin is to shutdown. - - - - This method is called to notify the plugin that - it should stop operating and should detach from - the repository. - - - - - - Gets the name of the plugin. - - - The name of the plugin. - - - - Plugins are stored in the - keyed by name. Each plugin instance attached to a - repository must be a unique name. - - - - - - A strongly-typed collection of objects. - - Nicko Cadell - - - - Creates a read-only wrapper for a PluginCollection instance. - - list to create a readonly wrapper arround - - A PluginCollection wrapper that is read-only. - - - - - Initializes a new instance of the PluginCollection class - that is empty and has the default initial capacity. - - - - - Initializes a new instance of the PluginCollection class - that has the specified initial capacity. - - - The number of elements that the new PluginCollection is initially capable of storing. - - - - - Initializes a new instance of the PluginCollection class - that contains elements copied from the specified PluginCollection. - - The PluginCollection whose elements are copied to the new collection. - - - - Initializes a new instance of the PluginCollection class - that contains elements copied from the specified array. - - The array whose elements are copied to the new list. - - - - Initializes a new instance of the PluginCollection class - that contains elements copied from the specified collection. - - The collection whose elements are copied to the new list. - - - - Allow subclasses to avoid our default constructors - - - - - - - Copies the entire PluginCollection to a one-dimensional - array. - - The one-dimensional array to copy to. - - - - Copies the entire PluginCollection to a one-dimensional - array, starting at the specified index of the target array. - - The one-dimensional array to copy to. - The zero-based index in at which copying begins. - - - - Adds a to the end of the PluginCollection. - - The to be added to the end of the PluginCollection. - The index at which the value has been added. - - - - Removes all elements from the PluginCollection. - - - - - Creates a shallow copy of the . - - A new with a shallow copy of the collection data. - - - - Determines whether a given is in the PluginCollection. - - The to check for. - true if is found in the PluginCollection; otherwise, false. - - - - Returns the zero-based index of the first occurrence of a - in the PluginCollection. - - The to locate in the PluginCollection. - - The zero-based index of the first occurrence of - in the entire PluginCollection, if found; otherwise, -1. - - - - - Inserts an element into the PluginCollection at the specified index. - - The zero-based index at which should be inserted. - The to insert. - - is less than zero - -or- - is equal to or greater than . - - - - - Removes the first occurrence of a specific from the PluginCollection. - - The to remove from the PluginCollection. - - The specified was not found in the PluginCollection. - - - - - Removes the element at the specified index of the PluginCollection. - - The zero-based index of the element to remove. - - is less than zero. - -or- - is equal to or greater than . - - - - - Returns an enumerator that can iterate through the PluginCollection. - - An for the entire PluginCollection. - - - - Adds the elements of another PluginCollection to the current PluginCollection. - - The PluginCollection whose elements should be added to the end of the current PluginCollection. - The new of the PluginCollection. - - - - Adds the elements of a array to the current PluginCollection. - - The array whose elements should be added to the end of the PluginCollection. - The new of the PluginCollection. - - - - Adds the elements of a collection to the current PluginCollection. - - The collection whose elements should be added to the end of the PluginCollection. - The new of the PluginCollection. - - - - Sets the capacity to the actual number of elements. - - - - - is less than zero. - -or- - is equal to or greater than . - - - - - is less than zero. - -or- - is equal to or greater than . - - - - - Gets the number of elements actually contained in the PluginCollection. - - - - - Gets a value indicating whether access to the collection is synchronized (thread-safe). - - true if access to the ICollection is synchronized (thread-safe); otherwise, false. - - - - Gets an object that can be used to synchronize access to the collection. - - - An object that can be used to synchronize access to the collection. - - - - - Gets or sets the at the specified index. - - - The at the specified index. - - The zero-based index of the element to get or set. - - is less than zero. - -or- - is equal to or greater than . - - - - - Gets a value indicating whether the collection has a fixed size. - - true if the collection has a fixed size; otherwise, false. The default is false. - - - - Gets a value indicating whether the IList is read-only. - - true if the collection is read-only; otherwise, false. The default is false. - - - - Gets or sets the number of elements the PluginCollection can contain. - - - The number of elements the PluginCollection can contain. - - - - - Supports type-safe iteration over a . - - - - - - Advances the enumerator to the next element in the collection. - - - true if the enumerator was successfully advanced to the next element; - false if the enumerator has passed the end of the collection. - - - The collection was modified after the enumerator was created. - - - - - Sets the enumerator to its initial position, before the first element in the collection. - - - - - Gets the current element in the collection. - - - - - Type visible only to our subclasses - Used to access protected constructor - - - - - - A value - - - - - Supports simple iteration over a . - - - - - - Initializes a new instance of the Enumerator class. - - - - - - Advances the enumerator to the next element in the collection. - - - true if the enumerator was successfully advanced to the next element; - false if the enumerator has passed the end of the collection. - - - The collection was modified after the enumerator was created. - - - - - Sets the enumerator to its initial position, before the first element in the collection. - - - - - Gets the current element in the collection. - - - The current element in the collection. - - - - - - - - Map of repository plugins. - - - - This class is a name keyed map of the plugins that are - attached to a repository. - - - Nicko Cadell - Gert Driesen - - - - Constructor - - The repository that the plugins should be attached to. - - - Initialize a new instance of the class with a - repository that the plugins should be attached to. - - - - - - Adds a to the map. - - The to add to the map. - - - The will be attached to the repository when added. - - - If there already exists a plugin with the same name - attached to the repository then the old plugin will - be and replaced with - the new plugin. - - - - - - Removes a from the map. - - The to remove from the map. - - - Remove a specific plugin from this map. - - - - - - Gets a by name. - - The name of the to lookup. - - The from the map with the name specified, or - null if no plugin is found. - - - - Lookup a plugin by name. If the plugin is not found null - will be returned. - - - - - - Gets all possible plugins as a list of objects. - - All possible plugins as a list of objects. - - - Get a collection of all the plugins defined in this map. - - - - - - Base implementation of - - - - Default abstract implementation of the - interface. This base class can be used by implementors - of the interface. - - - Nicko Cadell - Gert Driesen - - - - Constructor - - the name of the plugin - - Initializes a new Plugin with the specified name. - - - - - Attaches this plugin to a . - - The that this plugin should be attached to. - - - A plugin may only be attached to a single repository. - - - This method is called when the plugin is attached to the repository. - - - - - - Is called when the plugin is to shutdown. - - - - This method is called to notify the plugin that - it should stop operating and should detach from - the repository. - - - - - - The name of this plugin. - - - - - The repository this plugin is attached to. - - - - - Gets or sets the name of the plugin. - - - The name of the plugin. - - - - Plugins are stored in the - keyed by name. Each plugin instance attached to a - repository must be a unique name. - - - The name of the plugin must not change one the - plugin has been attached to a repository. - - - - - - The repository for this plugin - - - The that this plugin is attached to. - - - - Gets or sets the that this plugin is - attached to. - - - - - - Plugin that listens for events from the - - - - This plugin publishes an instance of - on a specified . This listens for logging events delivered from - a remote . - - - When an event is received it is relogged within the attached repository - as if it had been raised locally. - - - Nicko Cadell - Gert Driesen - - - - Default constructor - - - - Initializes a new instance of the class. - - - The property must be set. - - - - - - Construct with sink Uri. - - The name to publish the sink under in the remoting infrastructure. - See for more details. - - - Initializes a new instance of the class - with specified name. - - - - - - Attaches this plugin to a . - - The that this plugin should be attached to. - - - A plugin may only be attached to a single repository. - - - This method is called when the plugin is attached to the repository. - - - - - - Is called when the plugin is to shutdown. - - - - When the plugin is shutdown the remote logging - sink is disconnected. - - - - - - Gets or sets the URI of this sink. - - - The URI of this sink. - - - - This is the name under which the object is marshaled. - - - - - - - Delivers objects to a remote sink. - - - - Internal class used to listen for logging events - and deliver them to the local repository. - - - - - - Constructor - - The repository to log to. - - - Initializes a new instance of the for the - specified . - - - - - - Logs the events to the repository. - - The events to log. - - - The events passed are logged to the - - - - - - Obtains a lifetime service object to control the lifetime - policy for this instance. - - null to indicate that this instance should live forever. - - - Obtains a lifetime service object to control the lifetime - policy for this instance. This object should live forever - therefore this implementation returns null. - - - - - - The underlying that events should - be logged to. - - - - - Default implementation of - - - - This default implementation of the - interface is used to create the default subclass - of the object. - - - Nicko Cadell - Gert Driesen - - - - Interface abstracts creation of instances - - - - This interface is used by the to - create new objects. - - - The method is called - to create a named . - - - Implement this interface to create new subclasses of . - - - Nicko Cadell - Gert Driesen - - - - Create a new instance - - The name of the . - The instance for the specified name. - - - Create a new instance with the - specified name. - - - Called by the to create - new named instances. - - - If the is null then the root logger - must be returned. - - - - - - Default constructor - - - - Initializes a new instance of the class. - - - - - - Create a new instance - - The name of the . - The instance for the specified name. - - - Create a new instance with the - specified name. - - - Called by the to create - new named instances. - - - If the is null then the root logger - must be returned. - - - - - - Default internal subclass of - - - - This subclass has no additional behavior over the - class but does allow instances - to be created. - - - - - - Implementation of used by - - - - Internal class used to provide implementation of - interface. Applications should use to get - logger instances. - - - This is one of the central classes in the log4net implementation. One of the - distinctive features of log4net are hierarchical loggers and their - evaluation. The organizes the - instances into a rooted tree hierarchy. - - - The class is abstract. Only concrete subclasses of - can be created. The - is used to create instances of this type for the . - - - Nicko Cadell - Gert Driesen - Aspi Havewala - Douglas de la Torre - - - - This constructor created a new instance and - sets its name. - - The name of the . - - - This constructor is protected and designed to be used by - a subclass that is not abstract. - - - Loggers are constructed by - objects. See for the default - logger creator. - - - - - - Add to the list of appenders of this - Logger instance. - - An appender to add to this logger - - - Add to the list of appenders of this - Logger instance. - - - If is already in the list of - appenders, then it won't be added again. - - - - - - Look for the appender named as name - - The name of the appender to lookup - The appender with the name specified, or null. - - - Returns the named appender, or null if the appender is not found. - - - - - - Remove all previously added appenders from this Logger instance. - - - - Remove all previously added appenders from this Logger instance. - - - This is useful when re-reading configuration information. - - - - - - Remove the appender passed as parameter form the list of appenders. - - The appender to remove - The appender removed from the list - - - Remove the appender passed as parameter form the list of appenders. - The appender removed is not closed. - If you are discarding the appender you must call - on the appender removed. - - - - - - Remove the appender passed as parameter form the list of appenders. - - The name of the appender to remove - The appender removed from the list - - - Remove the named appender passed as parameter form the list of appenders. - The appender removed is not closed. - If you are discarding the appender you must call - on the appender removed. - - - - - - This generic form is intended to be used by wrappers. - - The declaring type of the method that is - the stack boundary into the logging system for this call. - The level of the message to be logged. - The message object to log. - The exception to log, including its stack trace. - - - Generate a logging event for the specified using - the and . - - - This method must not throw any exception to the caller. - - - - - - This is the most generic printing method that is intended to be used - by wrappers. - - The event being logged. - - - Logs the specified logging event through this logger. - - - This method must not throw any exception to the caller. - - - - - - Checks if this logger is enabled for a given passed as parameter. - - The level to check. - - true if this logger is enabled for level, otherwise false. - - - - Test if this logger is going to log events of the specified . - - - This method must not throw any exception to the caller. - - - - - - Deliver the to the attached appenders. - - The event to log. - - - Call the appenders in the hierarchy starting at - this. If no appenders could be found, emit a - warning. - - - This method calls all the appenders inherited from the - hierarchy circumventing any evaluation of whether to log or not - to log the particular log request. - - - - - - Closes all attached appenders implementing the interface. - - - - Used to ensure that the appenders are correctly shutdown. - - - - - - This is the most generic printing method. This generic form is intended to be used by wrappers - - The level of the message to be logged. - The message object to log. - The exception to log, including its stack trace. - - - Generate a logging event for the specified using - the . - - - - - - Creates a new logging event and logs the event without further checks. - - The declaring type of the method that is - the stack boundary into the logging system for this call. - The level of the message to be logged. - The message object to log. - The exception to log, including its stack trace. - - - Generates a logging event and delivers it to the attached - appenders. - - - - - - Creates a new logging event and logs the event without further checks. - - The event being logged. - - - Delivers the logging event to the attached appenders. - - - - - - The fully qualified type of the Logger class. - - - - - The name of this logger. - - - - - The assigned level of this logger. - - - - The level variable need not be - assigned a value in which case it is inherited - form the hierarchy. - - - - - - The parent of this logger. - - - - The parent of this logger. - All loggers have at least one ancestor which is the root logger. - - - - - - Loggers need to know what Hierarchy they are in. - - - - Loggers need to know what Hierarchy they are in. - The hierarchy that this logger is a member of is stored - here. - - - - - - Helper implementation of the interface - - - - - Flag indicating if child loggers inherit their parents appenders - - - - Additivity is set to true by default, that is children inherit - the appenders of their ancestors by default. If this variable is - set to false then the appenders found in the - ancestors of this logger are not used. However, the children - of this logger will inherit its appenders, unless the children - have their additivity flag set to false too. See - the user manual for more details. - - - - - - Lock to protect AppenderAttachedImpl variable m_appenderAttachedImpl - - - - - Gets or sets the parent logger in the hierarchy. - - - The parent logger in the hierarchy. - - - - Part of the Composite pattern that makes the hierarchy. - The hierarchy is parent linked rather than child linked. - - - - - - Gets or sets a value indicating if child loggers inherit their parent's appenders. - - - true if child loggers inherit their parent's appenders. - - - - Additivity is set to true by default, that is children inherit - the appenders of their ancestors by default. If this variable is - set to false then the appenders found in the - ancestors of this logger are not used. However, the children - of this logger will inherit its appenders, unless the children - have their additivity flag set to false too. See - the user manual for more details. - - - - - - Gets the effective level for this logger. - - The nearest level in the logger hierarchy. - - - Starting from this logger, searches the logger hierarchy for a - non-null level and returns it. Otherwise, returns the level of the - root logger. - - The Logger class is designed so that this method executes as - quickly as possible. - - - - - Gets or sets the where this - Logger instance is attached to. - - The hierarchy that this logger belongs to. - - - This logger must be attached to a single . - - - - - - Gets or sets the assigned , if any, for this Logger. - - - The of this logger. - - - - The assigned can be null. - - - - - - Get the appenders contained in this logger as an - . - - A collection of the appenders in this logger - - - Get the appenders contained in this logger as an - . If no appenders - can be found, then a is returned. - - - - - - Gets the logger name. - - - The name of the logger. - - - - The name of this logger - - - - - - Gets the where this - Logger instance is attached to. - - - The that this logger belongs to. - - - - Gets the where this - Logger instance is attached to. - - - - - - Construct a new Logger - - the name of the logger - - - Initializes a new instance of the class - with the specified name. - - - - - - Delegate used to handle logger creation event notifications. - - The in which the has been created. - The event args that hold the instance that has been created. - - - Delegate used to handle logger creation event notifications. - - - - - - Provides data for the event. - - - - A event is raised every time a - is created. - - - - - - The created - - - - - Constructor - - The that has been created. - - - Initializes a new instance of the event argument - class,with the specified . - - - - - - Gets the that has been created. - - - The that has been created. - - - - The that has been created. - - - - - - Hierarchical organization of loggers - - - - The casual user should not have to deal with this class - directly. - - - This class is specialized in retrieving loggers by name and - also maintaining the logger hierarchy. Implements the - interface. - - - The structure of the logger hierarchy is maintained by the - method. The hierarchy is such that children - link to their parent but parents do not have any references to their - children. Moreover, loggers can be instantiated in any order, in - particular descendant before ancestor. - - - In case a descendant is created before a particular ancestor, - then it creates a provision node for the ancestor and adds itself - to the provision node. Other descendants of the same ancestor add - themselves to the previously created provision node. - - - Nicko Cadell - Gert Driesen - - - - Base implementation of - - - - Default abstract implementation of the interface. - - - Skeleton implementation of the interface. - All types can extend this type. - - - Nicko Cadell - Gert Driesen - - - - Interface implemented by logger repositories. - - - - This interface is implemented by logger repositories. e.g. - . - - - This interface is used by the - to obtain interfaces. - - - Nicko Cadell - Gert Driesen - - - - Check if the named logger exists in the repository. If so return - its reference, otherwise returns null. - - The name of the logger to lookup - The Logger object with the name specified - - - If the names logger exists it is returned, otherwise - null is returned. - - - - - - Returns all the currently defined loggers as an Array. - - All the defined loggers - - - Returns all the currently defined loggers as an Array. - - - - - - Returns a named logger instance - - The name of the logger to retrieve - The logger object with the name specified - - - Returns a named logger instance. - - - If a logger of that name already exists, then it will be - returned. Otherwise, a new logger will be instantiated and - then linked with its existing ancestors as well as children. - - - - - Shutdown the repository - - - Shutting down a repository will safely close and remove - all appenders in all loggers including the root logger. - - - Some appenders need to be closed before the - application exists. Otherwise, pending logging events might be - lost. - - - The method is careful to close nested - appenders before closing regular appenders. This is allows - configurations where a regular appender is attached to a logger - and again to a nested appender. - - - - - - Reset the repositories configuration to a default state - - - - Reset all values contained in this instance to their - default state. - - - Existing loggers are not removed. They are just reset. - - - This method should be used sparingly and with care as it will - block all logging until it is completed. - - - - - - Log the through this repository. - - the event to log - - - This method should not normally be used to log. - The interface should be used - for routine logging. This interface can be obtained - using the method. - - - The logEvent is delivered to the appropriate logger and - that logger is then responsible for logging the event. - - - - - - Returns all the Appenders that are configured as an Array. - - All the Appenders - - - Returns all the Appenders that are configured as an Array. - - - - - - The name of the repository - - - The name of the repository - - - - The name of the repository. - - - - - - RendererMap accesses the object renderer map for this repository. - - - RendererMap accesses the object renderer map for this repository. - - - - RendererMap accesses the object renderer map for this repository. - - - The RendererMap holds a mapping between types and - objects. - - - - - - The plugin map for this repository. - - - The plugin map for this repository. - - - - The plugin map holds the instances - that have been attached to this repository. - - - - - - Get the level map for the Repository. - - - - Get the level map for the Repository. - - - The level map defines the mappings between - level names and objects in - this repository. - - - - - - The threshold for all events in this repository - - - The threshold for all events in this repository - - - - The threshold for all events in this repository. - - - - - - Flag indicates if this repository has been configured. - - - Flag indicates if this repository has been configured. - - - - Flag indicates if this repository has been configured. - - - - - - Event to notify that the repository has been shutdown. - - - Event to notify that the repository has been shutdown. - - - - Event raised when the repository has been shutdown. - - - - - - Event to notify that the repository has had its configuration reset. - - - Event to notify that the repository has had its configuration reset. - - - - Event raised when the repository's configuration has been - reset to default. - - - - - - Event to notify that the repository has had its configuration changed. - - - Event to notify that the repository has had its configuration changed. - - - - Event raised when the repository's configuration has been changed. - - - - - - Repository specific properties - - - Repository specific properties - - - - These properties can be specified on a repository specific basis. - - - - - - Default Constructor - - - - Initializes the repository with default (empty) properties. - - - - - - Construct the repository using specific properties - - the properties to set for this repository - - - Initializes the repository with specified properties. - - - - - - Test if logger exists - - The name of the logger to lookup - The Logger object with the name specified - - - Check if the named logger exists in the repository. If so return - its reference, otherwise returns null. - - - - - - Returns all the currently defined loggers in the repository - - All the defined loggers - - - Returns all the currently defined loggers in the repository as an Array. - - - - - - Return a new logger instance - - The name of the logger to retrieve - The logger object with the name specified - - - Return a new logger instance. - - - If a logger of that name already exists, then it will be - returned. Otherwise, a new logger will be instantiated and - then linked with its existing ancestors as well as children. - - - - - - Shutdown the repository - - - - Shutdown the repository. Can be overridden in a subclass. - This base class implementation notifies the - listeners and all attached plugins of the shutdown event. - - - - - - Reset the repositories configuration to a default state - - - - Reset all values contained in this instance to their - default state. - - - Existing loggers are not removed. They are just reset. - - - This method should be used sparingly and with care as it will - block all logging until it is completed. - - - - - - Log the logEvent through this repository. - - the event to log - - - This method should not normally be used to log. - The interface should be used - for routine logging. This interface can be obtained - using the method. - - - The logEvent is delivered to the appropriate logger and - that logger is then responsible for logging the event. - - - - - - Returns all the Appenders that are configured as an Array. - - All the Appenders - - - Returns all the Appenders that are configured as an Array. - - - - - - Adds an object renderer for a specific class. - - The type that will be rendered by the renderer supplied. - The object renderer used to render the object. - - - Adds an object renderer for a specific class. - - - - - - Notify the registered listeners that the repository is shutting down - - Empty EventArgs - - - Notify any listeners that this repository is shutting down. - - - - - - Notify the registered listeners that the repository has had its configuration reset - - Empty EventArgs - - - Notify any listeners that this repository's configuration has been reset. - - - - - - Notify the registered listeners that the repository has had its configuration changed - - Empty EventArgs - - - Notify any listeners that this repository's configuration has changed. - - - - - - Raise a configuration changed event on this repository - - EventArgs.Empty - - - Applications that programmatically change the configuration of the repository should - raise this event notification to notify listeners. - - - - - - The name of the repository - - - The string name of the repository - - - - The name of this repository. The name is - used to store and lookup the repositories - stored by the . - - - - - - The threshold for all events in this repository - - - The threshold for all events in this repository - - - - The threshold for all events in this repository - - - - - - RendererMap accesses the object renderer map for this repository. - - - RendererMap accesses the object renderer map for this repository. - - - - RendererMap accesses the object renderer map for this repository. - - - The RendererMap holds a mapping between types and - objects. - - - - - - The plugin map for this repository. - - - The plugin map for this repository. - - - - The plugin map holds the instances - that have been attached to this repository. - - - - - - Get the level map for the Repository. - - - - Get the level map for the Repository. - - - The level map defines the mappings between - level names and objects in - this repository. - - - - - - Flag indicates if this repository has been configured. - - - Flag indicates if this repository has been configured. - - - - Flag indicates if this repository has been configured. - - - - - - Event to notify that the repository has been shutdown. - - - Event to notify that the repository has been shutdown. - - - - Event raised when the repository has been shutdown. - - - - - - Event to notify that the repository has had its configuration reset. - - - Event to notify that the repository has had its configuration reset. - - - - Event raised when the repository's configuration has been - reset to default. - - - - - - Event to notify that the repository has had its configuration changed. - - - Event to notify that the repository has had its configuration changed. - - - - Event raised when the repository's configuration has been changed. - - - - - - Repository specific properties - - - Repository specific properties - - - These properties can be specified on a repository specific basis - - - - - Basic Configurator interface for repositories - - - - Interface used by basic configurator to configure a - with a default . - - - A should implement this interface to support - configuration by the . - - - Nicko Cadell - Gert Driesen - - - - Initialize the repository using the specified appender - - the appender to use to log all logging events - - - Configure the repository to route all logging events to the - specified appender. - - - - - - Configure repository using XML - - - - Interface used by Xml configurator to configure a . - - - A should implement this interface to support - configuration by the . - - - Nicko Cadell - Gert Driesen - - - - Initialize the repository using the specified config - - the element containing the root of the config - - - The schema for the XML configuration data is defined by - the implementation. - - - - - - Default constructor - - - - Initializes a new instance of the class. - - - - - - Construct with properties - - The properties to pass to this repository. - - - Initializes a new instance of the class. - - - - - - Construct with a logger factory - - The factory to use to create new logger instances. - - - Initializes a new instance of the class with - the specified . - - - - - - Construct with properties and a logger factory - - The properties to pass to this repository. - The factory to use to create new logger instances. - - - Initializes a new instance of the class with - the specified . - - - - - - Test if a logger exists - - The name of the logger to lookup - The Logger object with the name specified - - - Check if the named logger exists in the hierarchy. If so return - its reference, otherwise returns null. - - - - - - Returns all the currently defined loggers in the hierarchy as an Array - - All the defined loggers - - - Returns all the currently defined loggers in the hierarchy as an Array. - The root logger is not included in the returned - enumeration. - - - - - - Return a new logger instance named as the first parameter using - the default factory. - - - - Return a new logger instance named as the first parameter using - the default factory. - - - If a logger of that name already exists, then it will be - returned. Otherwise, a new logger will be instantiated and - then linked with its existing ancestors as well as children. - - - The name of the logger to retrieve - The logger object with the name specified - - - - Shutting down a hierarchy will safely close and remove - all appenders in all loggers including the root logger. - - - - Shutting down a hierarchy will safely close and remove - all appenders in all loggers including the root logger. - - - Some appenders need to be closed before the - application exists. Otherwise, pending logging events might be - lost. - - - The Shutdown method is careful to close nested - appenders before closing regular appenders. This is allows - configurations where a regular appender is attached to a logger - and again to a nested appender. - - - - - - Reset all values contained in this hierarchy instance to their default. - - - - Reset all values contained in this hierarchy instance to their - default. This removes all appenders from all loggers, sets - the level of all non-root loggers to null, - sets their additivity flag to true and sets the level - of the root logger to . Moreover, - message disabling is set its default "off" value. - - - Existing loggers are not removed. They are just reset. - - - This method should be used sparingly and with care as it will - block all logging until it is completed. - - - - - - Log the logEvent through this hierarchy. - - the event to log - - - This method should not normally be used to log. - The interface should be used - for routine logging. This interface can be obtained - using the method. - - - The logEvent is delivered to the appropriate logger and - that logger is then responsible for logging the event. - - - - - - Returns all the Appenders that are currently configured - - An array containing all the currently configured appenders - - - Returns all the instances that are currently configured. - All the loggers are searched for appenders. The appenders may also be containers - for appenders and these are also searched for additional loggers. - - - The list returned is unordered but does not contain duplicates. - - - - - - Collect the appenders from an . - The appender may also be a container. - - - - - - - Collect the appenders from an container - - - - - - - Initialize the log4net system using the specified appender - - the appender to use to log all logging events - - - - Initialize the log4net system using the specified appender - - the appender to use to log all logging events - - - This method provides the same functionality as the - method implemented - on this object, but it is protected and therefore can be called by subclasses. - - - - - - Initialize the log4net system using the specified config - - the element containing the root of the config - - - - Initialize the log4net system using the specified config - - the element containing the root of the config - - - This method provides the same functionality as the - method implemented - on this object, but it is protected and therefore can be called by subclasses. - - - - - - Test if this hierarchy is disabled for the specified . - - The level to check against. - - true if the repository is disabled for the level argument, false otherwise. - - - - If this hierarchy has not been configured then this method will - always return true. - - - This method will return true if this repository is - disabled for level object passed as parameter and - false otherwise. - - - See also the property. - - - - - - Clear all logger definitions from the internal hashtable - - - - This call will clear all logger definitions from the internal - hashtable. Invoking this method will irrevocably mess up the - logger hierarchy. - - - You should really know what you are doing before - invoking this method. - - - - - - Return a new logger instance named as the first parameter using - . - - The name of the logger to retrieve - The factory that will make the new logger instance - The logger object with the name specified - - - If a logger of that name already exists, then it will be - returned. Otherwise, a new logger will be instantiated by the - parameter and linked with its existing - ancestors as well as children. - - - - - - Sends a logger creation event to all registered listeners - - The newly created logger - - Raises the logger creation event. - - - - - Updates all the parents of the specified logger - - The logger to update the parents for - - - This method loops through all the potential parents of - . There 3 possible cases: - - - - No entry for the potential parent of exists - - We create a ProvisionNode for this potential - parent and insert in that provision node. - - - - The entry is of type Logger for the potential parent. - - The entry is 's nearest existing parent. We - update 's parent field with this entry. We also break from - he loop because updating our parent's parent is our parent's - responsibility. - - - - The entry is of type ProvisionNode for this potential parent. - - We add to the list of children for this - potential parent. - - - - - - - - Replace a with a in the hierarchy. - - - - - - We update the links for all the children that placed themselves - in the provision node 'pn'. The second argument 'log' is a - reference for the newly created Logger, parent of all the - children in 'pn'. - - - We loop on all the children 'c' in 'pn'. - - - If the child 'c' has been already linked to a child of - 'log' then there is no need to update 'c'. - - - Otherwise, we set log's parent field to c's parent and set - c's parent field to log. - - - - - - Define or redefine a Level using the values in the argument - - the level values - - - Define or redefine a Level using the values in the argument - - - Supports setting levels via the configuration file. - - - - - - Set a Property using the values in the argument - - the property value - - - Set a Property using the values in the argument. - - - Supports setting property values via the configuration file. - - - - - - Event used to notify that a logger has been created. - - - - Event raised when a logger is created. - - - - - - Has no appender warning been emitted - - - - Flag to indicate if we have already issued a warning - about not having an appender warning. - - - - - - Get the root of this hierarchy - - - - Get the root of this hierarchy. - - - - - - Gets or sets the default instance. - - The default - - - The logger factory is used to create logger instances. - - - - - - A class to hold the value, name and display name for a level - - - - A class to hold the value, name and display name for a level - - - - - - Override Object.ToString to return sensible debug info - - string info about this object - - - - Value of the level - - - - If the value is not set (defaults to -1) the value will be looked - up for the current level with the same name. - - - - - - Name of the level - - - The name of the level - - - - The name of the level. - - - - - - Display name for the level - - - The display name of the level - - - - The display name of the level. - - - - - - A class to hold the key and data for a property set in the config file - - - - A class to hold the key and data for a property set in the config file - - - - - - Override Object.ToString to return sensible debug info - - string info about this object - - - - Property Key - - - Property Key - - - - Property Key. - - - - - - Property Value - - - Property Value - - - - Property Value. - - - - - - Used internally to accelerate hash table searches. - - - - Internal class used to improve performance of - string keyed hashtables. - - - The hashcode of the string is cached for reuse. - The string is stored as an interned value. - When comparing two objects for equality - the reference equality of the interned strings is compared. - - - Nicko Cadell - Gert Driesen - - - - Construct key with string name - - - - Initializes a new instance of the class - with the specified name. - - - Stores the hashcode of the string and interns - the string key to optimize comparisons. - - - The Compact Framework 1.0 the - method does not work. On the Compact Framework - the string keys are not interned nor are they - compared by reference. - - - The name of the logger. - - - - Returns a hash code for the current instance. - - A hash code for the current instance. - - - Returns the cached hashcode. - - - - - - Determines whether two instances - are equal. - - The to compare with the current . - - true if the specified is equal to the current ; otherwise, false. - - - - Compares the references of the interned strings. - - - - - - Provision nodes are used where no logger instance has been specified - - - - instances are used in the - when there is no specified - for that node. - - - A provision node holds a list of child loggers on behalf of - a logger that does not exist. - - - Nicko Cadell - Gert Driesen - - - - Create a new provision node with child node - - A child logger to add to this node. - - - Initializes a new instance of the class - with the specified child logger. - - - - - - The sits at the root of the logger hierarchy tree. - - - - The is a regular except - that it provides several guarantees. - - - First, it cannot be assigned a null - level. Second, since the root logger cannot have a parent, the - property always returns the value of the - level field without walking the hierarchy. - - - Nicko Cadell - Gert Driesen - - - - Construct a - - The level to assign to the root logger. - - - Initializes a new instance of the class with - the specified logging level. - - - The root logger names itself as "root". However, the root - logger cannot be retrieved by name. - - - - - - Gets the assigned level value without walking the logger hierarchy. - - The assigned level value without walking the logger hierarchy. - - - Because the root logger cannot have a parent and its level - must not be null this property just returns the - value of . - - - - - - Gets or sets the assigned for the root logger. - - - The of the root logger. - - - - Setting the level of the root logger to a null reference - may have catastrophic results. We prevent this here. - - - - - - Initializes the log4net environment using an XML DOM. - - - - Configures a using an XML DOM. - - - Nicko Cadell - Gert Driesen - - - - Construct the configurator for a hierarchy - - The hierarchy to build. - - - Initializes a new instance of the class - with the specified . - - - - - - Configure the hierarchy by parsing a DOM tree of XML elements. - - The root element to parse. - - - Configure the hierarchy by parsing a DOM tree of XML elements. - - - - - - Parse appenders by IDREF. - - The appender ref element. - The instance of the appender that the ref refers to. - - - Parse an XML element that represents an appender and return - the appender. - - - - - - Parses an appender element. - - The appender element. - The appender instance or null when parsing failed. - - - Parse an XML element that represents an appender and return - the appender instance. - - - - - - Parses a logger element. - - The logger element. - - - Parse an XML element that represents a logger. - - - - - - Parses the root logger element. - - The root element. - - - Parse an XML element that represents the root logger. - - - - - - Parses the children of a logger element. - - The category element. - The logger instance. - Flag to indicate if the logger is the root logger. - - - Parse the child elements of a <logger> element. - - - - - - Parses an object renderer. - - The renderer element. - - - Parse an XML element that represents a renderer. - - - - - - Parses a level element. - - The level element. - The logger object to set the level on. - Flag to indicate if the logger is the root logger. - - - Parse an XML element that represents a level. - - - - - - Sets a parameter on an object. - - The parameter element. - The object to set the parameter on. - - The parameter name must correspond to a writable property - on the object. The value of the parameter is a string, - therefore this function will attempt to set a string - property first. If unable to set a string property it - will inspect the property and its argument type. It will - attempt to call a static method called Parse on the - type of the property. This method will take a single - string argument and return a value that can be used to - set the property. - - - - - Test if an element has no attributes or child elements - - the element to inspect - true if the element has any attributes or child elements, false otherwise - - - - Test if a is constructible with Activator.CreateInstance. - - the type to inspect - true if the type is creatable using a default constructor, false otherwise - - - - Look for a method on the that matches the supplied - - the type that has the method - the name of the method - the method info found - - - The method must be a public instance method on the . - The method must be named or "Add" followed by . - The method must take a single parameter. - - - - - - Converts a string value to a target type. - - The type of object to convert the string to. - The string value to use as the value of the object. - - - An object of type with value or - null when the conversion could not be performed. - - - - - - Creates an object as specified in XML. - - The XML element that contains the definition of the object. - The object type to use if not explicitly specified. - The type that the returned object must be or must inherit from. - The object or null - - - Parse an XML element and create an object instance based on the configuration - data. - - - The type of the instance may be specified in the XML. If not - specified then the is used - as the type. However the type is specified it must support the - type. - - - - - - key: appenderName, value: appender. - - - - - The Hierarchy being configured. - - - - - Delegate used to handle logger repository shutdown event notifications - - The that is shutting down. - Empty event args - - - Delegate used to handle logger repository shutdown event notifications. - - - - - - Delegate used to handle logger repository configuration reset event notifications - - The that has had its configuration reset. - Empty event args - - - Delegate used to handle logger repository configuration reset event notifications. - - - - - - Delegate used to handle event notifications for logger repository configuration changes. - - The that has had its configuration changed. - Empty event arguments. - - - Delegate used to handle event notifications for logger repository configuration changes. - - - - - - Write the name of the current AppDomain to the output - - - - Write the name of the current AppDomain to the output writer - - - Nicko Cadell - - - - Write the name of the current AppDomain to the output - - the writer to write to - null, state is not set - - - Writes name of the current AppDomain to the output . - - - - - - Write the current date to the output - - - - Date pattern converter, uses a to format - the current date and time to the writer as a string. - - - The value of the determines - the formatting of the date. The following values are allowed: - - - Option value - Output - - - ISO8601 - - Uses the formatter. - Formats using the "yyyy-MM-dd HH:mm:ss,fff" pattern. - - - - DATE - - Uses the formatter. - Formats using the "dd MMM yyyy HH:mm:ss,fff" for example, "06 Nov 1994 15:49:37,459". - - - - ABSOLUTE - - Uses the formatter. - Formats using the "HH:mm:ss,fff" for example, "15:49:37,459". - - - - other - - Any other pattern string uses the formatter. - This formatter passes the pattern string to the - method. - For details on valid patterns see - DateTimeFormatInfo Class. - - - - - - The date and time is in the local time zone and is rendered in that zone. - To output the time in Universal time see . - - - Nicko Cadell - - - - The used to render the date to a string - - - - The used to render the date to a string - - - - - - Initialize the converter options - - - - This is part of the delayed object - activation scheme. The method must - be called on this object after the configuration properties have - been set. Until is called this - object is in an undefined state and must not be used. - - - If any of the configuration properties are modified then - must be called again. - - - - - - Write the current date to the output - - that will receive the formatted result. - null, state is not set - - - Pass the current date and time to the - for it to render it to the writer. - - - The date and time passed is in the local time zone. - - - - - - Write an environment variable to the output - - - - Write an environment variable to the output writer. - The value of the determines - the name of the variable to output. - - - Nicko Cadell - - - - Write an environment variable to the output - - the writer to write to - null, state is not set - - - Writes the environment variable to the output . - The name of the environment variable to output must be set - using the - property. - - - - - - Write the current thread identity to the output - - - - Write the current thread identity to the output writer - - - Nicko Cadell - - - - Write the current thread identity to the output - - the writer to write to - null, state is not set - - - Writes the current thread identity to the output . - - - - - - Pattern converter for literal string instances in the pattern - - - - Writes the literal string value specified in the - property to - the output. - - - Nicko Cadell - - - - Set the next converter in the chain - - The next pattern converter in the chain - The next pattern converter - - - Special case the building of the pattern converter chain - for instances. Two adjacent - literals in the pattern can be represented by a single combined - pattern converter. This implementation detects when a - is added to the chain - after this converter and combines its value with this converter's - literal value. - - - - - - Write the literal to the output - - the writer to write to - null, not set - - - Override the formatting behavior to ignore the FormattingInfo - because we have a literal instead. - - - Writes the value of - to the output . - - - - - - Convert this pattern into the rendered message - - that will receive the formatted result. - null, not set - - - This method is not used. - - - - - - Writes a newline to the output - - - - Writes the system dependent line terminator to the output. - This behavior can be overridden by setting the : - - - - Option Value - Output - - - DOS - DOS or Windows line terminator "\r\n" - - - UNIX - UNIX line terminator "\n" - - - - Nicko Cadell - - - - Initialize the converter - - - - This is part of the delayed object - activation scheme. The method must - be called on this object after the configuration properties have - been set. Until is called this - object is in an undefined state and must not be used. - - - If any of the configuration properties are modified then - must be called again. - - - - - - Write the current process ID to the output - - - - Write the current process ID to the output writer - - - Nicko Cadell - - - - Write the current process ID to the output - - the writer to write to - null, state is not set - - - Write the current process ID to the output . - - - - - - Property pattern converter - - - - This pattern converter reads the thread and global properties. - The thread properties take priority over global properties. - See for details of the - thread properties. See for - details of the global properties. - - - If the is specified then that will be used to - lookup a single property. If no is specified - then all properties will be dumped as a list of key value pairs. - - - Nicko Cadell - - - - Write the property value to the output - - that will receive the formatted result. - null, state is not set - - - Writes out the value of a named property. The property name - should be set in the - property. - - - If the is set to null - then all the properties are written as key value pairs. - - - - - - A Pattern converter that generates a string of random characters - - - - The converter generates a string of random characters. By default - the string is length 4. This can be changed by setting the - to the string value of the length required. - - - The random characters in the string are limited to uppercase letters - and numbers only. - - - The random number generator used by this class is not cryptographically secure. - - - Nicko Cadell - - - - Shared random number generator - - - - - Length of random string to generate. Default length 4. - - - - - Initialize the converter options - - - - This is part of the delayed object - activation scheme. The method must - be called on this object after the configuration properties have - been set. Until is called this - object is in an undefined state and must not be used. - - - If any of the configuration properties are modified then - must be called again. - - - - - - Write a randoim string to the output - - the writer to write to - null, state is not set - - - Write a randoim string to the output . - - - - - - Write the current threads username to the output - - - - Write the current threads username to the output writer - - - Nicko Cadell - - - - Write the current threads username to the output - - the writer to write to - null, state is not set - - - Write the current threads username to the output . - - - - - - Write the UTC date time to the output - - - - Date pattern converter, uses a to format - the current date and time in Universal time. - - - See the for details on the date pattern syntax. - - - - Nicko Cadell - - - - Write the current date and time to the output - - that will receive the formatted result. - null, state is not set - - - Pass the current date and time to the - for it to render it to the writer. - - - The date is in Universal time when it is rendered. - - - - - - - Type converter for Boolean. - - - - Supports conversion from string to bool type. - - - - - - Nicko Cadell - Gert Driesen - - - - Can the source type be converted to the type supported by this object - - the type to convert - true if the conversion is possible - - - Returns true if the is - the type. - - - - - - Convert the source object to the type supported by this object - - the object to convert - the converted object - - - Uses the method to convert the - argument to a . - - - - The object cannot be converted to the - target type. To check for this condition use the - method. - - - - - Exception base type for conversion errors. - - - - This type extends . It - does not add any new functionality but does differentiate the - type of exception being thrown. - - - Nicko Cadell - Gert Driesen - - - - Constructor - - - - Initializes a new instance of the class. - - - - - - Constructor - - A message to include with the exception. - - - Initializes a new instance of the class - with the specified message. - - - - - - Constructor - - A message to include with the exception. - A nested exception to include. - - - Initializes a new instance of the class - with the specified message and inner exception. - - - - - - Serialization constructor - - The that holds the serialized object data about the exception being thrown. - The that contains contextual information about the source or destination. - - - Initializes a new instance of the class - with serialized data. - - - - - - Creates a new instance of the class. - - The conversion destination type. - The value to convert. - An instance of the . - - - Creates a new instance of the class. - - - - - - Creates a new instance of the class. - - The conversion destination type. - The value to convert. - A nested exception to include. - An instance of the . - - - Creates a new instance of the class. - - - - - - Register of type converters for specific types. - - - - Maintains a registry of type converters used to convert between - types. - - - Use the and - methods to register new converters. - The and methods - lookup appropriate converters to use. - - - - - Nicko Cadell - Gert Driesen - - - - Private constructor - - - Initializes a new instance of the class. - - - - - Static constructor. - - - - This constructor defines the intrinsic type converters. - - - - - - Adds a converter for a specific type. - - The type being converted to. - The type converter to use to convert to the destination type. - - - Adds a converter instance for a specific type. - - - - - - Adds a converter for a specific type. - - The type being converted to. - The type of the type converter to use to convert to the destination type. - - - Adds a converter for a specific type. - - - - - - Gets the type converter to use to convert values to the destination type. - - The type being converted from. - The type being converted to. - - The type converter instance to use for type conversions or null - if no type converter is found. - - - - Gets the type converter to use to convert values to the destination type. - - - - - - Gets the type converter to use to convert values to the destination type. - - The type being converted to. - - The type converter instance to use for type conversions or null - if no type converter is found. - - - - Gets the type converter to use to convert values to the destination type. - - - - - - Lookups the type converter to use as specified by the attributes on the - destination type. - - The type being converted to. - - The type converter instance to use for type conversions or null - if no type converter is found. - - - - - Creates the instance of the type converter. - - The type of the type converter. - - The type converter instance to use for type conversions or null - if no type converter is found. - - - - The type specified for the type converter must implement - the or interfaces - and must have a public default (no argument) constructor. - - - - - - Mapping from to type converter. - - - - - Supports conversion from string to type. - - - - Supports conversion from string to type. - - - - - - Nicko Cadell - Gert Driesen - - - - Can the source type be converted to the type supported by this object - - the type to convert - true if the conversion is possible - - - Returns true if the is - the type. - - - - - - Overrides the ConvertFrom method of IConvertFrom. - - the object to convert to an encoding - the encoding - - - Uses the method to - convert the argument to an . - - - - The object cannot be converted to the - target type. To check for this condition use the - method. - - - - - Interface supported by type converters - - - - This interface supports conversion from a single type to arbitrary types. - See . - - - Nicko Cadell - - - - Returns whether this converter can convert the object to the specified type - - A Type that represents the type you want to convert to - true if the conversion is possible - - - Test if the type supported by this converter can be converted to the - . - - - - - - Converts the given value object to the specified type, using the arguments - - the object to convert - The Type to convert the value parameter to - the converted object - - - Converts the (which must be of the type supported - by this converter) to the specified.. - - - - - - Supports conversion from string to type. - - - - Supports conversion from string to type. - - - - - Nicko Cadell - - - - Can the source type be converted to the type supported by this object - - the type to convert - true if the conversion is possible - - - Returns true if the is - the type. - - - - - - Overrides the ConvertFrom method of IConvertFrom. - - the object to convert to an IPAddress - the IPAddress - - - Uses the method to convert the - argument to an . - If that fails then the string is resolved as a DNS hostname. - - - - The object cannot be converted to the - target type. To check for this condition use the - method. - - - - - Valid characters in an IPv4 or IPv6 address string. (Does not support subnets) - - - - - Supports conversion from string to type. - - - - Supports conversion from string to type. - - - The string is used as the - of the . - - - - - - Nicko Cadell - - - - Can the source type be converted to the type supported by this object - - the type to convert - true if the conversion is possible - - - Returns true if the is - the type. - - - - - - Overrides the ConvertFrom method of IConvertFrom. - - the object to convert to a PatternLayout - the PatternLayout - - - Creates and returns a new using - the as the - . - - - - The object cannot be converted to the - target type. To check for this condition use the - method. - - - - - Convert between string and - - - - Supports conversion from string to type, - and from a type to a string. - - - The string is used as the - of the . - - - - - - Nicko Cadell - - - - Can the target type be converted to the type supported by this object - - A that represents the type you want to convert to - true if the conversion is possible - - - Returns true if the is - assignable from a type. - - - - - - Converts the given value object to the specified type, using the arguments - - the object to convert - The Type to convert the value parameter to - the converted object - - - Uses the method to convert the - argument to a . - - - - The object cannot be converted to the - . To check for this condition use the - method. - - - - - Can the source type be converted to the type supported by this object - - the type to convert - true if the conversion is possible - - - Returns true if the is - the type. - - - - - - Overrides the ConvertFrom method of IConvertFrom. - - the object to convert to a PatternString - the PatternString - - - Creates and returns a new using - the as the - . - - - - The object cannot be converted to the - target type. To check for this condition use the - method. - - - - - Supports conversion from string to type. - - - - Supports conversion from string to type. - - - - - - Nicko Cadell - - - - Can the source type be converted to the type supported by this object - - the type to convert - true if the conversion is possible - - - Returns true if the is - the type. - - - - - - Overrides the ConvertFrom method of IConvertFrom. - - the object to convert to a Type - the Type - - - Uses the method to convert the - argument to a . - Additional effort is made to locate partially specified types - by searching the loaded assemblies. - - - - The object cannot be converted to the - target type. To check for this condition use the - method. - - - - - Attribute used to associate a type converter - - - - Class and Interface level attribute that specifies a type converter - to use with the associated type. - - - To associate a type converter with a target type apply a - TypeConverterAttribute to the target type. Specify the - type of the type converter on the attribute. - - - Nicko Cadell - Gert Driesen - - - - The string type name of the type converter - - - - - Default constructor - - - - Default constructor - - - - - - Create a new type converter attribute for the specified type name - - The string type name of the type converter - - - The type specified must implement the - or the interfaces. - - - - - - Create a new type converter attribute for the specified type - - The type of the type converter - - - The type specified must implement the - or the interfaces. - - - - - - The string type name of the type converter - - - The string type name of the type converter - - - - The type specified must implement the - or the interfaces. - - - - - - A straightforward implementation of the interface. - - - - This is the default implementation of the - interface. Implementors of the interface - should aggregate an instance of this type. - - - Nicko Cadell - Gert Driesen - - - - Constructor - - - - Initializes a new instance of the class. - - - - - - Append on on all attached appenders. - - The event being logged. - The number of appenders called. - - - Calls the method on all - attached appenders. - - - - - - Append on on all attached appenders. - - The array of events being logged. - The number of appenders called. - - - Calls the method on all - attached appenders. - - - - - - Calls the DoAppende method on the with - the objects supplied. - - The appender - The events - - - If the supports the - interface then the will be passed - through using that interface. Otherwise the - objects in the array will be passed one at a time. - - - - - - Attaches an appender. - - The appender to add. - - - If the appender is already in the list it won't be added again. - - - - - - Gets an attached appender with the specified name. - - The name of the appender to get. - - The appender with the name specified, or null if no appender with the - specified name is found. - - - - Lookup an attached appender by name. - - - - - - Removes all attached appenders. - - - - Removes and closes all attached appenders - - - - - - Removes the specified appender from the list of attached appenders. - - The appender to remove. - The appender removed from the list - - - The appender removed is not closed. - If you are discarding the appender you must call - on the appender removed. - - - - - - Removes the appender with the specified name from the list of appenders. - - The name of the appender to remove. - The appender removed from the list - - - The appender removed is not closed. - If you are discarding the appender you must call - on the appender removed. - - - - - - List of appenders - - - - - Array of appenders, used to cache the m_appenderList - - - - - Gets all attached appenders. - - - A collection of attached appenders, or null if there - are no attached appenders. - - - - The read only collection of all currently attached appenders. - - - - - - This class aggregates several PropertiesDictionary collections together. - - - - Provides a dictionary style lookup over an ordered list of - collections. - - - Nicko Cadell - - - - Constructor - - - - Initializes a new instance of the class. - - - - - - Add a Properties Dictionary to this composite collection - - the properties to add - - - Properties dictionaries added first take precedence over dictionaries added - later. - - - - - - Flatten this composite collection into a single properties dictionary - - the flattened dictionary - - - Reduces the collection of ordered dictionaries to a single dictionary - containing the resultant values for the keys. - - - - - - Gets the value of a property - - - The value for the property with the specified key - - - - Looks up the value for the specified. - The collections are searched - in the order in which they were added to this collection. The value - returned is the value held by the first collection that contains - the specified key. - - - If none of the collections contain the specified key then - null is returned. - - - - - - Base class for Context Properties implementations - - - - This class defines a basic property get set accessor - - - Nicko Cadell - - - - Gets or sets the value of a property - - - The value for the property with the specified key - - - - Gets or sets the value of a property - - - - - - Subclass of that maintains a count of - the number of bytes written. - - - - This writer counts the number of bytes written. - - - Nicko Cadell - Gert Driesen - - - - that does not leak exceptions - - - - does not throw exceptions when things go wrong. - Instead, it delegates error handling to its . - - - Nicko Cadell - Gert Driesen - - - - Adapter that extends and forwards all - messages to an instance of . - - - - Adapter that extends and forwards all - messages to an instance of . - - - Nicko Cadell - - - - The writer to forward messages to - - - - - Create an instance of that forwards all - messages to a . - - The to forward to - - - Create an instance of that forwards all - messages to a . - - - - - - Closes the writer and releases any system resources associated with the writer - - - - - - - - - Dispose this writer - - flag indicating if we are being disposed - - - Dispose this writer - - - - - - Flushes any buffered output - - - - Clears all buffers for the writer and causes any buffered data to be written - to the underlying device - - - - - - Writes a character to the wrapped TextWriter - - the value to write to the TextWriter - - - Writes a character to the wrapped TextWriter - - - - - - Writes a character buffer to the wrapped TextWriter - - the data buffer - the start index - the number of characters to write - - - Writes a character buffer to the wrapped TextWriter - - - - - - Writes a string to the wrapped TextWriter - - the value to write to the TextWriter - - - Writes a string to the wrapped TextWriter - - - - - - Gets or sets the underlying . - - - The underlying . - - - - Gets or sets the underlying . - - - - - - The Encoding in which the output is written - - - The - - - - The Encoding in which the output is written - - - - - - Gets an object that controls formatting - - - The format provider - - - - Gets an object that controls formatting - - - - - - Gets or sets the line terminator string used by the TextWriter - - - The line terminator to use - - - - Gets or sets the line terminator string used by the TextWriter - - - - - - Constructor - - the writer to actually write to - the error handler to report error to - - - Create a new QuietTextWriter using a writer and error handler - - - - - - Writes a character to the underlying writer - - the char to write - - - Writes a character to the underlying writer - - - - - - Writes a buffer to the underlying writer - - the buffer to write - the start index to write from - the number of characters to write - - - Writes a buffer to the underlying writer - - - - - - Writes a string to the output. - - The string data to write to the output. - - - Writes a string to the output. - - - - - - Closes the underlying output writer. - - - - Closes the underlying output writer. - - - - - - The error handler instance to pass all errors to - - - - - Flag to indicate if this writer is closed - - - - - Gets or sets the error handler that all errors are passed to. - - - The error handler that all errors are passed to. - - - - Gets or sets the error handler that all errors are passed to. - - - - - - Gets a value indicating whether this writer is closed. - - - true if this writer is closed, otherwise false. - - - - Gets a value indicating whether this writer is closed. - - - - - - Constructor - - The to actually write to. - The to report errors to. - - - Creates a new instance of the class - with the specified and . - - - - - - Writes a character to the underlying writer and counts the number of bytes written. - - the char to write - - - Overrides implementation of . Counts - the number of bytes written. - - - - - - Writes a buffer to the underlying writer and counts the number of bytes written. - - the buffer to write - the start index to write from - the number of characters to write - - - Overrides implementation of . Counts - the number of bytes written. - - - - - - Writes a string to the output and counts the number of bytes written. - - The string data to write to the output. - - - Overrides implementation of . Counts - the number of bytes written. - - - - - - Total number of bytes written. - - - - - Gets or sets the total number of bytes written. - - - The total number of bytes written. - - - - Gets or sets the total number of bytes written. - - - - - - A fixed size rolling buffer of logging events. - - - - An array backed fixed size leaky bucket. - - - Nicko Cadell - Gert Driesen - - - - Constructor - - The maximum number of logging events in the buffer. - - - Initializes a new instance of the class with - the specified maximum number of buffered logging events. - - - The argument is not a positive integer. - - - - Appends a to the buffer. - - The event to append to the buffer. - The event discarded from the buffer, if the buffer is full, otherwise null. - - - Append an event to the buffer. If the buffer still contains free space then - null is returned. If the buffer is full then an event will be dropped - to make space for the new event, the event dropped is returned. - - - - - - Get and remove the oldest event in the buffer. - - The oldest logging event in the buffer - - - Gets the oldest (first) logging event in the buffer and removes it - from the buffer. - - - - - - Pops all the logging events from the buffer into an array. - - An array of all the logging events in the buffer. - - - Get all the events in the buffer and clear the buffer. - - - - - - Clear the buffer - - - - Clear the buffer of all events. The events in the buffer are lost. - - - - - - Gets the th oldest event currently in the buffer. - - The th oldest event currently in the buffer. - - - If is outside the range 0 to the number of events - currently in the buffer, then null is returned. - - - - - - Gets the maximum size of the buffer. - - The maximum size of the buffer. - - - Gets the maximum size of the buffer - - - - - - Gets the number of logging events in the buffer. - - The number of logging events in the buffer. - - - This number is guaranteed to be in the range 0 to - (inclusive). - - - - - - An always empty . - - - - A singleton implementation of the - interface that always represents an empty collection. - - - Nicko Cadell - Gert Driesen - - - - Initializes a new instance of the class. - - - - Uses a private access modifier to enforce the singleton pattern. - - - - - - Copies the elements of the to an - , starting at a particular Array index. - - The one-dimensional - that is the destination of the elements copied from - . The Array must have zero-based - indexing. - The zero-based index in array at which - copying begins. - - - As the collection is empty no values are copied into the array. - - - - - - Returns an enumerator that can iterate through a collection. - - - An that can be used to - iterate through the collection. - - - - As the collection is empty a is returned. - - - - - - The singleton instance of the empty collection. - - - - - Gets the singleton instance of the empty collection. - - The singleton instance of the empty collection. - - - Gets the singleton instance of the empty collection. - - - - - - Gets a value indicating if access to the is synchronized (thread-safe). - - - true if access to the is synchronized (thread-safe); otherwise, false. - - - - For the this property is always true. - - - - - - Gets the number of elements contained in the . - - - The number of elements contained in the . - - - - As the collection is empty the is always 0. - - - - - - Gets an object that can be used to synchronize access to the . - - - An object that can be used to synchronize access to the . - - - - As the collection is empty and thread safe and synchronized this instance is also - the object. - - - - - - An always empty . - - - - A singleton implementation of the - interface that always represents an empty collection. - - - Nicko Cadell - Gert Driesen - - - - Initializes a new instance of the class. - - - - Uses a private access modifier to enforce the singleton pattern. - - - - - - Copies the elements of the to an - , starting at a particular Array index. - - The one-dimensional - that is the destination of the elements copied from - . The Array must have zero-based - indexing. - The zero-based index in array at which - copying begins. - - - As the collection is empty no values are copied into the array. - - - - - - Returns an enumerator that can iterate through a collection. - - - An that can be used to - iterate through the collection. - - - - As the collection is empty a is returned. - - - - - - Adds an element with the provided key and value to the - . - - The to use as the key of the element to add. - The to use as the value of the element to add. - - - As the collection is empty no new values can be added. A - is thrown if this method is called. - - - This dictionary is always empty and cannot be modified. - - - - Removes all elements from the . - - - - As the collection is empty no values can be removed. A - is thrown if this method is called. - - - This dictionary is always empty and cannot be modified. - - - - Determines whether the contains an element - with the specified key. - - The key to locate in the . - false - - - As the collection is empty the method always returns false. - - - - - - Returns an enumerator that can iterate through a collection. - - - An that can be used to - iterate through the collection. - - - - As the collection is empty a is returned. - - - - - - Removes the element with the specified key from the . - - The key of the element to remove. - - - As the collection is empty no values can be removed. A - is thrown if this method is called. - - - This dictionary is always empty and cannot be modified. - - - - The singleton instance of the empty dictionary. - - - - - Gets the singleton instance of the . - - The singleton instance of the . - - - Gets the singleton instance of the . - - - - - - Gets a value indicating if access to the is synchronized (thread-safe). - - - true if access to the is synchronized (thread-safe); otherwise, false. - - - - For the this property is always true. - - - - - - Gets the number of elements contained in the - - - The number of elements contained in the . - - - - As the collection is empty the is always 0. - - - - - - Gets an object that can be used to synchronize access to the . - - - An object that can be used to synchronize access to the . - - - - As the collection is empty and thread safe and synchronized this instance is also - the object. - - - - - - Gets a value indicating whether the has a fixed size. - - true - - - As the collection is empty always returns true. - - - - - - Gets a value indicating whether the is read-only. - - true - - - As the collection is empty always returns true. - - - - - - Gets an containing the keys of the . - - An containing the keys of the . - - - As the collection is empty a is returned. - - - - - - Gets an containing the values of the . - - An containing the values of the . - - - As the collection is empty a is returned. - - - - - - Gets or sets the element with the specified key. - - The key of the element to get or set. - null - - - As the collection is empty no values can be looked up or stored. - If the index getter is called then null is returned. - A is thrown if the setter is called. - - - This dictionary is always empty and cannot be modified. - - - - Contain the information obtained when parsing formatting modifiers - in conversion modifiers. - - - - Holds the formatting information extracted from the format string by - the . This is used by the - objects when rendering the output. - - - Nicko Cadell - Gert Driesen - - - - Defaut Constructor - - - - Initializes a new instance of the class. - - - - - - Constructor - - - - Initializes a new instance of the class - with the specified parameters. - - - - - - Gets or sets the minimum value. - - - The minimum value. - - - - Gets or sets the minimum value. - - - - - - Gets or sets the maximum value. - - - The maximum value. - - - - Gets or sets the maximum value. - - - - - - Gets or sets a flag indicating whether left align is enabled - or not. - - - A flag indicating whether left align is enabled or not. - - - - Gets or sets a flag indicating whether left align is enabled or not. - - - - - - Implementation of Properties collection for the - - - - This class implements a properties collection that is thread safe and supports both - storing properties and capturing a read only copy of the current propertied. - - - This class is optimized to the scenario where the properties are read frequently - and are modified infrequently. - - - Nicko Cadell - - - - The read only copy of the properties. - - - - This variable is declared volatile to prevent the compiler and JIT from - reordering reads and writes of this thread performed on different threads. - - - - - - Lock object used to synchronize updates within this instance - - - - - Constructor - - - - Initializes a new instance of the class. - - - - - - Remove a property from the global context - - the key for the entry to remove - - - Removing an entry from the global context properties is relatively expensive compared - with reading a value. - - - - - - Clear the global context properties - - - - - Get a readonly immutable copy of the properties - - the current global context properties - - - This implementation is fast because the GlobalContextProperties class - stores a readonly copy of the properties. - - - - - - Gets or sets the value of a property - - - The value for the property with the specified key - - - - Reading the value for a key is faster than setting the value. - When the value is written a new read only copy of - the properties is created. - - - - - - Manages a mapping from levels to - - - - Manages an ordered mapping from instances - to subclasses. - - - Nicko Cadell - - - - Default constructor - - - - Initialise a new instance of . - - - - - - Add a to this mapping - - the entry to add - - - If a has previously been added - for the same then that entry will be - overwritten. - - - - - - Lookup the mapping for the specified level - - the level to lookup - the for the level or null if no mapping found - - - Lookup the value for the specified level. Finds the nearest - mapping value for the level that is equal to or less than the - specified. - - - If no mapping could be found then null is returned. - - - - - - Initialize options - - - - Caches the sorted list of in an array - - - - - - Implementation of Properties collection for the - - - - Class implements a collection of properties that is specific to each thread. - The class is not synchronized as each thread has its own . - - - Nicko Cadell - - - - Constructor - - - - Initializes a new instance of the class. - - - - - - Remove a property - - the key for the entry to remove - - - Remove the value for the specified from the context. - - - - - - Clear all the context properties - - - - Clear all the context properties - - - - - - Get the PropertiesDictionary stored in the LocalDataStoreSlot for this thread. - - create the dictionary if it does not exist, otherwise return null if is does not exist - the properties for this thread - - - The collection returned is only to be used on the calling thread. If the - caller needs to share the collection between different threads then the - caller must clone the collection before doings so. - - - - - - Gets or sets the value of a property - - - The value for the property with the specified key - - - - Get or set the property value for the specified. - - - - - - Outputs log statements from within the log4net assembly. - - - - Log4net components cannot make log4net logging calls. However, it is - sometimes useful for the user to learn about what log4net is - doing. - - - All log4net internal debug calls go to the standard output stream - whereas internal error messages are sent to the standard error output - stream. - - - Nicko Cadell - Gert Driesen - - - - Initializes a new instance of the class. - - - - Uses a private access modifier to prevent instantiation of this class. - - - - - - Static constructor that initializes logging by reading - settings from the application configuration file. - - - - The log4net.Internal.Debug application setting - controls internal debugging. This setting should be set - to true to enable debugging. - - - The log4net.Internal.Quiet application setting - suppresses all internal logging including error messages. - This setting should be set to true to enable message - suppression. - - - - - - Writes log4net internal debug messages to the - standard output stream. - - The message to log. - - - All internal debug messages are prepended with - the string "log4net: ". - - - - - - Writes log4net internal debug messages to the - standard output stream. - - The message to log. - An exception to log. - - - All internal debug messages are prepended with - the string "log4net: ". - - - - - - Writes log4net internal warning messages to the - standard error stream. - - The message to log. - - - All internal warning messages are prepended with - the string "log4net:WARN ". - - - - - - Writes log4net internal warning messages to the - standard error stream. - - The message to log. - An exception to log. - - - All internal warning messages are prepended with - the string "log4net:WARN ". - - - - - - Writes log4net internal error messages to the - standard error stream. - - The message to log. - - - All internal error messages are prepended with - the string "log4net:ERROR ". - - - - - - Writes log4net internal error messages to the - standard error stream. - - The message to log. - An exception to log. - - - All internal debug messages are prepended with - the string "log4net:ERROR ". - - - - - - Writes output to the standard output stream. - - The message to log. - - - Writes to both Console.Out and System.Diagnostics.Trace. - Note that the System.Diagnostics.Trace is not supported - on the Compact Framework. - - - If the AppDomain is not configured with a config file then - the call to System.Diagnostics.Trace may fail. This is only - an issue if you are programmatically creating your own AppDomains. - - - - - - Writes output to the standard error stream. - - The message to log. - - - Writes to both Console.Error and System.Diagnostics.Trace. - Note that the System.Diagnostics.Trace is not supported - on the Compact Framework. - - - If the AppDomain is not configured with a config file then - the call to System.Diagnostics.Trace may fail. This is only - an issue if you are programmatically creating your own AppDomains. - - - - - - Default debug level - - - - - In quietMode not even errors generate any output. - - - - - Gets or sets a value indicating whether log4net internal logging - is enabled or disabled. - - - true if log4net internal logging is enabled, otherwise - false. - - - - When set to true, internal debug level logging will be - displayed. - - - This value can be set by setting the application setting - log4net.Internal.Debug in the application configuration - file. - - - The default value is false, i.e. debugging is - disabled. - - - - - The following example enables internal debugging using the - application configuration file : - - - - - - - - - - - - - Gets or sets a value indicating whether log4net should generate no output - from internal logging, not even for errors. - - - true if log4net should generate no output at all from internal - logging, otherwise false. - - - - When set to true will cause internal logging at all levels to be - suppressed. This means that no warning or error reports will be logged. - This option overrides the setting and - disables all debug also. - - This value can be set by setting the application setting - log4net.Internal.Quiet in the application configuration file. - - - The default value is false, i.e. internal logging is not - disabled. - - - - The following example disables internal logging using the - application configuration file : - - - - - - - - - - - - Test if LogLog.Debug is enabled for output. - - - true if Debug is enabled - - - - Test if LogLog.Debug is enabled for output. - - - - - - Test if LogLog.Warn is enabled for output. - - - true if Warn is enabled - - - - Test if LogLog.Warn is enabled for output. - - - - - - Test if LogLog.Error is enabled for output. - - - true if Error is enabled - - - - Test if LogLog.Error is enabled for output. - - - - - - Represents a native error code and message. - - - - Represents a Win32 platform native error. - - - Nicko Cadell - Gert Driesen - - - - Create an instance of the class with the specified - error number and message. - - The number of the native error. - The message of the native error. - - - Create an instance of the class with the specified - error number and message. - - - - - - Create a new instance of the class for the last Windows error. - - - An instance of the class for the last windows error. - - - - The message for the error number is lookup up using the - native Win32 FormatMessage function. - - - - - - Create a new instance of the class. - - the error number for the native error - - An instance of the class for the specified - error number. - - - - The message for the specified error number is lookup up using the - native Win32 FormatMessage function. - - - - - - Retrieves the message corresponding with a Win32 message identifier. - - Message identifier for the requested message. - - The message corresponding with the specified message identifier. - - - - The message will be searched for in system message-table resource(s) - using the native FormatMessage function. - - - - - - Return error information string - - error information string - - - Return error information string - - - - - - Formats a message string. - - Formatting options, and how to interpret the parameter. - Location of the message definition. - Message identifier for the requested message. - Language identifier for the requested message. - If includes FORMAT_MESSAGE_ALLOCATE_BUFFER, the function allocates a buffer using the LocalAlloc function, and places the pointer to the buffer at the address specified in . - If the FORMAT_MESSAGE_ALLOCATE_BUFFER flag is not set, this parameter specifies the maximum number of TCHARs that can be stored in the output buffer. If FORMAT_MESSAGE_ALLOCATE_BUFFER is set, this parameter specifies the minimum number of TCHARs to allocate for an output buffer. - Pointer to an array of values that are used as insert values in the formatted message. - - - The function requires a message definition as input. The message definition can come from a - buffer passed into the function. It can come from a message table resource in an - already-loaded module. Or the caller can ask the function to search the system's message - table resource(s) for the message definition. The function finds the message definition - in a message table resource based on a message identifier and a language identifier. - The function copies the formatted message text to an output buffer, processing any embedded - insert sequences if requested. - - - To prevent the usage of unsafe code, this stub does not support inserting values in the formatted message. - - - - - If the function succeeds, the return value is the number of TCHARs stored in the output - buffer, excluding the terminating null character. - - - If the function fails, the return value is zero. To get extended error information, - call . - - - - - - Gets the number of the native error. - - - The number of the native error. - - - - Gets the number of the native error. - - - - - - Gets the message of the native error. - - - The message of the native error. - - - - - Gets the message of the native error. - - - - - An always empty . - - - - A singleton implementation of the over a collection - that is empty and not modifiable. - - - Nicko Cadell - Gert Driesen - - - - Initializes a new instance of the class. - - - - Uses a private access modifier to enforce the singleton pattern. - - - - - - Test if the enumerator can advance, if so advance. - - false as the cannot advance. - - - As the enumerator is over an empty collection its - value cannot be moved over a valid position, therefore - will always return false. - - - - - - Resets the enumerator back to the start. - - - - As the enumerator is over an empty collection does nothing. - - - - - - The singleton instance of the . - - - - - Gets the singleton instance of the . - - The singleton instance of the . - - - Gets the singleton instance of the . - - - - - - Gets the current object from the enumerator. - - - Throws an because the - never has a current value. - - - - As the enumerator is over an empty collection its - value cannot be moved over a valid position, therefore - will throw an . - - - The collection is empty and - cannot be positioned over a valid location. - - - - Gets the current key from the enumerator. - - - Throws an exception because the - never has a current value. - - - - As the enumerator is over an empty collection its - value cannot be moved over a valid position, therefore - will throw an . - - - The collection is empty and - cannot be positioned over a valid location. - - - - Gets the current value from the enumerator. - - The current value from the enumerator. - - Throws an because the - never has a current value. - - - - As the enumerator is over an empty collection its - value cannot be moved over a valid position, therefore - will throw an . - - - The collection is empty and - cannot be positioned over a valid location. - - - - Gets the current entry from the enumerator. - - - Throws an because the - never has a current entry. - - - - As the enumerator is over an empty collection its - value cannot be moved over a valid position, therefore - will throw an . - - - The collection is empty and - cannot be positioned over a valid location. - - - - An always empty . - - - - A singleton implementation of the over a collection - that is empty and not modifiable. - - - Nicko Cadell - Gert Driesen - - - - Initializes a new instance of the class. - - - - Uses a private access modifier to enforce the singleton pattern. - - - - - - Test if the enumerator can advance, if so advance - - false as the cannot advance. - - - As the enumerator is over an empty collection its - value cannot be moved over a valid position, therefore - will always return false. - - - - - - Resets the enumerator back to the start. - - - - As the enumerator is over an empty collection does nothing. - - - - - - The singleton instance of the . - - - - - Get the singleton instance of the . - - The singleton instance of the . - - - Gets the singleton instance of the . - - - - - - Gets the current object from the enumerator. - - - Throws an because the - never has a current value. - - - - As the enumerator is over an empty collection its - value cannot be moved over a valid position, therefore - will throw an . - - - The collection is empty and - cannot be positioned over a valid location. - - - - A SecurityContext used when a SecurityContext is not required - - - - The is a no-op implementation of the - base class. It is used where a - is required but one has not been provided. - - - Nicko Cadell - - - - Singleton instance of - - - - Singleton instance of - - - - - - Private constructor - - - - Private constructor for singleton pattern. - - - - - - Impersonate this SecurityContext - - State supplied by the caller - null - - - No impersonation is done and null is always returned. - - - - - - Implements log4net's default error handling policy which consists - of emitting a message for the first error in an appender and - ignoring all subsequent errors. - - - - The error message is printed on the standard error output stream. - - - This policy aims at protecting an otherwise working application - from being flooded with error messages when logging fails. - - - Nicko Cadell - Gert Driesen - - - - Default Constructor - - - - Initializes a new instance of the class. - - - - - - Constructor - - The prefix to use for each message. - - - Initializes a new instance of the class - with the specified prefix. - - - - - - Log an Error - - The error message. - The exception. - The internal error code. - - - Prints the message and the stack trace of the exception on the standard - error output stream. - - - - - - Log an Error - - The error message. - The exception. - - - Prints the message and the stack trace of the exception on the standard - error output stream. - - - - - - Log an error - - The error message. - - - Print a the error message passed as parameter on the standard - error output stream. - - - - - - Flag to indicate if it is the first error - - - - - String to prefix each message with - - - - - Is error logging enabled - - - - Is error logging enabled. Logging is only enabled for the - first error delivered to the . - - - - - - A convenience class to convert property values to specific types. - - - - Utility functions for converting types and parsing values. - - - Nicko Cadell - Gert Driesen - - - - Initializes a new instance of the class. - - - - Uses a private access modifier to prevent instantiation of this class. - - - - - - Converts a string to a value. - - String to convert. - The default value. - The value of . - - - If is "true", then true is returned. - If is "false", then false is returned. - Otherwise, is returned. - - - - - - Parses a file size into a number. - - String to parse. - The default value. - The value of . - - - Parses a file size of the form: number[KB|MB|GB] into a - long value. It is scaled with the appropriate multiplier. - - - is returned when - cannot be converted to a value. - - - - - - Converts a string to an object. - - The target type to convert to. - The string to convert to an object. - - The object converted from a string or null when the - conversion failed. - - - - Converts a string to an object. Uses the converter registry to try - to convert the string value into the specified target type. - - - - - - Checks if there is an appropriate type conversion from the source type to the target type. - - The type to convert from. - The type to convert to. - true if there is a conversion from the source type to the target type. - - Checks if there is an appropriate type conversion from the source type to the target type. - - - - - - - Converts an object to the target type. - - The object to convert to the target type. - The type to convert to. - The converted object. - - - Converts an object to the target type. - - - - - - Instantiates an object given a class name. - - The fully qualified class name of the object to instantiate. - The class to which the new object should belong. - The object to return in case of non-fulfillment. - - An instance of the or - if the object could not be instantiated. - - - - Checks that the is a subclass of - . If that test fails or the object could - not be instantiated, then is returned. - - - - - - Performs variable substitution in string from the - values of keys found in . - - The string on which variable substitution is performed. - The dictionary to use to lookup variables. - The result of the substitutions. - - - The variable substitution delimiters are ${ and }. - - - For example, if props contains key=value, then the call - - - - string s = OptionConverter.SubstituteVariables("Value of key is ${key}."); - - - - will set the variable s to "Value of key is value.". - - - If no value could be found for the specified key, then substitution - defaults to an empty string. - - - For example, if system properties contains no value for the key - "nonExistentKey", then the call - - - - string s = OptionConverter.SubstituteVariables("Value of nonExistentKey is [${nonExistentKey}]"); - - - - will set s to "Value of nonExistentKey is []". - - - An Exception is thrown if contains a start - delimiter "${" which is not balanced by a stop delimiter "}". - - - - - - Converts the string representation of the name or numeric value of one or - more enumerated constants to an equivalent enumerated object. - - The type to convert to. - The enum string value. - If true, ignore case; otherwise, regard case. - An object of type whose value is represented by . - - - - Most of the work of the class - is delegated to the PatternParser class. - - - - The PatternParser processes a pattern string and - returns a chain of objects. - - - Nicko Cadell - Gert Driesen - - - - Constructor - - The pattern to parse. - - - Initializes a new instance of the class - with the specified pattern string. - - - - - - Parses the pattern into a chain of pattern converters. - - The head of a chain of pattern converters. - - - Parses the pattern into a chain of pattern converters. - - - - - - Build the unified cache of converters from the static and instance maps - - the list of all the converter names - - - Build the unified cache of converters from the static and instance maps - - - - - - Internal method to parse the specified pattern to find specified matches - - the pattern to parse - the converter names to match in the pattern - - - The matches param must be sorted such that longer strings come before shorter ones. - - - - - - Process a parsed literal - - the literal text - - - - Process a parsed converter pattern - - the name of the converter - the optional option for the converter - the formatting info for the converter - - - - Resets the internal state of the parser and adds the specified pattern converter - to the chain. - - The pattern converter to add. - - - - The first pattern converter in the chain - - - - - the last pattern converter in the chain - - - - - The pattern - - - - - Internal map of converter identifiers to converter types - - - - This map overrides the static s_globalRulesRegistry map. - - - - - - Get the converter registry used by this parser - - - The converter registry used by this parser - - - - Get the converter registry used by this parser - - - - - - Sort strings by length - - - - that orders strings by string length. - The longest strings are placed first - - - - - - This class implements a patterned string. - - - - This string has embedded patterns that are resolved and expanded - when the string is formatted. - - - This class functions similarly to the - in that it accepts a pattern and renders it to a string. Unlike the - however the PatternString - does not render the properties of a specific but - of the process in general. - - - The recognized conversion pattern names are: - - - - Conversion Pattern Name - Effect - - - appdomain - - - Used to output the friendly name of the current AppDomain. - - - - - date - - - Used to output the date of the logging event in the local time zone. - To output the date in universal time use the %utcdate pattern. - The date conversion - specifier may be followed by a date format specifier enclosed - between braces. For example, %date{HH:mm:ss,fff} or - %date{dd MMM yyyy HH:mm:ss,fff}. If no date format specifier is - given then ISO8601 format is - assumed (). - - - The date format specifier admits the same syntax as the - time pattern string of the . - - - For better results it is recommended to use the log4net date - formatters. These can be specified using one of the strings - "ABSOLUTE", "DATE" and "ISO8601" for specifying - , - and respectively - . For example, - %date{ISO8601} or %date{ABSOLUTE}. - - - These dedicated date formatters perform significantly - better than . - - - - - env - - - Used to output the a specific environment variable. The key to - lookup must be specified within braces and directly following the - pattern specifier, e.g. %env{COMPUTERNAME} would include the value - of the COMPUTERNAME environment variable. - - - The env pattern is not supported on the .NET Compact Framework. - - - - - identity - - - Used to output the user name for the currently active user - (Principal.Identity.Name). - - - - - newline - - - Outputs the platform dependent line separator character or - characters. - - - This conversion pattern name offers the same performance as using - non-portable line separator strings such as "\n", or "\r\n". - Thus, it is the preferred way of specifying a line separator. - - - - - processid - - - Used to output the system process ID for the current process. - - - - - property - - - Used to output a specific context property. The key to - lookup must be specified within braces and directly following the - pattern specifier, e.g. %property{user} would include the value - from the property that is keyed by the string 'user'. Each property value - that is to be included in the log must be specified separately. - Properties are stored in logging contexts. By default - the log4net:HostName property is set to the name of machine on - which the event was originally logged. - - - If no key is specified, e.g. %property then all the keys and their - values are printed in a comma separated list. - - - The properties of an event are combined from a number of different - contexts. These are listed below in the order in which they are searched. - - - - the thread properties - - The that are set on the current - thread. These properties are shared by all events logged on this thread. - - - - the global properties - - The that are set globally. These - properties are shared by all the threads in the AppDomain. - - - - - - - random - - - Used to output a random string of characters. The string is made up of - uppercase letters and numbers. By default the string is 4 characters long. - The length of the string can be specified within braces directly following the - pattern specifier, e.g. %random{8} would output an 8 character string. - - - - - username - - - Used to output the WindowsIdentity for the currently - active user. - - - - - utcdate - - - Used to output the date of the logging event in universal time. - The date conversion - specifier may be followed by a date format specifier enclosed - between braces. For example, %utcdate{HH:mm:ss,fff} or - %utcdate{dd MMM yyyy HH:mm:ss,fff}. If no date format specifier is - given then ISO8601 format is - assumed (). - - - The date format specifier admits the same syntax as the - time pattern string of the . - - - For better results it is recommended to use the log4net date - formatters. These can be specified using one of the strings - "ABSOLUTE", "DATE" and "ISO8601" for specifying - , - and respectively - . For example, - %utcdate{ISO8601} or %utcdate{ABSOLUTE}. - - - These dedicated date formatters perform significantly - better than . - - - - - % - - - The sequence %% outputs a single percent sign. - - - - - - Additional pattern converters may be registered with a specific - instance using or - . - - - See the for details on the - format modifiers supported by the patterns. - - - Nicko Cadell - - - - Internal map of converter identifiers to converter types. - - - - - the pattern - - - - - the head of the pattern converter chain - - - - - patterns defined on this PatternString only - - - - - Initialize the global registry - - - - - Default constructor - - - - Initialize a new instance of - - - - - - Constructs a PatternString - - The pattern to use with this PatternString - - - Initialize a new instance of with the pattern specified. - - - - - - Initialize object options - - - - This is part of the delayed object - activation scheme. The method must - be called on this object after the configuration properties have - been set. Until is called this - object is in an undefined state and must not be used. - - - If any of the configuration properties are modified then - must be called again. - - - - - - Create the used to parse the pattern - - the pattern to parse - The - - - Returns PatternParser used to parse the conversion string. Subclasses - may override this to return a subclass of PatternParser which recognize - custom conversion pattern name. - - - - - - Produces a formatted string as specified by the conversion pattern. - - The TextWriter to write the formatted event to - - - Format the pattern to the . - - - - - - Format the pattern as a string - - the pattern formatted as a string - - - Format the pattern to a string. - - - - - - Add a converter to this PatternString - - the converter info - - - This version of the method is used by the configurator. - Programmatic users should use the alternative method. - - - - - - Add a converter to this PatternString - - the name of the conversion pattern for this converter - the type of the converter - - - Add a converter to this PatternString - - - - - - Gets or sets the pattern formatting string - - - The pattern formatting string - - - - The ConversionPattern option. This is the string which - controls formatting and consists of a mix of literal content and - conversion specifiers. - - - - - - Wrapper class used to map converter names to converter types - - - - Wrapper class used to map converter names to converter types - - - - - - default constructor - - - - - Gets or sets the name of the conversion pattern - - - The name of the conversion pattern - - - - Gets or sets the name of the conversion pattern - - - - - - Gets or sets the type of the converter - - - The type of the converter - - - - Gets or sets the type of the converter - - - - - - String keyed object map. - - - - While this collection is serializable only member - objects that are serializable will - be serialized along with this collection. - - - Nicko Cadell - Gert Driesen - - - - String keyed object map that is read only. - - - - This collection is readonly and cannot be modified. - - - While this collection is serializable only member - objects that are serializable will - be serialized along with this collection. - - - Nicko Cadell - Gert Driesen - - - - The Hashtable used to store the properties data - - - - - Constructor - - - - Initializes a new instance of the class. - - - - - - Copy Constructor - - properties to copy - - - Initializes a new instance of the class. - - - - - - Deserialization constructor - - The that holds the serialized object data. - The that contains contextual information about the source or destination. - - - Initializes a new instance of the class - with serialized data. - - - - - - Gets the key names. - - An array of all the keys. - - - Gets the key names. - - - - - - Test if the dictionary contains a specified key - - the key to look for - true if the dictionary contains the specified key - - - Test if the dictionary contains a specified key - - - - - - Serializes this object into the provided. - - The to populate with data. - The destination for this serialization. - - - Serializes this object into the provided. - - - - - - See - - - - - See - - - - - - See - - - - - - - Remove all properties from the properties collection - - - - - See - - - - - - - See - - - - - - - See - - - - - Gets or sets the value of the property with the specified key. - - - The value of the property with the specified key. - - The key of the property to get or set. - - - The property value will only be serialized if it is serializable. - If it cannot be serialized it will be silently ignored if - a serialization operation is performed. - - - - - - The hashtable used to store the properties - - - The internal collection used to store the properties - - - - The hashtable used to store the properties - - - - - - See - - - - - See - - - - - See - - - - - See - - - - - See - - - - - See - - - - - The number of properties in this collection - - - - - See - - - - - Constructor - - - - Initializes a new instance of the class. - - - - - - Constructor - - properties to copy - - - Initializes a new instance of the class. - - - - - - Initializes a new instance of the class - with serialized data. - - The that holds the serialized object data. - The that contains contextual information about the source or destination. - - - Because this class is sealed the serialization constructor is private. - - - - - - Remove the entry with the specified key from this dictionary - - the key for the entry to remove - - - Remove the entry with the specified key from this dictionary - - - - - - See - - an enumerator - - - Returns a over the contest of this collection. - - - - - - See - - the key to remove - - - Remove the entry with the specified key from this dictionary - - - - - - See - - the key to lookup in the collection - true if the collection contains the specified key - - - Test if this collection contains a specified key. - - - - - - Remove all properties from the properties collection - - - - Remove all properties from the properties collection - - - - - - See - - the key - the value to store for the key - - - Store a value for the specified . - - - Thrown if the is not a string - - - - See - - - - - - - See - - - - - Gets or sets the value of the property with the specified key. - - - The value of the property with the specified key. - - The key of the property to get or set. - - - The property value will only be serialized if it is serializable. - If it cannot be serialized it will be silently ignored if - a serialization operation is performed. - - - - - - See - - - false - - - - This collection is modifiable. This property always - returns false. - - - - - - See - - - The value for the key specified. - - - - Get or set a value for the specified . - - - Thrown if the is not a string - - - - See - - - - - See - - - - - See - - - - - See - - - - - See - - - - - A that ignores the message - - - - This writer is used in special cases where it is necessary - to protect a writer from being closed by a client. - - - Nicko Cadell - - - - Constructor - - the writer to actually write to - - - Create a new ProtectCloseTextWriter using a writer - - - - - - Attach this instance to a different underlying - - the writer to attach to - - - Attach this instance to a different underlying - - - - - - Does not close the underlying output writer. - - - - Does not close the underlying output writer. - This method does nothing. - - - - - - Defines a lock that supports single writers and multiple readers - - - - ReaderWriterLock is used to synchronize access to a resource. - At any given time, it allows either concurrent read access for - multiple threads, or write access for a single thread. In a - situation where a resource is changed infrequently, a - ReaderWriterLock provides better throughput than a simple - one-at-a-time lock, such as . - - - If a platform does not support a System.Threading.ReaderWriterLock - implementation then all readers and writers are serialized. Therefore - the caller must not rely on multiple simultaneous readers. - - - Nicko Cadell - - - - Constructor - - - - Initializes a new instance of the class. - - - - - - Acquires a reader lock - - - - blocks if a different thread has the writer - lock, or if at least one thread is waiting for the writer lock. - - - - - - Decrements the lock count - - - - decrements the lock count. When the count - reaches zero, the lock is released. - - - - - - Acquires the writer lock - - - - This method blocks if another thread has a reader lock or writer lock. - - - - - - Decrements the lock count on the writer lock - - - - ReleaseWriterLock decrements the writer lock count. - When the count reaches zero, the writer lock is released. - - - - - - A that can be and reused - - - - A that can be and reused. - This uses a single buffer for string operations. - - - Nicko Cadell - - - - Create an instance of - - the format provider to use - - - Create an instance of - - - - - - Override Dispose to prevent closing of writer - - flag - - - Override Dispose to prevent closing of writer - - - - - - Reset this string writer so that it can be reused. - - the maximum buffer capacity before it is trimmed - the default size to make the buffer - - - Reset this string writer so that it can be reused. - The internal buffers are cleared and reset. - - - - - - Utility class for system specific information. - - - - Utility class of static methods for system specific information. - - - Nicko Cadell - Gert Driesen - Alexey Solofnenko - - - - Private constructor to prevent instances. - - - - Only static methods are exposed from this type. - - - - - - Initialize default values for private static fields. - - - - Only static methods are exposed from this type. - - - - - - Gets the assembly location path for the specified assembly. - - The assembly to get the location for. - The location of the assembly. - - - This method does not guarantee to return the correct path - to the assembly. If only tries to give an indication as to - where the assembly was loaded from. - - - - - - Gets the fully qualified name of the , including - the name of the assembly from which the was - loaded. - - The to get the fully qualified name for. - The fully qualified name for the . - - - This is equivalent to the Type.AssemblyQualifiedName property, - but this method works on the .NET Compact Framework 1.0 as well as - the full .NET runtime. - - - - - - Gets the short name of the . - - The to get the name for. - The short name of the . - - - The short name of the assembly is the - without the version, culture, or public key. i.e. it is just the - assembly's file name without the extension. - - - Use this rather than Assembly.GetName().Name because that - is not available on the Compact Framework. - - - Because of a FileIOPermission security demand we cannot do - the obvious Assembly.GetName().Name. We are allowed to get - the of the assembly so we - start from there and strip out just the assembly name. - - - - - - Gets the file name portion of the , including the extension. - - The to get the file name for. - The file name of the assembly. - - - Gets the file name portion of the , including the extension. - - - - - - Loads the type specified in the type string. - - A sibling type to use to load the type. - The name of the type to load. - Flag set to true to throw an exception if the type cannot be loaded. - true to ignore the case of the type name; otherwise, false - The type loaded or null if it could not be loaded. - - - If the type name is fully qualified, i.e. if contains an assembly name in - the type name, the type will be loaded from the system using - . - - - If the type name is not fully qualified, it will be loaded from the assembly - containing the specified relative type. If the type is not found in the assembly - then all the loaded assemblies will be searched for the type. - - - - - - Loads the type specified in the type string. - - The name of the type to load. - Flag set to true to throw an exception if the type cannot be loaded. - true to ignore the case of the type name; otherwise, false - The type loaded or null if it could not be loaded. - - - If the type name is fully qualified, i.e. if contains an assembly name in - the type name, the type will be loaded from the system using - . - - - If the type name is not fully qualified it will be loaded from the - assembly that is directly calling this method. If the type is not found - in the assembly then all the loaded assemblies will be searched for the type. - - - - - - Loads the type specified in the type string. - - An assembly to load the type from. - The name of the type to load. - Flag set to true to throw an exception if the type cannot be loaded. - true to ignore the case of the type name; otherwise, false - The type loaded or null if it could not be loaded. - - - If the type name is fully qualified, i.e. if contains an assembly name in - the type name, the type will be loaded from the system using - . - - - If the type name is not fully qualified it will be loaded from the specified - assembly. If the type is not found in the assembly then all the loaded assemblies - will be searched for the type. - - - - - - Generate a new guid - - A new Guid - - - Generate a new guid - - - - - - Create an - - The name of the parameter that caused the exception - The value of the argument that causes this exception - The message that describes the error - the ArgumentOutOfRangeException object - - - Create a new instance of the class - with a specified error message, the parameter name, and the value - of the argument. - - - The Compact Framework does not support the 3 parameter constructor for the - type. This method provides an - implementation that works for all platforms. - - - - - - Parse a string into an value - - the string to parse - out param where the parsed value is placed - true if the string was able to be parsed into an integer - - - Attempts to parse the string into an integer. If the string cannot - be parsed then this method returns false. The method does not throw an exception. - - - - - - Parse a string into an value - - the string to parse - out param where the parsed value is placed - true if the string was able to be parsed into an integer - - - Attempts to parse the string into an integer. If the string cannot - be parsed then this method returns false. The method does not throw an exception. - - - - - - Lookup an application setting - - the application settings key to lookup - the value for the key, or null - - - Configuration APIs are not supported under the Compact Framework - - - - - - Convert a path into a fully qualified local file path. - - The path to convert. - The fully qualified path. - - - Converts the path specified to a fully - qualified path. If the path is relative it is - taken as relative from the application base - directory. - - - The path specified must be a local file path, a URI is not supported. - - - - - - Creates a new case-insensitive instance of the class with the default initial capacity. - - A new case-insensitive instance of the class with the default initial capacity - - - The new Hashtable instance uses the default load factor, the CaseInsensitiveHashCodeProvider, and the CaseInsensitiveComparer. - - - - - - Gets an empty array of types. - - - - The Type.EmptyTypes field is not available on - the .NET Compact Framework 1.0. - - - - - - Cache the host name for the current machine - - - - - Cache the application friendly name - - - - - Text to output when a null is encountered. - - - - - Text to output when an unsupported feature is requested. - - - - - Start time for the current process. - - - - - Gets the system dependent line terminator. - - - The system dependent line terminator. - - - - Gets the system dependent line terminator. - - - - - - Gets the base directory for this . - - The base directory path for the current . - - - Gets the base directory for this . - - - The value returned may be either a local file path or a URI. - - - - - - Gets the path to the configuration file for the current . - - The path to the configuration file for the current . - - - The .NET Compact Framework 1.0 does not have a concept of a configuration - file. For this runtime, we use the entry assembly location as the root for - the configuration file name. - - - The value returned may be either a local file path or a URI. - - - - - - Gets the path to the file that first executed in the current . - - The path to the entry assembly. - - - Gets the path to the file that first executed in the current . - - - - - - Gets the ID of the current thread. - - The ID of the current thread. - - - On the .NET framework, the AppDomain.GetCurrentThreadId method - is used to obtain the thread ID for the current thread. This is the - operating system ID for the thread. - - - On the .NET Compact Framework 1.0 it is not possible to get the - operating system thread ID for the current thread. The native method - GetCurrentThreadId is implemented inline in a header file - and cannot be called. - - - On the .NET Framework 2.0 the Thread.ManagedThreadId is used as this - gives a stable id unrelated to the operating system thread ID which may - change if the runtime is using fibers. - - - - - - Get the host name or machine name for the current machine - - - The hostname or machine name - - - - Get the host name or machine name for the current machine - - - The host name () or - the machine name (Environment.MachineName) for - the current machine, or if neither of these are available - then NOT AVAILABLE is returned. - - - - - - Get this application's friendly name - - - The friendly name of this application as a string - - - - If available the name of the application is retrieved from - the AppDomain using AppDomain.CurrentDomain.FriendlyName. - - - Otherwise the file name of the entry assembly is used. - - - - - - Get the start time for the current process. - - - - This is the time at which the log4net library was loaded into the - AppDomain. Due to reports of a hang in the call to System.Diagnostics.Process.StartTime - this is not the start time for the current process. - - - The log4net library should be loaded by an application early during its - startup, therefore this start time should be a good approximation for - the actual start time. - - - Note that AppDomains may be loaded and unloaded within the - same process without the process terminating, however this start time - will be set per AppDomain. - - - - - - Text to output when a null is encountered. - - - - Use this value to indicate a null has been encountered while - outputting a string representation of an item. - - - The default value is (null). This value can be overridden by specifying - a value for the log4net.NullText appSetting in the application's - .config file. - - - - - - Text to output when an unsupported feature is requested. - - - - Use this value when an unsupported feature is requested. - - - The default value is NOT AVAILABLE. This value can be overridden by specifying - a value for the log4net.NotAvailableText appSetting in the application's - .config file. - - - - - - Utility class that represents a format string. - - - - Utility class that represents a format string. - - - Nicko Cadell - - - - Initialise the - - An that supplies culture-specific formatting information. - A containing zero or more format items. - An array containing zero or more objects to format. - - - - Format the string and arguments - - the formatted string - - - - Replaces the format item in a specified with the text equivalent - of the value of a corresponding instance in a specified array. - A specified parameter supplies culture-specific formatting information. - - An that supplies culture-specific formatting information. - A containing zero or more format items. - An array containing zero or more objects to format. - - A copy of format in which the format items have been replaced by the - equivalent of the corresponding instances of in args. - - - - This method does not throw exceptions. If an exception thrown while formatting the result the - exception and arguments are returned in the result string. - - - - - - Process an error during StringFormat - - - - - Dump the contents of an array into a string builder - - - - - Dump an object to a string - - - - - Implementation of Properties collection for the - - - - Class implements a collection of properties that is specific to each thread. - The class is not synchronized as each thread has its own . - - - Nicko Cadell - - - - The thread local data slot to use to store a PropertiesDictionary. - - - - - Internal constructor - - - - Initializes a new instance of the class. - - - - - - Remove a property - - the key for the entry to remove - - - Remove a property - - - - - - Clear all properties - - - - Clear all properties - - - - - - Get the PropertiesDictionary for this thread. - - create the dictionary if it does not exist, otherwise return null if is does not exist - the properties for this thread - - - The collection returned is only to be used on the calling thread. If the - caller needs to share the collection between different threads then the - caller must clone the collection before doing so. - - - - - - Gets or sets the value of a property - - - The value for the property with the specified key - - - - Gets or sets the value of a property - - - - - - Implementation of Stack for the - - - - Implementation of Stack for the - - - Nicko Cadell - - - - The stack store. - - - - - Internal constructor - - - - Initializes a new instance of the class. - - - - - - Clears all the contextual information held in this stack. - - - - Clears all the contextual information held in this stack. - Only call this if you think that this tread is being reused after - a previous call execution which may not have completed correctly. - You do not need to use this method if you always guarantee to call - the method of the - returned from even in exceptional circumstances, - for example by using the using(log4net.ThreadContext.Stacks["NDC"].Push("Stack_Message")) - syntax. - - - - - - Removes the top context from this stack. - - The message in the context that was removed from the top of this stack. - - - Remove the top context from this stack, and return - it to the caller. If this stack is empty then an - empty string (not ) is returned. - - - - - - Pushes a new context message into this stack. - - The new context message. - - An that can be used to clean up the context stack. - - - - Pushes a new context onto this stack. An - is returned that can be used to clean up this stack. This - can be easily combined with the using keyword to scope the - context. - - - Simple example of using the Push method with the using keyword. - - using(log4net.ThreadContext.Stacks["NDC"].Push("Stack_Message")) - { - log.Warn("This should have an ThreadContext Stack message"); - } - - - - - - Gets the current context information for this stack. - - The current context information. - - - - Gets the current context information for this stack. - - Gets the current context information - - - Gets the current context information for this stack. - - - - - - Get a portable version of this object - - the portable instance of this object - - - Get a cross thread portable version of this object - - - - - - The number of messages in the stack - - - The current number of messages in the stack - - - - The current number of messages in the stack. That is - the number of times has been called - minus the number of times has been called. - - - - - - Gets and sets the internal stack used by this - - The internal storage stack - - - This property is provided only to support backward compatability - of the . Tytpically the internal stack should not - be modified. - - - - - - Inner class used to represent a single context frame in the stack. - - - - Inner class used to represent a single context frame in the stack. - - - - - - Constructor - - The message for this context. - The parent context in the chain. - - - Initializes a new instance of the class - with the specified message and parent context. - - - - - - Get the message. - - The message. - - - Get the message. - - - - - - Gets the full text of the context down to the root level. - - - The full text of the context down to the root level. - - - - Gets the full text of the context down to the root level. - - - - - - Struct returned from the method. - - - - This struct implements the and is designed to be used - with the pattern to remove the stack frame at the end of the scope. - - - - - - The ThreadContextStack internal stack - - - - - The depth to trim the stack to when this instance is disposed - - - - - Constructor - - The internal stack used by the ThreadContextStack. - The depth to return the stack to when this object is disposed. - - - Initializes a new instance of the class with - the specified stack and return depth. - - - - - - Returns the stack to the correct depth. - - - - Returns the stack to the correct depth. - - - - - - Implementation of Stacks collection for the - - - - Implementation of Stacks collection for the - - - Nicko Cadell - - - - Internal constructor - - - - Initializes a new instance of the class. - - - - - - Gets the named thread context stack - - - The named stack - - - - Gets the named thread context stack - - - - - - Utility class for transforming strings. - - - - Utility class for transforming strings. - - - Nicko Cadell - Gert Driesen - - - - Initializes a new instance of the class. - - - - Uses a private access modifier to prevent instantiation of this class. - - - - - - Write a string to an - - the writer to write to - the string to write - The string to replace non XML compliant chars with - - - The test is escaped either using XML escape entities - or using CDATA sections. - - - - - - Replace invalid XML characters in text string - - the XML text input string - the string to use in place of invalid characters - A string that does not contain invalid XML characters. - - - Certain Unicode code points are not allowed in the XML InfoSet, for - details see: http://www.w3.org/TR/REC-xml/#charsets. - - - This method replaces any illegal characters in the input string - with the mask string specified. - - - - - - Count the number of times that the substring occurs in the text - - the text to search - the substring to find - the number of times the substring occurs in the text - - - The substring is assumed to be non repeating within itself. - - - - - - Impersonate a Windows Account - - - - This impersonates a Windows account. - - - How the impersonation is done depends on the value of . - This allows the context to either impersonate a set of user credentials specified - using username, domain name and password or to revert to the process credentials. - - - - - - Default constructor - - - - Default constructor - - - - - - Initialize the SecurityContext based on the options set. - - - - This is part of the delayed object - activation scheme. The method must - be called on this object after the configuration properties have - been set. Until is called this - object is in an undefined state and must not be used. - - - If any of the configuration properties are modified then - must be called again. - - - The security context will try to Logon the specified user account and - capture a primary token for impersonation. - - - The required , - or properties were not specified. - - - - Impersonate the Windows account specified by the and properties. - - caller provided state - - An instance that will revoke the impersonation of this SecurityContext - - - - Depending on the property either - impersonate a user using credentials supplied or revert - to the process credentials. - - - - - - Create a given the userName, domainName and password. - - the user name - the domain name - the password - the for the account specified - - - Uses the Windows API call LogonUser to get a principal token for the account. This - token is used to initialize the WindowsIdentity. - - - - - - Gets or sets the impersonation mode for this security context - - - The impersonation mode for this security context - - - - Impersonate either a user with user credentials or - revert this thread to the credentials of the process. - The value is one of the - enum. - - - The default value is - - - When the mode is set to - the user's credentials are established using the - , and - values. - - - When the mode is set to - no other properties need to be set. If the calling thread is - impersonating then it will be reverted back to the process credentials. - - - - - - Gets or sets the Windows username for this security context - - - The Windows username for this security context - - - - This property must be set if - is set to (the default setting). - - - - - - Gets or sets the Windows domain name for this security context - - - The Windows domain name for this security context - - - - The default value for is the local machine name - taken from the property. - - - This property must be set if - is set to (the default setting). - - - - - - Sets the password for the Windows account specified by the and properties. - - - The password for the Windows account specified by the and properties. - - - - This property must be set if - is set to (the default setting). - - - - - - The impersonation modes for the - - - - See the property for - details. - - - - - - Impersonate a user using the credentials supplied - - - - - Revert this the thread to the credentials of the process - - - - - Adds to - - - - Helper class to expose the - through the interface. - - - - - - Constructor - - the impersonation context being wrapped - - - Constructor - - - - - - Revert the impersonation - - - - Revert the impersonation - - - - - - The log4net Global Context. - - - - The GlobalContext provides a location for global debugging - information to be stored. - - - The global context has a properties map and these properties can - be included in the output of log messages. The - supports selecting and outputing these properties. - - - By default the log4net:HostName property is set to the name of - the current machine. - - - - - GlobalContext.Properties["hostname"] = Environment.MachineName; - - - - Nicko Cadell - - - - Private Constructor. - - - Uses a private access modifier to prevent instantiation of this class. - - - - - The global context properties instance - - - - - The global properties map. - - - The global properties map. - - - - The global properties map. - - - - - - The log4net Logical Thread Context. - - - - The LogicalThreadContext provides a location for specific debugging - information to be stored. - The LogicalThreadContext properties override any or - properties with the same name. - - - The Logical Thread Context has a properties map and a stack. - The properties and stack can - be included in the output of log messages. The - supports selecting and outputting these properties. - - - The Logical Thread Context provides a diagnostic context for the current call context. - This is an instrument for distinguishing interleaved log - output from different sources. Log output is typically interleaved - when a server handles multiple clients near-simultaneously. - - - The Logical Thread Context is managed on a per basis. - - - Example of using the thread context properties to store a username. - - LogicalThreadContext.Properties["user"] = userName; - log.Info("This log message has a LogicalThreadContext Property called 'user'"); - - - Example of how to push a message into the context stack - - using(LogicalThreadContext.Stacks["LDC"].Push("my context message")) - { - log.Info("This log message has a LogicalThreadContext Stack message that includes 'my context message'"); - - } // at the end of the using block the message is automatically popped - - - - Nicko Cadell - - - - Private Constructor. - - - - Uses a private access modifier to prevent instantiation of this class. - - - - - - The thread context properties instance - - - - - The thread context stacks instance - - - - - The thread properties map - - - The thread properties map - - - - The LogicalThreadContext properties override any - or properties with the same name. - - - - - - The thread stacks - - - stack map - - - - The logical thread stacks. - - - - - - This class is used by client applications to request logger instances. - - - - This class has static methods that are used by a client to request - a logger instance. The method is - used to retrieve a logger. - - - See the interface for more details. - - - Simple example of logging messages - - ILog log = LogManager.GetLogger("application-log"); - - log.Info("Application Start"); - log.Debug("This is a debug message"); - - if (log.IsDebugEnabled) - { - log.Debug("This is another debug message"); - } - - - - - Nicko Cadell - Gert Driesen - - - - Initializes a new instance of the class. - - - Uses a private access modifier to prevent instantiation of this class. - - - - Returns the named logger if it exists. - - Returns the named logger if it exists. - - - - If the named logger exists (in the default repository) then it - returns a reference to the logger, otherwise it returns null. - - - The fully qualified logger name to look for. - The logger found, or null if no logger could be found. - - - - Returns the named logger if it exists. - - - - If the named logger exists (in the specified repository) then it - returns a reference to the logger, otherwise it returns - null. - - - The repository to lookup in. - The fully qualified logger name to look for. - - The logger found, or null if the logger doesn't exist in the specified - repository. - - - - - Returns the named logger if it exists. - - - - If the named logger exists (in the repository for the specified assembly) then it - returns a reference to the logger, otherwise it returns - null. - - - The assembly to use to lookup the repository. - The fully qualified logger name to look for. - - The logger, or null if the logger doesn't exist in the specified - assembly's repository. - - - - Get the currently defined loggers. - - Returns all the currently defined loggers in the default repository. - - - The root logger is not included in the returned array. - - All the defined loggers. - - - - Returns all the currently defined loggers in the specified repository. - - The repository to lookup in. - - The root logger is not included in the returned array. - - All the defined loggers. - - - - Returns all the currently defined loggers in the specified assembly's repository. - - The assembly to use to lookup the repository. - - The root logger is not included in the returned array. - - All the defined loggers. - - - Get or create a logger. - - Retrieves or creates a named logger. - - - - Retrieves a logger named as the - parameter. If the named logger already exists, then the - existing instance will be returned. Otherwise, a new instance is - created. - - By default, loggers do not have a set level but inherit - it from the hierarchy. This is one of the central features of - log4net. - - - The name of the logger to retrieve. - The logger with the name specified. - - - - Retrieves or creates a named logger. - - - - Retrieve a logger named as the - parameter. If the named logger already exists, then the - existing instance will be returned. Otherwise, a new instance is - created. - - - By default, loggers do not have a set level but inherit - it from the hierarchy. This is one of the central features of - log4net. - - - The repository to lookup in. - The name of the logger to retrieve. - The logger with the name specified. - - - - Retrieves or creates a named logger. - - - - Retrieve a logger named as the - parameter. If the named logger already exists, then the - existing instance will be returned. Otherwise, a new instance is - created. - - - By default, loggers do not have a set level but inherit - it from the hierarchy. This is one of the central features of - log4net. - - - The assembly to use to lookup the repository. - The name of the logger to retrieve. - The logger with the name specified. - - - - Shorthand for . - - - Get the logger for the fully qualified name of the type specified. - - The full name of will be used as the name of the logger to retrieve. - The logger with the name specified. - - - - Shorthand for . - - - Gets the logger for the fully qualified name of the type specified. - - The repository to lookup in. - The full name of will be used as the name of the logger to retrieve. - The logger with the name specified. - - - - Shorthand for . - - - Gets the logger for the fully qualified name of the type specified. - - The assembly to use to lookup the repository. - The full name of will be used as the name of the logger to retrieve. - The logger with the name specified. - - - - Shuts down the log4net system. - - - - Calling this method will safely close and remove all - appenders in all the loggers including root contained in all the - default repositories. - - - Some appenders need to be closed before the application exists. - Otherwise, pending logging events might be lost. - - The shutdown method is careful to close nested - appenders before closing regular appenders. This is allows - configurations where a regular appender is attached to a logger - and again to a nested appender. - - - - - Shutdown a logger repository. - - Shuts down the default repository. - - - - Calling this method will safely close and remove all - appenders in all the loggers including root contained in the - default repository. - - Some appenders need to be closed before the application exists. - Otherwise, pending logging events might be lost. - - The shutdown method is careful to close nested - appenders before closing regular appenders. This is allows - configurations where a regular appender is attached to a logger - and again to a nested appender. - - - - - - Shuts down the repository for the repository specified. - - - - Calling this method will safely close and remove all - appenders in all the loggers including root contained in the - specified. - - - Some appenders need to be closed before the application exists. - Otherwise, pending logging events might be lost. - - The shutdown method is careful to close nested - appenders before closing regular appenders. This is allows - configurations where a regular appender is attached to a logger - and again to a nested appender. - - - The repository to shutdown. - - - - Shuts down the repository specified. - - - - Calling this method will safely close and remove all - appenders in all the loggers including root contained in the - repository. The repository is looked up using - the specified. - - - Some appenders need to be closed before the application exists. - Otherwise, pending logging events might be lost. - - - The shutdown method is careful to close nested - appenders before closing regular appenders. This is allows - configurations where a regular appender is attached to a logger - and again to a nested appender. - - - The assembly to use to lookup the repository. - - - Reset the configuration of a repository - - Resets all values contained in this repository instance to their defaults. - - - - Resets all values contained in the repository instance to their - defaults. This removes all appenders from all loggers, sets - the level of all non-root loggers to null, - sets their additivity flag to true and sets the level - of the root logger to . Moreover, - message disabling is set to its default "off" value. - - - - - - Resets all values contained in this repository instance to their defaults. - - - - Reset all values contained in the repository instance to their - defaults. This removes all appenders from all loggers, sets - the level of all non-root loggers to null, - sets their additivity flag to true and sets the level - of the root logger to . Moreover, - message disabling is set to its default "off" value. - - - The repository to reset. - - - - Resets all values contained in this repository instance to their defaults. - - - - Reset all values contained in the repository instance to their - defaults. This removes all appenders from all loggers, sets - the level of all non-root loggers to null, - sets their additivity flag to true and sets the level - of the root logger to . Moreover, - message disabling is set to its default "off" value. - - - The assembly to use to lookup the repository to reset. - - - Get the logger repository. - - Returns the default instance. - - - - Gets the for the repository specified - by the callers assembly (). - - - The instance for the default repository. - - - - Returns the default instance. - - The default instance. - - - Gets the for the repository specified - by the argument. - - - The repository to lookup in. - - - - Returns the default instance. - - The default instance. - - - Gets the for the repository specified - by the argument. - - - The assembly to use to lookup the repository. - - - Get a logger repository. - - Returns the default instance. - - - - Gets the for the repository specified - by the callers assembly (). - - - The instance for the default repository. - - - - Returns the default instance. - - The default instance. - - - Gets the for the repository specified - by the argument. - - - The repository to lookup in. - - - - Returns the default instance. - - The default instance. - - - Gets the for the repository specified - by the argument. - - - The assembly to use to lookup the repository. - - - Create a domain - - Creates a repository with the specified repository type. - - - - CreateDomain is obsolete. Use CreateRepository instead of CreateDomain. - - - The created will be associated with the repository - specified such that a call to will return - the same repository instance. - - - A that implements - and has a no arg constructor. An instance of this type will be created to act - as the for the repository specified. - The created for the repository. - - - Create a logger repository. - - Creates a repository with the specified repository type. - - A that implements - and has a no arg constructor. An instance of this type will be created to act - as the for the repository specified. - The created for the repository. - - - The created will be associated with the repository - specified such that a call to will return - the same repository instance. - - - - - - Creates a repository with the specified name. - - - - CreateDomain is obsolete. Use CreateRepository instead of CreateDomain. - - - Creates the default type of which is a - object. - - - The name must be unique. Repositories cannot be redefined. - An will be thrown if the repository already exists. - - - The name of the repository, this must be unique amongst repositories. - The created for the repository. - The specified repository already exists. - - - - Creates a repository with the specified name. - - - - Creates the default type of which is a - object. - - - The name must be unique. Repositories cannot be redefined. - An will be thrown if the repository already exists. - - - The name of the repository, this must be unique amongst repositories. - The created for the repository. - The specified repository already exists. - - - - Creates a repository with the specified name and repository type. - - - - CreateDomain is obsolete. Use CreateRepository instead of CreateDomain. - - - The name must be unique. Repositories cannot be redefined. - An will be thrown if the repository already exists. - - - The name of the repository, this must be unique to the repository. - A that implements - and has a no arg constructor. An instance of this type will be created to act - as the for the repository specified. - The created for the repository. - The specified repository already exists. - - - - Creates a repository with the specified name and repository type. - - - - The name must be unique. Repositories cannot be redefined. - An will be thrown if the repository already exists. - - - The name of the repository, this must be unique to the repository. - A that implements - and has a no arg constructor. An instance of this type will be created to act - as the for the repository specified. - The created for the repository. - The specified repository already exists. - - - - Creates a repository for the specified assembly and repository type. - - - - CreateDomain is obsolete. Use CreateRepository instead of CreateDomain. - - - The created will be associated with the repository - specified such that a call to with the - same assembly specified will return the same repository instance. - - - The assembly to use to get the name of the repository. - A that implements - and has a no arg constructor. An instance of this type will be created to act - as the for the repository specified. - The created for the repository. - - - - Creates a repository for the specified assembly and repository type. - - - - The created will be associated with the repository - specified such that a call to with the - same assembly specified will return the same repository instance. - - - The assembly to use to get the name of the repository. - A that implements - and has a no arg constructor. An instance of this type will be created to act - as the for the repository specified. - The created for the repository. - - - - Gets the list of currently defined repositories. - - - - Get an array of all the objects that have been created. - - - An array of all the known objects. - - - - Looks up the wrapper object for the logger specified. - - The logger to get the wrapper for. - The wrapper for the logger specified. - - - - Looks up the wrapper objects for the loggers specified. - - The loggers to get the wrappers for. - The wrapper objects for the loggers specified. - - - - Create the objects used by - this manager. - - The logger to wrap. - The wrapper for the logger specified. - - - - The wrapper map to use to hold the objects. - - - - - Implementation of Mapped Diagnostic Contexts. - - - - - The MDC is deprecated and has been replaced by the . - The current MDC implementation forwards to the ThreadContext.Properties. - - - - The MDC class is similar to the class except that it is - based on a map instead of a stack. It provides mapped - diagnostic contexts. A Mapped Diagnostic Context, or - MDC in short, is an instrument for distinguishing interleaved log - output from different sources. Log output is typically interleaved - when a server handles multiple clients near-simultaneously. - - - The MDC is managed on a per thread basis. - - - - Nicko Cadell - Gert Driesen - - - - Initializes a new instance of the class. - - - Uses a private access modifier to prevent instantiation of this class. - - - - - Gets the context value identified by the parameter. - - The key to lookup in the MDC. - The string value held for the key, or a null reference if no corresponding value is found. - - - - The MDC is deprecated and has been replaced by the . - The current MDC implementation forwards to the ThreadContext.Properties. - - - - If the parameter does not look up to a - previously defined context then null will be returned. - - - - - - Add an entry to the MDC - - The key to store the value under. - The value to store. - - - - The MDC is deprecated and has been replaced by the . - The current MDC implementation forwards to the ThreadContext.Properties. - - - - Puts a context value (the parameter) as identified - with the parameter into the current thread's - context map. - - - If a value is already defined for the - specified then the value will be replaced. If the - is specified as null then the key value mapping will be removed. - - - - - - Removes the key value mapping for the key specified. - - The key to remove. - - - - The MDC is deprecated and has been replaced by the . - The current MDC implementation forwards to the ThreadContext.Properties. - - - - Remove the specified entry from this thread's MDC - - - - - - Clear all entries in the MDC - - - - - The MDC is deprecated and has been replaced by the . - The current MDC implementation forwards to the ThreadContext.Properties. - - - - Remove all the entries from this thread's MDC - - - - - - Implementation of Nested Diagnostic Contexts. - - - - - The NDC is deprecated and has been replaced by the . - The current NDC implementation forwards to the ThreadContext.Stacks["NDC"]. - - - - A Nested Diagnostic Context, or NDC in short, is an instrument - to distinguish interleaved log output from different sources. Log - output is typically interleaved when a server handles multiple - clients near-simultaneously. - - - Interleaved log output can still be meaningful if each log entry - from different contexts had a distinctive stamp. This is where NDCs - come into play. - - - Note that NDCs are managed on a per thread basis. The NDC class - is made up of static methods that operate on the context of the - calling thread. - - - How to push a message into the context - - using(NDC.Push("my context message")) - { - ... all log calls will have 'my context message' included ... - - } // at the end of the using block the message is automatically removed - - - - Nicko Cadell - Gert Driesen - - - - Initializes a new instance of the class. - - - Uses a private access modifier to prevent instantiation of this class. - - - - - Clears all the contextual information held on the current thread. - - - - - The NDC is deprecated and has been replaced by the . - The current NDC implementation forwards to the ThreadContext.Stacks["NDC"]. - - - - Clears the stack of NDC data held on the current thread. - - - - - - Creates a clone of the stack of context information. - - A clone of the context info for this thread. - - - - The NDC is deprecated and has been replaced by the . - The current NDC implementation forwards to the ThreadContext.Stacks["NDC"]. - - - - The results of this method can be passed to the - method to allow child threads to inherit the context of their - parent thread. - - - - - - Inherits the contextual information from another thread. - - The context stack to inherit. - - - - The NDC is deprecated and has been replaced by the . - The current NDC implementation forwards to the ThreadContext.Stacks["NDC"]. - - - - This thread will use the context information from the stack - supplied. This can be used to initialize child threads with - the same contextual information as their parent threads. These - contexts will NOT be shared. Any further contexts that - are pushed onto the stack will not be visible to the other. - Call to obtain a stack to pass to - this method. - - - - - - Removes the top context from the stack. - - - The message in the context that was removed from the top - of the stack. - - - - - The NDC is deprecated and has been replaced by the . - The current NDC implementation forwards to the ThreadContext.Stacks["NDC"]. - - - - Remove the top context from the stack, and return - it to the caller. If the stack is empty then an - empty string (not null) is returned. - - - - - - Pushes a new context message. - - The new context message. - - An that can be used to clean up - the context stack. - - - - - The NDC is deprecated and has been replaced by the . - The current NDC implementation forwards to the ThreadContext.Stacks["NDC"]. - - - - Pushes a new context onto the context stack. An - is returned that can be used to clean up the context stack. This - can be easily combined with the using keyword to scope the - context. - - - Simple example of using the Push method with the using keyword. - - using(log4net.NDC.Push("NDC_Message")) - { - log.Warn("This should have an NDC message"); - } - - - - - - Removes the context information for this thread. It is - not required to call this method. - - - - - The NDC is deprecated and has been replaced by the . - The current NDC implementation forwards to the ThreadContext.Stacks["NDC"]. - - - - This method is not implemented. - - - - - - Forces the stack depth to be at most . - - The maximum depth of the stack - - - - The NDC is deprecated and has been replaced by the . - The current NDC implementation forwards to the ThreadContext.Stacks["NDC"]. - - - - Forces the stack depth to be at most . - This may truncate the head of the stack. This only affects the - stack in the current thread. Also it does not prevent it from - growing, it only sets the maximum depth at the time of the - call. This can be used to return to a known context depth. - - - - - - Gets the current context depth. - - The current context depth. - - - - The NDC is deprecated and has been replaced by the . - The current NDC implementation forwards to the ThreadContext.Stacks["NDC"]. - - - - The number of context values pushed onto the context stack. - - - Used to record the current depth of the context. This can then - be restored using the method. - - - - - - - The log4net Thread Context. - - - - The ThreadContext provides a location for thread specific debugging - information to be stored. - The ThreadContext properties override any - properties with the same name. - - - The thread context has a properties map and a stack. - The properties and stack can - be included in the output of log messages. The - supports selecting and outputting these properties. - - - The Thread Context provides a diagnostic context for the current thread. - This is an instrument for distinguishing interleaved log - output from different sources. Log output is typically interleaved - when a server handles multiple clients near-simultaneously. - - - The Thread Context is managed on a per thread basis. - - - Example of using the thread context properties to store a username. - - ThreadContext.Properties["user"] = userName; - log.Info("This log message has a ThreadContext Property called 'user'"); - - - Example of how to push a message into the context stack - - using(ThreadContext.Stacks["NDC"].Push("my context message")) - { - log.Info("This log message has a ThreadContext Stack message that includes 'my context message'"); - - } // at the end of the using block the message is automatically popped - - - - Nicko Cadell - - - - Private Constructor. - - - - Uses a private access modifier to prevent instantiation of this class. - - - - - - The thread context properties instance - - - - - The thread context stacks instance - - - - - The thread properties map - - - The thread properties map - - - - The ThreadContext properties override any - properties with the same name. - - - - - - The thread stacks - - - stack map - - - - The thread local stacks. - - - - - diff --git a/packages/log4net.1.2.10/lib/1.1/log4net.dll b/packages/log4net.1.2.10/lib/1.1/log4net.dll deleted file mode 100644 index 995816f27bd1f38f4d6505fd42314e5b3872b3b3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 266240 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 Ni-B1T{J)8T{|UPv&?o=^ diff --git a/packages/log4net.1.2.10/lib/1.1/log4net.xml b/packages/log4net.1.2.10/lib/1.1/log4net.xml deleted file mode 100644 index b8fd000..0000000 --- a/packages/log4net.1.2.10/lib/1.1/log4net.xml +++ /dev/null @@ -1,28655 +0,0 @@ - - - - log4net - - - - - Appender that logs to a database. - - - - appends logging events to a table within a - database. The appender can be configured to specify the connection - string by setting the property. - The connection type (provider) can be specified by setting the - property. For more information on database connection strings for - your specific database see http://www.connectionstrings.com/. - - - Records are written into the database either using a prepared - statement or a stored procedure. The property - is set to (System.Data.CommandType.Text) to specify a prepared statement - or to (System.Data.CommandType.StoredProcedure) to specify a stored - procedure. - - - The prepared statement text or the name of the stored procedure - must be set in the property. - - - The prepared statement or stored procedure can take a number - of parameters. Parameters are added using the - method. This adds a single to the - ordered list of parameters. The - type may be subclassed if required to provide database specific - functionality. The specifies - the parameter name, database type, size, and how the value should - be generated using a . - - - - An example of a SQL Server table that could be logged to: - - CREATE TABLE [dbo].[Log] ( - [ID] [int] IDENTITY (1, 1) NOT NULL , - [Date] [datetime] NOT NULL , - [Thread] [varchar] (255) NOT NULL , - [Level] [varchar] (20) NOT NULL , - [Logger] [varchar] (255) NOT NULL , - [Message] [varchar] (4000) NOT NULL - ) ON [PRIMARY] - - - - An example configuration to log to the above table: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Julian Biddle - Nicko Cadell - Gert Driesen - Lance Nehring - - - - Abstract base class implementation of that - buffers events in a fixed size buffer. - - - - This base class should be used by appenders that need to buffer a - number of events before logging them. For example the - buffers events and then submits the entire contents of the buffer to - the underlying database in one go. - - - Subclasses should override the - method to deliver the buffered events. - - The BufferingAppenderSkeleton maintains a fixed size cyclic - buffer of events. The size of the buffer is set using - the property. - - A is used to inspect - each event as it arrives in the appender. If the - triggers, then the current buffer is sent immediately - (see ). Otherwise the event - is stored in the buffer. For example, an evaluator can be used to - deliver the events immediately when an ERROR event arrives. - - - The buffering appender can be configured in a mode. - By default the appender is NOT lossy. When the buffer is full all - the buffered events are sent with . - If the property is set to true then the - buffer will not be sent when it is full, and new events arriving - in the appender will overwrite the oldest event in the buffer. - In lossy mode the buffer will only be sent when the - triggers. This can be useful behavior when you need to know about - ERROR events but not about events with a lower level, configure an - evaluator that will trigger when an ERROR event arrives, the whole - buffer will be sent which gives a history of events leading up to - the ERROR event. - - - Nicko Cadell - Gert Driesen - - - - Abstract base class implementation of . - - - - This class provides the code for common functionality, such - as support for threshold filtering and support for general filters. - - - Appenders can also implement the interface. Therefore - they would require that the method - be called after the appenders properties have been configured. - - - Nicko Cadell - Gert Driesen - - - - Implement this interface for your own strategies for printing log statements. - - - - Implementors should consider extending the - class which provides a default implementation of this interface. - - - Appenders can also implement the interface. Therefore - they would require that the method - be called after the appenders properties have been configured. - - - Nicko Cadell - Gert Driesen - - - - Closes the appender and releases resources. - - - - Releases any resources allocated within the appender such as file handles, - network connections, etc. - - - It is a programming error to append to a closed appender. - - - - - - Log the logging event in Appender specific way. - - The event to log - - - This method is called to log a message into this appender. - - - - - - Gets or sets the name of this appender. - - The name of the appender. - - The name uniquely identifies the appender. - - - - - Interface for appenders that support bulk logging. - - - - This interface extends the interface to - support bulk logging of objects. Appenders - should only implement this interface if they can bulk log efficiently. - - - Nicko Cadell - - - - Log the array of logging events in Appender specific way. - - The events to log - - - This method is called to log an array of events into this appender. - - - - - - Interface used to delay activate a configured object. - - - - This allows an object to defer activation of its options until all - options have been set. This is required for components which have - related options that remain ambiguous until all are set. - - - If a component implements this interface then the method - must be called by the container after its all the configured properties have been set - and before the component can be used. - - - Nicko Cadell - - - - Activate the options that were previously set with calls to properties. - - - - This allows an object to defer activation of its options until all - options have been set. This is required for components which have - related options that remain ambiguous until all are set. - - - If a component implements this interface then this method must be called - after its properties have been set before the component can be used. - - - - - - Initial buffer size - - - - - Maximum buffer size before it is recycled - - - - - Default constructor - - - Empty default constructor - - - - - Finalizes this appender by calling the implementation's - method. - - - - If this appender has not been closed then the Finalize method - will call . - - - - - - Initialize the appender based on the options set - - - - This is part of the delayed object - activation scheme. The method must - be called on this object after the configuration properties have - been set. Until is called this - object is in an undefined state and must not be used. - - - If any of the configuration properties are modified then - must be called again. - - - - - - Closes the appender and release resources. - - - - Release any resources allocated within the appender such as file handles, - network connections, etc. - - - It is a programming error to append to a closed appender. - - - This method cannot be overridden by subclasses. This method - delegates the closing of the appender to the - method which must be overridden in the subclass. - - - - - - Performs threshold checks and invokes filters before - delegating actual logging to the subclasses specific - method. - - The event to log. - - - This method cannot be overridden by derived classes. A - derived class should override the method - which is called by this method. - - - The implementation of this method is as follows: - - - - - - Checks that the severity of the - is greater than or equal to the of this - appender. - - - - Checks that the chain accepts the - . - - - - - Calls and checks that - it returns true. - - - - - If all of the above steps succeed then the - will be passed to the abstract method. - - - - - - Performs threshold checks and invokes filters before - delegating actual logging to the subclasses specific - method. - - The array of events to log. - - - This method cannot be overridden by derived classes. A - derived class should override the method - which is called by this method. - - - The implementation of this method is as follows: - - - - - - Checks that the severity of the - is greater than or equal to the of this - appender. - - - - Checks that the chain accepts the - . - - - - - Calls and checks that - it returns true. - - - - - If all of the above steps succeed then the - will be passed to the method. - - - - - - Test if the logging event should we output by this appender - - the event to test - true if the event should be output, false if the event should be ignored - - - This method checks the logging event against the threshold level set - on this appender and also against the filters specified on this - appender. - - - The implementation of this method is as follows: - - - - - - Checks that the severity of the - is greater than or equal to the of this - appender. - - - - Checks that the chain accepts the - . - - - - - - - - - Adds a filter to the end of the filter chain. - - the filter to add to this appender - - - The Filters are organized in a linked list. - - - Setting this property causes the new filter to be pushed onto the - back of the filter chain. - - - - - - Clears the filter list for this appender. - - - - Clears the filter list for this appender. - - - - - - Checks if the message level is below this appender's threshold. - - to test against. - - - If there is no threshold set, then the return value is always true. - - - - true if the meets the - requirements of this appender. - - - - - Is called when the appender is closed. Derived classes should override - this method if resources need to be released. - - - - Releases any resources allocated within the appender such as file handles, - network connections, etc. - - - It is a programming error to append to a closed appender. - - - - - - Subclasses of should implement this method - to perform actual logging. - - The event to append. - - - A subclass must implement this method to perform - logging of the . - - This method will be called by - if all the conditions listed for that method are met. - - - To restrict the logging of events in the appender - override the method. - - - - - - Append a bulk array of logging events. - - the array of logging events - - - This base class implementation calls the - method for each element in the bulk array. - - - A sub class that can better process a bulk array of events should - override this method in addition to . - - - - - - Called before as a precondition. - - - - This method is called by - before the call to the abstract method. - - - This method can be overridden in a subclass to extend the checks - made before the event is passed to the method. - - - A subclass should ensure that they delegate this call to - this base class if it is overridden. - - - true if the call to should proceed. - - - - Renders the to a string. - - The event to render. - The event rendered as a string. - - - Helper method to render a to - a string. This appender must have a - set to render the to - a string. - - If there is exception data in the logging event and - the layout does not process the exception, this method - will append the exception text to the rendered string. - - - Where possible use the alternative version of this method - . - That method streams the rendering onto an existing Writer - which can give better performance if the caller already has - a open and ready for writing. - - - - - - Renders the to a string. - - The event to render. - The TextWriter to write the formatted event to - - - Helper method to render a to - a string. This appender must have a - set to render the to - a string. - - If there is exception data in the logging event and - the layout does not process the exception, this method - will append the exception text to the rendered string. - - - Use this method in preference to - where possible. If, however, the caller needs to render the event - to a string then does - provide an efficient mechanism for doing so. - - - - - - The layout of this appender. - - - See for more information. - - - - - The name of this appender. - - - See for more information. - - - - - The level threshold of this appender. - - - - There is no level threshold filtering by default. - - - See for more information. - - - - - - It is assumed and enforced that errorHandler is never null. - - - - It is assumed and enforced that errorHandler is never null. - - - See for more information. - - - - - - The first filter in the filter chain. - - - - Set to null initially. - - - See for more information. - - - - - - The last filter in the filter chain. - - - See for more information. - - - - - Flag indicating if this appender is closed. - - - See for more information. - - - - - The guard prevents an appender from repeatedly calling its own DoAppend method - - - - - StringWriter used to render events - - - - - Gets or sets the threshold of this appender. - - - The threshold of the appender. - - - - All log events with lower level than the threshold level are ignored - by the appender. - - - In configuration files this option is specified by setting the - value of the option to a level - string, such as "DEBUG", "INFO" and so on. - - - - - - Gets or sets the for this appender. - - The of the appender - - - The provides a default - implementation for the property. - - - - - - The filter chain. - - The head of the filter chain filter chain. - - - Returns the head Filter. The Filters are organized in a linked list - and so all Filters on this Appender are available through the result. - - - - - - Gets or sets the for this appender. - - The layout of the appender. - - - See for more information. - - - - - - - Gets or sets the name of this appender. - - The name of the appender. - - - The name uniquely identifies the appender. - - - - - - Tests if this appender requires a to be set. - - - - In the rather exceptional case, where the appender - implementation admits a layout but can also work without it, - then the appender should return true. - - - This default implementation always returns true. - - - - true if the appender requires a layout object, otherwise false. - - - - - The default buffer size. - - - The default size of the cyclic buffer used to store events. - This is set to 512 by default. - - - - - Initializes a new instance of the class. - - - - Protected default constructor to allow subclassing. - - - - - - Initializes a new instance of the class. - - the events passed through this appender must be - fixed by the time that they arrive in the derived class' SendBuffer method. - - - Protected constructor to allow subclassing. - - - The should be set if the subclass - expects the events delivered to be fixed even if the - is set to zero, i.e. when no buffering occurs. - - - - - - Flush the currently buffered events - - - - Flushes any events that have been buffered. - - - If the appender is buffering in mode then the contents - of the buffer will NOT be flushed to the appender. - - - - - - Flush the currently buffered events - - set to true to flush the buffer of lossy events - - - Flushes events that have been buffered. If is - false then events will only be flushed if this buffer is non-lossy mode. - - - If the appender is buffering in mode then the contents - of the buffer will only be flushed if is true. - In this case the contents of the buffer will be tested against the - and if triggering will be output. All other buffered - events will be discarded. - - - If is true then the buffer will always - be emptied by calling this method. - - - - - - Initialize the appender based on the options set - - - - This is part of the delayed object - activation scheme. The method must - be called on this object after the configuration properties have - been set. Until is called this - object is in an undefined state and must not be used. - - - If any of the configuration properties are modified then - must be called again. - - - - - - Close this appender instance. - - - - Close this appender instance. If this appender is marked - as not then the remaining events in - the buffer must be sent when the appender is closed. - - - - - - This method is called by the method. - - the event to log - - - Stores the in the cyclic buffer. - - - The buffer will be sent (i.e. passed to the - method) if one of the following conditions is met: - - - - The cyclic buffer is full and this appender is - marked as not lossy (see ) - - - An is set and - it is triggered for the - specified. - - - - Before the event is stored in the buffer it is fixed - (see ) to ensure that - any data referenced by the event will be valid when the buffer - is processed. - - - - - - Sends the contents of the buffer. - - The first logging event. - The buffer containing the events that need to be send. - - - The subclass must override . - - - - - - Sends the events. - - The events that need to be send. - - - The subclass must override this method to process the buffered events. - - - - - - The size of the cyclic buffer used to hold the logging events. - - - Set to by default. - - - - - The cyclic buffer used to store the logging events. - - - - - The triggering event evaluator that causes the buffer to be sent immediately. - - - The object that is used to determine if an event causes the entire - buffer to be sent immediately. This field can be null, which - indicates that event triggering is not to be done. The evaluator - can be set using the property. If this appender - has the ( property) set to - true then an must be set. - - - - - Indicates if the appender should overwrite events in the cyclic buffer - when it becomes full, or if the buffer should be flushed when the - buffer is full. - - - If this field is set to true then an must - be set. - - - - - The triggering event evaluator filters discarded events. - - - The object that is used to determine if an event that is discarded should - really be discarded or if it should be sent to the appenders. - This field can be null, which indicates that all discarded events will - be discarded. - - - - - Value indicating which fields in the event should be fixed - - - By default all fields are fixed - - - - - The events delivered to the subclass must be fixed. - - - - - Gets or sets a value that indicates whether the appender is lossy. - - - true if the appender is lossy, otherwise false. The default is false. - - - - This appender uses a buffer to store logging events before - delivering them. A triggering event causes the whole buffer - to be send to the remote sink. If the buffer overruns before - a triggering event then logging events could be lost. Set - to false to prevent logging events - from being lost. - - If is set to true then an - must be specified. - - - - - Gets or sets the size of the cyclic buffer used to hold the - logging events. - - - The size of the cyclic buffer used to hold the logging events. - - - - The option takes a positive integer - representing the maximum number of logging events to collect in - a cyclic buffer. When the is reached, - oldest events are deleted as new events are added to the - buffer. By default the size of the cyclic buffer is 512 events. - - - If the is set to a value less than - or equal to 1 then no buffering will occur. The logging event - will be delivered synchronously (depending on the - and properties). Otherwise the event will - be buffered. - - - - - - Gets or sets the that causes the - buffer to be sent immediately. - - - The that causes the buffer to be - sent immediately. - - - - The evaluator will be called for each event that is appended to this - appender. If the evaluator triggers then the current buffer will - immediately be sent (see ). - - If is set to true then an - must be specified. - - - - - Gets or sets the value of the to use. - - - The value of the to use. - - - - The evaluator will be called for each event that is discarded from this - appender. If the evaluator triggers then the current buffer will immediately - be sent (see ). - - - - - - Gets or sets a value indicating if only part of the logging event data - should be fixed. - - - true if the appender should only fix part of the logging event - data, otherwise false. The default is false. - - - - Setting this property to true will cause only part of the - event data to be fixed and serialized. This will improve performance. - - - See for more information. - - - - - - Gets or sets a the fields that will be fixed in the event - - - The event fields that will be fixed before the event is buffered - - - - The logging event needs to have certain thread specific values - captured before it can be buffered. See - for details. - - - - - - - Initializes a new instance of the class. - - - Public default constructor to initialize a new instance of this class. - - - - - Initialize the appender based on the options set - - - - This is part of the delayed object - activation scheme. The method must - be called on this object after the configuration properties have - been set. Until is called this - object is in an undefined state and must not be used. - - - If any of the configuration properties are modified then - must be called again. - - - - - - Override the parent method to close the database - - - - Closes the database command and database connection. - - - - - - Inserts the events into the database. - - The events to insert into the database. - - - Insert all the events specified in the - array into the database. - - - - - - Adds a parameter to the command. - - The parameter to add to the command. - - - Adds a parameter to the ordered list of command parameters. - - - - - - Writes the events to the database using the transaction specified. - - The transaction that the events will be executed under. - The array of events to insert into the database. - - - The transaction argument can be null if the appender has been - configured not to use transactions. See - property for more information. - - - - - - Formats the log message into database statement text. - - The event being logged. - - This method can be overridden by subclasses to provide - more control over the format of the database statement. - - - Text that can be passed to a . - - - - - Connects to the database. - - - - - Retrieves the class type of the ADO.NET provider. - - - - Gets the Type of the ADO.NET provider to use to connect to the - database. This method resolves the type specified in the - property. - - - Subclasses can override this method to return a different type - if necessary. - - - The of the ADO.NET provider - - - - Prepares the database command and initialize the parameters. - - - - - Flag to indicate if we are using a command object - - - - Set to true when the appender is to use a prepared - statement or stored procedure to insert into the database. - - - - - - The list of objects. - - - - The list of objects. - - - - - - The security context to use for privileged calls - - - - - The that will be used - to insert logging events into a database. - - - - - The database command. - - - - - Database connection string. - - - - - String type name of the type name. - - - - - The text of the command. - - - - - The command type. - - - - - Indicates whether to use transactions when writing to the database. - - - - - Indicates whether to use transactions when writing to the database. - - - - - Gets or sets the database connection string that is used to connect to - the database. - - - The database connection string used to connect to the database. - - - - The connections string is specific to the connection type. - See for more information. - - - Connection string for MS Access via ODBC: - "DSN=MS Access Database;UID=admin;PWD=;SystemDB=C:\data\System.mdw;SafeTransactions = 0;FIL=MS Access;DriverID = 25;DBQ=C:\data\train33.mdb" - - Another connection string for MS Access via ODBC: - "Driver={Microsoft Access Driver (*.mdb)};DBQ=C:\Work\cvs_root\log4net-1.2\access.mdb;UID=;PWD=;" - - Connection string for MS Access via OLE DB: - "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Work\cvs_root\log4net-1.2\access.mdb;User Id=;Password=;" - - - - - Gets or sets the type name of the connection - that should be created. - - - The type name of the connection. - - - - The type name of the ADO.NET provider to use. - - - The default is to use the OLE DB provider. - - - Use the OLE DB Provider. This is the default value. - System.Data.OleDb.OleDbConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - Use the MS SQL Server Provider. - System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - Use the ODBC Provider. - Microsoft.Data.Odbc.OdbcConnection,Microsoft.Data.Odbc,version=1.0.3300.0,publicKeyToken=b77a5c561934e089,culture=neutral - This is an optional package that you can download from - http://msdn.microsoft.com/downloads - search for ODBC .NET Data Provider. - - Use the Oracle Provider. - System.Data.OracleClient.OracleConnection, System.Data.OracleClient, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - This is an optional package that you can download from - http://msdn.microsoft.com/downloads - search for .NET Managed Provider for Oracle. - - - - - Gets or sets the command text that is used to insert logging events - into the database. - - - The command text used to insert logging events into the database. - - - - Either the text of the prepared statement or the - name of the stored procedure to execute to write into - the database. - - - The property determines if - this text is a prepared statement or a stored procedure. - - - - - - Gets or sets the command type to execute. - - - The command type to execute. - - - - This value may be either (System.Data.CommandType.Text) to specify - that the is a prepared statement to execute, - or (System.Data.CommandType.StoredProcedure) to specify that the - property is the name of a stored procedure - to execute. - - - The default value is (System.Data.CommandType.Text). - - - - - - Should transactions be used to insert logging events in the database. - - - true if transactions should be used to insert logging events in - the database, otherwise false. The default value is true. - - - - Gets or sets a value that indicates whether transactions should be used - to insert logging events in the database. - - - When set a single transaction will be used to insert the buffered events - into the database. Otherwise each event will be inserted without using - an explicit transaction. - - - - - - Gets or sets the used to call the NetSend method. - - - The used to call the NetSend method. - - - - Unless a specified here for this appender - the is queried for the - security context to use. The default behavior is to use the security context - of the current thread. - - - - - - Should this appender try to reconnect to the database on error. - - - true if the appender should try to reconnect to the database after an - error has occurred, otherwise false. The default value is false, - i.e. not to try to reconnect. - - - - The default behaviour is for the appender not to try to reconnect to the - database if an error occurs. Subsequent logging events are discarded. - - - To force the appender to attempt to reconnect to the database set this - property to true. - - - When the appender attempts to connect to the database there may be a - delay of up to the connection timeout specified in the connection string. - This delay will block the calling application's thread. - Until the connection can be reestablished this potential delay may occur multiple times. - - - - - - Gets or sets the underlying . - - - The underlying . - - - creates a to insert - logging events into a database. Classes deriving from - can use this property to get or set this . Use the - underlying returned from if - you require access beyond that which provides. - - - - - Parameter type used by the . - - - - This class provides the basic database parameter properties - as defined by the interface. - - This type can be subclassed to provide database specific - functionality. The two methods that are called externally are - and . - - - - - - Initializes a new instance of the class. - - - Default constructor for the AdoNetAppenderParameter class. - - - - - Prepare the specified database command object. - - The command to prepare. - - - Prepares the database command object by adding - this parameter to its collection of parameters. - - - - - - Renders the logging event and set the parameter value in the command. - - The command containing the parameter. - The event to be rendered. - - - Renders the logging event using this parameters layout - object. Sets the value of the parameter on the command object. - - - - - - The name of this parameter. - - - - - The database type for this parameter. - - - - - Flag to infer type rather than use the DbType - - - - - The precision for this parameter. - - - - - The scale for this parameter. - - - - - The size for this parameter. - - - - - The to use to render the - logging event into an object for this parameter. - - - - - Gets or sets the name of this parameter. - - - The name of this parameter. - - - - The name of this parameter. The parameter name - must match up to a named parameter to the SQL stored procedure - or prepared statement. - - - - - - Gets or sets the database type for this parameter. - - - The database type for this parameter. - - - - The database type for this parameter. This property should - be set to the database type from the - enumeration. See . - - - This property is optional. If not specified the ADO.NET provider - will attempt to infer the type from the value. - - - - - - - Gets or sets the precision for this parameter. - - - The precision for this parameter. - - - - The maximum number of digits used to represent the Value. - - - This property is optional. If not specified the ADO.NET provider - will attempt to infer the precision from the value. - - - - - - - Gets or sets the scale for this parameter. - - - The scale for this parameter. - - - - The number of decimal places to which Value is resolved. - - - This property is optional. If not specified the ADO.NET provider - will attempt to infer the scale from the value. - - - - - - - Gets or sets the size for this parameter. - - - The size for this parameter. - - - - The maximum size, in bytes, of the data within the column. - - - This property is optional. If not specified the ADO.NET provider - will attempt to infer the size from the value. - - - - - - - Gets or sets the to use to - render the logging event into an object for this - parameter. - - - The used to render the - logging event into an object for this parameter. - - - - The that renders the value for this - parameter. - - - The can be used to adapt - any into a - for use in the property. - - - - - - Appends logging events to the terminal using ANSI color escape sequences. - - - - AnsiColorTerminalAppender appends log events to the standard output stream - or the error output stream using a layout specified by the - user. It also allows the color of a specific level of message to be set. - - - This appender expects the terminal to understand the VT100 control set - in order to interpret the color codes. If the terminal or console does not - understand the control codes the behavior is not defined. - - - By default, all output is written to the console's standard output stream. - The property can be set to direct the output to the - error stream. - - - NOTE: This appender writes each message to the System.Console.Out or - System.Console.Error that is set at the time the event is appended. - Therefore it is possible to programmatically redirect the output of this appender - (for example NUnit does this to capture program output). While this is the desired - behavior of this appender it may have security implications in your application. - - - When configuring the ANSI colored terminal appender, a mapping should be - specified to map a logging level to a color. For example: - - - - - - - - - - - - - - - The Level is the standard log4net logging level and ForeColor and BackColor can be any - of the following values: - - Blue - Green - Red - White - Yellow - Purple - Cyan - - These color values cannot be combined together to make new colors. - - - The attributes can be any combination of the following: - - Brightforeground is brighter - Dimforeground is dimmer - Underscoremessage is underlined - Blinkforeground is blinking (does not work on all terminals) - Reverseforeground and background are reversed - Hiddenoutput is hidden - Strikethroughmessage has a line through it - - While any of these attributes may be combined together not all combinations - work well together, for example setting both Bright and Dim attributes makes - no sense. - - - Patrick Wagstrom - Nicko Cadell - - - - The to use when writing to the Console - standard output stream. - - - - The to use when writing to the Console - standard output stream. - - - - - - The to use when writing to the Console - standard error output stream. - - - - The to use when writing to the Console - standard error output stream. - - - - - - Ansi code to reset terminal - - - - - Initializes a new instance of the class. - - - The instance of the class is set up to write - to the standard output stream. - - - - - Add a mapping of level to color - - The mapping to add - - - Add a mapping to this appender. - Each mapping defines the foreground and background colours - for a level. - - - - - - This method is called by the method. - - The event to log. - - - Writes the event to the console. - - - The format of the output will depend on the appender's layout. - - - - - - Initialize the options for this appender - - - - Initialize the level to color mappings set on this appender. - - - - - - Flag to write output to the error stream rather than the standard output stream - - - - - Mapping from level object to color value - - - - - Target is the value of the console output stream. - - - Target is the value of the console output stream. - This is either "Console.Out" or "Console.Error". - - - - Target is the value of the console output stream. - This is either "Console.Out" or "Console.Error". - - - - - - This appender requires a to be set. - - true - - - This appender requires a to be set. - - - - - - The enum of possible display attributes - - - - The following flags can be combined together to - form the ANSI color attributes. - - - - - - - text is bright - - - - - text is dim - - - - - text is underlined - - - - - text is blinking - - - Not all terminals support this attribute - - - - - text and background colors are reversed - - - - - text is hidden - - - - - text is displayed with a strikethrough - - - - - The enum of possible foreground or background color values for - use with the color mapping method - - - - The output can be in one for the following ANSI colors. - - - - - - - color is black - - - - - color is red - - - - - color is green - - - - - color is yellow - - - - - color is blue - - - - - color is magenta - - - - - color is cyan - - - - - color is white - - - - - A class to act as a mapping between the level that a logging call is made at and - the color it should be displayed as. - - - - Defines the mapping between a level and the color it should be displayed in. - - - - - - An entry in the - - - - This is an abstract base class for types that are stored in the - object. - - - Nicko Cadell - - - - Default protected constructor - - - - Default protected constructor - - - - - - Initialize any options defined on this entry - - - - Should be overridden by any classes that need to initialise based on their options - - - - - - The level that is the key for this mapping - - - The that is the key for this mapping - - - - Get or set the that is the key for this - mapping subclass. - - - - - - Initialize the options for the object - - - - Combine the and together - and append the attributes. - - - - - - The mapped foreground color for the specified level - - - - Required property. - The mapped foreground color for the specified level - - - - - - The mapped background color for the specified level - - - - Required property. - The mapped background color for the specified level - - - - - - The color attributes for the specified level - - - - Required property. - The color attributes for the specified level - - - - - - The combined , and - suitable for setting the ansi terminal color. - - - - - A strongly-typed collection of objects. - - Nicko Cadell - - - - Creates a read-only wrapper for a AppenderCollection instance. - - list to create a readonly wrapper arround - - An AppenderCollection wrapper that is read-only. - - - - - An empty readonly static AppenderCollection - - - - - Initializes a new instance of the AppenderCollection class - that is empty and has the default initial capacity. - - - - - Initializes a new instance of the AppenderCollection class - that has the specified initial capacity. - - - The number of elements that the new AppenderCollection is initially capable of storing. - - - - - Initializes a new instance of the AppenderCollection class - that contains elements copied from the specified AppenderCollection. - - The AppenderCollection whose elements are copied to the new collection. - - - - Initializes a new instance of the AppenderCollection class - that contains elements copied from the specified array. - - The array whose elements are copied to the new list. - - - - Initializes a new instance of the AppenderCollection class - that contains elements copied from the specified collection. - - The collection whose elements are copied to the new list. - - - - Allow subclasses to avoid our default constructors - - - - - - - Copies the entire AppenderCollection to a one-dimensional - array. - - The one-dimensional array to copy to. - - - - Copies the entire AppenderCollection to a one-dimensional - array, starting at the specified index of the target array. - - The one-dimensional array to copy to. - The zero-based index in at which copying begins. - - - - Adds a to the end of the AppenderCollection. - - The to be added to the end of the AppenderCollection. - The index at which the value has been added. - - - - Removes all elements from the AppenderCollection. - - - - - Creates a shallow copy of the . - - A new with a shallow copy of the collection data. - - - - Determines whether a given is in the AppenderCollection. - - The to check for. - true if is found in the AppenderCollection; otherwise, false. - - - - Returns the zero-based index of the first occurrence of a - in the AppenderCollection. - - The to locate in the AppenderCollection. - - The zero-based index of the first occurrence of - in the entire AppenderCollection, if found; otherwise, -1. - - - - - Inserts an element into the AppenderCollection at the specified index. - - The zero-based index at which should be inserted. - The to insert. - - is less than zero - -or- - is equal to or greater than . - - - - - Removes the first occurrence of a specific from the AppenderCollection. - - The to remove from the AppenderCollection. - - The specified was not found in the AppenderCollection. - - - - - Removes the element at the specified index of the AppenderCollection. - - The zero-based index of the element to remove. - - is less than zero - -or- - is equal to or greater than . - - - - - Returns an enumerator that can iterate through the AppenderCollection. - - An for the entire AppenderCollection. - - - - Adds the elements of another AppenderCollection to the current AppenderCollection. - - The AppenderCollection whose elements should be added to the end of the current AppenderCollection. - The new of the AppenderCollection. - - - - Adds the elements of a array to the current AppenderCollection. - - The array whose elements should be added to the end of the AppenderCollection. - The new of the AppenderCollection. - - - - Adds the elements of a collection to the current AppenderCollection. - - The collection whose elements should be added to the end of the AppenderCollection. - The new of the AppenderCollection. - - - - Sets the capacity to the actual number of elements. - - - - - Return the collection elements as an array - - the array - - - - is less than zero - -or- - is equal to or greater than . - - - - - is less than zero - -or- - is equal to or greater than . - - - - - Gets the number of elements actually contained in the AppenderCollection. - - - - - Gets a value indicating whether access to the collection is synchronized (thread-safe). - - true if access to the ICollection is synchronized (thread-safe); otherwise, false. - - - - Gets an object that can be used to synchronize access to the collection. - - - - - Gets or sets the at the specified index. - - The zero-based index of the element to get or set. - - is less than zero - -or- - is equal to or greater than . - - - - - Gets a value indicating whether the collection has a fixed size. - - true if the collection has a fixed size; otherwise, false. The default is false - - - - Gets a value indicating whether the IList is read-only. - - true if the collection is read-only; otherwise, false. The default is false - - - - Gets or sets the number of elements the AppenderCollection can contain. - - - - - Supports type-safe iteration over a . - - - - - - Advances the enumerator to the next element in the collection. - - - true if the enumerator was successfully advanced to the next element; - false if the enumerator has passed the end of the collection. - - - The collection was modified after the enumerator was created. - - - - - Sets the enumerator to its initial position, before the first element in the collection. - - - - - Gets the current element in the collection. - - - - - Type visible only to our subclasses - Used to access protected constructor - - - - - - A value - - - - - Supports simple iteration over a . - - - - - - Initializes a new instance of the Enumerator class. - - - - - - Advances the enumerator to the next element in the collection. - - - true if the enumerator was successfully advanced to the next element; - false if the enumerator has passed the end of the collection. - - - The collection was modified after the enumerator was created. - - - - - Sets the enumerator to its initial position, before the first element in the collection. - - - - - Gets the current element in the collection. - - - - - - - - - Appends log events to the ASP.NET system. - - - - - Diagnostic information and tracing messages that you specify are appended to the output - of the page that is sent to the requesting browser. Optionally, you can view this information - from a separate trace viewer (Trace.axd) that displays trace information for every page in a - given application. - - - Trace statements are processed and displayed only when tracing is enabled. You can control - whether tracing is displayed to a page, to the trace viewer, or both. - - - The logging event is passed to the or - method depending on the level of the logging event. - - - Nicko Cadell - Gert Driesen - - - - Initializes a new instance of the class. - - - - Default constructor. - - - - - - Write the logging event to the ASP.NET trace - - the event to log - - - Write the logging event to the ASP.NET trace - HttpContext.Current.Trace - (). - - - - - - This appender requires a to be set. - - true - - - This appender requires a to be set. - - - - - - Buffers events and then forwards them to attached appenders. - - - - The events are buffered in this appender until conditions are - met to allow the appender to deliver the events to the attached - appenders. See for the - conditions that cause the buffer to be sent. - - The forwarding appender can be used to specify different - thresholds and filters for the same appender at different locations - within the hierarchy. - - - Nicko Cadell - Gert Driesen - - - - Interface for attaching appenders to objects. - - - - Interface for attaching, removing and retrieving appenders. - - - Nicko Cadell - Gert Driesen - - - - Attaches an appender. - - The appender to add. - - - Add the specified appender. The implementation may - choose to allow or deny duplicate appenders. - - - - - - Gets an attached appender with the specified name. - - The name of the appender to get. - - The appender with the name specified, or null if no appender with the - specified name is found. - - - - Returns an attached appender with the specified. - If no appender with the specified name is found null will be - returned. - - - - - - Removes all attached appenders. - - - - Removes and closes all attached appenders - - - - - - Removes the specified appender from the list of attached appenders. - - The appender to remove. - The appender removed from the list - - - The appender removed is not closed. - If you are discarding the appender you must call - on the appender removed. - - - - - - Removes the appender with the specified name from the list of appenders. - - The name of the appender to remove. - The appender removed from the list - - - The appender removed is not closed. - If you are discarding the appender you must call - on the appender removed. - - - - - - Gets all attached appenders. - - - A collection of attached appenders. - - - - Gets a collection of attached appenders. - If there are no attached appenders the - implementation should return an empty - collection rather than null. - - - - - - Initializes a new instance of the class. - - - - Default constructor. - - - - - - Closes the appender and releases resources. - - - - Releases any resources allocated within the appender such as file handles, - network connections, etc. - - - It is a programming error to append to a closed appender. - - - - - - Send the events. - - The events that need to be send. - - - Forwards the events to the attached appenders. - - - - - - Adds an to the list of appenders of this - instance. - - The to add to this appender. - - - If the specified is already in the list of - appenders, then it won't be added again. - - - - - - Looks for the appender with the specified name. - - The name of the appender to lookup. - - The appender with the specified name, or null. - - - - Get the named appender attached to this buffering appender. - - - - - - Removes all previously added appenders from this appender. - - - - This is useful when re-reading configuration information. - - - - - - Removes the specified appender from the list of appenders. - - The appender to remove. - The appender removed from the list - - The appender removed is not closed. - If you are discarding the appender you must call - on the appender removed. - - - - - Removes the appender with the specified name from the list of appenders. - - The name of the appender to remove. - The appender removed from the list - - The appender removed is not closed. - If you are discarding the appender you must call - on the appender removed. - - - - - Implementation of the interface - - - - - Gets the appenders contained in this appender as an - . - - - If no appenders can be found, then an - is returned. - - - A collection of the appenders in this appender. - - - - - Appends logging events to the console. - - - - ColoredConsoleAppender appends log events to the standard output stream - or the error output stream using a layout specified by the - user. It also allows the color of a specific type of message to be set. - - - By default, all output is written to the console's standard output stream. - The property can be set to direct the output to the - error stream. - - - NOTE: This appender writes directly to the application's attached console - not to the System.Console.Out or System.Console.Error TextWriter. - The System.Console.Out and System.Console.Error streams can be - programmatically redirected (for example NUnit does this to capture program output). - This appender will ignore these redirections because it needs to use Win32 - API calls to colorize the output. To respect these redirections the - must be used. - - - When configuring the colored console appender, mapping should be - specified to map a logging level to a color. For example: - - - - - - - - - - - - - - The Level is the standard log4net logging level and ForeColor and BackColor can be any - combination of the following values: - - Blue - Green - Red - White - Yellow - Purple - Cyan - HighIntensity - - - - Rick Hobbs - Nicko Cadell - - - - The to use when writing to the Console - standard output stream. - - - - The to use when writing to the Console - standard output stream. - - - - - - The to use when writing to the Console - standard error output stream. - - - - The to use when writing to the Console - standard error output stream. - - - - - - Initializes a new instance of the class. - - - The instance of the class is set up to write - to the standard output stream. - - - - - Initializes a new instance of the class - with the specified layout. - - the layout to use for this appender - - The instance of the class is set up to write - to the standard output stream. - - - - - Initializes a new instance of the class - with the specified layout. - - the layout to use for this appender - flag set to true to write to the console error stream - - When is set to true, output is written to - the standard error output stream. Otherwise, output is written to the standard - output stream. - - - - - Add a mapping of level to color - done by the config file - - The mapping to add - - - Add a mapping to this appender. - Each mapping defines the foreground and background colors - for a level. - - - - - - This method is called by the method. - - The event to log. - - - Writes the event to the console. - - - The format of the output will depend on the appender's layout. - - - - - - Initialize the options for this appender - - - - Initialize the level to color mappings set on this appender. - - - - - - Flag to write output to the error stream rather than the standard output stream - - - - - Mapping from level object to color value - - - - - The console output stream writer to write to - - - - This writer is not thread safe. - - - - - - Target is the value of the console output stream. - This is either "Console.Out" or "Console.Error". - - - Target is the value of the console output stream. - This is either "Console.Out" or "Console.Error". - - - - Target is the value of the console output stream. - This is either "Console.Out" or "Console.Error". - - - - - - This appender requires a to be set. - - true - - - This appender requires a to be set. - - - - - - The enum of possible color values for use with the color mapping method - - - - The following flags can be combined together to - form the colors. - - - - - - - color is blue - - - - - color is green - - - - - color is red - - - - - color is white - - - - - color is yellow - - - - - color is purple - - - - - color is cyan - - - - - color is intensified - - - - - A class to act as a mapping between the level that a logging call is made at and - the color it should be displayed as. - - - - Defines the mapping between a level and the color it should be displayed in. - - - - - - Initialize the options for the object - - - - Combine the and together. - - - - - - The mapped foreground color for the specified level - - - - Required property. - The mapped foreground color for the specified level. - - - - - - The mapped background color for the specified level - - - - Required property. - The mapped background color for the specified level. - - - - - - The combined and suitable for - setting the console color. - - - - - Appends logging events to the console. - - - - ConsoleAppender appends log events to the standard output stream - or the error output stream using a layout specified by the - user. - - - By default, all output is written to the console's standard output stream. - The property can be set to direct the output to the - error stream. - - - NOTE: This appender writes each message to the System.Console.Out or - System.Console.Error that is set at the time the event is appended. - Therefore it is possible to programmatically redirect the output of this appender - (for example NUnit does this to capture program output). While this is the desired - behavior of this appender it may have security implications in your application. - - - Nicko Cadell - Gert Driesen - - - - The to use when writing to the Console - standard output stream. - - - - The to use when writing to the Console - standard output stream. - - - - - - The to use when writing to the Console - standard error output stream. - - - - The to use when writing to the Console - standard error output stream. - - - - - - Initializes a new instance of the class. - - - The instance of the class is set up to write - to the standard output stream. - - - - - Initializes a new instance of the class - with the specified layout. - - the layout to use for this appender - - The instance of the class is set up to write - to the standard output stream. - - - - - Initializes a new instance of the class - with the specified layout. - - the layout to use for this appender - flag set to true to write to the console error stream - - When is set to true, output is written to - the standard error output stream. Otherwise, output is written to the standard - output stream. - - - - - This method is called by the method. - - The event to log. - - - Writes the event to the console. - - - The format of the output will depend on the appender's layout. - - - - - - Target is the value of the console output stream. - This is either "Console.Out" or "Console.Error". - - - Target is the value of the console output stream. - This is either "Console.Out" or "Console.Error". - - - - Target is the value of the console output stream. - This is either "Console.Out" or "Console.Error". - - - - - - This appender requires a to be set. - - true - - - This appender requires a to be set. - - - - - - Appends log events to the system. - - - - The application configuration file can be used to control what listeners - are actually used. See the MSDN documentation for the - class for details on configuring the - debug system. - - - Events are written using the - method. The event's logger name is passed as the value for the category name to the Write method. - - - Nicko Cadell - - - - Initializes a new instance of the . - - - - Default constructor. - - - - - - Initializes a new instance of the - with a specified layout. - - The layout to use with this appender. - - - Obsolete constructor. - - - - - - Writes the logging event to the system. - - The event to log. - - - Writes the logging event to the system. - If is true then the - is called. - - - - - - Immediate flush means that the underlying writer or output stream - will be flushed at the end of each append operation. - - - - Immediate flush is slower but ensures that each append request is - actually written. If is set to - false, then there is a good chance that the last few - logs events are not actually written to persistent media if and - when the application crashes. - - - The default value is true. - - - - - Gets or sets a value that indicates whether the appender will - flush at the end of each write. - - - The default behavior is to flush at the end of each - write. If the option is set tofalse, then the underlying - stream can defer writing to physical medium to a later time. - - - Avoiding the flush operation at the end of each append results - in a performance gain of 10 to 20 percent. However, there is safety - trade-off involved in skipping flushing. Indeed, when flushing is - skipped, then it is likely that the last few log events will not - be recorded on disk when the application exits. This is a high - price to pay even for a 20% performance gain. - - - - - - This appender requires a to be set. - - true - - - This appender requires a to be set. - - - - - - Writes events to the system event log. - - - - The EventID of the event log entry can be - set using the EventLogEventID property () - on the . - - - There is a limit of 32K characters for an event log message - - - When configuring the EventLogAppender a mapping can be - specified to map a logging level to an event log entry type. For example: - - - <mapping> - <level value="ERROR" /> - <eventLogEntryType value="Error" /> - </mapping> - <mapping> - <level value="DEBUG" /> - <eventLogEntryType value="Information" /> - </mapping> - - - The Level is the standard log4net logging level and eventLogEntryType can be any value - from the enum, i.e.: - - Erroran error event - Warninga warning event - Informationan informational event - - - - Aspi Havewala - Douglas de la Torre - Nicko Cadell - Gert Driesen - Thomas Voss - - - - Initializes a new instance of the class. - - - - Default constructor. - - - - - - Initializes a new instance of the class - with the specified . - - The to use with this appender. - - - Obsolete constructor. - - - - - - Add a mapping of level to - done by the config file - - The mapping to add - - - Add a mapping to this appender. - Each mapping defines the event log entry type for a level. - - - - - - Initialize the appender based on the options set - - - - This is part of the delayed object - activation scheme. The method must - be called on this object after the configuration properties have - been set. Until is called this - object is in an undefined state and must not be used. - - - If any of the configuration properties are modified then - must be called again. - - - - - - Create an event log source - - - Uses different API calls under NET_2_0 - - - - - This method is called by the - method. - - the event to log - - Writes the event to the system event log using the - . - - If the event has an EventID property (see ) - set then this integer will be used as the event log event id. - - - There is a limit of 32K characters for an event log message - - - - - - Get the equivalent for a - - the Level to convert to an EventLogEntryType - The equivalent for a - - Because there are fewer applicable - values to use in logging levels than there are in the - this is a one way mapping. There is - a loss of information during the conversion. - - - - - The log name is the section in the event logs where the messages - are stored. - - - - - Name of the application to use when logging. This appears in the - application column of the event log named by . - - - - - The name of the machine which holds the event log. This is - currently only allowed to be '.' i.e. the current machine. - - - - - Mapping from level object to EventLogEntryType - - - - - The security context to use for privileged calls - - - - - The name of the log where messages will be stored. - - - The string name of the log where messages will be stored. - - - This is the name of the log as it appears in the Event Viewer - tree. The default value is to log into the Application - log, this is where most applications write their events. However - if you need a separate log for your application (or applications) - then you should set the appropriately. - This should not be used to distinguish your event log messages - from those of other applications, the - property should be used to distinguish events. This property should be - used to group together events into a single log. - - - - - - Property used to set the Application name. This appears in the - event logs when logging. - - - The string used to distinguish events from different sources. - - - Sets the event log source property. - - - - - This property is used to return the name of the computer to use - when accessing the event logs. Currently, this is the current - computer, denoted by a dot "." - - - The string name of the machine holding the event log that - will be logged into. - - - This property cannot be changed. It is currently set to '.' - i.e. the local machine. This may be changed in future. - - - - - Gets or sets the used to write to the EventLog. - - - The used to write to the EventLog. - - - - The system security context used to write to the EventLog. - - - Unless a specified here for this appender - the is queried for the - security context to use. The default behavior is to use the security context - of the current thread. - - - - - - This appender requires a to be set. - - true - - - This appender requires a to be set. - - - - - - A class to act as a mapping between the level that a logging call is made at and - the color it should be displayed as. - - - - Defines the mapping between a level and its event log entry type. - - - - - - The for this entry - - - - Required property. - The for this entry - - - - - - Appends logging events to a file. - - - - Logging events are sent to the file specified by - the property. - - - The file can be opened in either append or overwrite mode - by specifying the property. - If the file path is relative it is taken as relative from - the application base directory. The file encoding can be - specified by setting the property. - - - The layout's and - values will be written each time the file is opened and closed - respectively. If the property is - then the file may contain multiple copies of the header and footer. - - - This appender will first try to open the file for writing when - is called. This will typically be during configuration. - If the file cannot be opened for writing the appender will attempt - to open the file again each time a message is logged to the appender. - If the file cannot be opened for writing when a message is logged then - the message will be discarded by this appender. - - - The supports pluggable file locking models via - the property. - The default behavior, implemented by - is to obtain an exclusive write lock on the file until this appender is closed. - The alternative model, , only holds a - write lock while the appender is writing a logging event. - - - Nicko Cadell - Gert Driesen - Rodrigo B. de Oliveira - Douglas de la Torre - Niall Daley - - - - Sends logging events to a . - - - - An Appender that writes to a . - - - This appender may be used stand alone if initialized with an appropriate - writer, however it is typically used as a base class for an appender that - can open a to write to. - - - Nicko Cadell - Gert Driesen - Douglas de la Torre - - - - Initializes a new instance of the class. - - - - Default constructor. - - - - - - Initializes a new instance of the class and - sets the output destination to a new initialized - with the specified . - - The layout to use with this appender. - The to output to. - - - Obsolete constructor. - - - - - - Initializes a new instance of the class and sets - the output destination to the specified . - - The layout to use with this appender - The to output to - - The must have been previously opened. - - - - Obsolete constructor. - - - - - - This method determines if there is a sense in attempting to append. - - - - This method checked if an output target has been set and if a - layout has been set. - - - false if any of the preconditions fail. - - - - This method is called by the - method. - - The event to log. - - - Writes a log statement to the output stream if the output stream exists - and is writable. - - - The format of the output will depend on the appender's layout. - - - - - - This method is called by the - method. - - The array of events to log. - - - This method writes all the bulk logged events to the output writer - before flushing the stream. - - - - - - Close this appender instance. The underlying stream or writer is also closed. - - - Closed appenders cannot be reused. - - - - - Writes the footer and closes the underlying . - - - - Writes the footer and closes the underlying . - - - - - - Closes the underlying . - - - - Closes the underlying . - - - - - - Clears internal references to the underlying - and other variables. - - - - Subclasses can override this method for an alternate closing behavior. - - - - - - Writes a footer as produced by the embedded layout's property. - - - - Writes a footer as produced by the embedded layout's property. - - - - - - Writes a header produced by the embedded layout's property. - - - - Writes a header produced by the embedded layout's property. - - - - - - Called to allow a subclass to lazily initialize the writer - - - - This method is called when an event is logged and the or - have not been set. This allows a subclass to - attempt to initialize the writer multiple times. - - - - - - This is the where logging events - will be written to. - - - - - Immediate flush means that the underlying - or output stream will be flushed at the end of each append operation. - - - - Immediate flush is slower but ensures that each append request is - actually written. If is set to - false, then there is a good chance that the last few - logging events are not actually persisted if and when the application - crashes. - - - The default value is true. - - - - - - Gets or set whether the appender will flush at the end - of each append operation. - - - - The default behavior is to flush at the end of each - append operation. - - - If this option is set to false, then the underlying - stream can defer persisting the logging event to a later - time. - - - - Avoiding the flush operation at the end of each append results in - a performance gain of 10 to 20 percent. However, there is safety - trade-off involved in skipping flushing. Indeed, when flushing is - skipped, then it is likely that the last few log events will not - be recorded on disk when the application exits. This is a high - price to pay even for a 20% performance gain. - - - - - Sets the where the log output will go. - - - - The specified must be open and writable. - - - The will be closed when the appender - instance is closed. - - - Note: Logging to an unopened will fail. - - - - - - Gets or set the and the underlying - , if any, for this appender. - - - The for this appender. - - - - - This appender requires a to be set. - - true - - - This appender requires a to be set. - - - - - - Gets or sets the where logging events - will be written to. - - - The where logging events are written. - - - - This is the where logging events - will be written to. - - - - - - Default constructor - - - - Default constructor - - - - - - Construct a new appender using the layout, file and append mode. - - the layout to use with this appender - the full path to the file to write to - flag to indicate if the file should be appended to - - - Obsolete constructor. - - - - - - Construct a new appender using the layout and file specified. - The file will be appended to. - - the layout to use with this appender - the full path to the file to write to - - - Obsolete constructor. - - - - - - Activate the options on the file appender. - - - - This is part of the delayed object - activation scheme. The method must - be called on this object after the configuration properties have - been set. Until is called this - object is in an undefined state and must not be used. - - - If any of the configuration properties are modified then - must be called again. - - - This will cause the file to be opened. - - - - - - Closes any previously opened file and calls the parent's . - - - - Resets the filename and the file stream. - - - - - - Called to initialize the file writer - - - - Will be called for each logged message until the file is - successfully opened. - - - - - - This method is called by the - method. - - The event to log. - - - Writes a log statement to the output stream if the output stream exists - and is writable. - - - The format of the output will depend on the appender's layout. - - - - - - This method is called by the - method. - - The array of events to log. - - - Acquires the output file locks once before writing all the events to - the stream. - - - - - - Writes a footer as produced by the embedded layout's property. - - - - Writes a footer as produced by the embedded layout's property. - - - - - - Writes a header produced by the embedded layout's property. - - - - Writes a header produced by the embedded layout's property. - - - - - - Closes the underlying . - - - - Closes the underlying . - - - - - - Closes the previously opened file. - - - - Writes the to the file and then - closes the file. - - - - - - Sets and opens the file where the log output will go. The specified file must be writable. - - The path to the log file. Must be a fully qualified path. - If true will append to fileName. Otherwise will truncate fileName - - - Calls but guarantees not to throw an exception. - Errors are passed to the . - - - - - - Sets and opens the file where the log output will go. The specified file must be writable. - - The path to the log file. Must be a fully qualified path. - If true will append to fileName. Otherwise will truncate fileName - - - If there was already an opened file, then the previous file - is closed first. - - - This method will ensure that the directory structure - for the specified exists. - - - - - - Sets the quiet writer used for file output - - the file stream that has been opened for writing - - - This implementation of creates a - over the and passes it to the - method. - - - This method can be overridden by sub classes that want to wrap the - in some way, for example to encrypt the output - data using a System.Security.Cryptography.CryptoStream. - - - - - - Sets the quiet writer being used. - - the writer over the file stream that has been opened for writing - - - This method can be overridden by sub classes that want to - wrap the in some way. - - - - - - Convert a path into a fully qualified path. - - The path to convert. - The fully qualified path. - - - Converts the path specified to a fully - qualified path. If the path is relative it is - taken as relative from the application base - directory. - - - - - - Flag to indicate if we should append to the file - or overwrite the file. The default is to append. - - - - - The name of the log file. - - - - - The encoding to use for the file stream. - - - - - The security context to use for privileged calls - - - - - The stream to log to. Has added locking semantics - - - - - The locking model to use - - - - - Gets or sets the path to the file that logging will be written to. - - - The path to the file that logging will be written to. - - - - If the path is relative it is taken as relative from - the application base directory. - - - - - - Gets or sets a flag that indicates whether the file should be - appended to or overwritten. - - - Indicates whether the file should be appended to or overwritten. - - - - If the value is set to false then the file will be overwritten, if - it is set to true then the file will be appended to. - - The default value is true. - - - - - Gets or sets used to write to the file. - - - The used to write to the file. - - - - The default encoding set is - which is the encoding for the system's current ANSI code page. - - - - - - Gets or sets the used to write to the file. - - - The used to write to the file. - - - - Unless a specified here for this appender - the is queried for the - security context to use. The default behavior is to use the security context - of the current thread. - - - - - - Gets or sets the used to handle locking of the file. - - - The used to lock the file. - - - - Gets or sets the used to handle locking of the file. - - - There are two built in locking models, and . - The former locks the file from the start of logging to the end and the - later lock only for the minimal amount of time when logging each message. - - - The default locking model is the . - - - - - - Write only that uses the - to manage access to an underlying resource. - - - - - True asynchronous writes are not supported, the implementation forces a synchronous write. - - - - - Exception base type for log4net. - - - - This type extends . It - does not add any new functionality but does differentiate the - type of exception being thrown. - - - Nicko Cadell - Gert Driesen - - - - Constructor - - - - Initializes a new instance of the class. - - - - - - Constructor - - A message to include with the exception. - - - Initializes a new instance of the class with - the specified message. - - - - - - Constructor - - A message to include with the exception. - A nested exception to include. - - - Initializes a new instance of the class - with the specified message and inner exception. - - - - - - Serialization constructor - - The that holds the serialized object data about the exception being thrown. - The that contains contextual information about the source or destination. - - - Initializes a new instance of the class - with serialized data. - - - - - - Locking model base class - - - - Base class for the locking models available to the derived loggers. - - - - - - Open the output file - - The filename to use - Whether to append to the file, or overwrite - The encoding to use - - - Open the file specified and prepare for logging. - No writes will be made until is called. - Must be called before any calls to , - and . - - - - - - Close the file - - - - Close the file. No further writes will be made. - - - - - - Acquire the lock on the file - - A stream that is ready to be written to. - - - Acquire the lock on the file in preparation for writing to it. - Return a stream pointing to the file. - must be called to release the lock on the output file. - - - - - - Release the lock on the file - - - - Release the lock on the file. No further writes will be made to the - stream until is called again. - - - - - - Gets or sets the for this LockingModel - - - The for this LockingModel - - - - The file appender this locking model is attached to and working on - behalf of. - - - The file appender is used to locate the security context and the error handler to use. - - - The value of this property will be set before is - called. - - - - - - Hold an exclusive lock on the output file - - - - Open the file once for writing and hold it open until is called. - Maintains an exclusive lock on the file during this time. - - - - - - Open the file specified and prepare for logging. - - The filename to use - Whether to append to the file, or overwrite - The encoding to use - - - Open the file specified and prepare for logging. - No writes will be made until is called. - Must be called before any calls to , - and . - - - - - - Close the file - - - - Close the file. No further writes will be made. - - - - - - Acquire the lock on the file - - A stream that is ready to be written to. - - - Does nothing. The lock is already taken - - - - - - Release the lock on the file - - - - Does nothing. The lock will be released when the file is closed. - - - - - - Acquires the file lock for each write - - - - Opens the file once for each / cycle, - thus holding the lock for the minimal amount of time. This method of locking - is considerably slower than but allows - other processes to move/delete the log file whilst logging continues. - - - - - - Prepares to open the file when the first message is logged. - - The filename to use - Whether to append to the file, or overwrite - The encoding to use - - - Open the file specified and prepare for logging. - No writes will be made until is called. - Must be called before any calls to , - and . - - - - - - Close the file - - - - Close the file. No further writes will be made. - - - - - - Acquire the lock on the file - - A stream that is ready to be written to. - - - Acquire the lock on the file in preparation for writing to it. - Return a stream pointing to the file. - must be called to release the lock on the output file. - - - - - - Release the lock on the file - - - - Release the lock on the file. No further writes will be made to the - stream until is called again. - - - - - - This appender forwards logging events to attached appenders. - - - - The forwarding appender can be used to specify different thresholds - and filters for the same appender at different locations within the hierarchy. - - - Nicko Cadell - Gert Driesen - - - - Initializes a new instance of the class. - - - - Default constructor. - - - - - - Closes the appender and releases resources. - - - - Releases any resources allocated within the appender such as file handles, - network connections, etc. - - - It is a programming error to append to a closed appender. - - - - - - Forward the logging event to the attached appenders - - The event to log. - - - Delivers the logging event to all the attached appenders. - - - - - - Forward the logging events to the attached appenders - - The array of events to log. - - - Delivers the logging events to all the attached appenders. - - - - - - Adds an to the list of appenders of this - instance. - - The to add to this appender. - - - If the specified is already in the list of - appenders, then it won't be added again. - - - - - - Looks for the appender with the specified name. - - The name of the appender to lookup. - - The appender with the specified name, or null. - - - - Get the named appender attached to this appender. - - - - - - Removes all previously added appenders from this appender. - - - - This is useful when re-reading configuration information. - - - - - - Removes the specified appender from the list of appenders. - - The appender to remove. - The appender removed from the list - - The appender removed is not closed. - If you are discarding the appender you must call - on the appender removed. - - - - - Removes the appender with the specified name from the list of appenders. - - The name of the appender to remove. - The appender removed from the list - - The appender removed is not closed. - If you are discarding the appender you must call - on the appender removed. - - - - - Implementation of the interface - - - - - Gets the appenders contained in this appender as an - . - - - If no appenders can be found, then an - is returned. - - - A collection of the appenders in this appender. - - - - - Logs events to a local syslog service. - - - - This appender uses the POSIX libc library functions openlog, syslog, and closelog. - If these functions are not available on the local system then this appender will not work! - - - The functions openlog, syslog, and closelog are specified in SUSv2 and - POSIX 1003.1-2001 standards. These are used to log messages to the local syslog service. - - - This appender talks to a local syslog service. If you need to log to a remote syslog - daemon and you cannot configure your local syslog service to do this you may be - able to use the to log via UDP. - - - Syslog messages must have a facility and and a severity. The severity - is derived from the Level of the logging event. - The facility must be chosen from the set of defined syslog - values. The facilities list is predefined - and cannot be extended. - - - An identifier is specified with each log message. This can be specified - by setting the property. The identity (also know - as the tag) must not contain white space. The default value for the - identity is the application name (from ). - - - Rob Lyon - Nicko Cadell - - - - Initializes a new instance of the class. - - - This instance of the class is set up to write - to a local syslog service. - - - - - Add a mapping of level to severity - - The mapping to add - - - Adds a to this appender. - - - - - - Initialize the appender based on the options set. - - - - This is part of the delayed object - activation scheme. The method must - be called on this object after the configuration properties have - been set. Until is called this - object is in an undefined state and must not be used. - - - If any of the configuration properties are modified then - must be called again. - - - - - - This method is called by the method. - - The event to log. - - - Writes the event to a remote syslog daemon. - - - The format of the output will depend on the appender's layout. - - - - - - Close the syslog when the appender is closed - - - - Close the syslog when the appender is closed - - - - - - Translates a log4net level to a syslog severity. - - A log4net level. - A syslog severity. - - - Translates a log4net level to a syslog severity. - - - - - - Generate a syslog priority. - - The syslog facility. - The syslog severity. - A syslog priority. - - - - The facility. The default facility is . - - - - - The message identity - - - - - Marshaled handle to the identity string. We have to hold on to the - string as the openlog and syslog APIs just hold the - pointer to the ident and dereference it for each log message. - - - - - Mapping from level object to syslog severity - - - - - Open connection to system logger. - - - - - Generate a log message. - - - - The libc syslog method takes a format string and a variable argument list similar - to the classic printf function. As this type of vararg list is not supported - by C# we need to specify the arguments explicitly. Here we have specified the - format string with a single message argument. The caller must set the format - string to "%s". - - - - - - Close descriptor used to write to system logger. - - - - - Message identity - - - - An identifier is specified with each log message. This can be specified - by setting the property. The identity (also know - as the tag) must not contain white space. The default value for the - identity is the application name (from ). - - - - - - Syslog facility - - - Set to one of the values. The list of - facilities is predefined and cannot be extended. The default value - is . - - - - - This appender requires a to be set. - - true - - - This appender requires a to be set. - - - - - - syslog severities - - - - The log4net Level maps to a syslog severity using the - method and the - class. The severity is set on . - - - - - - system is unusable - - - - - action must be taken immediately - - - - - critical conditions - - - - - error conditions - - - - - warning conditions - - - - - normal but significant condition - - - - - informational - - - - - debug-level messages - - - - - syslog facilities - - - - The syslog facility defines which subsystem the logging comes from. - This is set on the property. - - - - - - kernel messages - - - - - random user-level messages - - - - - mail system - - - - - system daemons - - - - - security/authorization messages - - - - - messages generated internally by syslogd - - - - - line printer subsystem - - - - - network news subsystem - - - - - UUCP subsystem - - - - - clock (cron/at) daemon - - - - - security/authorization messages (private) - - - - - ftp daemon - - - - - NTP subsystem - - - - - log audit - - - - - log alert - - - - - clock daemon - - - - - reserved for local use - - - - - reserved for local use - - - - - reserved for local use - - - - - reserved for local use - - - - - reserved for local use - - - - - reserved for local use - - - - - reserved for local use - - - - - reserved for local use - - - - - A class to act as a mapping between the level that a logging call is made at and - the syslog severity that is should be logged at. - - - - A class to act as a mapping between the level that a logging call is made at and - the syslog severity that is should be logged at. - - - - - - The mapped syslog severity for the specified level - - - - Required property. - The mapped syslog severity for the specified level - - - - - - Stores logging events in an array. - - - - The memory appender stores all the logging events - that are appended in an in-memory array. - - - Use the method to get - the current list of events that have been appended. - - - Use the method to clear the - current list of events. - - - Julian Biddle - Nicko Cadell - Gert Driesen - - - - Initializes a new instance of the class. - - - - Default constructor. - - - - - - Gets the events that have been logged. - - The events that have been logged - - - Gets the events that have been logged. - - - - - - This method is called by the method. - - the event to log - - Stores the in the events list. - - - - - Clear the list of events - - - Clear the list of events - - - - - The list of events that have been appended. - - - - - Value indicating which fields in the event should be fixed - - - By default all fields are fixed - - - - - Gets or sets a value indicating whether only part of the logging event - data should be fixed. - - - true if the appender should only fix part of the logging event - data, otherwise false. The default is false. - - - - Setting this property to true will cause only part of the event - data to be fixed and stored in the appender, hereby improving performance. - - - See for more information. - - - - - - Gets or sets the fields that will be fixed in the event - - - - The logging event needs to have certain thread specific values - captured before it can be buffered. See - for details. - - - - - - Logs entries by sending network messages using the - native function. - - - - You can send messages only to names that are active - on the network. If you send the message to a user name, - that user must be logged on and running the Messenger - service to receive the message. - - - The receiver will get a top most window displaying the - messages one at a time, therefore this appender should - not be used to deliver a high volume of messages. - - - The following table lists some possible uses for this appender : - - - - - Action - Property Value(s) - - - Send a message to a user account on the local machine - - - = <name of the local machine> - - - = <user name> - - - - - Send a message to a user account on a remote machine - - - = <name of the remote machine> - - - = <user name> - - - - - Send a message to a domain user account - - - = <name of a domain controller | uninitialized> - - - = <user name> - - - - - Send a message to all the names in a workgroup or domain - - - = <workgroup name | domain name>* - - - - - Send a message from the local machine to a remote machine - - - = <name of the local machine | uninitialized> - - - = <name of the remote machine> - - - - - - - Note : security restrictions apply for sending - network messages, see - for more information. - - - - - An example configuration section to log information - using this appender from the local machine, named - LOCAL_PC, to machine OPERATOR_PC : - - - - - - - - - - Nicko Cadell - Gert Driesen - - - - The DNS or NetBIOS name of the server on which the function is to execute. - - - - - The sender of the network message. - - - - - The message alias to which the message should be sent. - - - - - The security context to use for privileged calls - - - - - Initializes the appender. - - - The default constructor initializes all fields to their default values. - - - - - Initialize the appender based on the options set. - - - - This is part of the delayed object - activation scheme. The method must - be called on this object after the configuration properties have - been set. Until is called this - object is in an undefined state and must not be used. - - - If any of the configuration properties are modified then - must be called again. - - - The appender will be ignored if no was specified. - - - The required property was not specified. - - - - This method is called by the method. - - The event to log. - - - Sends the event using a network message. - - - - - - Sends a buffer of information to a registered message alias. - - The DNS or NetBIOS name of the server on which the function is to execute. - The message alias to which the message buffer should be sent - The originator of the message. - The message text. - The length, in bytes, of the message text. - - - The following restrictions apply for sending network messages: - - - - - Platform - Requirements - - - Windows NT - - - No special group membership is required to send a network message. - - - Admin, Accounts, Print, or Server Operator group membership is required to - successfully send a network message on a remote server. - - - - - Windows 2000 or later - - - If you send a message on a domain controller that is running Active Directory, - access is allowed or denied based on the access control list (ACL) for the securable - object. The default ACL permits only Domain Admins and Account Operators to send a network message. - - - On a member server or workstation, only Administrators and Server Operators can send a network message. - - - - - - - For more information see Security Requirements for the Network Management Functions. - - - - - If the function succeeds, the return value is zero. - - - - - - Gets or sets the sender of the message. - - - The sender of the message. - - - If this property is not specified, the message is sent from the local computer. - - - - - Gets or sets the message alias to which the message should be sent. - - - The recipient of the message. - - - This property should always be specified in order to send a message. - - - - - Gets or sets the DNS or NetBIOS name of the remote server on which the function is to execute. - - - DNS or NetBIOS name of the remote server on which the function is to execute. - - - - For Windows NT 4.0 and earlier, the string should begin with \\. - - - If this property is not specified, the local computer is used. - - - - - - Gets or sets the used to call the NetSend method. - - - The used to call the NetSend method. - - - - Unless a specified here for this appender - the is queried for the - security context to use. The default behavior is to use the security context - of the current thread. - - - - - - This appender requires a to be set. - - true - - - This appender requires a to be set. - - - - - - Appends log events to the OutputDebugString system. - - - - OutputDebugStringAppender appends log events to the - OutputDebugString system. - - - The string is passed to the native OutputDebugString - function. - - - Nicko Cadell - Gert Driesen - - - - Initializes a new instance of the class. - - - - Default constructor. - - - - - - Write the logging event to the output debug string API - - the event to log - - - Write the logging event to the output debug string API - - - - - - Stub for OutputDebugString native method - - the string to output - - - Stub for OutputDebugString native method - - - - - - This appender requires a to be set. - - true - - - This appender requires a to be set. - - - - - - Logs events to a remote syslog daemon. - - - - The BSD syslog protocol is used to remotely log to - a syslog daemon. The syslogd listens for for messages - on UDP port 514. - - - The syslog UDP protocol is not authenticated. Most syslog daemons - do not accept remote log messages because of the security implications. - You may be able to use the LocalSyslogAppender to talk to a local - syslog service. - - - There is an RFC 3164 that claims to document the BSD Syslog Protocol. - This RFC can be seen here: http://www.faqs.org/rfcs/rfc3164.html. - This appender generates what the RFC calls an "Original Device Message", - i.e. does not include the TIMESTAMP or HOSTNAME fields. By observation - this format of message will be accepted by all current syslog daemon - implementations. The daemon will attach the current time and the source - hostname or IP address to any messages received. - - - Syslog messages must have a facility and and a severity. The severity - is derived from the Level of the logging event. - The facility must be chosen from the set of defined syslog - values. The facilities list is predefined - and cannot be extended. - - - An identifier is specified with each log message. This can be specified - by setting the property. The identity (also know - as the tag) must not contain white space. The default value for the - identity is the application name (from ). - - - Rob Lyon - Nicko Cadell - - - - Sends logging events as connectionless UDP datagrams to a remote host or a - multicast group using an . - - - - UDP guarantees neither that messages arrive, nor that they arrive in the correct order. - - - To view the logging results, a custom application can be developed that listens for logging - events. - - - When decoding events send via this appender remember to use the same encoding - to decode the events as was used to send the events. See the - property to specify the encoding to use. - - - - This example shows how to log receive logging events that are sent - on IP address 244.0.0.1 and port 8080 to the console. The event is - encoded in the packet as a unicode string and it is decoded as such. - - IPEndPoint remoteEndPoint = new IPEndPoint(IPAddress.Any, 0); - UdpClient udpClient; - byte[] buffer; - string loggingEvent; - - try - { - udpClient = new UdpClient(8080); - - while(true) - { - buffer = udpClient.Receive(ref remoteEndPoint); - loggingEvent = System.Text.Encoding.Unicode.GetString(buffer); - Console.WriteLine(loggingEvent); - } - } - catch(Exception e) - { - Console.WriteLine(e.ToString()); - } - - - Dim remoteEndPoint as IPEndPoint - Dim udpClient as UdpClient - Dim buffer as Byte() - Dim loggingEvent as String - - Try - remoteEndPoint = new IPEndPoint(IPAddress.Any, 0) - udpClient = new UdpClient(8080) - - While True - buffer = udpClient.Receive(ByRef remoteEndPoint) - loggingEvent = System.Text.Encoding.Unicode.GetString(buffer) - Console.WriteLine(loggingEvent) - Wend - Catch e As Exception - Console.WriteLine(e.ToString()) - End Try - - - An example configuration section to log information using this appender to the - IP 224.0.0.1 on port 8080: - - - - - - - - - - Gert Driesen - Nicko Cadell - - - - Initializes a new instance of the class. - - - The default constructor initializes all fields to their default values. - - - - - Initialize the appender based on the options set. - - - - This is part of the delayed object - activation scheme. The method must - be called on this object after the configuration properties have - been set. Until is called this - object is in an undefined state and must not be used. - - - If any of the configuration properties are modified then - must be called again. - - - The appender will be ignored if no was specified or - an invalid remote or local TCP port number was specified. - - - The required property was not specified. - The TCP port number assigned to or is less than or greater than . - - - - This method is called by the method. - - The event to log. - - - Sends the event using an UDP datagram. - - - Exceptions are passed to the . - - - - - - Closes the UDP connection and releases all resources associated with - this instance. - - - - Disables the underlying and releases all managed - and unmanaged resources associated with the . - - - - - - Initializes the underlying connection. - - - - The underlying is initialized and binds to the - port number from which you intend to communicate. - - - Exceptions are passed to the . - - - - - - The IP address of the remote host or multicast group to which - the logging event will be sent. - - - - - The TCP port number of the remote host or multicast group to - which the logging event will be sent. - - - - - The cached remote endpoint to which the logging events will be sent. - - - - - The TCP port number from which the will communicate. - - - - - The instance that will be used for sending the - logging events. - - - - - The encoding to use for the packet. - - - - - Gets or sets the IP address of the remote host or multicast group to which - the underlying should sent the logging event. - - - The IP address of the remote host or multicast group to which the logging event - will be sent. - - - - Multicast addresses are identified by IP class D addresses (in the range 224.0.0.0 to - 239.255.255.255). Multicast packets can pass across different networks through routers, so - it is possible to use multicasts in an Internet scenario as long as your network provider - supports multicasting. - - - Hosts that want to receive particular multicast messages must register their interest by joining - the multicast group. Multicast messages are not sent to networks where no host has joined - the multicast group. Class D IP addresses are used for multicast groups, to differentiate - them from normal host addresses, allowing nodes to easily detect if a message is of interest. - - - Static multicast addresses that are needed globally are assigned by IANA. A few examples are listed in the table below: - - - - - IP Address - Description - - - 224.0.0.1 - - - Sends a message to all system on the subnet. - - - - - 224.0.0.2 - - - Sends a message to all routers on the subnet. - - - - - 224.0.0.12 - - - The DHCP server answers messages on the IP address 224.0.0.12, but only on a subnet. - - - - - - - A complete list of actually reserved multicast addresses and their owners in the ranges - defined by RFC 3171 can be found at the IANA web site. - - - The address range 239.0.0.0 to 239.255.255.255 is reserved for administrative scope-relative - addresses. These addresses can be reused with other local groups. Routers are typically - configured with filters to prevent multicast traffic in this range from flowing outside - of the local network. - - - - - - Gets or sets the TCP port number of the remote host or multicast group to which - the underlying should sent the logging event. - - - An integer value in the range to - indicating the TCP port number of the remote host or multicast group to which the logging event - will be sent. - - - The underlying will send messages to this TCP port number - on the remote host or multicast group. - - The value specified is less than or greater than . - - - - Gets or sets the TCP port number from which the underlying will communicate. - - - An integer value in the range to - indicating the TCP port number from which the underlying will communicate. - - - - The underlying will bind to this port for sending messages. - - - Setting the value to 0 (the default) will cause the udp client not to bind to - a local port. - - - The value specified is less than or greater than . - - - - Gets or sets used to write the packets. - - - The used to write the packets. - - - - The used to write the packets. - - - - - - Gets or sets the underlying . - - - The underlying . - - - creates a to send logging events - over a network. Classes deriving from can use this - property to get or set this . Use the underlying - returned from if you require access beyond that which - provides. - - - - - Gets or sets the cached remote endpoint to which the logging events should be sent. - - - The cached remote endpoint to which the logging events will be sent. - - - The method will initialize the remote endpoint - with the values of the and - properties. - - - - - This appender requires a to be set. - - true - - - This appender requires a to be set. - - - - - - Syslog port 514 - - - - - Initializes a new instance of the class. - - - This instance of the class is set up to write - to a remote syslog daemon. - - - - - Add a mapping of level to severity - - The mapping to add - - - Add a mapping to this appender. - - - - - - This method is called by the method. - - The event to log. - - - Writes the event to a remote syslog daemon. - - - The format of the output will depend on the appender's layout. - - - - - - Initialize the options for this appender - - - - Initialize the level to syslog severity mappings set on this appender. - - - - - - Translates a log4net level to a syslog severity. - - A log4net level. - A syslog severity. - - - Translates a log4net level to a syslog severity. - - - - - - Generate a syslog priority. - - The syslog facility. - The syslog severity. - A syslog priority. - - - Generate a syslog priority. - - - - - - The facility. The default facility is . - - - - - The message identity - - - - - Mapping from level object to syslog severity - - - - - Message identity - - - - An identifier is specified with each log message. This can be specified - by setting the property. The identity (also know - as the tag) must not contain white space. The default value for the - identity is the application name (from ). - - - - - - Syslog facility - - - Set to one of the values. The list of - facilities is predefined and cannot be extended. The default value - is . - - - - - syslog severities - - - - The syslog severities. - - - - - - system is unusable - - - - - action must be taken immediately - - - - - critical conditions - - - - - error conditions - - - - - warning conditions - - - - - normal but significant condition - - - - - informational - - - - - debug-level messages - - - - - syslog facilities - - - - The syslog facilities - - - - - - kernel messages - - - - - random user-level messages - - - - - mail system - - - - - system daemons - - - - - security/authorization messages - - - - - messages generated internally by syslogd - - - - - line printer subsystem - - - - - network news subsystem - - - - - UUCP subsystem - - - - - clock (cron/at) daemon - - - - - security/authorization messages (private) - - - - - ftp daemon - - - - - NTP subsystem - - - - - log audit - - - - - log alert - - - - - clock daemon - - - - - reserved for local use - - - - - reserved for local use - - - - - reserved for local use - - - - - reserved for local use - - - - - reserved for local use - - - - - reserved for local use - - - - - reserved for local use - - - - - reserved for local use - - - - - A class to act as a mapping between the level that a logging call is made at and - the syslog severity that is should be logged at. - - - - A class to act as a mapping between the level that a logging call is made at and - the syslog severity that is should be logged at. - - - - - - The mapped syslog severity for the specified level - - - - Required property. - The mapped syslog severity for the specified level - - - - - - Delivers logging events to a remote logging sink. - - - - This Appender is designed to deliver events to a remote sink. - That is any object that implements the - interface. It delivers the events using .NET remoting. The - object to deliver events to is specified by setting the - appenders property. - - The RemotingAppender buffers events before sending them. This allows it to - make more efficient use of the remoting infrastructure. - - Once the buffer is full the events are still not sent immediately. - They are scheduled to be sent using a pool thread. The effect is that - the send occurs asynchronously. This is very important for a - number of non obvious reasons. The remoting infrastructure will - flow thread local variables (stored in the ), - if they are marked as , across the - remoting boundary. If the server is not contactable then - the remoting infrastructure will clear the - objects from the . To prevent a logging failure from - having side effects on the calling application the remoting call must be made - from a separate thread to the one used by the application. A - thread is used for this. If no thread is available then - the events will block in the thread pool manager until a thread is available. - - Because the events are sent asynchronously using pool threads it is possible to close - this appender before all the queued events have been sent. - When closing the appender attempts to wait until all the queued events have been sent, but - this will timeout after 30 seconds regardless. - - If this appender is being closed because the - event has fired it may not be possible to send all the queued events. During process - exit the runtime limits the time that a - event handler is allowed to run for. If the runtime terminates the threads before - the queued events have been sent then they will be lost. To ensure that all events - are sent the appender must be closed before the application exits. See - for details on how to shutdown - log4net programmatically. - - - Nicko Cadell - Gert Driesen - Daniel Cazzulino - - - - Initializes a new instance of the class. - - - - Default constructor. - - - - - - Initialize the appender based on the options set - - - - This is part of the delayed object - activation scheme. The method must - be called on this object after the configuration properties have - been set. Until is called this - object is in an undefined state and must not be used. - - - If any of the configuration properties are modified then - must be called again. - - - - - - Send the contents of the buffer to the remote sink. - - - The events are not sent immediately. They are scheduled to be sent - using a pool thread. The effect is that the send occurs asynchronously. - This is very important for a number of non obvious reasons. The remoting - infrastructure will flow thread local variables (stored in the ), - if they are marked as , across the - remoting boundary. If the server is not contactable then - the remoting infrastructure will clear the - objects from the . To prevent a logging failure from - having side effects on the calling application the remoting call must be made - from a separate thread to the one used by the application. A - thread is used for this. If no thread is available then - the events will block in the thread pool manager until a thread is available. - - The events to send. - - - - Override base class close. - - - - This method waits while there are queued work items. The events are - sent asynchronously using work items. These items - will be sent once a thread pool thread is available to send them, therefore - it is possible to close the appender before all the queued events have been - sent. - - This method attempts to wait until all the queued events have been sent, but this - method will timeout after 30 seconds regardless. - - If the appender is being closed because the - event has fired it may not be possible to send all the queued events. During process - exit the runtime limits the time that a - event handler is allowed to run for. - - - - - A work item is being queued into the thread pool - - - - - A work item from the thread pool has completed - - - - - Send the contents of the buffer to the remote sink. - - - This method is designed to be used with the . - This method expects to be passed an array of - objects in the state param. - - the logging events to send - - - - The URL of the remote sink. - - - - - The local proxy (.NET remoting) for the remote logging sink. - - - - - The number of queued callbacks currently waiting or executing - - - - - Event used to signal when there are no queued work items - - - This event is set when there are no queued work items. In this - state it is safe to close the appender. - - - - - Gets or sets the URL of the well-known object that will accept - the logging events. - - - The well-known URL of the remote sink. - - - - The URL of the remoting sink that will accept logging events. - The sink must implement the - interface. - - - - - - Interface used to deliver objects to a remote sink. - - - This interface must be implemented by a remoting sink - if the is to be used - to deliver logging events to the sink. - - - - - Delivers logging events to the remote sink - - Array of events to log. - - - Delivers logging events to the remote sink - - - - - - Appender that rolls log files based on size or date or both. - - - - RollingFileAppender can roll log files based on size or date or both - depending on the setting of the property. - When set to the log file will be rolled - once its size exceeds the . - When set to the log file will be rolled - once the date boundary specified in the property - is crossed. - When set to the log file will be - rolled once the date boundary specified in the property - is crossed, but within a date boundary the file will also be rolled - once its size exceeds the . - When set to the log file will be rolled when - the appender is configured. This effectively means that the log file can be - rolled once per program execution. - - - A of few additional optional features have been added: - - Attach date pattern for current log file - Backup number increments for newer files - Infinite number of backups by file size - - - - - - For large or infinite numbers of backup files a - greater than zero is highly recommended, otherwise all the backup files need - to be renamed each time a new backup is created. - - - When Date/Time based rolling is used setting - to will reduce the number of file renamings to few or none. - - - - - - Changing or without clearing - the log file directory of backup files will cause unexpected and unwanted side effects. - - - - - If Date/Time based rolling is enabled this appender will attempt to roll existing files - in the directory without a Date/Time tag based on the last write date of the base log file. - The appender only rolls the log file when a message is logged. If Date/Time based rolling - is enabled then the appender will not roll the log file at the Date/Time boundary but - at the point when the next message is logged after the boundary has been crossed. - - - - The extends the and - has the same behavior when opening the log file. - The appender will first try to open the file for writing when - is called. This will typically be during configuration. - If the file cannot be opened for writing the appender will attempt - to open the file again each time a message is logged to the appender. - If the file cannot be opened for writing when a message is logged then - the message will be discarded by this appender. - - - When rolling a backup file necessitates deleting an older backup file the - file to be deleted is moved to a temporary name before being deleted. - - - - - A maximum number of backup files when rolling on date/time boundaries is not supported. - - - - Nicko Cadell - Gert Driesen - Aspi Havewala - Douglas de la Torre - Edward Smit - - - - Initializes a new instance of the class. - - - - Default constructor. - - - - - - Sets the quiet writer being used. - - - This method can be overridden by sub classes. - - the writer to set - - - - Write out a logging event. - - the event to write to file. - - - Handles append time behavior for RollingFileAppender. This checks - if a roll over either by date (checked first) or time (checked second) - is need and then appends to the file last. - - - - - - Write out an array of logging events. - - the events to write to file. - - - Handles append time behavior for RollingFileAppender. This checks - if a roll over either by date (checked first) or time (checked second) - is need and then appends to the file last. - - - - - - Performs any required rolling before outputting the next event - - - - Handles append time behavior for RollingFileAppender. This checks - if a roll over either by date (checked first) or time (checked second) - is need and then appends to the file last. - - - - - - Creates and opens the file for logging. If - is false then the fully qualified name is determined and used. - - the name of the file to open - true to append to existing file - - This method will ensure that the directory structure - for the specified exists. - - - - - Get the current output file name - - the base file name - the output file name - - The output file name is based on the base fileName specified. - If is set then the output - file name is the same as the base file passed in. Otherwise - the output file depends on the date pattern, on the count - direction or both. - - - - - Determines curSizeRollBackups (only within the current roll point) - - - - - Generates a wildcard pattern that can be used to find all files - that are similar to the base file name. - - - - - - - Builds a list of filenames for all files matching the base filename plus a file - pattern. - - - - - - - Initiates a roll over if needed for crossing a date boundary since the last run. - - - - - Initializes based on existing conditions at time of . - - - - Initializes based on existing conditions at time of . - The following is done - - determine curSizeRollBackups (only within the current roll point) - initiates a roll over if needed for crossing a date boundary since the last run. - - - - - - - Does the work of bumping the 'current' file counter higher - to the highest count when an incremental file name is seen. - The highest count is either the first file (when count direction - is greater than 0) or the last file (when count direction less than 0). - In either case, we want to know the highest count that is present. - - - - - - - Takes a list of files and a base file name, and looks for - 'incremented' versions of the base file. Bumps the max - count up to the highest count seen. - - - - - - - Calculates the RollPoint for the datePattern supplied. - - the date pattern to calculate the check period for - The RollPoint that is most accurate for the date pattern supplied - - Essentially the date pattern is examined to determine what the - most suitable roll point is. The roll point chosen is the roll point - with the smallest period that can be detected using the date pattern - supplied. i.e. if the date pattern only outputs the year, month, day - and hour then the smallest roll point that can be detected would be - and hourly roll point as minutes could not be detected. - - - - - Initialize the appender based on the options set - - - - This is part of the delayed object - activation scheme. The method must - be called on this object after the configuration properties have - been set. Until is called this - object is in an undefined state and must not be used. - - - If any of the configuration properties are modified then - must be called again. - - - Sets initial conditions including date/time roll over information, first check, - scheduledFilename, and calls to initialize - the current number of backups. - - - - - - Rollover the file(s) to date/time tagged file(s). - - set to true if the file to be rolled is currently open - - - Rollover the file(s) to date/time tagged file(s). - Resets curSizeRollBackups. - If fileIsOpen is set then the new file is opened (through SafeOpenFile). - - - - - - Renames file to file . - - Name of existing file to roll. - New name for file. - - - Renames file to file . It - also checks for existence of target file and deletes if it does. - - - - - - Test if a file exists at a specified path - - the path to the file - true if the file exists - - - Test if a file exists at a specified path - - - - - - Deletes the specified file if it exists. - - The file to delete. - - - Delete a file if is exists. - The file is first moved to a new filename then deleted. - This allows the file to be removed even when it cannot - be deleted, but it still can be moved. - - - - - - Implements file roll base on file size. - - - - If the maximum number of size based backups is reached - (curSizeRollBackups == maxSizeRollBackups) then the oldest - file is deleted -- its index determined by the sign of countDirection. - If countDirection < 0, then files - {File.1, ..., File.curSizeRollBackups -1} - are renamed to {File.2, ..., - File.curSizeRollBackups}. Moreover, File is - renamed File.1 and closed. - - - A new file is created to receive further log output. - - - If maxSizeRollBackups is equal to zero, then the - File is truncated with no backup files created. - - - If maxSizeRollBackups < 0, then File is - renamed if needed and no files are deleted. - - - - - - Implements file roll. - - the base name to rename - - - If the maximum number of size based backups is reached - (curSizeRollBackups == maxSizeRollBackups) then the oldest - file is deleted -- its index determined by the sign of countDirection. - If countDirection < 0, then files - {File.1, ..., File.curSizeRollBackups -1} - are renamed to {File.2, ..., - File.curSizeRollBackups}. - - - If maxSizeRollBackups is equal to zero, then the - File is truncated with no backup files created. - - - If maxSizeRollBackups < 0, then File is - renamed if needed and no files are deleted. - - - This is called by to rename the files. - - - - - - Get the start time of the next window for the current rollpoint - - the current date - the type of roll point we are working with - the start time for the next roll point an interval after the currentDateTime date - - - Returns the date of the next roll point after the currentDateTime date passed to the method. - - - The basic strategy is to subtract the time parts that are less significant - than the rollpoint from the current time. This should roll the time back to - the start of the time window for the current rollpoint. Then we add 1 window - worth of time and get the start time of the next window for the rollpoint. - - - - - - This object supplies the current date/time. Allows test code to plug in - a method to control this class when testing date/time based rolling. - - - - - The date pattern. By default, the pattern is set to ".yyyy-MM-dd" - meaning daily rollover. - - - - - The actual formatted filename that is currently being written to - or will be the file transferred to on roll over - (based on staticLogFileName). - - - - - The timestamp when we shall next recompute the filename. - - - - - Holds date of last roll over - - - - - The type of rolling done - - - - - The default maximum file size is 10MB - - - - - There is zero backup files by default - - - - - How many sized based backups have been made so far - - - - - The rolling file count direction. - - - - - The rolling mode used in this appender. - - - - - Cache flag set if we are rolling by date. - - - - - Cache flag set if we are rolling by size. - - - - - Value indicating whether to always log to the same file. - - - - - FileName provided in configuration. Used for rolling properly - - - - - The 1st of January 1970 in UTC - - - - - Gets or sets the date pattern to be used for generating file names - when rolling over on date. - - - The date pattern to be used for generating file names when rolling - over on date. - - - - Takes a string in the same format as expected by - . - - - This property determines the rollover schedule when rolling over - on date. - - - - - - Gets or sets the maximum number of backup files that are kept before - the oldest is erased. - - - The maximum number of backup files that are kept before the oldest is - erased. - - - - If set to zero, then there will be no backup files and the log file - will be truncated when it reaches . - - - If a negative number is supplied then no deletions will be made. Note - that this could result in very slow performance as a large number of - files are rolled over unless is used. - - - The maximum applies to each time based group of files and - not the total. - - - - - - Gets or sets the maximum size that the output file is allowed to reach - before being rolled over to backup files. - - - The maximum size in bytes that the output file is allowed to reach before being - rolled over to backup files. - - - - This property is equivalent to except - that it is required for differentiating the setter taking a - argument from the setter taking a - argument. - - - The default maximum file size is 10MB (10*1024*1024). - - - - - - Gets or sets the maximum size that the output file is allowed to reach - before being rolled over to backup files. - - - The maximum size that the output file is allowed to reach before being - rolled over to backup files. - - - - This property allows you to specify the maximum size with the - suffixes "KB", "MB" or "GB" so that the size is interpreted being - expressed respectively in kilobytes, megabytes or gigabytes. - - - For example, the value "10KB" will be interpreted as 10240 bytes. - - - The default maximum file size is 10MB. - - - If you have the option to set the maximum file size programmatically - consider using the property instead as this - allows you to set the size in bytes as a . - - - - - - Gets or sets the rolling file count direction. - - - The rolling file count direction. - - - - Indicates if the current file is the lowest numbered file or the - highest numbered file. - - - By default newer files have lower numbers ( < 0), - i.e. log.1 is most recent, log.5 is the 5th backup, etc... - - - >= 0 does the opposite i.e. - log.1 is the first backup made, log.5 is the 5th backup made, etc. - For infinite backups use >= 0 to reduce - rollover costs. - - The default file count direction is -1. - - - - - Gets or sets the rolling style. - - The rolling style. - - - The default rolling style is . - - - When set to this appender's - property is set to false, otherwise - the appender would append to a single file rather than rolling - the file each time it is opened. - - - - - - Gets or sets a value indicating whether to always log to - the same file. - - - true if always should be logged to the same file, otherwise false. - - - - By default file.log is always the current file. Optionally - file.log.yyyy-mm-dd for current formatted datePattern can by the currently - logging file (or file.log.curSizeRollBackup or even - file.log.yyyy-mm-dd.curSizeRollBackup). - - - This will make time based rollovers with a large number of backups - much faster as the appender it won't have to rename all the backups! - - - - - - Style of rolling to use - - - - Style of rolling to use - - - - - - Roll files once per program execution - - - - Roll files once per program execution. - Well really once each time this appender is - configured. - - - Setting this option also sets AppendToFile to - false on the RollingFileAppender, otherwise - this appender would just be a normal file appender. - - - - - - Roll files based only on the size of the file - - - - - Roll files based only on the date - - - - - Roll files based on both the size and date of the file - - - - - The code assumes that the following 'time' constants are in a increasing sequence. - - - - The code assumes that the following 'time' constants are in a increasing sequence. - - - - - - Roll the log not based on the date - - - - - Roll the log for each minute - - - - - Roll the log for each hour - - - - - Roll the log twice a day (midday and midnight) - - - - - Roll the log each day (midnight) - - - - - Roll the log each week - - - - - Roll the log each month - - - - - This interface is used to supply Date/Time information to the . - - - This interface is used to supply Date/Time information to the . - Used primarily to allow test classes to plug themselves in so they can - supply test date/times. - - - - - Gets the current time. - - The current time. - - - Gets the current time. - - - - - - Default implementation of that returns the current time. - - - - - Gets the current time. - - The current time. - - - Gets the current time. - - - - - - Send an e-mail when a specific logging event occurs, typically on errors - or fatal errors. - - - - The number of logging events delivered in this e-mail depend on - the value of option. The - keeps only the last - logging events in its - cyclic buffer. This keeps memory requirements at a reasonable level while - still delivering useful application context. - - - Authentication and setting the server Port are only available on the MS .NET 1.1 runtime. - For these features to be enabled you need to ensure that you are using a version of - the log4net assembly that is built against the MS .NET 1.1 framework and that you are - running the your application on the MS .NET 1.1 runtime. On all other platforms only sending - unauthenticated messages to a server listening on port 25 (the default) is supported. - - - Authentication is supported by setting the property to - either or . - If using authentication then the - and properties must also be set. - - - To set the SMTP server port use the property. The default port is 25. - - - Nicko Cadell - Gert Driesen - - - - Default constructor - - - - Default constructor - - - - - - Sends the contents of the cyclic buffer as an e-mail message. - - The logging events to send. - - - - Send the email message - - the body text to include in the mail - - - - Gets or sets a semicolon-delimited list of recipient e-mail addresses. - - - A semicolon-delimited list of e-mail addresses. - - - - A semicolon-delimited list of recipient e-mail addresses. - - - - - - Gets or sets the e-mail address of the sender. - - - The e-mail address of the sender. - - - - The e-mail address of the sender. - - - - - - Gets or sets the subject line of the e-mail message. - - - The subject line of the e-mail message. - - - - The subject line of the e-mail message. - - - - - - Gets or sets the name of the SMTP relay mail server to use to send - the e-mail messages. - - - The name of the e-mail relay server. If SmtpServer is not set, the - name of the local SMTP server is used. - - - - The name of the e-mail relay server. If SmtpServer is not set, the - name of the local SMTP server is used. - - - - - - Obsolete - - - Use the BufferingAppenderSkeleton Fix methods instead - - - - Obsolete property. - - - - - - The mode to use to authentication with the SMTP server - - - Authentication is only available on the MS .NET 1.1 runtime. - - Valid Authentication mode values are: , - , and . - The default value is . When using - you must specify the - and to use to authenticate. - When using the Windows credentials for the current - thread, if impersonating, or the process will be used to authenticate. - - - - - - The username to use to authenticate with the SMTP server - - - Authentication is only available on the MS .NET 1.1 runtime. - - A and must be specified when - is set to , - otherwise the username will be ignored. - - - - - - The password to use to authenticate with the SMTP server - - - Authentication is only available on the MS .NET 1.1 runtime. - - A and must be specified when - is set to , - otherwise the password will be ignored. - - - - - - The port on which the SMTP server is listening - - - Server Port is only available on the MS .NET 1.1 runtime. - - The port on which the SMTP server is listening. The default - port is 25. The Port can only be changed when running on - the MS .NET 1.1 runtime. - - - - - - Gets or sets the priority of the e-mail message - - - One of the values. - - - - Sets the priority of the e-mails generated by this - appender. The default priority is . - - - If you are using this appender to report errors then - you may want to set the priority to . - - - - - - This appender requires a to be set. - - true - - - This appender requires a to be set. - - - - - - Values for the property. - - - - SMTP authentication modes. - - - - - - No authentication - - - - - Basic authentication. - - - Requires a username and password to be supplied - - - - - Integrated authentication - - - Uses the Windows credentials from the current thread or process to authenticate. - - - - - Send an email when a specific logging event occurs, typically on errors - or fatal errors. Rather than sending via smtp it writes a file into the - directory specified by . This allows services such - as the IIS SMTP agent to manage sending the messages. - - - - The configuration for this appender is identical to that of the SMTPAppender, - except that instead of specifying the SMTPAppender.SMTPHost you specify - . - - - The number of logging events delivered in this e-mail depend on - the value of option. The - keeps only the last - logging events in its - cyclic buffer. This keeps memory requirements at a reasonable level while - still delivering useful application context. - - - Niall Daley - Nicko Cadell - - - - Default constructor - - - - Default constructor - - - - - - Sends the contents of the cyclic buffer as an e-mail message. - - The logging events to send. - - - Sends the contents of the cyclic buffer as an e-mail message. - - - - - - Activate the options on this appender. - - - - This is part of the delayed object - activation scheme. The method must - be called on this object after the configuration properties have - been set. Until is called this - object is in an undefined state and must not be used. - - - If any of the configuration properties are modified then - must be called again. - - - - - - Convert a path into a fully qualified path. - - The path to convert. - The fully qualified path. - - - Converts the path specified to a fully - qualified path. If the path is relative it is - taken as relative from the application base - directory. - - - - - - The security context to use for privileged calls - - - - - Gets or sets a semicolon-delimited list of recipient e-mail addresses. - - - A semicolon-delimited list of e-mail addresses. - - - - A semicolon-delimited list of e-mail addresses. - - - - - - Gets or sets the e-mail address of the sender. - - - The e-mail address of the sender. - - - - The e-mail address of the sender. - - - - - - Gets or sets the subject line of the e-mail message. - - - The subject line of the e-mail message. - - - - The subject line of the e-mail message. - - - - - - Gets or sets the path to write the messages to. - - - - Gets or sets the path to write the messages to. This should be the same - as that used by the agent sending the messages. - - - - - - Gets or sets the used to write to the pickup directory. - - - The used to write to the pickup directory. - - - - Unless a specified here for this appender - the is queried for the - security context to use. The default behavior is to use the security context - of the current thread. - - - - - - This appender requires a to be set. - - true - - - This appender requires a to be set. - - - - - - Appender that allows clients to connect via Telnet to receive log messages - - - - The TelnetAppender accepts socket connections and streams logging messages - back to the client. - The output is provided in a telnet-friendly way so that a log can be monitored - over a TCP/IP socket. - This allows simple remote monitoring of application logging. - - - The default is 23 (the telnet port). - - - Keith Long - Nicko Cadell - - - - Default constructor - - - - Default constructor - - - - - - Overrides the parent method to close the socket handler - - - - Closes all the outstanding connections. - - - - - - Initialize the appender based on the options set. - - - - This is part of the delayed object - activation scheme. The method must - be called on this object after the configuration properties have - been set. Until is called this - object is in an undefined state and must not be used. - - - If any of the configuration properties are modified then - must be called again. - - - Create the socket handler and wait for connections - - - - - - Writes the logging event to each connected client. - - The event to log. - - - Writes the logging event to each connected client. - - - - - - Gets or sets the TCP port number on which this will listen for connections. - - - An integer value in the range to - indicating the TCP port number on which this will listen for connections. - - - - The default value is 23 (the telnet port). - - - The value specified is less than - or greater than . - - - - This appender requires a to be set. - - true - - - This appender requires a to be set. - - - - - - Helper class to manage connected clients - - - - The SocketHandler class is used to accept connections from - clients. It is threaded so that clients can connect/disconnect - asynchronously. - - - - - - Opens a new server port on - - the local port to listen on for connections - - - Creates a socket handler on the specified local server port. - - - - - - Sends a string message to each of the connected clients - - the text to send - - - Sends a string message to each of the connected clients - - - - - - Add a client to the internal clients list - - client to add - - - - Remove a client from the internal clients list - - client to remove - - - - Callback used to accept a connection on the server socket - - The result of the asynchronous operation - - - On connection adds to the list of connections - if there are two many open connections you will be disconnected - - - - - - Close all network connections - - - - Make sure we close all network connections - - - - - - Test if this handler has active connections - - - true if this handler has active connections - - - - This property will be true while this handler has - active connections, that is at least one connection that - the handler will attempt to send a message to. - - - - - - Class that represents a client connected to this handler - - - - Class that represents a client connected to this handler - - - - - - Create this for the specified - - the client's socket - - - Opens a stream writer on the socket. - - - - - - Write a string to the client - - string to send - - - Write a string to the client - - - - - - Cleanup the clients connection - - - - Close the socket connection. - - - - - - Appends log events to the system. - - - - The application configuration file can be used to control what listeners - are actually used. See the MSDN documentation for the - class for details on configuring the - trace system. - - - Events are written using the System.Diagnostics.Trace.Write(string,string) - method. The event's logger name is passed as the value for the category name to the Write method. - - - Compact Framework
- The Compact Framework does not support the - class for any operation except Assert. When using the Compact Framework this - appender will write to the system rather than - the Trace system. This appender will therefore behave like the . -
-
- Douglas de la Torre - Nicko Cadell - Gert Driesen -
- - - Initializes a new instance of the . - - - - Default constructor. - - - - - - Initializes a new instance of the - with a specified layout. - - The layout to use with this appender. - - - Obsolete constructor. - - - - - - Writes the logging event to the system. - - The event to log. - - - Writes the logging event to the system. - - - - - - Immediate flush means that the underlying writer or output stream - will be flushed at the end of each append operation. - - - - Immediate flush is slower but ensures that each append request is - actually written. If is set to - false, then there is a good chance that the last few - logs events are not actually written to persistent media if and - when the application crashes. - - - The default value is true. - - - - - Gets or sets a value that indicates whether the appender will - flush at the end of each write. - - - The default behavior is to flush at the end of each - write. If the option is set tofalse, then the underlying - stream can defer writing to physical medium to a later time. - - - Avoiding the flush operation at the end of each append results - in a performance gain of 10 to 20 percent. However, there is safety - trade-off involved in skipping flushing. Indeed, when flushing is - skipped, then it is likely that the last few log events will not - be recorded on disk when the application exits. This is a high - price to pay even for a 20% performance gain. - - - - - - This appender requires a to be set. - - true - - - This appender requires a to be set. - - - - - - Assembly level attribute that specifies a domain to alias to this assembly's repository. - - - - AliasDomainAttribute is obsolete. Use AliasRepositoryAttribute instead of AliasDomainAttribute. - - - An assembly's logger repository is defined by its , - however this can be overridden by an assembly loaded before the target assembly. - - - An assembly can alias another assembly's domain to its repository by - specifying this attribute with the name of the target domain. - - - This attribute can only be specified on the assembly and may be used - as many times as necessary to alias all the required domains. - - - Nicko Cadell - Gert Driesen - - - - Assembly level attribute that specifies a repository to alias to this assembly's repository. - - - - An assembly's logger repository is defined by its , - however this can be overridden by an assembly loaded before the target assembly. - - - An assembly can alias another assembly's repository to its repository by - specifying this attribute with the name of the target repository. - - - This attribute can only be specified on the assembly and may be used - as many times as necessary to alias all the required repositories. - - - Nicko Cadell - Gert Driesen - - - - Initializes a new instance of the class with - the specified repository to alias to this assembly's repository. - - The repository to alias to this assemby's repository. - - - Initializes a new instance of the class with - the specified repository to alias to this assembly's repository. - - - - - - Gets or sets the repository to alias to this assemby's repository. - - - The repository to alias to this assemby's repository. - - - - The name of the repository to alias to this assemby's repository. - - - - - - Initializes a new instance of the class with - the specified domain to alias to this assembly's repository. - - The domain to alias to this assemby's repository. - - - Obsolete. Use instead of . - - - - - - Use this class to quickly configure a . - - - - Allows very simple programmatic configuration of log4net. - - - Only one appender can be configured using this configurator. - The appender is set at the root of the hierarchy and all logging - events will be delivered to that appender. - - - Appenders can also implement the interface. Therefore - they would require that the method - be called after the appenders properties have been configured. - - - Nicko Cadell - Gert Driesen - - - - Initializes a new instance of the class. - - - - Uses a private access modifier to prevent instantiation of this class. - - - - - - Initializes the log4net system with a default configuration. - - - - Initializes the log4net logging system using a - that will write to Console.Out. The log messages are - formatted using the layout object - with the - layout style. - - - - - - Initializes the log4net system using the specified appender. - - The appender to use to log all logging events. - - - Initializes the log4net system using the specified appender. - - - - - - Initializes the with a default configuration. - - The repository to configure. - - - Initializes the specified repository using a - that will write to Console.Out. The log messages are - formatted using the layout object - with the - layout style. - - - - - - Initializes the using the specified appender. - - The repository to configure. - The appender to use to log all logging events. - - - Initializes the using the specified appender. - - - - - - Base class for all log4net configuration attributes. - - - This is an abstract class that must be extended by - specific configurators. This attribute allows the - configurator to be parameterized by an assembly level - attribute. - - Nicko Cadell - Gert Driesen - - - - Constructor used by subclasses. - - the ordering priority for this configurator - - - The is used to order the configurator - attributes before they are invoked. Higher priority configurators are executed - before lower priority ones. - - - - - - Configures the for the specified assembly. - - The assembly that this attribute was defined on. - The repository to configure. - - - Abstract method implemented by a subclass. When this method is called - the subclass should configure the . - - - - - - Compare this instance to another ConfiguratorAttribute - - the object to compare to - see - - - Compares the priorities of the two instances. - Sorts by priority in descending order. Objects with the same priority are - randomly ordered. - - - - - - Assembly level attribute that specifies the logging domain for the assembly. - - - - DomainAttribute is obsolete. Use RepositoryAttribute instead of DomainAttribute. - - - Assemblies are mapped to logging domains. Each domain has its own - logging repository. This attribute specified on the assembly controls - the configuration of the domain. The property specifies the name - of the domain that this assembly is a part of. The - specifies the type of the repository objects to create for the domain. If - this attribute is not specified and a is not specified - then the assembly will be part of the default shared logging domain. - - - This attribute can only be specified on the assembly and may only be used - once per assembly. - - - Nicko Cadell - Gert Driesen - - - - Assembly level attribute that specifies the logging repository for the assembly. - - - - Assemblies are mapped to logging repository. This attribute specified - on the assembly controls - the configuration of the repository. The property specifies the name - of the repository that this assembly is a part of. The - specifies the type of the object - to create for the assembly. If this attribute is not specified or a - is not specified then the assembly will be part of the default shared logging repository. - - - This attribute can only be specified on the assembly and may only be used - once per assembly. - - - Nicko Cadell - Gert Driesen - - - - Initializes a new instance of the class. - - - - Default constructor. - - - - - - Initialize a new instance of the class - with the name of the repository. - - The name of the repository. - - - Initialize the attribute with the name for the assembly's repository. - - - - - - Gets or sets the name of the logging repository. - - - The string name to use as the name of the repository associated with this - assembly. - - - - This value does not have to be unique. Several assemblies can share the - same repository. They will share the logging configuration of the repository. - - - - - - Gets or sets the type of repository to create for this assembly. - - - The type of repository to create for this assembly. - - - - The type of the repository to create for the assembly. - The type must implement the - interface. - - - This will be the type of repository created when - the repository is created. If multiple assemblies reference the - same repository then the repository is only created once using the - of the first assembly to call into the - repository. - - - - - - Initializes a new instance of the class. - - - - Obsolete. Use RepositoryAttribute instead of DomainAttribute. - - - - - - Initialize a new instance of the class - with the name of the domain. - - The name of the domain. - - - Obsolete. Use RepositoryAttribute instead of DomainAttribute. - - - - - - Use this class to initialize the log4net environment using an Xml tree. - - - - DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator. - - - Configures a using an Xml tree. - - - Nicko Cadell - Gert Driesen - - - - Private constructor - - - - - Automatically configures the log4net system based on the - application's configuration settings. - - - - DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator. - - Each application has a configuration file. This has the - same name as the application with '.config' appended. - This file is XML and calling this function prompts the - configurator to look in that file for a section called - log4net that contains the configuration data. - - - - - Automatically configures the using settings - stored in the application's configuration file. - - - - DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator. - - Each application has a configuration file. This has the - same name as the application with '.config' appended. - This file is XML and calling this function prompts the - configurator to look in that file for a section called - log4net that contains the configuration data. - - The repository to configure. - - - - Configures log4net using a log4net element - - - - DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator. - - Loads the log4net configuration from the XML element - supplied as . - - The element to parse. - - - - Configures the using the specified XML - element. - - - - DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator. - - Loads the log4net configuration from the XML element - supplied as . - - The repository to configure. - The element to parse. - - - - Configures log4net using the specified configuration file. - - The XML file to load the configuration from. - - - DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator. - - - The configuration file must be valid XML. It must contain - at least one element called log4net that holds - the log4net configuration data. - - - The log4net configuration file can possible be specified in the application's - configuration file (either MyAppName.exe.config for a - normal application on Web.config for an ASP.NET application). - - - The following example configures log4net using a configuration file, of which the - location is stored in the application's configuration file : - - - using log4net.Config; - using System.IO; - using System.Configuration; - - ... - - DOMConfigurator.Configure(new FileInfo(ConfigurationSettings.AppSettings["log4net-config-file"])); - - - In the .config file, the path to the log4net can be specified like this : - - - - - - - - - - - - - Configures log4net using the specified configuration file. - - A stream to load the XML configuration from. - - - DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator. - - - The configuration data must be valid XML. It must contain - at least one element called log4net that holds - the log4net configuration data. - - - Note that this method will NOT close the stream parameter. - - - - - - Configures the using the specified configuration - file. - - The repository to configure. - The XML file to load the configuration from. - - - DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator. - - - The configuration file must be valid XML. It must contain - at least one element called log4net that holds - the configuration data. - - - The log4net configuration file can possible be specified in the application's - configuration file (either MyAppName.exe.config for a - normal application on Web.config for an ASP.NET application). - - - The following example configures log4net using a configuration file, of which the - location is stored in the application's configuration file : - - - using log4net.Config; - using System.IO; - using System.Configuration; - - ... - - DOMConfigurator.Configure(new FileInfo(ConfigurationSettings.AppSettings["log4net-config-file"])); - - - In the .config file, the path to the log4net can be specified like this : - - - - - - - - - - - - - Configures the using the specified configuration - file. - - The repository to configure. - The stream to load the XML configuration from. - - - DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator. - - - The configuration data must be valid XML. It must contain - at least one element called log4net that holds - the configuration data. - - - Note that this method will NOT close the stream parameter. - - - - - - Configures log4net using the file specified, monitors the file for changes - and reloads the configuration if a change is detected. - - The XML file to load the configuration from. - - - DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator. - - - The configuration file must be valid XML. It must contain - at least one element called log4net that holds - the configuration data. - - - The configuration file will be monitored using a - and depends on the behavior of that class. - - - For more information on how to configure log4net using - a separate configuration file, see . - - - - - - - Configures the using the file specified, - monitors the file for changes and reloads the configuration if a change - is detected. - - The repository to configure. - The XML file to load the configuration from. - - - DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator. - - - The configuration file must be valid XML. It must contain - at least one element called log4net that holds - the configuration data. - - - The configuration file will be monitored using a - and depends on the behavior of that class. - - - For more information on how to configure log4net using - a separate configuration file, see . - - - - - - - Assembly level attribute to configure the . - - - - AliasDomainAttribute is obsolete. Use AliasRepositoryAttribute instead of AliasDomainAttribute. - - - This attribute may only be used at the assembly scope and can only - be used once per assembly. - - - Use this attribute to configure the - without calling one of the - methods. - - - Nicko Cadell - Gert Driesen - - - - Assembly level attribute to configure the . - - - - This attribute may only be used at the assembly scope and can only - be used once per assembly. - - - Use this attribute to configure the - without calling one of the - methods. - - - If neither of the or - properties are set the configuration is loaded from the application's .config file. - If set the property takes priority over the - property. The property - specifies a path to a file to load the config from. The path is relative to the - application's base directory; . - The property is used as a postfix to the assembly file name. - The config file must be located in the application's base directory; . - For example in a console application setting the to - config has the same effect as not specifying the or - properties. - - - The property can be set to cause the - to watch the configuration file for changes. - - - - Log4net will only look for assembly level configuration attributes once. - When using the log4net assembly level attributes to control the configuration - of log4net you must ensure that the first call to any of the - methods is made from the assembly with the configuration - attributes. - - - If you cannot guarantee the order in which log4net calls will be made from - different assemblies you must use programmatic configuration instead, i.e. - call the method directly. - - - - Nicko Cadell - Gert Driesen - - - - Default constructor - - - - Default constructor - - - - - - Configures the for the specified assembly. - - The assembly that this attribute was defined on. - The repository to configure. - - - Configure the repository using the . - The specified must extend the - class otherwise the will not be able to - configure it. - - - The does not extend . - - - - Attempt to load configuration from the local file system - - The assembly that this attribute was defined on. - The repository to configure. - - - - Configure the specified repository using a - - The repository to configure. - the FileInfo pointing to the config file - - - - Attempt to load configuration from a URI - - The assembly that this attribute was defined on. - The repository to configure. - - - - Gets or sets the filename of the configuration file. - - - The filename of the configuration file. - - - - If specified, this is the name of the configuration file to use with - the . This file path is relative to the - application base directory (). - - - The takes priority over the . - - - - - - Gets or sets the extension of the configuration file. - - - The extension of the configuration file. - - - - If specified this is the extension for the configuration file. - The path to the config file is built by using the application - base directory (), - the assembly file name and the config file extension. - - - If the is set to MyExt then - possible config file names would be: MyConsoleApp.exe.MyExt or - MyClassLibrary.dll.MyExt. - - - The takes priority over the . - - - - - - Gets or sets a value indicating whether to watch the configuration file. - - - true if the configuration should be watched, false otherwise. - - - - If this flag is specified and set to true then the framework - will watch the configuration file and will reload the config each time - the file is modified. - - - The config file can only be watched if it is loaded from local disk. - In a No-Touch (Smart Client) deployment where the application is downloaded - from a web server the config file may not reside on the local disk - and therefore it may not be able to watch it. - - - Watching configuration is not supported on the SSCLI. - - - - - - Class to register for the log4net section of the configuration file - - - The log4net section of the configuration file needs to have a section - handler registered. This is the section handler used. It simply returns - the XML element that is the root of the section. - - - Example of registering the log4net section handler : - - - -
- - - log4net configuration XML goes here - - - - - Nicko Cadell - Gert Driesen - - - - Initializes a new instance of the class. - - - - Default constructor. - - - - - - Parses the configuration section. - - The configuration settings in a corresponding parent configuration section. - The configuration context when called from the ASP.NET configuration system. Otherwise, this parameter is reserved and is a null reference. - The for the log4net section. - The for the log4net section. - - - Returns the containing the configuration data, - - - - - - Assembly level attribute that specifies a plugin to attach to - the repository. - - - - Specifies the type of a plugin to create and attach to the - assembly's repository. The plugin type must implement the - interface. - - - Nicko Cadell - Gert Driesen - - - - Interface used to create plugins. - - - - Interface used to create a plugin. - - - Nicko Cadell - Gert Driesen - - - - Creates the plugin object. - - the new plugin instance - - - Create and return a new plugin instance. - - - - - - Initializes a new instance of the class - with the specified type. - - The type name of plugin to create. - - - Create the attribute with the plugin type specified. - - - Where possible use the constructor that takes a . - - - - - - Initializes a new instance of the class - with the specified type. - - The type of plugin to create. - - - Create the attribute with the plugin type specified. - - - - - - Creates the plugin object defined by this attribute. - - - - Creates the instance of the object as - specified by this attribute. - - - The plugin object. - - - - Returns a representation of the properties of this object. - - - - Overrides base class method to - return a representation of the properties of this object. - - - A representation of the properties of this object - - - - Gets or sets the type for the plugin. - - - The type for the plugin. - - - - The type for the plugin. - - - - - - Gets or sets the type name for the plugin. - - - The type name for the plugin. - - - - The type name for the plugin. - - - Where possible use the property instead. - - - - - - Assembly level attribute to configure the . - - - - This attribute may only be used at the assembly scope and can only - be used once per assembly. - - - Use this attribute to configure the - without calling one of the - methods. - - - Nicko Cadell - - - - Construct provider attribute with type specified - - the type of the provider to use - - - The provider specified must subclass the - class. - - - - - - Configures the SecurityContextProvider - - The assembly that this attribute was defined on. - The repository to configure. - - - Creates a provider instance from the specified. - Sets this as the default security context provider . - - - - - - Gets or sets the type of the provider to use. - - - the type of the provider to use. - - - - The provider specified must subclass the - class. - - - - - - Use this class to initialize the log4net environment using an Xml tree. - - - - Configures a using an Xml tree. - - - Nicko Cadell - Gert Driesen - - - - Private constructor - - - - - Automatically configures the log4net system based on the - application's configuration settings. - - - - Each application has a configuration file. This has the - same name as the application with '.config' appended. - This file is XML and calling this function prompts the - configurator to look in that file for a section called - log4net that contains the configuration data. - - - To use this method to configure log4net you must specify - the section - handler for the log4net configuration section. See the - for an example. - - - - - - - Automatically configures the using settings - stored in the application's configuration file. - - - - Each application has a configuration file. This has the - same name as the application with '.config' appended. - This file is XML and calling this function prompts the - configurator to look in that file for a section called - log4net that contains the configuration data. - - - To use this method to configure log4net you must specify - the section - handler for the log4net configuration section. See the - for an example. - - - The repository to configure. - - - - Configures log4net using a log4net element - - - - Loads the log4net configuration from the XML element - supplied as . - - - The element to parse. - - - - Configures the using the specified XML - element. - - - Loads the log4net configuration from the XML element - supplied as . - - The repository to configure. - The element to parse. - - - - Configures log4net using the specified configuration file. - - The XML file to load the configuration from. - - - The configuration file must be valid XML. It must contain - at least one element called log4net that holds - the log4net configuration data. - - - The log4net configuration file can possible be specified in the application's - configuration file (either MyAppName.exe.config for a - normal application on Web.config for an ASP.NET application). - - - The first element matching <configuration> will be read as the - configuration. If this file is also a .NET .config file then you must specify - a configuration section for the log4net element otherwise .NET will - complain. Set the type for the section handler to , for example: - - -
- - - - - The following example configures log4net using a configuration file, of which the - location is stored in the application's configuration file : - - - using log4net.Config; - using System.IO; - using System.Configuration; - - ... - - XmlConfigurator.Configure(new FileInfo(ConfigurationSettings.AppSettings["log4net-config-file"])); - - - In the .config file, the path to the log4net can be specified like this : - - - - - - - - - - - - - Configures log4net using the specified configuration URI. - - A URI to load the XML configuration from. - - - The configuration data must be valid XML. It must contain - at least one element called log4net that holds - the log4net configuration data. - - - The must support the URI scheme specified. - - - - - - Configures log4net using the specified configuration data stream. - - A stream to load the XML configuration from. - - - The configuration data must be valid XML. It must contain - at least one element called log4net that holds - the log4net configuration data. - - - Note that this method will NOT close the stream parameter. - - - - - - Configures the using the specified configuration - file. - - The repository to configure. - The XML file to load the configuration from. - - - The configuration file must be valid XML. It must contain - at least one element called log4net that holds - the configuration data. - - - The log4net configuration file can possible be specified in the application's - configuration file (either MyAppName.exe.config for a - normal application on Web.config for an ASP.NET application). - - - The first element matching <configuration> will be read as the - configuration. If this file is also a .NET .config file then you must specify - a configuration section for the log4net element otherwise .NET will - complain. Set the type for the section handler to , for example: - - -
- - - - - The following example configures log4net using a configuration file, of which the - location is stored in the application's configuration file : - - - using log4net.Config; - using System.IO; - using System.Configuration; - - ... - - XmlConfigurator.Configure(new FileInfo(ConfigurationSettings.AppSettings["log4net-config-file"])); - - - In the .config file, the path to the log4net can be specified like this : - - - - - - - - - - - - - Configures the using the specified configuration - URI. - - The repository to configure. - A URI to load the XML configuration from. - - - The configuration data must be valid XML. It must contain - at least one element called log4net that holds - the configuration data. - - - The must support the URI scheme specified. - - - - - - Configures the using the specified configuration - file. - - The repository to configure. - The stream to load the XML configuration from. - - - The configuration data must be valid XML. It must contain - at least one element called log4net that holds - the configuration data. - - - Note that this method will NOT close the stream parameter. - - - - - - Configures log4net using the file specified, monitors the file for changes - and reloads the configuration if a change is detected. - - The XML file to load the configuration from. - - - The configuration file must be valid XML. It must contain - at least one element called log4net that holds - the configuration data. - - - The configuration file will be monitored using a - and depends on the behavior of that class. - - - For more information on how to configure log4net using - a separate configuration file, see . - - - - - - - Configures the using the file specified, - monitors the file for changes and reloads the configuration if a change - is detected. - - The repository to configure. - The XML file to load the configuration from. - - - The configuration file must be valid XML. It must contain - at least one element called log4net that holds - the configuration data. - - - The configuration file will be monitored using a - and depends on the behavior of that class. - - - For more information on how to configure log4net using - a separate configuration file, see . - - - - - - - Configures the specified repository using a log4net element. - - The hierarchy to configure. - The element to parse. - - - Loads the log4net configuration from the XML element - supplied as . - - - This method is ultimately called by one of the Configure methods - to load the configuration from an . - - - - - - Class used to watch config files. - - - - Uses the to monitor - changes to a specified file. Because multiple change notifications - may be raised when the file is modified, a timer is used to - compress the notifications into a single event. The timer - waits for time before delivering - the event notification. If any further - change notifications arrive while the timer is waiting it - is reset and waits again for to - elapse. - - - - - - The default amount of time to wait after receiving notification - before reloading the config file. - - - - - Watch a specified config file used to configure a repository - - The repository to configure. - The configuration file to watch. - - - Watch a specified config file used to configure a repository - - - - - - Holds the FileInfo used to configure the XmlConfigurator - - - - - Holds the repository being configured. - - - - - The timer used to compress the notification events. - - - - - Initializes a new instance of the class. - - The repository to configure. - The configuration file to watch. - - - Initializes a new instance of the class. - - - - - - Event handler used by . - - The firing the event. - The argument indicates the file that caused the event to be fired. - - - This handler reloads the configuration from the file when the event is fired. - - - - - - Event handler used by . - - The firing the event. - The argument indicates the file that caused the event to be fired. - - - This handler reloads the configuration from the file when the event is fired. - - - - - - Called by the timer when the configuration has been updated. - - null - - - - The implementation of the interface suitable - for use with the compact framework - - - - This implementation is a simple - mapping between repository name and - object. - - - The .NET Compact Framework 1.0 does not support retrieving assembly - level attributes therefore unlike the DefaultRepositorySelector - this selector does not examine the calling assembly for attributes. - - - Nicko Cadell - - - - Interface used by the to select the . - - - - The uses a - to specify the policy for selecting the correct - to return to the caller. - - - Nicko Cadell - Gert Driesen - - - - Gets the for the specified assembly. - - The assembly to use to lookup to the - The for the assembly. - - - Gets the for the specified assembly. - - - How the association between and - is made is not defined. The implementation may choose any method for - this association. The results of this method must be repeatable, i.e. - when called again with the same arguments the result must be the - save value. - - - - - - Gets the named . - - The name to use to lookup to the . - The named - - Lookup a named . This is the repository created by - calling . - - - - - Creates a new repository for the assembly specified. - - The assembly to use to create the domain to associate with the . - The type of repository to create, must implement . - The repository created. - - - The created will be associated with the domain - specified such that a call to with the - same assembly specified will return the same repository instance. - - - How the association between and - is made is not defined. The implementation may choose any method for - this association. - - - - - - Creates a new repository with the name specified. - - The name to associate with the . - The type of repository to create, must implement . - The repository created. - - - The created will be associated with the name - specified such that a call to with the - same name will return the same repository instance. - - - - - - Test if a named repository exists - - the named repository to check - true if the repository exists - - - Test if a named repository exists. Use - to create a new repository and to retrieve - a repository. - - - - - - Gets an array of all currently defined repositories. - - - An array of the instances created by - this . - - - Gets an array of all of the repositories created by this selector. - - - - - - Event to notify that a logger repository has been created. - - - Event to notify that a logger repository has been created. - - - - Event raised when a new repository is created. - The event source will be this selector. The event args will - be a which - holds the newly created . - - - - - - Create a new repository selector - - the type of the repositories to create, must implement - - - Create an new compact repository selector. - The default type for repositories must be specified, - an appropriate value would be . - - - throw if is null - throw if does not implement - - - - Get the for the specified assembly - - not used - The default - - - The argument is not used. This selector does not create a - separate repository for each assembly. - - - As a named repository is not specified the default repository is - returned. The default repository is named log4net-default-repository. - - - - - - Get the named - - the name of the repository to lookup - The named - - - Get the named . The default - repository is log4net-default-repository. Other repositories - must be created using the . - If the named repository does not exist an exception is thrown. - - - throw if is null - throw if the does not exist - - - - Create a new repository for the assembly specified - - not used - the type of repository to create, must implement - the repository created - - - The argument is not used. This selector does not create a - separate repository for each assembly. - - - If the is null then the - default repository type specified to the constructor is used. - - - As a named repository is not specified the default repository is - returned. The default repository is named log4net-default-repository. - - - - - - Create a new repository for the repository specified - - the repository to associate with the - the type of repository to create, must implement . - If this param is null then the default repository type is used. - the repository created - - - The created will be associated with the repository - specified such that a call to with the - same repository specified will return the same repository instance. - - - If the named repository already exists an exception will be thrown. - - - If is null then the default - repository type specified to the constructor is used. - - - throw if is null - throw if the already exists - - - - Test if a named repository exists - - the named repository to check - true if the repository exists - - - Test if a named repository exists. Use - to create a new repository and to retrieve - a repository. - - - - - - Gets a list of objects - - an array of all known objects - - - Gets an array of all of the repositories created by this selector. - - - - - - Notify the registered listeners that the repository has been created - - The repository that has been created - - - Raises the LoggerRepositoryCreatedEvent - event. - - - - - - Event to notify that a logger repository has been created. - - - Event to notify that a logger repository has been created. - - - - Event raised when a new repository is created. - The event source will be this selector. The event args will - be a which - holds the newly created . - - - - - - The default implementation of the interface. - - - - Uses attributes defined on the calling assembly to determine how to - configure the hierarchy for the repository. - - - Nicko Cadell - Gert Driesen - - - - Creates a new repository selector. - - The type of the repositories to create, must implement - - - Create an new repository selector. - The default type for repositories must be specified, - an appropriate value would be . - - - is . - does not implement . - - - - Gets the for the specified assembly. - - The assembly use to lookup the . - - - The type of the created and the repository - to create can be overridden by specifying the - attribute on the . - - - The default values are to use the - implementation of the interface and to use the - as the name of the repository. - - - The created will be automatically configured using - any attributes defined on - the . - - - The for the assembly - is . - - - - Gets the for the specified repository. - - The repository to use to lookup the . - The for the specified repository. - - - Returns the named repository. If is null - a is thrown. If the repository - does not exist a is thrown. - - - Use to create a repository. - - - is . - does not exist. - - - - Create a new repository for the assembly specified - - the assembly to use to create the repository to associate with the . - The type of repository to create, must implement . - The repository created. - - - The created will be associated with the repository - specified such that a call to with the - same assembly specified will return the same repository instance. - - - The type of the created and - the repository to create can be overridden by specifying the - attribute on the - . The default values are to use the - implementation of the - interface and to use the - as the name of the repository. - - - The created will be automatically - configured using any - attributes defined on the . - - - If a repository for the already exists - that repository will be returned. An error will not be raised and that - repository may be of a different type to that specified in . - Also the attribute on the - assembly may be used to override the repository type specified in - . - - - is . - - - - Creates a new repository for the assembly specified. - - the assembly to use to create the repository to associate with the . - The type of repository to create, must implement . - The name to assign to the created repository - Set to true to read and apply the assembly attributes - The repository created. - - - The created will be associated with the repository - specified such that a call to with the - same assembly specified will return the same repository instance. - - - The type of the created and - the repository to create can be overridden by specifying the - attribute on the - . The default values are to use the - implementation of the - interface and to use the - as the name of the repository. - - - The created will be automatically - configured using any - attributes defined on the . - - - If a repository for the already exists - that repository will be returned. An error will not be raised and that - repository may be of a different type to that specified in . - Also the attribute on the - assembly may be used to override the repository type specified in - . - - - is . - - - - Creates a new repository for the specified repository. - - The repository to associate with the . - The type of repository to create, must implement . - If this param is then the default repository type is used. - The new repository. - - - The created will be associated with the repository - specified such that a call to with the - same repository specified will return the same repository instance. - - - is . - already exists. - - - - Test if a named repository exists - - the named repository to check - true if the repository exists - - - Test if a named repository exists. Use - to create a new repository and to retrieve - a repository. - - - - - - Gets a list of objects - - an array of all known objects - - - Gets an array of all of the repositories created by this selector. - - - - - - Aliases a repository to an existing repository. - - The repository to alias. - The repository that the repository is aliased to. - - - The repository specified will be aliased to the repository when created. - The repository must not already exist. - - - When the repository is created it must utilize the same repository type as - the repository it is aliased to, otherwise the aliasing will fail. - - - - is . - -or- - is . - - - - - Notifies the registered listeners that the repository has been created. - - The repository that has been created. - - - Raises the event. - - - - - - Gets the repository name and repository type for the specified assembly. - - The assembly that has a . - in/out param to hold the repository name to use for the assembly, caller should set this to the default value before calling. - in/out param to hold the type of the repository to create for the assembly, caller should set this to the default value before calling. - is . - - - - Configures the repository using information from the assembly. - - The assembly containing - attributes which define the configuration for the repository. - The repository to configure. - - is . - -or- - is . - - - - - Loads the attribute defined plugins on the assembly. - - The assembly that contains the attributes. - The repository to add the plugins to. - - is . - -or- - is . - - - - - Loads the attribute defined aliases on the assembly. - - The assembly that contains the attributes. - The repository to alias to. - - is . - -or- - is . - - - - - Event to notify that a logger repository has been created. - - - Event to notify that a logger repository has been created. - - - - Event raised when a new repository is created. - The event source will be this selector. The event args will - be a which - holds the newly created . - - - - - - Defined error codes that can be passed to the method. - - - - Values passed to the method. - - - Nicko Cadell - - - - A general error - - - - - Error while writing output - - - - - Failed to flush file - - - - - Failed to close file - - - - - Unable to open output file - - - - - No layout specified - - - - - Failed to parse address - - - - - Appenders may delegate their error handling to an . - - - - Error handling is a particularly tedious to get right because by - definition errors are hard to predict and to reproduce. - - - Nicko Cadell - Gert Driesen - - - - Handles the error and information about the error condition is passed as - a parameter. - - The message associated with the error. - The that was thrown when the error occurred. - The error code associated with the error. - - - Handles the error and information about the error condition is passed as - a parameter. - - - - - - Prints the error message passed as a parameter. - - The message associated with the error. - The that was thrown when the error occurred. - - - See . - - - - - - Prints the error message passed as a parameter. - - The message associated with the error. - - - See . - - - - - - Interface for objects that require fixing. - - - - Interface that indicates that the object requires fixing before it - can be taken outside the context of the appender's - method. - - - When objects that implement this interface are stored - in the context properties maps - and - are fixed - (see ) the - method will be called. - - - Nicko Cadell - - - - Get a portable version of this object - - the portable instance of this object - - - Get a portable instance object that represents the current - state of this object. The portable object can be stored - and logged from any thread with identical results. - - - - - - Interface that all loggers implement - - - - This interface supports logging events and testing if a level - is enabled for logging. - - - These methods will not throw exceptions. Note to implementor, ensure - that the implementation of these methods cannot allow an exception - to be thrown to the caller. - - - Nicko Cadell - Gert Driesen - - - - This generic form is intended to be used by wrappers. - - The declaring type of the method that is - the stack boundary into the logging system for this call. - The level of the message to be logged. - The message object to log. - the exception to log, including its stack trace. Pass null to not log an exception. - - - Generates a logging event for the specified using - the and . - - - - - - This is the most generic printing method that is intended to be used - by wrappers. - - The event being logged. - - - Logs the specified logging event through this logger. - - - - - - Checks if this logger is enabled for a given passed as parameter. - - The level to check. - - true if this logger is enabled for level, otherwise false. - - - - Test if this logger is going to log events of the specified . - - - - - - Gets the name of the logger. - - - The name of the logger. - - - - The name of this logger - - - - - - Gets the where this - Logger instance is attached to. - - - The that this logger belongs to. - - - - Gets the where this - Logger instance is attached to. - - - - - - Base interface for all wrappers - - - - Base interface for all wrappers. - - - All wrappers must implement this interface. - - - Nicko Cadell - - - - Get the implementation behind this wrapper object. - - - The object that in implementing this object. - - - - The object that in implementing this - object. The Logger object may not - be the same object as this object because of logger decorators. - This gets the actual underlying objects that is used to process - the log events. - - - - - - Delegate used to handle logger repository creation event notifications - - The which created the repository. - The event args - that holds the instance that has been created. - - - Delegate used to handle logger repository creation event notifications. - - - - - - Provides data for the event. - - - - A - event is raised every time a is created. - - - - - - The created - - - - - Construct instance using specified - - the that has been created - - - Construct instance using specified - - - - - - The that has been created - - - The that has been created - - - - The that has been created - - - - - - Test if an triggers an action - - - - Implementations of this interface allow certain appenders to decide - when to perform an appender specific action. - - - The action or behavior triggered is defined by the implementation. - - - Nicko Cadell - - - - Test if this event triggers the action - - The event to check - true if this event triggers the action, otherwise false - - - Return true if this event triggers the action - - - - - - Defines the default set of levels recognized by the system. - - - - Each has an associated . - - - Levels have a numeric that defines the relative - ordering between levels. Two Levels with the same - are deemed to be equivalent. - - - The levels that are recognized by log4net are set for each - and each repository can have different levels defined. The levels are stored - in the on the repository. Levels are - looked up by name from the . - - - When logging at level INFO the actual level used is not but - the value of LoggerRepository.LevelMap["INFO"]. The default value for this is - , but this can be changed by reconfiguring the level map. - - - Each level has a in addition to its . The - is the string that is written into the output log. By default - the display name is the same as the level name, but this can be used to alias levels - or to localize the log output. - - - Some of the predefined levels recognized by the system are: - - - - . - - - . - - - . - - - . - - - . - - - . - - - . - - - - Nicko Cadell - Gert Driesen - - - - Constructor - - Integer value for this level, higher values represent more severe levels. - The string name of this level. - The display name for this level. This may be localized or otherwise different from the name - - - Initializes a new instance of the class with - the specified level name and value. - - - - - - Constructor - - Integer value for this level, higher values represent more severe levels. - The string name of this level. - - - Initializes a new instance of the class with - the specified level name and value. - - - - - - Returns the representation of the current - . - - - A representation of the current . - - - - Returns the level . - - - - - - Compares levels. - - The object to compare against. - true if the objects are equal. - - - Compares the levels of instances, and - defers to base class if the target object is not a - instance. - - - - - - Returns a hash code - - A hash code for the current . - - - Returns a hash code suitable for use in hashing algorithms and data - structures like a hash table. - - - Returns the hash code of the level . - - - - - - Compares this instance to a specified object and returns an - indication of their relative values. - - A instance or to compare with this instance. - - A 32-bit signed integer that indicates the relative order of the - values compared. The return value has these meanings: - - - Value - Meaning - - - Less than zero - This instance is less than . - - - Zero - This instance is equal to . - - - Greater than zero - - This instance is greater than . - -or- - is . - - - - - - - must be an instance of - or ; otherwise, an exception is thrown. - - - is not a . - - - - Returns a value indicating whether a specified - is greater than another specified . - - A - A - - true if is greater than - ; otherwise, false. - - - - Compares two levels. - - - - - - Returns a value indicating whether a specified - is less than another specified . - - A - A - - true if is less than - ; otherwise, false. - - - - Compares two levels. - - - - - - Returns a value indicating whether a specified - is greater than or equal to another specified . - - A - A - - true if is greater than or equal to - ; otherwise, false. - - - - Compares two levels. - - - - - - Returns a value indicating whether a specified - is less than or equal to another specified . - - A - A - - true if is less than or equal to - ; otherwise, false. - - - - Compares two levels. - - - - - - Returns a value indicating whether two specified - objects have the same value. - - A or . - A or . - - true if the value of is the same as the - value of ; otherwise, false. - - - - Compares two levels. - - - - - - Returns a value indicating whether two specified - objects have different values. - - A or . - A or . - - true if the value of is different from - the value of ; otherwise, false. - - - - Compares two levels. - - - - - - Compares two specified instances. - - The first to compare. - The second to compare. - - A 32-bit signed integer that indicates the relative order of the - two values compared. The return value has these meanings: - - - Value - Meaning - - - Less than zero - is less than . - - - Zero - is equal to . - - - Greater than zero - is greater than . - - - - - - Compares two levels. - - - - - - The level designates a higher level than all the rest. - - - - - The level designates very severe error events. - System unusable, emergencies. - - - - - The level designates very severe error events - that will presumably lead the application to abort. - - - - - The level designates very severe error events. - Take immediate action, alerts. - - - - - The level designates very severe error events. - Critical condition, critical. - - - - - The level designates very severe error events. - - - - - The level designates error events that might - still allow the application to continue running. - - - - - The level designates potentially harmful - situations. - - - - - The level designates informational messages - that highlight the progress of the application at the highest level. - - - - - The level designates informational messages that - highlight the progress of the application at coarse-grained level. - - - - - The level designates fine-grained informational - events that are most useful to debug an application. - - - - - The level designates fine-grained informational - events that are most useful to debug an application. - - - - - The level designates fine-grained informational - events that are most useful to debug an application. - - - - - The level designates fine-grained informational - events that are most useful to debug an application. - - - - - The level designates fine-grained informational - events that are most useful to debug an application. - - - - - The level designates fine-grained informational - events that are most useful to debug an application. - - - - - The level designates the lowest level possible. - - - - - Gets the name of this level. - - - The name of this level. - - - - Gets the name of this level. - - - - - - Gets the value of this level. - - - The value of this level. - - - - Gets the value of this level. - - - - - - Gets the display name of this level. - - - The display name of this level. - - - - Gets the display name of this level. - - - - - - A strongly-typed collection of objects. - - Nicko Cadell - - - - Creates a read-only wrapper for a LevelCollection instance. - - list to create a readonly wrapper arround - - A LevelCollection wrapper that is read-only. - - - - - Initializes a new instance of the LevelCollection class - that is empty and has the default initial capacity. - - - - - Initializes a new instance of the LevelCollection class - that has the specified initial capacity. - - - The number of elements that the new LevelCollection is initially capable of storing. - - - - - Initializes a new instance of the LevelCollection class - that contains elements copied from the specified LevelCollection. - - The LevelCollection whose elements are copied to the new collection. - - - - Initializes a new instance of the LevelCollection class - that contains elements copied from the specified array. - - The array whose elements are copied to the new list. - - - - Initializes a new instance of the LevelCollection class - that contains elements copied from the specified collection. - - The collection whose elements are copied to the new list. - - - - Allow subclasses to avoid our default constructors - - - - - - Copies the entire LevelCollection to a one-dimensional - array. - - The one-dimensional array to copy to. - - - - Copies the entire LevelCollection to a one-dimensional - array, starting at the specified index of the target array. - - The one-dimensional array to copy to. - The zero-based index in at which copying begins. - - - - Adds a to the end of the LevelCollection. - - The to be added to the end of the LevelCollection. - The index at which the value has been added. - - - - Removes all elements from the LevelCollection. - - - - - Creates a shallow copy of the . - - A new with a shallow copy of the collection data. - - - - Determines whether a given is in the LevelCollection. - - The to check for. - true if is found in the LevelCollection; otherwise, false. - - - - Returns the zero-based index of the first occurrence of a - in the LevelCollection. - - The to locate in the LevelCollection. - - The zero-based index of the first occurrence of - in the entire LevelCollection, if found; otherwise, -1. - - - - - Inserts an element into the LevelCollection at the specified index. - - The zero-based index at which should be inserted. - The to insert. - - is less than zero - -or- - is equal to or greater than . - - - - - Removes the first occurrence of a specific from the LevelCollection. - - The to remove from the LevelCollection. - - The specified was not found in the LevelCollection. - - - - - Removes the element at the specified index of the LevelCollection. - - The zero-based index of the element to remove. - - is less than zero - -or- - is equal to or greater than . - - - - - Returns an enumerator that can iterate through the LevelCollection. - - An for the entire LevelCollection. - - - - Adds the elements of another LevelCollection to the current LevelCollection. - - The LevelCollection whose elements should be added to the end of the current LevelCollection. - The new of the LevelCollection. - - - - Adds the elements of a array to the current LevelCollection. - - The array whose elements should be added to the end of the LevelCollection. - The new of the LevelCollection. - - - - Adds the elements of a collection to the current LevelCollection. - - The collection whose elements should be added to the end of the LevelCollection. - The new of the LevelCollection. - - - - Sets the capacity to the actual number of elements. - - - - - is less than zero - -or- - is equal to or greater than . - - - - - is less than zero - -or- - is equal to or greater than . - - - - - Gets the number of elements actually contained in the LevelCollection. - - - - - Gets a value indicating whether access to the collection is synchronized (thread-safe). - - true if access to the ICollection is synchronized (thread-safe); otherwise, false. - - - - Gets an object that can be used to synchronize access to the collection. - - - - - Gets or sets the at the specified index. - - The zero-based index of the element to get or set. - - is less than zero - -or- - is equal to or greater than . - - - - - Gets a value indicating whether the collection has a fixed size. - - true if the collection has a fixed size; otherwise, false. The default is false - - - - Gets a value indicating whether the IList is read-only. - - true if the collection is read-only; otherwise, false. The default is false - - - - Gets or sets the number of elements the LevelCollection can contain. - - - - - Supports type-safe iteration over a . - - - - - Advances the enumerator to the next element in the collection. - - - true if the enumerator was successfully advanced to the next element; - false if the enumerator has passed the end of the collection. - - - The collection was modified after the enumerator was created. - - - - - Sets the enumerator to its initial position, before the first element in the collection. - - - - - Gets the current element in the collection. - - - - - Type visible only to our subclasses - Used to access protected constructor - - - - - A value - - - - - Supports simple iteration over a . - - - - - Initializes a new instance of the Enumerator class. - - - - - - Advances the enumerator to the next element in the collection. - - - true if the enumerator was successfully advanced to the next element; - false if the enumerator has passed the end of the collection. - - - The collection was modified after the enumerator was created. - - - - - Sets the enumerator to its initial position, before the first element in the collection. - - - - - Gets the current element in the collection. - - - - - An evaluator that triggers at a threshold level - - - - This evaluator will trigger if the level of the event - passed to - is equal to or greater than the - level. - - - Nicko Cadell - - - - The threshold for triggering - - - - - Create a new evaluator using the threshold. - - - - Create a new evaluator using the threshold. - - - This evaluator will trigger if the level of the event - passed to - is equal to or greater than the - level. - - - - - - Create a new evaluator using the specified threshold. - - the threshold to trigger at - - - Create a new evaluator using the specified threshold. - - - This evaluator will trigger if the level of the event - passed to - is equal to or greater than the - level. - - - - - - Is this the triggering event? - - The event to check - This method returns true, if the event level - is equal or higher than the . - Otherwise it returns false - - - This evaluator will trigger if the level of the event - passed to - is equal to or greater than the - level. - - - - - - the threshold to trigger at - - - The that will cause this evaluator to trigger - - - - This evaluator will trigger if the level of the event - passed to - is equal to or greater than the - level. - - - - - - Mapping between string name and Level object - - - - Mapping between string name and object. - This mapping is held separately for each . - The level name is case insensitive. - - - Nicko Cadell - - - - Mapping from level name to Level object. The - level name is case insensitive - - - - - Construct the level map - - - - Construct the level map. - - - - - - Clear the internal maps of all levels - - - - Clear the internal maps of all levels - - - - - - Create a new Level and add it to the map - - the string to display for the Level - the level value to give to the Level - - - Create a new Level and add it to the map - - - - - - - Create a new Level and add it to the map - - the string to display for the Level - the level value to give to the Level - the display name to give to the Level - - - Create a new Level and add it to the map - - - - - - Add a Level to the map - - the Level to add - - - Add a Level to the map - - - - - - Lookup a named level from the map - - the name of the level to lookup is taken from this level. - If the level is not set on the map then this level is added - the level in the map with the name specified - - - Lookup a named level from the map. The name of the level to lookup is taken - from the property of the - argument. - - - If no level with the specified name is found then the - argument is added to the level map - and returned. - - - - - - Lookup a by name - - The name of the Level to lookup - a Level from the map with the name specified - - - Returns the from the - map with the name specified. If the no level is - found then null is returned. - - - - - - Return all possible levels as a list of Level objects. - - all possible levels as a list of Level objects - - - Return all possible levels as a list of Level objects. - - - - - - The internal representation of caller location information. - - - - This class uses the System.Diagnostics.StackTrace class to generate - a call stack. The caller's information is then extracted from this stack. - - - The System.Diagnostics.StackTrace class is not supported on the - .NET Compact Framework 1.0 therefore caller location information is not - available on that framework. - - - The System.Diagnostics.StackTrace class has this to say about Release builds: - - - "StackTrace information will be most informative with Debug build configurations. - By default, Debug builds include debug symbols, while Release builds do not. The - debug symbols contain most of the file, method name, line number, and column - information used in constructing StackFrame and StackTrace objects. StackTrace - might not report as many method calls as expected, due to code transformations - that occur during optimization." - - - This means that in a Release build the caller information may be incomplete or may - not exist at all! Therefore caller location information cannot be relied upon in a Release build. - - - Nicko Cadell - Gert Driesen - - - - When location information is not available the constant - NA is returned. Current value of this string - constant is ?. - - - - - Constructor - - The declaring type of the method that is - the stack boundary into the logging system for this call. - - - Initializes a new instance of the - class based on the current thread. - - - - - - Constructor - - The fully qualified class name. - The method name. - The file name. - The line number of the method within the file. - - - Initializes a new instance of the - class with the specified data. - - - - - - Gets the fully qualified class name of the caller making the logging - request. - - - The fully qualified class name of the caller making the logging - request. - - - - Gets the fully qualified class name of the caller making the logging - request. - - - - - - Gets the file name of the caller. - - - The file name of the caller. - - - - Gets the file name of the caller. - - - - - - Gets the line number of the caller. - - - The line number of the caller. - - - - Gets the line number of the caller. - - - - - - Gets the method name of the caller. - - - The method name of the caller. - - - - Gets the method name of the caller. - - - - - - Gets all available caller information - - - All available caller information, in the format - fully.qualified.classname.of.caller.methodName(Filename:line) - - - - Gets all available caller information, in the format - fully.qualified.classname.of.caller.methodName(Filename:line) - - - - - - Static manager that controls the creation of repositories - - - - Static manager that controls the creation of repositories - - - This class is used by the wrapper managers (e.g. ) - to provide access to the objects. - - - This manager also holds the that is used to - lookup and create repositories. The selector can be set either programmatically using - the property, or by setting the log4net.RepositorySelector - AppSetting in the applications config file to the fully qualified type name of the - selector to use. - - - Nicko Cadell - Gert Driesen - - - - Private constructor to prevent instances. Only static methods should be used. - - - - Private constructor to prevent instances. Only static methods should be used. - - - - - - Hook the shutdown event - - - - On the full .NET runtime, the static constructor hooks up the - AppDomain.ProcessExit and AppDomain.DomainUnload> events. - These are used to shutdown the log4net system as the application exits. - - - - - - Register for ProcessExit and DomainUnload events on the AppDomain - - - - This needs to be in a separate method because the events make - a LinkDemand for the ControlAppDomain SecurityPermission. Because - this is a LinkDemand it is demanded at JIT time. Therefore we cannot - catch the exception in the method itself, we have to catch it in the - caller. - - - - - - Return the default instance. - - the repository to lookup in - Return the default instance - - - Gets the for the repository specified - by the argument. - - - - - - Returns the default instance. - - The assembly to use to lookup the repository. - The default instance. - - - - Return the default instance. - - the repository to lookup in - Return the default instance - - - Gets the for the repository specified - by the argument. - - - - - - Returns the default instance. - - The assembly to use to lookup the repository. - The default instance. - - - Returns the default instance. - - - - - - Returns the named logger if it exists. - - The repository to lookup in. - The fully qualified logger name to look for. - - The logger found, or null if the named logger does not exist in the - specified repository. - - - - If the named logger exists (in the specified repository) then it - returns a reference to the logger, otherwise it returns - null. - - - - - - Returns the named logger if it exists. - - The assembly to use to lookup the repository. - The fully qualified logger name to look for. - - The logger found, or null if the named logger does not exist in the - specified assembly's repository. - - - - If the named logger exists (in the specified assembly's repository) then it - returns a reference to the logger, otherwise it returns - null. - - - - - - Returns all the currently defined loggers in the specified repository. - - The repository to lookup in. - All the defined loggers. - - - The root logger is not included in the returned array. - - - - - - Returns all the currently defined loggers in the specified assembly's repository. - - The assembly to use to lookup the repository. - All the defined loggers. - - - The root logger is not included in the returned array. - - - - - - Retrieves or creates a named logger. - - The repository to lookup in. - The name of the logger to retrieve. - The logger with the name specified. - - - Retrieves a logger named as the - parameter. If the named logger already exists, then the - existing instance will be returned. Otherwise, a new instance is - created. - - - By default, loggers do not have a set level but inherit - it from the hierarchy. This is one of the central features of - log4net. - - - - - - Retrieves or creates a named logger. - - The assembly to use to lookup the repository. - The name of the logger to retrieve. - The logger with the name specified. - - - Retrieves a logger named as the - parameter. If the named logger already exists, then the - existing instance will be returned. Otherwise, a new instance is - created. - - - By default, loggers do not have a set level but inherit - it from the hierarchy. This is one of the central features of - log4net. - - - - - - Shorthand for . - - The repository to lookup in. - The of which the fullname will be used as the name of the logger to retrieve. - The logger with the name specified. - - - Gets the logger for the fully qualified name of the type specified. - - - - - - Shorthand for . - - the assembly to use to lookup the repository - The of which the fullname will be used as the name of the logger to retrieve. - The logger with the name specified. - - - Gets the logger for the fully qualified name of the type specified. - - - - - - Shuts down the log4net system. - - - - Calling this method will safely close and remove all - appenders in all the loggers including root contained in all the - default repositories. - - - Some appenders need to be closed before the application exists. - Otherwise, pending logging events might be lost. - - - The shutdown method is careful to close nested - appenders before closing regular appenders. This is allows - configurations where a regular appender is attached to a logger - and again to a nested appender. - - - - - - Shuts down the repository for the repository specified. - - The repository to shutdown. - - - Calling this method will safely close and remove all - appenders in all the loggers including root contained in the - repository for the specified. - - - Some appenders need to be closed before the application exists. - Otherwise, pending logging events might be lost. - - - The shutdown method is careful to close nested - appenders before closing regular appenders. This is allows - configurations where a regular appender is attached to a logger - and again to a nested appender. - - - - - - Shuts down the repository for the repository specified. - - The assembly to use to lookup the repository. - - - Calling this method will safely close and remove all - appenders in all the loggers including root contained in the - repository for the repository. The repository is looked up using - the specified. - - - Some appenders need to be closed before the application exists. - Otherwise, pending logging events might be lost. - - - The shutdown method is careful to close nested - appenders before closing regular appenders. This is allows - configurations where a regular appender is attached to a logger - and again to a nested appender. - - - - - - Resets all values contained in this repository instance to their defaults. - - The repository to reset. - - - Resets all values contained in the repository instance to their - defaults. This removes all appenders from all loggers, sets - the level of all non-root loggers to null, - sets their additivity flag to true and sets the level - of the root logger to . Moreover, - message disabling is set its default "off" value. - - - - - - Resets all values contained in this repository instance to their defaults. - - The assembly to use to lookup the repository to reset. - - - Resets all values contained in the repository instance to their - defaults. This removes all appenders from all loggers, sets - the level of all non-root loggers to null, - sets their additivity flag to true and sets the level - of the root logger to . Moreover, - message disabling is set its default "off" value. - - - - - - Creates a repository with the specified name. - - The name of the repository, this must be unique amongst repositories. - The created for the repository. - - - CreateDomain is obsolete. Use CreateRepository instead of CreateDomain. - - - Creates the default type of which is a - object. - - - The name must be unique. Repositories cannot be redefined. - An will be thrown if the repository already exists. - - - The specified repository already exists. - - - - Creates a repository with the specified name. - - The name of the repository, this must be unique amongst repositories. - The created for the repository. - - - Creates the default type of which is a - object. - - - The name must be unique. Repositories cannot be redefined. - An will be thrown if the repository already exists. - - - The specified repository already exists. - - - - Creates a repository with the specified name and repository type. - - The name of the repository, this must be unique to the repository. - A that implements - and has a no arg constructor. An instance of this type will be created to act - as the for the repository specified. - The created for the repository. - - - CreateDomain is obsolete. Use CreateRepository instead of CreateDomain. - - - The name must be unique. Repositories cannot be redefined. - An Exception will be thrown if the repository already exists. - - - The specified repository already exists. - - - - Creates a repository with the specified name and repository type. - - The name of the repository, this must be unique to the repository. - A that implements - and has a no arg constructor. An instance of this type will be created to act - as the for the repository specified. - The created for the repository. - - - The name must be unique. Repositories cannot be redefined. - An Exception will be thrown if the repository already exists. - - - The specified repository already exists. - - - - Creates a repository for the specified assembly and repository type. - - The assembly to use to get the name of the repository. - A that implements - and has a no arg constructor. An instance of this type will be created to act - as the for the repository specified. - The created for the repository. - - - CreateDomain is obsolete. Use CreateRepository instead of CreateDomain. - - - The created will be associated with the repository - specified such that a call to with the - same assembly specified will return the same repository instance. - - - - - - Creates a repository for the specified assembly and repository type. - - The assembly to use to get the name of the repository. - A that implements - and has a no arg constructor. An instance of this type will be created to act - as the for the repository specified. - The created for the repository. - - - The created will be associated with the repository - specified such that a call to with the - same assembly specified will return the same repository instance. - - - - - - Gets an array of all currently defined repositories. - - An array of all the known objects. - - - Gets an array of all currently defined repositories. - - - - - - Internal method to get pertinent version info. - - A string of version info. - - - - Called when the event fires - - the that is exiting - null - - - Called when the event fires. - - - When the event is triggered the log4net system is . - - - - - - Called when the event fires - - the that is exiting - null - - - Called when the event fires. - - - When the event is triggered the log4net system is . - - - - - - Initialize the default repository selector - - - - - Gets or sets the repository selector used by the . - - - The repository selector used by the . - - - - The repository selector () is used by - the to create and select repositories - (). - - - The caller to supplies either a string name - or an assembly (if not supplied the assembly is inferred using - ). - - - This context is used by the selector to lookup a specific repository. - - - For the full .NET Framework, the default repository is DefaultRepositorySelector; - for the .NET Compact Framework CompactRepositorySelector is the default - repository. - - - - - - Implementation of the interface. - - - - This class should be used as the base for all wrapper implementations. - - - Nicko Cadell - Gert Driesen - - - - Constructs a new wrapper for the specified logger. - - The logger to wrap. - - - Constructs a new wrapper for the specified logger. - - - - - - The logger that this object is wrapping - - - - - Gets the implementation behind this wrapper object. - - - The object that this object is implementing. - - - - The Logger object may not be the same object as this object - because of logger decorators. - - - This gets the actual underlying objects that is used to process - the log events. - - - - - - Portable data structure used by - - - - Portable data structure used by - - - Nicko Cadell - - - - The logger name. - - - - The logger name. - - - - - - Level of logging event. - - - - Level of logging event. Level cannot be Serializable - because it is a flyweight. Due to its special serialization it - cannot be declared final either. - - - - - - The application supplied message. - - - - The application supplied message of logging event. - - - - - - The name of thread - - - - The name of thread in which this logging event was generated - - - - - - The time the event was logged - - - - The TimeStamp is stored in the local time zone for this computer. - - - - - - Location information for the caller. - - - - Location information for the caller. - - - - - - String representation of the user - - - - String representation of the user's windows name, - like DOMAIN\username - - - - - - String representation of the identity. - - - - String representation of the current thread's principal identity. - - - - - - The string representation of the exception - - - - The string representation of the exception - - - - - - String representation of the AppDomain. - - - - String representation of the AppDomain. - - - - - - Additional event specific properties - - - - A logger or an appender may attach additional - properties to specific events. These properties - have a string key and an object value. - - - - - - Flags passed to the property - - - - Flags passed to the property - - - Nicko Cadell - - - - Fix the MDC - - - - - Fix the NDC - - - - - Fix the rendered message - - - - - Fix the thread name - - - - - Fix the callers location information - - - CAUTION: Very slow to generate - - - - - Fix the callers windows user name - - - CAUTION: Slow to generate - - - - - Fix the domain friendly name - - - - - Fix the callers principal name - - - CAUTION: May be slow to generate - - - - - Fix the exception text - - - - - Fix the event properties - - - - - No fields fixed - - - - - All fields fixed - - - - - Partial fields fixed - - - - This set of partial fields gives good performance. The following fields are fixed: - - - - - - - - - - - - - The internal representation of logging events. - - - - When an affirmative decision is made to log then a - instance is created. This instance - is passed around to the different log4net components. - - - This class is of concern to those wishing to extend log4net. - - - Some of the values in instances of - are considered volatile, that is the values are correct at the - time the event is delivered to appenders, but will not be consistent - at any time afterwards. If an event is to be stored and then processed - at a later time these volatile values must be fixed by calling - . There is a performance penalty - for incurred by calling but it - is essential to maintaining data consistency. - - - Nicko Cadell - Gert Driesen - Douglas de la Torre - Daniel Cazzulino - - - - The key into the Properties map for the host name value. - - - - - The key into the Properties map for the thread identity value. - - - - - The key into the Properties map for the user name value. - - - - - Initializes a new instance of the class - from the supplied parameters. - - The declaring type of the method that is - the stack boundary into the logging system for this call. - The repository this event is logged in. - The name of the logger of this event. - The level of this event. - The message of this event. - The exception for this event. - - - Except , and , - all fields of LoggingEvent are filled when actually needed. Call - to cache all data locally - to prevent inconsistencies. - - This method is called by the log4net framework - to create a logging event. - - - - - - Initializes a new instance of the class - using specific data. - - The declaring type of the method that is - the stack boundary into the logging system for this call. - The repository this event is logged in. - Data used to initialize the logging event. - The fields in the struct that have already been fixed. - - - This constructor is provided to allow a - to be created independently of the log4net framework. This can - be useful if you require a custom serialization scheme. - - - Use the method to obtain an - instance of the class. - - - The parameter should be used to specify which fields in the - struct have been preset. Fields not specified in the - will be captured from the environment if requested or fixed. - - - - - - Initializes a new instance of the class - using specific data. - - The declaring type of the method that is - the stack boundary into the logging system for this call. - The repository this event is logged in. - Data used to initialize the logging event. - - - This constructor is provided to allow a - to be created independently of the log4net framework. This can - be useful if you require a custom serialization scheme. - - - Use the method to obtain an - instance of the class. - - - This constructor sets this objects flags to , - this assumes that all the data relating to this event is passed in via the - parameter and no other data should be captured from the environment. - - - - - - Initializes a new instance of the class - using specific data. - - Data used to initialize the logging event. - - - This constructor is provided to allow a - to be created independently of the log4net framework. This can - be useful if you require a custom serialization scheme. - - - Use the method to obtain an - instance of the class. - - - This constructor sets this objects flags to , - this assumes that all the data relating to this event is passed in via the - parameter and no other data should be captured from the environment. - - - - - - Serialization constructor - - The that holds the serialized object data. - The that contains contextual information about the source or destination. - - - Initializes a new instance of the class - with serialized data. - - - - - - Ensure that the repository is set. - - the value for the repository - - - - Write the rendered message to a TextWriter - - the writer to write the message to - - - Unlike the property this method - does store the message data in the internal cache. Therefore - if called only once this method should be faster than the - property, however if the message is - to be accessed multiple times then the property will be more efficient. - - - - - - Serializes this object into the provided. - - The to populate with data. - The destination for this serialization. - - - The data in this event must be fixed before it can be serialized. - - - The method must be called during the - method call if this event - is to be used outside that method. - - - - - - Gets the portable data for this . - - The for this event. - - - A new can be constructed using a - instance. - - - Does a fix of the data - in the logging event before returning the event data. - - - - - - Gets the portable data for this . - - The set of data to ensure is fixed in the LoggingEventData - The for this event. - - - A new can be constructed using a - instance. - - - - - - Returns this event's exception's rendered using the - . - - - This event's exception's rendered using the . - - - - Obsolete. Use instead. - - - - - - Returns this event's exception's rendered using the - . - - - This event's exception's rendered using the . - - - - Returns this event's exception's rendered using the - . - - - - - - Fix instance fields that hold volatile data. - - - - Some of the values in instances of - are considered volatile, that is the values are correct at the - time the event is delivered to appenders, but will not be consistent - at any time afterwards. If an event is to be stored and then processed - at a later time these volatile values must be fixed by calling - . There is a performance penalty - incurred by calling but it - is essential to maintaining data consistency. - - - Calling is equivalent to - calling passing the parameter - false. - - - See for more - information. - - - - - - Fixes instance fields that hold volatile data. - - Set to true to not fix data that takes a long time to fix. - - - Some of the values in instances of - are considered volatile, that is the values are correct at the - time the event is delivered to appenders, but will not be consistent - at any time afterwards. If an event is to be stored and then processed - at a later time these volatile values must be fixed by calling - . There is a performance penalty - for incurred by calling but it - is essential to maintaining data consistency. - - - The param controls the data that - is fixed. Some of the data that can be fixed takes a long time to - generate, therefore if you do not require those settings to be fixed - they can be ignored by setting the param - to true. This setting will ignore the - and settings. - - - Set to false to ensure that all - settings are fixed. - - - - - - Fix the fields specified by the parameter - - the fields to fix - - - Only fields specified in the will be fixed. - Fields will not be fixed if they have previously been fixed. - It is not possible to 'unfix' a field. - - - - - - Lookup a composite property in this event - - the key for the property to lookup - the value for the property - - - This event has composite properties that combine together properties from - several different contexts in the following order: - - - this events properties - - This event has that can be set. These - properties are specific to this event only. - - - - the thread properties - - The that are set on the current - thread. These properties are shared by all events logged on this thread. - - - - the global properties - - The that are set globally. These - properties are shared by all the threads in the AppDomain. - - - - - - - - - Get all the composite properties in this event - - the containing all the properties - - - See for details of the composite properties - stored by the event. - - - This method returns a single containing all the - properties defined for this event. - - - - - - The internal logging event data. - - - - - The internal logging event data. - - - - - The internal logging event data. - - - - - The fully qualified Type of the calling - logger class in the stack frame (i.e. the declaring type of the method). - - - - - The application supplied message of logging event. - - - - - The exception that was thrown. - - - This is not serialized. The string representation - is serialized instead. - - - - - The repository that generated the logging event - - - This is not serialized. - - - - - The fix state for this event - - - These flags indicate which fields have been fixed. - Not serialized. - - - - - Indicated that the internal cache is updateable (ie not fixed) - - - This is a seperate flag to m_fixFlags as it allows incrementel fixing and simpler - changes in the caching strategy. - - - - - Gets the time when the current process started. - - - This is the time when this process started. - - - - The TimeStamp is stored in the local time zone for this computer. - - - Tries to get the start time for the current process. - Failing that it returns the time of the first call to - this property. - - - Note that AppDomains may be loaded and unloaded within the - same process without the process terminating and therefore - without the process start time being reset. - - - - - - Gets the of the logging event. - - - The of the logging event. - - - - Gets the of the logging event. - - - - - - Gets the time of the logging event. - - - The time of the logging event. - - - - The TimeStamp is stored in the local time zone for this computer. - - - - - - Gets the name of the logger that logged the event. - - - The name of the logger that logged the event. - - - - Gets the name of the logger that logged the event. - - - - - - Gets the location information for this logging event. - - - The location information for this logging event. - - - - The collected information is cached for future use. - - - See the class for more information on - supported frameworks and the different behavior in Debug and - Release builds. - - - - - - Gets the message object used to initialize this event. - - - The message object used to initialize this event. - - - - Gets the message object used to initialize this event. - Note that this event may not have a valid message object. - If the event is serialized the message object will not - be transferred. To get the text of the message the - property must be used - not this property. - - - If there is no defined message object for this event then - null will be returned. - - - - - - Gets the exception object used to initialize this event. - - - The exception object used to initialize this event. - - - - Gets the exception object used to initialize this event. - Note that this event may not have a valid exception object. - If the event is serialized the exception object will not - be transferred. To get the text of the exception the - method must be used - not this property. - - - If there is no defined exception object for this event then - null will be returned. - - - - - - The that this event was created in. - - - - The that this event was created in. - - - - - - Gets the message, rendered through the . - - - The message rendered through the . - - - - The collected information is cached for future use. - - - - - - Gets the name of the current thread. - - - The name of the current thread, or the thread ID when - the name is not available. - - - - The collected information is cached for future use. - - - - - - Gets the name of the current user. - - - The name of the current user, or NOT AVAILABLE when the - underlying runtime has no support for retrieving the name of the - current user. - - - - Calls WindowsIdentity.GetCurrent().Name to get the name of - the current windows user. - - - To improve performance, we could cache the string representation of - the name, and reuse that as long as the identity stayed constant. - Once the identity changed, we would need to re-assign and re-render - the string. - - - However, the WindowsIdentity.GetCurrent() call seems to - return different objects every time, so the current implementation - doesn't do this type of caching. - - - Timing for these operations: - - - - Method - Results - - - WindowsIdentity.GetCurrent() - 10000 loops, 00:00:00.2031250 seconds - - - WindowsIdentity.GetCurrent().Name - 10000 loops, 00:00:08.0468750 seconds - - - - This means we could speed things up almost 40 times by caching the - value of the WindowsIdentity.GetCurrent().Name property, since - this takes (8.04-0.20) = 7.84375 seconds. - - - - - - Gets the identity of the current thread principal. - - - The string name of the identity of the current thread principal. - - - - Calls System.Threading.Thread.CurrentPrincipal.Identity.Name to get - the name of the current thread principal. - - - - - - Gets the AppDomain friendly name. - - - The AppDomain friendly name. - - - - Gets the AppDomain friendly name. - - - - - - Additional event specific properties. - - - Additional event specific properties. - - - - A logger or an appender may attach additional - properties to specific events. These properties - have a string key and an object value. - - - This property is for events that have been added directly to - this event. The aggregate properties (which include these - event properties) can be retrieved using - and . - - - Once the properties have been fixed this property - returns the combined cached properties. This ensures that updates to - this property are always reflected in the underlying storage. When - returning the combined properties there may be more keys in the - Dictionary than expected. - - - - - - The fixed fields in this event - - - The set of fields that are fixed in this event - - - - Fields will not be fixed if they have previously been fixed. - It is not possible to 'unfix' a field. - - - - - - Implementation of wrapper interface. - - - - This implementation of the interface - forwards to the held by the base class. - - - This logger has methods to allow the caller to log at the following - levels: - - - - DEBUG - - The and methods log messages - at the DEBUG level. That is the level with that name defined in the - repositories . The default value - for this level is . The - property tests if this level is enabled for logging. - - - - INFO - - The and methods log messages - at the INFO level. That is the level with that name defined in the - repositories . The default value - for this level is . The - property tests if this level is enabled for logging. - - - - WARN - - The and methods log messages - at the WARN level. That is the level with that name defined in the - repositories . The default value - for this level is . The - property tests if this level is enabled for logging. - - - - ERROR - - The and methods log messages - at the ERROR level. That is the level with that name defined in the - repositories . The default value - for this level is . The - property tests if this level is enabled for logging. - - - - FATAL - - The and methods log messages - at the FATAL level. That is the level with that name defined in the - repositories . The default value - for this level is . The - property tests if this level is enabled for logging. - - - - - The values for these levels and their semantic meanings can be changed by - configuring the for the repository. - - - Nicko Cadell - Gert Driesen - - - - The ILog interface is use by application to log messages into - the log4net framework. - - - - Use the to obtain logger instances - that implement this interface. The - static method is used to get logger instances. - - - This class contains methods for logging at different levels and also - has properties for determining if those logging levels are - enabled in the current configuration. - - - This interface can be implemented in different ways. This documentation - specifies reasonable behavior that a caller can expect from the actual - implementation, however different implementations reserve the right to - do things differently. - - - Simple example of logging messages - - ILog log = LogManager.GetLogger("application-log"); - - log.Info("Application Start"); - log.Debug("This is a debug message"); - - if (log.IsDebugEnabled) - { - log.Debug("This is another debug message"); - } - - - - - Nicko Cadell - Gert Driesen - - - Log a message object with the level. - - Log a message object with the level. - - The message object to log. - - - This method first checks if this logger is DEBUG - enabled by comparing the level of this logger with the - level. If this logger is - DEBUG enabled, then it converts the message object - (passed as parameter) to a string by invoking the appropriate - . It then - proceeds to call all the registered appenders in this logger - and also higher in the hierarchy depending on the value of - the additivity flag. - - WARNING Note that passing an - to this method will print the name of the - but no stack trace. To print a stack trace use the - form instead. - - - - - - - - Log a message object with the level including - the stack trace of the passed - as a parameter. - - The message object to log. - The exception to log, including its stack trace. - - - See the form for more detailed information. - - - - - - - Log a formatted string with the level. - - Logs a formatted message string with the level. - - A String containing zero or more format items - An Object array containing zero or more objects to format - - - The message is formatted using the String.Format method. See - for details of the syntax of the format string and the behavior - of the formatting. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - - - Logs a formatted message string with the level. - - A String containing zero or more format items - An Object to format - - - The message is formatted using the String.Format method. See - for details of the syntax of the format string and the behavior - of the formatting. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - - - Logs a formatted message string with the level. - - A String containing zero or more format items - An Object to format - An Object to format - - - The message is formatted using the String.Format method. See - for details of the syntax of the format string and the behavior - of the formatting. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - - - Logs a formatted message string with the level. - - A String containing zero or more format items - An Object to format - An Object to format - An Object to format - - - The message is formatted using the String.Format method. See - for details of the syntax of the format string and the behavior - of the formatting. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - - - Logs a formatted message string with the level. - - An that supplies culture-specific formatting information - A String containing zero or more format items - An Object array containing zero or more objects to format - - - The message is formatted using the String.Format method. See - for details of the syntax of the format string and the behavior - of the formatting. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - - Log a message object with the level. - - Logs a message object with the level. - - - - This method first checks if this logger is INFO - enabled by comparing the level of this logger with the - level. If this logger is - INFO enabled, then it converts the message object - (passed as parameter) to a string by invoking the appropriate - . It then - proceeds to call all the registered appenders in this logger - and also higher in the hierarchy depending on the value of the - additivity flag. - - WARNING Note that passing an - to this method will print the name of the - but no stack trace. To print a stack trace use the - form instead. - - - The message object to log. - - - - - - Logs a message object with the INFO level including - the stack trace of the passed - as a parameter. - - The message object to log. - The exception to log, including its stack trace. - - - See the form for more detailed information. - - - - - - - Log a formatted message string with the level. - - Logs a formatted message string with the level. - - A String containing zero or more format items - An Object array containing zero or more objects to format - - - The message is formatted using the String.Format method. See - for details of the syntax of the format string and the behavior - of the formatting. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - - - Logs a formatted message string with the level. - - A String containing zero or more format items - An Object to format - - - The message is formatted using the String.Format method. See - for details of the syntax of the format string and the behavior - of the formatting. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - - - Logs a formatted message string with the level. - - A String containing zero or more format items - An Object to format - An Object to format - - - The message is formatted using the String.Format method. See - for details of the syntax of the format string and the behavior - of the formatting. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - - - Logs a formatted message string with the level. - - A String containing zero or more format items - An Object to format - An Object to format - An Object to format - - - The message is formatted using the String.Format method. See - for details of the syntax of the format string and the behavior - of the formatting. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - - - Logs a formatted message string with the level. - - An that supplies culture-specific formatting information - A String containing zero or more format items - An Object array containing zero or more objects to format - - - The message is formatted using the String.Format method. See - for details of the syntax of the format string and the behavior - of the formatting. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - - Log a message object with the level. - - Log a message object with the level. - - - - This method first checks if this logger is WARN - enabled by comparing the level of this logger with the - level. If this logger is - WARN enabled, then it converts the message object - (passed as parameter) to a string by invoking the appropriate - . It then - proceeds to call all the registered appenders in this logger - and also higher in the hierarchy depending on the value of the - additivity flag. - - WARNING Note that passing an - to this method will print the name of the - but no stack trace. To print a stack trace use the - form instead. - - - The message object to log. - - - - - - Log a message object with the level including - the stack trace of the passed - as a parameter. - - The message object to log. - The exception to log, including its stack trace. - - - See the form for more detailed information. - - - - - - - Log a formatted message string with the level. - - Logs a formatted message string with the level. - - A String containing zero or more format items - An Object array containing zero or more objects to format - - - The message is formatted using the String.Format method. See - for details of the syntax of the format string and the behavior - of the formatting. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - - - Logs a formatted message string with the level. - - A String containing zero or more format items - An Object to format - - - The message is formatted using the String.Format method. See - for details of the syntax of the format string and the behavior - of the formatting. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - - - Logs a formatted message string with the level. - - A String containing zero or more format items - An Object to format - An Object to format - - - The message is formatted using the String.Format method. See - for details of the syntax of the format string and the behavior - of the formatting. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - - - Logs a formatted message string with the level. - - A String containing zero or more format items - An Object to format - An Object to format - An Object to format - - - The message is formatted using the String.Format method. See - for details of the syntax of the format string and the behavior - of the formatting. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - - - Logs a formatted message string with the level. - - An that supplies culture-specific formatting information - A String containing zero or more format items - An Object array containing zero or more objects to format - - - The message is formatted using the String.Format method. See - for details of the syntax of the format string and the behavior - of the formatting. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - - Log a message object with the level. - - Logs a message object with the level. - - The message object to log. - - - This method first checks if this logger is ERROR - enabled by comparing the level of this logger with the - level. If this logger is - ERROR enabled, then it converts the message object - (passed as parameter) to a string by invoking the appropriate - . It then - proceeds to call all the registered appenders in this logger - and also higher in the hierarchy depending on the value of the - additivity flag. - - WARNING Note that passing an - to this method will print the name of the - but no stack trace. To print a stack trace use the - form instead. - - - - - - - - Log a message object with the level including - the stack trace of the passed - as a parameter. - - The message object to log. - The exception to log, including its stack trace. - - - See the form for more detailed information. - - - - - - - Log a formatted message string with the level. - - Logs a formatted message string with the level. - - A String containing zero or more format items - An Object array containing zero or more objects to format - - - The message is formatted using the String.Format method. See - for details of the syntax of the format string and the behavior - of the formatting. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - - - Logs a formatted message string with the level. - - A String containing zero or more format items - An Object to format - - - The message is formatted using the String.Format method. See - for details of the syntax of the format string and the behavior - of the formatting. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - - - Logs a formatted message string with the level. - - A String containing zero or more format items - An Object to format - An Object to format - - - The message is formatted using the String.Format method. See - for details of the syntax of the format string and the behavior - of the formatting. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - - - Logs a formatted message string with the level. - - A String containing zero or more format items - An Object to format - An Object to format - An Object to format - - - The message is formatted using the String.Format method. See - for details of the syntax of the format string and the behavior - of the formatting. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - - - Logs a formatted message string with the level. - - An that supplies culture-specific formatting information - A String containing zero or more format items - An Object array containing zero or more objects to format - - - The message is formatted using the String.Format method. See - for details of the syntax of the format string and the behavior - of the formatting. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - - Log a message object with the level. - - Log a message object with the level. - - - - This method first checks if this logger is FATAL - enabled by comparing the level of this logger with the - level. If this logger is - FATAL enabled, then it converts the message object - (passed as parameter) to a string by invoking the appropriate - . It then - proceeds to call all the registered appenders in this logger - and also higher in the hierarchy depending on the value of the - additivity flag. - - WARNING Note that passing an - to this method will print the name of the - but no stack trace. To print a stack trace use the - form instead. - - - The message object to log. - - - - - - Log a message object with the level including - the stack trace of the passed - as a parameter. - - The message object to log. - The exception to log, including its stack trace. - - - See the form for more detailed information. - - - - - - - Log a formatted message string with the level. - - Logs a formatted message string with the level. - - A String containing zero or more format items - An Object array containing zero or more objects to format - - - The message is formatted using the String.Format method. See - for details of the syntax of the format string and the behavior - of the formatting. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - - - Logs a formatted message string with the level. - - A String containing zero or more format items - An Object to format - - - The message is formatted using the String.Format method. See - for details of the syntax of the format string and the behavior - of the formatting. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - - - Logs a formatted message string with the level. - - A String containing zero or more format items - An Object to format - An Object to format - - - The message is formatted using the String.Format method. See - for details of the syntax of the format string and the behavior - of the formatting. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - - - Logs a formatted message string with the level. - - A String containing zero or more format items - An Object to format - An Object to format - An Object to format - - - The message is formatted using the String.Format method. See - for details of the syntax of the format string and the behavior - of the formatting. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - - - Logs a formatted message string with the level. - - An that supplies culture-specific formatting information - A String containing zero or more format items - An Object array containing zero or more objects to format - - - The message is formatted using the String.Format method. See - for details of the syntax of the format string and the behavior - of the formatting. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - - - Checks if this logger is enabled for the level. - - - true if this logger is enabled for events, false otherwise. - - - - This function is intended to lessen the computational cost of - disabled log debug statements. - - For some ILog interface log, when you write: - - log.Debug("This is entry number: " + i ); - - - You incur the cost constructing the message, string construction and concatenation in - this case, regardless of whether the message is logged or not. - - - If you are worried about speed (who isn't), then you should write: - - - if (log.IsDebugEnabled) - { - log.Debug("This is entry number: " + i ); - } - - - This way you will not incur the cost of parameter - construction if debugging is disabled for log. On - the other hand, if the log is debug enabled, you - will incur the cost of evaluating whether the logger is debug - enabled twice. Once in and once in - the . This is an insignificant overhead - since evaluating a logger takes about 1% of the time it - takes to actually log. This is the preferred style of logging. - - Alternatively if your logger is available statically then the is debug - enabled state can be stored in a static variable like this: - - - private static readonly bool isDebugEnabled = log.IsDebugEnabled; - - - Then when you come to log you can write: - - - if (isDebugEnabled) - { - log.Debug("This is entry number: " + i ); - } - - - This way the debug enabled state is only queried once - when the class is loaded. Using a private static readonly - variable is the most efficient because it is a run time constant - and can be heavily optimized by the JIT compiler. - - - Of course if you use a static readonly variable to - hold the enabled state of the logger then you cannot - change the enabled state at runtime to vary the logging - that is produced. You have to decide if you need absolute - speed or runtime flexibility. - - - - - - - - Checks if this logger is enabled for the level. - - - true if this logger is enabled for events, false otherwise. - - - For more information see . - - - - - - - - Checks if this logger is enabled for the level. - - - true if this logger is enabled for events, false otherwise. - - - For more information see . - - - - - - - - Checks if this logger is enabled for the level. - - - true if this logger is enabled for events, false otherwise. - - - For more information see . - - - - - - - - Checks if this logger is enabled for the level. - - - true if this logger is enabled for events, false otherwise. - - - For more information see . - - - - - - - - Construct a new wrapper for the specified logger. - - The logger to wrap. - - - Construct a new wrapper for the specified logger. - - - - - - Virtual method called when the configuration of the repository changes - - the repository holding the levels - - - Virtual method called when the configuration of the repository changes - - - - - - Logs a message object with the DEBUG level. - - The message object to log. - - - This method first checks if this logger is DEBUG - enabled by comparing the level of this logger with the - DEBUG level. If this logger is - DEBUG enabled, then it converts the message object - (passed as parameter) to a string by invoking the appropriate - . It then - proceeds to call all the registered appenders in this logger - and also higher in the hierarchy depending on the value of the - additivity flag. - - - WARNING Note that passing an - to this method will print the name of the - but no stack trace. To print a stack trace use the - form instead. - - - - - - Logs a message object with the DEBUG level - - The message object to log. - The exception to log, including its stack trace. - - - Logs a message object with the DEBUG level including - the stack trace of the passed - as a parameter. - - - See the form for more detailed information. - - - - - - - Logs a formatted message string with the DEBUG level. - - A String containing zero or more format items - An Object array containing zero or more objects to format - - - The message is formatted using the method. See - String.Format for details of the syntax of the format string and the behavior - of the formatting. - - - The string is formatted using the - format provider. To specify a localized provider use the - method. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - Logs a formatted message string with the DEBUG level. - - A String containing zero or more format items - An Object to format - - - The message is formatted using the method. See - String.Format for details of the syntax of the format string and the behavior - of the formatting. - - - The string is formatted using the - format provider. To specify a localized provider use the - method. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - Logs a formatted message string with the DEBUG level. - - A String containing zero or more format items - An Object to format - An Object to format - - - The message is formatted using the method. See - String.Format for details of the syntax of the format string and the behavior - of the formatting. - - - The string is formatted using the - format provider. To specify a localized provider use the - method. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - Logs a formatted message string with the DEBUG level. - - A String containing zero or more format items - An Object to format - An Object to format - An Object to format - - - The message is formatted using the method. See - String.Format for details of the syntax of the format string and the behavior - of the formatting. - - - The string is formatted using the - format provider. To specify a localized provider use the - method. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - Logs a formatted message string with the DEBUG level. - - An that supplies culture-specific formatting information - A String containing zero or more format items - An Object array containing zero or more objects to format - - - The message is formatted using the method. See - String.Format for details of the syntax of the format string and the behavior - of the formatting. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - Logs a message object with the INFO level. - - The message object to log. - - - This method first checks if this logger is INFO - enabled by comparing the level of this logger with the - INFO level. If this logger is - INFO enabled, then it converts the message object - (passed as parameter) to a string by invoking the appropriate - . It then - proceeds to call all the registered appenders in this logger - and also higher in the hierarchy depending on the value of - the additivity flag. - - - WARNING Note that passing an - to this method will print the name of the - but no stack trace. To print a stack trace use the - form instead. - - - - - - Logs a message object with the INFO level. - - The message object to log. - The exception to log, including its stack trace. - - - Logs a message object with the INFO level including - the stack trace of the - passed as a parameter. - - - See the form for more detailed information. - - - - - - - Logs a formatted message string with the INFO level. - - A String containing zero or more format items - An Object array containing zero or more objects to format - - - The message is formatted using the method. See - String.Format for details of the syntax of the format string and the behavior - of the formatting. - - - The string is formatted using the - format provider. To specify a localized provider use the - method. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - Logs a formatted message string with the INFO level. - - A String containing zero or more format items - An Object to format - - - The message is formatted using the method. See - String.Format for details of the syntax of the format string and the behavior - of the formatting. - - - The string is formatted using the - format provider. To specify a localized provider use the - method. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - Logs a formatted message string with the INFO level. - - A String containing zero or more format items - An Object to format - An Object to format - - - The message is formatted using the method. See - String.Format for details of the syntax of the format string and the behavior - of the formatting. - - - The string is formatted using the - format provider. To specify a localized provider use the - method. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - Logs a formatted message string with the INFO level. - - A String containing zero or more format items - An Object to format - An Object to format - An Object to format - - - The message is formatted using the method. See - String.Format for details of the syntax of the format string and the behavior - of the formatting. - - - The string is formatted using the - format provider. To specify a localized provider use the - method. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - Logs a formatted message string with the INFO level. - - An that supplies culture-specific formatting information - A String containing zero or more format items - An Object array containing zero or more objects to format - - - The message is formatted using the method. See - String.Format for details of the syntax of the format string and the behavior - of the formatting. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - Logs a message object with the WARN level. - - the message object to log - - - This method first checks if this logger is WARN - enabled by comparing the level of this logger with the - WARN level. If this logger is - WARN enabled, then it converts the message object - (passed as parameter) to a string by invoking the appropriate - . It then - proceeds to call all the registered appenders in this logger and - also higher in the hierarchy depending on the value of the - additivity flag. - - - WARNING Note that passing an to this - method will print the name of the but no - stack trace. To print a stack trace use the - form instead. - - - - - - Logs a message object with the WARN level - - The message object to log. - The exception to log, including its stack trace. - - - Logs a message object with the WARN level including - the stack trace of the - passed as a parameter. - - - See the form for more detailed information. - - - - - - - Logs a formatted message string with the WARN level. - - A String containing zero or more format items - An Object array containing zero or more objects to format - - - The message is formatted using the method. See - String.Format for details of the syntax of the format string and the behavior - of the formatting. - - - The string is formatted using the - format provider. To specify a localized provider use the - method. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - Logs a formatted message string with the WARN level. - - A String containing zero or more format items - An Object to format - - - The message is formatted using the method. See - String.Format for details of the syntax of the format string and the behavior - of the formatting. - - - The string is formatted using the - format provider. To specify a localized provider use the - method. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - Logs a formatted message string with the WARN level. - - A String containing zero or more format items - An Object to format - An Object to format - - - The message is formatted using the method. See - String.Format for details of the syntax of the format string and the behavior - of the formatting. - - - The string is formatted using the - format provider. To specify a localized provider use the - method. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - Logs a formatted message string with the WARN level. - - A String containing zero or more format items - An Object to format - An Object to format - An Object to format - - - The message is formatted using the method. See - String.Format for details of the syntax of the format string and the behavior - of the formatting. - - - The string is formatted using the - format provider. To specify a localized provider use the - method. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - Logs a formatted message string with the WARN level. - - An that supplies culture-specific formatting information - A String containing zero or more format items - An Object array containing zero or more objects to format - - - The message is formatted using the method. See - String.Format for details of the syntax of the format string and the behavior - of the formatting. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - Logs a message object with the ERROR level. - - The message object to log. - - - This method first checks if this logger is ERROR - enabled by comparing the level of this logger with the - ERROR level. If this logger is - ERROR enabled, then it converts the message object - (passed as parameter) to a string by invoking the appropriate - . It then - proceeds to call all the registered appenders in this logger and - also higher in the hierarchy depending on the value of the - additivity flag. - - - WARNING Note that passing an to this - method will print the name of the but no - stack trace. To print a stack trace use the - form instead. - - - - - - Logs a message object with the ERROR level - - The message object to log. - The exception to log, including its stack trace. - - - Logs a message object with the ERROR level including - the stack trace of the - passed as a parameter. - - - See the form for more detailed information. - - - - - - - Logs a formatted message string with the ERROR level. - - A String containing zero or more format items - An Object array containing zero or more objects to format - - - The message is formatted using the method. See - String.Format for details of the syntax of the format string and the behavior - of the formatting. - - - The string is formatted using the - format provider. To specify a localized provider use the - method. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - Logs a formatted message string with the ERROR level. - - A String containing zero or more format items - An Object to format - - - The message is formatted using the method. See - String.Format for details of the syntax of the format string and the behavior - of the formatting. - - - The string is formatted using the - format provider. To specify a localized provider use the - method. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - Logs a formatted message string with the ERROR level. - - A String containing zero or more format items - An Object to format - An Object to format - - - The message is formatted using the method. See - String.Format for details of the syntax of the format string and the behavior - of the formatting. - - - The string is formatted using the - format provider. To specify a localized provider use the - method. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - Logs a formatted message string with the ERROR level. - - A String containing zero or more format items - An Object to format - An Object to format - An Object to format - - - The message is formatted using the method. See - String.Format for details of the syntax of the format string and the behavior - of the formatting. - - - The string is formatted using the - format provider. To specify a localized provider use the - method. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - Logs a formatted message string with the ERROR level. - - An that supplies culture-specific formatting information - A String containing zero or more format items - An Object array containing zero or more objects to format - - - The message is formatted using the method. See - String.Format for details of the syntax of the format string and the behavior - of the formatting. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - Logs a message object with the FATAL level. - - The message object to log. - - - This method first checks if this logger is FATAL - enabled by comparing the level of this logger with the - FATAL level. If this logger is - FATAL enabled, then it converts the message object - (passed as parameter) to a string by invoking the appropriate - . It then - proceeds to call all the registered appenders in this logger and - also higher in the hierarchy depending on the value of the - additivity flag. - - - WARNING Note that passing an to this - method will print the name of the but no - stack trace. To print a stack trace use the - form instead. - - - - - - Logs a message object with the FATAL level - - The message object to log. - The exception to log, including its stack trace. - - - Logs a message object with the FATAL level including - the stack trace of the - passed as a parameter. - - - See the form for more detailed information. - - - - - - - Logs a formatted message string with the FATAL level. - - A String containing zero or more format items - An Object array containing zero or more objects to format - - - The message is formatted using the method. See - String.Format for details of the syntax of the format string and the behavior - of the formatting. - - - The string is formatted using the - format provider. To specify a localized provider use the - method. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - Logs a formatted message string with the FATAL level. - - A String containing zero or more format items - An Object to format - - - The message is formatted using the method. See - String.Format for details of the syntax of the format string and the behavior - of the formatting. - - - The string is formatted using the - format provider. To specify a localized provider use the - method. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - Logs a formatted message string with the FATAL level. - - A String containing zero or more format items - An Object to format - An Object to format - - - The message is formatted using the method. See - String.Format for details of the syntax of the format string and the behavior - of the formatting. - - - The string is formatted using the - format provider. To specify a localized provider use the - method. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - Logs a formatted message string with the FATAL level. - - A String containing zero or more format items - An Object to format - An Object to format - An Object to format - - - The message is formatted using the method. See - String.Format for details of the syntax of the format string and the behavior - of the formatting. - - - The string is formatted using the - format provider. To specify a localized provider use the - method. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - Logs a formatted message string with the FATAL level. - - An that supplies culture-specific formatting information - A String containing zero or more format items - An Object array containing zero or more objects to format - - - The message is formatted using the method. See - String.Format for details of the syntax of the format string and the behavior - of the formatting. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - Event handler for the event - - the repository - Empty - - - - The fully qualified name of this declaring type not the type of any subclass. - - - - - Checks if this logger is enabled for the DEBUG - level. - - - true if this logger is enabled for DEBUG events, - false otherwise. - - - - This function is intended to lessen the computational cost of - disabled log debug statements. - - - For some log Logger object, when you write: - - - log.Debug("This is entry number: " + i ); - - - You incur the cost constructing the message, concatenation in - this case, regardless of whether the message is logged or not. - - - If you are worried about speed, then you should write: - - - if (log.IsDebugEnabled()) - { - log.Debug("This is entry number: " + i ); - } - - - This way you will not incur the cost of parameter - construction if debugging is disabled for log. On - the other hand, if the log is debug enabled, you - will incur the cost of evaluating whether the logger is debug - enabled twice. Once in IsDebugEnabled and once in - the Debug. This is an insignificant overhead - since evaluating a logger takes about 1% of the time it - takes to actually log. - - - - - - Checks if this logger is enabled for the INFO level. - - - true if this logger is enabled for INFO events, - false otherwise. - - - - See for more information and examples - of using this method. - - - - - - - Checks if this logger is enabled for the WARN level. - - - true if this logger is enabled for WARN events, - false otherwise. - - - - See for more information and examples - of using this method. - - - - - - - Checks if this logger is enabled for the ERROR level. - - - true if this logger is enabled for ERROR events, - false otherwise. - - - - See for more information and examples of using this method. - - - - - - - Checks if this logger is enabled for the FATAL level. - - - true if this logger is enabled for FATAL events, - false otherwise. - - - - See for more information and examples of using this method. - - - - - - - A SecurityContext used by log4net when interacting with protected resources - - - - A SecurityContext used by log4net when interacting with protected resources - for example with operating system services. This can be used to impersonate - a principal that has been granted privileges on the system resources. - - - Nicko Cadell - - - - Impersonate this SecurityContext - - State supplied by the caller - An instance that will - revoke the impersonation of this SecurityContext, or null - - - Impersonate this security context. Further calls on the current - thread should now be made in the security context provided - by this object. When the result - method is called the security - context of the thread should be reverted to the state it was in - before was called. - - - - - - The providers default instances. - - - - A configured component that interacts with potentially protected system - resources uses a to provide the elevated - privileges required. If the object has - been not been explicitly provided to the component then the component - will request one from this . - - - By default the is - an instance of which returns only - objects. This is a reasonable default - where the privileges required are not know by the system. - - - This default behavior can be overridden by subclassing the - and overriding the method to return - the desired objects. The default provider - can be replaced by programmatically setting the value of the - property. - - - An alternative is to use the log4net.Config.SecurityContextProviderAttribute - This attribute can be applied to an assembly in the same way as the - log4net.Config.XmlConfiguratorAttribute". The attribute takes - the type to use as the as an argument. - - - Nicko Cadell - - - - The default provider - - - - - Protected default constructor to allow subclassing - - - - Protected default constructor to allow subclassing - - - - - - Create a SecurityContext for a consumer - - The consumer requesting the SecurityContext - An impersonation context - - - The default implementation is to return a . - - - Subclasses should override this method to provide their own - behavior. - - - - - - Gets or sets the default SecurityContextProvider - - - The default SecurityContextProvider - - - - The default provider is used by configured components that - require a and have not had one - given to them. - - - By default this is an instance of - that returns objects. - - - The default provider can be set programmatically by setting - the value of this property to a sub class of - that has the desired behavior. - - - - - - Delegate used to handle creation of new wrappers. - - The logger to wrap in a wrapper. - - - Delegate used to handle creation of new wrappers. This delegate - is called from the - method to construct the wrapper for the specified logger. - - - The delegate to use is supplied to the - constructor. - - - - - - Maps between logger objects and wrapper objects. - - - - This class maintains a mapping between objects and - objects. Use the method to - lookup the for the specified . - - - New wrapper instances are created by the - method. The default behavior is for this method to delegate construction - of the wrapper to the delegate supplied - to the constructor. This allows specialization of the behavior without - requiring subclassing of this type. - - - Nicko Cadell - Gert Driesen - - - - Initializes a new instance of the - - The handler to use to create the wrapper objects. - - - Initializes a new instance of the class with - the specified handler to create the wrapper objects. - - - - - - Gets the wrapper object for the specified logger. - - The wrapper object for the specified logger - - - If the logger is null then the corresponding wrapper is null. - - - Looks up the wrapper it it has previously been requested and - returns it. If the wrapper has never been requested before then - the virtual method is - called. - - - - - - Creates the wrapper object for the specified logger. - - The logger to wrap in a wrapper. - The wrapper object for the logger. - - - This implementation uses the - passed to the constructor to create the wrapper. This method - can be overridden in a subclass. - - - - - - Called when a monitored repository shutdown event is received. - - The that is shutting down - - - This method is called when a that this - is holding loggers for has signaled its shutdown - event . The default - behavior of this method is to release the references to the loggers - and their wrappers generated for this repository. - - - - - - Event handler for repository shutdown event. - - The sender of the event. - The event args. - - - - Map of logger repositories to hashtables of ILogger to ILoggerWrapper mappings - - - - - The handler to use to create the extension wrapper objects. - - - - - Internal reference to the delegate used to register for repository shutdown events. - - - - - Gets the map of logger repositories. - - - Map of logger repositories. - - - - Gets the hashtable that is keyed on . The - values are hashtables keyed on with the - value being the corresponding . - - - - - - Formats a as "HH:mm:ss,fff". - - - - Formats a in the format "HH:mm:ss,fff" for example, "15:49:37,459". - - - Nicko Cadell - Gert Driesen - - - - Render a as a string. - - - - Interface to abstract the rendering of a - instance into a string. - - - The method is used to render the - date to a text writer. - - - Nicko Cadell - Gert Driesen - - - - Formats the specified date as a string. - - The date to format. - The writer to write to. - - - Format the as a string and write it - to the provided. - - - - - - String constant used to specify AbsoluteTimeDateFormat in layouts. Current value is ABSOLUTE. - - - - - String constant used to specify DateTimeDateFormat in layouts. Current value is DATE. - - - - - String constant used to specify ISO8601DateFormat in layouts. Current value is ISO8601. - - - - - Renders the date into a string. Format is "HH:mm:ss". - - The date to render into a string. - The string builder to write to. - - - Subclasses should override this method to render the date - into a string using a precision up to the second. This method - will be called at most once per second and the result will be - reused if it is needed again during the same second. - - - - - - Renders the date into a string. Format is "HH:mm:ss,fff". - - The date to render into a string. - The writer to write to. - - - Uses the method to generate the - time string up to the seconds and then appends the current - milliseconds. The results from are - cached and is called at most once - per second. - - - Sub classes should override - rather than . - - - - - - Last stored time with precision up to the second. - - - - - Last stored time with precision up to the second, formatted - as a string. - - - - - Last stored time with precision up to the second, formatted - as a string. - - - - - Formats a as "dd MMM yyyy HH:mm:ss,fff" - - - - Formats a in the format - "dd MMM yyyy HH:mm:ss,fff" for example, - "06 Nov 1994 15:49:37,459". - - - Nicko Cadell - Gert Driesen - Angelika Schnagl - - - - Default constructor. - - - - Initializes a new instance of the class. - - - - - - Formats the date without the milliseconds part - - The date to format. - The string builder to write to. - - - Formats a DateTime in the format "dd MMM yyyy HH:mm:ss" - for example, "06 Nov 1994 15:49:37". - - - The base class will append the ",fff" milliseconds section. - This method will only be called at most once per second. - - - - - - The format info for the invariant culture. - - - - - Formats the as "yyyy-MM-dd HH:mm:ss,fff". - - - - Formats the specified as a string: "yyyy-MM-dd HH:mm:ss,fff". - - - Nicko Cadell - Gert Driesen - - - - Default constructor - - - - Initializes a new instance of the class. - - - - - - Formats the date without the milliseconds part - - The date to format. - The string builder to write to. - - - Formats the date specified as a string: "yyyy-MM-dd HH:mm:ss". - - - The base class will append the ",fff" milliseconds section. - This method will only be called at most once per second. - - - - - - Formats the using the method. - - - - Formats the using the method. - - - Nicko Cadell - Gert Driesen - - - - Constructor - - The format string. - - - Initializes a new instance of the class - with the specified format string. - - - The format string must be compatible with the options - that can be supplied to . - - - - - - Formats the date using . - - The date to convert to a string. - The writer to write to. - - - Uses the date format string supplied to the constructor to call - the method to format the date. - - - - - - The format string used to format the . - - - - The format string must be compatible with the options - that can be supplied to . - - - - - - This filter drops all . - - - - You can add this filter to the end of a filter chain to - switch from the default "accept all unless instructed otherwise" - filtering behavior to a "deny all unless instructed otherwise" - behavior. - - - Nicko Cadell - Gert Driesen - - - - Subclass this type to implement customized logging event filtering - - - - Users should extend this class to implement customized logging - event filtering. Note that and - , the parent class of all standard - appenders, have built-in filtering rules. It is suggested that you - first use and understand the built-in rules before rushing to write - your own custom filters. - - - This abstract class assumes and also imposes that filters be - organized in a linear chain. The - method of each filter is called sequentially, in the order of their - addition to the chain. - - - The method must return one - of the integer constants , - or . - - - If the value is returned, then the log event is dropped - immediately without consulting with the remaining filters. - - - If the value is returned, then the next filter - in the chain is consulted. If there are no more filters in the - chain, then the log event is logged. Thus, in the presence of no - filters, the default behavior is to log all logging events. - - - If the value is returned, then the log - event is logged without consulting the remaining filters. - - - The philosophy of log4net filters is largely inspired from the - Linux ipchains. - - - Nicko Cadell - Gert Driesen - - - - Implement this interface to provide customized logging event filtering - - - - Users should implement this interface to implement customized logging - event filtering. Note that and - , the parent class of all standard - appenders, have built-in filtering rules. It is suggested that you - first use and understand the built-in rules before rushing to write - your own custom filters. - - - This abstract class assumes and also imposes that filters be - organized in a linear chain. The - method of each filter is called sequentially, in the order of their - addition to the chain. - - - The method must return one - of the integer constants , - or . - - - If the value is returned, then the log event is dropped - immediately without consulting with the remaining filters. - - - If the value is returned, then the next filter - in the chain is consulted. If there are no more filters in the - chain, then the log event is logged. Thus, in the presence of no - filters, the default behavior is to log all logging events. - - - If the value is returned, then the log - event is logged without consulting the remaining filters. - - - The philosophy of log4net filters is largely inspired from the - Linux ipchains. - - - Nicko Cadell - Gert Driesen - - - - Decide if the logging event should be logged through an appender. - - The LoggingEvent to decide upon - The decision of the filter - - - If the decision is , then the event will be - dropped. If the decision is , then the next - filter, if any, will be invoked. If the decision is then - the event will be logged without consulting with other filters in - the chain. - - - - - - Property to get and set the next filter - - - The next filter in the chain - - - - Filters are typically composed into chains. This property allows the next filter in - the chain to be accessed. - - - - - - Points to the next filter in the filter chain. - - - - See for more information. - - - - - - Initialize the filter with the options set - - - - This is part of the delayed object - activation scheme. The method must - be called on this object after the configuration properties have - been set. Until is called this - object is in an undefined state and must not be used. - - - If any of the configuration properties are modified then - must be called again. - - - Typically filter's options become active immediately on set, - however this method must still be called. - - - - - - Decide if the should be logged through an appender. - - The to decide upon - The decision of the filter - - - If the decision is , then the event will be - dropped. If the decision is , then the next - filter, if any, will be invoked. If the decision is then - the event will be logged without consulting with other filters in - the chain. - - - This method is marked abstract and must be implemented - in a subclass. - - - - - - Property to get and set the next filter - - - The next filter in the chain - - - - Filters are typically composed into chains. This property allows the next filter in - the chain to be accessed. - - - - - - Default constructor - - - - - Always returns the integer constant - - the LoggingEvent to filter - Always returns - - - Ignores the event being logged and just returns - . This can be used to change the default filter - chain behavior from to . This filter - should only be used as the last filter in the chain - as any further filters will be ignored! - - - - - - The return result from - - - - The return result from - - - - - - The log event must be dropped immediately without - consulting with the remaining filters, if any, in the chain. - - - - - This filter is neutral with respect to the log event. - The remaining filters, if any, should be consulted for a final decision. - - - - - The log event must be logged immediately without - consulting with the remaining filters, if any, in the chain. - - - - - This is a very simple filter based on matching. - - - - The filter admits two options and - . If there is an exact match between the value - of the option and the of the - , then the method returns in - case the option value is set - to true, if it is false then - is returned. If the does not match then - the result will be . - - - Nicko Cadell - Gert Driesen - - - - flag to indicate if the filter should on a match - - - - - the to match against - - - - - Default constructor - - - - - Tests if the of the logging event matches that of the filter - - the event to filter - see remarks - - - If the of the event matches the level of the - filter then the result of the function depends on the - value of . If it is true then - the function will return , it it is false then it - will return . If the does not match then - the result will be . - - - - - - when matching - - - - The property is a flag that determines - the behavior when a matching is found. If the - flag is set to true then the filter will the - logging event, otherwise it will the event. - - - The default is true i.e. to the event. - - - - - - The that the filter will match - - - - The level that this filter will attempt to match against the - level. If a match is found then - the result depends on the value of . - - - - - - This is a simple filter based on matching. - - - - The filter admits three options and - that determine the range of priorities that are matched, and - . If there is a match between the range - of priorities and the of the , then the - method returns in case the - option value is set to true, if it is false - then is returned. If there is no match, is returned. - - - Nicko Cadell - Gert Driesen - - - - Flag to indicate the behavior when matching a - - - - - the minimum value to match - - - - - the maximum value to match - - - - - Default constructor - - - - - Check if the event should be logged. - - the logging event to check - see remarks - - - If the of the logging event is outside the range - matched by this filter then - is returned. If the is matched then the value of - is checked. If it is true then - is returned, otherwise - is returned. - - - - - - when matching and - - - - The property is a flag that determines - the behavior when a matching is found. If the - flag is set to true then the filter will the - logging event, otherwise it will the event. - - - The default is true i.e. to the event. - - - - - - Set the minimum matched - - - - The minimum level that this filter will attempt to match against the - level. If a match is found then - the result depends on the value of . - - - - - - Sets the maximum matched - - - - The maximum level that this filter will attempt to match against the - level. If a match is found then - the result depends on the value of . - - - - - - Simple filter to match a string in the event's logger name. - - - - The works very similar to the . It admits two - options and . If the - of the starts - with the value of the option, then the - method returns in - case the option value is set to true, - if it is false then is returned. - - - Daniel Cazzulino - - - - Flag to indicate the behavior when we have a match - - - - - The logger name string to substring match against the event - - - - - Default constructor - - - - - Check if this filter should allow the event to be logged - - the event being logged - see remarks - - - The rendered message is matched against the . - If the equals the beginning of - the incoming () - then a match will have occurred. If no match occurs - this function will return - allowing other filters to check the event. If a match occurs then - the value of is checked. If it is - true then is returned otherwise - is returned. - - - - - - when matching - - - - The property is a flag that determines - the behavior when a matching is found. If the - flag is set to true then the filter will the - logging event, otherwise it will the event. - - - The default is true i.e. to the event. - - - - - - The that the filter will match - - - - This filter will attempt to match this value against logger name in - the following way. The match will be done against the beginning of the - logger name (using ). The match is - case sensitive. If a match is found then - the result depends on the value of . - - - - - - Simple filter to match a keyed string in the - - - - Simple filter to match a keyed string in the - - - As the MDC has been replaced with layered properties the - should be used instead. - - - Nicko Cadell - Gert Driesen - - - - Simple filter to match a string an event property - - - - Simple filter to match a string in the value for a - specific event property - - - Nicko Cadell - - - - Simple filter to match a string in the rendered message - - - - Simple filter to match a string in the rendered message - - - Nicko Cadell - Gert Driesen - - - - Flag to indicate the behavior when we have a match - - - - - The string to substring match against the message - - - - - A string regex to match - - - - - A regex object to match (generated from m_stringRegexToMatch) - - - - - Default constructor - - - - - Initialize and precompile the Regex if required - - - - This is part of the delayed object - activation scheme. The method must - be called on this object after the configuration properties have - been set. Until is called this - object is in an undefined state and must not be used. - - - If any of the configuration properties are modified then - must be called again. - - - - - - Check if this filter should allow the event to be logged - - the event being logged - see remarks - - - The rendered message is matched against the . - If the occurs as a substring within - the message then a match will have occurred. If no match occurs - this function will return - allowing other filters to check the event. If a match occurs then - the value of is checked. If it is - true then is returned otherwise - is returned. - - - - - - when matching or - - - - The property is a flag that determines - the behavior when a matching is found. If the - flag is set to true then the filter will the - logging event, otherwise it will the event. - - - The default is true i.e. to the event. - - - - - - Sets the static string to match - - - - The string that will be substring matched against - the rendered message. If the message contains this - string then the filter will match. If a match is found then - the result depends on the value of . - - - One of or - must be specified. - - - - - - Sets the regular expression to match - - - - The regular expression pattern that will be matched against - the rendered message. If the message matches this - pattern then the filter will match. If a match is found then - the result depends on the value of . - - - One of or - must be specified. - - - - - - The key to use to lookup the string from the event properties - - - - - Default constructor - - - - - Check if this filter should allow the event to be logged - - the event being logged - see remarks - - - The event property for the is matched against - the . - If the occurs as a substring within - the property value then a match will have occurred. If no match occurs - this function will return - allowing other filters to check the event. If a match occurs then - the value of is checked. If it is - true then is returned otherwise - is returned. - - - - - - The key to lookup in the event properties and then match against. - - - - The key name to use to lookup in the properties map of the - . The match will be performed against - the value of this property if it exists. - - - - - - Simple filter to match a string in the - - - - Simple filter to match a string in the - - - As the MDC has been replaced with named stacks stored in the - properties collections the should - be used instead. - - - Nicko Cadell - Gert Driesen - - - - Default constructor - - - - Sets the to "NDC". - - - - - - Write the event appdomain name to the output - - - - Writes the to the output writer. - - - Daniel Cazzulino - Nicko Cadell - - - - Abstract class that provides the formatting functionality that - derived classes need. - - - Conversion specifiers in a conversion patterns are parsed to - individual PatternConverters. Each of which is responsible for - converting a logging event in a converter specific manner. - - Nicko Cadell - - - - Abstract class that provides the formatting functionality that - derived classes need. - - - - Conversion specifiers in a conversion patterns are parsed to - individual PatternConverters. Each of which is responsible for - converting a logging event in a converter specific manner. - - - Nicko Cadell - Gert Driesen - - - - Initial buffer size - - - - - Maximum buffer size before it is recycled - - - - - Protected constructor - - - - Initializes a new instance of the class. - - - - - - Evaluate this pattern converter and write the output to a writer. - - that will receive the formatted result. - The state object on which the pattern converter should be executed. - - - Derived pattern converters must override this method in order to - convert conversion specifiers in the appropriate way. - - - - - - Set the next pattern converter in the chains - - the pattern converter that should follow this converter in the chain - the next converter - - - The PatternConverter can merge with its neighbor during this method (or a sub class). - Therefore the return value may or may not be the value of the argument passed in. - - - - - - Write the pattern converter to the writer with appropriate formatting - - that will receive the formatted result. - The state object on which the pattern converter should be executed. - - - This method calls to allow the subclass to perform - appropriate conversion of the pattern converter. If formatting options have - been specified via the then this method will - apply those formattings before writing the output. - - - - - - Fast space padding method. - - to which the spaces will be appended. - The number of spaces to be padded. - - - Fast space padding method. - - - - - - The option string to the converter - - - - - Write an dictionary to a - - the writer to write to - a to use for object conversion - the value to write to the writer - - - Writes the to a writer in the form: - - - {key1=value1, key2=value2, key3=value3} - - - If the specified - is not null then it is used to render the key and value to text, otherwise - the object's ToString method is called. - - - - - - Write an object to a - - the writer to write to - a to use for object conversion - the value to write to the writer - - - Writes the Object to a writer. If the specified - is not null then it is used to render the object to text, otherwise - the object's ToString method is called. - - - - - - Get the next pattern converter in the chain - - - the next pattern converter in the chain - - - - Get the next pattern converter in the chain - - - - - - Gets or sets the formatting info for this converter - - - The formatting info for this converter - - - - Gets or sets the formatting info for this converter - - - - - - Gets or sets the option value for this converter - - - The option for this converter - - - - Gets or sets the option value for this converter - - - - - - Initializes a new instance of the class. - - - - - Derived pattern converters must override this method in order to - convert conversion specifiers in the correct way. - - that will receive the formatted result. - The on which the pattern converter should be executed. - - - - Derived pattern converters must override this method in order to - convert conversion specifiers in the correct way. - - that will receive the formatted result. - The state object on which the pattern converter should be executed. - - - - Flag indicating if this converter handles exceptions - - - false if this converter handles exceptions - - - - - Flag indicating if this converter handles the logging event exception - - false if this converter handles the logging event exception - - - If this converter handles the exception object contained within - , then this property should be set to - false. Otherwise, if the layout ignores the exception - object, then the property should be set to true. - - - Set this value to override a this default setting. The default - value is true, this converter does not handle the exception. - - - - - - Write the event appdomain name to the output - - that will receive the formatted result. - the event being logged - - - Writes the to the output . - - - - - - Date pattern converter, uses a to format - the date of a . - - - - Render the to the writer as a string. - - - The value of the determines - the formatting of the date. The following values are allowed: - - - Option value - Output - - - ISO8601 - - Uses the formatter. - Formats using the "yyyy-MM-dd HH:mm:ss,fff" pattern. - - - - DATE - - Uses the formatter. - Formats using the "dd MMM yyyy HH:mm:ss,fff" for example, "06 Nov 1994 15:49:37,459". - - - - ABSOLUTE - - Uses the formatter. - Formats using the "HH:mm:ss,yyyy" for example, "15:49:37,459". - - - - other - - Any other pattern string uses the formatter. - This formatter passes the pattern string to the - method. - For details on valid patterns see - DateTimeFormatInfo Class. - - - - - - The is in the local time zone and is rendered in that zone. - To output the time in Universal time see . - - - Nicko Cadell - - - - The used to render the date to a string - - - - The used to render the date to a string - - - - - - Initialize the converter pattern based on the property. - - - - This is part of the delayed object - activation scheme. The method must - be called on this object after the configuration properties have - been set. Until is called this - object is in an undefined state and must not be used. - - - If any of the configuration properties are modified then - must be called again. - - - - - - Convert the pattern into the rendered message - - that will receive the formatted result. - the event being logged - - - Pass the to the - for it to render it to the writer. - - - The passed is in the local time zone. - - - - - - Write the exception text to the output - - - - If an exception object is stored in the logging event - it will be rendered into the pattern output with a - trailing newline. - - - If there is no exception then nothing will be output - and no trailing newline will be appended. - It is typical to put a newline before the exception - and to have the exception as the last data in the pattern. - - - Nicko Cadell - - - - Default constructor - - - - - Write the exception text to the output - - that will receive the formatted result. - the event being logged - - - If an exception object is stored in the logging event - it will be rendered into the pattern output with a - trailing newline. - - - If there is no exception then nothing will be output - and no trailing newline will be appended. - It is typical to put a newline before the exception - and to have the exception as the last data in the pattern. - - - - - - Writes the caller location file name to the output - - - - Writes the value of the for - the event to the output writer. - - - Nicko Cadell - - - - Write the caller location file name to the output - - that will receive the formatted result. - the event being logged - - - Writes the value of the for - the to the output . - - - - - - Write the caller location info to the output - - - - Writes the to the output writer. - - - Nicko Cadell - - - - Write the caller location info to the output - - that will receive the formatted result. - the event being logged - - - Writes the to the output writer. - - - - - - Writes the event identity to the output - - - - Writes the value of the to - the output writer. - - - Daniel Cazzulino - Nicko Cadell - - - - Writes the event identity to the output - - that will receive the formatted result. - the event being logged - - - Writes the value of the - to - the output . - - - - - - Write the event level to the output - - - - Writes the display name of the event - to the writer. - - - Nicko Cadell - - - - Write the event level to the output - - that will receive the formatted result. - the event being logged - - - Writes the of the - to the . - - - - - - Write the caller location line number to the output - - - - Writes the value of the for - the event to the output writer. - - - Nicko Cadell - - - - Write the caller location line number to the output - - that will receive the formatted result. - the event being logged - - - Writes the value of the for - the to the output . - - - - - - Converter for logger name - - - - Outputs the of the event. - - - Nicko Cadell - - - - Converter to output and truncate '.' separated strings - - - - This abstract class supports truncating a '.' separated string - to show a specified number of elements from the right hand side. - This is used to truncate class names that are fully qualified. - - - Subclasses should override the method to - return the fully qualified string. - - - Nicko Cadell - - - - Initialize the converter - - - - This is part of the delayed object - activation scheme. The method must - be called on this object after the configuration properties have - been set. Until is called this - object is in an undefined state and must not be used. - - - If any of the configuration properties are modified then - must be called again. - - - - - - Get the fully qualified string data - - the event being logged - the fully qualified name - - - Overridden by subclasses to get the fully qualified name before the - precision is applied to it. - - - Return the fully qualified '.' (dot/period) separated string. - - - - - - Convert the pattern to the rendered message - - that will receive the formatted result. - the event being logged - - Render the to the precision - specified by the property. - - - - - Gets the fully qualified name of the logger - - the event being logged - The fully qualified logger name - - - Returns the of the . - - - - - - Writes the event message to the output - - - - Uses the method - to write out the event message. - - - Nicko Cadell - - - - Writes the event message to the output - - that will receive the formatted result. - the event being logged - - - Uses the method - to write out the event message. - - - - - - Write the method name to the output - - - - Writes the caller location to - the output. - - - Nicko Cadell - - - - Write the method name to the output - - that will receive the formatted result. - the event being logged - - - Writes the caller location to - the output. - - - - - - Converter to include event NDC - - - - Outputs the value of the event property named NDC. - - - The should be used instead. - - - Nicko Cadell - - - - Write the event NDC to the output - - that will receive the formatted result. - the event being logged - - - As the thread context stacks are now stored in named event properties - this converter simply looks up the value of the NDC property. - - - The should be used instead. - - - - - - Property pattern converter - - - - Writes out the value of a named property. The property name - should be set in the - property. - - - If the is set to null - then all the properties are written as key value pairs. - - - Nicko Cadell - - - - Write the property value to the output - - that will receive the formatted result. - the event being logged - - - Writes out the value of a named property. The property name - should be set in the - property. - - - If the is set to null - then all the properties are written as key value pairs. - - - - - - Converter to output the relative time of the event - - - - Converter to output the time of the event relative to the start of the program. - - - Nicko Cadell - - - - Write the relative time to the output - - that will receive the formatted result. - the event being logged - - - Writes out the relative time of the event in milliseconds. - That is the number of milliseconds between the event - and the . - - - - - - Helper method to get the time difference between two DateTime objects - - start time (in the current local time zone) - end time (in the current local time zone) - the time difference in milliseconds - - - - Converter to include event thread name - - - - Writes the to the output. - - - Nicko Cadell - - - - Write the ThreadName to the output - - that will receive the formatted result. - the event being logged - - - Writes the to the . - - - - - - Pattern converter for the class name - - - - Outputs the of the event. - - - Nicko Cadell - - - - Gets the fully qualified name of the class - - the event being logged - The fully qualified type name for the caller location - - - Returns the of the . - - - - - - Converter to include event user name - - Douglas de la Torre - Nicko Cadell - - - - Convert the pattern to the rendered message - - that will receive the formatted result. - the event being logged - - - - Write the TimeStamp to the output - - - - Date pattern converter, uses a to format - the date of a . - - - Uses a to format the - in Universal time. - - - See the for details on the date pattern syntax. - - - - Nicko Cadell - - - - Write the TimeStamp to the output - - that will receive the formatted result. - the event being logged - - - Pass the to the - for it to render it to the writer. - - - The passed is in the local time zone, this is converted - to Universal time before it is rendered. - - - - - - - A Layout that renders only the Exception text from the logging event - - - - A Layout that renders only the Exception text from the logging event. - - - This Layout should only be used with appenders that utilize multiple - layouts (e.g. ). - - - Nicko Cadell - Gert Driesen - - - - Extend this abstract class to create your own log layout format. - - - - This is the base implementation of the - interface. Most layout objects should extend this class. - - - - - - Subclasses must implement the - method. - - - Subclasses should set the in their default - constructor. - - - - Nicko Cadell - Gert Driesen - - - - Interface implemented by layout objects - - - - An object is used to format a - as text. The method is called by an - appender to transform the into a string. - - - The layout can also supply and - text that is appender before any events and after all the events respectively. - - - Nicko Cadell - Gert Driesen - - - - Implement this method to create your own layout format. - - The TextWriter to write the formatted event to - The event to format - - - This method is called by an appender to format - the as text and output to a writer. - - - If the caller does not have a and prefers the - event to be formatted as a then the following - code can be used to format the event into a . - - - StringWriter writer = new StringWriter(); - Layout.Format(writer, loggingEvent); - string formattedEvent = writer.ToString(); - - - - - - The content type output by this layout. - - The content type - - - The content type output by this layout. - - - This is a MIME type e.g. "text/plain". - - - - - - The header for the layout format. - - the layout header - - - The Header text will be appended before any logging events - are formatted and appended. - - - - - - The footer for the layout format. - - the layout footer - - - The Footer text will be appended after all the logging events - have been formatted and appended. - - - - - - Flag indicating if this layout handle exceptions - - false if this layout handles exceptions - - - If this layout handles the exception object contained within - , then the layout should return - false. Otherwise, if the layout ignores the exception - object, then the layout should return true. - - - - - - The header text - - - - See for more information. - - - - - - The footer text - - - - See for more information. - - - - - - Flag indicating if this layout handles exceptions - - - - false if this layout handles exceptions - - - - - - Empty default constructor - - - - Empty default constructor - - - - - - Activate component options - - - - This is part of the delayed object - activation scheme. The method must - be called on this object after the configuration properties have - been set. Until is called this - object is in an undefined state and must not be used. - - - If any of the configuration properties are modified then - must be called again. - - - This method must be implemented by the subclass. - - - - - - Implement this method to create your own layout format. - - The TextWriter to write the formatted event to - The event to format - - - This method is called by an appender to format - the as text. - - - - - - The content type output by this layout. - - The content type is "text/plain" - - - The content type output by this layout. - - - This base class uses the value "text/plain". - To change this value a subclass must override this - property. - - - - - - The header for the layout format. - - the layout header - - - The Header text will be appended before any logging events - are formatted and appended. - - - - - - The footer for the layout format. - - the layout footer - - - The Footer text will be appended after all the logging events - have been formatted and appended. - - - - - - Flag indicating if this layout handles exceptions - - false if this layout handles exceptions - - - If this layout handles the exception object contained within - , then the layout should return - false. Otherwise, if the layout ignores the exception - object, then the layout should return true. - - - Set this value to override a this default setting. The default - value is true, this layout does not handle the exception. - - - - - - Default constructor - - - - Constructs a ExceptionLayout - - - - - - Activate component options - - - - Part of the component activation - framework. - - - This method does nothing as options become effective immediately. - - - - - - Gets the exception text from the logging event - - The TextWriter to write the formatted event to - the event being logged - - - Write the exception string to the . - The exception string is retrieved from . - - - - - - Interface for raw layout objects - - - - Interface used to format a - to an object. - - - This interface should not be confused with the - interface. This interface is used in - only certain specialized situations where a raw object is - required rather than a formatted string. The - is not generally useful than this interface. - - - Nicko Cadell - Gert Driesen - - - - Implement this method to create your own layout format. - - The event to format - returns the formatted event - - - Implement this method to create your own layout format. - - - - - - Adapts any to a - - - - Where an is required this adapter - allows a to be specified. - - - Nicko Cadell - Gert Driesen - - - - The layout to adapt - - - - - Construct a new adapter - - the layout to adapt - - - Create the adapter for the specified . - - - - - - Format the logging event as an object. - - The event to format - returns the formatted event - - - Format the logging event as an object. - - - Uses the object supplied to - the constructor to perform the formatting. - - - - - - A flexible layout configurable with pattern string. - - - - The goal of this class is to a - as a string. The results - depend on the conversion pattern. - - - The conversion pattern is closely related to the conversion - pattern of the printf function in C. A conversion pattern is - composed of literal text and format control expressions called - conversion specifiers. - - - You are free to insert any literal text within the conversion - pattern. - - - Each conversion specifier starts with a percent sign (%) and is - followed by optional format modifiers and a conversion - pattern name. The conversion pattern name specifies the type of - data, e.g. logger, level, date, thread name. The format - modifiers control such things as field width, padding, left and - right justification. The following is a simple example. - - - Let the conversion pattern be "%-5level [%thread]: %message%newline" and assume - that the log4net environment was set to use a PatternLayout. Then the - statements - - - ILog log = LogManager.GetLogger(typeof(TestApp)); - log.Debug("Message 1"); - log.Warn("Message 2"); - - would yield the output - - DEBUG [main]: Message 1 - WARN [main]: Message 2 - - - Note that there is no explicit separator between text and - conversion specifiers. The pattern parser knows when it has reached - the end of a conversion specifier when it reads a conversion - character. In the example above the conversion specifier - %-5level means the level of the logging event should be left - justified to a width of five characters. - - - The recognized conversion pattern names are: - - - - Conversion Pattern Name - Effect - - - a - Equivalent to appdomain - - - appdomain - - Used to output the friendly name of the AppDomain where the - logging event was generated. - - - - c - Equivalent to logger - - - C - Equivalent to type - - - class - Equivalent to type - - - d - Equivalent to date - - - date - - - Used to output the date of the logging event in the local time zone. - To output the date in universal time use the %utcdate pattern. - The date conversion - specifier may be followed by a date format specifier enclosed - between braces. For example, %date{HH:mm:ss,fff} or - %date{dd MMM yyyy HH:mm:ss,fff}. If no date format specifier is - given then ISO8601 format is - assumed (). - - - The date format specifier admits the same syntax as the - time pattern string of the . - - - For better results it is recommended to use the log4net date - formatters. These can be specified using one of the strings - "ABSOLUTE", "DATE" and "ISO8601" for specifying - , - and respectively - . For example, - %date{ISO8601} or %date{ABSOLUTE}. - - - These dedicated date formatters perform significantly - better than . - - - - - exception - - - Used to output the exception passed in with the log message. - - - If an exception object is stored in the logging event - it will be rendered into the pattern output with a - trailing newline. - If there is no exception then nothing will be output - and no trailing newline will be appended. - It is typical to put a newline before the exception - and to have the exception as the last data in the pattern. - - - - - F - Equivalent to file - - - file - - - Used to output the file name where the logging request was - issued. - - - WARNING Generating caller location information is - extremely slow. Its use should be avoided unless execution speed - is not an issue. - - - See the note below on the availability of caller location information. - - - - - identity - - - Used to output the user name for the currently active user - (Principal.Identity.Name). - - - WARNING Generating caller information is - extremely slow. Its use should be avoided unless execution speed - is not an issue. - - - - - l - Equivalent to location - - - L - Equivalent to line - - - location - - - Used to output location information of the caller which generated - the logging event. - - - The location information depends on the CLI implementation but - usually consists of the fully qualified name of the calling - method followed by the callers source the file name and line - number between parentheses. - - - The location information can be very useful. However, its - generation is extremely slow. Its use should be avoided - unless execution speed is not an issue. - - - See the note below on the availability of caller location information. - - - - - level - - - Used to output the level of the logging event. - - - - - line - - - Used to output the line number from where the logging request - was issued. - - - WARNING Generating caller location information is - extremely slow. Its use should be avoided unless execution speed - is not an issue. - - - See the note below on the availability of caller location information. - - - - - logger - - - Used to output the logger of the logging event. The - logger conversion specifier can be optionally followed by - precision specifier, that is a decimal constant in - brackets. - - - If a precision specifier is given, then only the corresponding - number of right most components of the logger name will be - printed. By default the logger name is printed in full. - - - For example, for the logger name "a.b.c" the pattern - %logger{2} will output "b.c". - - - - - m - Equivalent to message - - - M - Equivalent to method - - - message - - - Used to output the application supplied message associated with - the logging event. - - - - - mdc - - - The MDC (old name for the ThreadContext.Properties) is now part of the - combined event properties. This pattern is supported for compatibility - but is equivalent to property. - - - - - method - - - Used to output the method name where the logging request was - issued. - - - WARNING Generating caller location information is - extremely slow. Its use should be avoided unless execution speed - is not an issue. - - - See the note below on the availability of caller location information. - - - - - n - Equivalent to newline - - - newline - - - Outputs the platform dependent line separator character or - characters. - - - This conversion pattern offers the same performance as using - non-portable line separator strings such as "\n", or "\r\n". - Thus, it is the preferred way of specifying a line separator. - - - - - ndc - - - Used to output the NDC (nested diagnostic context) associated - with the thread that generated the logging event. - - - - - p - Equivalent to level - - - P - Equivalent to property - - - properties - Equivalent to property - - - property - - - Used to output the an event specific property. The key to - lookup must be specified within braces and directly following the - pattern specifier, e.g. %property{user} would include the value - from the property that is keyed by the string 'user'. Each property value - that is to be included in the log must be specified separately. - Properties are added to events by loggers or appenders. By default - the log4net:HostName property is set to the name of machine on - which the event was originally logged. - - - If no key is specified, e.g. %property then all the keys and their - values are printed in a comma separated list. - - - The properties of an event are combined from a number of different - contexts. These are listed below in the order in which they are searched. - - - - the event properties - - The event has that can be set. These - properties are specific to this event only. - - - - the thread properties - - The that are set on the current - thread. These properties are shared by all events logged on this thread. - - - - the global properties - - The that are set globally. These - properties are shared by all the threads in the AppDomain. - - - - - - - - r - Equivalent to timestamp - - - t - Equivalent to thread - - - timestamp - - - Used to output the number of milliseconds elapsed since the start - of the application until the creation of the logging event. - - - - - thread - - - Used to output the name of the thread that generated the - logging event. Uses the thread number if no name is available. - - - - - type - - - Used to output the fully qualified type name of the caller - issuing the logging request. This conversion specifier - can be optionally followed by precision specifier, that - is a decimal constant in brackets. - - - If a precision specifier is given, then only the corresponding - number of right most components of the class name will be - printed. By default the class name is output in fully qualified form. - - - For example, for the class name "log4net.Layout.PatternLayout", the - pattern %type{1} will output "PatternLayout". - - - WARNING Generating the caller class information is - slow. Thus, its use should be avoided unless execution speed is - not an issue. - - - See the note below on the availability of caller location information. - - - - - u - Equivalent to identity - - - username - - - Used to output the WindowsIdentity for the currently - active user. - - - WARNING Generating caller WindowsIdentity information is - extremely slow. Its use should be avoided unless execution speed - is not an issue. - - - - - utcdate - - - Used to output the date of the logging event in universal time. - The date conversion - specifier may be followed by a date format specifier enclosed - between braces. For example, %utcdate{HH:mm:ss,fff} or - %utcdate{dd MMM yyyy HH:mm:ss,fff}. If no date format specifier is - given then ISO8601 format is - assumed (). - - - The date format specifier admits the same syntax as the - time pattern string of the . - - - For better results it is recommended to use the log4net date - formatters. These can be specified using one of the strings - "ABSOLUTE", "DATE" and "ISO8601" for specifying - , - and respectively - . For example, - %utcdate{ISO8601} or %utcdate{ABSOLUTE}. - - - These dedicated date formatters perform significantly - better than . - - - - - w - Equivalent to username - - - x - Equivalent to ndc - - - X - Equivalent to mdc - - - % - - - The sequence %% outputs a single percent sign. - - - - - - The single letter patterns are deprecated in favor of the - longer more descriptive pattern names. - - - By default the relevant information is output as is. However, - with the aid of format modifiers it is possible to change the - minimum field width, the maximum field width and justification. - - - The optional format modifier is placed between the percent sign - and the conversion pattern name. - - - The first optional format modifier is the left justification - flag which is just the minus (-) character. Then comes the - optional minimum field width modifier. This is a decimal - constant that represents the minimum number of characters to - output. If the data item requires fewer characters, it is padded on - either the left or the right until the minimum width is - reached. The default is to pad on the left (right justify) but you - can specify right padding with the left justification flag. The - padding character is space. If the data item is larger than the - minimum field width, the field is expanded to accommodate the - data. The value is never truncated. - - - This behavior can be changed using the maximum field - width modifier which is designated by a period followed by a - decimal constant. If the data item is longer than the maximum - field, then the extra characters are removed from the - beginning of the data item and not from the end. For - example, it the maximum field width is eight and the data item is - ten characters long, then the first two characters of the data item - are dropped. This behavior deviates from the printf function in C - where truncation is done from the end. - - - Below are various format modifier examples for the logger - conversion specifier. - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Format modifierleft justifyminimum widthmaximum widthcomment
%20loggerfalse20none - - Left pad with spaces if the logger name is less than 20 - characters long. - -
%-20loggertrue20none - - Right pad with spaces if the logger - name is less than 20 characters long. - -
%.30loggerNAnone30 - - Truncate from the beginning if the logger - name is longer than 30 characters. - -
%20.30loggerfalse2030 - - Left pad with spaces if the logger name is shorter than 20 - characters. However, if logger name is longer than 30 characters, - then truncate from the beginning. - -
%-20.30loggertrue2030 - - Right pad with spaces if the logger name is shorter than 20 - characters. However, if logger name is longer than 30 characters, - then truncate from the beginning. - -
-
- - Note about caller location information.
- The following patterns %type %file %line %method %location %class %C %F %L %l %M - all generate caller location information. - Location information uses the System.Diagnostics.StackTrace class to generate - a call stack. The caller's information is then extracted from this stack. -
- - - The System.Diagnostics.StackTrace class is not supported on the - .NET Compact Framework 1.0 therefore caller location information is not - available on that framework. - - - - - The System.Diagnostics.StackTrace class has this to say about Release builds: - - - "StackTrace information will be most informative with Debug build configurations. - By default, Debug builds include debug symbols, while Release builds do not. The - debug symbols contain most of the file, method name, line number, and column - information used in constructing StackFrame and StackTrace objects. StackTrace - might not report as many method calls as expected, due to code transformations - that occur during optimization." - - - This means that in a Release build the caller information may be incomplete or may - not exist at all! Therefore caller location information cannot be relied upon in a Release build. - - - - Additional pattern converters may be registered with a specific - instance using the method. - -
- - This is a more detailed pattern. - %timestamp [%thread] %level %logger %ndc - %message%newline - - - A similar pattern except that the relative time is - right padded if less than 6 digits, thread name is right padded if - less than 15 characters and truncated if longer and the logger - name is left padded if shorter than 30 characters and truncated if - longer. - %-6timestamp [%15.15thread] %-5level %30.30logger %ndc - %message%newline - - Nicko Cadell - Gert Driesen - Douglas de la Torre - Daniel Cazzulino -
- - - Default pattern string for log output. - - - - Default pattern string for log output. - Currently set to the string "%message%newline" - which just prints the application supplied message. - - - - - - A detailed conversion pattern - - - - A conversion pattern which includes Time, Thread, Logger, and Nested Context. - Current value is %timestamp [%thread] %level %logger %ndc - %message%newline. - - - - - - Internal map of converter identifiers to converter types. - - - - This static map is overridden by the m_converterRegistry instance map - - - - - - the pattern - - - - - the head of the pattern converter chain - - - - - patterns defined on this PatternLayout only - - - - - Initialize the global registry - - - - Defines the builtin global rules. - - - - - - Constructs a PatternLayout using the DefaultConversionPattern - - - - The default pattern just produces the application supplied message. - - - Note to Inheritors: This constructor calls the virtual method - . If you override this method be - aware that it will be called before your is called constructor. - - - As per the contract the - method must be called after the properties on this object have been - configured. - - - - - - Constructs a PatternLayout using the supplied conversion pattern - - the pattern to use - - - Note to Inheritors: This constructor calls the virtual method - . If you override this method be - aware that it will be called before your is called constructor. - - - When using this constructor the method - need not be called. This may not be the case when using a subclass. - - - - - - Create the pattern parser instance - - the pattern to parse - The that will format the event - - - Creates the used to parse the conversion string. Sets the - global and instance rules on the . - - - - - - Initialize layout options - - - - This is part of the delayed object - activation scheme. The method must - be called on this object after the configuration properties have - been set. Until is called this - object is in an undefined state and must not be used. - - - If any of the configuration properties are modified then - must be called again. - - - - - - Produces a formatted string as specified by the conversion pattern. - - the event being logged - The TextWriter to write the formatted event to - - - Parse the using the patter format - specified in the property. - - - - - - Add a converter to this PatternLayout - - the converter info - - - This version of the method is used by the configurator. - Programmatic users should use the alternative method. - - - - - - Add a converter to this PatternLayout - - the name of the conversion pattern for this converter - the type of the converter - - - Add a named pattern converter to this instance. This - converter will be used in the formatting of the event. - This method must be called before . - - - The specified must extend the - type. - - - - - - The pattern formatting string - - - - The ConversionPattern option. This is the string which - controls formatting and consists of a mix of literal content and - conversion specifiers. - - - - - - Wrapper class used to map converter names to converter types - - - - Pattern converter info class used during configuration to - pass to the - method. - - - - - - default constructor - - - - - Gets or sets the name of the conversion pattern - - - - The name of the pattern in the format string - - - - - - Gets or sets the type of the converter - - - - The value specified must extend the - type. - - - - - - Type converter for the interface - - - - Used to convert objects to the interface. - Supports converting from the interface to - the interface using the . - - - Nicko Cadell - Gert Driesen - - - - Interface supported by type converters - - - - This interface supports conversion from arbitrary types - to a single target type. See . - - - Nicko Cadell - Gert Driesen - - - - Can the source type be converted to the type supported by this object - - the type to convert - true if the conversion is possible - - - Test if the can be converted to the - type supported by this converter. - - - - - - Convert the source object to the type supported by this object - - the object to convert - the converted object - - - Converts the to the type supported - by this converter. - - - - - - Can the sourceType be converted to an - - the source to be to be converted - true if the source type can be converted to - - - Test if the can be converted to a - . Only is supported - as the . - - - - - - Convert the value to a object - - the value to convert - the object - - - Convert the object to a - object. If the object - is a then the - is used to adapt between the two interfaces, otherwise an - exception is thrown. - - - - - - Extract the value of a property from the - - - - Extract the value of a property from the - - - Nicko Cadell - - - - Constructs a RawPropertyLayout - - - - - Lookup the property for - - The event to format - returns property value - - - Looks up and returns the object value of the property - named . If there is no property defined - with than name then null will be returned. - - - - - - The name of the value to lookup in the LoggingEvent Properties collection. - - - Value to lookup in the LoggingEvent Properties collection - - - - String name of the property to lookup in the . - - - - - - Extract the date from the - - - - Extract the date from the - - - Nicko Cadell - Gert Driesen - - - - Constructs a RawTimeStampLayout - - - - - Gets the as a . - - The event to format - returns the time stamp - - - Gets the as a . - - - The time stamp is in local time. To format the time stamp - in universal time use . - - - - - - Extract the date from the - - - - Extract the date from the - - - Nicko Cadell - Gert Driesen - - - - Constructs a RawUtcTimeStampLayout - - - - - Gets the as a . - - The event to format - returns the time stamp - - - Gets the as a . - - - The time stamp is in universal time. To format the time stamp - in local time use . - - - - - - A very simple layout - - - - SimpleLayout consists of the level of the log statement, - followed by " - " and then the log message itself. For example, - - DEBUG - Hello world - - - - Nicko Cadell - Gert Driesen - - - - Constructs a SimpleLayout - - - - - Initialize layout options - - - - This is part of the delayed object - activation scheme. The method must - be called on this object after the configuration properties have - been set. Until is called this - object is in an undefined state and must not be used. - - - If any of the configuration properties are modified then - must be called again. - - - - - - Produces a simple formatted output. - - the event being logged - The TextWriter to write the formatted event to - - - Formats the event as the level of the even, - followed by " - " and then the log message itself. The - output is terminated by a newline. - - - - - - Layout that formats the log events as XML elements. - - - - The output of the consists of a series of - log4net:event elements. It does not output a complete well-formed XML - file. The output is designed to be included as an external entity - in a separate file to form a correct XML file. - - - For example, if abc is the name of the file where - the output goes, then a well-formed XML file would - be: - - - <?xml version="1.0" ?> - - <!DOCTYPE log4net:events SYSTEM "log4net-events.dtd" [<!ENTITY data SYSTEM "abc">]> - - <log4net:events version="1.2" xmlns:log4net="http://logging.apache.org/log4net/schemas/log4net-events-1.2> - &data; - </log4net:events> - - - This approach enforces the independence of the - and the appender where it is embedded. - - - The version attribute helps components to correctly - interpret output generated by . The value of - this attribute should be "1.2" for release 1.2 and later. - - - Alternatively the Header and Footer properties can be - configured to output the correct XML header, open tag and close tag. - When setting the Header and Footer properties it is essential - that the underlying data store not be appendable otherwise the data - will become invalid XML. - - - Nicko Cadell - Gert Driesen - - - - Layout that formats the log events as XML elements. - - - - This is an abstract class that must be subclassed by an implementation - to conform to a specific schema. - - - Deriving classes must implement the method. - - - Nicko Cadell - Gert Driesen - - - - Protected constructor to support subclasses - - - - Initializes a new instance of the class - with no location info. - - - - - - Protected constructor to support subclasses - - - - The parameter determines whether - location information will be output by the layout. If - is set to true, then the - file name and line number of the statement at the origin of the log - statement will be output. - - - If you are embedding this layout within an SMTPAppender - then make sure to set the LocationInfo option of that - appender as well. - - - - - - Initialize layout options - - - - This is part of the delayed object - activation scheme. The method must - be called on this object after the configuration properties have - been set. Until is called this - object is in an undefined state and must not be used. - - - If any of the configuration properties are modified then - must be called again. - - - - - - Produces a formatted string. - - The event being logged. - The TextWriter to write the formatted event to - - - Format the and write it to the . - - - This method creates an that writes to the - . The is passed - to the method. Subclasses should override the - method rather than this method. - - - - - - Does the actual writing of the XML. - - The writer to use to output the event to. - The event to write. - - - Subclasses should override this method to format - the as XML. - - - - - - Flag to indicate if location information should be included in - the XML events. - - - - - Writer adapter that ignores Close - - - - - The string to replace invalid chars with - - - - - Gets a value indicating whether to include location information in - the XML events. - - - true if location information should be included in the XML - events; otherwise, false. - - - - If is set to true, then the file - name and line number of the statement at the origin of the log - statement will be output. - - - If you are embedding this layout within an SMTPAppender - then make sure to set the LocationInfo option of that - appender as well. - - - - - - The string to replace characters that can not be expressed in XML with. - - - Not all characters may be expressed in XML. This property contains the - string to replace those that can not with. This defaults to a ?. Set it - to the empty string to simply remove offending characters. For more - details on the allowed character ranges see http://www.w3.org/TR/REC-xml/#charsets - Character replacement will occur in the log message, the property names - and the property values. - - - - - - - Gets the content type output by this layout. - - - As this is the XML layout, the value is always "text/xml". - - - - As this is the XML layout, the value is always "text/xml". - - - - - - Constructs an XmlLayout - - - - - Constructs an XmlLayout. - - - - The LocationInfo option takes a boolean value. By - default, it is set to false which means there will be no location - information output by this layout. If the the option is set to - true, then the file name and line number of the statement - at the origin of the log statement will be output. - - - If you are embedding this layout within an SmtpAppender - then make sure to set the LocationInfo option of that - appender as well. - - - - - - Initialize layout options - - - - This is part of the delayed object - activation scheme. The method must - be called on this object after the configuration properties have - been set. Until is called this - object is in an undefined state and must not be used. - - - If any of the configuration properties are modified then - must be called again. - - - Builds a cache of the element names - - - - - - Does the actual writing of the XML. - - The writer to use to output the event to. - The event to write. - - - Override the base class method - to write the to the . - - - - - - The prefix to use for all generated element names - - - - - The prefix to use for all element names - - - - The default prefix is log4net. Set this property - to change the prefix. If the prefix is set to an empty string - then no prefix will be written. - - - - - - Set whether or not to base64 encode the message. - - - - By default the log message will be written as text to the xml - output. This can cause problems when the message contains binary - data. By setting this to true the contents of the message will be - base64 encoded. If this is set then invalid character replacement - (see ) will not be performed - on the log message. - - - - - - Set whether or not to base64 encode the property values. - - - - By default the properties will be written as text to the xml - output. This can cause problems when one or more properties contain - binary data. By setting this to true the values of the properties - will be base64 encoded. If this is set then invalid character replacement - (see ) will not be performed - on the property values. - - - - - - Layout that formats the log events as XML elements compatible with the log4j schema - - - - Formats the log events according to the http://logging.apache.org/log4j schema. - - - Nicko Cadell - - - - The 1st of January 1970 in UTC - - - - - Constructs an XMLLayoutSchemaLog4j - - - - - Constructs an XMLLayoutSchemaLog4j. - - - - The LocationInfo option takes a boolean value. By - default, it is set to false which means there will be no location - information output by this layout. If the the option is set to - true, then the file name and line number of the statement - at the origin of the log statement will be output. - - - If you are embedding this layout within an SMTPAppender - then make sure to set the LocationInfo option of that - appender as well. - - - - - - Actually do the writing of the xml - - the writer to use - the event to write - - - Generate XML that is compatible with the log4j schema. - - - - - - The version of the log4j schema to use. - - - - Only version 1.2 of the log4j schema is supported. - - - - - - The default object Renderer. - - - - The default renderer supports rendering objects and collections to strings. - - - See the method for details of the output. - - - Nicko Cadell - Gert Driesen - - - - Implement this interface in order to render objects as strings - - - - Certain types require special case conversion to - string form. This conversion is done by an object renderer. - Object renderers implement the - interface. - - - Nicko Cadell - Gert Driesen - - - - Render the object to a string - - The map used to lookup renderers - The object to render - The writer to render to - - - Render the object to a - string. - - - The parameter is - provided to lookup and render other objects. This is - very useful where contains - nested objects of unknown type. The - method can be used to render these objects. - - - - - - Default constructor - - - - Default constructor - - - - - - Render the object to a string - - The map used to lookup renderers - The object to render - The writer to render to - - - Render the object to a string. - - - The parameter is - provided to lookup and render other objects. This is - very useful where contains - nested objects of unknown type. The - method can be used to render these objects. - - - The default renderer supports rendering objects to strings as follows: - - - - Value - Rendered String - - - null - - "(null)" - - - - - - - For a one dimensional array this is the - array type name, an open brace, followed by a comma - separated list of the elements (using the appropriate - renderer), followed by a close brace. - - - For example: int[] {1, 2, 3}. - - - If the array is not one dimensional the - Array.ToString() is returned. - - - - - , & - - - Rendered as an open brace, followed by a comma - separated list of the elements (using the appropriate - renderer), followed by a close brace. - - - For example: {a, b, c}. - - - All collection classes that implement its subclasses, - or generic equivalents all implement the interface. - - - - - - - - Rendered as the key, an equals sign ('='), and the value (using the appropriate - renderer). - - - For example: key=value. - - - - - other - - Object.ToString() - - - - - - - - Render the array argument into a string - - The map used to lookup renderers - the array to render - The writer to render to - - - For a one dimensional array this is the - array type name, an open brace, followed by a comma - separated list of the elements (using the appropriate - renderer), followed by a close brace. For example: - int[] {1, 2, 3}. - - - If the array is not one dimensional the - Array.ToString() is returned. - - - - - - Render the enumerator argument into a string - - The map used to lookup renderers - the enumerator to render - The writer to render to - - - Rendered as an open brace, followed by a comma - separated list of the elements (using the appropriate - renderer), followed by a close brace. For example: - {a, b, c}. - - - - - - Render the DictionaryEntry argument into a string - - The map used to lookup renderers - the DictionaryEntry to render - The writer to render to - - - Render the key, an equals sign ('='), and the value (using the appropriate - renderer). For example: key=value. - - - - - - Map class objects to an . - - - - Maintains a mapping between types that require special - rendering and the that - is used to render them. - - - The method is used to render an - object using the appropriate renderers defined in this map. - - - Nicko Cadell - Gert Driesen - - - - Default Constructor - - - - Default constructor. - - - - - - Render using the appropriate renderer. - - the object to render to a string - the object rendered as a string - - - This is a convenience method used to render an object to a string. - The alternative method - should be used when streaming output to a . - - - - - - Render using the appropriate renderer. - - the object to render to a string - The writer to render to - - - Find the appropriate renderer for the type of the - parameter. This is accomplished by calling the - method. Once a renderer is found, it is - applied on the object and the result is returned - as a . - - - - - - Gets the renderer for the specified object type - - the object to lookup the renderer for - the renderer for - - - Gets the renderer for the specified object type. - - - Syntactic sugar method that calls - with the type of the object parameter. - - - - - - Gets the renderer for the specified type - - the type to lookup the renderer for - the renderer for the specified type - - - Returns the renderer for the specified type. - If no specific renderer has been defined the - will be returned. - - - - - - Internal function to recursively search interfaces - - the type to lookup the renderer for - the renderer for the specified type - - - - Clear the map of renderers - - - - Clear the custom renderers defined by using - . The - cannot be removed. - - - - - - Register an for . - - the type that will be rendered by - the renderer for - - - Register an object renderer for a specific source type. - This renderer will be returned from a call to - specifying the same as an argument. - - - - - - Get the default renderer instance - - the default renderer - - - Get the default renderer - - - - - - Interface implemented by logger repository plugins. - - - - Plugins define additional behavior that can be associated - with a . - The held by the - property is used to store the plugins for a repository. - - - The log4net.Config.PluginAttribute can be used to - attach plugins to repositories created using configuration - attributes. - - - Nicko Cadell - Gert Driesen - - - - Attaches the plugin to the specified . - - The that this plugin should be attached to. - - - A plugin may only be attached to a single repository. - - - This method is called when the plugin is attached to the repository. - - - - - - Is called when the plugin is to shutdown. - - - - This method is called to notify the plugin that - it should stop operating and should detach from - the repository. - - - - - - Gets the name of the plugin. - - - The name of the plugin. - - - - Plugins are stored in the - keyed by name. Each plugin instance attached to a - repository must be a unique name. - - - - - - A strongly-typed collection of objects. - - Nicko Cadell - - - - Creates a read-only wrapper for a PluginCollection instance. - - list to create a readonly wrapper arround - - A PluginCollection wrapper that is read-only. - - - - - Initializes a new instance of the PluginCollection class - that is empty and has the default initial capacity. - - - - - Initializes a new instance of the PluginCollection class - that has the specified initial capacity. - - - The number of elements that the new PluginCollection is initially capable of storing. - - - - - Initializes a new instance of the PluginCollection class - that contains elements copied from the specified PluginCollection. - - The PluginCollection whose elements are copied to the new collection. - - - - Initializes a new instance of the PluginCollection class - that contains elements copied from the specified array. - - The array whose elements are copied to the new list. - - - - Initializes a new instance of the PluginCollection class - that contains elements copied from the specified collection. - - The collection whose elements are copied to the new list. - - - - Allow subclasses to avoid our default constructors - - - - - - - Copies the entire PluginCollection to a one-dimensional - array. - - The one-dimensional array to copy to. - - - - Copies the entire PluginCollection to a one-dimensional - array, starting at the specified index of the target array. - - The one-dimensional array to copy to. - The zero-based index in at which copying begins. - - - - Adds a to the end of the PluginCollection. - - The to be added to the end of the PluginCollection. - The index at which the value has been added. - - - - Removes all elements from the PluginCollection. - - - - - Creates a shallow copy of the . - - A new with a shallow copy of the collection data. - - - - Determines whether a given is in the PluginCollection. - - The to check for. - true if is found in the PluginCollection; otherwise, false. - - - - Returns the zero-based index of the first occurrence of a - in the PluginCollection. - - The to locate in the PluginCollection. - - The zero-based index of the first occurrence of - in the entire PluginCollection, if found; otherwise, -1. - - - - - Inserts an element into the PluginCollection at the specified index. - - The zero-based index at which should be inserted. - The to insert. - - is less than zero - -or- - is equal to or greater than . - - - - - Removes the first occurrence of a specific from the PluginCollection. - - The to remove from the PluginCollection. - - The specified was not found in the PluginCollection. - - - - - Removes the element at the specified index of the PluginCollection. - - The zero-based index of the element to remove. - - is less than zero. - -or- - is equal to or greater than . - - - - - Returns an enumerator that can iterate through the PluginCollection. - - An for the entire PluginCollection. - - - - Adds the elements of another PluginCollection to the current PluginCollection. - - The PluginCollection whose elements should be added to the end of the current PluginCollection. - The new of the PluginCollection. - - - - Adds the elements of a array to the current PluginCollection. - - The array whose elements should be added to the end of the PluginCollection. - The new of the PluginCollection. - - - - Adds the elements of a collection to the current PluginCollection. - - The collection whose elements should be added to the end of the PluginCollection. - The new of the PluginCollection. - - - - Sets the capacity to the actual number of elements. - - - - - is less than zero. - -or- - is equal to or greater than . - - - - - is less than zero. - -or- - is equal to or greater than . - - - - - Gets the number of elements actually contained in the PluginCollection. - - - - - Gets a value indicating whether access to the collection is synchronized (thread-safe). - - true if access to the ICollection is synchronized (thread-safe); otherwise, false. - - - - Gets an object that can be used to synchronize access to the collection. - - - An object that can be used to synchronize access to the collection. - - - - - Gets or sets the at the specified index. - - - The at the specified index. - - The zero-based index of the element to get or set. - - is less than zero. - -or- - is equal to or greater than . - - - - - Gets a value indicating whether the collection has a fixed size. - - true if the collection has a fixed size; otherwise, false. The default is false. - - - - Gets a value indicating whether the IList is read-only. - - true if the collection is read-only; otherwise, false. The default is false. - - - - Gets or sets the number of elements the PluginCollection can contain. - - - The number of elements the PluginCollection can contain. - - - - - Supports type-safe iteration over a . - - - - - - Advances the enumerator to the next element in the collection. - - - true if the enumerator was successfully advanced to the next element; - false if the enumerator has passed the end of the collection. - - - The collection was modified after the enumerator was created. - - - - - Sets the enumerator to its initial position, before the first element in the collection. - - - - - Gets the current element in the collection. - - - - - Type visible only to our subclasses - Used to access protected constructor - - - - - - A value - - - - - Supports simple iteration over a . - - - - - - Initializes a new instance of the Enumerator class. - - - - - - Advances the enumerator to the next element in the collection. - - - true if the enumerator was successfully advanced to the next element; - false if the enumerator has passed the end of the collection. - - - The collection was modified after the enumerator was created. - - - - - Sets the enumerator to its initial position, before the first element in the collection. - - - - - Gets the current element in the collection. - - - The current element in the collection. - - - - - - - - Map of repository plugins. - - - - This class is a name keyed map of the plugins that are - attached to a repository. - - - Nicko Cadell - Gert Driesen - - - - Constructor - - The repository that the plugins should be attached to. - - - Initialize a new instance of the class with a - repository that the plugins should be attached to. - - - - - - Adds a to the map. - - The to add to the map. - - - The will be attached to the repository when added. - - - If there already exists a plugin with the same name - attached to the repository then the old plugin will - be and replaced with - the new plugin. - - - - - - Removes a from the map. - - The to remove from the map. - - - Remove a specific plugin from this map. - - - - - - Gets a by name. - - The name of the to lookup. - - The from the map with the name specified, or - null if no plugin is found. - - - - Lookup a plugin by name. If the plugin is not found null - will be returned. - - - - - - Gets all possible plugins as a list of objects. - - All possible plugins as a list of objects. - - - Get a collection of all the plugins defined in this map. - - - - - - Base implementation of - - - - Default abstract implementation of the - interface. This base class can be used by implementors - of the interface. - - - Nicko Cadell - Gert Driesen - - - - Constructor - - the name of the plugin - - Initializes a new Plugin with the specified name. - - - - - Attaches this plugin to a . - - The that this plugin should be attached to. - - - A plugin may only be attached to a single repository. - - - This method is called when the plugin is attached to the repository. - - - - - - Is called when the plugin is to shutdown. - - - - This method is called to notify the plugin that - it should stop operating and should detach from - the repository. - - - - - - The name of this plugin. - - - - - The repository this plugin is attached to. - - - - - Gets or sets the name of the plugin. - - - The name of the plugin. - - - - Plugins are stored in the - keyed by name. Each plugin instance attached to a - repository must be a unique name. - - - The name of the plugin must not change one the - plugin has been attached to a repository. - - - - - - The repository for this plugin - - - The that this plugin is attached to. - - - - Gets or sets the that this plugin is - attached to. - - - - - - Plugin that listens for events from the - - - - This plugin publishes an instance of - on a specified . This listens for logging events delivered from - a remote . - - - When an event is received it is relogged within the attached repository - as if it had been raised locally. - - - Nicko Cadell - Gert Driesen - - - - Default constructor - - - - Initializes a new instance of the class. - - - The property must be set. - - - - - - Construct with sink Uri. - - The name to publish the sink under in the remoting infrastructure. - See for more details. - - - Initializes a new instance of the class - with specified name. - - - - - - Attaches this plugin to a . - - The that this plugin should be attached to. - - - A plugin may only be attached to a single repository. - - - This method is called when the plugin is attached to the repository. - - - - - - Is called when the plugin is to shutdown. - - - - When the plugin is shutdown the remote logging - sink is disconnected. - - - - - - Gets or sets the URI of this sink. - - - The URI of this sink. - - - - This is the name under which the object is marshaled. - - - - - - - Delivers objects to a remote sink. - - - - Internal class used to listen for logging events - and deliver them to the local repository. - - - - - - Constructor - - The repository to log to. - - - Initializes a new instance of the for the - specified . - - - - - - Logs the events to the repository. - - The events to log. - - - The events passed are logged to the - - - - - - Obtains a lifetime service object to control the lifetime - policy for this instance. - - null to indicate that this instance should live forever. - - - Obtains a lifetime service object to control the lifetime - policy for this instance. This object should live forever - therefore this implementation returns null. - - - - - - The underlying that events should - be logged to. - - - - - Default implementation of - - - - This default implementation of the - interface is used to create the default subclass - of the object. - - - Nicko Cadell - Gert Driesen - - - - Interface abstracts creation of instances - - - - This interface is used by the to - create new objects. - - - The method is called - to create a named . - - - Implement this interface to create new subclasses of . - - - Nicko Cadell - Gert Driesen - - - - Create a new instance - - The name of the . - The instance for the specified name. - - - Create a new instance with the - specified name. - - - Called by the to create - new named instances. - - - If the is null then the root logger - must be returned. - - - - - - Default constructor - - - - Initializes a new instance of the class. - - - - - - Create a new instance - - The name of the . - The instance for the specified name. - - - Create a new instance with the - specified name. - - - Called by the to create - new named instances. - - - If the is null then the root logger - must be returned. - - - - - - Default internal subclass of - - - - This subclass has no additional behavior over the - class but does allow instances - to be created. - - - - - - Implementation of used by - - - - Internal class used to provide implementation of - interface. Applications should use to get - logger instances. - - - This is one of the central classes in the log4net implementation. One of the - distinctive features of log4net are hierarchical loggers and their - evaluation. The organizes the - instances into a rooted tree hierarchy. - - - The class is abstract. Only concrete subclasses of - can be created. The - is used to create instances of this type for the . - - - Nicko Cadell - Gert Driesen - Aspi Havewala - Douglas de la Torre - - - - This constructor created a new instance and - sets its name. - - The name of the . - - - This constructor is protected and designed to be used by - a subclass that is not abstract. - - - Loggers are constructed by - objects. See for the default - logger creator. - - - - - - Add to the list of appenders of this - Logger instance. - - An appender to add to this logger - - - Add to the list of appenders of this - Logger instance. - - - If is already in the list of - appenders, then it won't be added again. - - - - - - Look for the appender named as name - - The name of the appender to lookup - The appender with the name specified, or null. - - - Returns the named appender, or null if the appender is not found. - - - - - - Remove all previously added appenders from this Logger instance. - - - - Remove all previously added appenders from this Logger instance. - - - This is useful when re-reading configuration information. - - - - - - Remove the appender passed as parameter form the list of appenders. - - The appender to remove - The appender removed from the list - - - Remove the appender passed as parameter form the list of appenders. - The appender removed is not closed. - If you are discarding the appender you must call - on the appender removed. - - - - - - Remove the appender passed as parameter form the list of appenders. - - The name of the appender to remove - The appender removed from the list - - - Remove the named appender passed as parameter form the list of appenders. - The appender removed is not closed. - If you are discarding the appender you must call - on the appender removed. - - - - - - This generic form is intended to be used by wrappers. - - The declaring type of the method that is - the stack boundary into the logging system for this call. - The level of the message to be logged. - The message object to log. - The exception to log, including its stack trace. - - - Generate a logging event for the specified using - the and . - - - This method must not throw any exception to the caller. - - - - - - This is the most generic printing method that is intended to be used - by wrappers. - - The event being logged. - - - Logs the specified logging event through this logger. - - - This method must not throw any exception to the caller. - - - - - - Checks if this logger is enabled for a given passed as parameter. - - The level to check. - - true if this logger is enabled for level, otherwise false. - - - - Test if this logger is going to log events of the specified . - - - This method must not throw any exception to the caller. - - - - - - Deliver the to the attached appenders. - - The event to log. - - - Call the appenders in the hierarchy starting at - this. If no appenders could be found, emit a - warning. - - - This method calls all the appenders inherited from the - hierarchy circumventing any evaluation of whether to log or not - to log the particular log request. - - - - - - Closes all attached appenders implementing the interface. - - - - Used to ensure that the appenders are correctly shutdown. - - - - - - This is the most generic printing method. This generic form is intended to be used by wrappers - - The level of the message to be logged. - The message object to log. - The exception to log, including its stack trace. - - - Generate a logging event for the specified using - the . - - - - - - Creates a new logging event and logs the event without further checks. - - The declaring type of the method that is - the stack boundary into the logging system for this call. - The level of the message to be logged. - The message object to log. - The exception to log, including its stack trace. - - - Generates a logging event and delivers it to the attached - appenders. - - - - - - Creates a new logging event and logs the event without further checks. - - The event being logged. - - - Delivers the logging event to the attached appenders. - - - - - - The fully qualified type of the Logger class. - - - - - The name of this logger. - - - - - The assigned level of this logger. - - - - The level variable need not be - assigned a value in which case it is inherited - form the hierarchy. - - - - - - The parent of this logger. - - - - The parent of this logger. - All loggers have at least one ancestor which is the root logger. - - - - - - Loggers need to know what Hierarchy they are in. - - - - Loggers need to know what Hierarchy they are in. - The hierarchy that this logger is a member of is stored - here. - - - - - - Helper implementation of the interface - - - - - Flag indicating if child loggers inherit their parents appenders - - - - Additivity is set to true by default, that is children inherit - the appenders of their ancestors by default. If this variable is - set to false then the appenders found in the - ancestors of this logger are not used. However, the children - of this logger will inherit its appenders, unless the children - have their additivity flag set to false too. See - the user manual for more details. - - - - - - Lock to protect AppenderAttachedImpl variable m_appenderAttachedImpl - - - - - Gets or sets the parent logger in the hierarchy. - - - The parent logger in the hierarchy. - - - - Part of the Composite pattern that makes the hierarchy. - The hierarchy is parent linked rather than child linked. - - - - - - Gets or sets a value indicating if child loggers inherit their parent's appenders. - - - true if child loggers inherit their parent's appenders. - - - - Additivity is set to true by default, that is children inherit - the appenders of their ancestors by default. If this variable is - set to false then the appenders found in the - ancestors of this logger are not used. However, the children - of this logger will inherit its appenders, unless the children - have their additivity flag set to false too. See - the user manual for more details. - - - - - - Gets the effective level for this logger. - - The nearest level in the logger hierarchy. - - - Starting from this logger, searches the logger hierarchy for a - non-null level and returns it. Otherwise, returns the level of the - root logger. - - The Logger class is designed so that this method executes as - quickly as possible. - - - - - Gets or sets the where this - Logger instance is attached to. - - The hierarchy that this logger belongs to. - - - This logger must be attached to a single . - - - - - - Gets or sets the assigned , if any, for this Logger. - - - The of this logger. - - - - The assigned can be null. - - - - - - Get the appenders contained in this logger as an - . - - A collection of the appenders in this logger - - - Get the appenders contained in this logger as an - . If no appenders - can be found, then a is returned. - - - - - - Gets the logger name. - - - The name of the logger. - - - - The name of this logger - - - - - - Gets the where this - Logger instance is attached to. - - - The that this logger belongs to. - - - - Gets the where this - Logger instance is attached to. - - - - - - Construct a new Logger - - the name of the logger - - - Initializes a new instance of the class - with the specified name. - - - - - - Delegate used to handle logger creation event notifications. - - The in which the has been created. - The event args that hold the instance that has been created. - - - Delegate used to handle logger creation event notifications. - - - - - - Provides data for the event. - - - - A event is raised every time a - is created. - - - - - - The created - - - - - Constructor - - The that has been created. - - - Initializes a new instance of the event argument - class,with the specified . - - - - - - Gets the that has been created. - - - The that has been created. - - - - The that has been created. - - - - - - Hierarchical organization of loggers - - - - The casual user should not have to deal with this class - directly. - - - This class is specialized in retrieving loggers by name and - also maintaining the logger hierarchy. Implements the - interface. - - - The structure of the logger hierarchy is maintained by the - method. The hierarchy is such that children - link to their parent but parents do not have any references to their - children. Moreover, loggers can be instantiated in any order, in - particular descendant before ancestor. - - - In case a descendant is created before a particular ancestor, - then it creates a provision node for the ancestor and adds itself - to the provision node. Other descendants of the same ancestor add - themselves to the previously created provision node. - - - Nicko Cadell - Gert Driesen - - - - Base implementation of - - - - Default abstract implementation of the interface. - - - Skeleton implementation of the interface. - All types can extend this type. - - - Nicko Cadell - Gert Driesen - - - - Interface implemented by logger repositories. - - - - This interface is implemented by logger repositories. e.g. - . - - - This interface is used by the - to obtain interfaces. - - - Nicko Cadell - Gert Driesen - - - - Check if the named logger exists in the repository. If so return - its reference, otherwise returns null. - - The name of the logger to lookup - The Logger object with the name specified - - - If the names logger exists it is returned, otherwise - null is returned. - - - - - - Returns all the currently defined loggers as an Array. - - All the defined loggers - - - Returns all the currently defined loggers as an Array. - - - - - - Returns a named logger instance - - The name of the logger to retrieve - The logger object with the name specified - - - Returns a named logger instance. - - - If a logger of that name already exists, then it will be - returned. Otherwise, a new logger will be instantiated and - then linked with its existing ancestors as well as children. - - - - - Shutdown the repository - - - Shutting down a repository will safely close and remove - all appenders in all loggers including the root logger. - - - Some appenders need to be closed before the - application exists. Otherwise, pending logging events might be - lost. - - - The method is careful to close nested - appenders before closing regular appenders. This is allows - configurations where a regular appender is attached to a logger - and again to a nested appender. - - - - - - Reset the repositories configuration to a default state - - - - Reset all values contained in this instance to their - default state. - - - Existing loggers are not removed. They are just reset. - - - This method should be used sparingly and with care as it will - block all logging until it is completed. - - - - - - Log the through this repository. - - the event to log - - - This method should not normally be used to log. - The interface should be used - for routine logging. This interface can be obtained - using the method. - - - The logEvent is delivered to the appropriate logger and - that logger is then responsible for logging the event. - - - - - - Returns all the Appenders that are configured as an Array. - - All the Appenders - - - Returns all the Appenders that are configured as an Array. - - - - - - The name of the repository - - - The name of the repository - - - - The name of the repository. - - - - - - RendererMap accesses the object renderer map for this repository. - - - RendererMap accesses the object renderer map for this repository. - - - - RendererMap accesses the object renderer map for this repository. - - - The RendererMap holds a mapping between types and - objects. - - - - - - The plugin map for this repository. - - - The plugin map for this repository. - - - - The plugin map holds the instances - that have been attached to this repository. - - - - - - Get the level map for the Repository. - - - - Get the level map for the Repository. - - - The level map defines the mappings between - level names and objects in - this repository. - - - - - - The threshold for all events in this repository - - - The threshold for all events in this repository - - - - The threshold for all events in this repository. - - - - - - Flag indicates if this repository has been configured. - - - Flag indicates if this repository has been configured. - - - - Flag indicates if this repository has been configured. - - - - - - Event to notify that the repository has been shutdown. - - - Event to notify that the repository has been shutdown. - - - - Event raised when the repository has been shutdown. - - - - - - Event to notify that the repository has had its configuration reset. - - - Event to notify that the repository has had its configuration reset. - - - - Event raised when the repository's configuration has been - reset to default. - - - - - - Event to notify that the repository has had its configuration changed. - - - Event to notify that the repository has had its configuration changed. - - - - Event raised when the repository's configuration has been changed. - - - - - - Repository specific properties - - - Repository specific properties - - - - These properties can be specified on a repository specific basis. - - - - - - Default Constructor - - - - Initializes the repository with default (empty) properties. - - - - - - Construct the repository using specific properties - - the properties to set for this repository - - - Initializes the repository with specified properties. - - - - - - Test if logger exists - - The name of the logger to lookup - The Logger object with the name specified - - - Check if the named logger exists in the repository. If so return - its reference, otherwise returns null. - - - - - - Returns all the currently defined loggers in the repository - - All the defined loggers - - - Returns all the currently defined loggers in the repository as an Array. - - - - - - Return a new logger instance - - The name of the logger to retrieve - The logger object with the name specified - - - Return a new logger instance. - - - If a logger of that name already exists, then it will be - returned. Otherwise, a new logger will be instantiated and - then linked with its existing ancestors as well as children. - - - - - - Shutdown the repository - - - - Shutdown the repository. Can be overridden in a subclass. - This base class implementation notifies the - listeners and all attached plugins of the shutdown event. - - - - - - Reset the repositories configuration to a default state - - - - Reset all values contained in this instance to their - default state. - - - Existing loggers are not removed. They are just reset. - - - This method should be used sparingly and with care as it will - block all logging until it is completed. - - - - - - Log the logEvent through this repository. - - the event to log - - - This method should not normally be used to log. - The interface should be used - for routine logging. This interface can be obtained - using the method. - - - The logEvent is delivered to the appropriate logger and - that logger is then responsible for logging the event. - - - - - - Returns all the Appenders that are configured as an Array. - - All the Appenders - - - Returns all the Appenders that are configured as an Array. - - - - - - Adds an object renderer for a specific class. - - The type that will be rendered by the renderer supplied. - The object renderer used to render the object. - - - Adds an object renderer for a specific class. - - - - - - Notify the registered listeners that the repository is shutting down - - Empty EventArgs - - - Notify any listeners that this repository is shutting down. - - - - - - Notify the registered listeners that the repository has had its configuration reset - - Empty EventArgs - - - Notify any listeners that this repository's configuration has been reset. - - - - - - Notify the registered listeners that the repository has had its configuration changed - - Empty EventArgs - - - Notify any listeners that this repository's configuration has changed. - - - - - - Raise a configuration changed event on this repository - - EventArgs.Empty - - - Applications that programmatically change the configuration of the repository should - raise this event notification to notify listeners. - - - - - - The name of the repository - - - The string name of the repository - - - - The name of this repository. The name is - used to store and lookup the repositories - stored by the . - - - - - - The threshold for all events in this repository - - - The threshold for all events in this repository - - - - The threshold for all events in this repository - - - - - - RendererMap accesses the object renderer map for this repository. - - - RendererMap accesses the object renderer map for this repository. - - - - RendererMap accesses the object renderer map for this repository. - - - The RendererMap holds a mapping between types and - objects. - - - - - - The plugin map for this repository. - - - The plugin map for this repository. - - - - The plugin map holds the instances - that have been attached to this repository. - - - - - - Get the level map for the Repository. - - - - Get the level map for the Repository. - - - The level map defines the mappings between - level names and objects in - this repository. - - - - - - Flag indicates if this repository has been configured. - - - Flag indicates if this repository has been configured. - - - - Flag indicates if this repository has been configured. - - - - - - Event to notify that the repository has been shutdown. - - - Event to notify that the repository has been shutdown. - - - - Event raised when the repository has been shutdown. - - - - - - Event to notify that the repository has had its configuration reset. - - - Event to notify that the repository has had its configuration reset. - - - - Event raised when the repository's configuration has been - reset to default. - - - - - - Event to notify that the repository has had its configuration changed. - - - Event to notify that the repository has had its configuration changed. - - - - Event raised when the repository's configuration has been changed. - - - - - - Repository specific properties - - - Repository specific properties - - - These properties can be specified on a repository specific basis - - - - - Basic Configurator interface for repositories - - - - Interface used by basic configurator to configure a - with a default . - - - A should implement this interface to support - configuration by the . - - - Nicko Cadell - Gert Driesen - - - - Initialize the repository using the specified appender - - the appender to use to log all logging events - - - Configure the repository to route all logging events to the - specified appender. - - - - - - Configure repository using XML - - - - Interface used by Xml configurator to configure a . - - - A should implement this interface to support - configuration by the . - - - Nicko Cadell - Gert Driesen - - - - Initialize the repository using the specified config - - the element containing the root of the config - - - The schema for the XML configuration data is defined by - the implementation. - - - - - - Default constructor - - - - Initializes a new instance of the class. - - - - - - Construct with properties - - The properties to pass to this repository. - - - Initializes a new instance of the class. - - - - - - Construct with a logger factory - - The factory to use to create new logger instances. - - - Initializes a new instance of the class with - the specified . - - - - - - Construct with properties and a logger factory - - The properties to pass to this repository. - The factory to use to create new logger instances. - - - Initializes a new instance of the class with - the specified . - - - - - - Test if a logger exists - - The name of the logger to lookup - The Logger object with the name specified - - - Check if the named logger exists in the hierarchy. If so return - its reference, otherwise returns null. - - - - - - Returns all the currently defined loggers in the hierarchy as an Array - - All the defined loggers - - - Returns all the currently defined loggers in the hierarchy as an Array. - The root logger is not included in the returned - enumeration. - - - - - - Return a new logger instance named as the first parameter using - the default factory. - - - - Return a new logger instance named as the first parameter using - the default factory. - - - If a logger of that name already exists, then it will be - returned. Otherwise, a new logger will be instantiated and - then linked with its existing ancestors as well as children. - - - The name of the logger to retrieve - The logger object with the name specified - - - - Shutting down a hierarchy will safely close and remove - all appenders in all loggers including the root logger. - - - - Shutting down a hierarchy will safely close and remove - all appenders in all loggers including the root logger. - - - Some appenders need to be closed before the - application exists. Otherwise, pending logging events might be - lost. - - - The Shutdown method is careful to close nested - appenders before closing regular appenders. This is allows - configurations where a regular appender is attached to a logger - and again to a nested appender. - - - - - - Reset all values contained in this hierarchy instance to their default. - - - - Reset all values contained in this hierarchy instance to their - default. This removes all appenders from all loggers, sets - the level of all non-root loggers to null, - sets their additivity flag to true and sets the level - of the root logger to . Moreover, - message disabling is set its default "off" value. - - - Existing loggers are not removed. They are just reset. - - - This method should be used sparingly and with care as it will - block all logging until it is completed. - - - - - - Log the logEvent through this hierarchy. - - the event to log - - - This method should not normally be used to log. - The interface should be used - for routine logging. This interface can be obtained - using the method. - - - The logEvent is delivered to the appropriate logger and - that logger is then responsible for logging the event. - - - - - - Returns all the Appenders that are currently configured - - An array containing all the currently configured appenders - - - Returns all the instances that are currently configured. - All the loggers are searched for appenders. The appenders may also be containers - for appenders and these are also searched for additional loggers. - - - The list returned is unordered but does not contain duplicates. - - - - - - Collect the appenders from an . - The appender may also be a container. - - - - - - - Collect the appenders from an container - - - - - - - Initialize the log4net system using the specified appender - - the appender to use to log all logging events - - - - Initialize the log4net system using the specified appender - - the appender to use to log all logging events - - - This method provides the same functionality as the - method implemented - on this object, but it is protected and therefore can be called by subclasses. - - - - - - Initialize the log4net system using the specified config - - the element containing the root of the config - - - - Initialize the log4net system using the specified config - - the element containing the root of the config - - - This method provides the same functionality as the - method implemented - on this object, but it is protected and therefore can be called by subclasses. - - - - - - Test if this hierarchy is disabled for the specified . - - The level to check against. - - true if the repository is disabled for the level argument, false otherwise. - - - - If this hierarchy has not been configured then this method will - always return true. - - - This method will return true if this repository is - disabled for level object passed as parameter and - false otherwise. - - - See also the property. - - - - - - Clear all logger definitions from the internal hashtable - - - - This call will clear all logger definitions from the internal - hashtable. Invoking this method will irrevocably mess up the - logger hierarchy. - - - You should really know what you are doing before - invoking this method. - - - - - - Return a new logger instance named as the first parameter using - . - - The name of the logger to retrieve - The factory that will make the new logger instance - The logger object with the name specified - - - If a logger of that name already exists, then it will be - returned. Otherwise, a new logger will be instantiated by the - parameter and linked with its existing - ancestors as well as children. - - - - - - Sends a logger creation event to all registered listeners - - The newly created logger - - Raises the logger creation event. - - - - - Updates all the parents of the specified logger - - The logger to update the parents for - - - This method loops through all the potential parents of - . There 3 possible cases: - - - - No entry for the potential parent of exists - - We create a ProvisionNode for this potential - parent and insert in that provision node. - - - - The entry is of type Logger for the potential parent. - - The entry is 's nearest existing parent. We - update 's parent field with this entry. We also break from - he loop because updating our parent's parent is our parent's - responsibility. - - - - The entry is of type ProvisionNode for this potential parent. - - We add to the list of children for this - potential parent. - - - - - - - - Replace a with a in the hierarchy. - - - - - - We update the links for all the children that placed themselves - in the provision node 'pn'. The second argument 'log' is a - reference for the newly created Logger, parent of all the - children in 'pn'. - - - We loop on all the children 'c' in 'pn'. - - - If the child 'c' has been already linked to a child of - 'log' then there is no need to update 'c'. - - - Otherwise, we set log's parent field to c's parent and set - c's parent field to log. - - - - - - Define or redefine a Level using the values in the argument - - the level values - - - Define or redefine a Level using the values in the argument - - - Supports setting levels via the configuration file. - - - - - - Set a Property using the values in the argument - - the property value - - - Set a Property using the values in the argument. - - - Supports setting property values via the configuration file. - - - - - - Event used to notify that a logger has been created. - - - - Event raised when a logger is created. - - - - - - Has no appender warning been emitted - - - - Flag to indicate if we have already issued a warning - about not having an appender warning. - - - - - - Get the root of this hierarchy - - - - Get the root of this hierarchy. - - - - - - Gets or sets the default instance. - - The default - - - The logger factory is used to create logger instances. - - - - - - A class to hold the value, name and display name for a level - - - - A class to hold the value, name and display name for a level - - - - - - Override Object.ToString to return sensible debug info - - string info about this object - - - - Value of the level - - - - If the value is not set (defaults to -1) the value will be looked - up for the current level with the same name. - - - - - - Name of the level - - - The name of the level - - - - The name of the level. - - - - - - Display name for the level - - - The display name of the level - - - - The display name of the level. - - - - - - A class to hold the key and data for a property set in the config file - - - - A class to hold the key and data for a property set in the config file - - - - - - Override Object.ToString to return sensible debug info - - string info about this object - - - - Property Key - - - Property Key - - - - Property Key. - - - - - - Property Value - - - Property Value - - - - Property Value. - - - - - - Used internally to accelerate hash table searches. - - - - Internal class used to improve performance of - string keyed hashtables. - - - The hashcode of the string is cached for reuse. - The string is stored as an interned value. - When comparing two objects for equality - the reference equality of the interned strings is compared. - - - Nicko Cadell - Gert Driesen - - - - Construct key with string name - - - - Initializes a new instance of the class - with the specified name. - - - Stores the hashcode of the string and interns - the string key to optimize comparisons. - - - The Compact Framework 1.0 the - method does not work. On the Compact Framework - the string keys are not interned nor are they - compared by reference. - - - The name of the logger. - - - - Returns a hash code for the current instance. - - A hash code for the current instance. - - - Returns the cached hashcode. - - - - - - Determines whether two instances - are equal. - - The to compare with the current . - - true if the specified is equal to the current ; otherwise, false. - - - - Compares the references of the interned strings. - - - - - - Provision nodes are used where no logger instance has been specified - - - - instances are used in the - when there is no specified - for that node. - - - A provision node holds a list of child loggers on behalf of - a logger that does not exist. - - - Nicko Cadell - Gert Driesen - - - - Create a new provision node with child node - - A child logger to add to this node. - - - Initializes a new instance of the class - with the specified child logger. - - - - - - The sits at the root of the logger hierarchy tree. - - - - The is a regular except - that it provides several guarantees. - - - First, it cannot be assigned a null - level. Second, since the root logger cannot have a parent, the - property always returns the value of the - level field without walking the hierarchy. - - - Nicko Cadell - Gert Driesen - - - - Construct a - - The level to assign to the root logger. - - - Initializes a new instance of the class with - the specified logging level. - - - The root logger names itself as "root". However, the root - logger cannot be retrieved by name. - - - - - - Gets the assigned level value without walking the logger hierarchy. - - The assigned level value without walking the logger hierarchy. - - - Because the root logger cannot have a parent and its level - must not be null this property just returns the - value of . - - - - - - Gets or sets the assigned for the root logger. - - - The of the root logger. - - - - Setting the level of the root logger to a null reference - may have catastrophic results. We prevent this here. - - - - - - Initializes the log4net environment using an XML DOM. - - - - Configures a using an XML DOM. - - - Nicko Cadell - Gert Driesen - - - - Construct the configurator for a hierarchy - - The hierarchy to build. - - - Initializes a new instance of the class - with the specified . - - - - - - Configure the hierarchy by parsing a DOM tree of XML elements. - - The root element to parse. - - - Configure the hierarchy by parsing a DOM tree of XML elements. - - - - - - Parse appenders by IDREF. - - The appender ref element. - The instance of the appender that the ref refers to. - - - Parse an XML element that represents an appender and return - the appender. - - - - - - Parses an appender element. - - The appender element. - The appender instance or null when parsing failed. - - - Parse an XML element that represents an appender and return - the appender instance. - - - - - - Parses a logger element. - - The logger element. - - - Parse an XML element that represents a logger. - - - - - - Parses the root logger element. - - The root element. - - - Parse an XML element that represents the root logger. - - - - - - Parses the children of a logger element. - - The category element. - The logger instance. - Flag to indicate if the logger is the root logger. - - - Parse the child elements of a <logger> element. - - - - - - Parses an object renderer. - - The renderer element. - - - Parse an XML element that represents a renderer. - - - - - - Parses a level element. - - The level element. - The logger object to set the level on. - Flag to indicate if the logger is the root logger. - - - Parse an XML element that represents a level. - - - - - - Sets a parameter on an object. - - The parameter element. - The object to set the parameter on. - - The parameter name must correspond to a writable property - on the object. The value of the parameter is a string, - therefore this function will attempt to set a string - property first. If unable to set a string property it - will inspect the property and its argument type. It will - attempt to call a static method called Parse on the - type of the property. This method will take a single - string argument and return a value that can be used to - set the property. - - - - - Test if an element has no attributes or child elements - - the element to inspect - true if the element has any attributes or child elements, false otherwise - - - - Test if a is constructible with Activator.CreateInstance. - - the type to inspect - true if the type is creatable using a default constructor, false otherwise - - - - Look for a method on the that matches the supplied - - the type that has the method - the name of the method - the method info found - - - The method must be a public instance method on the . - The method must be named or "Add" followed by . - The method must take a single parameter. - - - - - - Converts a string value to a target type. - - The type of object to convert the string to. - The string value to use as the value of the object. - - - An object of type with value or - null when the conversion could not be performed. - - - - - - Creates an object as specified in XML. - - The XML element that contains the definition of the object. - The object type to use if not explicitly specified. - The type that the returned object must be or must inherit from. - The object or null - - - Parse an XML element and create an object instance based on the configuration - data. - - - The type of the instance may be specified in the XML. If not - specified then the is used - as the type. However the type is specified it must support the - type. - - - - - - key: appenderName, value: appender. - - - - - The Hierarchy being configured. - - - - - Delegate used to handle logger repository shutdown event notifications - - The that is shutting down. - Empty event args - - - Delegate used to handle logger repository shutdown event notifications. - - - - - - Delegate used to handle logger repository configuration reset event notifications - - The that has had its configuration reset. - Empty event args - - - Delegate used to handle logger repository configuration reset event notifications. - - - - - - Delegate used to handle event notifications for logger repository configuration changes. - - The that has had its configuration changed. - Empty event arguments. - - - Delegate used to handle event notifications for logger repository configuration changes. - - - - - - Write the name of the current AppDomain to the output - - - - Write the name of the current AppDomain to the output writer - - - Nicko Cadell - - - - Write the name of the current AppDomain to the output - - the writer to write to - null, state is not set - - - Writes name of the current AppDomain to the output . - - - - - - Write the current date to the output - - - - Date pattern converter, uses a to format - the current date and time to the writer as a string. - - - The value of the determines - the formatting of the date. The following values are allowed: - - - Option value - Output - - - ISO8601 - - Uses the formatter. - Formats using the "yyyy-MM-dd HH:mm:ss,fff" pattern. - - - - DATE - - Uses the formatter. - Formats using the "dd MMM yyyy HH:mm:ss,fff" for example, "06 Nov 1994 15:49:37,459". - - - - ABSOLUTE - - Uses the formatter. - Formats using the "HH:mm:ss,fff" for example, "15:49:37,459". - - - - other - - Any other pattern string uses the formatter. - This formatter passes the pattern string to the - method. - For details on valid patterns see - DateTimeFormatInfo Class. - - - - - - The date and time is in the local time zone and is rendered in that zone. - To output the time in Universal time see . - - - Nicko Cadell - - - - The used to render the date to a string - - - - The used to render the date to a string - - - - - - Initialize the converter options - - - - This is part of the delayed object - activation scheme. The method must - be called on this object after the configuration properties have - been set. Until is called this - object is in an undefined state and must not be used. - - - If any of the configuration properties are modified then - must be called again. - - - - - - Write the current date to the output - - that will receive the formatted result. - null, state is not set - - - Pass the current date and time to the - for it to render it to the writer. - - - The date and time passed is in the local time zone. - - - - - - Write an environment variable to the output - - - - Write an environment variable to the output writer. - The value of the determines - the name of the variable to output. - - - Nicko Cadell - - - - Write an environment variable to the output - - the writer to write to - null, state is not set - - - Writes the environment variable to the output . - The name of the environment variable to output must be set - using the - property. - - - - - - Write the current thread identity to the output - - - - Write the current thread identity to the output writer - - - Nicko Cadell - - - - Write the current thread identity to the output - - the writer to write to - null, state is not set - - - Writes the current thread identity to the output . - - - - - - Pattern converter for literal string instances in the pattern - - - - Writes the literal string value specified in the - property to - the output. - - - Nicko Cadell - - - - Set the next converter in the chain - - The next pattern converter in the chain - The next pattern converter - - - Special case the building of the pattern converter chain - for instances. Two adjacent - literals in the pattern can be represented by a single combined - pattern converter. This implementation detects when a - is added to the chain - after this converter and combines its value with this converter's - literal value. - - - - - - Write the literal to the output - - the writer to write to - null, not set - - - Override the formatting behavior to ignore the FormattingInfo - because we have a literal instead. - - - Writes the value of - to the output . - - - - - - Convert this pattern into the rendered message - - that will receive the formatted result. - null, not set - - - This method is not used. - - - - - - Writes a newline to the output - - - - Writes the system dependent line terminator to the output. - This behavior can be overridden by setting the : - - - - Option Value - Output - - - DOS - DOS or Windows line terminator "\r\n" - - - UNIX - UNIX line terminator "\n" - - - - Nicko Cadell - - - - Initialize the converter - - - - This is part of the delayed object - activation scheme. The method must - be called on this object after the configuration properties have - been set. Until is called this - object is in an undefined state and must not be used. - - - If any of the configuration properties are modified then - must be called again. - - - - - - Write the current process ID to the output - - - - Write the current process ID to the output writer - - - Nicko Cadell - - - - Write the current process ID to the output - - the writer to write to - null, state is not set - - - Write the current process ID to the output . - - - - - - Property pattern converter - - - - This pattern converter reads the thread and global properties. - The thread properties take priority over global properties. - See for details of the - thread properties. See for - details of the global properties. - - - If the is specified then that will be used to - lookup a single property. If no is specified - then all properties will be dumped as a list of key value pairs. - - - Nicko Cadell - - - - Write the property value to the output - - that will receive the formatted result. - null, state is not set - - - Writes out the value of a named property. The property name - should be set in the - property. - - - If the is set to null - then all the properties are written as key value pairs. - - - - - - A Pattern converter that generates a string of random characters - - - - The converter generates a string of random characters. By default - the string is length 4. This can be changed by setting the - to the string value of the length required. - - - The random characters in the string are limited to uppercase letters - and numbers only. - - - The random number generator used by this class is not cryptographically secure. - - - Nicko Cadell - - - - Shared random number generator - - - - - Length of random string to generate. Default length 4. - - - - - Initialize the converter options - - - - This is part of the delayed object - activation scheme. The method must - be called on this object after the configuration properties have - been set. Until is called this - object is in an undefined state and must not be used. - - - If any of the configuration properties are modified then - must be called again. - - - - - - Write a randoim string to the output - - the writer to write to - null, state is not set - - - Write a randoim string to the output . - - - - - - Write the current threads username to the output - - - - Write the current threads username to the output writer - - - Nicko Cadell - - - - Write the current threads username to the output - - the writer to write to - null, state is not set - - - Write the current threads username to the output . - - - - - - Write the UTC date time to the output - - - - Date pattern converter, uses a to format - the current date and time in Universal time. - - - See the for details on the date pattern syntax. - - - - Nicko Cadell - - - - Write the current date and time to the output - - that will receive the formatted result. - null, state is not set - - - Pass the current date and time to the - for it to render it to the writer. - - - The date is in Universal time when it is rendered. - - - - - - - Type converter for Boolean. - - - - Supports conversion from string to bool type. - - - - - - Nicko Cadell - Gert Driesen - - - - Can the source type be converted to the type supported by this object - - the type to convert - true if the conversion is possible - - - Returns true if the is - the type. - - - - - - Convert the source object to the type supported by this object - - the object to convert - the converted object - - - Uses the method to convert the - argument to a . - - - - The object cannot be converted to the - target type. To check for this condition use the - method. - - - - - Exception base type for conversion errors. - - - - This type extends . It - does not add any new functionality but does differentiate the - type of exception being thrown. - - - Nicko Cadell - Gert Driesen - - - - Constructor - - - - Initializes a new instance of the class. - - - - - - Constructor - - A message to include with the exception. - - - Initializes a new instance of the class - with the specified message. - - - - - - Constructor - - A message to include with the exception. - A nested exception to include. - - - Initializes a new instance of the class - with the specified message and inner exception. - - - - - - Serialization constructor - - The that holds the serialized object data about the exception being thrown. - The that contains contextual information about the source or destination. - - - Initializes a new instance of the class - with serialized data. - - - - - - Creates a new instance of the class. - - The conversion destination type. - The value to convert. - An instance of the . - - - Creates a new instance of the class. - - - - - - Creates a new instance of the class. - - The conversion destination type. - The value to convert. - A nested exception to include. - An instance of the . - - - Creates a new instance of the class. - - - - - - Register of type converters for specific types. - - - - Maintains a registry of type converters used to convert between - types. - - - Use the and - methods to register new converters. - The and methods - lookup appropriate converters to use. - - - - - Nicko Cadell - Gert Driesen - - - - Private constructor - - - Initializes a new instance of the class. - - - - - Static constructor. - - - - This constructor defines the intrinsic type converters. - - - - - - Adds a converter for a specific type. - - The type being converted to. - The type converter to use to convert to the destination type. - - - Adds a converter instance for a specific type. - - - - - - Adds a converter for a specific type. - - The type being converted to. - The type of the type converter to use to convert to the destination type. - - - Adds a converter for a specific type. - - - - - - Gets the type converter to use to convert values to the destination type. - - The type being converted from. - The type being converted to. - - The type converter instance to use for type conversions or null - if no type converter is found. - - - - Gets the type converter to use to convert values to the destination type. - - - - - - Gets the type converter to use to convert values to the destination type. - - The type being converted to. - - The type converter instance to use for type conversions or null - if no type converter is found. - - - - Gets the type converter to use to convert values to the destination type. - - - - - - Lookups the type converter to use as specified by the attributes on the - destination type. - - The type being converted to. - - The type converter instance to use for type conversions or null - if no type converter is found. - - - - - Creates the instance of the type converter. - - The type of the type converter. - - The type converter instance to use for type conversions or null - if no type converter is found. - - - - The type specified for the type converter must implement - the or interfaces - and must have a public default (no argument) constructor. - - - - - - Mapping from to type converter. - - - - - Supports conversion from string to type. - - - - Supports conversion from string to type. - - - - - - Nicko Cadell - Gert Driesen - - - - Can the source type be converted to the type supported by this object - - the type to convert - true if the conversion is possible - - - Returns true if the is - the type. - - - - - - Overrides the ConvertFrom method of IConvertFrom. - - the object to convert to an encoding - the encoding - - - Uses the method to - convert the argument to an . - - - - The object cannot be converted to the - target type. To check for this condition use the - method. - - - - - Interface supported by type converters - - - - This interface supports conversion from a single type to arbitrary types. - See . - - - Nicko Cadell - - - - Returns whether this converter can convert the object to the specified type - - A Type that represents the type you want to convert to - true if the conversion is possible - - - Test if the type supported by this converter can be converted to the - . - - - - - - Converts the given value object to the specified type, using the arguments - - the object to convert - The Type to convert the value parameter to - the converted object - - - Converts the (which must be of the type supported - by this converter) to the specified.. - - - - - - Supports conversion from string to type. - - - - Supports conversion from string to type. - - - - - Nicko Cadell - - - - Can the source type be converted to the type supported by this object - - the type to convert - true if the conversion is possible - - - Returns true if the is - the type. - - - - - - Overrides the ConvertFrom method of IConvertFrom. - - the object to convert to an IPAddress - the IPAddress - - - Uses the method to convert the - argument to an . - If that fails then the string is resolved as a DNS hostname. - - - - The object cannot be converted to the - target type. To check for this condition use the - method. - - - - - Valid characters in an IPv4 or IPv6 address string. (Does not support subnets) - - - - - Supports conversion from string to type. - - - - Supports conversion from string to type. - - - The string is used as the - of the . - - - - - - Nicko Cadell - - - - Can the source type be converted to the type supported by this object - - the type to convert - true if the conversion is possible - - - Returns true if the is - the type. - - - - - - Overrides the ConvertFrom method of IConvertFrom. - - the object to convert to a PatternLayout - the PatternLayout - - - Creates and returns a new using - the as the - . - - - - The object cannot be converted to the - target type. To check for this condition use the - method. - - - - - Convert between string and - - - - Supports conversion from string to type, - and from a type to a string. - - - The string is used as the - of the . - - - - - - Nicko Cadell - - - - Can the target type be converted to the type supported by this object - - A that represents the type you want to convert to - true if the conversion is possible - - - Returns true if the is - assignable from a type. - - - - - - Converts the given value object to the specified type, using the arguments - - the object to convert - The Type to convert the value parameter to - the converted object - - - Uses the method to convert the - argument to a . - - - - The object cannot be converted to the - . To check for this condition use the - method. - - - - - Can the source type be converted to the type supported by this object - - the type to convert - true if the conversion is possible - - - Returns true if the is - the type. - - - - - - Overrides the ConvertFrom method of IConvertFrom. - - the object to convert to a PatternString - the PatternString - - - Creates and returns a new using - the as the - . - - - - The object cannot be converted to the - target type. To check for this condition use the - method. - - - - - Supports conversion from string to type. - - - - Supports conversion from string to type. - - - - - - Nicko Cadell - - - - Can the source type be converted to the type supported by this object - - the type to convert - true if the conversion is possible - - - Returns true if the is - the type. - - - - - - Overrides the ConvertFrom method of IConvertFrom. - - the object to convert to a Type - the Type - - - Uses the method to convert the - argument to a . - Additional effort is made to locate partially specified types - by searching the loaded assemblies. - - - - The object cannot be converted to the - target type. To check for this condition use the - method. - - - - - Attribute used to associate a type converter - - - - Class and Interface level attribute that specifies a type converter - to use with the associated type. - - - To associate a type converter with a target type apply a - TypeConverterAttribute to the target type. Specify the - type of the type converter on the attribute. - - - Nicko Cadell - Gert Driesen - - - - The string type name of the type converter - - - - - Default constructor - - - - Default constructor - - - - - - Create a new type converter attribute for the specified type name - - The string type name of the type converter - - - The type specified must implement the - or the interfaces. - - - - - - Create a new type converter attribute for the specified type - - The type of the type converter - - - The type specified must implement the - or the interfaces. - - - - - - The string type name of the type converter - - - The string type name of the type converter - - - - The type specified must implement the - or the interfaces. - - - - - - A straightforward implementation of the interface. - - - - This is the default implementation of the - interface. Implementors of the interface - should aggregate an instance of this type. - - - Nicko Cadell - Gert Driesen - - - - Constructor - - - - Initializes a new instance of the class. - - - - - - Append on on all attached appenders. - - The event being logged. - The number of appenders called. - - - Calls the method on all - attached appenders. - - - - - - Append on on all attached appenders. - - The array of events being logged. - The number of appenders called. - - - Calls the method on all - attached appenders. - - - - - - Calls the DoAppende method on the with - the objects supplied. - - The appender - The events - - - If the supports the - interface then the will be passed - through using that interface. Otherwise the - objects in the array will be passed one at a time. - - - - - - Attaches an appender. - - The appender to add. - - - If the appender is already in the list it won't be added again. - - - - - - Gets an attached appender with the specified name. - - The name of the appender to get. - - The appender with the name specified, or null if no appender with the - specified name is found. - - - - Lookup an attached appender by name. - - - - - - Removes all attached appenders. - - - - Removes and closes all attached appenders - - - - - - Removes the specified appender from the list of attached appenders. - - The appender to remove. - The appender removed from the list - - - The appender removed is not closed. - If you are discarding the appender you must call - on the appender removed. - - - - - - Removes the appender with the specified name from the list of appenders. - - The name of the appender to remove. - The appender removed from the list - - - The appender removed is not closed. - If you are discarding the appender you must call - on the appender removed. - - - - - - List of appenders - - - - - Array of appenders, used to cache the m_appenderList - - - - - Gets all attached appenders. - - - A collection of attached appenders, or null if there - are no attached appenders. - - - - The read only collection of all currently attached appenders. - - - - - - This class aggregates several PropertiesDictionary collections together. - - - - Provides a dictionary style lookup over an ordered list of - collections. - - - Nicko Cadell - - - - Constructor - - - - Initializes a new instance of the class. - - - - - - Add a Properties Dictionary to this composite collection - - the properties to add - - - Properties dictionaries added first take precedence over dictionaries added - later. - - - - - - Flatten this composite collection into a single properties dictionary - - the flattened dictionary - - - Reduces the collection of ordered dictionaries to a single dictionary - containing the resultant values for the keys. - - - - - - Gets the value of a property - - - The value for the property with the specified key - - - - Looks up the value for the specified. - The collections are searched - in the order in which they were added to this collection. The value - returned is the value held by the first collection that contains - the specified key. - - - If none of the collections contain the specified key then - null is returned. - - - - - - Base class for Context Properties implementations - - - - This class defines a basic property get set accessor - - - Nicko Cadell - - - - Gets or sets the value of a property - - - The value for the property with the specified key - - - - Gets or sets the value of a property - - - - - - Subclass of that maintains a count of - the number of bytes written. - - - - This writer counts the number of bytes written. - - - Nicko Cadell - Gert Driesen - - - - that does not leak exceptions - - - - does not throw exceptions when things go wrong. - Instead, it delegates error handling to its . - - - Nicko Cadell - Gert Driesen - - - - Adapter that extends and forwards all - messages to an instance of . - - - - Adapter that extends and forwards all - messages to an instance of . - - - Nicko Cadell - - - - The writer to forward messages to - - - - - Create an instance of that forwards all - messages to a . - - The to forward to - - - Create an instance of that forwards all - messages to a . - - - - - - Closes the writer and releases any system resources associated with the writer - - - - - - - - - Dispose this writer - - flag indicating if we are being disposed - - - Dispose this writer - - - - - - Flushes any buffered output - - - - Clears all buffers for the writer and causes any buffered data to be written - to the underlying device - - - - - - Writes a character to the wrapped TextWriter - - the value to write to the TextWriter - - - Writes a character to the wrapped TextWriter - - - - - - Writes a character buffer to the wrapped TextWriter - - the data buffer - the start index - the number of characters to write - - - Writes a character buffer to the wrapped TextWriter - - - - - - Writes a string to the wrapped TextWriter - - the value to write to the TextWriter - - - Writes a string to the wrapped TextWriter - - - - - - Gets or sets the underlying . - - - The underlying . - - - - Gets or sets the underlying . - - - - - - The Encoding in which the output is written - - - The - - - - The Encoding in which the output is written - - - - - - Gets an object that controls formatting - - - The format provider - - - - Gets an object that controls formatting - - - - - - Gets or sets the line terminator string used by the TextWriter - - - The line terminator to use - - - - Gets or sets the line terminator string used by the TextWriter - - - - - - Constructor - - the writer to actually write to - the error handler to report error to - - - Create a new QuietTextWriter using a writer and error handler - - - - - - Writes a character to the underlying writer - - the char to write - - - Writes a character to the underlying writer - - - - - - Writes a buffer to the underlying writer - - the buffer to write - the start index to write from - the number of characters to write - - - Writes a buffer to the underlying writer - - - - - - Writes a string to the output. - - The string data to write to the output. - - - Writes a string to the output. - - - - - - Closes the underlying output writer. - - - - Closes the underlying output writer. - - - - - - The error handler instance to pass all errors to - - - - - Flag to indicate if this writer is closed - - - - - Gets or sets the error handler that all errors are passed to. - - - The error handler that all errors are passed to. - - - - Gets or sets the error handler that all errors are passed to. - - - - - - Gets a value indicating whether this writer is closed. - - - true if this writer is closed, otherwise false. - - - - Gets a value indicating whether this writer is closed. - - - - - - Constructor - - The to actually write to. - The to report errors to. - - - Creates a new instance of the class - with the specified and . - - - - - - Writes a character to the underlying writer and counts the number of bytes written. - - the char to write - - - Overrides implementation of . Counts - the number of bytes written. - - - - - - Writes a buffer to the underlying writer and counts the number of bytes written. - - the buffer to write - the start index to write from - the number of characters to write - - - Overrides implementation of . Counts - the number of bytes written. - - - - - - Writes a string to the output and counts the number of bytes written. - - The string data to write to the output. - - - Overrides implementation of . Counts - the number of bytes written. - - - - - - Total number of bytes written. - - - - - Gets or sets the total number of bytes written. - - - The total number of bytes written. - - - - Gets or sets the total number of bytes written. - - - - - - A fixed size rolling buffer of logging events. - - - - An array backed fixed size leaky bucket. - - - Nicko Cadell - Gert Driesen - - - - Constructor - - The maximum number of logging events in the buffer. - - - Initializes a new instance of the class with - the specified maximum number of buffered logging events. - - - The argument is not a positive integer. - - - - Appends a to the buffer. - - The event to append to the buffer. - The event discarded from the buffer, if the buffer is full, otherwise null. - - - Append an event to the buffer. If the buffer still contains free space then - null is returned. If the buffer is full then an event will be dropped - to make space for the new event, the event dropped is returned. - - - - - - Get and remove the oldest event in the buffer. - - The oldest logging event in the buffer - - - Gets the oldest (first) logging event in the buffer and removes it - from the buffer. - - - - - - Pops all the logging events from the buffer into an array. - - An array of all the logging events in the buffer. - - - Get all the events in the buffer and clear the buffer. - - - - - - Clear the buffer - - - - Clear the buffer of all events. The events in the buffer are lost. - - - - - - Gets the th oldest event currently in the buffer. - - The th oldest event currently in the buffer. - - - If is outside the range 0 to the number of events - currently in the buffer, then null is returned. - - - - - - Gets the maximum size of the buffer. - - The maximum size of the buffer. - - - Gets the maximum size of the buffer - - - - - - Gets the number of logging events in the buffer. - - The number of logging events in the buffer. - - - This number is guaranteed to be in the range 0 to - (inclusive). - - - - - - An always empty . - - - - A singleton implementation of the - interface that always represents an empty collection. - - - Nicko Cadell - Gert Driesen - - - - Initializes a new instance of the class. - - - - Uses a private access modifier to enforce the singleton pattern. - - - - - - Copies the elements of the to an - , starting at a particular Array index. - - The one-dimensional - that is the destination of the elements copied from - . The Array must have zero-based - indexing. - The zero-based index in array at which - copying begins. - - - As the collection is empty no values are copied into the array. - - - - - - Returns an enumerator that can iterate through a collection. - - - An that can be used to - iterate through the collection. - - - - As the collection is empty a is returned. - - - - - - The singleton instance of the empty collection. - - - - - Gets the singleton instance of the empty collection. - - The singleton instance of the empty collection. - - - Gets the singleton instance of the empty collection. - - - - - - Gets a value indicating if access to the is synchronized (thread-safe). - - - true if access to the is synchronized (thread-safe); otherwise, false. - - - - For the this property is always true. - - - - - - Gets the number of elements contained in the . - - - The number of elements contained in the . - - - - As the collection is empty the is always 0. - - - - - - Gets an object that can be used to synchronize access to the . - - - An object that can be used to synchronize access to the . - - - - As the collection is empty and thread safe and synchronized this instance is also - the object. - - - - - - An always empty . - - - - A singleton implementation of the - interface that always represents an empty collection. - - - Nicko Cadell - Gert Driesen - - - - Initializes a new instance of the class. - - - - Uses a private access modifier to enforce the singleton pattern. - - - - - - Copies the elements of the to an - , starting at a particular Array index. - - The one-dimensional - that is the destination of the elements copied from - . The Array must have zero-based - indexing. - The zero-based index in array at which - copying begins. - - - As the collection is empty no values are copied into the array. - - - - - - Returns an enumerator that can iterate through a collection. - - - An that can be used to - iterate through the collection. - - - - As the collection is empty a is returned. - - - - - - Adds an element with the provided key and value to the - . - - The to use as the key of the element to add. - The to use as the value of the element to add. - - - As the collection is empty no new values can be added. A - is thrown if this method is called. - - - This dictionary is always empty and cannot be modified. - - - - Removes all elements from the . - - - - As the collection is empty no values can be removed. A - is thrown if this method is called. - - - This dictionary is always empty and cannot be modified. - - - - Determines whether the contains an element - with the specified key. - - The key to locate in the . - false - - - As the collection is empty the method always returns false. - - - - - - Returns an enumerator that can iterate through a collection. - - - An that can be used to - iterate through the collection. - - - - As the collection is empty a is returned. - - - - - - Removes the element with the specified key from the . - - The key of the element to remove. - - - As the collection is empty no values can be removed. A - is thrown if this method is called. - - - This dictionary is always empty and cannot be modified. - - - - The singleton instance of the empty dictionary. - - - - - Gets the singleton instance of the . - - The singleton instance of the . - - - Gets the singleton instance of the . - - - - - - Gets a value indicating if access to the is synchronized (thread-safe). - - - true if access to the is synchronized (thread-safe); otherwise, false. - - - - For the this property is always true. - - - - - - Gets the number of elements contained in the - - - The number of elements contained in the . - - - - As the collection is empty the is always 0. - - - - - - Gets an object that can be used to synchronize access to the . - - - An object that can be used to synchronize access to the . - - - - As the collection is empty and thread safe and synchronized this instance is also - the object. - - - - - - Gets a value indicating whether the has a fixed size. - - true - - - As the collection is empty always returns true. - - - - - - Gets a value indicating whether the is read-only. - - true - - - As the collection is empty always returns true. - - - - - - Gets an containing the keys of the . - - An containing the keys of the . - - - As the collection is empty a is returned. - - - - - - Gets an containing the values of the . - - An containing the values of the . - - - As the collection is empty a is returned. - - - - - - Gets or sets the element with the specified key. - - The key of the element to get or set. - null - - - As the collection is empty no values can be looked up or stored. - If the index getter is called then null is returned. - A is thrown if the setter is called. - - - This dictionary is always empty and cannot be modified. - - - - Contain the information obtained when parsing formatting modifiers - in conversion modifiers. - - - - Holds the formatting information extracted from the format string by - the . This is used by the - objects when rendering the output. - - - Nicko Cadell - Gert Driesen - - - - Defaut Constructor - - - - Initializes a new instance of the class. - - - - - - Constructor - - - - Initializes a new instance of the class - with the specified parameters. - - - - - - Gets or sets the minimum value. - - - The minimum value. - - - - Gets or sets the minimum value. - - - - - - Gets or sets the maximum value. - - - The maximum value. - - - - Gets or sets the maximum value. - - - - - - Gets or sets a flag indicating whether left align is enabled - or not. - - - A flag indicating whether left align is enabled or not. - - - - Gets or sets a flag indicating whether left align is enabled or not. - - - - - - Implementation of Properties collection for the - - - - This class implements a properties collection that is thread safe and supports both - storing properties and capturing a read only copy of the current propertied. - - - This class is optimized to the scenario where the properties are read frequently - and are modified infrequently. - - - Nicko Cadell - - - - The read only copy of the properties. - - - - This variable is declared volatile to prevent the compiler and JIT from - reordering reads and writes of this thread performed on different threads. - - - - - - Lock object used to synchronize updates within this instance - - - - - Constructor - - - - Initializes a new instance of the class. - - - - - - Remove a property from the global context - - the key for the entry to remove - - - Removing an entry from the global context properties is relatively expensive compared - with reading a value. - - - - - - Clear the global context properties - - - - - Get a readonly immutable copy of the properties - - the current global context properties - - - This implementation is fast because the GlobalContextProperties class - stores a readonly copy of the properties. - - - - - - Gets or sets the value of a property - - - The value for the property with the specified key - - - - Reading the value for a key is faster than setting the value. - When the value is written a new read only copy of - the properties is created. - - - - - - Manages a mapping from levels to - - - - Manages an ordered mapping from instances - to subclasses. - - - Nicko Cadell - - - - Default constructor - - - - Initialise a new instance of . - - - - - - Add a to this mapping - - the entry to add - - - If a has previously been added - for the same then that entry will be - overwritten. - - - - - - Lookup the mapping for the specified level - - the level to lookup - the for the level or null if no mapping found - - - Lookup the value for the specified level. Finds the nearest - mapping value for the level that is equal to or less than the - specified. - - - If no mapping could be found then null is returned. - - - - - - Initialize options - - - - Caches the sorted list of in an array - - - - - - Implementation of Properties collection for the - - - - Class implements a collection of properties that is specific to each thread. - The class is not synchronized as each thread has its own . - - - Nicko Cadell - - - - Constructor - - - - Initializes a new instance of the class. - - - - - - Remove a property - - the key for the entry to remove - - - Remove the value for the specified from the context. - - - - - - Clear all the context properties - - - - Clear all the context properties - - - - - - Get the PropertiesDictionary stored in the LocalDataStoreSlot for this thread. - - create the dictionary if it does not exist, otherwise return null if is does not exist - the properties for this thread - - - The collection returned is only to be used on the calling thread. If the - caller needs to share the collection between different threads then the - caller must clone the collection before doings so. - - - - - - Gets or sets the value of a property - - - The value for the property with the specified key - - - - Get or set the property value for the specified. - - - - - - Outputs log statements from within the log4net assembly. - - - - Log4net components cannot make log4net logging calls. However, it is - sometimes useful for the user to learn about what log4net is - doing. - - - All log4net internal debug calls go to the standard output stream - whereas internal error messages are sent to the standard error output - stream. - - - Nicko Cadell - Gert Driesen - - - - Initializes a new instance of the class. - - - - Uses a private access modifier to prevent instantiation of this class. - - - - - - Static constructor that initializes logging by reading - settings from the application configuration file. - - - - The log4net.Internal.Debug application setting - controls internal debugging. This setting should be set - to true to enable debugging. - - - The log4net.Internal.Quiet application setting - suppresses all internal logging including error messages. - This setting should be set to true to enable message - suppression. - - - - - - Writes log4net internal debug messages to the - standard output stream. - - The message to log. - - - All internal debug messages are prepended with - the string "log4net: ". - - - - - - Writes log4net internal debug messages to the - standard output stream. - - The message to log. - An exception to log. - - - All internal debug messages are prepended with - the string "log4net: ". - - - - - - Writes log4net internal warning messages to the - standard error stream. - - The message to log. - - - All internal warning messages are prepended with - the string "log4net:WARN ". - - - - - - Writes log4net internal warning messages to the - standard error stream. - - The message to log. - An exception to log. - - - All internal warning messages are prepended with - the string "log4net:WARN ". - - - - - - Writes log4net internal error messages to the - standard error stream. - - The message to log. - - - All internal error messages are prepended with - the string "log4net:ERROR ". - - - - - - Writes log4net internal error messages to the - standard error stream. - - The message to log. - An exception to log. - - - All internal debug messages are prepended with - the string "log4net:ERROR ". - - - - - - Writes output to the standard output stream. - - The message to log. - - - Writes to both Console.Out and System.Diagnostics.Trace. - Note that the System.Diagnostics.Trace is not supported - on the Compact Framework. - - - If the AppDomain is not configured with a config file then - the call to System.Diagnostics.Trace may fail. This is only - an issue if you are programmatically creating your own AppDomains. - - - - - - Writes output to the standard error stream. - - The message to log. - - - Writes to both Console.Error and System.Diagnostics.Trace. - Note that the System.Diagnostics.Trace is not supported - on the Compact Framework. - - - If the AppDomain is not configured with a config file then - the call to System.Diagnostics.Trace may fail. This is only - an issue if you are programmatically creating your own AppDomains. - - - - - - Default debug level - - - - - In quietMode not even errors generate any output. - - - - - Gets or sets a value indicating whether log4net internal logging - is enabled or disabled. - - - true if log4net internal logging is enabled, otherwise - false. - - - - When set to true, internal debug level logging will be - displayed. - - - This value can be set by setting the application setting - log4net.Internal.Debug in the application configuration - file. - - - The default value is false, i.e. debugging is - disabled. - - - - - The following example enables internal debugging using the - application configuration file : - - - - - - - - - - - - - Gets or sets a value indicating whether log4net should generate no output - from internal logging, not even for errors. - - - true if log4net should generate no output at all from internal - logging, otherwise false. - - - - When set to true will cause internal logging at all levels to be - suppressed. This means that no warning or error reports will be logged. - This option overrides the setting and - disables all debug also. - - This value can be set by setting the application setting - log4net.Internal.Quiet in the application configuration file. - - - The default value is false, i.e. internal logging is not - disabled. - - - - The following example disables internal logging using the - application configuration file : - - - - - - - - - - - - Test if LogLog.Debug is enabled for output. - - - true if Debug is enabled - - - - Test if LogLog.Debug is enabled for output. - - - - - - Test if LogLog.Warn is enabled for output. - - - true if Warn is enabled - - - - Test if LogLog.Warn is enabled for output. - - - - - - Test if LogLog.Error is enabled for output. - - - true if Error is enabled - - - - Test if LogLog.Error is enabled for output. - - - - - - Represents a native error code and message. - - - - Represents a Win32 platform native error. - - - Nicko Cadell - Gert Driesen - - - - Create an instance of the class with the specified - error number and message. - - The number of the native error. - The message of the native error. - - - Create an instance of the class with the specified - error number and message. - - - - - - Create a new instance of the class for the last Windows error. - - - An instance of the class for the last windows error. - - - - The message for the error number is lookup up using the - native Win32 FormatMessage function. - - - - - - Create a new instance of the class. - - the error number for the native error - - An instance of the class for the specified - error number. - - - - The message for the specified error number is lookup up using the - native Win32 FormatMessage function. - - - - - - Retrieves the message corresponding with a Win32 message identifier. - - Message identifier for the requested message. - - The message corresponding with the specified message identifier. - - - - The message will be searched for in system message-table resource(s) - using the native FormatMessage function. - - - - - - Return error information string - - error information string - - - Return error information string - - - - - - Formats a message string. - - Formatting options, and how to interpret the parameter. - Location of the message definition. - Message identifier for the requested message. - Language identifier for the requested message. - If includes FORMAT_MESSAGE_ALLOCATE_BUFFER, the function allocates a buffer using the LocalAlloc function, and places the pointer to the buffer at the address specified in . - If the FORMAT_MESSAGE_ALLOCATE_BUFFER flag is not set, this parameter specifies the maximum number of TCHARs that can be stored in the output buffer. If FORMAT_MESSAGE_ALLOCATE_BUFFER is set, this parameter specifies the minimum number of TCHARs to allocate for an output buffer. - Pointer to an array of values that are used as insert values in the formatted message. - - - The function requires a message definition as input. The message definition can come from a - buffer passed into the function. It can come from a message table resource in an - already-loaded module. Or the caller can ask the function to search the system's message - table resource(s) for the message definition. The function finds the message definition - in a message table resource based on a message identifier and a language identifier. - The function copies the formatted message text to an output buffer, processing any embedded - insert sequences if requested. - - - To prevent the usage of unsafe code, this stub does not support inserting values in the formatted message. - - - - - If the function succeeds, the return value is the number of TCHARs stored in the output - buffer, excluding the terminating null character. - - - If the function fails, the return value is zero. To get extended error information, - call . - - - - - - Gets the number of the native error. - - - The number of the native error. - - - - Gets the number of the native error. - - - - - - Gets the message of the native error. - - - The message of the native error. - - - - - Gets the message of the native error. - - - - - An always empty . - - - - A singleton implementation of the over a collection - that is empty and not modifiable. - - - Nicko Cadell - Gert Driesen - - - - Initializes a new instance of the class. - - - - Uses a private access modifier to enforce the singleton pattern. - - - - - - Test if the enumerator can advance, if so advance. - - false as the cannot advance. - - - As the enumerator is over an empty collection its - value cannot be moved over a valid position, therefore - will always return false. - - - - - - Resets the enumerator back to the start. - - - - As the enumerator is over an empty collection does nothing. - - - - - - The singleton instance of the . - - - - - Gets the singleton instance of the . - - The singleton instance of the . - - - Gets the singleton instance of the . - - - - - - Gets the current object from the enumerator. - - - Throws an because the - never has a current value. - - - - As the enumerator is over an empty collection its - value cannot be moved over a valid position, therefore - will throw an . - - - The collection is empty and - cannot be positioned over a valid location. - - - - Gets the current key from the enumerator. - - - Throws an exception because the - never has a current value. - - - - As the enumerator is over an empty collection its - value cannot be moved over a valid position, therefore - will throw an . - - - The collection is empty and - cannot be positioned over a valid location. - - - - Gets the current value from the enumerator. - - The current value from the enumerator. - - Throws an because the - never has a current value. - - - - As the enumerator is over an empty collection its - value cannot be moved over a valid position, therefore - will throw an . - - - The collection is empty and - cannot be positioned over a valid location. - - - - Gets the current entry from the enumerator. - - - Throws an because the - never has a current entry. - - - - As the enumerator is over an empty collection its - value cannot be moved over a valid position, therefore - will throw an . - - - The collection is empty and - cannot be positioned over a valid location. - - - - An always empty . - - - - A singleton implementation of the over a collection - that is empty and not modifiable. - - - Nicko Cadell - Gert Driesen - - - - Initializes a new instance of the class. - - - - Uses a private access modifier to enforce the singleton pattern. - - - - - - Test if the enumerator can advance, if so advance - - false as the cannot advance. - - - As the enumerator is over an empty collection its - value cannot be moved over a valid position, therefore - will always return false. - - - - - - Resets the enumerator back to the start. - - - - As the enumerator is over an empty collection does nothing. - - - - - - The singleton instance of the . - - - - - Get the singleton instance of the . - - The singleton instance of the . - - - Gets the singleton instance of the . - - - - - - Gets the current object from the enumerator. - - - Throws an because the - never has a current value. - - - - As the enumerator is over an empty collection its - value cannot be moved over a valid position, therefore - will throw an . - - - The collection is empty and - cannot be positioned over a valid location. - - - - A SecurityContext used when a SecurityContext is not required - - - - The is a no-op implementation of the - base class. It is used where a - is required but one has not been provided. - - - Nicko Cadell - - - - Singleton instance of - - - - Singleton instance of - - - - - - Private constructor - - - - Private constructor for singleton pattern. - - - - - - Impersonate this SecurityContext - - State supplied by the caller - null - - - No impersonation is done and null is always returned. - - - - - - Implements log4net's default error handling policy which consists - of emitting a message for the first error in an appender and - ignoring all subsequent errors. - - - - The error message is printed on the standard error output stream. - - - This policy aims at protecting an otherwise working application - from being flooded with error messages when logging fails. - - - Nicko Cadell - Gert Driesen - - - - Default Constructor - - - - Initializes a new instance of the class. - - - - - - Constructor - - The prefix to use for each message. - - - Initializes a new instance of the class - with the specified prefix. - - - - - - Log an Error - - The error message. - The exception. - The internal error code. - - - Prints the message and the stack trace of the exception on the standard - error output stream. - - - - - - Log an Error - - The error message. - The exception. - - - Prints the message and the stack trace of the exception on the standard - error output stream. - - - - - - Log an error - - The error message. - - - Print a the error message passed as parameter on the standard - error output stream. - - - - - - Flag to indicate if it is the first error - - - - - String to prefix each message with - - - - - Is error logging enabled - - - - Is error logging enabled. Logging is only enabled for the - first error delivered to the . - - - - - - A convenience class to convert property values to specific types. - - - - Utility functions for converting types and parsing values. - - - Nicko Cadell - Gert Driesen - - - - Initializes a new instance of the class. - - - - Uses a private access modifier to prevent instantiation of this class. - - - - - - Converts a string to a value. - - String to convert. - The default value. - The value of . - - - If is "true", then true is returned. - If is "false", then false is returned. - Otherwise, is returned. - - - - - - Parses a file size into a number. - - String to parse. - The default value. - The value of . - - - Parses a file size of the form: number[KB|MB|GB] into a - long value. It is scaled with the appropriate multiplier. - - - is returned when - cannot be converted to a value. - - - - - - Converts a string to an object. - - The target type to convert to. - The string to convert to an object. - - The object converted from a string or null when the - conversion failed. - - - - Converts a string to an object. Uses the converter registry to try - to convert the string value into the specified target type. - - - - - - Checks if there is an appropriate type conversion from the source type to the target type. - - The type to convert from. - The type to convert to. - true if there is a conversion from the source type to the target type. - - Checks if there is an appropriate type conversion from the source type to the target type. - - - - - - - Converts an object to the target type. - - The object to convert to the target type. - The type to convert to. - The converted object. - - - Converts an object to the target type. - - - - - - Instantiates an object given a class name. - - The fully qualified class name of the object to instantiate. - The class to which the new object should belong. - The object to return in case of non-fulfillment. - - An instance of the or - if the object could not be instantiated. - - - - Checks that the is a subclass of - . If that test fails or the object could - not be instantiated, then is returned. - - - - - - Performs variable substitution in string from the - values of keys found in . - - The string on which variable substitution is performed. - The dictionary to use to lookup variables. - The result of the substitutions. - - - The variable substitution delimiters are ${ and }. - - - For example, if props contains key=value, then the call - - - - string s = OptionConverter.SubstituteVariables("Value of key is ${key}."); - - - - will set the variable s to "Value of key is value.". - - - If no value could be found for the specified key, then substitution - defaults to an empty string. - - - For example, if system properties contains no value for the key - "nonExistentKey", then the call - - - - string s = OptionConverter.SubstituteVariables("Value of nonExistentKey is [${nonExistentKey}]"); - - - - will set s to "Value of nonExistentKey is []". - - - An Exception is thrown if contains a start - delimiter "${" which is not balanced by a stop delimiter "}". - - - - - - Converts the string representation of the name or numeric value of one or - more enumerated constants to an equivalent enumerated object. - - The type to convert to. - The enum string value. - If true, ignore case; otherwise, regard case. - An object of type whose value is represented by . - - - - Most of the work of the class - is delegated to the PatternParser class. - - - - The PatternParser processes a pattern string and - returns a chain of objects. - - - Nicko Cadell - Gert Driesen - - - - Constructor - - The pattern to parse. - - - Initializes a new instance of the class - with the specified pattern string. - - - - - - Parses the pattern into a chain of pattern converters. - - The head of a chain of pattern converters. - - - Parses the pattern into a chain of pattern converters. - - - - - - Build the unified cache of converters from the static and instance maps - - the list of all the converter names - - - Build the unified cache of converters from the static and instance maps - - - - - - Internal method to parse the specified pattern to find specified matches - - the pattern to parse - the converter names to match in the pattern - - - The matches param must be sorted such that longer strings come before shorter ones. - - - - - - Process a parsed literal - - the literal text - - - - Process a parsed converter pattern - - the name of the converter - the optional option for the converter - the formatting info for the converter - - - - Resets the internal state of the parser and adds the specified pattern converter - to the chain. - - The pattern converter to add. - - - - The first pattern converter in the chain - - - - - the last pattern converter in the chain - - - - - The pattern - - - - - Internal map of converter identifiers to converter types - - - - This map overrides the static s_globalRulesRegistry map. - - - - - - Get the converter registry used by this parser - - - The converter registry used by this parser - - - - Get the converter registry used by this parser - - - - - - Sort strings by length - - - - that orders strings by string length. - The longest strings are placed first - - - - - - This class implements a patterned string. - - - - This string has embedded patterns that are resolved and expanded - when the string is formatted. - - - This class functions similarly to the - in that it accepts a pattern and renders it to a string. Unlike the - however the PatternString - does not render the properties of a specific but - of the process in general. - - - The recognized conversion pattern names are: - - - - Conversion Pattern Name - Effect - - - appdomain - - - Used to output the friendly name of the current AppDomain. - - - - - date - - - Used to output the date of the logging event in the local time zone. - To output the date in universal time use the %utcdate pattern. - The date conversion - specifier may be followed by a date format specifier enclosed - between braces. For example, %date{HH:mm:ss,fff} or - %date{dd MMM yyyy HH:mm:ss,fff}. If no date format specifier is - given then ISO8601 format is - assumed (). - - - The date format specifier admits the same syntax as the - time pattern string of the . - - - For better results it is recommended to use the log4net date - formatters. These can be specified using one of the strings - "ABSOLUTE", "DATE" and "ISO8601" for specifying - , - and respectively - . For example, - %date{ISO8601} or %date{ABSOLUTE}. - - - These dedicated date formatters perform significantly - better than . - - - - - env - - - Used to output the a specific environment variable. The key to - lookup must be specified within braces and directly following the - pattern specifier, e.g. %env{COMPUTERNAME} would include the value - of the COMPUTERNAME environment variable. - - - The env pattern is not supported on the .NET Compact Framework. - - - - - identity - - - Used to output the user name for the currently active user - (Principal.Identity.Name). - - - - - newline - - - Outputs the platform dependent line separator character or - characters. - - - This conversion pattern name offers the same performance as using - non-portable line separator strings such as "\n", or "\r\n". - Thus, it is the preferred way of specifying a line separator. - - - - - processid - - - Used to output the system process ID for the current process. - - - - - property - - - Used to output a specific context property. The key to - lookup must be specified within braces and directly following the - pattern specifier, e.g. %property{user} would include the value - from the property that is keyed by the string 'user'. Each property value - that is to be included in the log must be specified separately. - Properties are stored in logging contexts. By default - the log4net:HostName property is set to the name of machine on - which the event was originally logged. - - - If no key is specified, e.g. %property then all the keys and their - values are printed in a comma separated list. - - - The properties of an event are combined from a number of different - contexts. These are listed below in the order in which they are searched. - - - - the thread properties - - The that are set on the current - thread. These properties are shared by all events logged on this thread. - - - - the global properties - - The that are set globally. These - properties are shared by all the threads in the AppDomain. - - - - - - - random - - - Used to output a random string of characters. The string is made up of - uppercase letters and numbers. By default the string is 4 characters long. - The length of the string can be specified within braces directly following the - pattern specifier, e.g. %random{8} would output an 8 character string. - - - - - username - - - Used to output the WindowsIdentity for the currently - active user. - - - - - utcdate - - - Used to output the date of the logging event in universal time. - The date conversion - specifier may be followed by a date format specifier enclosed - between braces. For example, %utcdate{HH:mm:ss,fff} or - %utcdate{dd MMM yyyy HH:mm:ss,fff}. If no date format specifier is - given then ISO8601 format is - assumed (). - - - The date format specifier admits the same syntax as the - time pattern string of the . - - - For better results it is recommended to use the log4net date - formatters. These can be specified using one of the strings - "ABSOLUTE", "DATE" and "ISO8601" for specifying - , - and respectively - . For example, - %utcdate{ISO8601} or %utcdate{ABSOLUTE}. - - - These dedicated date formatters perform significantly - better than . - - - - - % - - - The sequence %% outputs a single percent sign. - - - - - - Additional pattern converters may be registered with a specific - instance using or - . - - - See the for details on the - format modifiers supported by the patterns. - - - Nicko Cadell - - - - Internal map of converter identifiers to converter types. - - - - - the pattern - - - - - the head of the pattern converter chain - - - - - patterns defined on this PatternString only - - - - - Initialize the global registry - - - - - Default constructor - - - - Initialize a new instance of - - - - - - Constructs a PatternString - - The pattern to use with this PatternString - - - Initialize a new instance of with the pattern specified. - - - - - - Initialize object options - - - - This is part of the delayed object - activation scheme. The method must - be called on this object after the configuration properties have - been set. Until is called this - object is in an undefined state and must not be used. - - - If any of the configuration properties are modified then - must be called again. - - - - - - Create the used to parse the pattern - - the pattern to parse - The - - - Returns PatternParser used to parse the conversion string. Subclasses - may override this to return a subclass of PatternParser which recognize - custom conversion pattern name. - - - - - - Produces a formatted string as specified by the conversion pattern. - - The TextWriter to write the formatted event to - - - Format the pattern to the . - - - - - - Format the pattern as a string - - the pattern formatted as a string - - - Format the pattern to a string. - - - - - - Add a converter to this PatternString - - the converter info - - - This version of the method is used by the configurator. - Programmatic users should use the alternative method. - - - - - - Add a converter to this PatternString - - the name of the conversion pattern for this converter - the type of the converter - - - Add a converter to this PatternString - - - - - - Gets or sets the pattern formatting string - - - The pattern formatting string - - - - The ConversionPattern option. This is the string which - controls formatting and consists of a mix of literal content and - conversion specifiers. - - - - - - Wrapper class used to map converter names to converter types - - - - Wrapper class used to map converter names to converter types - - - - - - default constructor - - - - - Gets or sets the name of the conversion pattern - - - The name of the conversion pattern - - - - Gets or sets the name of the conversion pattern - - - - - - Gets or sets the type of the converter - - - The type of the converter - - - - Gets or sets the type of the converter - - - - - - String keyed object map. - - - - While this collection is serializable only member - objects that are serializable will - be serialized along with this collection. - - - Nicko Cadell - Gert Driesen - - - - String keyed object map that is read only. - - - - This collection is readonly and cannot be modified. - - - While this collection is serializable only member - objects that are serializable will - be serialized along with this collection. - - - Nicko Cadell - Gert Driesen - - - - The Hashtable used to store the properties data - - - - - Constructor - - - - Initializes a new instance of the class. - - - - - - Copy Constructor - - properties to copy - - - Initializes a new instance of the class. - - - - - - Deserialization constructor - - The that holds the serialized object data. - The that contains contextual information about the source or destination. - - - Initializes a new instance of the class - with serialized data. - - - - - - Gets the key names. - - An array of all the keys. - - - Gets the key names. - - - - - - Test if the dictionary contains a specified key - - the key to look for - true if the dictionary contains the specified key - - - Test if the dictionary contains a specified key - - - - - - Serializes this object into the provided. - - The to populate with data. - The destination for this serialization. - - - Serializes this object into the provided. - - - - - - See - - - - - See - - - - - - See - - - - - - - Remove all properties from the properties collection - - - - - See - - - - - - - See - - - - - - - See - - - - - Gets or sets the value of the property with the specified key. - - - The value of the property with the specified key. - - The key of the property to get or set. - - - The property value will only be serialized if it is serializable. - If it cannot be serialized it will be silently ignored if - a serialization operation is performed. - - - - - - The hashtable used to store the properties - - - The internal collection used to store the properties - - - - The hashtable used to store the properties - - - - - - See - - - - - See - - - - - See - - - - - See - - - - - See - - - - - See - - - - - The number of properties in this collection - - - - - See - - - - - Constructor - - - - Initializes a new instance of the class. - - - - - - Constructor - - properties to copy - - - Initializes a new instance of the class. - - - - - - Initializes a new instance of the class - with serialized data. - - The that holds the serialized object data. - The that contains contextual information about the source or destination. - - - Because this class is sealed the serialization constructor is private. - - - - - - Remove the entry with the specified key from this dictionary - - the key for the entry to remove - - - Remove the entry with the specified key from this dictionary - - - - - - See - - an enumerator - - - Returns a over the contest of this collection. - - - - - - See - - the key to remove - - - Remove the entry with the specified key from this dictionary - - - - - - See - - the key to lookup in the collection - true if the collection contains the specified key - - - Test if this collection contains a specified key. - - - - - - Remove all properties from the properties collection - - - - Remove all properties from the properties collection - - - - - - See - - the key - the value to store for the key - - - Store a value for the specified . - - - Thrown if the is not a string - - - - See - - - - - - - See - - - - - Gets or sets the value of the property with the specified key. - - - The value of the property with the specified key. - - The key of the property to get or set. - - - The property value will only be serialized if it is serializable. - If it cannot be serialized it will be silently ignored if - a serialization operation is performed. - - - - - - See - - - false - - - - This collection is modifiable. This property always - returns false. - - - - - - See - - - The value for the key specified. - - - - Get or set a value for the specified . - - - Thrown if the is not a string - - - - See - - - - - See - - - - - See - - - - - See - - - - - See - - - - - A that ignores the message - - - - This writer is used in special cases where it is necessary - to protect a writer from being closed by a client. - - - Nicko Cadell - - - - Constructor - - the writer to actually write to - - - Create a new ProtectCloseTextWriter using a writer - - - - - - Attach this instance to a different underlying - - the writer to attach to - - - Attach this instance to a different underlying - - - - - - Does not close the underlying output writer. - - - - Does not close the underlying output writer. - This method does nothing. - - - - - - Defines a lock that supports single writers and multiple readers - - - - ReaderWriterLock is used to synchronize access to a resource. - At any given time, it allows either concurrent read access for - multiple threads, or write access for a single thread. In a - situation where a resource is changed infrequently, a - ReaderWriterLock provides better throughput than a simple - one-at-a-time lock, such as . - - - If a platform does not support a System.Threading.ReaderWriterLock - implementation then all readers and writers are serialized. Therefore - the caller must not rely on multiple simultaneous readers. - - - Nicko Cadell - - - - Constructor - - - - Initializes a new instance of the class. - - - - - - Acquires a reader lock - - - - blocks if a different thread has the writer - lock, or if at least one thread is waiting for the writer lock. - - - - - - Decrements the lock count - - - - decrements the lock count. When the count - reaches zero, the lock is released. - - - - - - Acquires the writer lock - - - - This method blocks if another thread has a reader lock or writer lock. - - - - - - Decrements the lock count on the writer lock - - - - ReleaseWriterLock decrements the writer lock count. - When the count reaches zero, the writer lock is released. - - - - - - A that can be and reused - - - - A that can be and reused. - This uses a single buffer for string operations. - - - Nicko Cadell - - - - Create an instance of - - the format provider to use - - - Create an instance of - - - - - - Override Dispose to prevent closing of writer - - flag - - - Override Dispose to prevent closing of writer - - - - - - Reset this string writer so that it can be reused. - - the maximum buffer capacity before it is trimmed - the default size to make the buffer - - - Reset this string writer so that it can be reused. - The internal buffers are cleared and reset. - - - - - - Utility class for system specific information. - - - - Utility class of static methods for system specific information. - - - Nicko Cadell - Gert Driesen - Alexey Solofnenko - - - - Private constructor to prevent instances. - - - - Only static methods are exposed from this type. - - - - - - Initialize default values for private static fields. - - - - Only static methods are exposed from this type. - - - - - - Gets the assembly location path for the specified assembly. - - The assembly to get the location for. - The location of the assembly. - - - This method does not guarantee to return the correct path - to the assembly. If only tries to give an indication as to - where the assembly was loaded from. - - - - - - Gets the fully qualified name of the , including - the name of the assembly from which the was - loaded. - - The to get the fully qualified name for. - The fully qualified name for the . - - - This is equivalent to the Type.AssemblyQualifiedName property, - but this method works on the .NET Compact Framework 1.0 as well as - the full .NET runtime. - - - - - - Gets the short name of the . - - The to get the name for. - The short name of the . - - - The short name of the assembly is the - without the version, culture, or public key. i.e. it is just the - assembly's file name without the extension. - - - Use this rather than Assembly.GetName().Name because that - is not available on the Compact Framework. - - - Because of a FileIOPermission security demand we cannot do - the obvious Assembly.GetName().Name. We are allowed to get - the of the assembly so we - start from there and strip out just the assembly name. - - - - - - Gets the file name portion of the , including the extension. - - The to get the file name for. - The file name of the assembly. - - - Gets the file name portion of the , including the extension. - - - - - - Loads the type specified in the type string. - - A sibling type to use to load the type. - The name of the type to load. - Flag set to true to throw an exception if the type cannot be loaded. - true to ignore the case of the type name; otherwise, false - The type loaded or null if it could not be loaded. - - - If the type name is fully qualified, i.e. if contains an assembly name in - the type name, the type will be loaded from the system using - . - - - If the type name is not fully qualified, it will be loaded from the assembly - containing the specified relative type. If the type is not found in the assembly - then all the loaded assemblies will be searched for the type. - - - - - - Loads the type specified in the type string. - - The name of the type to load. - Flag set to true to throw an exception if the type cannot be loaded. - true to ignore the case of the type name; otherwise, false - The type loaded or null if it could not be loaded. - - - If the type name is fully qualified, i.e. if contains an assembly name in - the type name, the type will be loaded from the system using - . - - - If the type name is not fully qualified it will be loaded from the - assembly that is directly calling this method. If the type is not found - in the assembly then all the loaded assemblies will be searched for the type. - - - - - - Loads the type specified in the type string. - - An assembly to load the type from. - The name of the type to load. - Flag set to true to throw an exception if the type cannot be loaded. - true to ignore the case of the type name; otherwise, false - The type loaded or null if it could not be loaded. - - - If the type name is fully qualified, i.e. if contains an assembly name in - the type name, the type will be loaded from the system using - . - - - If the type name is not fully qualified it will be loaded from the specified - assembly. If the type is not found in the assembly then all the loaded assemblies - will be searched for the type. - - - - - - Generate a new guid - - A new Guid - - - Generate a new guid - - - - - - Create an - - The name of the parameter that caused the exception - The value of the argument that causes this exception - The message that describes the error - the ArgumentOutOfRangeException object - - - Create a new instance of the class - with a specified error message, the parameter name, and the value - of the argument. - - - The Compact Framework does not support the 3 parameter constructor for the - type. This method provides an - implementation that works for all platforms. - - - - - - Parse a string into an value - - the string to parse - out param where the parsed value is placed - true if the string was able to be parsed into an integer - - - Attempts to parse the string into an integer. If the string cannot - be parsed then this method returns false. The method does not throw an exception. - - - - - - Parse a string into an value - - the string to parse - out param where the parsed value is placed - true if the string was able to be parsed into an integer - - - Attempts to parse the string into an integer. If the string cannot - be parsed then this method returns false. The method does not throw an exception. - - - - - - Lookup an application setting - - the application settings key to lookup - the value for the key, or null - - - Configuration APIs are not supported under the Compact Framework - - - - - - Convert a path into a fully qualified local file path. - - The path to convert. - The fully qualified path. - - - Converts the path specified to a fully - qualified path. If the path is relative it is - taken as relative from the application base - directory. - - - The path specified must be a local file path, a URI is not supported. - - - - - - Creates a new case-insensitive instance of the class with the default initial capacity. - - A new case-insensitive instance of the class with the default initial capacity - - - The new Hashtable instance uses the default load factor, the CaseInsensitiveHashCodeProvider, and the CaseInsensitiveComparer. - - - - - - Gets an empty array of types. - - - - The Type.EmptyTypes field is not available on - the .NET Compact Framework 1.0. - - - - - - Cache the host name for the current machine - - - - - Cache the application friendly name - - - - - Text to output when a null is encountered. - - - - - Text to output when an unsupported feature is requested. - - - - - Start time for the current process. - - - - - Gets the system dependent line terminator. - - - The system dependent line terminator. - - - - Gets the system dependent line terminator. - - - - - - Gets the base directory for this . - - The base directory path for the current . - - - Gets the base directory for this . - - - The value returned may be either a local file path or a URI. - - - - - - Gets the path to the configuration file for the current . - - The path to the configuration file for the current . - - - The .NET Compact Framework 1.0 does not have a concept of a configuration - file. For this runtime, we use the entry assembly location as the root for - the configuration file name. - - - The value returned may be either a local file path or a URI. - - - - - - Gets the path to the file that first executed in the current . - - The path to the entry assembly. - - - Gets the path to the file that first executed in the current . - - - - - - Gets the ID of the current thread. - - The ID of the current thread. - - - On the .NET framework, the AppDomain.GetCurrentThreadId method - is used to obtain the thread ID for the current thread. This is the - operating system ID for the thread. - - - On the .NET Compact Framework 1.0 it is not possible to get the - operating system thread ID for the current thread. The native method - GetCurrentThreadId is implemented inline in a header file - and cannot be called. - - - On the .NET Framework 2.0 the Thread.ManagedThreadId is used as this - gives a stable id unrelated to the operating system thread ID which may - change if the runtime is using fibers. - - - - - - Get the host name or machine name for the current machine - - - The hostname or machine name - - - - Get the host name or machine name for the current machine - - - The host name () or - the machine name (Environment.MachineName) for - the current machine, or if neither of these are available - then NOT AVAILABLE is returned. - - - - - - Get this application's friendly name - - - The friendly name of this application as a string - - - - If available the name of the application is retrieved from - the AppDomain using AppDomain.CurrentDomain.FriendlyName. - - - Otherwise the file name of the entry assembly is used. - - - - - - Get the start time for the current process. - - - - This is the time at which the log4net library was loaded into the - AppDomain. Due to reports of a hang in the call to System.Diagnostics.Process.StartTime - this is not the start time for the current process. - - - The log4net library should be loaded by an application early during its - startup, therefore this start time should be a good approximation for - the actual start time. - - - Note that AppDomains may be loaded and unloaded within the - same process without the process terminating, however this start time - will be set per AppDomain. - - - - - - Text to output when a null is encountered. - - - - Use this value to indicate a null has been encountered while - outputting a string representation of an item. - - - The default value is (null). This value can be overridden by specifying - a value for the log4net.NullText appSetting in the application's - .config file. - - - - - - Text to output when an unsupported feature is requested. - - - - Use this value when an unsupported feature is requested. - - - The default value is NOT AVAILABLE. This value can be overridden by specifying - a value for the log4net.NotAvailableText appSetting in the application's - .config file. - - - - - - Utility class that represents a format string. - - - - Utility class that represents a format string. - - - Nicko Cadell - - - - Initialise the - - An that supplies culture-specific formatting information. - A containing zero or more format items. - An array containing zero or more objects to format. - - - - Format the string and arguments - - the formatted string - - - - Replaces the format item in a specified with the text equivalent - of the value of a corresponding instance in a specified array. - A specified parameter supplies culture-specific formatting information. - - An that supplies culture-specific formatting information. - A containing zero or more format items. - An array containing zero or more objects to format. - - A copy of format in which the format items have been replaced by the - equivalent of the corresponding instances of in args. - - - - This method does not throw exceptions. If an exception thrown while formatting the result the - exception and arguments are returned in the result string. - - - - - - Process an error during StringFormat - - - - - Dump the contents of an array into a string builder - - - - - Dump an object to a string - - - - - Implementation of Properties collection for the - - - - Class implements a collection of properties that is specific to each thread. - The class is not synchronized as each thread has its own . - - - Nicko Cadell - - - - The thread local data slot to use to store a PropertiesDictionary. - - - - - Internal constructor - - - - Initializes a new instance of the class. - - - - - - Remove a property - - the key for the entry to remove - - - Remove a property - - - - - - Clear all properties - - - - Clear all properties - - - - - - Get the PropertiesDictionary for this thread. - - create the dictionary if it does not exist, otherwise return null if is does not exist - the properties for this thread - - - The collection returned is only to be used on the calling thread. If the - caller needs to share the collection between different threads then the - caller must clone the collection before doing so. - - - - - - Gets or sets the value of a property - - - The value for the property with the specified key - - - - Gets or sets the value of a property - - - - - - Implementation of Stack for the - - - - Implementation of Stack for the - - - Nicko Cadell - - - - The stack store. - - - - - Internal constructor - - - - Initializes a new instance of the class. - - - - - - Clears all the contextual information held in this stack. - - - - Clears all the contextual information held in this stack. - Only call this if you think that this tread is being reused after - a previous call execution which may not have completed correctly. - You do not need to use this method if you always guarantee to call - the method of the - returned from even in exceptional circumstances, - for example by using the using(log4net.ThreadContext.Stacks["NDC"].Push("Stack_Message")) - syntax. - - - - - - Removes the top context from this stack. - - The message in the context that was removed from the top of this stack. - - - Remove the top context from this stack, and return - it to the caller. If this stack is empty then an - empty string (not ) is returned. - - - - - - Pushes a new context message into this stack. - - The new context message. - - An that can be used to clean up the context stack. - - - - Pushes a new context onto this stack. An - is returned that can be used to clean up this stack. This - can be easily combined with the using keyword to scope the - context. - - - Simple example of using the Push method with the using keyword. - - using(log4net.ThreadContext.Stacks["NDC"].Push("Stack_Message")) - { - log.Warn("This should have an ThreadContext Stack message"); - } - - - - - - Gets the current context information for this stack. - - The current context information. - - - - Gets the current context information for this stack. - - Gets the current context information - - - Gets the current context information for this stack. - - - - - - Get a portable version of this object - - the portable instance of this object - - - Get a cross thread portable version of this object - - - - - - The number of messages in the stack - - - The current number of messages in the stack - - - - The current number of messages in the stack. That is - the number of times has been called - minus the number of times has been called. - - - - - - Gets and sets the internal stack used by this - - The internal storage stack - - - This property is provided only to support backward compatability - of the . Tytpically the internal stack should not - be modified. - - - - - - Inner class used to represent a single context frame in the stack. - - - - Inner class used to represent a single context frame in the stack. - - - - - - Constructor - - The message for this context. - The parent context in the chain. - - - Initializes a new instance of the class - with the specified message and parent context. - - - - - - Get the message. - - The message. - - - Get the message. - - - - - - Gets the full text of the context down to the root level. - - - The full text of the context down to the root level. - - - - Gets the full text of the context down to the root level. - - - - - - Struct returned from the method. - - - - This struct implements the and is designed to be used - with the pattern to remove the stack frame at the end of the scope. - - - - - - The ThreadContextStack internal stack - - - - - The depth to trim the stack to when this instance is disposed - - - - - Constructor - - The internal stack used by the ThreadContextStack. - The depth to return the stack to when this object is disposed. - - - Initializes a new instance of the class with - the specified stack and return depth. - - - - - - Returns the stack to the correct depth. - - - - Returns the stack to the correct depth. - - - - - - Implementation of Stacks collection for the - - - - Implementation of Stacks collection for the - - - Nicko Cadell - - - - Internal constructor - - - - Initializes a new instance of the class. - - - - - - Gets the named thread context stack - - - The named stack - - - - Gets the named thread context stack - - - - - - Utility class for transforming strings. - - - - Utility class for transforming strings. - - - Nicko Cadell - Gert Driesen - - - - Initializes a new instance of the class. - - - - Uses a private access modifier to prevent instantiation of this class. - - - - - - Write a string to an - - the writer to write to - the string to write - The string to replace non XML compliant chars with - - - The test is escaped either using XML escape entities - or using CDATA sections. - - - - - - Replace invalid XML characters in text string - - the XML text input string - the string to use in place of invalid characters - A string that does not contain invalid XML characters. - - - Certain Unicode code points are not allowed in the XML InfoSet, for - details see: http://www.w3.org/TR/REC-xml/#charsets. - - - This method replaces any illegal characters in the input string - with the mask string specified. - - - - - - Count the number of times that the substring occurs in the text - - the text to search - the substring to find - the number of times the substring occurs in the text - - - The substring is assumed to be non repeating within itself. - - - - - - Impersonate a Windows Account - - - - This impersonates a Windows account. - - - How the impersonation is done depends on the value of . - This allows the context to either impersonate a set of user credentials specified - using username, domain name and password or to revert to the process credentials. - - - - - - Default constructor - - - - Default constructor - - - - - - Initialize the SecurityContext based on the options set. - - - - This is part of the delayed object - activation scheme. The method must - be called on this object after the configuration properties have - been set. Until is called this - object is in an undefined state and must not be used. - - - If any of the configuration properties are modified then - must be called again. - - - The security context will try to Logon the specified user account and - capture a primary token for impersonation. - - - The required , - or properties were not specified. - - - - Impersonate the Windows account specified by the and properties. - - caller provided state - - An instance that will revoke the impersonation of this SecurityContext - - - - Depending on the property either - impersonate a user using credentials supplied or revert - to the process credentials. - - - - - - Create a given the userName, domainName and password. - - the user name - the domain name - the password - the for the account specified - - - Uses the Windows API call LogonUser to get a principal token for the account. This - token is used to initialize the WindowsIdentity. - - - - - - Gets or sets the impersonation mode for this security context - - - The impersonation mode for this security context - - - - Impersonate either a user with user credentials or - revert this thread to the credentials of the process. - The value is one of the - enum. - - - The default value is - - - When the mode is set to - the user's credentials are established using the - , and - values. - - - When the mode is set to - no other properties need to be set. If the calling thread is - impersonating then it will be reverted back to the process credentials. - - - - - - Gets or sets the Windows username for this security context - - - The Windows username for this security context - - - - This property must be set if - is set to (the default setting). - - - - - - Gets or sets the Windows domain name for this security context - - - The Windows domain name for this security context - - - - The default value for is the local machine name - taken from the property. - - - This property must be set if - is set to (the default setting). - - - - - - Sets the password for the Windows account specified by the and properties. - - - The password for the Windows account specified by the and properties. - - - - This property must be set if - is set to (the default setting). - - - - - - The impersonation modes for the - - - - See the property for - details. - - - - - - Impersonate a user using the credentials supplied - - - - - Revert this the thread to the credentials of the process - - - - - Adds to - - - - Helper class to expose the - through the interface. - - - - - - Constructor - - the impersonation context being wrapped - - - Constructor - - - - - - Revert the impersonation - - - - Revert the impersonation - - - - - - The log4net Global Context. - - - - The GlobalContext provides a location for global debugging - information to be stored. - - - The global context has a properties map and these properties can - be included in the output of log messages. The - supports selecting and outputing these properties. - - - By default the log4net:HostName property is set to the name of - the current machine. - - - - - GlobalContext.Properties["hostname"] = Environment.MachineName; - - - - Nicko Cadell - - - - Private Constructor. - - - Uses a private access modifier to prevent instantiation of this class. - - - - - The global context properties instance - - - - - The global properties map. - - - The global properties map. - - - - The global properties map. - - - - - - The log4net Logical Thread Context. - - - - The LogicalThreadContext provides a location for specific debugging - information to be stored. - The LogicalThreadContext properties override any or - properties with the same name. - - - The Logical Thread Context has a properties map and a stack. - The properties and stack can - be included in the output of log messages. The - supports selecting and outputting these properties. - - - The Logical Thread Context provides a diagnostic context for the current call context. - This is an instrument for distinguishing interleaved log - output from different sources. Log output is typically interleaved - when a server handles multiple clients near-simultaneously. - - - The Logical Thread Context is managed on a per basis. - - - Example of using the thread context properties to store a username. - - LogicalThreadContext.Properties["user"] = userName; - log.Info("This log message has a LogicalThreadContext Property called 'user'"); - - - Example of how to push a message into the context stack - - using(LogicalThreadContext.Stacks["LDC"].Push("my context message")) - { - log.Info("This log message has a LogicalThreadContext Stack message that includes 'my context message'"); - - } // at the end of the using block the message is automatically popped - - - - Nicko Cadell - - - - Private Constructor. - - - - Uses a private access modifier to prevent instantiation of this class. - - - - - - The thread context properties instance - - - - - The thread context stacks instance - - - - - The thread properties map - - - The thread properties map - - - - The LogicalThreadContext properties override any - or properties with the same name. - - - - - - The thread stacks - - - stack map - - - - The logical thread stacks. - - - - - - This class is used by client applications to request logger instances. - - - - This class has static methods that are used by a client to request - a logger instance. The method is - used to retrieve a logger. - - - See the interface for more details. - - - Simple example of logging messages - - ILog log = LogManager.GetLogger("application-log"); - - log.Info("Application Start"); - log.Debug("This is a debug message"); - - if (log.IsDebugEnabled) - { - log.Debug("This is another debug message"); - } - - - - - Nicko Cadell - Gert Driesen - - - - Initializes a new instance of the class. - - - Uses a private access modifier to prevent instantiation of this class. - - - - Returns the named logger if it exists. - - Returns the named logger if it exists. - - - - If the named logger exists (in the default repository) then it - returns a reference to the logger, otherwise it returns null. - - - The fully qualified logger name to look for. - The logger found, or null if no logger could be found. - - - - Returns the named logger if it exists. - - - - If the named logger exists (in the specified repository) then it - returns a reference to the logger, otherwise it returns - null. - - - The repository to lookup in. - The fully qualified logger name to look for. - - The logger found, or null if the logger doesn't exist in the specified - repository. - - - - - Returns the named logger if it exists. - - - - If the named logger exists (in the repository for the specified assembly) then it - returns a reference to the logger, otherwise it returns - null. - - - The assembly to use to lookup the repository. - The fully qualified logger name to look for. - - The logger, or null if the logger doesn't exist in the specified - assembly's repository. - - - - Get the currently defined loggers. - - Returns all the currently defined loggers in the default repository. - - - The root logger is not included in the returned array. - - All the defined loggers. - - - - Returns all the currently defined loggers in the specified repository. - - The repository to lookup in. - - The root logger is not included in the returned array. - - All the defined loggers. - - - - Returns all the currently defined loggers in the specified assembly's repository. - - The assembly to use to lookup the repository. - - The root logger is not included in the returned array. - - All the defined loggers. - - - Get or create a logger. - - Retrieves or creates a named logger. - - - - Retrieves a logger named as the - parameter. If the named logger already exists, then the - existing instance will be returned. Otherwise, a new instance is - created. - - By default, loggers do not have a set level but inherit - it from the hierarchy. This is one of the central features of - log4net. - - - The name of the logger to retrieve. - The logger with the name specified. - - - - Retrieves or creates a named logger. - - - - Retrieve a logger named as the - parameter. If the named logger already exists, then the - existing instance will be returned. Otherwise, a new instance is - created. - - - By default, loggers do not have a set level but inherit - it from the hierarchy. This is one of the central features of - log4net. - - - The repository to lookup in. - The name of the logger to retrieve. - The logger with the name specified. - - - - Retrieves or creates a named logger. - - - - Retrieve a logger named as the - parameter. If the named logger already exists, then the - existing instance will be returned. Otherwise, a new instance is - created. - - - By default, loggers do not have a set level but inherit - it from the hierarchy. This is one of the central features of - log4net. - - - The assembly to use to lookup the repository. - The name of the logger to retrieve. - The logger with the name specified. - - - - Shorthand for . - - - Get the logger for the fully qualified name of the type specified. - - The full name of will be used as the name of the logger to retrieve. - The logger with the name specified. - - - - Shorthand for . - - - Gets the logger for the fully qualified name of the type specified. - - The repository to lookup in. - The full name of will be used as the name of the logger to retrieve. - The logger with the name specified. - - - - Shorthand for . - - - Gets the logger for the fully qualified name of the type specified. - - The assembly to use to lookup the repository. - The full name of will be used as the name of the logger to retrieve. - The logger with the name specified. - - - - Shuts down the log4net system. - - - - Calling this method will safely close and remove all - appenders in all the loggers including root contained in all the - default repositories. - - - Some appenders need to be closed before the application exists. - Otherwise, pending logging events might be lost. - - The shutdown method is careful to close nested - appenders before closing regular appenders. This is allows - configurations where a regular appender is attached to a logger - and again to a nested appender. - - - - - Shutdown a logger repository. - - Shuts down the default repository. - - - - Calling this method will safely close and remove all - appenders in all the loggers including root contained in the - default repository. - - Some appenders need to be closed before the application exists. - Otherwise, pending logging events might be lost. - - The shutdown method is careful to close nested - appenders before closing regular appenders. This is allows - configurations where a regular appender is attached to a logger - and again to a nested appender. - - - - - - Shuts down the repository for the repository specified. - - - - Calling this method will safely close and remove all - appenders in all the loggers including root contained in the - specified. - - - Some appenders need to be closed before the application exists. - Otherwise, pending logging events might be lost. - - The shutdown method is careful to close nested - appenders before closing regular appenders. This is allows - configurations where a regular appender is attached to a logger - and again to a nested appender. - - - The repository to shutdown. - - - - Shuts down the repository specified. - - - - Calling this method will safely close and remove all - appenders in all the loggers including root contained in the - repository. The repository is looked up using - the specified. - - - Some appenders need to be closed before the application exists. - Otherwise, pending logging events might be lost. - - - The shutdown method is careful to close nested - appenders before closing regular appenders. This is allows - configurations where a regular appender is attached to a logger - and again to a nested appender. - - - The assembly to use to lookup the repository. - - - Reset the configuration of a repository - - Resets all values contained in this repository instance to their defaults. - - - - Resets all values contained in the repository instance to their - defaults. This removes all appenders from all loggers, sets - the level of all non-root loggers to null, - sets their additivity flag to true and sets the level - of the root logger to . Moreover, - message disabling is set to its default "off" value. - - - - - - Resets all values contained in this repository instance to their defaults. - - - - Reset all values contained in the repository instance to their - defaults. This removes all appenders from all loggers, sets - the level of all non-root loggers to null, - sets their additivity flag to true and sets the level - of the root logger to . Moreover, - message disabling is set to its default "off" value. - - - The repository to reset. - - - - Resets all values contained in this repository instance to their defaults. - - - - Reset all values contained in the repository instance to their - defaults. This removes all appenders from all loggers, sets - the level of all non-root loggers to null, - sets their additivity flag to true and sets the level - of the root logger to . Moreover, - message disabling is set to its default "off" value. - - - The assembly to use to lookup the repository to reset. - - - Get the logger repository. - - Returns the default instance. - - - - Gets the for the repository specified - by the callers assembly (). - - - The instance for the default repository. - - - - Returns the default instance. - - The default instance. - - - Gets the for the repository specified - by the argument. - - - The repository to lookup in. - - - - Returns the default instance. - - The default instance. - - - Gets the for the repository specified - by the argument. - - - The assembly to use to lookup the repository. - - - Get a logger repository. - - Returns the default instance. - - - - Gets the for the repository specified - by the callers assembly (). - - - The instance for the default repository. - - - - Returns the default instance. - - The default instance. - - - Gets the for the repository specified - by the argument. - - - The repository to lookup in. - - - - Returns the default instance. - - The default instance. - - - Gets the for the repository specified - by the argument. - - - The assembly to use to lookup the repository. - - - Create a domain - - Creates a repository with the specified repository type. - - - - CreateDomain is obsolete. Use CreateRepository instead of CreateDomain. - - - The created will be associated with the repository - specified such that a call to will return - the same repository instance. - - - A that implements - and has a no arg constructor. An instance of this type will be created to act - as the for the repository specified. - The created for the repository. - - - Create a logger repository. - - Creates a repository with the specified repository type. - - A that implements - and has a no arg constructor. An instance of this type will be created to act - as the for the repository specified. - The created for the repository. - - - The created will be associated with the repository - specified such that a call to will return - the same repository instance. - - - - - - Creates a repository with the specified name. - - - - CreateDomain is obsolete. Use CreateRepository instead of CreateDomain. - - - Creates the default type of which is a - object. - - - The name must be unique. Repositories cannot be redefined. - An will be thrown if the repository already exists. - - - The name of the repository, this must be unique amongst repositories. - The created for the repository. - The specified repository already exists. - - - - Creates a repository with the specified name. - - - - Creates the default type of which is a - object. - - - The name must be unique. Repositories cannot be redefined. - An will be thrown if the repository already exists. - - - The name of the repository, this must be unique amongst repositories. - The created for the repository. - The specified repository already exists. - - - - Creates a repository with the specified name and repository type. - - - - CreateDomain is obsolete. Use CreateRepository instead of CreateDomain. - - - The name must be unique. Repositories cannot be redefined. - An will be thrown if the repository already exists. - - - The name of the repository, this must be unique to the repository. - A that implements - and has a no arg constructor. An instance of this type will be created to act - as the for the repository specified. - The created for the repository. - The specified repository already exists. - - - - Creates a repository with the specified name and repository type. - - - - The name must be unique. Repositories cannot be redefined. - An will be thrown if the repository already exists. - - - The name of the repository, this must be unique to the repository. - A that implements - and has a no arg constructor. An instance of this type will be created to act - as the for the repository specified. - The created for the repository. - The specified repository already exists. - - - - Creates a repository for the specified assembly and repository type. - - - - CreateDomain is obsolete. Use CreateRepository instead of CreateDomain. - - - The created will be associated with the repository - specified such that a call to with the - same assembly specified will return the same repository instance. - - - The assembly to use to get the name of the repository. - A that implements - and has a no arg constructor. An instance of this type will be created to act - as the for the repository specified. - The created for the repository. - - - - Creates a repository for the specified assembly and repository type. - - - - The created will be associated with the repository - specified such that a call to with the - same assembly specified will return the same repository instance. - - - The assembly to use to get the name of the repository. - A that implements - and has a no arg constructor. An instance of this type will be created to act - as the for the repository specified. - The created for the repository. - - - - Gets the list of currently defined repositories. - - - - Get an array of all the objects that have been created. - - - An array of all the known objects. - - - - Looks up the wrapper object for the logger specified. - - The logger to get the wrapper for. - The wrapper for the logger specified. - - - - Looks up the wrapper objects for the loggers specified. - - The loggers to get the wrappers for. - The wrapper objects for the loggers specified. - - - - Create the objects used by - this manager. - - The logger to wrap. - The wrapper for the logger specified. - - - - The wrapper map to use to hold the objects. - - - - - Implementation of Mapped Diagnostic Contexts. - - - - - The MDC is deprecated and has been replaced by the . - The current MDC implementation forwards to the ThreadContext.Properties. - - - - The MDC class is similar to the class except that it is - based on a map instead of a stack. It provides mapped - diagnostic contexts. A Mapped Diagnostic Context, or - MDC in short, is an instrument for distinguishing interleaved log - output from different sources. Log output is typically interleaved - when a server handles multiple clients near-simultaneously. - - - The MDC is managed on a per thread basis. - - - - Nicko Cadell - Gert Driesen - - - - Initializes a new instance of the class. - - - Uses a private access modifier to prevent instantiation of this class. - - - - - Gets the context value identified by the parameter. - - The key to lookup in the MDC. - The string value held for the key, or a null reference if no corresponding value is found. - - - - The MDC is deprecated and has been replaced by the . - The current MDC implementation forwards to the ThreadContext.Properties. - - - - If the parameter does not look up to a - previously defined context then null will be returned. - - - - - - Add an entry to the MDC - - The key to store the value under. - The value to store. - - - - The MDC is deprecated and has been replaced by the . - The current MDC implementation forwards to the ThreadContext.Properties. - - - - Puts a context value (the parameter) as identified - with the parameter into the current thread's - context map. - - - If a value is already defined for the - specified then the value will be replaced. If the - is specified as null then the key value mapping will be removed. - - - - - - Removes the key value mapping for the key specified. - - The key to remove. - - - - The MDC is deprecated and has been replaced by the . - The current MDC implementation forwards to the ThreadContext.Properties. - - - - Remove the specified entry from this thread's MDC - - - - - - Clear all entries in the MDC - - - - - The MDC is deprecated and has been replaced by the . - The current MDC implementation forwards to the ThreadContext.Properties. - - - - Remove all the entries from this thread's MDC - - - - - - Implementation of Nested Diagnostic Contexts. - - - - - The NDC is deprecated and has been replaced by the . - The current NDC implementation forwards to the ThreadContext.Stacks["NDC"]. - - - - A Nested Diagnostic Context, or NDC in short, is an instrument - to distinguish interleaved log output from different sources. Log - output is typically interleaved when a server handles multiple - clients near-simultaneously. - - - Interleaved log output can still be meaningful if each log entry - from different contexts had a distinctive stamp. This is where NDCs - come into play. - - - Note that NDCs are managed on a per thread basis. The NDC class - is made up of static methods that operate on the context of the - calling thread. - - - How to push a message into the context - - using(NDC.Push("my context message")) - { - ... all log calls will have 'my context message' included ... - - } // at the end of the using block the message is automatically removed - - - - Nicko Cadell - Gert Driesen - - - - Initializes a new instance of the class. - - - Uses a private access modifier to prevent instantiation of this class. - - - - - Clears all the contextual information held on the current thread. - - - - - The NDC is deprecated and has been replaced by the . - The current NDC implementation forwards to the ThreadContext.Stacks["NDC"]. - - - - Clears the stack of NDC data held on the current thread. - - - - - - Creates a clone of the stack of context information. - - A clone of the context info for this thread. - - - - The NDC is deprecated and has been replaced by the . - The current NDC implementation forwards to the ThreadContext.Stacks["NDC"]. - - - - The results of this method can be passed to the - method to allow child threads to inherit the context of their - parent thread. - - - - - - Inherits the contextual information from another thread. - - The context stack to inherit. - - - - The NDC is deprecated and has been replaced by the . - The current NDC implementation forwards to the ThreadContext.Stacks["NDC"]. - - - - This thread will use the context information from the stack - supplied. This can be used to initialize child threads with - the same contextual information as their parent threads. These - contexts will NOT be shared. Any further contexts that - are pushed onto the stack will not be visible to the other. - Call to obtain a stack to pass to - this method. - - - - - - Removes the top context from the stack. - - - The message in the context that was removed from the top - of the stack. - - - - - The NDC is deprecated and has been replaced by the . - The current NDC implementation forwards to the ThreadContext.Stacks["NDC"]. - - - - Remove the top context from the stack, and return - it to the caller. If the stack is empty then an - empty string (not null) is returned. - - - - - - Pushes a new context message. - - The new context message. - - An that can be used to clean up - the context stack. - - - - - The NDC is deprecated and has been replaced by the . - The current NDC implementation forwards to the ThreadContext.Stacks["NDC"]. - - - - Pushes a new context onto the context stack. An - is returned that can be used to clean up the context stack. This - can be easily combined with the using keyword to scope the - context. - - - Simple example of using the Push method with the using keyword. - - using(log4net.NDC.Push("NDC_Message")) - { - log.Warn("This should have an NDC message"); - } - - - - - - Removes the context information for this thread. It is - not required to call this method. - - - - - The NDC is deprecated and has been replaced by the . - The current NDC implementation forwards to the ThreadContext.Stacks["NDC"]. - - - - This method is not implemented. - - - - - - Forces the stack depth to be at most . - - The maximum depth of the stack - - - - The NDC is deprecated and has been replaced by the . - The current NDC implementation forwards to the ThreadContext.Stacks["NDC"]. - - - - Forces the stack depth to be at most . - This may truncate the head of the stack. This only affects the - stack in the current thread. Also it does not prevent it from - growing, it only sets the maximum depth at the time of the - call. This can be used to return to a known context depth. - - - - - - Gets the current context depth. - - The current context depth. - - - - The NDC is deprecated and has been replaced by the . - The current NDC implementation forwards to the ThreadContext.Stacks["NDC"]. - - - - The number of context values pushed onto the context stack. - - - Used to record the current depth of the context. This can then - be restored using the method. - - - - - - - The log4net Thread Context. - - - - The ThreadContext provides a location for thread specific debugging - information to be stored. - The ThreadContext properties override any - properties with the same name. - - - The thread context has a properties map and a stack. - The properties and stack can - be included in the output of log messages. The - supports selecting and outputting these properties. - - - The Thread Context provides a diagnostic context for the current thread. - This is an instrument for distinguishing interleaved log - output from different sources. Log output is typically interleaved - when a server handles multiple clients near-simultaneously. - - - The Thread Context is managed on a per thread basis. - - - Example of using the thread context properties to store a username. - - ThreadContext.Properties["user"] = userName; - log.Info("This log message has a ThreadContext Property called 'user'"); - - - Example of how to push a message into the context stack - - using(ThreadContext.Stacks["NDC"].Push("my context message")) - { - log.Info("This log message has a ThreadContext Stack message that includes 'my context message'"); - - } // at the end of the using block the message is automatically popped - - - - Nicko Cadell - - - - Private Constructor. - - - - Uses a private access modifier to prevent instantiation of this class. - - - - - - The thread context properties instance - - - - - The thread context stacks instance - - - - - The thread properties map - - - The thread properties map - - - - The ThreadContext properties override any - properties with the same name. - - - - - - The thread stacks - - - stack map - - - - The thread local stacks. - - - - - diff --git a/packages/log4net.1.2.10/lib/2.0/log4net.dll b/packages/log4net.1.2.10/lib/2.0/log4net.dll deleted file mode 100644 index ffc57e11254ad9530867b35d15aaf38eb4747d8d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 270336 zcmeFa37A|*b@yG<-P1kOGmnOR_Bk7BV)n@xI|5$>0?)c){27$SiKR zFq^@6!7L%*ge78i2us)@kT~pXVhB5CfCQ32LSEj4tR&|9{m-epbkB@z^YOmV_dFkC ztM9FRXybL!No^`3sg-Ju#nsPXStzY5{QJoUHTe)s-!3(1SueROen|L~Xh`|!YN zU*7NBr(HcWbwfM7s(tCxr=EK0_1CAnrY^f;s(s`2Q&(R2)7i$1>ZjS>2F=P_SLWc{MUYX-~N?}7k~K2r=R!BQ~vowcTJ5y>ZER|{)j$Yiq0$kGW_{Cvp-sdMl@3g*wJ+o~*+kalavMlfjVRopJ zY!?0p!t?-R_zH1bw)pUW*`WhACMQmK2Zgs4>eCxSrP@`9vNITF00bkF3}*GAm2f1u zD4h89&Eyaj5~|}54oo~aFw)qxPte@J4arp^C$xrz(<%f>_2kef)j6wIw@rQtb{FdX?M;-`jSvdSBZU+SE)BeL`j6$+b8D;+pk^9Ns{^bO@x9T)Z2aanDww&|dZgoSJQy{`&! zR#D4U58wN^73a0B-gWiNVW>wlRF@4-EUUMYvB9zWJtLvgFg8$q%hn9_Mv54lkUdtP z+_9`aRv#O@>*@zj?o*JQjL%_{O# zcsaB%FNb@0dCY05MhNHg?+*U`HUB30=X~|}w-Wwu{uzULsy*5}1T^`F4%y!_+SjF? z2EVK6@zqdIS3)0h9}E*Ct&=P1B7)7)R7AL&AJ ztO^ zst1#g5JK^-Ia^~_p7rEmUU3Z5GcqySTG|-82Ys){W-&CmV|1t?ome!y=|@>Tk0%ej zQ#rC6o6wLcxZ>@K_K*GZmh_iYz2CliW1VQWYEB8bmSLZt#B;IZgoU--3@$~>j(~YH ze=m!!Budp|N~Uv4^-X_j7Tcq%$vQ}hFzHruT79jI+lw+pcU}fUI;Mh<9_vC3S(#DkT*uB##ws|q#jK-|Ev%riCrgVYyC zQe;xK?4~Q;Z|&p!7VZK@p%M%TBxgWNFbd6uL5E5(3K>i#KwH$ybQAPWod$;=9LVHS z2}zb-g{?FUIA<^^9WS+OEhelw$MAGkM~V<_;zU8eLetZj?36yTZZ=x||9&upB;ZT7 z7lo^BTvqAmnI4Q5<&u@1+x8>q0>5||jpnxd6eThZ;N1#UI;twlWKnl|lwn*C#%4X5 zuPMeToB4uwUcC)!B>YJ) z$73Ak+u~-2azl*B!ZFzK%&sniZOE3vT~DGkOBCx_ zH;SFAS{TPlTdNf5YL8{o=f$^H-4-b@IH$T^P#s!_?j7SidSmT-Fu;N^E*aEPQ~Bt` z(m$f*^~jdiDYOK*$p0ivW<)F+hIPXk%!UBa}dlq92jTu^fxNW ze#Y!doAt#Tx_Fy4oISidJy73TW#(wIb(iaPqPs7TklT&u+u{wB?1n;CAGeJWMu-dB zqR?CzJjfD^LM0dokZy{k0*^u^7;j4*QD49)RD!{Q6&@ZX7==nO5sxZc;8CaqgFhua zJW4PM8B8_oM3#;xIn3I2rK1{cT;k8H|3eMCh`i<$d6TE{E~B^pFfF5!{t3Tb(MQbb zhA4TW9u&iPtP-BXbA{28Y_a4HAz4v0w54{TV2Wqb#OEGshW0-q=X&xqvtqLVjCTbQ zt5V9Rx}=XU@?BT!&nF1?-H}5G6Jg1QFt)*}eMVSvk-w|Y7=RI|h4>{dZd~nr6ECck z?UXVpTQT9|iQ_{1Unng?O_reUxD52>jkE^auNuSv9z))2s9EMutdM%8av5%tXgD(f zNHx3}?Q}a}kjH|tS;3b*Rs5`{PjDV=q2qx)WW|it)8jmLkov;K%slUbq(nilUa1%l=x-bqg&*Sg0~fQqOn zYm2&9Q8F3Uq3sh>@z{;hQ1f1Mm-U(`gBO*aK;q(+xg`ovY-}Ip{yELa7C&60A1BGlV;i9nl zj(}=F9V4e}P8-18ao_q(o-|@)kwqcLP?Y{&!szC>pOBGdXWx+?%g0pa~G;M&{am4Or;}p zp3<=BCe_xkNFT%^Ey^TEPE=ub$*?z##&FKi+0E#_v!x9$98)2%*h(-zDot%@It<`P zX;a3MsmzX?6qfAp_eywMSn{E4_s2l^!WYA4wHfj5NOB=Cxt zK4v5+u^=JNO+2_tBTvo$fG&(J4I47NOhN<8|;FQ{e$Uo7K38cQp~Ihras}yz0*qT`eXkr}acrqP|HY>CI;(e}j z)XMCLqGXEPKGa$#j@1hLK${tgC@(}MAZkNS)CmnuRGdZh9HL-!0F5jOWW8&4^;pgA z$l%zZvu|i@u+X3V5yM^yhwd`ro1T;fQyQvRbzDx>??crBta|7&+-~0>S#JzW9+&Cn zePPM{VGtGI|Fz*6cZGALH;j%3#ts-T9jb)N!1+4{kdXeKGqB{gfe8OE;f2o{*x&Ph zZ(zyKviN%kmV9L3IN`Ym|7$-4kk86aboW-P+vUC( zLFw{T26L>&vI>D!WdWMQ5-nJjS@=K-mGDIv5mdk^RD!{!79LSsz$jFLp=`md?}1Us zU@GBm=%Q%mgQQr^CJw%8mYyv!S2`jcZ)YEjlhrLf$Hec%(_v<5qCP!0risi_nu6(h zF-_!^(iBY3x3p@Ck~QmTjo%IU!If|fw2@h~DJfF6gV$Y`BgSSWc`|JQ6UwBcKqjqJ8yY$RVOoBO%CDy9%1xx6)o{c> z2rz=Os|hx-PE8%eCIrs|?nZ{66{{lk+b1;AX8=|=2aPFGb9jAlIy$uNRw%?mtQw-f z#Dp|AEvdJsvH+yv3W8(>`7Pgyo$U=uy-2kQt&{5QLo;CId{h>gn{%=^=VA&Krbtz2 zZD-CPy%@CXnwytouZxU5PQ#L58M1mXhti9|MM1&PyCfu+fU2He$}ckn!}O|`*=yhY zl+W0mPnSxsqjA4jnVxUVp3Yi)G0v*E%pV6((S{W2TWg@nNH>n^fl~9orBR>|QC-Z#|O?dx>xNU!wpk?B?bl2ke> zE+%*>lNbAh5iM2xJvPS^saVmQeo}w>s^0W7`qTIAO+U9kech5?fD7gTO!Wd>G6!IL zFTj-rKz-fQz3%v~w9ICAyEvK2BerM7nQYIfnCoajl?3Kl`>V+QX?_p6xDA0-Bkk)b zB~FRY+zY5-cr}LP383R~oF3V--nu1sqDYnQu|$UHS1bTkEdzaKA)xdoN-H2)7r2Xv z4Vq`2zi<{)dca@i;0qUkVl{hm&qKaQEaGy(|Ias^G@yu`uD!q;zR%j{x zU@yzkpWc&RVdQM%4``_-uM~w|TJ;`7a%&O2z9WfF?r^~xN!8jOv(Fg%fcKfz$1$+r z5Dh)?PWj}H z0J6#uEe2I5cX)brrz=^e3^mC}8KX>kWnnsS1T-CDe6OZ263>|rkB$t={Ha2jd&O8! zsSM2m{?tPo9EUoNsEe`GohF|$@tB~Tcu{TS_Yps7Z5Tp4*;6OIW_>mAwuC)&zWN%D zwXeBx727Xxn9(`&W>r-SK5F~;Jt4Mz(R0_;u_3C>qbpvwzFNqM6la$VFxza^P{W~m zPtX#D)~I+tD7b0N6`3k2Q>;tf?N5t&mvXbPhOM%@lg?VpN|pK+Z*x5fQrO@0G6=7})?n2Ltx0hnBmp?j?lT$5;+285KPe#GLn*4&dI4 z)?C&LDVIsg%tlpH8TnGtxKJe?SYj+4Pqqo{qSnN)4MUMweOCn|mOc;RZwSLSswDpp zW>*dSppv;NdP<^(7;}!2nOz57D{I8Q-(y=i@FH`o13s^(rgvIn5TCX|@8Jc#uF4MO zY5{g8;9Wja@j@SP_GNOc*KzYeXCa(V%y?hhgeED&pMG!F06l&(E9 z9B!!Ifyf5h&njN={BB56YLyH$Lj5MUZSXdetLy&8(M+9JT+l) zT^S3-iARUIo~Vwdfc-oy^Z1U8M?DmH-R9$gbaB3ThL@0t8d!f{3$WH@l{^EUVlip& z&j=Ps@dcVGZ9ond(L1ri8tv~set>T8Bfi{D{C*|yYI-6NagHF}MPA&}bqfOE83N$6 z%;6oR?w65jYhAL(k2ap=`}``|s@G{S5$ds-TB%nk{hvXr=lpx-HXQ0p@#53I84o<8 zGeHX|LQ_ru13Zj8e7%iXoA4OX5Eo~uKkfA{DJ9Vi6iVCfB2CUcrp#yl4NP6d=D7dM zXe@1pqnNm_Z@;kliB6-|`4}??{5$N*yamt`4Ts$_Rn1wMYh%DKLEbFku7lkBy=FN0 z@B;UCa5FNUi+kg6tfkL|46;f#%W|Bv<-g}(&v3UMUErQiW`@9p#Ui@XYQkbl+PJg8 zKF3UE;>R&_X|8I5Uim@o3yCbXM`9l|VwaS+9kLev)%$$SFT%h_!7NN^4g3Of0IVi2&fAfs$9P}TLh!101dwC`q62d??gp^)5U zZ^?J5UPABP9I4bBQ!?Z;OmQ?_myC|dl-^eZ91)e!)6$L02U&p}j-=cbckaR{FhEvx{RLcfN&bgw`r`RAb^jtU zxfS+kl14e%#cYw4j_6EYOwtHzm`iOKOL}P-Ti-aw1`RPHVdh5OnXN}}IzOzv^T~)* zmTsc`3AnsxY>@t1W%0J6JuzxgD;tDXwGZ_WyK#hys5Q1^%S&<_Xnj{rXr0Q2?oB6z z)g{y?c+N8Fw@1`DvQ_gT8z1ds#6nfs-ph@bLQfteY9p6WUu;W1-$q00FcG~mPkI73eyTiT1-6*lW$*!$!H|YZIn1v z9Q29XPoX`tW7;QVh^I8|Wz!jkXN=|l35(Nm0o#el;0Fq-$Z^?Vk8TV_;f>Mj){~d1 z{$Y09cO0okr5#6M_UvV-fl(KQG(0vu(Y_f%_lymrrmo<_E7~9RsFhix7|zsm*mR!W zJwLCK$!j(&{}*k`)Zg8qGcs`Y2DPzy$9fgp_jioj5VtS3G`bGnG~@O$Er!;p??`J) zb@y?lp%i_*&0(*u`Up#>4iJGwuNZ07R{896(eEvD&1rQT_&%jx z^8{vPX6}ZY$*|fEUFWTRFqtK;)KWGr1Csj!u|E;Q!qzHOvb9Vci6%TehmpQQXE@H{ zi*Z}ZW@vW#`zT;Fis0g#8Q0>sa#zxoPT>6Gx6NC#@mnpt5&Xo2Dzg&6;VA;5CWO>GO_b;l>a~TEG2aTI{fU{55aSRE!IE(jw zG3P3+bcYtqt0q*cBn|_LoJl7PjAmat^_J0c+!+Ne_yEpRpL1c_DqUehPABwWA7w3^ z3=BSRrkk#JINp)fuW%u`B2&!Pt zrcs@7Q(?hqenDj~wz6#p;Kt>Sc;lj2xYUUroVu?E1CaIfXts-(!6-2#+gD&^|C)G@ z+ACfg8@O!Iw~SXsTNgXnGd|g62&5q^;}J~DD`8ES0f}N5eK4%0gQ|Bi{jxja2R5V% zAI{}Pf4>HTl2PIW3LG9x4zOpsMEVn^AA?<+O!keX6*e;ZhoZEohe9Qr744cTRlq1z zf;rLop=uT|3YB0c9ER~&2}Yq343om*tC&;ZQ3x3Mm*0Uu=nF8}cu)x3fMFZ@{7a=p zY&nP~nsNce#7er;xRq?+;a(`?Zzx<;mg9Rn|(hg?IyAAAga_fJ7eaSF>N+$ z3;c=llCGtvQ@oqaea-*a$H#i-&&=%VJCP;*=tTRRCHQKM$?BfQiuP6ZzOr@) z5**mmSk=DPBD9XytglL6hhKz9Or+5U4}?XF!|@vcH-7`9r>e~4>b#>q1&^RoQh&Ca zYi*I~l-VVkOTx|;yTRo`tO)JfD7M=EHotzN{TlC&N+;jki}6~>>z!yHFeaa~Mn%SI zE7~`DD67g?Eps<(R+)Hkq3VXT=4LfXU{c;-70|MqOig;O*vI*NMb2#H$L+0Yy4PV_ zSu2o*w*t>T^J?mwK1Mj^6J_Rb^&VmyNRS-+TSpRas})XjtXVr??WYnh3E$ePO9*wQ z7#Gf{EES`MTz2e|H7Y#!C*3wDgA6sy7Rt|2U#a$uDPXcnT?#7{T5h{VkBRQ{^hkb} zn)qP{*Zi^2z8zM#Kg-X|Ye>9_St@0WePvyHJ~&ZscJ(w7QRxVMwKll8wsJ~XB!1(lwjm)Cb0IAEIWdMsZRvTD=o!lx`+ zWTmeYF8IXxv^-x%aQb=`nC*9zJrHdspANz=7yc`zd-XZQ_aW~_!|51EriK3RgvmAI= z3F=JYcN?9}6Q5~xcAig7P2Q+jwX4wd(X?~D#8r0VZ9Tk<{AVc-3bO-rY2m#r!hFA* z(wg<;Jv{7WlD6CaF@X(C?N(Q`2G)#Js*M$sGw&s?`vR~t#iMg723$U=vXSGJUVw%& z?UhSq_IL6-l)jI=$@}?#JGOAc_GoAK`)=bsQ{hC_@~xRP8Te%mI9E>o{H7J`_3^&P^i zv0;A!Ui@$Lq;o6ruG8YgHYCX391brV1XP&z!skjyWn|2D@SNi+22WoQnz+#s5955# zA&P(}MXfLlvs@OfaQd^eIhx7voV&wenJgYh-4>RGXmnY?M+N2;iMNMk zVRG8#A*NgHBGYLfn7cY9xsQ4{Z}>euZL;%Xu)_kHpa$a#&AULIwY_x*XXD$R_34NO z?_3_PLe=!&S$nkg=|0;vAMBj9?DIwE!&u9X$lMU-YuSp;>3BqI*-vu*6nE4V1@y0F zDoHMZ?$=wHk3quJK7l^>NU*0P=0 zUu!M<5#WDBYuT@-iN6FoE4HZHeW_mk1k3Gu%^OB$!x|==&TS+XeSku=|58N&AWy6%T9D`dG~R7yNiEaXtBfdIlr8qhBV9RZ7w^ zQ|kWHA>h8CpeLKKehwhXP5doBe~f#XL~jVEN_AvhJ8r7N({5v2|O#+ z7?*qyQoM1=Jcyd)Lqu5zDx092BbrOYAa-ZLx#tf9^<<~jnPhX%8!_(L-18zj(cRE6 zvh^-ttGkbxXZrbB)!oPTM>G9=$vl(QE4ltBPFBb5KsH&;L^V^}C-fs(JvTreG^_vLyGdf>*2dR zFA^WwDB&yE>=qG3en>gFi^9CfO7c?PnbX=vDZ4+)&jrcv5W}4#(J^5sNy1TOOvC(+ zqNp|x=4ysU=xKf5VoB7G_OReL+5Q`>fkZ7l!s@siE&>_GLOv z{2Z@ZHzp@WmsXOGA(iCg{Ad>FHcMD(X!;UY*%pF54PU3W9ncy|h?uO-B^qfe1&w&L zk;aYVbIGKu{l7w~NGj$*PIP`t9)&GXsKoC}9fl@Sf>EdhbD6`?Z~6 zEM@9xl<1|05|j|7M8MtecqS6`uK1De7AZV+r1&N3=<`fGZQ8Dmh@N zt$}%av>j;apOLLuN!~<`IydrElDF`d-bd_)FnexxTHU7;u}kewiuj>PFWL?d?ipIq zUb|eeD@(lJGZb6IkWDK#Cg-0c-Ew$1cf(%%2Rwz$R83t|nE7N88)lEnri0suQ8kC?Y4O(F zZ4Qtn-Fs-M=Hj)x}w;hthuGM^N=Ve;-V(koMy3NG2}6{xh| zK*`CcMAh$GMDl69@9|24C$o)LcpJk=mD-p>rFM9w!>HV%Ju77Xt7s_vSMhH-?eZ$) zU-`C>j?o=ANW33Hk`M4RQeXGD^fS<=ljEPY=enakqS6r^>ZI8Jqe&$TbKl6Zx=>I1 z%y>VWogyj5q=|sr@1xQl;JzDQMD~u1Z90EIVMB%5E^_e?5BIC>h1$juw_Z?>0bPGN z(f){Zlueao)nzxO>+V>+M|sEUQG3VgroPOc&#%89_+YqD^3`nV+a#GvN6d@|rzN9` zeVgZL&VOgL`M{6r^MOAoPX2$?2d>)vmxov#Cbl#y>-^Nb9|*!ceAJ9GlRq;Rc(DHGJZHWLbT#>sA>TAj>V1~#i}_!toVYUiOI}NxGos()bVj^e z%=UFu->E}y_3_2atTtk-DQR`lFGrR#Q`3A%FG z=E-E;SFFtL*BuD-2Tj>X*~@3@g+HdY{uca|_R*m0{+(XOyMM38?yo{u_a}Ot3gM06 zn(ja9eWLp_fBcgk%e((ekCok@>oM8=-~RY#fBcIc$y%elGV>2StuWQKPoGq9p_dAk zVD@pHQ@I6a4e;3GtIng2CD)IyiTV7a=QX9=#@^lnbd7}*zU!fN zXcj+d@vW(h)ehHMl7(Y>;cL3?btH*`ZiUKgb!(__T&p_)3-B1DvGq^IVjeI>blK$?83fOIx++1gWK^`06A!?#Y)PRJ;R=c)XJae3Uu5yN0<3s z>HIx2XQpyyq@Lhcf|m`k6eVIuhis)}q+u&khCP&Zx0q=M?O zs4<*;8zOZw#g?n&rwQQrFtKcqJ43b4^&SJ22Q{3|0+%5f2}I@h*$#5YI3C^@hugVh zTsS@ff!W?zg-d&5+g#RtL&G_-36#!>I#>R2s~-$;eoTg!yusH`R&z#~r9tV5`gQ4u zj#Wj)uy(a=8|m6wU~-B&%|)#HTXd=Iu(snc->2YtH(L0hk-JOV--XOQ!;|t_d-ZJ( zyLN|HDRJfe3b`lS!|Pjky@GS`%%3^^0i>b9Ps{2vH=`-MHNy5v=%{qm8}>7l)3s)( z+RreMyb<)PAdJiAbdCv2&hj=Y9eW2UZR2_JE$MP4`K~|UDsxnR%Pnink)twN94aWc zn}*pbv3bsAd~qA`X)sr|2({vW%*(3K{t5Ip+J~&pOwi?KQCd@3$~SsbDvjiCMOUdF zj}0ToW%U>ge}NLrs2+@Qq{1w3*TdF7A(n_A5JAZvhX)TIbrvN3q4Z;UJzFm)19Npz z`y75fod`W*v%YhrYA=l)9+6?&Nd|IAPd9Qoo%9xErKHm-xYP?Rt1V?WO|OcXgfnW_ zg!YYV!VR_dpYiKv*?6+`-&JWmugM)L{Y{gJk+?^mJM$Q-*`0WjySd`Ty-jgk3LuVW zHKUVnozC{pavToakeR~JqGQXfDwLNJR_MY#%TytOULoedrrHiFKk>10tp;6#lYZFa z$sS^>d#;TnW*d+OOB;}&b9VKH(0(~N=4f`@Xys$UEyy@re!edb@O zAnHU|$wRfI4w1?+DTjDEXc#Q+|EJ*Y|pTgZv`5SNn!T zPWO8ow8w>Eulkj-u=`)(wIp0E`m5%|$kvwv5Gt11Fz2EVW^`?dixc}g7aP`#!Lk+Y zvps5M-57YKhgR#LM{#84Rn#dO*Nq&l7-sPN1ENqu*>iUGHx_ZLOk;A#NMp4hi6DC0 zm0X6pJT7I^KMn@gl;ZwR*JW(4l$G8BOpFq)m7&Ugs@!=ph5kOw?8ad+w2nNe z^i9z0mS^Db{{19;OA39)wj(vI|Jet31Vrr9kZBiFIN z3kNNBt=GLBFGenmk+MFK`q}1*mYba@q8O_SGkoBA^g68D8?;|>>&ZaQPYOdi5%1Lc zMRS>@wB-iOcAQ^P3-YG^3J{}ytXL|mDe0R%YNg|mrb=B)s|i~_Lo3Mc+?Nqawy46o zHVL2CJnHDhx$2t(#|?>B9?Q|$&ZXS_b@b>`bXl=5F0a@Lj8Mt zUs=<{sh!js@}&f`^koHQpAnd7$CuTb7Pw4G6QNjNI!-yXW0Y!*|tHE>$KAo5XD z^Aq`ei+3XZ^n~q=mk@?S#l)4bxkgqfoz z`(KFosYl@FDB=L|EQFswKKVyQY-JSou=0Tj&I+^TD+xw0=C#D&jHzx$ zb?efHBR4Yj@_!Cq<^mGt{BpcY!(@U++q{fz7dmC?y$!sV$r+r)<}Gsl%~lN99-^D2 zX9^}r}J7iO>r zMxnVd^&S|7A`IoYefPce+NPe*mv@~8)v2IUp%P4_bEpSKp}8=_JunKDVD|B{#J8d> zg-S5H9Y#zoU=#vIKHKk7m*)y*?w1i#9ZvL9>@stAYQ$jR{iMEBpX=WL4N}_c(^#$>Hd$n%`ScW4x!d1a{lLcdey>DsmCp< z#|&PmF0+xm^tBN^ZH6K@+PGMDH@T(!yH$vZYVj@o4~6gs|5HysYeyU(Lcx@iXN{(_ zB_+P!$nVU50h9jHvbVThS+FZISZ+;D{<}z@`5)d#8rAecfpb@clyc@*0-$Qdqys$o ztQyg2#bWrjodU#I21!h()J+Ja_+GR9v@+()6MgG7%=4Dytx!oPqW+Ebz$i2qW@!(M zLUUm-ilwp?D#1*+{*Cv*CWoaA!84NcIcR50@o|+fyE5M;&{mVonpD(UXc zxkXHN*V(w(!=K`BlM+kOkgoJ%zIllFE!(YO)!9B?n%`ddnQCtb#d)_=SljPTfVtQv zo!j+jYn5tt^w-{BcN^;R8`zDdg(wl@eUFbVVY|kbt9-qjT`b};(>~e=uTVNAbIba% z0%V+zHY+32gW(eL>o4vqUI`ib z)u1aT*UVt5o81+P?dW$mX1-aq{bDILRYqRXtJBdUP!940P~+Gt=i%PuXtHtp{ybo5il}5)j)gNf=e5>H1 zWU46!mrrKAPr8(1Wt+C|&NXloOpkNCGyB0^hF+?meN1w6Xx(_`^J5JgZBB6Cz>OTP zz()|UF_B9O>8x?-jOG&a$)M%ryc%GKi^61rVh~|4TQu8>bkfog9v7#WKFy~>w(TPf zBvguPVp#aK`kK+tw=Gh&7z8ED<-)VF|9gC57$51#7cdx z3!~4@zP+T;Hb@{Nz(Go@uRP#KI{d8G#XJ8R#cOX)+mI(&%YF0 zL5o6m6m{C*?HmM|z`>1jA%RKF zdq8O1Y&RR`UPIry59>WG=0%87(M%8Hcc_) z|6fkz*hpxb_CzY-exmhffO4v$OBVy*f1Cn7w~DG=CiSql;%g-@heal096;m~vrB zEiqNp1-ZPN0-G(CtZ>xAoewQ5yM&j1ckj}&>uWg~T-6jrZg> zOw|@~OJLYaADv(vB8oSu!_olE3J7p^-V&=sqK8Bby*nawqI*ZJZJZ#+9j>{hmBDyh6=41 z%lRtHTV+3{sr{H1)6~(-Cdrw3Q=Kc?Nw=Y@w}?rU-o|7z{nE^OxKtcJ(*mx%G0s;%*SX4 zOP2=C?5Jyi9$CKidgR@;#d_Bj-*s(mny&4ENuQHrl@OdP)ZEM`Am~=U|;(C(&&GNL*A)pE;8S zVO^$Z^ZWPA*5(DW61;C{pR!ptL!{_-ie@oRXtq|wMA1`@hvV14OTd|i zzC89HbhL`F_MGt|@=NgrFBFQr_HZ1B94!6&IIzxy4B;E zd57-(*bf1`TlHvPcPMnFQ}|8o`*?M-ZBah7|4R|-Knh+uwam+~dFlMaNOn-Is*g9@ zUrhRO?7?foAOk`@ro=uaysO&V?gC9gx)TV?R-;}BaMU#|)KZVQZO1OJ~Iw!J7^@HXCi zJrJX4`qe#5x#=;nh$yG3)7|Ic&gc1Vv zhtk=G$#>@C0{d`j6Ir}N!bW~eL;F5a>I~lc3F^%z(`>pv(PX82yqi9$d#cG{V8b_DgOBqKFvT4WDXN;OC)#PdF2J_!dCEr<-a;@xb~Cv9Ur z$$ca^U*_sdg{l2%(!K50%|4}%Bd-)CJ&Kp8^r8bBwfe{mHnh%&5PlZS)M9;TKLA8b z@M)&4k0XoZn%OpvZK8zf(I7V~nAthEMa;zoZs*=6&uPG42%wN7oD zZD?dl&Gs9!4GmP9%{L#1iam|Fw!s#{+W#sVqv_qM!JDfqFKx5Iv->fXd&f~~@YWFX z-8XS+*G3C*ykdKwqTgH#Z-vg^5uH(>SZ&0){^-2CtuF>5en8Xvf%g}Qt*3|f$&b(b zpS;*;YH$2lsUsvad#7I~==QhyEsyG1+Bbz6X*8;n>Eq#ix}Be0>V%{%7uu`REwHSPt&skf@dn}bVB3Hm(QHRvr9jj z`7Tx6L85iu%nmXY(LQK9Dp8;0E9OAo@j+Ozhtr@JS}Z%1txA&i9?pV_^LzX#XykoI z=%;=`Q(m6prE!$be6s%w<(!Q_X)-VpT~(PxsdV5ryNu6*m|Yj37+r-+31{~vNWO#l zx0Wh)2(n9kai$SI#-ry3rl-OdKZSokD&gL1)x1~6f%H;JueM)izdz>Jwa>0WKxODd zYwc$qBL~l3O_9wexOe2dW1?PXw(z6b9WS`#g$UK$OzX?8ApNzawnW=yEc5_qv+o=& z$}hW9MXKpJRQX2Hn|WGfnZ#`)OSL_IEM%6v?2*zflRAbH_Z{vR9(zHyE>H~@XEa3D z7KG@ZQM;tVE~H)x+FL1OUMjdM%MxqJi&RHu^m9ST=iYf{A#+NEKDrFu1iDZ;ifO8 z?sV((*8MTz^v{|7ZEy-ob*YC7el--qerFNdp+we*$eJxLC6ZeCb*BLFAJDa0j zf-$VlyaTqRZ#Ujd8yXy(o|dg}Ii)DTQoyaYO}`@tWh}OB{5S3#_&l}h;(TSVcvSx< zT0A~lt$h(XQt8<1+!pU+Shcg)ix1J-Fr1@Je~OH;O=Aj#Ah}!3#1HMM|CcRzLn+_h zY=J8No3;hwuh#vey{cJbo=jezQK|W_pTYb$mS{8=si$_a#ae>Qh-zwPWLZ78WRlf9 z)GN=nE+vHaPvKU{fA$V)aHKZ6*mhvbbz{P(x^#f^LBDHS70;HiCt{*~<#B4r*_P$^ zdMIvLe!xRIR?^6hm6V;RN=LkH%(ZYXLpF7=QC4WanfeLDeSOmzWR+)lYCv=@TAW*{~@TqB3ce zzv$D*D9reZ;J)t5WgirBr{4ye zjCA10m06$1QK*Tw_jz^I1>ey7yt?|l%qNWZgLs>pzt1z)7k%EVP0v~TLUC%D;?T38 zHzOlKH z5P{qAsG}ae;-oCPToYF~HdJZM3E&lUOeHNeSHcobj_Rh9Epp|u6ExdEt4oObGr8tr z23}|Yc4Ec9WE)z~&YDJ1?s+P=XfH*%k6obLPkFiQEyBss@tq5U2{0I4iVJLqR}P;Z>|iFp^c;Wr(>J8(!!W{ z1}6tTJ$M$;+w$lWLotZ)cpJ$$?$I#lac9}|+doi(hug=W+FKZG_f@ESNhqxjSzFeo zF8)^V??N~W~^cEZ*@mue2-Y%kJc&{)HELaW3#U|iHP%tgviD3P-5m*PbGt3p&`Ys8}A zjf;nS_bH2(ZGR=OadvC^8W`JT)W2(%_q5X#dvre}az#>a*94z3)Rj=8#(0Kb3 z1?o^5?v@Z!CF#k4>B;lMqL+mY8%#IG2S(QUTp?dx8`yYl_Wr?vMV}m4D;Tx)50Uq6 zB|YhH>xECyrz2enibWvWX6TME#GQvMJn(EY& z-*H9P;;MWNk1oW!*ZRD(RG+0cdwnz?Gw-OaNH`ml=@T_JXgk5~OQ&aGzJ!U_(*717 zV{{a0BOtBEpDo>iSJ`AuPyhM_B;wt!HonpLz1yA5qbY((FJ|$QCqqQ{OuY|w&$3eW z)uLMRF5}0XJvM@jH2A)feI&0+N7#De8y+u|^Tn6&_}%pPn%r-s=hR$H@-d2sZbo&w z{6g64_RD%-OM65TmH?Z!VG=%MYm;+nsp@;b;SU$W4W@eXaf%vgaYh#I@ae*{qK)^H z=r#`|erv2}rrN2gIyIG8w}sNPx>v&Fy!mZYnhk1I#{4ic-c}6t^gYgu9pL%Kx`xb{ zb%x9tlOkEb^QppWIiIH0o&IVPKjN3u{xs4KF`Q(fG!U|wp5#kZ?Fe|$M7%jDL&f~T#?v1w+_mVu0$>`eD-4_%0syvQ4>DtsStdg|fn#VCkU7NaL zjJWsbaZFOzrY`v@-O+t{9P`z+sWU%G+!yjVX02;e+nGgbe=Cn;65DTOYyWi~$1HY? z`=>mPY3$n66b88cA9);;*)gtmcE$tdwrf*M4gzjT9(P(EH*^lx?>hLx1ze3y=*jVb=h(eK0pqb=efC3) zFs^K-4Nat<1BvY5pdAX0Hb5|>T|JC7xTO#kL83DM{eT40LXBqW+L$ZF9qJ(Y82ziC3 zN6S!Ujf!G1-X2fA|EQp4=FcgRNdekj8E{*hG^C`G<`VLNO zDiUA6r<$to@Xp1)ZMrgWSXzr%!f2JJ+qvJj<6Aotp3M(|hl1zFv)p?rt);yLJkbVE zCf|3V&0#!RG?(#Af*Nsg6LVG>qQ#)<mAz8_!1`C9s})7-d+M(4~wsjBLD)fN|%Kl%=$=dP<`LsXkbSG;b0 zwa`qPIJ;zkOX;i{YB*Hy3A)ZieKzk01vibkB2y)0igl^G{b{ilRBjeFFi_cD%68dU zuButk$TW?vD1o)~$URSt4YiuJ7}ci?kaJOFM1*end*y2dMm8YhLER78L(5%P_Y%SZ zwpb1+85KPeYD%XpIRt*Q4_jnT@L28cnHanrev$>H)IS*^kmBxTwW_0(kmt zmZ;QssW(f%jPN&v{DP++?Dc{tuaz}oUz6Jw4!p?kdE#b!PffpVjlud0Z`fwjo|y5B zgToFuxw94ROw;bjt(&I!KInr&duA9H)OSrht9YGmMwc|Pf3VgyPAG6Yb1OOvs!cBeaUL-{>4&Y zz1>s`#^!CO!dd>@-g)}{8Nvnfn*ma*EEV`wD^MR1a2$VS;c3wqO%VL>{*s|Ibf@10 zVi)b-z2;YBBP7N=Oj7AO*qwS*z0t2OFJnW9B$+K51;6t@`Cl2gPT?lMPpjHgy32qK zg5gI;Z`Jg(#t#_g;acvmI8R(YmS%+(ZMw$?5w7&}S%J`y@ih7%mi~pFbeC`Bm(!9f z%$Cre8i5Tr(C%(B-l|?kODUljs?dq(7dg%abtcw7*O?w{3kPD|^8O(|KR@RzP|gGI zGn|J~u6`btdHk&`y@vv?+k8Bb-pv<(bY-`OLP<03Srr_H3wEcYEk-mlg|CAh~-}zqYC`LAmrxzGL}Ea*Y>wi zm)dx;RIF0E`YSZgeS)4{EJb;KVXIrOzWOlT|oa`s&4U>F|Y1>z`+&#;#l9(K&}&w%1FF*Gr4n%Zk^h@+zs@3i<27$Av62kksVbMYc#YgLx4F?n7KQl!CXJg0bl{ zADSfBa(Okh#&v^S;FukSG&#MY=ufujobv2Tdb2-7-p}NyP$DDkpF~+ix5z#MNg3O| zsn}s7OnWe6J#=R?yDB%LgI!gXcTt_Ca;agAv1LwU7j1qx1-98Wjt!^qrKu|dlMTDt+_^+~+0sB}~!Z!6a&b`>$Nt12B~LO3%lx-i?r{o*k43ZJ+CL`c9%!>T_H z#?4&8dwL~5dGwKa^i_(MUCrd~^YqF7K=jBl#vf3`SAxi~eNS=gulKjbVqUTp=t}x* z*>NAIE|jO(D;4uRtDHxD(FaUVolX7a^lZB-y2n!SED*EoV?xWe6>;8n*M?8_pgb{C=OlREwg--*P#Rd06EXym*Lm zo|9EcHdKB7hov(nu=M6~8Z$ULi@<%_GWlkW_K)3!>CRh8=Wr4CCR~nV)3hUSeE;-+ zs9AaiF%8@1Vz2E3cErdH^>!Ab34I-NKt;W|TqB|k&aR&jkB=Su3UKMrlagm|XX zZ_{J4`%*m$TrW~^@nDygG9B75*v0kkixs^2`TP!c>E7Zyo)n#04A@15-D?Pk>3@D$ z#YFUjUE!^OOeAsp1*5Y;t@G`ZY*(f6_*gm|uO`RDP!%7KwK4nKdqGBVwfzjS8_Jp` z+N-LzR@-mNW07AT`w_)nr((nfXIHiTWfg-; zm5WiZOMyAi-{lC&pU3`Z9?Q0$Ja*+y5dK>)LIt}wlzchPl~EwrBF zFgHFKr_+61D!wYOxbj{L}7Ld2fCj~d-K6mxing2Q#p=+Wj?M}5x!l$RHn(m z_dQ(}_Ip9tqH&1k#&k~OPfK-_$>^;k^D0*{%EKV|Cd>30ydgG*O(bzOoYlQ<(OqQ^ zEw+SMr0b%^h1n_UaNq^KbtnPM=4|XJgRfjdq&jAHvLE-AADk)r&!T#Zr z=X-tR<7|h}a+{Zx?XQov*|?JFYwcZu#E6dGbNg}%xc;mpPuX#VMg3UmGXxz)HCr1h zofmoft^_=N zCOi$^O~z;${VZA?V~n=;AEDJV#%OCdFRu>qfC18*CH8S;a_Zh$J6Y0qg*c91m;|A^N^7LwQ zo>*Av$o@q+mgjhq3$m>0A6`ekvaX2uIl7X9O}&u|{tQC0e;%6Gt_#@hy71|WF0YoO zal39Q{SCn*BM%g?3h-5S_qnWQ<|AuN=KUV(hEZlux--T=>{ggk7VUYd+IJTITs-6u zi944VYiZx5)r&cFZR?kO3Mv6_Xso&z#26&*i%Cuw$5;Uq?5a!LDQWCm0(fExVBZX2 z-I54F?UR#A5bKuYAX6ofGs_@TImq@Bh`uhH5wdQ31~PRE1V<=tEKJTSL0MW3D3+A~ zO%r0hrj%9y;!l+TF9xG_zlZ@-^0gwM?M;VC#Nf5dAHwlBeS9g;Pnf>4NgFHh0@88| zK@QxDP7#+@fWf*R&4k`W`V<0oKma(bjKS42kY^dlQhsd@eF>xyK|Dk9I6%^~LFLg9 zrat&V=wcUK-Uq8y_UgNB)BX-%v1HU7O|b3P`lic8Vns|!tD@A*921SUM9+uct{Q9D zBK=#AMny*ho$0f&DCST2)VTIuAEWr^5U;tu8=nM5&7)J66*R(aO6eOJGqO><*!|75 z9UQYsKV-b34h_3@)H2*LyLPPMH;=MmJwwB5%H*z2b9s|$m>;gOzpwva5T5pFgVu09sjA|e^`CVK@Wl1`L3zN zPtao=WfG~TZ-HMNo_{~VnRnt|riW{ugSB-fq_-QC*@26o8thF-b)OJ@-Uy zPoo!|a2+=vu17C~Yefmyl2?JZ zPhP_NQ1VivTu5G)wy?bZcp-Ty-@}wwfum1e1&)U;uL4(}yb4^8NL~fLK6w@Rel2+w zc>ClfybmQW+02FHWoZk`>%9xfOZgtAyb2tB@+xpVYA0$HSIafvZnm1+GUVuL576yb653 zmb?nQeex3CIr6gpuYB&tdOY_#(l_IE_-Ijn-el27%0a1gWMCf(MveNRV5CS71ta47 zU{*uV>&+i4?zh38Y-*opblZ--|2kY`n+(52{?v5#!J%wk__NBt`{g8AJ>l3b3Y70h zq@VUVp7|(TaPW`DOGREm-qOm$D;31I{0x9IZ^38mzKR$*S{hT_3;oRP z<@?Q81RUb-+pVu4zOsHa?Js50se~yzrLAY{oz&WK(VGstsZP` zqaL$E`IQs!)9Gr4eG}hDC4JqSeteq3HNPsj+bH)-DtDg&`x;oYzK-2axX$o)gl}vf znlkao#~--=^-8_e)@}0`;D1KMNMix`#$5QH0?#K2=Epze@Kne2<7+&>9O=3l22h+H zQ@6bOHQ|~IcQ$vw20rq2X2^U>*!@}ph0>JLws_h^+7%NkRf9}FCkFVd*7HUhw{YD; zt$vGe!rYSF`C5jO(n|q@8ynNl=mlc_-s^ICFRv^$%&DSB*M?GB99u?QUWbQcZ*)C6 zW#Squ+LkVFQC;$;$_C3Xn6xU%x5(T5Jy9qgX>Mj0&qE@Q{+ZNVb{K;BWjE!rV`wEr zRAV=6NuR49mart<41%;<6di>gqglyIjCryVPMGOYH9Q|$Hj5TvE$7^ntBcCYNn{RU zei93KRVi1me)wFy=1^8%N&S6e*YzT*(ow*;n0y<|E>iZ^s~z}U-=OHPbY2IXwM&MM z)viLhIH>ivO&n1MzGwI^l#kPoG-Z9-U=KOwz-hmjkFh#RFYqgbKrVZ+n zU@C!GkMNg*=~-AW_UU?7KR~;Y{d~&mdv~)vnyeY1A2LNMdQ){d5tt%BJ0tqvO!VI9 zS9(FeLUZYVOAm}fb79`v1EWx^qt-+AUPmF!4+&G7bxcbfk6&AqUFetg4 zLS2P^{v1k4KGd6o*~gA5mLY*bcH}im_-!PWIF!jQ%2%lce-tX!z2WkGdk>64vF^0D zhp4-NHy%*w=xNJX8z-viiB@@wnnk&x+r`XGY)2H7Dl!a5%9Xj7NgMCl%GQdsj7O9_#v8U(yUAb;c473m^uAZj@7)Es@gKhbGz@;>qPhcdW?5Jpofj4X8xWD*X{=`3~!t8 zh(~UZzv}Jvk4ZN%gF;qD0a%n8}_?LG1-PZVy0sir6E-5_DR-UZLx zYI&WhBf1KCD-`9uj53{;YFETmIyp(u$|s9xfcQ)qO%sPKtr%Ha(0Q)S#-sbFBX*x_ zT?TFCed{+sN+neJDS19q>Y~!0LYx}Aq9dpW(id6}p1z332tre3;sTH?a6LxRR+N(7 zsz!9Fv9xtPY2t&qOOWwIidFr+K~0g_7PuT79TjY2XENkF1ooBMmZN&Wxy)vtUId6x zJh_0{nSa#ch~Vz`fO7Rcv4nL~JC|^BbKO*SMs9Xhv$Z}{C+q9hU3{5ValDVTT=kfX z@q@mgoF9n^epHVv%`5Hy&eJSOiyxj;d_Qf^UcaAKY4b7mNRss0eb32o*>n61qx{H| z6fgSaQ()?s(wl0pNv)D?(b$-o5??h;{uLF;M9XTE?>dPQzHZ1mj=p0yw#F`TgK6y= zba35nd&r(E+KcVEvc1BdtJ>4{T-`p+p0`L`=1zTxmrC+0Yt+K+?ZxP=bd*@M7lo|7 zc%8nfI@NBx1|84t&eF$b_;Qk~)pTgzMPc^~!1s)8fWO71FYP}ib%q^8&6_xIN3%Iw z*3vXu#%B~P_PsXB33%tUy|hYPHabPkhqyWd9PE0v=cHMjcSL&x% zQbppLxrrv;v*yNICV7_Wd+`t##JFm1PH0!#x`QXf4Rm9o`w{r$D&ii)Go!-TH$Az2 z79pV*Iy;W)>kd9s_!SxjtLAy`CiQ@f4y zdi#5QP-Ytk?OZhrw$R13PEy)RN90k29i-sPK6wMbn2L+E5x!x-A!C6pYE6gwy3IqA zJJT1_WJZVF-Lb4Ac~%VS@Z?T?+uf0Vsaj{(cVlQL+0gT>bC^Cl+iqD0j7wEKN7UZCBto66h$a>-F2@%gCQ#CZ2l^qA~^OpmyE+4W!~qq}`4 zXpLg{)8jJ9~LIr{AdQ+}qD zm&}*ve=nF)y_7u6i_I-(*@7ttESPe*QeHJ5wj<_Ap?_|lOnh>-SwOdcCt-wS|Ki%u zCow>|t(iyuE4rg!pNYUq;(;4BOTz)OZ<@NT9|dQe_fVF?7Au6kmf!gmU}j}A zt24igeT)_^y%S@%sFnClFWEpVeJv1iK*d9Yr?|LN`b_Yb9^x~>^mnS<|G^UcE2!e< z8brcPgIiDYZwgn!GsD(*`MdfH#tq^7s(Xdexp^EKV$vU`IPem$NY_0tvX>Cfk+BSF_$+JJkeM@J%1CSM{@3Q2lfPm_ zep5ppE7_Z6!u$N8&-BowP%LjL9h_o4cRUe)#imu0gV*%+XjvdoSo z&)}Av8>CCQiihc0Mi!r?rj_xTAE=dlPVat=#OL+e=iOnk1T7|HJT>|%9Yq)RNTCu; zv{}Mfz$j!jbzFrX+oA>rMj6#`?f*mDmw?GtRBcz^-g}lzXJ&e`CzJIuJqaWsWC$dX z010H%u!OLg5FqT_q$gn;CJe|X`>r5}iKu`Is3?nqs0dL}gW`f{1d&}qL=Z&6|Gsb4 z?Y=!TA$*_TKTmS{o~lz-r%s(ZwO2s~&ryC(27N0Pd5#Cqf_<1GBAwVWfQ7U|a3%AN zUo6^l-9HhW&g`fBzp>(7EzjT@`6*nJjie3d1U$W;fuv!K`6OZYpAfHCnhDmrpV22f z9^KFCb3eNNS)Xj!yPwl1ds^Lp(dPjqc%Gky?icLOi~R8e6^C@H>dfN*$28+k2cl)@ z%7=NZln=2;8M<;N`xP2ueQB7t3Jo#Q#LYKCefIoy%(>UaMELkHetb5 zYj1QjYMflK^Bxe4UXsO;u+nqj(Ge&R_~8T%LusO>|4{5gIf5|M$6YA?Ru@7!t?6to z0uk6yu#l9vm4N4Wqc}y}!T~>5m^{A|ZvJ@8&tSHt-T0q|7_3)-Z3L{JxZK{q0iQMT zbQN_xxDl?1oKpt1nP3yDtIa->m@yElNDIxfwdrH7HwO_lW;-5&S3c6osUsnaJ1i>R z;4m<*Dde?>!MeJHCvacCa)xWvJ^$=5J3c~|mw*sXU8F1F8wrQ)^u?)R{`w_WhPf5L zkWaciBT&4wD~>*6@4eD>nI`x1m>1@B3f3mD2S01~;OFwX&ITS6Gx=P&2R{sFhtu4* z-##GUUom3x-s_@{J5l7rJgA7mXgq%na)%i;mF5Yc=4?n~8ev%zLNRiQq`V>!R2+*8{R+6vJ+Xf63lI>5W z&3FTKA#5`|GYVQDdlfIy!^c>H^T~D!;$67d`)4&bjh+4Gd9^R4HAkW8T19(;~<)5eoaR(?8rEi7dCgQ0T&WCTK7BjNJVPp*CsBC6DGM)dM_BBH+wV9vO>Ny!4ey(2{ILs;{j`^|cjlT_S2LQroo^2YYKaSz9rG)Hl$TX=&;FCn|go zb+EeQ&Na`eFbprK4YyTDC!Nr%egYg<4Wr~S&?F;kc^&VCh;DSj>tXWX=j<>c5=7=VR{z#+rGUat7yi5l-_axReBS7U~ z7uLYySuK_({mYn8vE*SRCRHqSI5M#gd5>|00U1-o^$3+ugamsg*3ANeJ!0sBBD9G4NDJF`9eY+&JG?boOv=Vh8&xXh*_?i^F;)8})>OGcekb-&dvC_6-vs zU{B;Z{*#e~X?n2^JFm9u-IUNP(9dvKX`TFAK-T>--0gUOXUO_R>8cL;N$0fB12ZDS zD|6yC&;?(21=v?cwE2Vm)fx!krKqm+2C+t1=E(AN$ID2>#48DCjcNe*vq~RL$73Ym zoCM3$zXpoJ9TK0S!k9na1~06XzJ&s|1ifxFb8DtLLth(judzhXP-;KfsmEHn6lFZ} zUW-}!V~)XFL6tRT%SHJfwRYX3ro9ljN6o!(jdl@%vZZGMwczJiPn6z=i$gFe#?iZd z5BwLV21N+*;NMa`^JC@BC%`zsHGTh;vqvk(@-UWu&)s}mw^722tCRN z)}%81!nfsE((b;_FF}&w`Zq`yn|KXW&cmC5kY`xHSUqmUl+@=Tk;o?Orz)GeGiLp( zh!cZa8+Z6BoSP|QK30LRSIL*xMTP2}e5giyq3nYVNXR~DGe(cUU=pmFAahjUZ$-whW{(mwA^vxzKJ6^|0}8HRp|f-fMo3MDGmy>J+B-+Aaa1m1Zlrw;P_Ecvz*I35+X zD#ZOZ#QJTp)a3FN&gl%WmptBod@eYu8Sp#yQWpJmZtjz4P#0TWF-U z*>r+OE$2kOvR4*7hM|g-`{F<_DlBbR=zKAO{*iYcqzroJfgUJ+B~(>nnp>X^x$kK8 zD7cd{NAHBG*!jk)cOIg}mzjyN*Apzv>c*Tqs$}PGV|nGZ1!TlMRgdA zSZ^na@*4pWHk|!Uhjr;Ayz}se`0V^Cv&!nkx?hj*uI`hcKJPpzZ@qHCHi#l^&^r${ zn55SGod;U5vLYi(4CL~Xvi8Tl^H4T*nr!d&&I3cmWkH?LqVGIJJY7YNhc$+bIq@oV zS&ES`{iucwQn5Ex?>s1|-g$7@=7SS@=OOe7xu`0^=sOP~;fE*9bv>-}hwnUCmTBZ8 zGC)UI?>t02UFvAybD*t$=Yc{F?m*%H58ioT)Y@uc_el17=YhV#w^bR`UihlmvS}X+ z>z3YmAfbKdfnWcJ?>yL2;5!fYYn$&pST6a_0}1;!Ol()`!1E5y9^4jIk~wGy6Kf^A z+m%zcVfLPXTW{jllY(_h6Z+dW&iQ|>uYXl|86eimNP>4MLA~=J2JRN##%`%ILFM)o z;|7?{;2u!)|IWidkZtV#ev?0O+i3g~-*)U|&vM!}wM&#;Bn-+@Ksr_LJTRyyN<|gg z%+E*Pd0-4MzDiNi*#N4G(RUt5AX`*hmcRdaC@sG8u#wqDrn}z)rG4jtU-95p$pZrG z5}qjcSE}B5pq~=0)aj~s9_0U}FhTG@yI5Z9vvCJsuJX6#@8o59DT}K5kpt=i^QE%> z=MK-SK$$zf}6jL-=;WKdAFnXTCVMW@mJwZznJwHyC0y+V0y4j30Kuys0`B zc}sv1=}qX)4b19Cc}w67#M7701?7PZ#){)=%ZFPnr#B#SdnQ-xdR-Og%4-Of=N~Y@ zK_iq!n9m}h)=4O;;6`HXb6eXz#!OlgzA0eep1_n@S$=kaRpBf82z4d-pbNuB9<@z} zk91e!Z#9MKHvZ_&zIR-qh2sq99>;xjmMUo<0WrIy;9Y)2&mUrc0_o{qp%)c);2Z)m z`mZX}rmf_aHUP&Js%ZI~D{RJl2&ukW)!s+CR^lUujIhn+9vF ztE?cnTP0xd{U4@h_k3dx&%70u6^a_RK3-d>E4F5`ygb^LKQFjqm{icN;+hJO^FI;bQtx@OIh&NZv#ybb=1EDu!duklV z-@VS~uwK`l;Ac2|j@xHcx7uvTrqTxdOS0|4o}P&Oi9!CMj<~TQW3H4DG0}L2`)=P+ zJh|dh znWMmmc&(bdxSWstKsWf>1Xy*T{jN;v z%!Hl)n{+<-AEy)Qu(PGCV$#o{n5S8cd=6rH@eo5EQQJCGkh}v>3ykAN7f# zKrzCWx8hjJqGKags{t3H(!m{}z$7a4-Oi!LOk2^~F_u=_?gm3Zqx)JvR!)~X0YQ#L zigwpSg$oQE<3Wo}_ai18ri<+a`SDVbm?_SzqH=P>_H-3;UQO{RlMXEe{PzSFsnb!fJl@A~D*7*EWLXYnI3OesD>HB!OvGd-mSqmZ ziDkH6ZN(EDjTk0osU-M^8h~pnAAm&7P#sajF_qGV(1eZI7B8p=>Bj7!(#vuf?D+%X zphxUCW`}6o}Ltju-ne{gE)GyEM zWOiC%&mnR|S~}b2fpa3Qh#$$YZxU8**hQeK*QnL5PPeTGg%>0s5L;}l@11*a<3=Ne z)b(27C&|SkHe<|bh)-Q&;`6dWa&@sM;kF{B;Z3)jbBK+$ka#Qu%Sxnj~#&V1tCCcuMi8(1%nWkst>x*YFT ztKZCki`VvlaThZCJ0lEubU)pw zBOUx0I28YdEiLv2QLSaeA)O63E_qGCGASUUZGg;8qZu(-*GQR1kvN$Ru1746kzjzd z(@D4xERv*~fn=BL8UfW*umteBc-La-k%eHW@;mUaMB`Ty{zh~I^w!>1d zs>9w<35#)^No+eT^(zcJ0O_tLN5P#oye0(?RmG6XH8ES({@zR5NZeKj>my~X_`o>+ z2NLjCDmK$L2g6=D994GE^~7;MbO5ikReR!>a)&u=L=tE(tbMJFbWjY-D)LTrH;_yh zl-a!xdEgbB>FP4$s?=p-C>z?Ol}HbZ_^dAj;cCZIFfwyd)9cFfC{+&*>E<)#p(_hS{pUgOj#7(A!co8%BIga#Ute~%E=+r8LNNX?disX zab+BBW?c3i4Q*7vAf(9LRTpIv@4Osr+Ib*0%SuWzVE-j;c_3l%W#~cYWb~Q1Fe8_x z)QlWl>Wbs+)>!sg7>nBr#BCU`-RWQoh{m(qG7lfxo$-t99R5jFItjrv1X_zGY^Vm; zR$gPxv_mTAb5Lydt+h&Bs?ICcmMBR7bY#|MQS&hDg=Uz?(po5w7wiG=$_^3t-h{u3 z5^4f)8Lv#G1@jmmI&FoPH#k{7<0psg}TF*vQ0>%JbLJ={nD!ulSn+YbzX&?Pks?p^nFO?_OV9x~Wo$ z!@HHr1s4w*7%lS5y1+V`V;(zUm9cfo%GF;Z?ra`ZEJGs2l1e-OzS4avwHYerPWegW zuz%NToK2557yF)I6XL;b(0thCG5nTp$JJF2?IvnS$|YoU$KYIqtz}p&nLUD157^Vk zDWkM{`XXN~zSCjH{`qb9Z^~s}Z$?hE{TkY3zf;0NuUusw4>H8PmU4&2mW4>Mk+3Ys zR`6D*e05$AXS`k>e7fI|prhP(Cw(8g5_w=ZScu?uLICp|!E9i0UGv4;uk2y~t{$}} zGX$6I)I*<%ulhTCxBoteMG{qB4J|)3%+dn150QIJ&Hjdl=4H+yRO%e$) zo7ZE!B&oxB1y{FBaf~Uwg2Kk>1I&=*N>fh6s3gEw=f`5`O`NEyMY26|5^lY)8Nt;T z++@MzX0+q9Lq-YXwjyVKm9&$Mz1uHO*QQcI48U@^tV4+H;94AsAq)ino)s z;GQJwr?}Dyn;o#xvW%4o<15^^3BtSBcTAYCf_s2&T7XKm4;*ZWpaI==6n=QgAP8^@^GpP`{-rx8t%;P@t^j8ub6@9$D(6u4 zRWZc_CKC_N0}KXo5TJg<0`LvhDf7)iV(EyJDtuoAdds)G&M13%{(*{+1o7ZvMyoCV z8a>+%qK5934kCx{{q`KeLpTn@#5DV5&D41=E{x}hm6+Ovs`Zyb6%DbzG%Zy$#6%M} z2QW>R*YL}beM~kMN;e~G8`CW|@k>vF>&En;()Z0x?_ za3eN8LjGd;R4kE`V@xkI41P%ICI@VNt;)wB_*U{tERqkcvv^&Dt7wS1e9R2YVb6>!uRG!Zq$aq)EzLpf#B;D%l5U5q&;h>73u0zVvaW#bRh&{nj4 z!YfTcZrp?t+|_M~@PSqy>G>(BqvONMy05#({pg|YhxH3O-egLXkwnz`6wzqJeV0_J zB9-o`6o|$l-BYYQ*w$T#zD2WaK|5|qB#o^=SmJ1e5yTZ`9qT|65AJ{1Lo13X>Z${l+xTlm>y; z&Lfq+Q2xwR#cv9A@zU_sE>5;QI6%_t=%yG$TAR^I*`8WH;a>&zzDNgb+a88Rg(Bj} zCnCLg`(!n&He?3B?4=~uM(^Gt$>Puf8x7`vFm#Ru6R0a&s#{aeI*R415Nq%?fW}-0 z=DG|{&DB5zYhm;8!aSeDxf7n1*k(M%GRY^`V*I2|f(lm0JN*|aJC`W>OZk+4BUICv zj$0WdWhpN=`-$ylOSWT3c1Q0-6F6{*x`P9L z5{-Y00x0|QkPB(w8(Vd>FlUbz*5qs0=u@DXd`&n*7ccFCEfiAD#&qesNG6|-6qqy& zT?ngHdHD6Gpa&bT^5!V|OJ4vpdUaGijc}DlNz;C?EYaoAz{eB^o6@k7lKnb<>|I`( z=d}H$*_ERSIKvg)OZlTcF9JE~Qk$!c`3 zL{sJB#eo~x)NF0Bp30R3PL6HF%TFw-49ig+jQG+PcB zx%mudT8mf&%lJ1y`1W8D$+^6#Jcr#tlmPAc&+zwy?rJ4)^h( zgEe1vm8cP_R49EC>2J)}w4?wAmHue4!D(P_aVTFCSsj82Yw@?zhG7C;QwX@mErnB` ztY6VuT-(8!(0pyB7DJlRI$W2po56~1vbGAtJlTr*1_ct%GElH4$cHH>&)m7*(rQPvgX0^eFj43X+)MDW35FAqX2)X z?3v=6szf$yH<7k=V#6k4jixEqqPizCm6~2_RfswLnXT!yR*UNM^&uabe0``z86Hsc z!oEM5%o)@|h#&t-w<5(p^DXG9Z`r#sTgCiV%bF|p6HXPQuGr7DnApx|?P#D0anLNW zFU7jdI@^u^Gf>L+;(u6Y;iP`v18~EnsosqmkGjM&PWQkM^_g{Oi{2J7cF|a6qfz--KkVCKz2kn`KVABb*aTs4p{EeJ$IraaJprs?7exQ!V9~ z%A-#R(9SOvO#RqOTl2%u%d@0)wV!=Ap1Q>0$TZGIeok^J^2Af3 zQhk!P`Y?A-+v=0F)yIvF838`S>Z9|WRg(*-J_%QSP&Tu*mW#Fsf@+7*vG!8dZR+sP z;Xc&r@S9-O>TtZ2Kckmzl`c+%D|Hbj2Woh}#aPKA8dzC*Pi_7Z3P-EBP5!m8v1^H! zr&-txpppF=Vu@B4nHB7;2s>AMK}w;K&e-J<^y1Lf9CKz>m(|s4z3l6B(wM8vh`S8B zd^}$lHyCr6VOA%(i6ECmrwU^STm;Kr5pUDrJbAQ9;l_jWkq$N_X^*9$1rE9EJN=L7FPvN=FX7ZI#8!fE^#WgO9klm22l3 z%BMAoxBe(zIG4xsNNKv$a`O9EL<)Yv;g}xjIY3%#}-b1%u`j zs2ofzxEnJ9D(B0sJ8l?|J7)?m)i^hw80K1`s2O5!X(-;YD`cQ|R?jN7(vDtApGTA$ zTuj6b67}H)5_Ts@p>aTd05&$bfey?`5%Q{Os%@%6*CL%7IW4#w{hhjOdrda@I=)b* z9H1~%4O-}Lz^T?0+i-T%OQ-ye$P07JhKMA2R+euv*p0zGA}#l7=sh>I9u4`1Lg}l@ zdIQzJ0e2*KQ$P(65XPuEe1-jshG_fPF)EE3h8a7jT;D<>VdA_=rL1un6m;AT(s=M~ zvSaz1@j19ucSQ2V<@tQYa5kpcX`|^JGKrUO@N2N!MPp^RBMdE4bTM+;43jLNLV|dR z8Z&Vg^=Bg&aD!dWTN6Y9T#HU%-rApm`GFzhnf$=e{@BPV%Naw_kkhLB_aS!wI#hT> zw}rd7Iv^@HDnz5(geyHNoj11p7{~R#7l9F?t}?=m>!LMgT|ZBSvBP?a-xbC>iw(w& z2jh`?-_p>CAp`Gm%sR8S7W0Q0|7x%qiY8|==qzQSE(f7v@QRj3CAGmNRf!zCk6eP( zg(0O6EH*R~rar8+=xp&9)dhpuZANdl?A4g7(yXsp;+A{{(e;kpPgP>d=PH*rqgM@K zb5O%hV!Q3;g}T42D*n12D=ZAKSbcOdUMbybJqDvw*xs)e+mTicMo-tUK=F{PhHEUI z-?Ml$9ZT$KmQ_@0-*9PW!uDq*Ec1j_e$k&WA zqo6`fI)WbDkHUmF4{NLqEm>o}u~2GLbd4=x(v5>kS6ipSiH-TjA*DMlhV+1jNj0kX zgf2e%dQmZV;Cuzlgj4<*&j72+=+7#@S?99g8d=%49WllxkR?aU_^>@uH(>6-)Ew)5U1l?DmAV8| zvzQM1Jd`)oSRCbF4NY&ve%x`OtB!%-8g!SLvJTe$-|8Tf+O7`%2E12va8vKB zSRHJv=pc$|`+4bC%g9cZmL0wgEi3E$wpHSzWDQwie{C6heCVC7{zhy#GlyF)V*~#Y zYxoYljG65HCLQ04{WxQGPYhX_IPBN@9-s6VCzsmqhf_m-pK|V(ru}=;htr*VHBLrs zBiQ$dj_7NPJKCooG$j{~KL$-g|D!SxL62Q~`CDqXv{znrck)|CN)ti|M z!uK3Jo$DA$UcBJDsKo6VFL)5Ys08T7wc~ok%g|wu1rNb3muhcF1>eKhL`+FMT&B|e zw_d(6X{^5_^j_a6^=osby`aDewdFPOkvj+9N2pph>ZK$Dcm zO>5ZKK+ki~3qtFoM|2fKV<%R97ADJTd$-u)wL#>vi%cc z#~57g6LwGNkTNZ>jf=vD9qX2b(v@IlV?NiCavhJ{pwcteX|QD%o<_gfZWUcjYxz7fv{iNtoXvhTkDN)ZhQ&J(1~{?lm9vJrNOqr1wNDB__qg_eA8d z{r5yH8FFUNlJtI01m@YC%RHk_lGJ|-a;bV&pwDw6vV9P%DYV!#3ZW2bk1=1(eWi>~ zLc}ec`mMei4Tcwox#i(wHl60MJT`RKg@FX4_VBhKbOcAE6VY%1N8!hy{NRvB4NPB% zTYW0sX5^6u3cT%qfXUnT1>e|XKs|`^d90|&r(XgC?W6P)bn?5Y@*S*&1N0R(97}(L zpgg1&nY^qTff=qn-3eywP$=&ItE^+3wFqS&GyCpmhLNw37urg!%$u>4S$y5&kXyL! zIULtiNJJ?ssM#o)Ab}c=F&+BW@85qk9J?0vX4JS*CRu=Z^=&=I%10#4%o zBNXS42p(gFw1Uhdk!=W)?Jmo=xzJmV33D-gFa*S&FvuvC^Jno9m*8-GhbQ;Y6-Wo3 z)W<(fz5@X@Z6$q6VPaLjDSvlf-MK#y>teGHO#mI#pb0xXX(NIdDBR0XxXTIdL7XmG z7E{E$s7>Ua0xShq>`Nb|N87ivseXTkQ;6NW(xz}r{vRNjRB7?WRm~Lji)$&jA%2XI zq0{R-5TNofEB3V4 zawh~hq>2R3&5T^;=8z7y8qDbz+4opkuGd~? z>*}P=$G~R~^MQNthe!hMH7f0?TZFt$P+psI{%VlIgw&*hHTbgC6+2<{IvHK6YU$r8 zJoWec)>3fb^lQ?N)%r#G_OX?l5Oj+CHc{Qw23E(8O<`pjE9kabP4v)+TI#>W+ghGP^f*~K(jVe zDCI9jKPA&*Z)Mw<8C04lhr#iUnIWaa^gYzum~n%pjK-K@JP=6q5HZg#+zvkYr_B{T zGgv<=a@hPUm{Cc@{~Z`Hn@5Kd+KjPQl@EL5qTKv+FQ3nb_-54EsxWVc_~ze-UoIW& z#&NNs9}x{B-JuTA))yt)_7t}|+J&oshbpvd8JZ^4T zfhmn_Lr&Xv&BF~pa}NyHhiuvtKRoT5w~=<){eP1-$4iGJ-;*TY&3_1spe6VTs*4Q7 z<;Pbpyv6_ry^vJl#&x8$>(_L{-j8(fPe`KB;=d1LUYn6{>oCLDR97@v$rp^89hHu) z2e91OmD345E?oi8c|WSbnVXp%X_u$I|HS6a6mG=D4!jU}C%UtzUbAH`4$BU^j2qH9 z-C4R8pIS%=_d2qJjx*^|nzut5w+zu_50iq>+Ozp4ccASTe-yieRSVOP-9h8&{}de2 zs) z)u*D*GR^E_ren|At{7#k#JT*V%`vzQakiO*n;!Qz`?t#T+J4{Bp7O-!HnFra&8 zvMmdmHdK^aFX6w;8XyA&_2eAN9jFU6#SD)8{0d%p663$j!>x)hzqxEq%Mq8Qw0&J- z|9MC7-;ci5qFZ7&fKXCpL*FNrx!BgYI||41u|SS4sKE}^Y8PxVC4p%>wU3AYZ{))H zhI<{cDulMPi$T~ z8V|5Ahs3dtY2rGw(#$g}?DxBpsyeQM%J>X=0o3~=5U1@wTK&MV4Z0J#8>C5!U`wn_ zf{|HE=QU* zbHJm1IphnI-;>;yCtZAweRC4RKzn<)o&>@78E9YJiw>ZMNwB9Oxf|1M1i}s=h*ABR z3>NQeLBidbc>j7F_6_Jv3;8VJOp8lGJyL6fJ=`>~$0c?PP}qdxk@o3`#NVu@4Gr0B zl!fev-S@tiZL8?2LRVWw3`)WF43h~4jIxaB8a#n`ocfggJFG0_|I2>-(~C#` zv|0OHbzYbB$g3?2<<;vV4-zrwq)~X`{A}FME7>hRjvFYY(%oPxekpsJc2gn;-#DXr zGdAwPX0c}5wg~ap8O?<=PIP_Cabh}sppA7=c;0{`o+?yA7BQJ#|PuV*~fA` zKGp@8=9qFU;;ph*vR8x=zQ!;rndb#N71B6y}}9IdqXHRR6}te?%_yx zSE(k7Y7j|q0|N;>sb`D2-Z-%nzd0TJ8p?ITG8;0yTS|9TKqv7k zfgMD`xb6cZfJ;&Q!F{;kRVlxTCQkX<#Cyw^`LgNNnYQT_`5ujYD!q7neY|=C9Z4@_ z(*BUX2?xK8Cd&ee!ITc#N~Sh`mQi_xI*EBU>NTZXu@A&#ACedaQ7dpZ-?a?! z7Fj8%`UF!-TuJpj2^6KK%I9Ky>Hwb~!yN0Guu1!|?BbW5fE;!2!|y`(T>CT6{_Kk% zJFoFP(wo7ucjrXWLR9yc%Uf@~E=ASFC~m|y{0bK5)!KA!S%x{%Zhqx);U2kAmlSd0 zN$-L@kas5Td})B;i{-9ya>mu8Vy#$&16j5)@~ht%>CtbDm|CdWQm5IK@x^NqVqWba$*$|y=I(`a4a4o7Q_6LgNihWHBlP;*aq*2OwthV z;;?)Sy*&SuGpC#$@|QB-27kL(^JlqJ3HRpo3U#XDdImF$;tl$M4R*87oG+ZpG7voubdQWMoE_!H$Hhd+_QyimwV`kbs<;n+) z$sjo658mJU9ow<~Rd-7!6<+_~>N?|})KQ6lU&KGl#$V&&j~AxY;N}A6dn;~KD?ssd z{atG`?{VDK%nTlJWA#;`tj|ni>dY_=&x}MGxY7mnxjfNm16Kzv=Reo9ov>tWJ7J^q zwzMfV;9*bluzo%RbDY2<;A%(FPq6KMuRCLP=Cjw`<7mT>58D$7nOg-|DbR&t8hB z7{;SCx8+W`OP=<=&M?hMol_`3%BSseoLOCn4{sEDo@aM2;%A|IF@MTKfuk)+br5Oey$ewL#l0~H!#5gONzB6k%UVr>_Do!>y7wl;Qu45-(M zK)LRZ^V3hk9r42jvf^vN;XU138@otshbD@T<4D>A++@VIk>M*9%8_?IPSNv0ULAVI zqWw232}f_sK!Uce4lp}J?7=d`zt4xnA00TM&)zH5U^8>mE77V{!!-9;T&d&CyRBC? zPh~?F6&hmcYs&_h{3sg_>lW9K=8AX6mZTQmxV(hoZtC7&QfC2x+RkUp#+NHQ62*gK zG4crxLfx_b|0W1K;?YHWTjdlFE~Oju!7@A$zw@jNnVKD+?!h2LHPteXQ!SctU|PDc z(Khj#alrnD=nXC~z?;!d7kN)3@5;kS#q4Y2CtJEB=Q2#n@I8Wx1GLt|uw4$=R*QER zIH$mFvYeK}Deat6X+B=r6&w#XrKuvE;f z(cJaY=h5KR>Qlkzig>t~SQ&H|6Uw;0knXvNuh6p;0x0wx42UykwO1kX1XubarutFB^#~7uMYh-%L|ed8$tp zepW^K*{j0O$=l$kLJxj=)A#1bM)E)6=lCc;%eT)@g&zF$rr#z%+`Ga)l>PJn1a0(! z-Bg$TXQZ0p%VCvqcgrCA9$2riD-h}g~rggtP5##1^gG# ze-zavHwv9iQ!@&iIZUm#de;q1Y;9f*T^g9QzueZPt)d?{smzM>ih<}r42+NZ0P*0Y z!#X6v^K*9mBDz+S9i)*w_X-w9*4>=Xwv5aH27d1OP`YELcb`{nZZF#Y+!iq{OE;7|bFRy|L`$hI{_m44d+gF^_c|M5`CvgcgI7i^4tgVu0_b1@QCAD6j zap%FZ!d%iM{7OEae;H!5#%`o3UBSxS#W+gW;4`kBstLD31>^kRhUFS-pL9oTBVD(; z9`-Lf5EdH9`o(;MXEcbI`YlKd=#UT7wH)nf|43xXPT1=Xtc11kQH5fkavtJ)Px0Yi zkm~s!bUmOEp7#CJY#EJ)>IMp?^gX~nn*;FnAG;{7-5O+aqbuhmvDj)p&ho=8eL6SB z4PZEehl>cFf|nN@26eYb1pY$f&~ides`MUG3EF^;tHnJ;>S{EZQEXu0Tgd3PsGKS8 zpDM+!>6a3Ap^DN^mC}7F2O>^m_KZ?$Hk>TZK>vZP|m*vZ|>GPyTt;AUus-OuAmSoX+3 z1}`IYe1XF9f6uj&RC{x(5-eDbrFk%i;zr!+Uaf#jZE-Dx`#fX_KPBqLTm0*x7qvyK zRg?m7(4zAJocu3T;={qr-~|K=w=j+~>84Rs+3@%fq*I7*gbk&!3wU~{wwM8TdP6Z2 z>gpMA*kAdM-lz{oaM+->xB~k}v2)V#1|6*}F2dyEQ_3C`1$50^op}ZhmVeRgfDN1! zLC9OP!HsGz|B4#%D1JTV2>Hj&kHNvT;$U6WzgW#IHq3Nl{3Pm z%jt_0`#i8i>RAxg6;F4JXeXz9hZ~%$aIDCo#^5*xOQNngKip3-`pIPMO8CBxG~No}(){fX-G8Bm{@rF>a;uf;F6NLjtA%g#6lI5fmr0|GF{=?LdEK1GQN~_6rYEm=!+69R z3~bTogkWQ;Hk6Tz?##{Z~L-?$4#obLgKfV_bz?$0mGZ_wG1cwhbb5 zil#K6Zm|qo4hij?q=Xk_Q9u6-5C0~zZi(=i^!bVb$AE(6@Ekd=q8XUCji=J7L*R9J zIb3=WUJ&TOEDCCbe4~E2FRybS+CkVC@?cjvsbzR99CerpOsphOZ!#^xLUO~K_R#;^ zpNF@Ax#dv?#9`k;urFy$#(Iv-9qQuJWAZeW{;SBm|6P9l6<^D207dFJ*|FY*@&5(_ z9*|<>SN7o(Hy}DbCsp_?^S2cI?FURVXBB_(I6vf(1RsS*1=v21ms(M#4&l5($B!U) zE=b%c`DV9z%*PDw76;>WFO)qCcD495JNG+et_%~BN*!NzZ>(DkNv0vm8INJ%Q zG;$pO{s$j$43IG6;Rh3kbt3uOaRo-bm_sUkVL3XI(m9&|2U1+moQMF2u#SwZxeT9L zhA)&pcAboJ3))y-jA60CIBN{+{8@_)#bQ1rj@x^puHau`L623jc5~%jZ}& z8iU&QS<5&VT{x58BNHn*WhsxUV;S4*gltf93Adb%CH;aI}+i|wMA?qrLk#D48+}B z{PKrF=h0qf+9q}0f~@t>ini(fh80i-{f!*Zc?qa`j)&KJg3?nf%<9dXAP?>7wbPH* z=WkH5&9LfyeOf*ZpP%&S^9E!4X@5Rc+0Bpl=krba{H#Bpkxb|3{rQ~8bbisF&s2ul z+@H_%BjNKze?D>gpfAujr;Xe68PktX+fsK`;z^KfIEXY@daxHLMqM!xasr8hFNaFl zYrccNYDY0QZfV;N_``F7Ki zw)UWI1vh|VV9Y-qp7_zO9!)&ET}$e3KE9nR&e7O2M;|=}^e)ldMJ`d_UJ8}{nXn#Q z(dbxc?@ag1sRkW0xY~Zs9{7DmdAHR_quA1kC?dDvrHf+9;YJZ0SqRd!5UBta7gBPy z3?ZJQ-L>;$hqI2VA?aLznw7(K*ta7H0Ng;=$d3{#WS_Gpzm-dU(!u zm(4~^(1-%I2KUyTflMSy_X29ifu&c^-HIP`+>&dRwdtix zCoA)qw2>|m1EV3$C6t@jbxIWtv9dN}6K6!5IaW9k`8xtKa*AC=U?0`3Df($0xs}Rs z2gm&o&_H8V&O}u%t$k#eANcvU?+k}z?Rw8pv&#~DXE^(}oHPH#Hu-oR`X)a9j*kcn zZvgfG0RVR1#E&}}f+G_^$Va&xi-_O$U&X#%AHg6#hB-Ipr@HHEd&JZs^w`}xl*nuo zsM?H!jk95)Ix(@BJ5%~bT9{|{wHakRK!V{0wXlp_-Dh4AeUm?@kQz14e2B4 z*?Dq>mOl1QZ-pMo`K@Di_c%m6e3))WGG$E? z_A@#eYo(L+^+WWb4>e_C(~HO?Qa`Za(ux7*I$Sf2SLR`D9}DFULyA>87JTU`mcF%~ zq5Q)I*D5_K?`g2_-1O0-ZN{gAX(|%hr}CWeN94tdt)dJ6jqa7}gw0E&aID6KWf75W z(4W5juk?veqNSbQw4tT+vqZR2W@*?j@;cu`v30M8O|!36^Q$@dkIIsJX^98#3x#S3 zZ4S0pdw(F5sV#siQ)OLUvitofs4fKOfr_iv-K0jtk8MTqtz6E5MSw#hh;gG)uMRuQ z?+(Pc0xE0oJ?ZHLN4j31=X7#idKTK0E4>a_Q>yt4T4=7*)@Iu4d*2s^(ICe=6G4-y zOmx{ZyctY|Ul<0)O>yaH zu+D@FgkA3kvR{uA8ClTv(A8|grBUVg3PspHP(Mx{c6?MoxSpz@LVOs%f&3X#U zre{edoEVHE*{dIEl9((~mB4+WdJ7RNji&x!lUyNpd>?MznJ>;j97&V5eqA|VcpUN) z#%3x{HTKZgUN$%82B?X>s|lTT1p~A6ug)d9A;S^H-%)LHDgS9Gw~Hi6AtCk;4I1WC z=~_~CPVC(hO{Q^zad#ITY?@E9`C%DSZ!n@qeyHFTy(#O{dTN>6xmSQld9Q%Bag_?mLh_>trk9 zQd;hG>Dz~4_Bg0Tv;mIO=d^HQIj7FrcY0Q`j6C`0QX|`gI#6TQP&NSLX^e;pY0c=- zJfMGPhtU-~?9!vYt1K$XCWEXBWmquHs#a+f`zLQldgTjHv z8?KQbddqmqgSv{kSchpozZvL(xNHj-^}AXa-lk>wz?@y1-7CSlIE)m-I8Qie+mRL! z=|TNPYU50r@x?GsPv;(vC7;G`K{ziM1X#1BfF|S=NG!7Lr+lo)$tY$9G}ygAv|E>h zx8o!WJ3dtrVT$dro5B&ZR=#saZ_rkjuv$&Ja~SjhPbLh<4`ic|SxgX*1&%hfESkRe z;fR#a`}k?l`oBjtt1D))1gVcmd5$vE4zhU;ZIZ@6{$ONQ<+;AxhlqEd0ULwuBxmv` z+1-U7G=i-6FrUs&bcv=*BweKNvuLNoI?S=uX`nq`a;9i0ZpDJBa{>C~_4cG_$4Q01f>HTBEi0mu~7V&WW_I6OX1-sG?pEIj#w=^Tq zbhTRzoFflFc`v>cT7^2qY+{s)$xMQ zJA$^eUy>x-+%H)UZ#&F!yF0htS`O)K zh1;cA2Ev6{Fa#{ODck3%9Az*{Jh^?Zw!cz~@aTb~owIpj1E_gF<{g!gHkCBCPvZ|p z3=&W1?#6o&_sUz#*!A2KkvJx%*Aq>2pN*f&tR@!M<07QahVk0;x){Kvm(YG8+b`^5 zyc4m@m@%R9+r373pwPM~qooAuo~Ibp%d<&%3aThE#*KHMg9yOUx%iPh_eNe(KPV5n z;Yf{{Q4QJR$4mF)kl(i#B1xZlgnVbs|7SE2pk4RNTL;5vFHiVafpeuoUGQ&=X zyT({sKg=!cIwjdz!>*4{SZr`QdXF-;emrm8hvNR`WO$dW-3Vfhv}FwS%pJvbeTD-~ z&2rlgNB4PgeDlMpiGa${zgeP`wibY&)T51GW7R?UAo2NE;?7nyrO$GMIVVj3#^t!xT zZ>z8b-9qZxW)N7;p!n>AaBf$6zy1O!1r`h@fN!ZP>tP(%ycx5aax7r~irs`#YnOZL zGSCC60(#UFQ^;eoIG>kDRy$2EvS!=OF6>^pp##Iju`0>MXh;Q{L(&=CYDVYHxb_@- z$&zhzOM{W&5uN8Cdp+b1yB`bP7m`hlt-C*^&&uY>upY0mwuO|+iEIlo)P<17)%A<2 zXo&TtVKS9?h*@iOF~4YE&xMR!{bedv2B?m!QB4`8?J2;argS!P6fXEMrij;d5idp^ z@w%(xWn=WZl=m*u`8z|OyDz~P>pJc8a`3aiwI>yR&@STksV>qXW?)zm78dv@@y-s` zkzyNOg7mr=$X*QsvPQH1RH&oBLxn0~_oX7Ol=%8Db;O|-%x8(;A96_ZAkr0B~hCigj4?0 z!}w>o_*0h4Z-Z4Tpj}B%`MZD)y}dDr)yAm(#+`~T(^*8Ub(#J`W?aY*jW+8xJw|Qr z6)FcdE`5$7{HC0CM4{h}sLdQ6(N zqPZ%hDZ8(e`_-ZQ37rQsS<r8_5i#9|4 znA9ALt;_z=6$0vC)PGzbe>=x_S~-4yUKpBnlWEHj2S*w7n9vjMz5FNi_4gD$%KQAP z@YTHeeR!+(-=QD>LYQ|e8*L)=BZ>6Re_KCsMCDVg@*i#db~u=}U99Z=C1Bss-1sn; z?rTyN#erpt9m^E3+n|-aIQ@XRO;?uwp`kcJJ19TTKV%#3RrDV*uF*(c>e4HXF%@@P zP8Gg9e`Uyk%6WVKwtwh&pHhi;TkanBkXt!GXLk+*xU@d1-!2~#uG-JeQ{E@JPcMg} zZj|+B{WYk3Uho6>u04@GD@_BT%o4h53;Q0>W?z2%W%9!;P9E2)dg&Wg*EZTAAG~#6 z)bnl^0^?`D8B3@L+j()A@F$wKrdC0|oe#pL^ZNijOuVY*GpvuWXR2QE-d0Z?#IVDs z=><&LpvTey8>_LvEF7XGA#PWKap7Gd77rTWDjlYGkQWxQUQBBU(z0{$r^CDS3dgo% zN!<(}S$qNu!_{5|pkW)w@ESw(CK?ikU)ei6#>-_qt<9%5`U!Imn2%%7=(XUFI&j6V-gV;}s%xA(~Afc!f)l@)=hzli^}__!VfXP`i^ zqZD`k;a*MPJSLzo`@zOc>piP77&6$GApg6<9McW;RL!|HGw>Q0WfDSYU^&p zv`+EwfMbf?Z7Fj``*H0l^ZX?8fBWPcCg;pwr~Do6mrd=OI?%i^^@XYE-A(;w<3RJy z&M!>OnT^vJ=QGoeYtNb2rjdtnyD%+(I&=4lJ?J}b4*9umPS2d2Id<=T_a0~-p2v7@ znNOO(9ngjE{SGAM`%C}0G-U=1Bo9x0f-WxzUcG|f_pTuQ)RlvAYV?8;C;t1o*&Bh ziDSsyU-Ug-73qtsdgegd`hEzo-fUjQayj5wexGqHOX^0!+W}MN3Am@sJA%36_&xYI z#(%WFuM*q{STH|4?!My+<`;k|Gvs(ut`R){cyjn-!KdZ&jK1Fn%$Zkx>OkxS@|ih- zZJo<#bdllXm& z;DaYI@9&?)v~njCP7s_SIA5^yWQH0b4SYl2d!9m!^LLw!u&#|RFd!JKxkW-6Be=1g|Y;>IE7vNiAF`)hzH^X3}n zI#Z&?HkBB|NWr}T2bz;hFF@PR5d5s*9e_FWH_;F4WT@Q)PX$bwJ3FcW59zypEz|Ya zk%#pI33p$|@;z@Ib!^i*`kp+W@NIpsIhFc+mEgUneio+-eqI%yd|cSqL^&SgU@vCOV@NHFv;M1u{YKbS zU`*i|^ADu3JN;{G#$pSAb(jUXJ)3;4LM%MP7+52G)a{cZbKATO3-&?YrwuM=Um~!5r@`#vQunqL1Xk56kV? z^>;2#pPh?vn4^GP&c&H6rf?&$Yt1LkVZv?`b{_VwFok=R-i28GB=(rFi!gu3@_QPT zS;V?t*ek-WBL>QMf$e1O1jcabIP-UxIY(GQ*w@XcgpC*WEpxrFJsozVu!X=LHs3K{ zjimQI^X*7_n~0UudlneeI}+grnLnHRV;fPbr8t0j!Tdme=fm$jU_VqWH^47z-Zn4C z63EdPg}n!i;qFqnc=EYhY%yMA0u@SL} zUJRwV7FZIRKgl}>ab6(G5wWQXcayM@v0W7IZeYV=t+Cw|?qP*%jm;9}W?+Nhx1T6q z2Ij}c#tsxOUXm${jUD7|fF#BxcSaX(Z0ulB?ghWez?KO+0N9||_}B`|nZiwo9qmyg z&qJsrUMeUlmYb8TW5w8MO5y9k@K9syY+*kYwqxuP#A3|zz_Pfh^k#*7UEyXr?0tuQ zUVe2c#yK;#L0GfHzNA>j0-FiHFDr%pfXxQ>6;Ylj%2~0mDG%oZOX3EqJ4Jbku>E7- z^EM)G99zTR(%7qB8k|}CvNZOZ^0y~kk~mprv2TO&^w?psHxf@HyM#O{o}FYJDYZ51y+%&?WYGxmY7Co`{R65hSB+Ju4Rz3i)*jCWrw zk2>05hB*vRNx^Tju=`^LVGA5KNZ4@>8zSs{hoPn;+~*uNLfAbH8VfD(re-OktX^yPV&2 z<#rRW2Keoopk_UjdkJI12V%P=sGt7=mISsZ3?_DD)V!2C+h!4JsLYw*i{ZYTG$taJr+Ao z*tZ>ag0RPd9qv6AJ4t*#<*-10F9N&N`$_B!VQ&a~DfUUFo~kWip#5^}Q)psQtAHhe zT`bC(4!c5>`_-S^-Q7o+v+nPusM?Qw#PkKpja54tYrowNgNqR$)EWgFTW&<0MWJ#~8I~}ws zZ&Z>ceF-oeF!!d*?^gLWc!vx7zQc}CEPp^OFL@2#Cm;`4H^hN6)?SaWH-ruHE<%S9 zJvnhU#JgNrw*K|nMP`_Hm11cD_M|t=yIR<2U|22mu1})kn%(NzPVek}QF&Nce|p_a zGu>fp9Co|>KJT!vDFrY4M18`W?tLBQ##(H#Z_4lOdSV^kw}qWAzYgy{Q4Snn{T`5C z8?c??9o|F2<~YBHh3%KKls^!5xbu5N*j@6Q;cZf!n}Cgt&+vXC?2G{`Ym#P$_jr=F z{9<4ef&D^xxWoDVT9n@vwww1yN&e@+AP?^u`90)?UPbV3GA%+$Gk*dk$vd1nhd9N0av!@cvB z`fB+d;aw!Z^Mx(fF+QmInKKU;f%RYe#d(oQx$u5viG$VOY>3r z1>QH5+vk8i8DH)FRO!6~tOwXLN@2i2=3%w>ocu-sJJPK2UV_V?CjSh_2jBx1PdmW1N&x-R3VB{>;xCh$zE4>+tWq`1&yqUtr3cJRe zEo?_&*LueZo9eKWg-v(ZspwY`F!#>zT_>-0o0DsZK@zm2T zq(916H>$a28akfQ+C4`J$832qd;d&seHe+Z#s zX0zZghmz*cL%#y|SBKL5UqkQ0cYGLO%`lsnZ^V}NOdEE!S=zHF;F6w2fHBiOjPzFz zOM9u*ZJ=D*bN8@XZ)wlHg5ME*RPb@ZCk3Ad4C!AUHWl=*3%)7%uAmuC_oQH*;6Om^ z7aUGW?yT=U1s4vlh5I4H$<@~3&qdfbhY`LmI8ZL{>ig=^ zbgz@k4fsx(FOR+e@OHtk2;MDtkKhA>-yi)c&}s}!G&@-7jRF(Lxx{a z#d*l5KZa%W*D)-ww*@m}`OQ)bb!Nuc?;)Olj*X!$xAeap$579XBjsPmv6p1E>tEyc z$F~`OFyN%|?AzGy-LNS*X66arGvRx1|JOMB{%Znb@OJwMi`Z^_T& zJE}!@`IC}Md+rzfp5P|Ip9}s*@Q;G80*3N`192|xc}MVlL2n1Tn*7`GS`M#>_Q4OiCuqPj^@vOBmMKnEBlf z%;uLxSH2E|RFKf6d7URwMazHip|?Zsc>oAO`M^Qv49_t8p0ZW92jCDxIm#0bA9 zxJmHmg1-^`qu{H66^V@o{X2+rY0vwD-VXfE2@Vn*DL6r}U2wACbiuiT^92_R-miEL z)c0Y6D+P}iTrGH-;CjLH1uq4p#5w?HwNpy_wtpPo`?pgj7q=gT@Bd8tG+-L{D&icE z;0`<91ea-oyY09E-}83-65v5QGSmrzXA54r4a9fIEy{4wI0Y<`CrLYXYw z>2^q9r(uLk^t}`?^j)#j2Dq;g>=wLG@Cw1t2yO(7ncq()pMMg3LGbT_?@j&_d~2uB zw?%OD6mq-6l)scy>6!8;q;kICC4l|K_Em+o`tyS+Z-M4<#IvO54~p&0DgTCxHrFe8tJ?*?w=-q6-!!@$IE}s+050jdcN#<8 zwDV1H`PH-yfG3sz`C*&f|-U}kAg zr(loZWr8;f-XVA&piOrd^X{(K!M5M!6TYwS`}O@j!T1ciZ_;;8-@noK0DZrz?{&&Va3^V@4a`J~NoRC4iMy=237`X=TD(G_;P-vNb7Yd$%uiu|0uPXN-nq z?pB=d3ewWHn&fVT0|iF{=FPsl{|&LN-u(j{Ej(lQt1+v6e(E~F^YneG;HP(o_F|?c zkxQ8ka=96HHD&J5_XC38-#v>9ByAi0`0iP>=9>l26TDRLg%sU4==%Y|n|-=mIDrr` z0QO8F+<6A!lXCe3;$PbHH^HrdF>~RpKjmWP@>zcYymeMK*J{2!YihdHJT>cOd_Onq zuW+}TW3A#_vu;HlT)U@qY)`iD*9hJs_!YtX0Q2UFJ@>9@HCNB37Hyb)1-|c_eQnLs zo6*L=;L>VtoAV6lAH;XeyfWt&>`u1Qcw^3Mh~aI) zt$;C;+>4suycapK-{z@MV&9CNPSzoD}KdSG)ZtgmOb#vB$-gR>p+-EMJURlkw za$*ZyoB>h@rFn<7394FWT7&FBKDQC(mtb@BA_-=k_&mMqQ^Cz2+ zA6PRGz4`;&pxbwY9wmMt``)%aT5u41?}r}5e*OsuQ9h?0#Fp-esiz~99cS6G)$0eb zKQMUdJ#Zhrlu~LFoGiFI;AC^y(#Hl8z66@Sbu)8tqOsKsKlo*&vd_Vk|NaM$Y7A@5 z;RiE!#{%ZfuMfTz@GpQdbMP{z_0%l(E)H9IZzJK)8+S3QmOh0+|8`S(IJ)d1h z_~m8KA!^@1@-5o6@P7-Y`(anxf$cr z6+@b7&*{E&VFz4xJCY@P%#lOzT{@C2=39#wH81Ho8}3VbJ_VRJ&m2kH__rf30!?fs z>1zdTFX&kRvgS}9-tjMLUfT1Ml@}qE*H%8-JlQ0V`kmnGfWwdaC*a;ktuN61%Ybxg zjD4Z|B6WDpe9?c%ryf@|xZgSY#=J~+> z>9F&gm!PGt9nCl&&0gDlFtD)>yQTREV3RBsBQI&Qv#=Mk%tP8NbQtrHHp?s)W8O37 zHit3q8FT3vrtm_H`OBLBj3xF+?2hK6v7hOral{^teY^QY>;Ze+VGkpJwHSL?%AYlt zfDIjQvFG52$x{72l6a{~zeE)|O|1t#H_m@GF?p9X1Dk1#_OTN3#dDoPo=DZgtq2|Ht0D z$5mCdjo&kCX7*m2jey8j@PMd@sAzZwMa45JnWh$+2UJv4Jm!fcgG5r((lW!slG4)B zGBeY%(jwB*QZv#!OHJd}G_$f&v-(}vHN#^2cz3_u&-=XZ=l93M=d&;7JJ&VW9M@X2 z)~rK~13*U&Evs=B)^9HvdaTApplh1=ni>Htg4yt>5w`9cNEg8dH6dcyn>E>IL?sN{ zvnD%f2-~wJ%b>Ab!k?}2Gs8Ow@vlT}tx+GIhWiKU3aFJLSx7U~71(LvJ{HOFp&_Kn z;SoTs4c!mAx-8YuW1y?c(hO|?T@;&UXb0$`SdO8S;gP%^TWRQ0cmtrdhFC;4tIu{A z3X3=ZRAMMLqA_p4jvGpfxCQ8}q5hB#24Hht&asd#ngtT&+lwOF@`fzh(BlyufZ~Zt zsm)?oA(3vg7?y+&-NV+1?GnQ>#O4x}@U1m^@mMBXk|lpP;$FA`G@U4q z9gcweiC9r9t-BmCfH!5AiSk%LP1McATmP7DYp~R0cc|q9-8MtF)`|eyZD?Grc|49C zH8j0eF3<%-IkgISGbZT{$pU*xttCJqh6+K~oL`yK*DB&ISUB8oi({~~)-${%8%v~X)SBgMoo85WAACJ| zlcDjoBY-YxOZbL0x7xtM7Wkd51IJ9a0L?xS{WGLhb6wqtXN3heMY z?Z9%mq55@TU4%WM)6w27fvq*V33d8g32cXT(*SX7r zUkJ{(ZrJ?3#=~ephK&z zuB>(^^jYfZ7Mabuvm`@zL>61!*)T(6BG&`WH8-Znb(bcW3g#vm*oG z-l8}|_koubmTPEXsQuli+jkPf}ukK}Q2usn#*VMgc-NiBuy;1j1YZzN(=s4(xv*!%`4(Ud)*A3N) zk|LdbV5nnM85_lp7#bPn5u@1;L@UCFb%<7@u^{kQTIIW_I-t{krRr)_HmfA7UI38j ziP{A)vT`lBPo1dTgXzYwR81VyjbYCi!gOQUCZbcGX7!4#F|340dl|z%Cn{w)A~RsV zi8&yxw#LHwB$95k@hq?x>1-Uy6Ih%f9IX>rsv#V$6IhlZ9IX@B5<@szC$d6K3`c7g z+hPbu>twj=mvUe@J}0x2hH!jNVSgCH@i~=wQ?wCTe ze=1t)+;iDXhlaCUmgmqQk;k?XmC{jW0XuF8k1`8b)UD(NjxxhUK8q*PEx3?%?}s|w zf(0y%Nbk!FPyzX@i0WK_lBlHH>reHgiS=iRMULgd`uB<@>>zp3Tik=}GEsp&q0S2N zAiie+{tE0lbyfj|8(Ijur7Ygiqo7;L+7s!rEMvon@VHVWma&=IlICa2SpE&P%Aw(G z8GF{DLE<4+LZn-1IlEv8TWL9q?~f(Z?E)V^(nLq!N7w=)-4Bnj#~d2Y9${NF*;a#W z_9)wH$k*Ti&=Df-b0rHLKsk`l$5>q=?ej5qmqWuDyw6yZozlR^RXHFAw0v}$cl(`-CtlYYvPNd z1K0~}x1ncP0!>${e3sk~d(3GN-;q`)jEZNY4n0w?tHqy|8F?sSsHrf!L(SF3{8d@2%NPff$ z4Xutj%sys23~i2CET0~L`Mw8H7W$%1)@Bb*eHONvG5G^ zS-^UNmoipp=yuZ4!(-;CR>r(z$r9Q#0xWAdv{`=6qKWW4=QVkZwQzJ1>NZLy| zi@Jg0i1aynImdV zVTN#4@-5rtP`o(LYEP;x*#*{JlkJW5u?uXNq43xUpiDyzW51E#v0OtfW6uLE(FDh% zALT_>M5Ol&-?J-3`Y7`~Yn_Gp>Dpdm%Qewa^b%XAiFb~@Dlf6j$!NKP^^LXE4;ZBR z%fi?&^^-%(V(X}199kJ0t*)|MN>^Y%)i@id(9nyG?*n>96CJCru@`Qj{Y0gFPvfQP z8oQ#2u4i3i;Zrb^QV(9wy2ers;q|QFScW0Ip7k4>LZoYZojs^^bWZs@dxA)hg5TK& zP4+L1ee8F(+YoOO0kq#xU=ttvgPk!{6Lf#DONL@W_b0q&4NF#Fw*uXtEX)w@%NdU| zg!^*F6Nq%LaK4gAmy`3Q)6k1P{=qT<{N=KhQJtDRsx1CA>2#^x`~_`E$6Ghw<(CdF zoSSr$niMIUf8v+U!_R86A8AsoJe*BO+X8!Cljnf~4Q+37m<8}?L+>{!1KMKf26CJa#7Lpj#=JAJjynHH4orI-FgE@Y=J;k`HQ%w1r5w89XsETbI)tdr^UthVczVC9vfLyTW)Dog%G* zEhpUNN*M%@_1ns@BKVXSMiA(&-kg%`@hq zvcP^h&IeD@1O ze>Bvh8C>nd--ug&o+ar zy}X zQ|?2`W94Akm>(xv!K~&fvN6AIbhVpjxtj0`x!ST>bGS~+)9**hXQ@Q73$$)X^BM3( zzp#axrZ%7JYQ~EUEo^?D>lU6_fI8jp@$f)8Qa)T|KEUGn%Eg-2gO?V3+Y(JLH7{_r z;@1uBYz|jSdC^j>D}mhG@Z4pZ4uP%>@BXl+i_IT&wdIemK+cTQ?rE5`C8NgOEcv?s|-Jp#4O59;S)fvpbJ7gzed#Cm6!^ z?7{mR!uIUJhZ(~5?8#>u!uIURa}6zT>4WcE7aDr1WdzVVLwHn6;kyjsQ7whVnw5;hK#)lB$ z*+dzB?}PqI)wos-+#~r+(v|a7t*%+4_(w##?xXn`ha%W$E{ic?fsLge!)qJDQjg)W zhSs(kz%zKVp;ucqb7$~Any3zA`Cx}4;0eD`M7nbx-8G92(@F#1A?&)Sbn@a45q)g_j#rt#5TtYmQkGgMnD_1!#H zlU<{=58iy0Y$&F61W>A>HlUlyGYs7dx|w{Mp|P#A;SDH@3{7o)0B9vqDfCeT_iTQd zD34{gZs4BFv({nmNR!?7@U?~>1YHh4`dnqn=JS&`&;_D$xOH`odp<`y*us^&O|CnS z|LIspusmM(dDLM~H*??5lQr34Z3gfKJk3y@HqG1%c!r^vHa?cma}2d=69Ke{sGMUC z3*nY4%8w<35^E{|DlUvxjsR~l;D_EmQ=|IN^lwo*Ln^xx#RZ@Sm{QHguKL-X2xK5$KJ!(yEazCVt^AThW$tbK!ZxkLl5OYluW7=Pz0MbD@?gnc=g%0z zlI`HTh)Vbe?c(g6{G6ZV8(eHBFCMgflSdKhQMZeiXdRXFEq>jh68GCY_jR2+mh&CH zmZ*TuYun1+!_V%l(3QF0=a=5pgr)v~x89`*OTCvbB`RR$?UL=i{N!7x)8+h-hrErH z$9`#-Vt>SsyrapJ(7^pMzrIIP9iW5!;Jca{10CjT->dA0BYdYJ?1#^s-rO5I#4hur z&GMKZ!F3{s_9qlu$18~LQF2Iqk&pq;9%J6PpZFpnh@EukM8XVMl{3037ZRr1UpwSV zyw{MReaK>mN_o}9hwU?DDd5h4@WjV$*dM_kQgmXT{FWbv8tJhVXP@V1G}+A)r`s1Q za!`X3GvK+>>yG7m`#V0gq$1rW`x4L8M8~5ad9I;xiHF&bywK3JL?6%=qEgx~{mAzk z%1!*!`jH2|k3LJ;1CZ_~9!;c=hClHvqE+^ziCf`m>ZOLB0s4h+GV~JA6@JiA3D7lu z+0f@e*Lhqi=CH~>4fF?3(Zqg8++{Os7m=Q`TUOLwvV{8t_S=@#k4PVjg*DTmGI$&I zYKK09=e0j_=(w${YYr{5TvpsZ^ojQgoUz?jDv`cVz_v0p!F>Y9;c4n=4xP6>)-Gd- zE3aPbxFKA5^;*{rjfuQ$d#%V1F^5u5R^)GXpp~o%?h_E6AnSQUxbhlo?Kgz?2?SeF zA5l8KFmeXyG7UWh=|Ze6hE{>ks#f>?+Hy@~M^?>RWC+(`!z}xN&K=ibeO7HlxDM;H z;x)m20s$VMm11-;W9*6`G@&Nx(Ng8p1mRVy(bKI(NJ?ps|Hv=rOn#pdE9F z?ggkMT$^ZYHKug9ivOA2*y>M&_X4zIO{|%k=w5&()`x~LT@&jFk-it8iFJWUdud|* zNrbEa$L*$8@L?(o5I&0^rHNMmn_J0-a11uL(hcDlY;NTm!ZFy~ddd)v!CS0Nnqc)` zcv@H`hHwnFw2m0UQP}VBe9rRxS>tq#aV%QR$tW74}n8NnbAC$*PT9p3Pav1%Kd*Y*w1 zSS!=fz2_NkqI!_a|5PZQ@+L=kX8iDv0ij&ZNNP1 zZHG1m%(wOv>D99PtmrekWWgO@4al>Si1a;zdDbvPbvo{J}T|bKSmiSRa?+1R=%=?i;zb8uZu^)N7pE$G}ayaBi;oeXEDAN0x zA2swI^`mCq;}uk;sB<vr^B%%!~lmp zUMZ#-!m;EM+Z+n_+JgP8(`9##^ahCj4mI>v5gQz8=B+BeF@$3&Oz>ZHy1lU;uTMl7 z!m(6CWH=P=jSyQLiuBeJ>{p#GAGWwik>*e{Z+-EYAskB$#VZbZyfNaSAskDwBJ7Ix zvK(5eiAZ-S(i0M<|JC(7yrgPL_F@N8!9$wvZK3Y zv!SBIP}^DG?jCC(Ze(yb%VWg_i!n7EU1r#**@EKTHdINYg9Ivafs7t0Mj z2|h=N4Td&=&kW z*l4lWkmwF80OAOd_BlrMq?;dfn`H=i6C%_|ukK`sMOsHWWQetfFoz5{R_glYboa5b zqQuZcki%GU(9l}YjT2`Ly#l&%;xduWeZ2TcRMsd{9Mxo>hIE+%-+_ncN9Q43rnpX| z(@hXURi>LLyf;vNB0VN1igcn<7(G|K6UAIZzjprvsMt_I4;eU7;5#;;?w&e5d~A|9 zX(+Zw1Q00TuSB)#;SJ0Z7qpId=n)z?MFhGi9q$IZsUiyAY=Cbe9nhn0;B>Lb(2^ca z1Me0obi>F>_C$}ifwM&sk>38YMLCf!b+))dRO;E>Bb#N55V(B=OZIM$13*|3U6y=y zkEl&L*is?)95KzId^TU?66wCp6^n?<=~ z3m-hAS&=SZG$GRI3PejkU4iK3r&}a$^V2O7BmHzs#CSj55|QJlTPpJXbW6o*KixxO z9g(ilLr%MRd)~_)5=rnxY(+UA7W;{G>#h*TjSekWh|5H}4v&cIe(4?&Zg>j5Vvo5} z1QTIf=d+appOCN6trBs5x>cf=pRQ2!_tO=MHGaA$#0Edz6XH103RbV@fWRUV08gn` z)`~cz!y2s>z5R5>Vt`+|Vlm23_pHeB(>*J8`RVWtviMi3x7L#svbBz$8{8yv3}IO|Rn!ma zepld2;w2~DaCn#QZfyzM`(1%s#APDA6~7{~!YX_06_Mjm1bams)MSVB^0BSrtf81* z5kQxTN_bMQYk{wdOFpVCm28_xtF8%4woSZ2RKWW8;#IbbgAUnMUKc4fDs$f{25F)z z>pMl3AzbO*Ddrl&mBKf~aznUM_=Z#Wsl9@$yy?*VUcM^3L=jn*bJV>hb{j(7+v2MB zLbD5aUsQNyS>6$WnrP4dj)*pdd-iukJW(mN=Wfx@FWnw7%ulyRWc%sf75RR;cg03O z-Fsq})=>+-Cw3dc7JN^HMqtVGheITAA(#OrcVv{BtNAg}#Vsx1MUelf>>cd_&t9&Su=q4~dBKM0e4jo|oMRYA{ zK|8Luj~x(6hT8Rx07@~`wRblASfm>o+WP=dmZ2G-`$Xg$S_ZmL#Bw5C&V!%;l?6COMp#$u&IH}1V+{ed06;}+6>JtGJ9aZV&h`8JUNpBDMHfj7TRkQkJ z1eFPQbY%|5L>N&yN8K?os3Gd|*!_K`1RWRG4L#H+JLrU%9HVtF_sI|XT0B9d+w2>$ zTNC@H&tpN~2-b*l0D2;*T(pkW^i!YWptB;wp$$Rj#C4)P_G_OFLEnmLjmgpu?z<)E zym&wpU12>h)){KhcRT2=5$XDUS5ZG&k8?;h>KkWQ($)^}H49-k!5r}E(T{>Iinc_$ z4&RGm4wbR*MV>=Pf-Z?y9r_~Z2l2H-%d8*a)0*fLSA|Xo{Ullw=~bc2B2^Qt3VjiD zS)@7iZP3qRow39#^1q4_LwH60S8>MBn8=@keig1b%mG)0t_58Yv6^62$O^tD9yWy6 zp??$G4B@KKZ^CXy>0njJ6a1U#Z|EUNcU=@3S_M9T7jezC<(kNl;6KGQLwJ3j$xE8( z=}|7_ExIgteV)s3O|U9dBbdv0qr>a-T&5br>+@XhHI|nn>jYbJ5ZuHEHR6{eql1Oq z?@*Z~WmXHV!&Mh6VmiGlvjt3ttYgCSfM3X!FTa8;(?qL6)#X-0n6A3qMWk1Ss>>rp+Dmo$ zPa<3u`XZ=?{MDgvgTkfVnp&4ug=)e#1vTLqtSM6r;TWtbGY#PwtSJi&;TWtXS89S4 z4lB5h+++yHV5Hn-2uEF{JZ=a_U0r$25RSSi>25>0GaPmGWtbrxbq!>+CR!DWmI;P% z)J4lwV~L|KT4os?j=E^M*bt7oXjy11anv=GTO5iGj*)wbaO;n=8_Bbp>@ktuf@5V$ zTP#_D-Mnv~;Kp*fCa7%)P;5KWQK_5AMMQWUgSQLFBBD}y^GBTAW(be=aq?|V9QRAj z=s!&fm+ZrrLT|0%hrbO=^Fu* ztchWME#x{wm|sh|he+4Gr947Z&hZZDRx&D4_sY|Ki>=lbBU$b2J36?vY(+X8XK)9t zOeQMlsB0sq6X}*{D~q%jPifx?!R_QWLx=iK1=?-scwboKlSd7m?|T5~jG=3N+p$C$ z-CozPO6u(3M44o$R%#AViXnVsL3^2Q2;W%HUS?^cCssPh3r2^}(I(0M9mpp=v63Wr z7{Vu3I?C`Qt-~i)I?7y!;zcKURulDYX9=(V$1R-WT_2t0T!(^KH+jhr-u2O4=5#{K zau2R>^pGowN_gYcAl5@hCu=Y5QUh2|dEC$!2@8UIN>3NmmGIQm47;~%>`)N9RdylL z$G?8^b|UN*xW|)vtm3NJZHDlw*v8-i4uvPa5RUM87 z4|8Y(=qd?E@^DA@@ePD`-#EG|pQmQC5fzqI%2N**ih>&boO&X7B0|l`)@sNjg^a_J)_`$u+V-dg2&2YLoq<( z{lKT%!$1>dBv8d1dXkKHsBXw4xrj*biL&Hc zL)c?ka+4wKhsmX|juN%ZBf|95M9vZ3lo(8v5e4 z3BeD@^c0=@ncMn?JRs*9`sKFvKE3&WmXEcY71o?ar? z_R%`*=_RszUrpH4OJu$wZ0iT*Wug_#?mr;pK^dQlmMd6z{~;mE#%Ad84 zd_F4!2U6XEBG|Jso=D&8w@#)Q!utT%$)%3v)Zq2)~XO*4TuOEz57{DE&*eMxQ@q3KD`y&_kR)U*+FTV=>7P1^?UtNNN;IsqwgzImBGL+WY~azVJ7gA79=kH|tExL?^dz0mJ?NiR-;~P@)fjZK>RYtER~(sl8^R-V zJMX&=g(v<|wZtJjGVi@1-9AT$={|A@(;aXK(;d1Y-C;+E>5e#r>B=0!bpMdMCu1G- z)$A|iCq#Pw`K3Hcq_6gVDfdsQwER+rO-0g{CuD6R?d62r<)=F(OZ;@FWXiP4bf;y1 zqEd#}^-s&k4B>VCGjctV_E|2s`lUN7cM<85os|jGD}A1o$wWHcS-IR#_pL1S(|s$O z&!|jyK_(DspBH2yk@j*y&b+(Q@}kTn(lfG)GM`9WUX+*oEHB9`e!5FCd1j@TA7u)W zzOwhD%rt~o_I{Gj`B`3;FWo>p9g1L=<@*k8mOsnGL^v;hP5vrR60L&IL4<@}mDe4L z2>ngYorPu5_k;Z*^NDng{*XztQMU@Ncs30EL#}ivE|jTthDHx+9crnlIofjSpiZGu z6%nmq^9S_|RZ7l9-3nF+-Wts=6~QjaB%f*|~rsy%~(t5nj*gHl5S zR5V#?FM+DNA@ov3b-t(4OOT2o(lrWFDMUJ5kjgZK>4H_UU%C*r$>=cm5OvTH=3Z3= z&chtEmuf1`5PAtyV~KPfd}^AXrB5yQv#hQ@^0Ta=KD~jyaVUb-P=7eo%pI<3=TQCZ z3xj+tLbWzz4UPcnq>1+4HC3u6)@1O&(3&dxUP=cvG_;m#O^>&%V9A3=ht^h$h|1~Q zDN^xoSF_HfW zsIN9?g0t(a&<1L^p~ZvW4~VYl_bO;vNm-HM-iB(!{pdwsL2jhBICN1oQhPPo_#T&7 zbAS$)->FvfUZ~=NLwO0(z32m(646PgNV~tgBLtCId8>=Cj=uI3=R3=dg z`#k0VYoeAK9lm>`se01TiJ1FCo2nNbdLT4Tz2y*`zpH~pI6@u^jaMQ0rd{AoF)dZB zA$(IzOEt*Qr-QRuE0sl5$}opkYPUlVgtk`pLaGtyB3L_>W(eOOlAtCK>HHE@u48$B zXnS?Vp$9@csLX;&FP+p`q5`;Tv|e^r>;YZQZw40v1!{siz;mA}M-x0z{8VTcmAi;6 z+4aHChjvv_i#56KSgN|J%ZBi(QCBr+iS{`rax+-&FjVD^!>pUSY$&V|Qv8ExsrORd zR1(oDyWbsqLc6JfMCEY3^{mxRrD>w~^Yu_!hVX4@JyfnCyw=r2tu*QOM|wmL^&*kp zPxMf)6Y2bVs1hQ~?{H`j^@T}?`SnmIHBo-O)MZ1MUoT}Z#Zs4hFuz`^Hqj}LR||Wo zR$2#FbdQGiQXLFoyYyDw4K0lP)9S6#4DFBnDzuN9YG_TQ6n)fOO>~{MuUcvdubA~! zYYk1k<8)|WwZqU{qJxIUMEa`qRi_PQL0MAOc_Q5s{nW2SdVkhW)mlb92L1kfXg@Vb zll?IC*Z`Gf==xp||ch0Q5GI-fIj}XNcfE zO0X{&q~t@Gd#R24g25_-r~t0X!84)is3B~@G!^wQS}tI*cLr8VQ|*a#9nw^qCfN6c zf^LJMPIrb^8=~yx)MK<#KU6(Oq{}i?Z6nfU8LGZEgk`x)T_)0H8Ln!tpjM*ujuEOm z(E^s;sbRGdYB7->StHd-BHh*_m3#!#t+MaFb56C9s+OU}cg_QfHuN;;(&2Li+Hy1K z(p7guMV;qV8>KQe!55^9)F@TxP;Rx+>bSAo1C|-;iqQqMFH#vQ_EGZ50@~+R8>_N3 z*`I>tc(usr_JYsxYKKF))iTv}q804TJB!prm9P@MtY9AiO;R(7u(q4*EVZ1dzz$41 z%%-RfhH9kwfOZqDVhz%kR-2;E7>ZAO1V}!nOO}|ny4qB=mPntkOrxVkF1%~5ciL0c zrm5dZr(1W9vRCO=>UYPB)#j)uBD~ICY|T-vHPLnUIjWZ-yv{yHr5elA-O)1L5S}~D zQ8NvVPkRM?K0u`VZ;pDDs3P~ZM7Y=33zj=fI-UD|O(ypfhIH;<6IJ-UNL1nTI#DUZ z`|IYY;K!-0=?#^0RV^Yt%IB&Cha%WqHHfI3<5O?hYPmz3WschKPz0N=>_YUJXU|E? zX7{O7P0)VkeXo+DeEaDtWgA8p`tXgotGPtw{D;JzVXM_?BHb%bs!KP}u=N$?3}8>H84g7N6>6e;4~ojkQpq5i#6!=6^@4%t=Ks-v2y4$r7F zn&?i1XVi5=c%9)HWp5y#^vv?JD#{SviSVpyqKUk$Q^^ixg|1V3iS)U}dKJ4-m+T0% z{PQZE2;Qs?`|Ib`d_%a8+@O{k%Y~8fRIS=Xly4u0{(DiCXiK{9{zaAb0{T3~zaR2d z=w`LpQ0<{oY*vMax(@x*dP!|3Dy4TGy{z6dx`{)NhQ6#0YVs@_3h$^>XAHeL)K}#d zRr5v4!E+icx2jk}-n&kRZc{0S+7M+L8h%$c+ol$3qW9BoQ-wyi6m;9w4x(~;hwyfF z)ac&6s~ElxdBvo|WB+#L+eB?ft-D=CIg}N;UBwaM_WqiDT_q9eW6n-B)DX7k8)}kH zN5{WiDu+n7*;{J0A#Ag^)FwmNW^bzxiAw3{^o}}ibl7I^sPN6YU9ipes5nE|W_who zA#AgE)jC7iW+ke`5Vl!~I%5ditVI2)iQ240*)QoFu+2(UtRZZrQk9~KW=N%KED>(~ z7e%R>t_fDQE{YFS4v~IC-d=T|V;R8qs>h6F=y0U_Y{g;ln)&_1}IKOQiP<`_)OJRrb2UUwiheD~28#juf^9)2*^! zBuX%}k7$sg)59l;{c4(_UrCqpicTj-pqKEinxaO$8n9o*8)`$kUWU4kC{p`Xe?zx{ z?tmI^Cjd&IJ^kJTAvKeip{kV-Z5!H6fq4y!DO z)`gX+r4DThJEo3r)9Jn%@p{;o>arngK-l6!7+GME1$RlCp>OCSHAI{*d7o1ZeuVcCu?C$hSVdvBqL%HeK!Y-)7 z9a?vPAL;vErS8-;t4|f*59%n9p7Z^r&JgMC?tFp?&FfeOFWw z(E|1{=&q{cn(Qyr8~U!Q%Z9#BZwkbAQK{+a?Q1HW=oE)nhgjECJQ3EmqwkuUrpd+` z*>$zZQ14MlUpSUMeAm?lBK>ZdKUC6Nm;-vb-S>y;PgDSN_94DMRqMA=r?(a6N+w#x zibvh;W3J41P`8S`J}Sp2T#JZSu!E!S_bHcqH|lhoxm^)NdT!%(C1|p{jef-EcJ((j zaC9NiFhlrMnC+TrXv}E%-h(UG(6rG$=5ZAox({?7*E5FjEk^;aO+@+{px2eO2g{;o zU0&A)q803+(NFsVU7%n%|9oil24Ap4g`;2f`5am|dWWyNYsp|I-Fu0n^}RgZD)a;S6lMy}%yrBrY1x@HKU?QH52@9X^DB&zCA5$I|;^r|P$ z)zHw#VA;&o%Aq2ljt;%*Y3@ofG_S+J>bJNu9Gc|0#g*gG3{SjkrJ>1f2Uc(4+Tze8 zPYc&xhh}(Mx=tE8)nQ2WRxY?<0Qw!Cqis8+dTUpdA$-oXjVr;?P4cvL^>=h{c-pzL z9Nin9MAsrm_nxPNYn`Ke&(qPh+Ymly+SzrKXa#FFW>odguIq*p#!Rf9>`M3m%d&#a zanGvW#noREoj-JSWfJL;)zvkVXchaZPm1j7+F)qFm<83lxpo*@6IrBsxIQqH9T}~9 zx;`V)UV6GtYMniJ%p}p%<=U%TLR&@|8aZZh^`5Sth9-`A7%1J)`{`eMdbt)E+Lykn zdN0?@hSorSDXwjXW{fGSp5hAJhdJond%MDkR>782T)np|-Vkmby<8^xy+&89#j}#^3UXf##&DAt*ww~W8D-}(T~s9M|&-GUU}pJrNtId_;He$dquwfHo7kUesuUr zviFb27WL1%l|5Abr`q1 zijkmgbdEP~-P-SC@nUW!V@Sw#fj$(TSM1Qu-O!^ zJ=`3BbBup0{na@1FOUCTMfY-K7UtdvBbznVo??=1}WG^kdofRt=Lw|MSJ)w|2KQSImdrrFMkhuo7E%XKi%i+k>=m#{-Y7Y z@b&r0D4!yE5TwP9`Gxru)P|9aBH0wA#adHXk70j5qewfQwEngDPs8RoH5GIJ_i44I zE{V3(^}R@Gbsu$_hJLivTgnKE(b}8$MS9Pvz4`A&U#3(jEvEOYINmsWgJSlP_8%nu zJ^1_49=;+Q?MH{pDdq>icpal{bi99z4&U4|{w47bW7(k0nQ z@elv?NUJduJ^%Oo==SmNDeWzheCkqRxS}MLVZl%^ zGA!sACmC8o+mh5})7vllvDih37wigYD`PnG&cakxNCtz1qv!u<_=VnY4QR=q>BNhApP^ z(%Y8~|6Lo4>HVQjtHb{_Eoc7uYAwo&ZPq`m{ph`re^|FniM5)?IIX=uNO% z5F_b)Q_+^_GFzg*O$^yIy(ulmbEc*L98Z_rf6nZ$Jx{4FljL*IgPWw@Gw6MV-W%W? z%wk^B>TvXb2@BTvU&ct*oZ?%7w3wdDX+Qs)%m1A%rbnh8Ise;7|9AG$|3CfWzrWJ6 zFTGDoqAl8gR-nfWN{eO!uqUT|yPgU3Ap1%i&h+T=_dk^O4|-3f!}`kDzmL~8xL1L% zuKRh=$0Pq^)6L<(iutQ}f1ldsX3Lvxutt_S_uo(L;2)#I7yaV(u|Rv)TK^dTc%9eH z-u&bLXTvvpyE#Ue=kLek%*0|p`?Y{h`}aNg=jh)rH@B7csm~B~xZPYFIoeW({k?T2 zt)9c&d=7OhY4Hq&Gykym=3k4O>yqY|@6F}(FT>52H{1K$_@{-BP(s`OgJu^P&)Hwa z;5AIa{B7_HJvYX{%blDU^vTJyWm4%F-AYT9q%FFjWE-cPSs;dW#(9sa95sy-{%Td@wKtQdRP+7)vc?f=}pl`(pS2v=0~ zYE*@#?xUalEOpwyZ-298mHCzVR;946slM){*GcvIuYcITE|s;bxEA5B#Z_I4MSy3) z>iFfQORi<5hl=*mF*tjvSk3<{n|?R>^dF7-O2~f}!`YMI(=yjuG0fRElBE>?F-XBa z2PxTUkcwRb>0(zwy4jx~Va`U^X+8I07<2!Bx}qBbme5LM?;pm!nZ=q@yxt=8816{+ zI;^k7r9zA_9!W*f@&Ob7qtln@%x#Bn!w=ujQ?z7`^wv>xUNGNGtgN zdhX5Hzn^tKOWypiV*OQb{%adOu5KI~=%FIUe`NmsyeiA^pZM2Xu9m)B>|ed*Mnl+Q z@f71fw#z8S%&~Qtq$>~YaX%wiH3&=7I~Ze8Ohtc1{e|TKiXRD5uL8h6Fc0qsm<%yD zhILK#3f;}u^lpwhOP>9&`{@?eXYP13w`eu?Uv2L?FTGXj?M}Cb-U@KFi?g8n(L)4C zJ-4awqxWyo5HDCW(qh;?tm`mvE#+C6E*Pkn6{*|R33EGbiYd@9o z6@K&#AGHKfFeWm*)4p(j+6 zfh>g&g5Pk68v*`CK-v+Ias>Dr1^z~{96p9k7IQ)NtWmr$KnbyXU%KaKk=Wnnx)?4fX{4QDhz~=$@9faSf;I|BZN8xu2 ze*a*@#6RHw7x4QM(w+hTXTbkAY%u()!p{e-5CUJ@9s<8Q>^t~<4_{FHkqu`*LHy59 zzn{VOXR!SlY<~g%1^5@>Ux0sS!}y=jeijd5k~e1c;N4?qE%=&YBf}>gH!}Q!Q9XulHLJ()iOb#=J~uRgV~tPjTys^MXsApVqf zZ0w{Or>qkoSA%64TTN}Un&A_or`RuJABK3l?&CFn0B;fOs?~1XF-VJF0OSH=j#>Bw zY%!ZW4zz6RxN6}Zibrn&><~Sfe2ASKcUL&(o8vpgz8yCz{22RfTmU=9tnmTt9IHKk zYWQl?&R3(dAtrA8VMv=aepdK7wj(@(?E!CTVG&~Z_@1GM*kp(~#Ih*urSJy)9DBPK z`dKo5UwC72Yb|&(T1>B%%j=0HwU&TzK7F@+Syi9Dg;ui(r|5gcsA(%U#5Ym?G61>Ik*tTAufXMI7Si zeYHr|j~GBLP>-jXfwa@bcTsC2ri2GhD|+VFPG+v7x~SpnYoM5zua!_z%jrt1M>tqG_kf&B;Rj>#AdG%`vz0N6 zAiO%}FoZY9EQj#cm_m^F)Oc@bfi)2RCT0om&3=o?h8TAvlwpn5LwsG5ag7S)4^;Od zI$x0Rb}*2eCCb<2IdR{l6nRxV+~LKVSH*@&vuk@Kv|;TQ9G@|u-l^SKo||;CcAhw$ z_$`EgpLD7AYI^a<+5>D4Sw@JTvewrb0R9)-L!@u= z);gnP%gJxlnINrt_&%yTChx8@U8aMaAP0=eW)t|t$wjVgiDj6;UrH>ilP9ruE5I8( zrO2^;j`5GPegJK9n_ugk6WNnfpdA*1#QJ(7uZkBZ2S*;WwoNW@<;iy@H-d0(B5o1i zOzr~VrzZ9U893$6NO%X-lm*pS$kZv5M4lWvr3l97=P+_6@Oe`XLrET-vN>`Bf0Dw_ zQTP>-yC~)Z3Lm8KF$$lbvJLF7QVgH^280uQAA{T+|7t)nv;d4QS$`_NF9^RzTr4|H z{W0*ZZqC>PJA&n$CoEhPrb8lHsqdNw>OWNwpV5Im}vzN({x%Hs|WFm z?QGt1+OoQ<8NStYH607Gd5>vZ!KQiBH$iUgupcD$xJThPiK{By?y4%>?jj)Oblp)j zCi8gFw4PC;#Hv=w5yjL;#r%(H+3;?M1m6So8mqAB_|}Iy)A4N&G1DKahc+ugo=z+R z*&MW|*y!oORZg+HA)LoiwouPZuU0=%l|cBI^-yG&$UJ^zde5jX3biYE*7yeXyC^&s z>=D+CqUy!`bMQ7mu{NFS?~!pcQtA&-14s7*dE1P^^+&0@W*m^C6xL+|lq!HtH}b(5 z@YZ=ql~sR&T0dhB$n7)c*UwXU?8s9e%~%LAWivL^U(HX=*jj%vrCP!NoZ(}OsYZ)c z)w|)irkdQnxBhC-F18n|+wcAaEJu)>2(sA3FS)x6;#b{$fNi9hjnEEX)_;W`y8FBO z8~Mq*f2zMzeKGY9kZU6UsK1BfQFsr>qwpTyZ04WV9*)Q2J@DSyKdn(Lf9A#pS6SiA z_Zs9;FC4SvtQ5J2p3~d|{$cA=t!531-luxax-0sSHDJ~NzDJFjb(rl_3n%+P&cLwP zK5Ko=Q&gUP;QTXk-Gh72)$!#t-s>*+x zJEa!x75`{7$|bX9>^WX78}^EzjgGy_Zpl6jvj{BDRn~d-_t0y-vu}?*#qP)+z)!I; z*}1V3T&E@-1zDPXI(7y1-9B+B8%92J-E(K-Jsij0YMPa;rkUPqKJp$IZ+!AS<6W!y zJ@>R}lBaM+x0*k8PlqO}`AhcjJXhm+FjG<~^G-Hd;kpCDi}|d1 z{{+i|dD(0=FPsNkkbG|5MX-N=-cL%c6L3gXO_WVfvERVv6m#dGjLGTK^pL{v zA=QRr`sLgOF+(7{LOzg_B6qrqbGA3#>3TH>-c4+M(=|DQ)0}MreJxIHe=Jnuj$fW;IDf;DgR@iI7DhI^%J$dxH2cA|V1BjwKe!&8zqDBw z@#y?N!mFyu1YE3WM3meRoElVlD5(`u3XjDa1b%S*K-Vstad>r`V6+e}GHn;ueat=solg*_wXL#`2O7$5}$nCCz5huD;C3ZOPYJ!Ga#JD7v=Vh%Hyjcyhl6-pP$_0dL#F1 z&kDJy!PlNVekvDBay9oL)vm009^W$d>*o7Ji@a}}N4W7Qa|-6z>%t-|e4ex(l&8uq z_1w`TYu+--wJ@&{$YpsgZ)u_S=C!+}g?mgS>=WGhlqk+2;W!1e$5FTJ5ew#Lf_!lP zRFGHl=G@YP>ea%+QQgAAXE$3|@23}AEiBLdDEFmHagKMtAGf&vAW!l1`(L;v(Rx35 zH_6glT9E%l@N?jnF4mw00dPhtSu>C}YYD%2winJu3*jNKAXdb_1i6-7;WpdCLM$83 z>wF-0u$mxuvAQ64vuKbd@a<3=QZ@&95Wbgbvm<1Gl5?1zzkI@xEC zeJ0swk^MBXpGo#}Eo_GztCg}@u9W~X-|7f*k<}ICQh1Y&&6ZoKAXi!gKo(k9-y-V{ z2(Pv70=dpg2f4u-3v!b+5#$zYD#&ftOpq6>b0C?(T1bJlum#p4P+%=W1lA%rwHM?i@B?*G)gb< z1#+glKghZ6Awe)E-Pl$oZfvV*HkM?j{b&ei?R6k??AJi%+8=|=w~v8bWPb~Csf}e= zZlj--_HPhVXb*vKku9sjzQx8;t+T5@c!M1Va+BQ{{HOSCycUe}#r!;P9{wKh zCgLNyStw6i7(d2-&;GXV0wd3J8TB57?}|E2Qh3hu8BxN6F%2O6LR2>jkAd(T^~O;6 zJ&@nlJx$@oUdjc&83(xpqFg|-K@}=P@Od6xw?VZhZduf*n-8_`kvvT@z2&C?Rn=V~gb)xy60&vnG)Z?B z0$~r8?&_qZxAc;L5t~YNb-GA(RZ~@+PRk%c#AOs2M;*q$;|MA^;x2y|+z`hZ*AacV z%zF;%45Fh9;|hq(jPLtB=ic8^Rh@1!&YOWxPT$|%@44rm?Jm^>IRD%=%bEH^iMeY9 zKAzHN`_-igl5$fk@(Ukftgk1)6a;0Zp{;s%F-VKeq(8(^@+&&>+Wi24L{uT zMCAKTW-norz$*n_C-Atyy99nt;12=UuQDmZFYJ3{-Wk#Me!?FK93Eu2VL#z34iK)r zn($rM5VpUF@Cyee=Ea0-Um`IA+plBzM*@crG2D&F z_g_=YIX%AD#Qmxn}A9r3aTDS~|LP#j>@_&RcfjvOUZC zm%Vt|b<1+g#+SWu*}EU&zC<-1nCZ{?Go!JbZ!{faNUMu8*bk4!3`hX@V6VjvEjQLez4)m4X15v-q^PB z;Kt0xv5l3DuiW@&8~(*7H|ET%7=ID8g&ucnw!+9;| zCCbWXK%VHW}H+^~2cQ!q`>9I{e z-Sn$X&u)ruUb=b1=Jw4m*<9Rw)8^N1zH{@tHh*aI=Qn?S^Y=IZ%jVy0KC@*}%c_=* zEv+p(S}tz6q9xhV)zaT`W6Phmyrt!ymit>CXnC;ZZ(6?6@@UJGEx&D<)4HT}W9ucY z2U~NkQ?18aU)}op)_Yn%*!t<#ue5%z^_Q)4ww%3X^OnoEv~TI&vVY4>TW;HO`<6Fu zxqHipwtRBS|Jw4{mY;6<`Ie`)Jhvsfb-~t!TbFKKy|oX!LjBl_8i1Dj0QRsx2^;$} zW&zg3Qx}d#j2YTVsNrDD|JQYP%$UFGS`7H9u4RDHZpK{R&6q#yW=w6KyY}%HaQ6d7 z(QYH!jYE>pfgC@@oP(B^VdrNB_D)tJW(|6=340TpvD?#X&cY7P*;uO!%}(UJ$SgIN zAou0i}{&a|1=qvkuz3-QuIw|SH4!RrrK zV-M&WSk4Er2Xw7@D{B5rGi2_?j?%l$A?|9xA{aIwHd%AO8G%J`7}&iY*gaytZ1U#o zX!Q{@4lCfO`8Hbpj(Ms1uDKB&{y#GRU~V$sH!p*Ibc^{X^K$I#{F(VNTKgGV`B&H+ zKR0hTzclYOzcTN_KF&Snx8|>4{lCZj4m(ZHnfF4rz8^Nj2TVNjK{G${A+sRzVc4`E zH7|(3E{Qwlo`Jvef55lF9 zf5MMsJZ7$lz%GeAZjzB7o9@U@;FbNU>5Kf#^hch6?eQ<>MUf}XP~_+E#QxG8iu~GS zBENwJ@{}3D59^LcerJwF{>{8R^6%!>$bXpIA|~>xNHp^5NMq!6k$B|x$lS;sky9go z0y=y8>=mHAH=px9z_*|C5y1DI^9jI@pYvHjP5taSUqJW;iwPGmJ{_gjEPerCi@?hy zeqixp#5{H`Yx|AB*iweSwfG3)7c6Djo;l+PuaxlCrAHBd!7}Co0joOobv>3 zUB*^Ee$M9r@0L8;huh-p=Qo#+fTq7E@bTqG5dOt-*7Le1mip5swsm*Y=~xf{B`Db5)_UDVM_?x*3gZ=#G^1BfKJ%PViehXnrNa!TIe!k9l4sa9Cil zx7w?ZZ2B%reQp!y;;RC+SKr?BDB}NN(_>!!Z`-&z&K9==exmt>fOl;1j0){pJa~Dm*s9rVyR=~E48P@pWOW4orFJbt@4e(jfahJxKI{;9xxl>w`vqQm*{_gC`yb!+%Tw{|Zn9eMyo_@+bs5W^vFjPc zuieG9wtd&XBdnv|y-P+XdF~dd)c8pWKXh4ao-xW{p4~+po^mDOIRe)TJYV36Q&%Of zMLl0hyan*_-Q;o#uWw^*$J&S`4L>a5zYoMLY-bNO_45+`hQMD7e0=wnry2A0Gdck8 zO)}@tlC1M39a2i*4FXRbf9)RT*Lhbu(fXB!7w%=M*16_|44?NxwsM8QF^Oq8?LnCL zT0=c**$hQvdVY95Qcqb$I6bx0ui?I?UX<#->Hwg&t~7k-RqW?&oo_?@>pI!nJ3EQz zf0+MH#3+R*|It!z6)?ZXTz=Yb5We%Y-vK@v$FT}4t?uYzZAu%OQz^DKe=z6$`&jC0 z`&j=s_uY=#bbVoLm4s^rUUxP7^9osUBl|y%_)|nC{<@ubP;A_A z_2&^kvi}h;^$l0Em5*J+HC0Q!+WOB9GWFSm%(>>p?B|{rv*%+1-|%9_e_Eho;Abyp zi&}Ozr8NIn2Y+z3G4~Gs*)*m51Y(-jilBT(DY)?3os7dkv# zlje-y*K{3X?mzT7K;=#k9%8)8k%umO6!8yT_AKD~%!pHUDjZQPYGH zXP6z0XCUT$z=&CkT)006cn03Re*xlm0!E?RpM})*fM=LX8qY@j#efm$`wNk}0q_)q zN9&M!8DJDPz#^oc2Y8C6H9izSHP3SdP?-08cS5X1-=-)#>q#(2yBy!5x!2~F!~iSqv%l-wh7_&=oij=0!Cq>BoH1G zSVWJauvZ9gz?rcqY?VELH{tY16n4s0fH#{i`aknDo8G+B5+Ys|xfxk1aLi}?A{{!QW;tU;OH1b-+ zH%4wpxIy5lkvkAGPvHE>8xVh*z!yZ`i1@Prqvq_$n*oRgZRBl;Uk4a9>mzSRc!R*^$lZw9D6k{)PK5VF?g88zc{gAx@*d>8D)L^0UkHd7 zVj}NH_-cXI!&;1(8(=F&VX=J};d11Dgi8XC!G6SCM?Q}Dn+3iCmLy(W6L?$XQ;2`1 zz}LdE#OwoN-eFyW1_Zu7@(^O~5cr13UnBlc1imTqHwgcE@-`-2&ek`6lAu1qfP-Jc97OfH-3w`8L8Ihcr9qj0+c~;nA^c*2>1YdL4grD^qFVs(iEabDH+nwc`=S>B zeki&V@WauI0Y4JG6!34Omjiw|x(o0t(FEXEqiv|?Yk=Sw(Int^qI&@UKAJ-O{{{rF zh+c*8V}McfM6?U==g}U(Uq$x;J{|1`d?q>w_}l0Kz-Ob^Aph?Gf%(`$z*y{B#KdDm z2sa9x7fU1NG(gDVSO)OySQc<`>@eVxSPt;q*b%^`u`$49u_E9_u^Uk8V!)`mB31@$ zk4*q3W0Qa#u_?eku^R#R#%=;k#cl?CVeA&bt75kTcExT3?1{nqg5As40Pc&u7O*dN zJ79n84#0uf8_>!iVAR|edn4d0V{Zn0RqRf{SK}NAIDG7_fFF##4e&#;w*!7Sb~oTh zV($dJKXwn`Ct~kLJr4jz@k{aV0emF(Uc`J0FlxRVdq2W|FYx=Z4>p;MW@F0zTX@5AczO`GDVQSOEC#hBJ}# zyA5X{{2hTmz-}{Sal<0Oe`;8Q)W-lZrwvO1|G8l~VxDYRiSWM&{6)hm#Qaj=Qw?hn z{~Lk7Z&-(T)3^>Xk;V-OM*%Tw*nfu1ZQO*IMuBr0TM!c$IJa>N!lyTG1AIZ_`G6}M zFF?*!*q4r)CV{IPFGhGx0 zJ&4&22zqEt0k$_@1(sz@5ip7uwTlSP1&rd&>>B{*#mj)F#U~IyA24bb#wQUz2QX?D z#isz9;x{5@6(Dr)IBkoK@tXmg32f@jC$%@wWi(j=vSHv;l(4#ovbTUO;fU_}dYFAt1P1{BDFh z0i&in{!WB@0HNW;??Lz)f!D>~jhG>U>G*pPe+V#YGV%8Uj>O*&n2Uc9uo(X^;CTFg zz{&VW0guH$4tQhy0l+_se+uxX_-6o*#~%c|CH@fL?eV_`d`tXq0Pl%^5%u2-2+cPB zWrRNn2%Z`LD#9NIjGB+d{|@1g14hjQ@rMCF7yl;UL-9ut|9L?0&-k|izYzZ};NRd} zanyV<{yo4i#UBOya{LE?UyuJI@;?lSwHAL2@VoKH5%c$e(1hbZ0sKGlp8|d_{siEo z@h1VlAOAVvlkr~y{%ic#fIp8v1^A2jGl0L0KMVM)_;Y~2j{iI0Z{oiPd@2sb!aNNK z*%yx?{98b*tT~McF8~Cc%$Wmt?wq-ZSqg}?HfJ7S)13K$Yv(Kg+%)G*q;3WTh0Hk% z;Z{IU$ee`;Zxy(0&LYHIHfIUo6?2vX?wYe4urOyO;N+ZDfXC*niQ(KwBnE4?m+0$_3jn{-$U8;?`OSdG<}U|)>HL*|FPpy#@c8^SfG?lF4)7K8 zHvk@;zZCG*^EUzh@%$FR*UiVxck}xBTLAxb{x-lj&F3wkcOd7}=3S`sX>%{?eA?WH zI-fT0L!D2X51`Jc&4*Cu)8->+{b}?6qt2(z$57|f<`by%Y4b_c`Ly{o>U`RK7Ipr+ zx#aXK8~;4FH9wlaUP{4W>X+WbIsN95y?U8`Z!MjnXt$=^>!u9v@`iQI<2Ch|=5 zwvE(RpN-y*zb5ir^iBACWn@$Aiu2%tiJTuhavsY+aa!tXaNfv~(_fEGg?MD_^gln; zi1^~^@51*lrtq#@wBa}kKu?Bi1%HkC$T_><+eWS4e~{Mj8&$`3*NOYm;@W&aKEFEd z&Ly81t&Mw5>f?=~dH6>!2`P}b+em{iz`sS<&s>auOYrYp{9B5DE3v1!+N^>HWHr15 ztKjQc1rNb0_%NE`5om_bq8X{(S)dJ_4)zV>re5Sy11D`1b|#*Vt$L zrTGmk;s3zA{vQ8gk!XZU!D*3sk^7@xUGwo+xdr3CtgARYk6;DQjG&{v+9Zwo)vZ-4i1t*;1}> zxF#hrT zWQAPtkvY;|NmsJrDC7n;X7jt#<*Y$cexjT^nq_9wl`G`N(s>EjK@Q^6`TnUgh}i3l ze)fX^&`JElp`>=CGr2rJWmH~bS9Yve@@CFpvid>)UR6C4mGOy+;0ePC&dT8MxRDggqNad`Nn4F;}RVR6CG1kQ>XI_UuS{B46>o z`^PGNPvm2wGK!hZWzs^*jOxv0j!cZV=lls9$mX%;y%F>S)!B+$&HB}r&!HLG9G^t{yt8XL(SHj=NsIF`;8{5+W6Tt+iY=t>HH`1$J9UtL#wPgk(8 zxq2)g{PruW%IGIxB6eWD{Zd%?{kr}gB2vBi2}~AfhlBOTsIf->_!Xk?1St+RR@*J^n-`8bz~kJM?dPMSc<5Vk}Q>qr8ZJh zN`hYf9l2wmyT0rV6S-1$*rZ65;IsDcfl?YQvBaf|SijyjENIe{umo4v2{R>1hs!24 zP|C3)v?wK$N7MNUVWhGaJznfFUx}{Ec^#{*%Ar+M)eGiNej`0j6-J77I9=&Nnq$>| z+o7h$#vv1QWlA5hywV0(>d2=tf?$du$&mt6q-@pPo2qX|3&ytRFzJwJquFIy>ELu@ z=?X<(-b!b#cRx092(kbYj~pSK;`l;1HdQWObm7)*;mH0RMqO1r1zr?v)_&?APoTGF z3sZ@FK9ty=&E(3IoiaCFBxjp05q;^x;jD`gx(a4d<{FFv#z2CVDO;p#IAcTIUZ__v zRKO|%r)Q^aL}z-cIKg#oqa6x0zSZWU*jJ`fQxDNp6X{8;niO=5vPuZ8HgO_P;Z;8| zHB3fbnW`xzD65Ul6{c^f8@kePZ4p6rO>|ebT*fM>6JHrE4o}-(;J&7ao2Z(EzHA<& zJ}NX?lQ=L6UQ*j#>K7bHP5!}hwp2f%lBqjgDV=R^{n$_a;}NnqsWv&)m!1se-0npr zhSTFUL`D{_R3;oIWj{Mg#WAmC>YJ?`n3uO~yjs0DMmbd49w3J68~W1NxF0oG$yCSc zLbh2TWHcnol=npesqy`p(d<|njBCgBCe?H3dWe@k(fI@1rYhQ#FfW-aSyu`-qQYLYioVdW`X0@iKA;S{Jfs}|k9Fl*hLgF0Wzj7~X~ z3MheKa3%E1iV06XWJ`{9*AarDBo%#Hi{Gk86@jSgJl>d7qA>Y6K`f##i0n*ZLZ?ac zM<#qkG3mImcXqN9jJGBph|7SDrfRtuWZiIaOdGE$wz~)`E*+3s+C7TS?qa2XVtl*^VK(e> zCZEOhWe?}dv}BWoOpzv{H!$NE&p;8&E-^e@LdX16+lMM_m=I42fB8DAGZ7F2V>LT0 zD}lNwEr6^gsvJyjG-tJ5%5B65{|VTNmVfS>$iX7^Oh}ZQfD9}gu8E(@ppe`;7+J8562Ls}w*(2SHCElMU(N>O`rTC^$YK?u^b?XSQ&-GAi0XS#M}A!HCuM z;Ln5KKeysB72(JVIDT8cSk4A!ffZ#-YSlyh!!*rKl{sRqUJT zFd2%6G(+tIJLujqiHSTb%sm))e6|wBdbry+;v$gec6^~_G`(fv$^SPHw zPfW`D{nu(acUF)g&**^N*HbEsLf7wb$mQ<(#a(;KC=vpd!&P_~Va4dum}GGjvpVsdP#;*EA} zC`vth@EMllH6J>*O0oPjttlp(trM(GlLBy{fWnSh&9BG?T(e}3OXXwo_bMYda2 zy=+f*BnCSNoU^k(^`fLAvsf-q$*gorhyx7FGLankl=<>}6Ea!e7t^E;-^n0T#A^L0 z<|3nq;{ZIof`uT6g@KZmUQCz9awsEt__qTN&{6mh3d6J{tPJF*4UP>R5|_HrDzJM9 zh|GF@#hl4#?O(rpV?!g(qrv=8g1RQkmEADQk705YMFD*H1*=9r-7wg74h5{FpbSLi zgN&;tGMrO598v1$lPJwKHU^c79Ku%Re_Qq=CIvMo@!acx~k)tuP>X?k@pmYex<^i$W;3we~eZ5vfXs(<9Y`nVd2s8M8QCJ&7LeZ zb;wPKWK5+=6>_9Fa3vz+5M1ejW(1eevWxknfoO@XS5EK*qM9f}#mho)aR0$YQjSQE z%E(a;J3SFI92}ku))i!m3tLP9@0LbD#va*7zZfC8W#0WS&ZhJ%fDHBotR;+nfB3cu zKSCOC5dV^Z36x%N$iKDa; z!ehWriq(5XMF0l8iIGlmCM+Uz1?<1s@VM77CQquzU#ZhgtCaS8qQjVb^m%4qct({?R~Did$_4>gA$>+bW$V7N*U?&I+EU%|QfCn}{U|r3=`cHitv=2{H)&r%ksLGebIN ztX>Y^)@cpTm{L_0DS2ch7)b?YKZOlQHG7RWL-pDdtV?MjiHQ=_{EF!UWp$I~i_gil z*=XzHlm+1C7auS-v&T*}8klG@v#y?c9r1~?)n&s(sxl6_&fd9?GR3<4a0?)xcQIub z<&J6i30T24606>K)$|Xv5A_TV^bQUT?M-yIcP0&El6`$WeJ-LrG>KutriP~r{4{IL zORJNUBRH;)y>J_gUi!iS(QUm@S6vhZw#RxnAe*&6Lk_GOruu2H-Ch}11H$x9l&~EI zCVqG{1;-5zcEH>^hD#rv*%53*7spMXh=AS2N(Juq;YnG)!;?U1xmbb-g8Bn~HR-hs zrdd*N0W!me%Z*Kp>9@~B#;|FU!?IV6TNYqA3M3GYNQFN+c~HYVHNb@#kI8X1xtCrY z$9!FwF5unE6Z{sRa#qZU{^CR_gV_-$Olx~CeYgO*o6EqhX^(CsdC*1VJdo~x&=Alb z3Xz2RG&VFAXx;U`x|hKo!F2GNVee}jCmL&Gnb%SeGuWW~>43PvMtNaa3|5;G3Z0mJFha&FZS|)|;GD=7#+^vw% z74#0iM>qvX!K~834%67nD@}36)MJcHW%V7ACIY>Yrb6Qjb(Y#S&e^!4_yAri={)LV zHL5115@m}1Y#H7nBjL7mK2J5t?1t+aPJZ|}BqZ|#Av-Kl_^T1}MX-Acnpl4}d!z?i zUk(}_g5)pi3w0|X;QqpDptBFBW9(n8P@q)C`D{yT7i?H6wPDT958DKT9!udwdLM~0 zMI^BUeJ7E*fhQ>V19#)qA!1zB4N@DIU=&qM2X+ujCS`~|QkQ~5z4*he1{<%>9?Bv>XC?(=O{1WlrhZn#M2#=-di(-XJS=^|sgqx#M8x17{ zXz`89VJ@v#qP12DG8P7}&BFx$OG`+NT0(+2H)W3ySbq^1B^IdE=9dLYvnMr&=-dKE zE&g_ukfHA7LOFs*Rc)SdjP{hL?Rv3GCd8^4$lL zHpoHRV5%3KNsr(8?Rrs)CU(V(@;xb91JL2w&R-S)n-*&rECvTasW}LlqR&WW#QSJMY3l9!*@J-{G2X>!jZue1pq_v z<|A~&M0NsZuVwnG)myyNvzz9gCDvYHB8{DEG%fUta+AfHYs$gwwV)%MEZJB9z7F^Ey^r>ajs?oLP zRnbnzAx=zZAqT2)gAxaF`QZ%w@OD$tDi^FPc?>2iri(Sf=m1K4u#{6H#QAOvZy39- zZ6&ywIi)T$=^wn;xgqJh?kVul7df(v4Nec760jYzvLVq6VNx9Sn&KH3`HGG>M^stHt3)GX+jjBJ ztq^ejda1Jrf&`Cnh_I`Onz;44R!frH*Ou1c(6I*tFyZjr<%U^OF$DvzX9TCYG2b-i zdPerboH2XTdC=69#(04P)c3RiRG(214c)*z|8cFr`NZXDeNb}Rir*4odjEtRYm!VZ zEb%xCy%#o20aPr_*S!#gNNLS+OAzXv##&w7kZbKLq_(X;%B;KbA*0Lxr^i2lDCw56x z>JsC7(>zRLMR^%VIqVmxH5q%C(jvo^JZrlo8a!mGi{2oL-{FL zKj{)wWUCFqrjc{@V$*ZJ{R2_foeu*zn5Qb;Hie^HJkFKO>rN4Qn^+iL_h5R<0d#3r zW0^_jA@E6L_@BvR;-!Jlg*~em&-_|1b7)BO!MjQ_l14%?gQXmBl@Yv2YVgBv(Z!-3 zukU^jEZ$k(FQUx@4RX*;{VK2{aHKtJPZF}b9;PMWVmx`wSowhaST2O1vlSPoK{-h! zd01MG*Fg>U>J3GZD)g3sq=(Xoi4bZyi4-rxa%J#P zMhPd`q3MX45yeI#tJ;`w)k#`%u@H%|==k zr|QXBdrE-E@)qv9pA&M%F;*6pqsfT_taT6(rt%QkdM)DUJ_e zixL!F8h~Vja|F()GS2g8IFQs+lG4E(fhb9%Uj`MV3b^8fslgXjGl&+`Gcsa2a6ljr zu?LkN(*oZKMvn_JIMoE*jF%N9h_h$e(jmBH7`_Cp3_!@)6XreF*e zULxNwC;qUuq_V?l=fJZq~d*a(uF=Tb_nc_X zE)ILCbd$;;AvwG{&}Y98`sNpb{^SbyO?u4*nhG@IHPM=pLt=VfS8hq_MH6ew?vaBV zAx@?yl#qk<*eP*Ij3v;1d#c*FK!A?LoOTRd6j{qxEy3~H3es5<;<0#KFXpt3w}1w`XIdsYNw$bq!^K=VlMK_?+L$j z4x~T&>6;7I(P)WI?$uaE#GGF5ZJh2b`v|gAL(f@u*dauG#So~WNa>WgQM_)rVMrx` zsSe;~Pqv~h!x~JJ|8peJ7K9dEoYzU97+q5bfW5P8u?_~izsL(ca$_uQ$;-3%0xh<2 z^D*$PtJ*_7x)4Yd`#TM;l5v(}C=nbAC-wcAM!qz5XG@r>%n|2@z|FIKnzswBlQ)Q{oN->$>RGG^$9K+heF;ZzbO6qn|RTYOTO_hTcLWuH! zr(ZHu5%xR44m{Q!mW3f+Y=w1#Bym#5ZPqo)zfc3q$kEd*bP&~ zX<{DIiAF0(yf|{a>Nr&+s}J;5=K|fjd$Fw8TfuVoLBuxp3TzIKLY$)EShl-i>y@4w z@{$7TJL?3kO0Bj^tDGacY~_H9@#1jpH|x=sEFlcn ziyV=@*t&T26nC6CEpoDhlPm!N>cE5FurP(~oQVqV_+a0T+zrS~OQ5G9S5NURR5wu6 zPgbZoT?W=1j$s~I1FjIWgd)QELrJzhc*R`PaKyiFR`#%z8HKD_)IKn&^@ zf$RDuWkWGiK`2J0oGSrR6BD=k8+uLln2WUY$ZhaeBus!4Cy(KbA#`?bu1Q|>r4%f~ zuISXcTG*9v4D*Bf%VA~b$BI|NsSAYn3ekvkv`E3tlFsLUv=(q54*i@UMw*=5CvA|Owf?=CSr$S;a z`&FEimYk0sTN*I?YU9g8hvn8+AH4TvPy;-IxEKZpOPcrSiT+WZKj4wBawUx+g)`c5 zVSi8CG{_ySXD=zOtCuB ztCQdivh<@9N#_ukyswvX>?Po`_OcgoAl~`vN~h^YZ(p(_b+t)$b`2%>C%XqE)RpY- zPwYubxVNvTH`zCk!ZKi{J)J$f6P-gp2b01yaMEbR-q5f?&KvJIUbsU}{A8W-&Pl5m zU!5O1i8ElTiv*H5iPAE5`SW9xCtxU| z)%zNtW~Ro1bB)k-^qYJRyqj0P$+-~EV}>OhRe|2bo?DjVmF~qccN`{!#URP>ML3_B z@5Zp6<3JkcQstvg3F4!AO*a;-jd({;}VuWL7JfhQ` z#cqptepQstOct+3&;>oNT>!WBuGd4$($3H%(=$iBc!tw7w!eYSRdr0180nsy6*^rx z0!6(0vRaQOfw}6lI=a^u_(VTEeOs53^|Cr8TqBvyl@e!)xL2HqxlT$=0cY{p>O)0b z+8+O)uN>!deGc~}R8;#BigLA4#S(u(i8#SLi2GKSApn^j~m~T@JC%8=Q*LB z(V*m!Ya+JGg194yD(xJd{NwqGP(CI$Ac+1BH5U5Nz0T3UH2| zf|~~2?(?t4>Kw=(pdaaGp)Z}2Yge@?BoSS-x`6BLT7*($nU3Y4ybO2S3$3^(Y0tTF zNhhaEWJ&J=hPH`wbn=1~%Y|d?Wn{O)p}NTFclTYc^I%2miQc8aH3+xm2_ccgaZqOi z`w4mbRD++^I{j-FfeNAH_(lBc;L*s*J#YFZ12~4#sFb5mRVcH;u`hYJqHPpLEtU*t zU6~*PR+Ld~9M)|ehdA&vnu{ggYk{1d4)xCH3e6;^zHWj?u|Npi!J$Hdakw3>X(wDJ zTMM}Ua-!A!&QRC|57iGF5*QIT9_SC_n}HpvJ%fFshz$)S_L#n8cYCrA4+rui(c3GZ z;SVT<649IJOLR#Hid=F}Pv12f-Iwa=gDxf?s@6%6%GD4RE;DdVuMLTsrICF-Jp)>V z>YjwykQ7L?x2FbD`&p@005!0GZ%=2te(ETO+LOBn_h?M2dw?onXE4s@8tjEWnjGrt zX}5jQ5vRKM4Eg=CSZEJKrMmYfF|1^}Di`+3g%r2ZBT3*`8OS~{iA#PybDh42CD=1&je(=T)dZ!4Y78q z66v0Wd?Ft#72LuQ|0#YtM0`%Fq0v%Nv%(4O-FW!2iwAKHPlHYJjDyj~PN00@g@$1{ za)N_Xc(H=&maQGf8T=2ifBa88xPxZAk$8S(?^z`^)=+;1!`hzlZ7k2CLiK(_V%Ma` zv6x{jm%*1ys@&Nex)Co1E*C~^Y;BCPLU^&qdkQ{V^wlD)B!?e+0@r=2ZVN*fesh?^ zI4@3L6m_S7&Wso4m?%n(nsP`~uQ3@poQm9S5~a+AtFpOhW*7a8m+YXXIrT^H^JRD_ zk!Rt{2G4Euz@vv9J%pgTO51QL*)wLKHJm0!Uq^B!=RF{GrEu!}FXm?+ zKgK$x+?y2KrNF*L$*Ry?BW^DPV*$m>^R0n7fg0p4G4A2fg_;byr-8!2R0)1pRj%xZ z!R;y-zhW~VNc45Pup)`hh;&{&-rR?g5sD!aie+B8p(0P2aJ>E(KyiEoXEvvJ5oh$6MltkEVOf~`zIKBCuUy#?)V4?oZ+a%=)QzXxCI-iFDVwB zLN?{?%>#czVstfOPF%O!lbxxqAz1!>1IC4Wdc7c`hdPtp-gi&0d=3=t%St#nD92rR zr`dPAkSPWjg?=e{;?_J4wNCl_yg1v2!><*bRNRk!C2ka9&5*0pKsCvJ+?q`ewe3yx zX{_2KT*W2lVeoKV6mR_4Kzo7kU7btZP>oo-1YjX}3?H#6y8)1%>h zc9@A+O}{UW6o^xg3YsW{MT2P7FTXzBSRR%;nmKTjD7 zk7gv_I+II}TtD82q!cTOqu^X*n0}7x$m(v28tNj$TM#a`ANRB5KnHFW>OooWB+eeZ zB?n$k9a42zvu7eV%xhcn7l#({YI}j=vS&o@{`>w=Rdr94W1xhWS^2O8S^=K=vlVU{ zITaOi1oK{drj0Q2OP-izG=5uz|G&{Y?HseZ{qLJe7nA;ueWy%eBwlD4&kn;1v((*{E+4^HV50_}9cmkLV?z`dT5?cvyJ1wP+Nq`V17EqC z=kfH=zgR->cF0TZ@?p8YI}Xu`6Z-{R4aBCoeRHkkGa<%m$+j=(|+)*UEoiPP&|aHLd1urpna02f{6B6I#g z5{=9h*KL{fB?qkehi5RX4etk;ZBk!Kr}_`>AQ-Xp%lA!m-cyB9-jihpSSgyU&~Y;y zxg5rmyrm-v_l%6k==i9JynItH2?sjy4tGr%GDo}PQkzJ2YtJ{O^V8;BR+c13}&IdN%YM)bXRCkDybeGw@e2Y4by=3LrT&U%z)QK4cJj5vbuKACPR zb^ZBZ`}du<5R}^CVKe( zJ+1-z2m}_qH|Jo^$x_7nLr6|^2i^+f?7?c5%Z2hd!MNvB!-HAyVu?u}ERZ~gN6so) zTv@^`RVZYtIj|bIyf{zVPy4PU=0G!e&JSRuU@|s4UPNn$kON^tGH|Liv;WN>00<<9 zKYhhjM(CBoy~y31J9*m3j6v6+rh)_PWuDbiRxQ3T;EAY{7?r#769+yb?Lt;M^P_pg z%0L+DE0`JlDp97GHx)Pp_2DQmOdO2?eGS4TT9Tug#u1fI2yi~)IUTqS$MAE&SeC^} zIjxRA_7NF~Am53(y} z3P83gWGA8FXoP*%Qb;%a4jDSqTPc|rWlKf466irxKOSch6veBr!-~0J3^Yt!WhDaS zGyt(roddVxiu$(9o;JhBo#~Z?4;CkF;GSs5nRHy3ECo1^K2vc1_E!EJQ${DtF4eSS zb!DSVLRKUi_GhU=7Qrr4zXHS6OA~&&eqV)Yu!pYwUqN8kRjLYYg!Dh5Z>&k&q~jAb z_9iYOD7;1YmUt26dOuf6*avIM`fd%@iDU@AHxtMv%K%)1)DKL-14Bi|szKsG0$Ffo zErEhj*c-Y!$?`1?I6n}aC8KaF@eiHu@Q1Pp5W}}~!GuS#bma*YQydw=WC7iDmGXqK z@CA@G*hf0>s0p5l09%42w{P5r1i%<(HVxN!j`nttpQc&FR%^oV=Eqnw4KpN9zW%5lcvlqC>kkFk088LgJDE7Q&nX;3`G1svBJ&slng zf`{s4y!I{NL_k6g7Qjz|!C?_}V`U|m5tw#TLTO$qRp+8w618GUVnEI6>?X-1`rA?| z;@loRIgrj(=)jk0R@=B2&$8o9AUr}qHS_>pBoO}wbK2#{Ag;6PV@rW}Q4UB+Ah1*+ zgH1gm31?Dm2uh#0LCE1Q+`(SZL=fU+7;~q?gFRXE5zJ+;`zb?5N&03*u!?DZ$QC!a zZ0=RVEGe>FJgukL@~2qXHglH2Eg0jDPro8bpit zlD@3U0o>3P8w4Y#WM)6Gz3Tr?m49dcFlIzg6Y5D}cmM;Ry2$MzVkBuucIV;fhZy!Y z3wVDHOB_NpknEW&pzuwJbJgeSGVaC!HXROQF0V_3STJIyua%koT(Giliy z=^^ifqwka>lEH=piUAZ8z6)s;ivij{a+BNU>`0I0aMf6ELCaEuc3vq$oXbZ7$D|>T z_0s-sN(%03L4naHLiFIY-kfGWJ>6_;^Uh4zd(d`FmgRb4Xpnr;`{EfZeLPd2{M1`e zSe;=1&O*Z38+VMrs5tRbpmzX^{<#2C#9JgFL0N_1yKtKc)oRdog?Oh&5!8%RSMGp2 zV`aq=*%Dw3k7e<%I3Xk!3L}@e*4SoQd)Yn!LJ=$rnvZgqaT=HIFv>_3t62Jy3d2*p zB!Y9);d}S+Knl;kzAFRfCw*UUCo|t}e$cyB$~@VB~r? zS#Jn>LRD(voC8DD$RQ7NBlef4w0psrKy9MFsCX#J4P}Tu{xFG#p=VI(NaOg2@5Cg??LE4bFn9ISO^a=#Nb)l1J+F+Fj zw*MjH_~t~```tP!W7!j3_sV)kCe}Tc3%EJ&eFBp_4Tm=6H99e5W#GesJGdgbanaV` zXVwfojrxke#etp*g2taYqQ(Tet3O$xLV!M44#A29QepUV6Jw-+%0(8(3ZxlqH%GC& zC#YQcD-d_1?DbY1hIAQ>(3N17)_ZGp^%@eyN}?tx4geuNaqYRgn`)cml^J;qKvs57 zzxDQr#{oElq7MF}*rGCybI)1GRJ}fk6-~7qgHfdh0VL@wJAvM*Ql&F2dH^2!@*IhQ ze12rg^D9~t&ta#vmroek`y?*XkMjr)YPq75b~uo z)#^Ms$!3q_U`;^T8!S+jDdVSaxbIGYyDM_v9A;MqhP0rMU63~(L%Nx5iYP!GV3s0E zR3r;0fg&ug8;>C4J|25Lo`!Rg(5;H-^mkQ~r0+hRqC)l`@Nw!$^{6!{jM4o3#_NwfH@4&=! zyV3bfMBt)!a(>V{Mj^@L1tZ)vDWkWQPwAI`=9~Bug-OU6nD8b`Ix1qBV!G_ayI_o^ z7%LyH9~>tWdM42gPmOS?ZnBhVxi6m6bYak=3+Bpl`c73w9=sr8ri4_f>4LE-qd-c8^mY^o7+U^m6!sQ# z0u@SGoL9;hB`Ra#leG)dPm#=JIqo8(gQ7}r3+9)KCPHu=6?I{w{Xmq>4W7-P&w=xg znzxJ+`BV%l3a|q&@01xUO0_SNvw~%yRf4Rnzs$2F-2lyaCLlV1eM&TKUAM6DBZzzp zjAz*3OXJFx%9Rf(N7RRWrTzNUGZ9V_%oRXe3E zy@FQ0;>N8P@7{V*+s=zxF1l#P_LdzTyDwEx9+?!+p^7A&agL|2kDmG zXGboZch6}1H%HWMNreY5L_ubYR^_x+44eKDRZTGG@EP0le>h2(_fFbbhU8n9W$cY& z9p*Cp#VC1Eq;%ajD+t}moND&fss;-CKphs-FU~M@L9_}`vHT_S;mtJQuslJAWN~ri z3g>TEe=7t8Ek_(<7{CMm;M926TNiA8ykDJ+c<9^9G>o6}EF7ND68UkvzfcelQoSLs!gi z%(C><*$^5E?%aR`;A&GJ6Zt6 zN%zw|F2&1=W^I^~l(Wm1k^H8|ofMFcftlhqtrAh08+!OvvI(MGReyQp5w#SdAYj)+ z{=zp{XSMZ@<8r&~7T{D1R3xd=Uygz|rV-EeEtJLbe+!ZeD1znckcx&XQI8$oiS zqL*(i297BN4k?gCWo72-Ul$dHDX2WPN$xS6QGntq*H}&2^W;yIol)T*HW*La#|G2G zM}0SOe!TordSMF~ui=Nabr|e*C9t}AXh4>k4SR$;KB^}Mj-ZZg-a4OQ5aab}@3B(J zq1@2)C))<)u0pB{_gMRTy7eN2-Z%}PLa-%5=P4XR!w=IGtuh6DUr(yI9e;B$VaD-4 zcA?BLAcVJpHVMNMga;F}U@kFDrUTnz1?;Wm@%NXx)!Zm1X0;NV#>rvFugw{)FN$X-ynhY2iV%aWRnm}*z2(iy4F_v4TG{?c-m(X_P z+5}3#a5valk-zMj))wr&i_4%S-ta_z<_qRveKq4-*MU4aX^r`bqbAdi8iFG>Tk7T7 zE&V@IFaM<@QYU-OHpkHhyf_#^6aG!0cf6usiOv|pqL zrg6MYCJEXg6;1$h7CFaFX2AB9Wk&G7;%!o}ND3(+hBU=-`8_J2hE>KK|7kxOBvMHv zt(ZPmokplfCbk_#g5fqaTaYR<$d{9^&8WD3Elk-jO_y!n%gr{_w-x`+$NyU;wAC;ZCrIPy$zZ*D*b9!a{)mD#_$;0)QyCR%t&6E~>7AC~C}yr5H7#QQaDWJqqLKWJ zoW(4yj!&X?6{e{KCy#cs#BR&aaNkwXQ-vCuns7 zo_z7Nur&bPL zPqMdR6pD2xB~&F+{!YF?t%I^(_~H`I^$21p&2{Bb)`OEQWQxyeZESjWec-~>-n(_| zdQJs2*oXem7ur3G?dp;vA7H!Yg4wiMQ`0uBiR*&>IV`iQTsLTJxK_~i0>7OUB%s+d zh!t3BZym;pb}49k^#YKBlLoLFRxdRljeTS!P)}7TE%gYUAY+zV-WQp z=|-DeW2EMBfy6U4O3njkR+W7YV%MX$B;FPSA?0Esb8NoL5tm>w*37490aF zlT-P*MpP#Vnq}k(1BgF{aU8%%l!fD=tE#%GN&OcYmD{-1t2G$EkK|5%zhu>%TeAQ_&)$DmLbeTF*?u!oXe@=fxZ}8{$WAolmImo%mOk7zbsx3!!qK6_WKhaHAS3n znCR$T9UQmWRgXF0bhROla+aQ436d_wo8Ovg1b-=Ybivp8|z&QS?s4_X%Loy@3 zPHI-Q%yI+fxw?i8$mtXff2maKc<=$OX)+s4FYrgv4=1_MML+5*S+Bt5#w?)$UfTvz z&SDC4JO3EsV$H_P^A#1-=Ema3k(E~W#ZeyVqgpXD=%upU!-89iNi_s2R&)cKS=Y|& za7Ke~SZZTyv&Pp-wn%De6^xJy*_U4FAC&itT`!2Q>eLgCak*c!(mL0gSMN?&Z*AHM zYrUo(rIKl?o=zG)EMmS^>F`Z@Hx7y)x;Ln3o3k8U)8#?IjkvLT%%3Y(O>pHNs#kKkTUKb;F}df-8)2r@FKB zn`SmwFZ-{`i>egFPS{W}XOgQ2^M-5UI-<&_;*pB?^fhq?gLw_;QcZW|$GSc`ZLU1b z%MQ!Q%{relm6uk_6ydkWZ>P2q6hlszBO!8$QO75F(u`|0`%ryW{tW_E9K->nl)$i4 zvOs)InL1@Pu~FnO)@LSk0Xugk#LU!mz41xeiB7Uh?FreXuOG4v3I-KDBt2g%Asf^7 zX|s?R)zOWXFXjY0QS5SYs-9fYoU3k-w_uy7pwA*ATJH@1~S=M+K5R4wrc`wdU~b z`>T?(AEmj6}m1 z{11b=$YyI>0X1F2agyZ`fnndBqStp~&~c-#BHbZUJ=8f+$t=}8r=Je`Z({a+bp7|u zS)r8+*f;7GoItM3u+FVIzywCeIZ%9KM8|KPeZxr<&Y%IUgeX%>nnQIwnhYsO#E!<4 zyE~-vZxg15-bi%f(%JW6zzXFi>_ACbcxotXN>Ep7CAYvAZqy)NM|WtfhSCjd(eKV&?_l2IvtaPD{ zqh7Dj)A=OE7IOt4e7Tn=G1Dj7>2rN^gsYcrKyhm>n&eu48CLDm2)M8Uf_=- zdkOpLxKF8z#-~>&u+4Jr(z+uGG)#iDY>waJnwhzKGoe9OZ!HpZwW`n^zisHgwzt; zoOfn|ql7G$JF!7}a!gD&N+>Jcwg~(qv2JW&hD`va@9;*bT58UX>@x(%4yzRu;A8Fp z`YhJ!{0Y$!Y ze5lDrMnvO=CH5kPMiA@PQ!#pShAoo*Rjd&DHao_B?M$uCjP2=rVGhhxdqU{M9plhZ zk=|-I(S7X*z20=9dTATz!4-Pb%r#RF|o)zYKxKO=Q_f-o+7-mT7&p;2&v& z*d&b>B(`23X`QirWOAL%5jP9ewo=}6&@kRN*D2=K$$YV2qDuH9DQ2wmS)QKo8HUX{@J8>M?i@n0X!Px1l?@VjUWwZd*Hv z-H9Aw_CafhiZ?YQ6^PZ^8W&g@_2 zCuI3PkdATx4n3nKX*LCO)XJcP z5ct|BY@i)~RX>WTE~|SAI=ifr%(@p9s{zYFb929*NUM#lzw4$fpUW-C%VeRR?`T4o zt~++wRMP|3dCdKde~7-<>YcjlNuyoIOnslbE1{`8{;5AiU6&U#A}9XRB#25Avw*2La?rSbulL}cnYR9R7Y?Xaq@j5%N(4!H}wT)xR=2eRFFaG zEC1o^=86oe2pn|*W(swcNkBaUa2V&kb;~gu^RauXQ)kW4H*ZmaL21!`oncE-r}*Icwi6lTDrBgfl4H_cASdFMR!@m4p*kVA&fLvE#Dolr zb}-F!jLqDKdeaehcpkuT4~b((&s(UE!-Gk30@ z^G|1*2Sijwq8(RHO$m$7nU-n-)T-`8yG&=H;m)T2;oeeRgNA$jR`P(EJFOa154eY( zF{S1~{;R@Qc`y}N?ed9vQOy8%vJbui?I^}AQD0Ed*Qyt#=;$-Y-#qio)-IHUFw6s( zHQ!$Ug9?%3ch20cdTfj1_RrtAi#Y1I>bZQpHZ8eGl(M0&OFX(%Zdwf_WKSeZpmCw z-FKelqyFG8hp@FEDqf?oicR!qj9~I<{osA`I-_;o6*Jh2e0olsmI`T-HO;;T9zEGF zgvKM1EKB;mgN#BqFr8pCH52f$x_y|qH2U!(drCM&EP6uS(fP3 zGamFv)GJ4Qnp!T?$ zKF@syC%FYZt|jV7k@MiQe&(U5=O#dP3-z|t+&&FCiGQj@z3Z&2x(<_W5A~|vi0k3G z);U*iG>T)6DCmE3M!BSBPp*9($7~jiw6d;V@2a44J&~Njnhm;GsPfeB0oaqMF+s0>wWFFEM|ek9 z4lVbbTz{wSN5A50`h(JBu0dL_UsDLDC%FO>;C=Wd1}JMzNY-x)*pp+HU`8k>DVj}+)KZ_9`xwy?>g?33QP$}$#f{&(?#9oW%a6@O zw>}rBSLgHW?U~ga&a7nnotO`QkIw17GQKp^YgI8iRrK%-?LSgRwGueH4KDg9zsM$7 zAoF$Y$8`2ykX_K~C<#eY2@9TO(@i4`iU$@Py%M5<3BJ4?}VE^v8~`eDMQ6Nqw^9(y`( zd2AnuT7Dv8H^;yEhwG*?LZ89b-!44ySsvXLqY~;L#Nrx0(IEW8A;MmS5&!27o7h7H z$KU#gLr&18=k{;he4co4zH@@*)GbdV?guB=xlRy9(4SbXnz0GrFQR*g!Vx3Mz z`zo8xeC;gO+W?{I=TyUxbNBdXPHup+SwSZ@?`K|DdYVb+A~*o`!V4MRd~&_7r%{Fd z@DyV1WQ*GB)j~(wKZ~MH4}E$z?jpL8ISKmMofqFy-_1~x8z(jHgGY>x?iJ8*_F4}>s#7XQY^3j4lfZf=Fy#`mvJHT59@UIhLLZ%PM4G#41)V7 zDU{|gIVHNMSKVK}p`k(@Pbvq-(FAhPTYw2nnBEp}2Y4Y&Z+U_h@%lXdTV2S&xzext zL$Ak;HiFK`^f+vu16Fp~j<8-(;9BYwbl~@?(UKksAI9-}D&66>z7}E>D`6g0*D~WVW9ip~JMDg@vZ>?#Cx3{!rUTJX`F5H=Dr_rcAM9&Uw zA~z8(m3}aiiJo+xzHiRb)yvDAS}MIh#Ve(|TD46*UdG2INJ6zOW3sD!diwlBwM|m( zFT<;j)1!$bQjZ{lYeCtF9uIdbq7NvTso^ReeCj{f3t!|szdk@Q*>~cWPhu=Ei0ccS z6qxqRm@#vmsc-7KfSv7P*5yHj{*f`-b756q1nV3%&&^Vf(>HN_?FTqmxe=;21q+?U zeIRcxb~?_vxR5@V79W?QSs28YCy?g_818~Dlwv=W(U^q;R@ks@uf$mcwtntLlcdKX zf>?JwE^W>nM15TRUip=^bjh0Bkwddk&!C2{2$=anre)4dp+|ajmUbsZ%JE0s@RW>v zDOjIdX6sl#!NpOJb_(e34C$!7qjuVTCq#%x6uP#qM&*=kSIR5B= z-=N5<$-22mOuI-=$0~KP+ho(TA0oXGDguJTd;Gs|cutSfIU|qeaP_Gq`lX)V@T!sH z>qD5uIo+U$HauQ*Bc706A%MlQyojNX?L)?ia44emB>Kx=~c*YOO&P1l$oD4_cn;F^wCx zT(C-0b#IbLbLVElUNkQIAoIuw&voUMA<;LcZGj~E9XI4NH#4_Pjz~?HrjWCkgO}#z zX5db$LCjIWnP9RddhvW&?j9*+Z#Yg>C2M0N%X};(MtJ{W3ou5LmHp$vZb}!@1bb~3a1(YCA*N=re32)XfvJ|qd^=U$ z#IV%o@%bN>=_UpfZLXVpb5^b3F)^5_bDi_W#L&{2tT8B0O$^4LJmae^04s`B6%N5URwRrpEayjOY% z`Q5y`;|@w2?s7mYSR(Z^3YeKzKA)f9P1(qqK6M_$SV152{HLcJZKbUvAV@VSV1n*s zGyf8dfc%JS-<)|#6~@e>OE6mUHb*0tBIaFUX9u+}WF6HmW3%)U^e0TKeybrGn8RDl z+re}FJqqQJK2Ose4s)b9&XdF7^$3@NVaAfOoTl#I%;)Izv|IR=FK5rJa`kWpRUlvX zqTi%)$BX?O*Gv6uNmsf@YqBn>w_lI;d8@)N<7%zZOl#V$(TEqho?VY#1?FjKFurQF z!|A3L1j|?j!)u9gb?0+ou$1y7%OM6b)e1dMOV#0+wC|X);aPDyBKCE9HcHW|p{C1~AGX*36mJcsBEc zj#|Ef!u6qVM|R?`{{|yn2=498UbOF=yO)3~QLEy*aGr5*3>{~!zh9VZLL$zNlPb*v}YWD*sDnlnne9pw5{oP zAVwHd)HrTIR3`qFi6(b6IkyjeyChn!sVS+dO`w}G?{=BMs_3FLvegD7jy{cAm z)CAJhXN7@lCNa#nnAu#wi;Vin)F+8xsvJ5L>SmF#7)HfadY}Y#Bu&mSnY9gA0XxH- zskt12DyQ+MSkatKt!0u-^D5>y9>Q5j4`P%CiEbVtq6i1i%eelV9GDVMw5b0{{->^t zFHS|f;bhohD6Oj|yQO9u!36YMEE*k!!-sxP2u9$~sCUz-Mfmj|Am*01_1_&u&mC93 zx2X2xM&^zX))2AtBl~-iz?jWcMu1dY=Xp(8n!4UMr!_J^HD;pm<6K&hyL&C+U->CWm+OwNT%Xs$Vx>>VDuTT6R>kS zZRE>zj4B z3>KK?>Bj_mZ_@CKY(D_DnVezpF4gq`K($NJ{Sss}Bu>~Z^AVb7q3sAh&l8Y^z)~ty z!c`Rk#NEvxTfO^G>c1q)Mag$%C{&4S3K=7}N8g(< zge7WU-nl+HG!l&_hJ2djaT6;LIqO(4-4-7fKOlEA3y43_9g1Ej} zHulfMggbd1D3n(z2+Nf`c98n%X2?kE6J;Oul|!dYMwcJW3Fb_*0Ep(*vyr~4vDGAM zud!Yq9(q6pjXOzOjfd+;n1YqB(vwk3ch$Dd*}wH5ZMe@m1S|wLw28W|a8*F$`|O%t zXG&)3CR3_$CMx3=cL;{v2Kju|5gb9GHCtv_5HIzDBjA<#4LGFE;D10tumP((oG$EjLnn#+MOMQSAXq!eO z1k#2!wJ#N1uaqm)*C^leeE^kj#a<*2QF~YWddH8Oz9|}I9+@j(#xNg3LrRZ|wx6Y7 zTlPc*!K?BBe-5FxPI3!{Gq_99iQH?-?Iphi{RJEs&Ci1-_!I^sj%Z62+PZd4d0@2F z_2L@kbD(`pDNo%T?pCNSY+&CHi;i}dyh z6*Wvvqlo|4Xk}AZF9VNNNYbQj#gBD*q=mXt#1i(@D0Yz-KAQ^o8m(!BVi1l>rv83&L?&T_Bs{ed7saA( z2pLlsPZ~`vaI`|XkLoah)lRgkRN|_saEXE!&1N^0{#oHT-2W7X2je!Ck!pnefC)p* z788z$HjV2Zz#wlLP7@ptH$%UA+|YDu)}7h&AZ^kRW5s61n=U~xRlqQ7zue3)jZhyC zQ{w22tNoBTjGNWOX^Z$%0MG7$_Jj}76oU{M;YS?f{>uhv;Rbs@{2w-hjx|t-|4F)I z9yk>Hz-gYUj%g6$YZTL=uR&yokE^ne`rk--Qgi`7&q2wjN$9O9QJ9%EU*z0CoQCi2 zaFY)6y;BoaAztt--aH}vn$-P575ScKX4#mbsaqMgj={;Nyb`BTN;ja3Xqc&+4usMD zU#>uhQ~e2Aaw<@&`YY{Bq$2rO>fQLSH9zgBOV!MVOooS35w7+p>cBxd{6DYX*YnRu z7sl{pulPPEs*>>67j(6sF2J>KVdnRgnRX6iRE^-M7=kf1TBE|KU;hl)Ti0Fmx3=iv zaw>YnepFOOUINl^#l?AFOOukivdhb zR;j}t<-K}$-i)rtlo=#28r*=%6D{=4u4O)r0{E!+MpUkWfeJkYXiQ0WtC?gV&apH} zzY^yqb2m5M?fE=VMdy3{vL+IwD`VlCAlHJ7FGjNk+*~g~pZ6UH^H{x^rcns?eb+m( z!4hle?8b~9zVt<=3EYBul84EK*i*97Q0Fj9!dICg*7lZopR_2wH3z`>zZcD0lLy0z zup#*6?wY~+)qoz18!QOBq5nWo@oxbQ8?Km;^{$6XY)_lEmE?~IsI)?eS{*x~FZ zXEKjxnx=UaEjV-L+^}u@jz$;?H#eyME&mzNT!zdKml19J_n*9p{gn~Z--LDQ1x zY9!v#w|4@-m0_p*GHN`4*F4`tlHtDgujXqG?5ZC_pWN@Qdp$XiV5?t1j{ERUNc|)M z?$v#agBZVs*R}4$aVhs_C&5H%S|-yKbuQv+heWF}T!ZkA_=@j3 zrPs(kTSKT1(o}E-(vRT@O7UEAsJwQ0igIl#reBwU(T*On%SqcEKr-lfVW z?Za)jL5d7>yeIBWhSUz!3aDQ*Jv8;Xr#J^v%EEP4fe1g<8oD5%BM__-5GTYWh;mCzF zD}l!-aLMQKqG?fGunIn)sdB5_5~NAgNou5pMW@-M{kO4J7!SM{cA0kaNf1_Rbm;E1@ZB%7fWJ!_cT=>bu3Cg4 zp0Ty1X`hdNDLX^l^K?t_LDwD_?;f~bt580O60gVJUT^*$uRYg`F=;f-(;F~0Wsc4e zwF$K;@x^o9(?ByxO&G{ceIM~?M4dUv&ElzJQ_81)lVlQ>!De8YzRxSb=KtB1hWh^- z7DiuN(-o2E>jt4{QeCY8JE^}IT~*d)J@eH^Kolx(5{J8UnAac)^+)|Qg3%Y+%sq5a z$c$lJzZPxzdIi}#6!qn(CDCR1{O&7Zh`mt|*s9JnNvX=Yya@`ze-=RRjt7`WBN8=u0irCYSE}Wu4Qi2wq(LUs{~%0T4E67 zw)!pXb?>n?{3Y#vP$BGdIvCA=Xawc8J#TK{?<7Pa##?ze@Xfory7pzl-~(Vdw3y8n z>etEjZ%+pwKhebx8}LJ5d_{*?4gKtEgEPM2F8pMq;@tTEb$S#xk044MH7VU(8j`?$ zP;EsGG61Q(`m2h|8nBWW^CZxDQ=_}6$4@nf>1%3=Fh(T8=@5Pk1Ytik>fxT!Ae5l% zAG8Z~GPNDp(*G_!Cd#|U39PQqVAFC>UG@z3HwUo?zlX!zbvOtq7JTHFshjBL)X*0J z7~)BWJ=W#v>}Sj~c(H5vzAw1mn)vHkbByGTxuW2%NEa=#N6%XS=^^`4>Pi69&4lK@A2B)jkKp;p;CSx zKwUva%6SS}9`z zG=OTMV}~b>Kr*7Ej^H9&KFkXoS~+0(h*y1y{jw;Jq*`zTJvq|z2ufV1@KiC)hfreh z8j*~(BA5XSqiz#$jl-`fy)Ei{yyQTBpfH_T= z(}K5t8Ku%M1B?rH#?dqS*lo3>(Ql=neeDLcY4%s?zfm=c{`xfo%Qaw|lDWCQdIdN| z-8bhJ=#6d&x(u>}csPUs=BGemlL9VHD#gNK(ZQm?;sF$BwvhKsD#;?vqJ@Rc0+U)O zlUm5r`Eoj+;4Wk_Kh=`=oEDStmU>Hpn58oOQcf84a*>rs9)9NH94G0Veu@1!gzULG?$*w!BX?l zkaajifjK|GE5hqJE{5>{1aB=R>Pl8iYwDMuefC-EG75rDM&?Akp=3)wi8g*2*mBaw zvN~;>Wk+^f$|O2l(e);)#l~SX{`X^)>?S^$-Gr&zMA{~RWlLu-w3uYVbzP^B$ok(E zA;A&zL`fX-0uT7#6{e|d^tytRb%cJMbb``&)xB(w1Hs?RiL4_lRrflDB!PFW+ALhQ z_Ft6N{)=+4UoZ9(kFL(L3sZ3^xBiPPzQwlj#$)Ga9N+2Qw9N-!Qdj3I?Hvb1%|BpG2fb3cv8lZLwh&nre zuMEByRayTiN2(n>|Cpfg2vFE+EC*PY&)(C!X?lVD%j#ks+D}6 zVKIwE8;f=pE{oYLvMf9nH?Ww)VlImtS=@v|U=p2(E~R%|fM1~wO&WuO$iQhr(f^ua z={1?#>w59JT)d$dZx9i$v5>RZW!|qzspoH`EC@9psSL>@l_7!PG%vEg96bMLf|d6s zv2r@=zsEVBM$dQvl$25`a7%i4PkVSz=783of0o6Ya`T+tJO^^Rm`cK1jS@tJ1d)`h zaXaf@ps}&sSp_TWpOAkS*u!6Qrj{F;%&Wn zn@?S4@wT+QEG25aGIW;bzsqJ`IVA`G-82v`+6fYH!7-HL3!bCgb`s|zK2+|b6qr${ zv4rQJ0s~1y|CCm|FWq!aR=*$g)FnNkOaFaHSuU6J{0{)FS2?T?o|$~)OzJW%Eg*a! zMMco@b89sfN$f*ku$x@XII?ZiM7&?Y830>Qd=@5$Z zD9YQUm&%2t0@J7K@fc~INSWG$b37fhZ zG-1ivb?V&8L+u#De>vxshg4OF9E#p{fh775H6GQoG^|Rwv@?i z`#_3ZI=E(Qj^*fW9t4;da1R%J6m|rU!Wf__XXFzH>>3ry#OMffbVNkUyGRZJOP_IN zTDz=o;JZdC>TDN82BKU-DP)5cz`R{f2uC2#wG9E>j2bzj3arBlZ!{A$3fN9=p*y`L z9rBitJ8gi`M}?`%k3xH4XtGWZXYgp+k(xm>u+j zkP9XV#zlClN}m&Vslnt)=#(5R5-vEkT~;WW9AA^^BQoWfg@eu%;Y#KTX) z&9L88v~yD;X|5SI(!jFVU&2F;9cyATP5@7?e! z`ZgRp<~Q2(J7QNGmNcsVl&&1)5n%%D(I^ONL4g5s5F6<5e<@h=svo&=S;#0DO?27NRJHf)F!w8jRbtWGPqkj>b%AuUM zjz+<&9P;*rr+IIk$av*Y*8i2aj+}M?_^0eq#MY5al>-n#9!MbY+X0FNwZ;KqzXMeN zmBXS~k9d_MO41{E1Zot9-p3)S zCM(oEa#`&p1Rw%c15_&xJ#qmrN9OR69!`sxRL^>q(*nh5+kiByJ*ReDi~E=ZT!dOn zXqFll{!x4QCypx)=0^h3=?<=Y2boyrHahC}u5{K{1n-t-n6l9wB^@d*;fD=6D3{R} zG@W2ulEaXgOExVWd8?VjTz~z`vkwoQ_WXcb!hTeGEWCQF1!RWID$nG^mi9$60+`s^#>p z6gMSUElF#SVdeqBI;^vs0X@kL7#lo7uTkh`n`90qFo#Rm^`77*8d+AC0S4g;0Hbam zsRw2t0PJ){NM=Jto00#g7 zi5xRh13%d!s*naDSZ;@-hYWGSkR^{qoMT-4rvu|(ghP{q=Yk>V!s*#T zoB{R74Z&F=F(4mwn#yxo%mXuc3)I1%CsRTdHRe3rt^T7;l+=!><0#b^6bn3f)yppJ z0S}t{PVvC>0vrp(!$dSog!>T3y=@#aPXh04V=p+!4D)D}F)eINZUAQ>hh&mgCoV{R zeeiaL?{?vYR|(3i!U?ZR#bK6v4Xa_ga3=Q-v)pUQa^<7s2OcyaIm&=U;)(K6TjG(U zwYY?LP=lsWF#1R>KH(iI1K6tzYynphEu>|6b4EL1fFpJEh&kb(00B%6;HmOFK!WD; zzyUxz1w`fh6TFa;7@c(S-eSP+ZAAkHm=3ct#I|BzsK5U;b zKU(zVRlhzz^;?@Cc=qpqXXPK<*4Fn&f3eW{!$19-2Y>!&zxHc)Y`E#aJ#fo?FYN!F zAO6Gncm96apX^-m{Qp{fYO+lE2KQChIZ z$=E3md2tKge2dL+`0Om!9Fdz=3RR*^%6o9?S{T6*5JpfUrnQ>rH1=aOul$OX2MIv=6)qZ-e_*4>@+&zD>I7nj`aRG|2-;zGl2Ee9dtyx2 zTLP>lkfTO1pUC$wLE-V>=piYSx@5H`OloDRh_}Q^$)y&$L4MLk{una{mXnT!5_dpp zoP*M^YNQBK&^G4D^Mtpo)lTOenMSLfL@jTSZ4hMge%?9ujc0#5`}53wA{KAUwBBXE zz334H@8z_X;)+KH$K?t0jg>ogmWqA-g>g`*w5?d^FK+D{A1W2L4CBVw_?FV}SfOu6 ze_>~_B==YK?H(R4MF_bjVg6&2oqVOx+c!3Vj%#c&Sj1*%&^e!U?bc4)8*;PT@xVIFO+Z}d8)H$sgJKFj^W zcMAmbIh9FRP8dL;+blZ`u3Ug*JSsWwm+=pz%Q!X?&z}E1az78!*Iv@Ul5i2rB;0JJ zHCt)VR*Z7c9_9&R9 z)1~+c=XBC|V$B6@{A0+wYojAAU^?icHfWgYQP;tMbaxmv-kz8%5WhysRk~0~?*SSE zEkvjKugm>6=n5bMPi>J;=ab-UE@vPePx;2O$H6?1MkQ~-OJPfw&mo&m{yXhL#rHX` zG_>HFu;tH?U|0CwtGQyL8sL{Rq~fdKWOG8%SJ=y;0(95SFq> z1xRJ;I&b8%6p`HQFCZ75_myw1D+OKLh-XpVkPg2@<)eO*2W!DpVc`X z3yVN57x4&1JG5c8qDu!SoHhXo)v`<=4m}Bj3Mns3`F6%m!>)iH2iXY-`vebO#l^klU9#9^}+G2TZ?0ZI|ft&i(?zURU9gohIfcf++Hkg z8}5hZ6B?IY*f`9jECYKB;IV>L%YX=QAQ=cSMzfXiY-P6&xu+GDjgs?94l+QSpYrm+ z2&D}dVsTbmjEVer(N3V(%9g0w`!Z^!`u4?cTC=g zEu>yMNjNJ*-UubL^1m%d2gItUokBp^sitrA>j`rgN4v^EQ^vSEVHWYZjoXJF8s4#W zaA16_j}|Qg-10T6qqp!yn}m6=!8413RG@|!QvZzVk~8$f!4GHf?*{lv{uvdDGhXHUkR5A9!aUFbrb((y1IlC@ zZ10BnA(3_%|3pQX-(p;vQ?W#1;RmkeB5hqsPpWCMW(BIP@>)J;NzUzcz$S8}i;@*%YfxB$Q$4-hir|z^w zG(JEp<$s<*^1aF@e8N9flj`@i-w*U~rj=_6m7nL3SD>;z1-P=64@Gf0bTp9U07Spg zf70ZFbb0}i3p~YDE~gq?K&gqVy$VjTmqkAC0{^2G*}c3?u!qN@9jv_(bdxn2nGXA0 zo6qH4IN;hZN~zYX?G-$=)Bb=Gl?7+ zg?Bn}hdT5O6sQBc$+{)ddh)WZb}9aG2|+g09ag%O39wqiN$sMchhZtv4teDls1k93 z45321kEWh0Zu>ZES^Sclr0PXSxZu(aHdy66{$G@TmnOEC7 z?2PH*3o_G3g`IyX<*&pVUjpXEWS2L0B@C6x&kNe~Ow7Rad`gs66Ksrh6PY+$ZS@Z?O89#>?1pc@ zebI*EmT|b7yBDo3j%^>@xpNS%{bXfWH!0u?3)^>Y86F!Nd~RXk$>JE>-+$MlZvI_Z zcnAhye5`o?j^cP}tZ!&xVeR;HLxWo$EAH+c{#J3v{m*^<>wWiZx#w$(@4b6Tv3u#g zw}&*9v&Xs-dBS6o1o5ugDpn4eCUpZxwS^l6}z?+N7!})tjUgn z0RQ-$iJi&I4jOw9$wer6f$43Lx6b%(G_!Ua+*@<~{VmK%CC&9&fIf^`7v+$utQdjDH>;qRU{OP9V?%Z;#_w z4yc@BEr;j8EYfszS-85x8eFQnJ|NA-M~8LN3sp$4RYIMkGVjCa^c^Cyas(%6$7?KB zdewWql@LL=$dq_=xGN_CD*y4tCSoSKITcIQ>-n{w#`YG(pU+FPBY z8WW!lrcll+6F?--97~K*c*(2*`Cv63mIMOZ5b(7G7$MNI0GPHLp@OSWFB3WZ_o{#u zqpPe`K7!QE0=L4?ubQ0RM9Im^q&W%E{}yZ%1)vJ2L^S(Jl-cV2opu`n1*|22#<0q# zxQ;JeBaKdYaOP#Hg3At?@wm;N4ci1?T$``OX$SZNNf1}&&iGG2#Ka_+1kjZUriV&*bc(H!)%6 z0QY#O4IIlT%z+>}4*VFe4RNbVC6S3ul_FhqG9_B0sPRU1A}3sxwaLsAqWiES11eC6 zxX^$#+9V?oumYEpaHRtvEXD}f<}1U=6)wQ=VQ!PxP=d^Qit4GpL{y_G>VYl{_>zb< z3=rnMpV^3~S!6}T&#GLUtzmkC;C6f6m{hlOLx+{7Zaw0eT>BmpClLbkV!uL+pKo zOAR!6&j3z{8jJ^Z2bS@mWs_X5!lSTv5UX~(7451ABy>+w#Y4YKUbh1dJsyV&Owm44 z{fJ@H{KBt9oTxsk$kjr}ltB%YxFna;IOW9Z$+Lh?ntqp7SI_;EOiCbQn_`>_^c)-t|dV^TtPdBfi3hsHz&^DTxyE)JU#||%~Mt`&!db~ zFVoUq28KyiP(l0&kfIg*FMnvgu=2yXmv5&$mT&LGv=f~jw%v&|RwtZG{6i1IBdDz+ChT*NH=ljO6IxsxGqhI_(ycS1SaQa5j3JK#ZUUb)@#c)dz6emm) zSH`p@j9v4IjJZEymQLSKq1Lv*K!L92!()Bhi_Z^_;TN-JB}~iuVySNsKlwq3f~H%M zKv?wnir%no0q!yUEXiG<#2>)JUGT=-%1XGvPmT4BJU+Z*(zET|Ha7hH&V<>UNl7~v z|Aps;$;;TuzDPS`o_%O|Z28d8YGhQ5IP1mYqW&Ski9erpnZg5dHdD-CUR)jCSl>IJFv+-*h|j)p9dyBzfJlNaKlY~{0&}i91M5kvRys&`i^x0 zuiiZl>i5d5>)|ipvxJKTqXxgJ+lqMv<2;FR_}icQg%|d(zYV+y$L`5zmYOy^L&`^A zT@Gg-hiMV;%?}2UeoOG&DvU7zj137TM}RlZY5+6F7dINz5nA%WV!UUoXJ5mtJ`aB3 z4Vry*uqfAZ$0R@dMJkiC{`uf}KybRIh70brB!&XI1e=-b=^f&>8@^!zAG+igQojGr zFRz3YsejJkb9jg!>e|;+UukdfDmrh`zzhavFffCG84S!|U - - - log4net - - - - - Appender that logs to a database. - - - - appends logging events to a table within a - database. The appender can be configured to specify the connection - string by setting the property. - The connection type (provider) can be specified by setting the - property. For more information on database connection strings for - your specific database see http://www.connectionstrings.com/. - - - Records are written into the database either using a prepared - statement or a stored procedure. The property - is set to (System.Data.CommandType.Text) to specify a prepared statement - or to (System.Data.CommandType.StoredProcedure) to specify a stored - procedure. - - - The prepared statement text or the name of the stored procedure - must be set in the property. - - - The prepared statement or stored procedure can take a number - of parameters. Parameters are added using the - method. This adds a single to the - ordered list of parameters. The - type may be subclassed if required to provide database specific - functionality. The specifies - the parameter name, database type, size, and how the value should - be generated using a . - - - - An example of a SQL Server table that could be logged to: - - CREATE TABLE [dbo].[Log] ( - [ID] [int] IDENTITY (1, 1) NOT NULL , - [Date] [datetime] NOT NULL , - [Thread] [varchar] (255) NOT NULL , - [Level] [varchar] (20) NOT NULL , - [Logger] [varchar] (255) NOT NULL , - [Message] [varchar] (4000) NOT NULL - ) ON [PRIMARY] - - - - An example configuration to log to the above table: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Julian Biddle - Nicko Cadell - Gert Driesen - Lance Nehring - - - - Abstract base class implementation of that - buffers events in a fixed size buffer. - - - - This base class should be used by appenders that need to buffer a - number of events before logging them. For example the - buffers events and then submits the entire contents of the buffer to - the underlying database in one go. - - - Subclasses should override the - method to deliver the buffered events. - - The BufferingAppenderSkeleton maintains a fixed size cyclic - buffer of events. The size of the buffer is set using - the property. - - A is used to inspect - each event as it arrives in the appender. If the - triggers, then the current buffer is sent immediately - (see ). Otherwise the event - is stored in the buffer. For example, an evaluator can be used to - deliver the events immediately when an ERROR event arrives. - - - The buffering appender can be configured in a mode. - By default the appender is NOT lossy. When the buffer is full all - the buffered events are sent with . - If the property is set to true then the - buffer will not be sent when it is full, and new events arriving - in the appender will overwrite the oldest event in the buffer. - In lossy mode the buffer will only be sent when the - triggers. This can be useful behavior when you need to know about - ERROR events but not about events with a lower level, configure an - evaluator that will trigger when an ERROR event arrives, the whole - buffer will be sent which gives a history of events leading up to - the ERROR event. - - - Nicko Cadell - Gert Driesen - - - - Abstract base class implementation of . - - - - This class provides the code for common functionality, such - as support for threshold filtering and support for general filters. - - - Appenders can also implement the interface. Therefore - they would require that the method - be called after the appenders properties have been configured. - - - Nicko Cadell - Gert Driesen - - - - Implement this interface for your own strategies for printing log statements. - - - - Implementors should consider extending the - class which provides a default implementation of this interface. - - - Appenders can also implement the interface. Therefore - they would require that the method - be called after the appenders properties have been configured. - - - Nicko Cadell - Gert Driesen - - - - Closes the appender and releases resources. - - - - Releases any resources allocated within the appender such as file handles, - network connections, etc. - - - It is a programming error to append to a closed appender. - - - - - - Log the logging event in Appender specific way. - - The event to log - - - This method is called to log a message into this appender. - - - - - - Gets or sets the name of this appender. - - The name of the appender. - - The name uniquely identifies the appender. - - - - - Interface for appenders that support bulk logging. - - - - This interface extends the interface to - support bulk logging of objects. Appenders - should only implement this interface if they can bulk log efficiently. - - - Nicko Cadell - - - - Log the array of logging events in Appender specific way. - - The events to log - - - This method is called to log an array of events into this appender. - - - - - - Interface used to delay activate a configured object. - - - - This allows an object to defer activation of its options until all - options have been set. This is required for components which have - related options that remain ambiguous until all are set. - - - If a component implements this interface then the method - must be called by the container after its all the configured properties have been set - and before the component can be used. - - - Nicko Cadell - - - - Activate the options that were previously set with calls to properties. - - - - This allows an object to defer activation of its options until all - options have been set. This is required for components which have - related options that remain ambiguous until all are set. - - - If a component implements this interface then this method must be called - after its properties have been set before the component can be used. - - - - - - Initial buffer size - - - - - Maximum buffer size before it is recycled - - - - - Default constructor - - - Empty default constructor - - - - - Finalizes this appender by calling the implementation's - method. - - - - If this appender has not been closed then the Finalize method - will call . - - - - - - Initialize the appender based on the options set - - - - This is part of the delayed object - activation scheme. The method must - be called on this object after the configuration properties have - been set. Until is called this - object is in an undefined state and must not be used. - - - If any of the configuration properties are modified then - must be called again. - - - - - - Closes the appender and release resources. - - - - Release any resources allocated within the appender such as file handles, - network connections, etc. - - - It is a programming error to append to a closed appender. - - - This method cannot be overridden by subclasses. This method - delegates the closing of the appender to the - method which must be overridden in the subclass. - - - - - - Performs threshold checks and invokes filters before - delegating actual logging to the subclasses specific - method. - - The event to log. - - - This method cannot be overridden by derived classes. A - derived class should override the method - which is called by this method. - - - The implementation of this method is as follows: - - - - - - Checks that the severity of the - is greater than or equal to the of this - appender. - - - - Checks that the chain accepts the - . - - - - - Calls and checks that - it returns true. - - - - - If all of the above steps succeed then the - will be passed to the abstract method. - - - - - - Performs threshold checks and invokes filters before - delegating actual logging to the subclasses specific - method. - - The array of events to log. - - - This method cannot be overridden by derived classes. A - derived class should override the method - which is called by this method. - - - The implementation of this method is as follows: - - - - - - Checks that the severity of the - is greater than or equal to the of this - appender. - - - - Checks that the chain accepts the - . - - - - - Calls and checks that - it returns true. - - - - - If all of the above steps succeed then the - will be passed to the method. - - - - - - Test if the logging event should we output by this appender - - the event to test - true if the event should be output, false if the event should be ignored - - - This method checks the logging event against the threshold level set - on this appender and also against the filters specified on this - appender. - - - The implementation of this method is as follows: - - - - - - Checks that the severity of the - is greater than or equal to the of this - appender. - - - - Checks that the chain accepts the - . - - - - - - - - - Adds a filter to the end of the filter chain. - - the filter to add to this appender - - - The Filters are organized in a linked list. - - - Setting this property causes the new filter to be pushed onto the - back of the filter chain. - - - - - - Clears the filter list for this appender. - - - - Clears the filter list for this appender. - - - - - - Checks if the message level is below this appender's threshold. - - to test against. - - - If there is no threshold set, then the return value is always true. - - - - true if the meets the - requirements of this appender. - - - - - Is called when the appender is closed. Derived classes should override - this method if resources need to be released. - - - - Releases any resources allocated within the appender such as file handles, - network connections, etc. - - - It is a programming error to append to a closed appender. - - - - - - Subclasses of should implement this method - to perform actual logging. - - The event to append. - - - A subclass must implement this method to perform - logging of the . - - This method will be called by - if all the conditions listed for that method are met. - - - To restrict the logging of events in the appender - override the method. - - - - - - Append a bulk array of logging events. - - the array of logging events - - - This base class implementation calls the - method for each element in the bulk array. - - - A sub class that can better process a bulk array of events should - override this method in addition to . - - - - - - Called before as a precondition. - - - - This method is called by - before the call to the abstract method. - - - This method can be overridden in a subclass to extend the checks - made before the event is passed to the method. - - - A subclass should ensure that they delegate this call to - this base class if it is overridden. - - - true if the call to should proceed. - - - - Renders the to a string. - - The event to render. - The event rendered as a string. - - - Helper method to render a to - a string. This appender must have a - set to render the to - a string. - - If there is exception data in the logging event and - the layout does not process the exception, this method - will append the exception text to the rendered string. - - - Where possible use the alternative version of this method - . - That method streams the rendering onto an existing Writer - which can give better performance if the caller already has - a open and ready for writing. - - - - - - Renders the to a string. - - The event to render. - The TextWriter to write the formatted event to - - - Helper method to render a to - a string. This appender must have a - set to render the to - a string. - - If there is exception data in the logging event and - the layout does not process the exception, this method - will append the exception text to the rendered string. - - - Use this method in preference to - where possible. If, however, the caller needs to render the event - to a string then does - provide an efficient mechanism for doing so. - - - - - - The layout of this appender. - - - See for more information. - - - - - The name of this appender. - - - See for more information. - - - - - The level threshold of this appender. - - - - There is no level threshold filtering by default. - - - See for more information. - - - - - - It is assumed and enforced that errorHandler is never null. - - - - It is assumed and enforced that errorHandler is never null. - - - See for more information. - - - - - - The first filter in the filter chain. - - - - Set to null initially. - - - See for more information. - - - - - - The last filter in the filter chain. - - - See for more information. - - - - - Flag indicating if this appender is closed. - - - See for more information. - - - - - The guard prevents an appender from repeatedly calling its own DoAppend method - - - - - StringWriter used to render events - - - - - Gets or sets the threshold of this appender. - - - The threshold of the appender. - - - - All log events with lower level than the threshold level are ignored - by the appender. - - - In configuration files this option is specified by setting the - value of the option to a level - string, such as "DEBUG", "INFO" and so on. - - - - - - Gets or sets the for this appender. - - The of the appender - - - The provides a default - implementation for the property. - - - - - - The filter chain. - - The head of the filter chain filter chain. - - - Returns the head Filter. The Filters are organized in a linked list - and so all Filters on this Appender are available through the result. - - - - - - Gets or sets the for this appender. - - The layout of the appender. - - - See for more information. - - - - - - - Gets or sets the name of this appender. - - The name of the appender. - - - The name uniquely identifies the appender. - - - - - - Tests if this appender requires a to be set. - - - - In the rather exceptional case, where the appender - implementation admits a layout but can also work without it, - then the appender should return true. - - - This default implementation always returns true. - - - - true if the appender requires a layout object, otherwise false. - - - - - The default buffer size. - - - The default size of the cyclic buffer used to store events. - This is set to 512 by default. - - - - - Initializes a new instance of the class. - - - - Protected default constructor to allow subclassing. - - - - - - Initializes a new instance of the class. - - the events passed through this appender must be - fixed by the time that they arrive in the derived class' SendBuffer method. - - - Protected constructor to allow subclassing. - - - The should be set if the subclass - expects the events delivered to be fixed even if the - is set to zero, i.e. when no buffering occurs. - - - - - - Flush the currently buffered events - - - - Flushes any events that have been buffered. - - - If the appender is buffering in mode then the contents - of the buffer will NOT be flushed to the appender. - - - - - - Flush the currently buffered events - - set to true to flush the buffer of lossy events - - - Flushes events that have been buffered. If is - false then events will only be flushed if this buffer is non-lossy mode. - - - If the appender is buffering in mode then the contents - of the buffer will only be flushed if is true. - In this case the contents of the buffer will be tested against the - and if triggering will be output. All other buffered - events will be discarded. - - - If is true then the buffer will always - be emptied by calling this method. - - - - - - Initialize the appender based on the options set - - - - This is part of the delayed object - activation scheme. The method must - be called on this object after the configuration properties have - been set. Until is called this - object is in an undefined state and must not be used. - - - If any of the configuration properties are modified then - must be called again. - - - - - - Close this appender instance. - - - - Close this appender instance. If this appender is marked - as not then the remaining events in - the buffer must be sent when the appender is closed. - - - - - - This method is called by the method. - - the event to log - - - Stores the in the cyclic buffer. - - - The buffer will be sent (i.e. passed to the - method) if one of the following conditions is met: - - - - The cyclic buffer is full and this appender is - marked as not lossy (see ) - - - An is set and - it is triggered for the - specified. - - - - Before the event is stored in the buffer it is fixed - (see ) to ensure that - any data referenced by the event will be valid when the buffer - is processed. - - - - - - Sends the contents of the buffer. - - The first logging event. - The buffer containing the events that need to be send. - - - The subclass must override . - - - - - - Sends the events. - - The events that need to be send. - - - The subclass must override this method to process the buffered events. - - - - - - The size of the cyclic buffer used to hold the logging events. - - - Set to by default. - - - - - The cyclic buffer used to store the logging events. - - - - - The triggering event evaluator that causes the buffer to be sent immediately. - - - The object that is used to determine if an event causes the entire - buffer to be sent immediately. This field can be null, which - indicates that event triggering is not to be done. The evaluator - can be set using the property. If this appender - has the ( property) set to - true then an must be set. - - - - - Indicates if the appender should overwrite events in the cyclic buffer - when it becomes full, or if the buffer should be flushed when the - buffer is full. - - - If this field is set to true then an must - be set. - - - - - The triggering event evaluator filters discarded events. - - - The object that is used to determine if an event that is discarded should - really be discarded or if it should be sent to the appenders. - This field can be null, which indicates that all discarded events will - be discarded. - - - - - Value indicating which fields in the event should be fixed - - - By default all fields are fixed - - - - - The events delivered to the subclass must be fixed. - - - - - Gets or sets a value that indicates whether the appender is lossy. - - - true if the appender is lossy, otherwise false. The default is false. - - - - This appender uses a buffer to store logging events before - delivering them. A triggering event causes the whole buffer - to be send to the remote sink. If the buffer overruns before - a triggering event then logging events could be lost. Set - to false to prevent logging events - from being lost. - - If is set to true then an - must be specified. - - - - - Gets or sets the size of the cyclic buffer used to hold the - logging events. - - - The size of the cyclic buffer used to hold the logging events. - - - - The option takes a positive integer - representing the maximum number of logging events to collect in - a cyclic buffer. When the is reached, - oldest events are deleted as new events are added to the - buffer. By default the size of the cyclic buffer is 512 events. - - - If the is set to a value less than - or equal to 1 then no buffering will occur. The logging event - will be delivered synchronously (depending on the - and properties). Otherwise the event will - be buffered. - - - - - - Gets or sets the that causes the - buffer to be sent immediately. - - - The that causes the buffer to be - sent immediately. - - - - The evaluator will be called for each event that is appended to this - appender. If the evaluator triggers then the current buffer will - immediately be sent (see ). - - If is set to true then an - must be specified. - - - - - Gets or sets the value of the to use. - - - The value of the to use. - - - - The evaluator will be called for each event that is discarded from this - appender. If the evaluator triggers then the current buffer will immediately - be sent (see ). - - - - - - Gets or sets a value indicating if only part of the logging event data - should be fixed. - - - true if the appender should only fix part of the logging event - data, otherwise false. The default is false. - - - - Setting this property to true will cause only part of the - event data to be fixed and serialized. This will improve performance. - - - See for more information. - - - - - - Gets or sets a the fields that will be fixed in the event - - - The event fields that will be fixed before the event is buffered - - - - The logging event needs to have certain thread specific values - captured before it can be buffered. See - for details. - - - - - - - Initializes a new instance of the class. - - - Public default constructor to initialize a new instance of this class. - - - - - Initialize the appender based on the options set - - - - This is part of the delayed object - activation scheme. The method must - be called on this object after the configuration properties have - been set. Until is called this - object is in an undefined state and must not be used. - - - If any of the configuration properties are modified then - must be called again. - - - - - - Override the parent method to close the database - - - - Closes the database command and database connection. - - - - - - Inserts the events into the database. - - The events to insert into the database. - - - Insert all the events specified in the - array into the database. - - - - - - Adds a parameter to the command. - - The parameter to add to the command. - - - Adds a parameter to the ordered list of command parameters. - - - - - - Writes the events to the database using the transaction specified. - - The transaction that the events will be executed under. - The array of events to insert into the database. - - - The transaction argument can be null if the appender has been - configured not to use transactions. See - property for more information. - - - - - - Formats the log message into database statement text. - - The event being logged. - - This method can be overridden by subclasses to provide - more control over the format of the database statement. - - - Text that can be passed to a . - - - - - Connects to the database. - - - - - Retrieves the class type of the ADO.NET provider. - - - - Gets the Type of the ADO.NET provider to use to connect to the - database. This method resolves the type specified in the - property. - - - Subclasses can override this method to return a different type - if necessary. - - - The of the ADO.NET provider - - - - Prepares the database command and initialize the parameters. - - - - - Flag to indicate if we are using a command object - - - - Set to true when the appender is to use a prepared - statement or stored procedure to insert into the database. - - - - - - The list of objects. - - - - The list of objects. - - - - - - The security context to use for privileged calls - - - - - The that will be used - to insert logging events into a database. - - - - - The database command. - - - - - Database connection string. - - - - - String type name of the type name. - - - - - The text of the command. - - - - - The command type. - - - - - Indicates whether to use transactions when writing to the database. - - - - - Indicates whether to use transactions when writing to the database. - - - - - Gets or sets the database connection string that is used to connect to - the database. - - - The database connection string used to connect to the database. - - - - The connections string is specific to the connection type. - See for more information. - - - Connection string for MS Access via ODBC: - "DSN=MS Access Database;UID=admin;PWD=;SystemDB=C:\data\System.mdw;SafeTransactions = 0;FIL=MS Access;DriverID = 25;DBQ=C:\data\train33.mdb" - - Another connection string for MS Access via ODBC: - "Driver={Microsoft Access Driver (*.mdb)};DBQ=C:\Work\cvs_root\log4net-1.2\access.mdb;UID=;PWD=;" - - Connection string for MS Access via OLE DB: - "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Work\cvs_root\log4net-1.2\access.mdb;User Id=;Password=;" - - - - - Gets or sets the type name of the connection - that should be created. - - - The type name of the connection. - - - - The type name of the ADO.NET provider to use. - - - The default is to use the OLE DB provider. - - - Use the OLE DB Provider. This is the default value. - System.Data.OleDb.OleDbConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - Use the MS SQL Server Provider. - System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - Use the ODBC Provider. - Microsoft.Data.Odbc.OdbcConnection,Microsoft.Data.Odbc,version=1.0.3300.0,publicKeyToken=b77a5c561934e089,culture=neutral - This is an optional package that you can download from - http://msdn.microsoft.com/downloads - search for ODBC .NET Data Provider. - - Use the Oracle Provider. - System.Data.OracleClient.OracleConnection, System.Data.OracleClient, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - This is an optional package that you can download from - http://msdn.microsoft.com/downloads - search for .NET Managed Provider for Oracle. - - - - - Gets or sets the command text that is used to insert logging events - into the database. - - - The command text used to insert logging events into the database. - - - - Either the text of the prepared statement or the - name of the stored procedure to execute to write into - the database. - - - The property determines if - this text is a prepared statement or a stored procedure. - - - - - - Gets or sets the command type to execute. - - - The command type to execute. - - - - This value may be either (System.Data.CommandType.Text) to specify - that the is a prepared statement to execute, - or (System.Data.CommandType.StoredProcedure) to specify that the - property is the name of a stored procedure - to execute. - - - The default value is (System.Data.CommandType.Text). - - - - - - Should transactions be used to insert logging events in the database. - - - true if transactions should be used to insert logging events in - the database, otherwise false. The default value is true. - - - - Gets or sets a value that indicates whether transactions should be used - to insert logging events in the database. - - - When set a single transaction will be used to insert the buffered events - into the database. Otherwise each event will be inserted without using - an explicit transaction. - - - - - - Gets or sets the used to call the NetSend method. - - - The used to call the NetSend method. - - - - Unless a specified here for this appender - the is queried for the - security context to use. The default behavior is to use the security context - of the current thread. - - - - - - Should this appender try to reconnect to the database on error. - - - true if the appender should try to reconnect to the database after an - error has occurred, otherwise false. The default value is false, - i.e. not to try to reconnect. - - - - The default behaviour is for the appender not to try to reconnect to the - database if an error occurs. Subsequent logging events are discarded. - - - To force the appender to attempt to reconnect to the database set this - property to true. - - - When the appender attempts to connect to the database there may be a - delay of up to the connection timeout specified in the connection string. - This delay will block the calling application's thread. - Until the connection can be reestablished this potential delay may occur multiple times. - - - - - - Gets or sets the underlying . - - - The underlying . - - - creates a to insert - logging events into a database. Classes deriving from - can use this property to get or set this . Use the - underlying returned from if - you require access beyond that which provides. - - - - - Parameter type used by the . - - - - This class provides the basic database parameter properties - as defined by the interface. - - This type can be subclassed to provide database specific - functionality. The two methods that are called externally are - and . - - - - - - Initializes a new instance of the class. - - - Default constructor for the AdoNetAppenderParameter class. - - - - - Prepare the specified database command object. - - The command to prepare. - - - Prepares the database command object by adding - this parameter to its collection of parameters. - - - - - - Renders the logging event and set the parameter value in the command. - - The command containing the parameter. - The event to be rendered. - - - Renders the logging event using this parameters layout - object. Sets the value of the parameter on the command object. - - - - - - The name of this parameter. - - - - - The database type for this parameter. - - - - - Flag to infer type rather than use the DbType - - - - - The precision for this parameter. - - - - - The scale for this parameter. - - - - - The size for this parameter. - - - - - The to use to render the - logging event into an object for this parameter. - - - - - Gets or sets the name of this parameter. - - - The name of this parameter. - - - - The name of this parameter. The parameter name - must match up to a named parameter to the SQL stored procedure - or prepared statement. - - - - - - Gets or sets the database type for this parameter. - - - The database type for this parameter. - - - - The database type for this parameter. This property should - be set to the database type from the - enumeration. See . - - - This property is optional. If not specified the ADO.NET provider - will attempt to infer the type from the value. - - - - - - - Gets or sets the precision for this parameter. - - - The precision for this parameter. - - - - The maximum number of digits used to represent the Value. - - - This property is optional. If not specified the ADO.NET provider - will attempt to infer the precision from the value. - - - - - - - Gets or sets the scale for this parameter. - - - The scale for this parameter. - - - - The number of decimal places to which Value is resolved. - - - This property is optional. If not specified the ADO.NET provider - will attempt to infer the scale from the value. - - - - - - - Gets or sets the size for this parameter. - - - The size for this parameter. - - - - The maximum size, in bytes, of the data within the column. - - - This property is optional. If not specified the ADO.NET provider - will attempt to infer the size from the value. - - - - - - - Gets or sets the to use to - render the logging event into an object for this - parameter. - - - The used to render the - logging event into an object for this parameter. - - - - The that renders the value for this - parameter. - - - The can be used to adapt - any into a - for use in the property. - - - - - - Appends logging events to the terminal using ANSI color escape sequences. - - - - AnsiColorTerminalAppender appends log events to the standard output stream - or the error output stream using a layout specified by the - user. It also allows the color of a specific level of message to be set. - - - This appender expects the terminal to understand the VT100 control set - in order to interpret the color codes. If the terminal or console does not - understand the control codes the behavior is not defined. - - - By default, all output is written to the console's standard output stream. - The property can be set to direct the output to the - error stream. - - - NOTE: This appender writes each message to the System.Console.Out or - System.Console.Error that is set at the time the event is appended. - Therefore it is possible to programmatically redirect the output of this appender - (for example NUnit does this to capture program output). While this is the desired - behavior of this appender it may have security implications in your application. - - - When configuring the ANSI colored terminal appender, a mapping should be - specified to map a logging level to a color. For example: - - - - - - - - - - - - - - - The Level is the standard log4net logging level and ForeColor and BackColor can be any - of the following values: - - Blue - Green - Red - White - Yellow - Purple - Cyan - - These color values cannot be combined together to make new colors. - - - The attributes can be any combination of the following: - - Brightforeground is brighter - Dimforeground is dimmer - Underscoremessage is underlined - Blinkforeground is blinking (does not work on all terminals) - Reverseforeground and background are reversed - Hiddenoutput is hidden - Strikethroughmessage has a line through it - - While any of these attributes may be combined together not all combinations - work well together, for example setting both Bright and Dim attributes makes - no sense. - - - Patrick Wagstrom - Nicko Cadell - - - - The to use when writing to the Console - standard output stream. - - - - The to use when writing to the Console - standard output stream. - - - - - - The to use when writing to the Console - standard error output stream. - - - - The to use when writing to the Console - standard error output stream. - - - - - - Ansi code to reset terminal - - - - - Initializes a new instance of the class. - - - The instance of the class is set up to write - to the standard output stream. - - - - - Add a mapping of level to color - - The mapping to add - - - Add a mapping to this appender. - Each mapping defines the foreground and background colours - for a level. - - - - - - This method is called by the method. - - The event to log. - - - Writes the event to the console. - - - The format of the output will depend on the appender's layout. - - - - - - Initialize the options for this appender - - - - Initialize the level to color mappings set on this appender. - - - - - - Flag to write output to the error stream rather than the standard output stream - - - - - Mapping from level object to color value - - - - - Target is the value of the console output stream. - - - Target is the value of the console output stream. - This is either "Console.Out" or "Console.Error". - - - - Target is the value of the console output stream. - This is either "Console.Out" or "Console.Error". - - - - - - This appender requires a to be set. - - true - - - This appender requires a to be set. - - - - - - The enum of possible display attributes - - - - The following flags can be combined together to - form the ANSI color attributes. - - - - - - - text is bright - - - - - text is dim - - - - - text is underlined - - - - - text is blinking - - - Not all terminals support this attribute - - - - - text and background colors are reversed - - - - - text is hidden - - - - - text is displayed with a strikethrough - - - - - The enum of possible foreground or background color values for - use with the color mapping method - - - - The output can be in one for the following ANSI colors. - - - - - - - color is black - - - - - color is red - - - - - color is green - - - - - color is yellow - - - - - color is blue - - - - - color is magenta - - - - - color is cyan - - - - - color is white - - - - - A class to act as a mapping between the level that a logging call is made at and - the color it should be displayed as. - - - - Defines the mapping between a level and the color it should be displayed in. - - - - - - An entry in the - - - - This is an abstract base class for types that are stored in the - object. - - - Nicko Cadell - - - - Default protected constructor - - - - Default protected constructor - - - - - - Initialize any options defined on this entry - - - - Should be overridden by any classes that need to initialise based on their options - - - - - - The level that is the key for this mapping - - - The that is the key for this mapping - - - - Get or set the that is the key for this - mapping subclass. - - - - - - Initialize the options for the object - - - - Combine the and together - and append the attributes. - - - - - - The mapped foreground color for the specified level - - - - Required property. - The mapped foreground color for the specified level - - - - - - The mapped background color for the specified level - - - - Required property. - The mapped background color for the specified level - - - - - - The color attributes for the specified level - - - - Required property. - The color attributes for the specified level - - - - - - The combined , and - suitable for setting the ansi terminal color. - - - - - A strongly-typed collection of objects. - - Nicko Cadell - - - - Creates a read-only wrapper for a AppenderCollection instance. - - list to create a readonly wrapper arround - - An AppenderCollection wrapper that is read-only. - - - - - An empty readonly static AppenderCollection - - - - - Initializes a new instance of the AppenderCollection class - that is empty and has the default initial capacity. - - - - - Initializes a new instance of the AppenderCollection class - that has the specified initial capacity. - - - The number of elements that the new AppenderCollection is initially capable of storing. - - - - - Initializes a new instance of the AppenderCollection class - that contains elements copied from the specified AppenderCollection. - - The AppenderCollection whose elements are copied to the new collection. - - - - Initializes a new instance of the AppenderCollection class - that contains elements copied from the specified array. - - The array whose elements are copied to the new list. - - - - Initializes a new instance of the AppenderCollection class - that contains elements copied from the specified collection. - - The collection whose elements are copied to the new list. - - - - Allow subclasses to avoid our default constructors - - - - - - - Copies the entire AppenderCollection to a one-dimensional - array. - - The one-dimensional array to copy to. - - - - Copies the entire AppenderCollection to a one-dimensional - array, starting at the specified index of the target array. - - The one-dimensional array to copy to. - The zero-based index in at which copying begins. - - - - Adds a to the end of the AppenderCollection. - - The to be added to the end of the AppenderCollection. - The index at which the value has been added. - - - - Removes all elements from the AppenderCollection. - - - - - Creates a shallow copy of the . - - A new with a shallow copy of the collection data. - - - - Determines whether a given is in the AppenderCollection. - - The to check for. - true if is found in the AppenderCollection; otherwise, false. - - - - Returns the zero-based index of the first occurrence of a - in the AppenderCollection. - - The to locate in the AppenderCollection. - - The zero-based index of the first occurrence of - in the entire AppenderCollection, if found; otherwise, -1. - - - - - Inserts an element into the AppenderCollection at the specified index. - - The zero-based index at which should be inserted. - The to insert. - - is less than zero - -or- - is equal to or greater than . - - - - - Removes the first occurrence of a specific from the AppenderCollection. - - The to remove from the AppenderCollection. - - The specified was not found in the AppenderCollection. - - - - - Removes the element at the specified index of the AppenderCollection. - - The zero-based index of the element to remove. - - is less than zero - -or- - is equal to or greater than . - - - - - Returns an enumerator that can iterate through the AppenderCollection. - - An for the entire AppenderCollection. - - - - Adds the elements of another AppenderCollection to the current AppenderCollection. - - The AppenderCollection whose elements should be added to the end of the current AppenderCollection. - The new of the AppenderCollection. - - - - Adds the elements of a array to the current AppenderCollection. - - The array whose elements should be added to the end of the AppenderCollection. - The new of the AppenderCollection. - - - - Adds the elements of a collection to the current AppenderCollection. - - The collection whose elements should be added to the end of the AppenderCollection. - The new of the AppenderCollection. - - - - Sets the capacity to the actual number of elements. - - - - - Return the collection elements as an array - - the array - - - - is less than zero - -or- - is equal to or greater than . - - - - - is less than zero - -or- - is equal to or greater than . - - - - - Gets the number of elements actually contained in the AppenderCollection. - - - - - Gets a value indicating whether access to the collection is synchronized (thread-safe). - - true if access to the ICollection is synchronized (thread-safe); otherwise, false. - - - - Gets an object that can be used to synchronize access to the collection. - - - - - Gets or sets the at the specified index. - - The zero-based index of the element to get or set. - - is less than zero - -or- - is equal to or greater than . - - - - - Gets a value indicating whether the collection has a fixed size. - - true if the collection has a fixed size; otherwise, false. The default is false - - - - Gets a value indicating whether the IList is read-only. - - true if the collection is read-only; otherwise, false. The default is false - - - - Gets or sets the number of elements the AppenderCollection can contain. - - - - - Supports type-safe iteration over a . - - - - - - Advances the enumerator to the next element in the collection. - - - true if the enumerator was successfully advanced to the next element; - false if the enumerator has passed the end of the collection. - - - The collection was modified after the enumerator was created. - - - - - Sets the enumerator to its initial position, before the first element in the collection. - - - - - Gets the current element in the collection. - - - - - Type visible only to our subclasses - Used to access protected constructor - - - - - - A value - - - - - Supports simple iteration over a . - - - - - - Initializes a new instance of the Enumerator class. - - - - - - Advances the enumerator to the next element in the collection. - - - true if the enumerator was successfully advanced to the next element; - false if the enumerator has passed the end of the collection. - - - The collection was modified after the enumerator was created. - - - - - Sets the enumerator to its initial position, before the first element in the collection. - - - - - Gets the current element in the collection. - - - - - - - - - Appends log events to the ASP.NET system. - - - - - Diagnostic information and tracing messages that you specify are appended to the output - of the page that is sent to the requesting browser. Optionally, you can view this information - from a separate trace viewer (Trace.axd) that displays trace information for every page in a - given application. - - - Trace statements are processed and displayed only when tracing is enabled. You can control - whether tracing is displayed to a page, to the trace viewer, or both. - - - The logging event is passed to the or - method depending on the level of the logging event. - - - Nicko Cadell - Gert Driesen - - - - Initializes a new instance of the class. - - - - Default constructor. - - - - - - Write the logging event to the ASP.NET trace - - the event to log - - - Write the logging event to the ASP.NET trace - HttpContext.Current.Trace - (). - - - - - - This appender requires a to be set. - - true - - - This appender requires a to be set. - - - - - - Buffers events and then forwards them to attached appenders. - - - - The events are buffered in this appender until conditions are - met to allow the appender to deliver the events to the attached - appenders. See for the - conditions that cause the buffer to be sent. - - The forwarding appender can be used to specify different - thresholds and filters for the same appender at different locations - within the hierarchy. - - - Nicko Cadell - Gert Driesen - - - - Interface for attaching appenders to objects. - - - - Interface for attaching, removing and retrieving appenders. - - - Nicko Cadell - Gert Driesen - - - - Attaches an appender. - - The appender to add. - - - Add the specified appender. The implementation may - choose to allow or deny duplicate appenders. - - - - - - Gets an attached appender with the specified name. - - The name of the appender to get. - - The appender with the name specified, or null if no appender with the - specified name is found. - - - - Returns an attached appender with the specified. - If no appender with the specified name is found null will be - returned. - - - - - - Removes all attached appenders. - - - - Removes and closes all attached appenders - - - - - - Removes the specified appender from the list of attached appenders. - - The appender to remove. - The appender removed from the list - - - The appender removed is not closed. - If you are discarding the appender you must call - on the appender removed. - - - - - - Removes the appender with the specified name from the list of appenders. - - The name of the appender to remove. - The appender removed from the list - - - The appender removed is not closed. - If you are discarding the appender you must call - on the appender removed. - - - - - - Gets all attached appenders. - - - A collection of attached appenders. - - - - Gets a collection of attached appenders. - If there are no attached appenders the - implementation should return an empty - collection rather than null. - - - - - - Initializes a new instance of the class. - - - - Default constructor. - - - - - - Closes the appender and releases resources. - - - - Releases any resources allocated within the appender such as file handles, - network connections, etc. - - - It is a programming error to append to a closed appender. - - - - - - Send the events. - - The events that need to be send. - - - Forwards the events to the attached appenders. - - - - - - Adds an to the list of appenders of this - instance. - - The to add to this appender. - - - If the specified is already in the list of - appenders, then it won't be added again. - - - - - - Looks for the appender with the specified name. - - The name of the appender to lookup. - - The appender with the specified name, or null. - - - - Get the named appender attached to this buffering appender. - - - - - - Removes all previously added appenders from this appender. - - - - This is useful when re-reading configuration information. - - - - - - Removes the specified appender from the list of appenders. - - The appender to remove. - The appender removed from the list - - The appender removed is not closed. - If you are discarding the appender you must call - on the appender removed. - - - - - Removes the appender with the specified name from the list of appenders. - - The name of the appender to remove. - The appender removed from the list - - The appender removed is not closed. - If you are discarding the appender you must call - on the appender removed. - - - - - Implementation of the interface - - - - - Gets the appenders contained in this appender as an - . - - - If no appenders can be found, then an - is returned. - - - A collection of the appenders in this appender. - - - - - Appends logging events to the console. - - - - ColoredConsoleAppender appends log events to the standard output stream - or the error output stream using a layout specified by the - user. It also allows the color of a specific type of message to be set. - - - By default, all output is written to the console's standard output stream. - The property can be set to direct the output to the - error stream. - - - NOTE: This appender writes directly to the application's attached console - not to the System.Console.Out or System.Console.Error TextWriter. - The System.Console.Out and System.Console.Error streams can be - programmatically redirected (for example NUnit does this to capture program output). - This appender will ignore these redirections because it needs to use Win32 - API calls to colorize the output. To respect these redirections the - must be used. - - - When configuring the colored console appender, mapping should be - specified to map a logging level to a color. For example: - - - - - - - - - - - - - - The Level is the standard log4net logging level and ForeColor and BackColor can be any - combination of the following values: - - Blue - Green - Red - White - Yellow - Purple - Cyan - HighIntensity - - - - Rick Hobbs - Nicko Cadell - - - - The to use when writing to the Console - standard output stream. - - - - The to use when writing to the Console - standard output stream. - - - - - - The to use when writing to the Console - standard error output stream. - - - - The to use when writing to the Console - standard error output stream. - - - - - - Initializes a new instance of the class. - - - The instance of the class is set up to write - to the standard output stream. - - - - - Initializes a new instance of the class - with the specified layout. - - the layout to use for this appender - - The instance of the class is set up to write - to the standard output stream. - - - - - Initializes a new instance of the class - with the specified layout. - - the layout to use for this appender - flag set to true to write to the console error stream - - When is set to true, output is written to - the standard error output stream. Otherwise, output is written to the standard - output stream. - - - - - Add a mapping of level to color - done by the config file - - The mapping to add - - - Add a mapping to this appender. - Each mapping defines the foreground and background colors - for a level. - - - - - - This method is called by the method. - - The event to log. - - - Writes the event to the console. - - - The format of the output will depend on the appender's layout. - - - - - - Initialize the options for this appender - - - - Initialize the level to color mappings set on this appender. - - - - - - Flag to write output to the error stream rather than the standard output stream - - - - - Mapping from level object to color value - - - - - The console output stream writer to write to - - - - This writer is not thread safe. - - - - - - Target is the value of the console output stream. - This is either "Console.Out" or "Console.Error". - - - Target is the value of the console output stream. - This is either "Console.Out" or "Console.Error". - - - - Target is the value of the console output stream. - This is either "Console.Out" or "Console.Error". - - - - - - This appender requires a to be set. - - true - - - This appender requires a to be set. - - - - - - The enum of possible color values for use with the color mapping method - - - - The following flags can be combined together to - form the colors. - - - - - - - color is blue - - - - - color is green - - - - - color is red - - - - - color is white - - - - - color is yellow - - - - - color is purple - - - - - color is cyan - - - - - color is intensified - - - - - A class to act as a mapping between the level that a logging call is made at and - the color it should be displayed as. - - - - Defines the mapping between a level and the color it should be displayed in. - - - - - - Initialize the options for the object - - - - Combine the and together. - - - - - - The mapped foreground color for the specified level - - - - Required property. - The mapped foreground color for the specified level. - - - - - - The mapped background color for the specified level - - - - Required property. - The mapped background color for the specified level. - - - - - - The combined and suitable for - setting the console color. - - - - - Appends logging events to the console. - - - - ConsoleAppender appends log events to the standard output stream - or the error output stream using a layout specified by the - user. - - - By default, all output is written to the console's standard output stream. - The property can be set to direct the output to the - error stream. - - - NOTE: This appender writes each message to the System.Console.Out or - System.Console.Error that is set at the time the event is appended. - Therefore it is possible to programmatically redirect the output of this appender - (for example NUnit does this to capture program output). While this is the desired - behavior of this appender it may have security implications in your application. - - - Nicko Cadell - Gert Driesen - - - - The to use when writing to the Console - standard output stream. - - - - The to use when writing to the Console - standard output stream. - - - - - - The to use when writing to the Console - standard error output stream. - - - - The to use when writing to the Console - standard error output stream. - - - - - - Initializes a new instance of the class. - - - The instance of the class is set up to write - to the standard output stream. - - - - - Initializes a new instance of the class - with the specified layout. - - the layout to use for this appender - - The instance of the class is set up to write - to the standard output stream. - - - - - Initializes a new instance of the class - with the specified layout. - - the layout to use for this appender - flag set to true to write to the console error stream - - When is set to true, output is written to - the standard error output stream. Otherwise, output is written to the standard - output stream. - - - - - This method is called by the method. - - The event to log. - - - Writes the event to the console. - - - The format of the output will depend on the appender's layout. - - - - - - Target is the value of the console output stream. - This is either "Console.Out" or "Console.Error". - - - Target is the value of the console output stream. - This is either "Console.Out" or "Console.Error". - - - - Target is the value of the console output stream. - This is either "Console.Out" or "Console.Error". - - - - - - This appender requires a to be set. - - true - - - This appender requires a to be set. - - - - - - Appends log events to the system. - - - - The application configuration file can be used to control what listeners - are actually used. See the MSDN documentation for the - class for details on configuring the - debug system. - - - Events are written using the - method. The event's logger name is passed as the value for the category name to the Write method. - - - Nicko Cadell - - - - Initializes a new instance of the . - - - - Default constructor. - - - - - - Initializes a new instance of the - with a specified layout. - - The layout to use with this appender. - - - Obsolete constructor. - - - - - - Writes the logging event to the system. - - The event to log. - - - Writes the logging event to the system. - If is true then the - is called. - - - - - - Immediate flush means that the underlying writer or output stream - will be flushed at the end of each append operation. - - - - Immediate flush is slower but ensures that each append request is - actually written. If is set to - false, then there is a good chance that the last few - logs events are not actually written to persistent media if and - when the application crashes. - - - The default value is true. - - - - - Gets or sets a value that indicates whether the appender will - flush at the end of each write. - - - The default behavior is to flush at the end of each - write. If the option is set tofalse, then the underlying - stream can defer writing to physical medium to a later time. - - - Avoiding the flush operation at the end of each append results - in a performance gain of 10 to 20 percent. However, there is safety - trade-off involved in skipping flushing. Indeed, when flushing is - skipped, then it is likely that the last few log events will not - be recorded on disk when the application exits. This is a high - price to pay even for a 20% performance gain. - - - - - - This appender requires a to be set. - - true - - - This appender requires a to be set. - - - - - - Writes events to the system event log. - - - - The EventID of the event log entry can be - set using the EventLogEventID property () - on the . - - - There is a limit of 32K characters for an event log message - - - When configuring the EventLogAppender a mapping can be - specified to map a logging level to an event log entry type. For example: - - - <mapping> - <level value="ERROR" /> - <eventLogEntryType value="Error" /> - </mapping> - <mapping> - <level value="DEBUG" /> - <eventLogEntryType value="Information" /> - </mapping> - - - The Level is the standard log4net logging level and eventLogEntryType can be any value - from the enum, i.e.: - - Erroran error event - Warninga warning event - Informationan informational event - - - - Aspi Havewala - Douglas de la Torre - Nicko Cadell - Gert Driesen - Thomas Voss - - - - Initializes a new instance of the class. - - - - Default constructor. - - - - - - Initializes a new instance of the class - with the specified . - - The to use with this appender. - - - Obsolete constructor. - - - - - - Add a mapping of level to - done by the config file - - The mapping to add - - - Add a mapping to this appender. - Each mapping defines the event log entry type for a level. - - - - - - Initialize the appender based on the options set - - - - This is part of the delayed object - activation scheme. The method must - be called on this object after the configuration properties have - been set. Until is called this - object is in an undefined state and must not be used. - - - If any of the configuration properties are modified then - must be called again. - - - - - - Create an event log source - - - Uses different API calls under NET_2_0 - - - - - This method is called by the - method. - - the event to log - - Writes the event to the system event log using the - . - - If the event has an EventID property (see ) - set then this integer will be used as the event log event id. - - - There is a limit of 32K characters for an event log message - - - - - - Get the equivalent for a - - the Level to convert to an EventLogEntryType - The equivalent for a - - Because there are fewer applicable - values to use in logging levels than there are in the - this is a one way mapping. There is - a loss of information during the conversion. - - - - - The log name is the section in the event logs where the messages - are stored. - - - - - Name of the application to use when logging. This appears in the - application column of the event log named by . - - - - - The name of the machine which holds the event log. This is - currently only allowed to be '.' i.e. the current machine. - - - - - Mapping from level object to EventLogEntryType - - - - - The security context to use for privileged calls - - - - - The name of the log where messages will be stored. - - - The string name of the log where messages will be stored. - - - This is the name of the log as it appears in the Event Viewer - tree. The default value is to log into the Application - log, this is where most applications write their events. However - if you need a separate log for your application (or applications) - then you should set the appropriately. - This should not be used to distinguish your event log messages - from those of other applications, the - property should be used to distinguish events. This property should be - used to group together events into a single log. - - - - - - Property used to set the Application name. This appears in the - event logs when logging. - - - The string used to distinguish events from different sources. - - - Sets the event log source property. - - - - - This property is used to return the name of the computer to use - when accessing the event logs. Currently, this is the current - computer, denoted by a dot "." - - - The string name of the machine holding the event log that - will be logged into. - - - This property cannot be changed. It is currently set to '.' - i.e. the local machine. This may be changed in future. - - - - - Gets or sets the used to write to the EventLog. - - - The used to write to the EventLog. - - - - The system security context used to write to the EventLog. - - - Unless a specified here for this appender - the is queried for the - security context to use. The default behavior is to use the security context - of the current thread. - - - - - - This appender requires a to be set. - - true - - - This appender requires a to be set. - - - - - - A class to act as a mapping between the level that a logging call is made at and - the color it should be displayed as. - - - - Defines the mapping between a level and its event log entry type. - - - - - - The for this entry - - - - Required property. - The for this entry - - - - - - Appends logging events to a file. - - - - Logging events are sent to the file specified by - the property. - - - The file can be opened in either append or overwrite mode - by specifying the property. - If the file path is relative it is taken as relative from - the application base directory. The file encoding can be - specified by setting the property. - - - The layout's and - values will be written each time the file is opened and closed - respectively. If the property is - then the file may contain multiple copies of the header and footer. - - - This appender will first try to open the file for writing when - is called. This will typically be during configuration. - If the file cannot be opened for writing the appender will attempt - to open the file again each time a message is logged to the appender. - If the file cannot be opened for writing when a message is logged then - the message will be discarded by this appender. - - - The supports pluggable file locking models via - the property. - The default behavior, implemented by - is to obtain an exclusive write lock on the file until this appender is closed. - The alternative model, , only holds a - write lock while the appender is writing a logging event. - - - Nicko Cadell - Gert Driesen - Rodrigo B. de Oliveira - Douglas de la Torre - Niall Daley - - - - Sends logging events to a . - - - - An Appender that writes to a . - - - This appender may be used stand alone if initialized with an appropriate - writer, however it is typically used as a base class for an appender that - can open a to write to. - - - Nicko Cadell - Gert Driesen - Douglas de la Torre - - - - Initializes a new instance of the class. - - - - Default constructor. - - - - - - Initializes a new instance of the class and - sets the output destination to a new initialized - with the specified . - - The layout to use with this appender. - The to output to. - - - Obsolete constructor. - - - - - - Initializes a new instance of the class and sets - the output destination to the specified . - - The layout to use with this appender - The to output to - - The must have been previously opened. - - - - Obsolete constructor. - - - - - - This method determines if there is a sense in attempting to append. - - - - This method checked if an output target has been set and if a - layout has been set. - - - false if any of the preconditions fail. - - - - This method is called by the - method. - - The event to log. - - - Writes a log statement to the output stream if the output stream exists - and is writable. - - - The format of the output will depend on the appender's layout. - - - - - - This method is called by the - method. - - The array of events to log. - - - This method writes all the bulk logged events to the output writer - before flushing the stream. - - - - - - Close this appender instance. The underlying stream or writer is also closed. - - - Closed appenders cannot be reused. - - - - - Writes the footer and closes the underlying . - - - - Writes the footer and closes the underlying . - - - - - - Closes the underlying . - - - - Closes the underlying . - - - - - - Clears internal references to the underlying - and other variables. - - - - Subclasses can override this method for an alternate closing behavior. - - - - - - Writes a footer as produced by the embedded layout's property. - - - - Writes a footer as produced by the embedded layout's property. - - - - - - Writes a header produced by the embedded layout's property. - - - - Writes a header produced by the embedded layout's property. - - - - - - Called to allow a subclass to lazily initialize the writer - - - - This method is called when an event is logged and the or - have not been set. This allows a subclass to - attempt to initialize the writer multiple times. - - - - - - This is the where logging events - will be written to. - - - - - Immediate flush means that the underlying - or output stream will be flushed at the end of each append operation. - - - - Immediate flush is slower but ensures that each append request is - actually written. If is set to - false, then there is a good chance that the last few - logging events are not actually persisted if and when the application - crashes. - - - The default value is true. - - - - - - Gets or set whether the appender will flush at the end - of each append operation. - - - - The default behavior is to flush at the end of each - append operation. - - - If this option is set to false, then the underlying - stream can defer persisting the logging event to a later - time. - - - - Avoiding the flush operation at the end of each append results in - a performance gain of 10 to 20 percent. However, there is safety - trade-off involved in skipping flushing. Indeed, when flushing is - skipped, then it is likely that the last few log events will not - be recorded on disk when the application exits. This is a high - price to pay even for a 20% performance gain. - - - - - Sets the where the log output will go. - - - - The specified must be open and writable. - - - The will be closed when the appender - instance is closed. - - - Note: Logging to an unopened will fail. - - - - - - Gets or set the and the underlying - , if any, for this appender. - - - The for this appender. - - - - - This appender requires a to be set. - - true - - - This appender requires a to be set. - - - - - - Gets or sets the where logging events - will be written to. - - - The where logging events are written. - - - - This is the where logging events - will be written to. - - - - - - Default constructor - - - - Default constructor - - - - - - Construct a new appender using the layout, file and append mode. - - the layout to use with this appender - the full path to the file to write to - flag to indicate if the file should be appended to - - - Obsolete constructor. - - - - - - Construct a new appender using the layout and file specified. - The file will be appended to. - - the layout to use with this appender - the full path to the file to write to - - - Obsolete constructor. - - - - - - Activate the options on the file appender. - - - - This is part of the delayed object - activation scheme. The method must - be called on this object after the configuration properties have - been set. Until is called this - object is in an undefined state and must not be used. - - - If any of the configuration properties are modified then - must be called again. - - - This will cause the file to be opened. - - - - - - Closes any previously opened file and calls the parent's . - - - - Resets the filename and the file stream. - - - - - - Called to initialize the file writer - - - - Will be called for each logged message until the file is - successfully opened. - - - - - - This method is called by the - method. - - The event to log. - - - Writes a log statement to the output stream if the output stream exists - and is writable. - - - The format of the output will depend on the appender's layout. - - - - - - This method is called by the - method. - - The array of events to log. - - - Acquires the output file locks once before writing all the events to - the stream. - - - - - - Writes a footer as produced by the embedded layout's property. - - - - Writes a footer as produced by the embedded layout's property. - - - - - - Writes a header produced by the embedded layout's property. - - - - Writes a header produced by the embedded layout's property. - - - - - - Closes the underlying . - - - - Closes the underlying . - - - - - - Closes the previously opened file. - - - - Writes the to the file and then - closes the file. - - - - - - Sets and opens the file where the log output will go. The specified file must be writable. - - The path to the log file. Must be a fully qualified path. - If true will append to fileName. Otherwise will truncate fileName - - - Calls but guarantees not to throw an exception. - Errors are passed to the . - - - - - - Sets and opens the file where the log output will go. The specified file must be writable. - - The path to the log file. Must be a fully qualified path. - If true will append to fileName. Otherwise will truncate fileName - - - If there was already an opened file, then the previous file - is closed first. - - - This method will ensure that the directory structure - for the specified exists. - - - - - - Sets the quiet writer used for file output - - the file stream that has been opened for writing - - - This implementation of creates a - over the and passes it to the - method. - - - This method can be overridden by sub classes that want to wrap the - in some way, for example to encrypt the output - data using a System.Security.Cryptography.CryptoStream. - - - - - - Sets the quiet writer being used. - - the writer over the file stream that has been opened for writing - - - This method can be overridden by sub classes that want to - wrap the in some way. - - - - - - Convert a path into a fully qualified path. - - The path to convert. - The fully qualified path. - - - Converts the path specified to a fully - qualified path. If the path is relative it is - taken as relative from the application base - directory. - - - - - - Flag to indicate if we should append to the file - or overwrite the file. The default is to append. - - - - - The name of the log file. - - - - - The encoding to use for the file stream. - - - - - The security context to use for privileged calls - - - - - The stream to log to. Has added locking semantics - - - - - The locking model to use - - - - - Gets or sets the path to the file that logging will be written to. - - - The path to the file that logging will be written to. - - - - If the path is relative it is taken as relative from - the application base directory. - - - - - - Gets or sets a flag that indicates whether the file should be - appended to or overwritten. - - - Indicates whether the file should be appended to or overwritten. - - - - If the value is set to false then the file will be overwritten, if - it is set to true then the file will be appended to. - - The default value is true. - - - - - Gets or sets used to write to the file. - - - The used to write to the file. - - - - The default encoding set is - which is the encoding for the system's current ANSI code page. - - - - - - Gets or sets the used to write to the file. - - - The used to write to the file. - - - - Unless a specified here for this appender - the is queried for the - security context to use. The default behavior is to use the security context - of the current thread. - - - - - - Gets or sets the used to handle locking of the file. - - - The used to lock the file. - - - - Gets or sets the used to handle locking of the file. - - - There are two built in locking models, and . - The former locks the file from the start of logging to the end and the - later lock only for the minimal amount of time when logging each message. - - - The default locking model is the . - - - - - - Write only that uses the - to manage access to an underlying resource. - - - - - True asynchronous writes are not supported, the implementation forces a synchronous write. - - - - - Exception base type for log4net. - - - - This type extends . It - does not add any new functionality but does differentiate the - type of exception being thrown. - - - Nicko Cadell - Gert Driesen - - - - Constructor - - - - Initializes a new instance of the class. - - - - - - Constructor - - A message to include with the exception. - - - Initializes a new instance of the class with - the specified message. - - - - - - Constructor - - A message to include with the exception. - A nested exception to include. - - - Initializes a new instance of the class - with the specified message and inner exception. - - - - - - Serialization constructor - - The that holds the serialized object data about the exception being thrown. - The that contains contextual information about the source or destination. - - - Initializes a new instance of the class - with serialized data. - - - - - - Locking model base class - - - - Base class for the locking models available to the derived loggers. - - - - - - Open the output file - - The filename to use - Whether to append to the file, or overwrite - The encoding to use - - - Open the file specified and prepare for logging. - No writes will be made until is called. - Must be called before any calls to , - and . - - - - - - Close the file - - - - Close the file. No further writes will be made. - - - - - - Acquire the lock on the file - - A stream that is ready to be written to. - - - Acquire the lock on the file in preparation for writing to it. - Return a stream pointing to the file. - must be called to release the lock on the output file. - - - - - - Release the lock on the file - - - - Release the lock on the file. No further writes will be made to the - stream until is called again. - - - - - - Gets or sets the for this LockingModel - - - The for this LockingModel - - - - The file appender this locking model is attached to and working on - behalf of. - - - The file appender is used to locate the security context and the error handler to use. - - - The value of this property will be set before is - called. - - - - - - Hold an exclusive lock on the output file - - - - Open the file once for writing and hold it open until is called. - Maintains an exclusive lock on the file during this time. - - - - - - Open the file specified and prepare for logging. - - The filename to use - Whether to append to the file, or overwrite - The encoding to use - - - Open the file specified and prepare for logging. - No writes will be made until is called. - Must be called before any calls to , - and . - - - - - - Close the file - - - - Close the file. No further writes will be made. - - - - - - Acquire the lock on the file - - A stream that is ready to be written to. - - - Does nothing. The lock is already taken - - - - - - Release the lock on the file - - - - Does nothing. The lock will be released when the file is closed. - - - - - - Acquires the file lock for each write - - - - Opens the file once for each / cycle, - thus holding the lock for the minimal amount of time. This method of locking - is considerably slower than but allows - other processes to move/delete the log file whilst logging continues. - - - - - - Prepares to open the file when the first message is logged. - - The filename to use - Whether to append to the file, or overwrite - The encoding to use - - - Open the file specified and prepare for logging. - No writes will be made until is called. - Must be called before any calls to , - and . - - - - - - Close the file - - - - Close the file. No further writes will be made. - - - - - - Acquire the lock on the file - - A stream that is ready to be written to. - - - Acquire the lock on the file in preparation for writing to it. - Return a stream pointing to the file. - must be called to release the lock on the output file. - - - - - - Release the lock on the file - - - - Release the lock on the file. No further writes will be made to the - stream until is called again. - - - - - - This appender forwards logging events to attached appenders. - - - - The forwarding appender can be used to specify different thresholds - and filters for the same appender at different locations within the hierarchy. - - - Nicko Cadell - Gert Driesen - - - - Initializes a new instance of the class. - - - - Default constructor. - - - - - - Closes the appender and releases resources. - - - - Releases any resources allocated within the appender such as file handles, - network connections, etc. - - - It is a programming error to append to a closed appender. - - - - - - Forward the logging event to the attached appenders - - The event to log. - - - Delivers the logging event to all the attached appenders. - - - - - - Forward the logging events to the attached appenders - - The array of events to log. - - - Delivers the logging events to all the attached appenders. - - - - - - Adds an to the list of appenders of this - instance. - - The to add to this appender. - - - If the specified is already in the list of - appenders, then it won't be added again. - - - - - - Looks for the appender with the specified name. - - The name of the appender to lookup. - - The appender with the specified name, or null. - - - - Get the named appender attached to this appender. - - - - - - Removes all previously added appenders from this appender. - - - - This is useful when re-reading configuration information. - - - - - - Removes the specified appender from the list of appenders. - - The appender to remove. - The appender removed from the list - - The appender removed is not closed. - If you are discarding the appender you must call - on the appender removed. - - - - - Removes the appender with the specified name from the list of appenders. - - The name of the appender to remove. - The appender removed from the list - - The appender removed is not closed. - If you are discarding the appender you must call - on the appender removed. - - - - - Implementation of the interface - - - - - Gets the appenders contained in this appender as an - . - - - If no appenders can be found, then an - is returned. - - - A collection of the appenders in this appender. - - - - - Logs events to a local syslog service. - - - - This appender uses the POSIX libc library functions openlog, syslog, and closelog. - If these functions are not available on the local system then this appender will not work! - - - The functions openlog, syslog, and closelog are specified in SUSv2 and - POSIX 1003.1-2001 standards. These are used to log messages to the local syslog service. - - - This appender talks to a local syslog service. If you need to log to a remote syslog - daemon and you cannot configure your local syslog service to do this you may be - able to use the to log via UDP. - - - Syslog messages must have a facility and and a severity. The severity - is derived from the Level of the logging event. - The facility must be chosen from the set of defined syslog - values. The facilities list is predefined - and cannot be extended. - - - An identifier is specified with each log message. This can be specified - by setting the property. The identity (also know - as the tag) must not contain white space. The default value for the - identity is the application name (from ). - - - Rob Lyon - Nicko Cadell - - - - Initializes a new instance of the class. - - - This instance of the class is set up to write - to a local syslog service. - - - - - Add a mapping of level to severity - - The mapping to add - - - Adds a to this appender. - - - - - - Initialize the appender based on the options set. - - - - This is part of the delayed object - activation scheme. The method must - be called on this object after the configuration properties have - been set. Until is called this - object is in an undefined state and must not be used. - - - If any of the configuration properties are modified then - must be called again. - - - - - - This method is called by the method. - - The event to log. - - - Writes the event to a remote syslog daemon. - - - The format of the output will depend on the appender's layout. - - - - - - Close the syslog when the appender is closed - - - - Close the syslog when the appender is closed - - - - - - Translates a log4net level to a syslog severity. - - A log4net level. - A syslog severity. - - - Translates a log4net level to a syslog severity. - - - - - - Generate a syslog priority. - - The syslog facility. - The syslog severity. - A syslog priority. - - - - The facility. The default facility is . - - - - - The message identity - - - - - Marshaled handle to the identity string. We have to hold on to the - string as the openlog and syslog APIs just hold the - pointer to the ident and dereference it for each log message. - - - - - Mapping from level object to syslog severity - - - - - Open connection to system logger. - - - - - Generate a log message. - - - - The libc syslog method takes a format string and a variable argument list similar - to the classic printf function. As this type of vararg list is not supported - by C# we need to specify the arguments explicitly. Here we have specified the - format string with a single message argument. The caller must set the format - string to "%s". - - - - - - Close descriptor used to write to system logger. - - - - - Message identity - - - - An identifier is specified with each log message. This can be specified - by setting the property. The identity (also know - as the tag) must not contain white space. The default value for the - identity is the application name (from ). - - - - - - Syslog facility - - - Set to one of the values. The list of - facilities is predefined and cannot be extended. The default value - is . - - - - - This appender requires a to be set. - - true - - - This appender requires a to be set. - - - - - - syslog severities - - - - The log4net Level maps to a syslog severity using the - method and the - class. The severity is set on . - - - - - - system is unusable - - - - - action must be taken immediately - - - - - critical conditions - - - - - error conditions - - - - - warning conditions - - - - - normal but significant condition - - - - - informational - - - - - debug-level messages - - - - - syslog facilities - - - - The syslog facility defines which subsystem the logging comes from. - This is set on the property. - - - - - - kernel messages - - - - - random user-level messages - - - - - mail system - - - - - system daemons - - - - - security/authorization messages - - - - - messages generated internally by syslogd - - - - - line printer subsystem - - - - - network news subsystem - - - - - UUCP subsystem - - - - - clock (cron/at) daemon - - - - - security/authorization messages (private) - - - - - ftp daemon - - - - - NTP subsystem - - - - - log audit - - - - - log alert - - - - - clock daemon - - - - - reserved for local use - - - - - reserved for local use - - - - - reserved for local use - - - - - reserved for local use - - - - - reserved for local use - - - - - reserved for local use - - - - - reserved for local use - - - - - reserved for local use - - - - - A class to act as a mapping between the level that a logging call is made at and - the syslog severity that is should be logged at. - - - - A class to act as a mapping between the level that a logging call is made at and - the syslog severity that is should be logged at. - - - - - - The mapped syslog severity for the specified level - - - - Required property. - The mapped syslog severity for the specified level - - - - - - Stores logging events in an array. - - - - The memory appender stores all the logging events - that are appended in an in-memory array. - - - Use the method to get - the current list of events that have been appended. - - - Use the method to clear the - current list of events. - - - Julian Biddle - Nicko Cadell - Gert Driesen - - - - Initializes a new instance of the class. - - - - Default constructor. - - - - - - Gets the events that have been logged. - - The events that have been logged - - - Gets the events that have been logged. - - - - - - This method is called by the method. - - the event to log - - Stores the in the events list. - - - - - Clear the list of events - - - Clear the list of events - - - - - The list of events that have been appended. - - - - - Value indicating which fields in the event should be fixed - - - By default all fields are fixed - - - - - Gets or sets a value indicating whether only part of the logging event - data should be fixed. - - - true if the appender should only fix part of the logging event - data, otherwise false. The default is false. - - - - Setting this property to true will cause only part of the event - data to be fixed and stored in the appender, hereby improving performance. - - - See for more information. - - - - - - Gets or sets the fields that will be fixed in the event - - - - The logging event needs to have certain thread specific values - captured before it can be buffered. See - for details. - - - - - - Logs entries by sending network messages using the - native function. - - - - You can send messages only to names that are active - on the network. If you send the message to a user name, - that user must be logged on and running the Messenger - service to receive the message. - - - The receiver will get a top most window displaying the - messages one at a time, therefore this appender should - not be used to deliver a high volume of messages. - - - The following table lists some possible uses for this appender : - - - - - Action - Property Value(s) - - - Send a message to a user account on the local machine - - - = <name of the local machine> - - - = <user name> - - - - - Send a message to a user account on a remote machine - - - = <name of the remote machine> - - - = <user name> - - - - - Send a message to a domain user account - - - = <name of a domain controller | uninitialized> - - - = <user name> - - - - - Send a message to all the names in a workgroup or domain - - - = <workgroup name | domain name>* - - - - - Send a message from the local machine to a remote machine - - - = <name of the local machine | uninitialized> - - - = <name of the remote machine> - - - - - - - Note : security restrictions apply for sending - network messages, see - for more information. - - - - - An example configuration section to log information - using this appender from the local machine, named - LOCAL_PC, to machine OPERATOR_PC : - - - - - - - - - - Nicko Cadell - Gert Driesen - - - - The DNS or NetBIOS name of the server on which the function is to execute. - - - - - The sender of the network message. - - - - - The message alias to which the message should be sent. - - - - - The security context to use for privileged calls - - - - - Initializes the appender. - - - The default constructor initializes all fields to their default values. - - - - - Initialize the appender based on the options set. - - - - This is part of the delayed object - activation scheme. The method must - be called on this object after the configuration properties have - been set. Until is called this - object is in an undefined state and must not be used. - - - If any of the configuration properties are modified then - must be called again. - - - The appender will be ignored if no was specified. - - - The required property was not specified. - - - - This method is called by the method. - - The event to log. - - - Sends the event using a network message. - - - - - - Sends a buffer of information to a registered message alias. - - The DNS or NetBIOS name of the server on which the function is to execute. - The message alias to which the message buffer should be sent - The originator of the message. - The message text. - The length, in bytes, of the message text. - - - The following restrictions apply for sending network messages: - - - - - Platform - Requirements - - - Windows NT - - - No special group membership is required to send a network message. - - - Admin, Accounts, Print, or Server Operator group membership is required to - successfully send a network message on a remote server. - - - - - Windows 2000 or later - - - If you send a message on a domain controller that is running Active Directory, - access is allowed or denied based on the access control list (ACL) for the securable - object. The default ACL permits only Domain Admins and Account Operators to send a network message. - - - On a member server or workstation, only Administrators and Server Operators can send a network message. - - - - - - - For more information see Security Requirements for the Network Management Functions. - - - - - If the function succeeds, the return value is zero. - - - - - - Gets or sets the sender of the message. - - - The sender of the message. - - - If this property is not specified, the message is sent from the local computer. - - - - - Gets or sets the message alias to which the message should be sent. - - - The recipient of the message. - - - This property should always be specified in order to send a message. - - - - - Gets or sets the DNS or NetBIOS name of the remote server on which the function is to execute. - - - DNS or NetBIOS name of the remote server on which the function is to execute. - - - - For Windows NT 4.0 and earlier, the string should begin with \\. - - - If this property is not specified, the local computer is used. - - - - - - Gets or sets the used to call the NetSend method. - - - The used to call the NetSend method. - - - - Unless a specified here for this appender - the is queried for the - security context to use. The default behavior is to use the security context - of the current thread. - - - - - - This appender requires a to be set. - - true - - - This appender requires a to be set. - - - - - - Appends log events to the OutputDebugString system. - - - - OutputDebugStringAppender appends log events to the - OutputDebugString system. - - - The string is passed to the native OutputDebugString - function. - - - Nicko Cadell - Gert Driesen - - - - Initializes a new instance of the class. - - - - Default constructor. - - - - - - Write the logging event to the output debug string API - - the event to log - - - Write the logging event to the output debug string API - - - - - - Stub for OutputDebugString native method - - the string to output - - - Stub for OutputDebugString native method - - - - - - This appender requires a to be set. - - true - - - This appender requires a to be set. - - - - - - Logs events to a remote syslog daemon. - - - - The BSD syslog protocol is used to remotely log to - a syslog daemon. The syslogd listens for for messages - on UDP port 514. - - - The syslog UDP protocol is not authenticated. Most syslog daemons - do not accept remote log messages because of the security implications. - You may be able to use the LocalSyslogAppender to talk to a local - syslog service. - - - There is an RFC 3164 that claims to document the BSD Syslog Protocol. - This RFC can be seen here: http://www.faqs.org/rfcs/rfc3164.html. - This appender generates what the RFC calls an "Original Device Message", - i.e. does not include the TIMESTAMP or HOSTNAME fields. By observation - this format of message will be accepted by all current syslog daemon - implementations. The daemon will attach the current time and the source - hostname or IP address to any messages received. - - - Syslog messages must have a facility and and a severity. The severity - is derived from the Level of the logging event. - The facility must be chosen from the set of defined syslog - values. The facilities list is predefined - and cannot be extended. - - - An identifier is specified with each log message. This can be specified - by setting the property. The identity (also know - as the tag) must not contain white space. The default value for the - identity is the application name (from ). - - - Rob Lyon - Nicko Cadell - - - - Sends logging events as connectionless UDP datagrams to a remote host or a - multicast group using an . - - - - UDP guarantees neither that messages arrive, nor that they arrive in the correct order. - - - To view the logging results, a custom application can be developed that listens for logging - events. - - - When decoding events send via this appender remember to use the same encoding - to decode the events as was used to send the events. See the - property to specify the encoding to use. - - - - This example shows how to log receive logging events that are sent - on IP address 244.0.0.1 and port 8080 to the console. The event is - encoded in the packet as a unicode string and it is decoded as such. - - IPEndPoint remoteEndPoint = new IPEndPoint(IPAddress.Any, 0); - UdpClient udpClient; - byte[] buffer; - string loggingEvent; - - try - { - udpClient = new UdpClient(8080); - - while(true) - { - buffer = udpClient.Receive(ref remoteEndPoint); - loggingEvent = System.Text.Encoding.Unicode.GetString(buffer); - Console.WriteLine(loggingEvent); - } - } - catch(Exception e) - { - Console.WriteLine(e.ToString()); - } - - - Dim remoteEndPoint as IPEndPoint - Dim udpClient as UdpClient - Dim buffer as Byte() - Dim loggingEvent as String - - Try - remoteEndPoint = new IPEndPoint(IPAddress.Any, 0) - udpClient = new UdpClient(8080) - - While True - buffer = udpClient.Receive(ByRef remoteEndPoint) - loggingEvent = System.Text.Encoding.Unicode.GetString(buffer) - Console.WriteLine(loggingEvent) - Wend - Catch e As Exception - Console.WriteLine(e.ToString()) - End Try - - - An example configuration section to log information using this appender to the - IP 224.0.0.1 on port 8080: - - - - - - - - - - Gert Driesen - Nicko Cadell - - - - Initializes a new instance of the class. - - - The default constructor initializes all fields to their default values. - - - - - Initialize the appender based on the options set. - - - - This is part of the delayed object - activation scheme. The method must - be called on this object after the configuration properties have - been set. Until is called this - object is in an undefined state and must not be used. - - - If any of the configuration properties are modified then - must be called again. - - - The appender will be ignored if no was specified or - an invalid remote or local TCP port number was specified. - - - The required property was not specified. - The TCP port number assigned to or is less than or greater than . - - - - This method is called by the method. - - The event to log. - - - Sends the event using an UDP datagram. - - - Exceptions are passed to the . - - - - - - Closes the UDP connection and releases all resources associated with - this instance. - - - - Disables the underlying and releases all managed - and unmanaged resources associated with the . - - - - - - Initializes the underlying connection. - - - - The underlying is initialized and binds to the - port number from which you intend to communicate. - - - Exceptions are passed to the . - - - - - - The IP address of the remote host or multicast group to which - the logging event will be sent. - - - - - The TCP port number of the remote host or multicast group to - which the logging event will be sent. - - - - - The cached remote endpoint to which the logging events will be sent. - - - - - The TCP port number from which the will communicate. - - - - - The instance that will be used for sending the - logging events. - - - - - The encoding to use for the packet. - - - - - Gets or sets the IP address of the remote host or multicast group to which - the underlying should sent the logging event. - - - The IP address of the remote host or multicast group to which the logging event - will be sent. - - - - Multicast addresses are identified by IP class D addresses (in the range 224.0.0.0 to - 239.255.255.255). Multicast packets can pass across different networks through routers, so - it is possible to use multicasts in an Internet scenario as long as your network provider - supports multicasting. - - - Hosts that want to receive particular multicast messages must register their interest by joining - the multicast group. Multicast messages are not sent to networks where no host has joined - the multicast group. Class D IP addresses are used for multicast groups, to differentiate - them from normal host addresses, allowing nodes to easily detect if a message is of interest. - - - Static multicast addresses that are needed globally are assigned by IANA. A few examples are listed in the table below: - - - - - IP Address - Description - - - 224.0.0.1 - - - Sends a message to all system on the subnet. - - - - - 224.0.0.2 - - - Sends a message to all routers on the subnet. - - - - - 224.0.0.12 - - - The DHCP server answers messages on the IP address 224.0.0.12, but only on a subnet. - - - - - - - A complete list of actually reserved multicast addresses and their owners in the ranges - defined by RFC 3171 can be found at the IANA web site. - - - The address range 239.0.0.0 to 239.255.255.255 is reserved for administrative scope-relative - addresses. These addresses can be reused with other local groups. Routers are typically - configured with filters to prevent multicast traffic in this range from flowing outside - of the local network. - - - - - - Gets or sets the TCP port number of the remote host or multicast group to which - the underlying should sent the logging event. - - - An integer value in the range to - indicating the TCP port number of the remote host or multicast group to which the logging event - will be sent. - - - The underlying will send messages to this TCP port number - on the remote host or multicast group. - - The value specified is less than or greater than . - - - - Gets or sets the TCP port number from which the underlying will communicate. - - - An integer value in the range to - indicating the TCP port number from which the underlying will communicate. - - - - The underlying will bind to this port for sending messages. - - - Setting the value to 0 (the default) will cause the udp client not to bind to - a local port. - - - The value specified is less than or greater than . - - - - Gets or sets used to write the packets. - - - The used to write the packets. - - - - The used to write the packets. - - - - - - Gets or sets the underlying . - - - The underlying . - - - creates a to send logging events - over a network. Classes deriving from can use this - property to get or set this . Use the underlying - returned from if you require access beyond that which - provides. - - - - - Gets or sets the cached remote endpoint to which the logging events should be sent. - - - The cached remote endpoint to which the logging events will be sent. - - - The method will initialize the remote endpoint - with the values of the and - properties. - - - - - This appender requires a to be set. - - true - - - This appender requires a to be set. - - - - - - Syslog port 514 - - - - - Initializes a new instance of the class. - - - This instance of the class is set up to write - to a remote syslog daemon. - - - - - Add a mapping of level to severity - - The mapping to add - - - Add a mapping to this appender. - - - - - - This method is called by the method. - - The event to log. - - - Writes the event to a remote syslog daemon. - - - The format of the output will depend on the appender's layout. - - - - - - Initialize the options for this appender - - - - Initialize the level to syslog severity mappings set on this appender. - - - - - - Translates a log4net level to a syslog severity. - - A log4net level. - A syslog severity. - - - Translates a log4net level to a syslog severity. - - - - - - Generate a syslog priority. - - The syslog facility. - The syslog severity. - A syslog priority. - - - Generate a syslog priority. - - - - - - The facility. The default facility is . - - - - - The message identity - - - - - Mapping from level object to syslog severity - - - - - Message identity - - - - An identifier is specified with each log message. This can be specified - by setting the property. The identity (also know - as the tag) must not contain white space. The default value for the - identity is the application name (from ). - - - - - - Syslog facility - - - Set to one of the values. The list of - facilities is predefined and cannot be extended. The default value - is . - - - - - syslog severities - - - - The syslog severities. - - - - - - system is unusable - - - - - action must be taken immediately - - - - - critical conditions - - - - - error conditions - - - - - warning conditions - - - - - normal but significant condition - - - - - informational - - - - - debug-level messages - - - - - syslog facilities - - - - The syslog facilities - - - - - - kernel messages - - - - - random user-level messages - - - - - mail system - - - - - system daemons - - - - - security/authorization messages - - - - - messages generated internally by syslogd - - - - - line printer subsystem - - - - - network news subsystem - - - - - UUCP subsystem - - - - - clock (cron/at) daemon - - - - - security/authorization messages (private) - - - - - ftp daemon - - - - - NTP subsystem - - - - - log audit - - - - - log alert - - - - - clock daemon - - - - - reserved for local use - - - - - reserved for local use - - - - - reserved for local use - - - - - reserved for local use - - - - - reserved for local use - - - - - reserved for local use - - - - - reserved for local use - - - - - reserved for local use - - - - - A class to act as a mapping between the level that a logging call is made at and - the syslog severity that is should be logged at. - - - - A class to act as a mapping between the level that a logging call is made at and - the syslog severity that is should be logged at. - - - - - - The mapped syslog severity for the specified level - - - - Required property. - The mapped syslog severity for the specified level - - - - - - Delivers logging events to a remote logging sink. - - - - This Appender is designed to deliver events to a remote sink. - That is any object that implements the - interface. It delivers the events using .NET remoting. The - object to deliver events to is specified by setting the - appenders property. - - The RemotingAppender buffers events before sending them. This allows it to - make more efficient use of the remoting infrastructure. - - Once the buffer is full the events are still not sent immediately. - They are scheduled to be sent using a pool thread. The effect is that - the send occurs asynchronously. This is very important for a - number of non obvious reasons. The remoting infrastructure will - flow thread local variables (stored in the ), - if they are marked as , across the - remoting boundary. If the server is not contactable then - the remoting infrastructure will clear the - objects from the . To prevent a logging failure from - having side effects on the calling application the remoting call must be made - from a separate thread to the one used by the application. A - thread is used for this. If no thread is available then - the events will block in the thread pool manager until a thread is available. - - Because the events are sent asynchronously using pool threads it is possible to close - this appender before all the queued events have been sent. - When closing the appender attempts to wait until all the queued events have been sent, but - this will timeout after 30 seconds regardless. - - If this appender is being closed because the - event has fired it may not be possible to send all the queued events. During process - exit the runtime limits the time that a - event handler is allowed to run for. If the runtime terminates the threads before - the queued events have been sent then they will be lost. To ensure that all events - are sent the appender must be closed before the application exits. See - for details on how to shutdown - log4net programmatically. - - - Nicko Cadell - Gert Driesen - Daniel Cazzulino - - - - Initializes a new instance of the class. - - - - Default constructor. - - - - - - Initialize the appender based on the options set - - - - This is part of the delayed object - activation scheme. The method must - be called on this object after the configuration properties have - been set. Until is called this - object is in an undefined state and must not be used. - - - If any of the configuration properties are modified then - must be called again. - - - - - - Send the contents of the buffer to the remote sink. - - - The events are not sent immediately. They are scheduled to be sent - using a pool thread. The effect is that the send occurs asynchronously. - This is very important for a number of non obvious reasons. The remoting - infrastructure will flow thread local variables (stored in the ), - if they are marked as , across the - remoting boundary. If the server is not contactable then - the remoting infrastructure will clear the - objects from the . To prevent a logging failure from - having side effects on the calling application the remoting call must be made - from a separate thread to the one used by the application. A - thread is used for this. If no thread is available then - the events will block in the thread pool manager until a thread is available. - - The events to send. - - - - Override base class close. - - - - This method waits while there are queued work items. The events are - sent asynchronously using work items. These items - will be sent once a thread pool thread is available to send them, therefore - it is possible to close the appender before all the queued events have been - sent. - - This method attempts to wait until all the queued events have been sent, but this - method will timeout after 30 seconds regardless. - - If the appender is being closed because the - event has fired it may not be possible to send all the queued events. During process - exit the runtime limits the time that a - event handler is allowed to run for. - - - - - A work item is being queued into the thread pool - - - - - A work item from the thread pool has completed - - - - - Send the contents of the buffer to the remote sink. - - - This method is designed to be used with the . - This method expects to be passed an array of - objects in the state param. - - the logging events to send - - - - The URL of the remote sink. - - - - - The local proxy (.NET remoting) for the remote logging sink. - - - - - The number of queued callbacks currently waiting or executing - - - - - Event used to signal when there are no queued work items - - - This event is set when there are no queued work items. In this - state it is safe to close the appender. - - - - - Gets or sets the URL of the well-known object that will accept - the logging events. - - - The well-known URL of the remote sink. - - - - The URL of the remoting sink that will accept logging events. - The sink must implement the - interface. - - - - - - Interface used to deliver objects to a remote sink. - - - This interface must be implemented by a remoting sink - if the is to be used - to deliver logging events to the sink. - - - - - Delivers logging events to the remote sink - - Array of events to log. - - - Delivers logging events to the remote sink - - - - - - Appender that rolls log files based on size or date or both. - - - - RollingFileAppender can roll log files based on size or date or both - depending on the setting of the property. - When set to the log file will be rolled - once its size exceeds the . - When set to the log file will be rolled - once the date boundary specified in the property - is crossed. - When set to the log file will be - rolled once the date boundary specified in the property - is crossed, but within a date boundary the file will also be rolled - once its size exceeds the . - When set to the log file will be rolled when - the appender is configured. This effectively means that the log file can be - rolled once per program execution. - - - A of few additional optional features have been added: - - Attach date pattern for current log file - Backup number increments for newer files - Infinite number of backups by file size - - - - - - For large or infinite numbers of backup files a - greater than zero is highly recommended, otherwise all the backup files need - to be renamed each time a new backup is created. - - - When Date/Time based rolling is used setting - to will reduce the number of file renamings to few or none. - - - - - - Changing or without clearing - the log file directory of backup files will cause unexpected and unwanted side effects. - - - - - If Date/Time based rolling is enabled this appender will attempt to roll existing files - in the directory without a Date/Time tag based on the last write date of the base log file. - The appender only rolls the log file when a message is logged. If Date/Time based rolling - is enabled then the appender will not roll the log file at the Date/Time boundary but - at the point when the next message is logged after the boundary has been crossed. - - - - The extends the and - has the same behavior when opening the log file. - The appender will first try to open the file for writing when - is called. This will typically be during configuration. - If the file cannot be opened for writing the appender will attempt - to open the file again each time a message is logged to the appender. - If the file cannot be opened for writing when a message is logged then - the message will be discarded by this appender. - - - When rolling a backup file necessitates deleting an older backup file the - file to be deleted is moved to a temporary name before being deleted. - - - - - A maximum number of backup files when rolling on date/time boundaries is not supported. - - - - Nicko Cadell - Gert Driesen - Aspi Havewala - Douglas de la Torre - Edward Smit - - - - Initializes a new instance of the class. - - - - Default constructor. - - - - - - Sets the quiet writer being used. - - - This method can be overridden by sub classes. - - the writer to set - - - - Write out a logging event. - - the event to write to file. - - - Handles append time behavior for RollingFileAppender. This checks - if a roll over either by date (checked first) or time (checked second) - is need and then appends to the file last. - - - - - - Write out an array of logging events. - - the events to write to file. - - - Handles append time behavior for RollingFileAppender. This checks - if a roll over either by date (checked first) or time (checked second) - is need and then appends to the file last. - - - - - - Performs any required rolling before outputting the next event - - - - Handles append time behavior for RollingFileAppender. This checks - if a roll over either by date (checked first) or time (checked second) - is need and then appends to the file last. - - - - - - Creates and opens the file for logging. If - is false then the fully qualified name is determined and used. - - the name of the file to open - true to append to existing file - - This method will ensure that the directory structure - for the specified exists. - - - - - Get the current output file name - - the base file name - the output file name - - The output file name is based on the base fileName specified. - If is set then the output - file name is the same as the base file passed in. Otherwise - the output file depends on the date pattern, on the count - direction or both. - - - - - Determines curSizeRollBackups (only within the current roll point) - - - - - Generates a wildcard pattern that can be used to find all files - that are similar to the base file name. - - - - - - - Builds a list of filenames for all files matching the base filename plus a file - pattern. - - - - - - - Initiates a roll over if needed for crossing a date boundary since the last run. - - - - - Initializes based on existing conditions at time of . - - - - Initializes based on existing conditions at time of . - The following is done - - determine curSizeRollBackups (only within the current roll point) - initiates a roll over if needed for crossing a date boundary since the last run. - - - - - - - Does the work of bumping the 'current' file counter higher - to the highest count when an incremental file name is seen. - The highest count is either the first file (when count direction - is greater than 0) or the last file (when count direction less than 0). - In either case, we want to know the highest count that is present. - - - - - - - Takes a list of files and a base file name, and looks for - 'incremented' versions of the base file. Bumps the max - count up to the highest count seen. - - - - - - - Calculates the RollPoint for the datePattern supplied. - - the date pattern to calculate the check period for - The RollPoint that is most accurate for the date pattern supplied - - Essentially the date pattern is examined to determine what the - most suitable roll point is. The roll point chosen is the roll point - with the smallest period that can be detected using the date pattern - supplied. i.e. if the date pattern only outputs the year, month, day - and hour then the smallest roll point that can be detected would be - and hourly roll point as minutes could not be detected. - - - - - Initialize the appender based on the options set - - - - This is part of the delayed object - activation scheme. The method must - be called on this object after the configuration properties have - been set. Until is called this - object is in an undefined state and must not be used. - - - If any of the configuration properties are modified then - must be called again. - - - Sets initial conditions including date/time roll over information, first check, - scheduledFilename, and calls to initialize - the current number of backups. - - - - - - Rollover the file(s) to date/time tagged file(s). - - set to true if the file to be rolled is currently open - - - Rollover the file(s) to date/time tagged file(s). - Resets curSizeRollBackups. - If fileIsOpen is set then the new file is opened (through SafeOpenFile). - - - - - - Renames file to file . - - Name of existing file to roll. - New name for file. - - - Renames file to file . It - also checks for existence of target file and deletes if it does. - - - - - - Test if a file exists at a specified path - - the path to the file - true if the file exists - - - Test if a file exists at a specified path - - - - - - Deletes the specified file if it exists. - - The file to delete. - - - Delete a file if is exists. - The file is first moved to a new filename then deleted. - This allows the file to be removed even when it cannot - be deleted, but it still can be moved. - - - - - - Implements file roll base on file size. - - - - If the maximum number of size based backups is reached - (curSizeRollBackups == maxSizeRollBackups) then the oldest - file is deleted -- its index determined by the sign of countDirection. - If countDirection < 0, then files - {File.1, ..., File.curSizeRollBackups -1} - are renamed to {File.2, ..., - File.curSizeRollBackups}. Moreover, File is - renamed File.1 and closed. - - - A new file is created to receive further log output. - - - If maxSizeRollBackups is equal to zero, then the - File is truncated with no backup files created. - - - If maxSizeRollBackups < 0, then File is - renamed if needed and no files are deleted. - - - - - - Implements file roll. - - the base name to rename - - - If the maximum number of size based backups is reached - (curSizeRollBackups == maxSizeRollBackups) then the oldest - file is deleted -- its index determined by the sign of countDirection. - If countDirection < 0, then files - {File.1, ..., File.curSizeRollBackups -1} - are renamed to {File.2, ..., - File.curSizeRollBackups}. - - - If maxSizeRollBackups is equal to zero, then the - File is truncated with no backup files created. - - - If maxSizeRollBackups < 0, then File is - renamed if needed and no files are deleted. - - - This is called by to rename the files. - - - - - - Get the start time of the next window for the current rollpoint - - the current date - the type of roll point we are working with - the start time for the next roll point an interval after the currentDateTime date - - - Returns the date of the next roll point after the currentDateTime date passed to the method. - - - The basic strategy is to subtract the time parts that are less significant - than the rollpoint from the current time. This should roll the time back to - the start of the time window for the current rollpoint. Then we add 1 window - worth of time and get the start time of the next window for the rollpoint. - - - - - - This object supplies the current date/time. Allows test code to plug in - a method to control this class when testing date/time based rolling. - - - - - The date pattern. By default, the pattern is set to ".yyyy-MM-dd" - meaning daily rollover. - - - - - The actual formatted filename that is currently being written to - or will be the file transferred to on roll over - (based on staticLogFileName). - - - - - The timestamp when we shall next recompute the filename. - - - - - Holds date of last roll over - - - - - The type of rolling done - - - - - The default maximum file size is 10MB - - - - - There is zero backup files by default - - - - - How many sized based backups have been made so far - - - - - The rolling file count direction. - - - - - The rolling mode used in this appender. - - - - - Cache flag set if we are rolling by date. - - - - - Cache flag set if we are rolling by size. - - - - - Value indicating whether to always log to the same file. - - - - - FileName provided in configuration. Used for rolling properly - - - - - The 1st of January 1970 in UTC - - - - - Gets or sets the date pattern to be used for generating file names - when rolling over on date. - - - The date pattern to be used for generating file names when rolling - over on date. - - - - Takes a string in the same format as expected by - . - - - This property determines the rollover schedule when rolling over - on date. - - - - - - Gets or sets the maximum number of backup files that are kept before - the oldest is erased. - - - The maximum number of backup files that are kept before the oldest is - erased. - - - - If set to zero, then there will be no backup files and the log file - will be truncated when it reaches . - - - If a negative number is supplied then no deletions will be made. Note - that this could result in very slow performance as a large number of - files are rolled over unless is used. - - - The maximum applies to each time based group of files and - not the total. - - - - - - Gets or sets the maximum size that the output file is allowed to reach - before being rolled over to backup files. - - - The maximum size in bytes that the output file is allowed to reach before being - rolled over to backup files. - - - - This property is equivalent to except - that it is required for differentiating the setter taking a - argument from the setter taking a - argument. - - - The default maximum file size is 10MB (10*1024*1024). - - - - - - Gets or sets the maximum size that the output file is allowed to reach - before being rolled over to backup files. - - - The maximum size that the output file is allowed to reach before being - rolled over to backup files. - - - - This property allows you to specify the maximum size with the - suffixes "KB", "MB" or "GB" so that the size is interpreted being - expressed respectively in kilobytes, megabytes or gigabytes. - - - For example, the value "10KB" will be interpreted as 10240 bytes. - - - The default maximum file size is 10MB. - - - If you have the option to set the maximum file size programmatically - consider using the property instead as this - allows you to set the size in bytes as a . - - - - - - Gets or sets the rolling file count direction. - - - The rolling file count direction. - - - - Indicates if the current file is the lowest numbered file or the - highest numbered file. - - - By default newer files have lower numbers ( < 0), - i.e. log.1 is most recent, log.5 is the 5th backup, etc... - - - >= 0 does the opposite i.e. - log.1 is the first backup made, log.5 is the 5th backup made, etc. - For infinite backups use >= 0 to reduce - rollover costs. - - The default file count direction is -1. - - - - - Gets or sets the rolling style. - - The rolling style. - - - The default rolling style is . - - - When set to this appender's - property is set to false, otherwise - the appender would append to a single file rather than rolling - the file each time it is opened. - - - - - - Gets or sets a value indicating whether to always log to - the same file. - - - true if always should be logged to the same file, otherwise false. - - - - By default file.log is always the current file. Optionally - file.log.yyyy-mm-dd for current formatted datePattern can by the currently - logging file (or file.log.curSizeRollBackup or even - file.log.yyyy-mm-dd.curSizeRollBackup). - - - This will make time based rollovers with a large number of backups - much faster as the appender it won't have to rename all the backups! - - - - - - Style of rolling to use - - - - Style of rolling to use - - - - - - Roll files once per program execution - - - - Roll files once per program execution. - Well really once each time this appender is - configured. - - - Setting this option also sets AppendToFile to - false on the RollingFileAppender, otherwise - this appender would just be a normal file appender. - - - - - - Roll files based only on the size of the file - - - - - Roll files based only on the date - - - - - Roll files based on both the size and date of the file - - - - - The code assumes that the following 'time' constants are in a increasing sequence. - - - - The code assumes that the following 'time' constants are in a increasing sequence. - - - - - - Roll the log not based on the date - - - - - Roll the log for each minute - - - - - Roll the log for each hour - - - - - Roll the log twice a day (midday and midnight) - - - - - Roll the log each day (midnight) - - - - - Roll the log each week - - - - - Roll the log each month - - - - - This interface is used to supply Date/Time information to the . - - - This interface is used to supply Date/Time information to the . - Used primarily to allow test classes to plug themselves in so they can - supply test date/times. - - - - - Gets the current time. - - The current time. - - - Gets the current time. - - - - - - Default implementation of that returns the current time. - - - - - Gets the current time. - - The current time. - - - Gets the current time. - - - - - - Send an e-mail when a specific logging event occurs, typically on errors - or fatal errors. - - - - The number of logging events delivered in this e-mail depend on - the value of option. The - keeps only the last - logging events in its - cyclic buffer. This keeps memory requirements at a reasonable level while - still delivering useful application context. - - - Authentication and setting the server Port are only available on the MS .NET 1.1 runtime. - For these features to be enabled you need to ensure that you are using a version of - the log4net assembly that is built against the MS .NET 1.1 framework and that you are - running the your application on the MS .NET 1.1 runtime. On all other platforms only sending - unauthenticated messages to a server listening on port 25 (the default) is supported. - - - Authentication is supported by setting the property to - either or . - If using authentication then the - and properties must also be set. - - - To set the SMTP server port use the property. The default port is 25. - - - Nicko Cadell - Gert Driesen - - - - Default constructor - - - - Default constructor - - - - - - Sends the contents of the cyclic buffer as an e-mail message. - - The logging events to send. - - - - Send the email message - - the body text to include in the mail - - - - Gets or sets a semicolon-delimited list of recipient e-mail addresses. - - - A semicolon-delimited list of e-mail addresses. - - - - A semicolon-delimited list of recipient e-mail addresses. - - - - - - Gets or sets the e-mail address of the sender. - - - The e-mail address of the sender. - - - - The e-mail address of the sender. - - - - - - Gets or sets the subject line of the e-mail message. - - - The subject line of the e-mail message. - - - - The subject line of the e-mail message. - - - - - - Gets or sets the name of the SMTP relay mail server to use to send - the e-mail messages. - - - The name of the e-mail relay server. If SmtpServer is not set, the - name of the local SMTP server is used. - - - - The name of the e-mail relay server. If SmtpServer is not set, the - name of the local SMTP server is used. - - - - - - Obsolete - - - Use the BufferingAppenderSkeleton Fix methods instead - - - - Obsolete property. - - - - - - The mode to use to authentication with the SMTP server - - - Authentication is only available on the MS .NET 1.1 runtime. - - Valid Authentication mode values are: , - , and . - The default value is . When using - you must specify the - and to use to authenticate. - When using the Windows credentials for the current - thread, if impersonating, or the process will be used to authenticate. - - - - - - The username to use to authenticate with the SMTP server - - - Authentication is only available on the MS .NET 1.1 runtime. - - A and must be specified when - is set to , - otherwise the username will be ignored. - - - - - - The password to use to authenticate with the SMTP server - - - Authentication is only available on the MS .NET 1.1 runtime. - - A and must be specified when - is set to , - otherwise the password will be ignored. - - - - - - The port on which the SMTP server is listening - - - Server Port is only available on the MS .NET 1.1 runtime. - - The port on which the SMTP server is listening. The default - port is 25. The Port can only be changed when running on - the MS .NET 1.1 runtime. - - - - - - Gets or sets the priority of the e-mail message - - - One of the values. - - - - Sets the priority of the e-mails generated by this - appender. The default priority is . - - - If you are using this appender to report errors then - you may want to set the priority to . - - - - - - This appender requires a to be set. - - true - - - This appender requires a to be set. - - - - - - Values for the property. - - - - SMTP authentication modes. - - - - - - No authentication - - - - - Basic authentication. - - - Requires a username and password to be supplied - - - - - Integrated authentication - - - Uses the Windows credentials from the current thread or process to authenticate. - - - - - Send an email when a specific logging event occurs, typically on errors - or fatal errors. Rather than sending via smtp it writes a file into the - directory specified by . This allows services such - as the IIS SMTP agent to manage sending the messages. - - - - The configuration for this appender is identical to that of the SMTPAppender, - except that instead of specifying the SMTPAppender.SMTPHost you specify - . - - - The number of logging events delivered in this e-mail depend on - the value of option. The - keeps only the last - logging events in its - cyclic buffer. This keeps memory requirements at a reasonable level while - still delivering useful application context. - - - Niall Daley - Nicko Cadell - - - - Default constructor - - - - Default constructor - - - - - - Sends the contents of the cyclic buffer as an e-mail message. - - The logging events to send. - - - Sends the contents of the cyclic buffer as an e-mail message. - - - - - - Activate the options on this appender. - - - - This is part of the delayed object - activation scheme. The method must - be called on this object after the configuration properties have - been set. Until is called this - object is in an undefined state and must not be used. - - - If any of the configuration properties are modified then - must be called again. - - - - - - Convert a path into a fully qualified path. - - The path to convert. - The fully qualified path. - - - Converts the path specified to a fully - qualified path. If the path is relative it is - taken as relative from the application base - directory. - - - - - - The security context to use for privileged calls - - - - - Gets or sets a semicolon-delimited list of recipient e-mail addresses. - - - A semicolon-delimited list of e-mail addresses. - - - - A semicolon-delimited list of e-mail addresses. - - - - - - Gets or sets the e-mail address of the sender. - - - The e-mail address of the sender. - - - - The e-mail address of the sender. - - - - - - Gets or sets the subject line of the e-mail message. - - - The subject line of the e-mail message. - - - - The subject line of the e-mail message. - - - - - - Gets or sets the path to write the messages to. - - - - Gets or sets the path to write the messages to. This should be the same - as that used by the agent sending the messages. - - - - - - Gets or sets the used to write to the pickup directory. - - - The used to write to the pickup directory. - - - - Unless a specified here for this appender - the is queried for the - security context to use. The default behavior is to use the security context - of the current thread. - - - - - - This appender requires a to be set. - - true - - - This appender requires a to be set. - - - - - - Appender that allows clients to connect via Telnet to receive log messages - - - - The TelnetAppender accepts socket connections and streams logging messages - back to the client. - The output is provided in a telnet-friendly way so that a log can be monitored - over a TCP/IP socket. - This allows simple remote monitoring of application logging. - - - The default is 23 (the telnet port). - - - Keith Long - Nicko Cadell - - - - Default constructor - - - - Default constructor - - - - - - Overrides the parent method to close the socket handler - - - - Closes all the outstanding connections. - - - - - - Initialize the appender based on the options set. - - - - This is part of the delayed object - activation scheme. The method must - be called on this object after the configuration properties have - been set. Until is called this - object is in an undefined state and must not be used. - - - If any of the configuration properties are modified then - must be called again. - - - Create the socket handler and wait for connections - - - - - - Writes the logging event to each connected client. - - The event to log. - - - Writes the logging event to each connected client. - - - - - - Gets or sets the TCP port number on which this will listen for connections. - - - An integer value in the range to - indicating the TCP port number on which this will listen for connections. - - - - The default value is 23 (the telnet port). - - - The value specified is less than - or greater than . - - - - This appender requires a to be set. - - true - - - This appender requires a to be set. - - - - - - Helper class to manage connected clients - - - - The SocketHandler class is used to accept connections from - clients. It is threaded so that clients can connect/disconnect - asynchronously. - - - - - - Opens a new server port on - - the local port to listen on for connections - - - Creates a socket handler on the specified local server port. - - - - - - Sends a string message to each of the connected clients - - the text to send - - - Sends a string message to each of the connected clients - - - - - - Add a client to the internal clients list - - client to add - - - - Remove a client from the internal clients list - - client to remove - - - - Callback used to accept a connection on the server socket - - The result of the asynchronous operation - - - On connection adds to the list of connections - if there are two many open connections you will be disconnected - - - - - - Close all network connections - - - - Make sure we close all network connections - - - - - - Test if this handler has active connections - - - true if this handler has active connections - - - - This property will be true while this handler has - active connections, that is at least one connection that - the handler will attempt to send a message to. - - - - - - Class that represents a client connected to this handler - - - - Class that represents a client connected to this handler - - - - - - Create this for the specified - - the client's socket - - - Opens a stream writer on the socket. - - - - - - Write a string to the client - - string to send - - - Write a string to the client - - - - - - Cleanup the clients connection - - - - Close the socket connection. - - - - - - Appends log events to the system. - - - - The application configuration file can be used to control what listeners - are actually used. See the MSDN documentation for the - class for details on configuring the - trace system. - - - Events are written using the System.Diagnostics.Trace.Write(string,string) - method. The event's logger name is passed as the value for the category name to the Write method. - - - Compact Framework
- The Compact Framework does not support the - class for any operation except Assert. When using the Compact Framework this - appender will write to the system rather than - the Trace system. This appender will therefore behave like the . -
-
- Douglas de la Torre - Nicko Cadell - Gert Driesen -
- - - Initializes a new instance of the . - - - - Default constructor. - - - - - - Initializes a new instance of the - with a specified layout. - - The layout to use with this appender. - - - Obsolete constructor. - - - - - - Writes the logging event to the system. - - The event to log. - - - Writes the logging event to the system. - - - - - - Immediate flush means that the underlying writer or output stream - will be flushed at the end of each append operation. - - - - Immediate flush is slower but ensures that each append request is - actually written. If is set to - false, then there is a good chance that the last few - logs events are not actually written to persistent media if and - when the application crashes. - - - The default value is true. - - - - - Gets or sets a value that indicates whether the appender will - flush at the end of each write. - - - The default behavior is to flush at the end of each - write. If the option is set tofalse, then the underlying - stream can defer writing to physical medium to a later time. - - - Avoiding the flush operation at the end of each append results - in a performance gain of 10 to 20 percent. However, there is safety - trade-off involved in skipping flushing. Indeed, when flushing is - skipped, then it is likely that the last few log events will not - be recorded on disk when the application exits. This is a high - price to pay even for a 20% performance gain. - - - - - - This appender requires a to be set. - - true - - - This appender requires a to be set. - - - - - - Assembly level attribute that specifies a domain to alias to this assembly's repository. - - - - AliasDomainAttribute is obsolete. Use AliasRepositoryAttribute instead of AliasDomainAttribute. - - - An assembly's logger repository is defined by its , - however this can be overridden by an assembly loaded before the target assembly. - - - An assembly can alias another assembly's domain to its repository by - specifying this attribute with the name of the target domain. - - - This attribute can only be specified on the assembly and may be used - as many times as necessary to alias all the required domains. - - - Nicko Cadell - Gert Driesen - - - - Assembly level attribute that specifies a repository to alias to this assembly's repository. - - - - An assembly's logger repository is defined by its , - however this can be overridden by an assembly loaded before the target assembly. - - - An assembly can alias another assembly's repository to its repository by - specifying this attribute with the name of the target repository. - - - This attribute can only be specified on the assembly and may be used - as many times as necessary to alias all the required repositories. - - - Nicko Cadell - Gert Driesen - - - - Initializes a new instance of the class with - the specified repository to alias to this assembly's repository. - - The repository to alias to this assemby's repository. - - - Initializes a new instance of the class with - the specified repository to alias to this assembly's repository. - - - - - - Gets or sets the repository to alias to this assemby's repository. - - - The repository to alias to this assemby's repository. - - - - The name of the repository to alias to this assemby's repository. - - - - - - Initializes a new instance of the class with - the specified domain to alias to this assembly's repository. - - The domain to alias to this assemby's repository. - - - Obsolete. Use instead of . - - - - - - Use this class to quickly configure a . - - - - Allows very simple programmatic configuration of log4net. - - - Only one appender can be configured using this configurator. - The appender is set at the root of the hierarchy and all logging - events will be delivered to that appender. - - - Appenders can also implement the interface. Therefore - they would require that the method - be called after the appenders properties have been configured. - - - Nicko Cadell - Gert Driesen - - - - Initializes a new instance of the class. - - - - Uses a private access modifier to prevent instantiation of this class. - - - - - - Initializes the log4net system with a default configuration. - - - - Initializes the log4net logging system using a - that will write to Console.Out. The log messages are - formatted using the layout object - with the - layout style. - - - - - - Initializes the log4net system using the specified appender. - - The appender to use to log all logging events. - - - Initializes the log4net system using the specified appender. - - - - - - Initializes the with a default configuration. - - The repository to configure. - - - Initializes the specified repository using a - that will write to Console.Out. The log messages are - formatted using the layout object - with the - layout style. - - - - - - Initializes the using the specified appender. - - The repository to configure. - The appender to use to log all logging events. - - - Initializes the using the specified appender. - - - - - - Base class for all log4net configuration attributes. - - - This is an abstract class that must be extended by - specific configurators. This attribute allows the - configurator to be parameterized by an assembly level - attribute. - - Nicko Cadell - Gert Driesen - - - - Constructor used by subclasses. - - the ordering priority for this configurator - - - The is used to order the configurator - attributes before they are invoked. Higher priority configurators are executed - before lower priority ones. - - - - - - Configures the for the specified assembly. - - The assembly that this attribute was defined on. - The repository to configure. - - - Abstract method implemented by a subclass. When this method is called - the subclass should configure the . - - - - - - Compare this instance to another ConfiguratorAttribute - - the object to compare to - see - - - Compares the priorities of the two instances. - Sorts by priority in descending order. Objects with the same priority are - randomly ordered. - - - - - - Assembly level attribute that specifies the logging domain for the assembly. - - - - DomainAttribute is obsolete. Use RepositoryAttribute instead of DomainAttribute. - - - Assemblies are mapped to logging domains. Each domain has its own - logging repository. This attribute specified on the assembly controls - the configuration of the domain. The property specifies the name - of the domain that this assembly is a part of. The - specifies the type of the repository objects to create for the domain. If - this attribute is not specified and a is not specified - then the assembly will be part of the default shared logging domain. - - - This attribute can only be specified on the assembly and may only be used - once per assembly. - - - Nicko Cadell - Gert Driesen - - - - Assembly level attribute that specifies the logging repository for the assembly. - - - - Assemblies are mapped to logging repository. This attribute specified - on the assembly controls - the configuration of the repository. The property specifies the name - of the repository that this assembly is a part of. The - specifies the type of the object - to create for the assembly. If this attribute is not specified or a - is not specified then the assembly will be part of the default shared logging repository. - - - This attribute can only be specified on the assembly and may only be used - once per assembly. - - - Nicko Cadell - Gert Driesen - - - - Initializes a new instance of the class. - - - - Default constructor. - - - - - - Initialize a new instance of the class - with the name of the repository. - - The name of the repository. - - - Initialize the attribute with the name for the assembly's repository. - - - - - - Gets or sets the name of the logging repository. - - - The string name to use as the name of the repository associated with this - assembly. - - - - This value does not have to be unique. Several assemblies can share the - same repository. They will share the logging configuration of the repository. - - - - - - Gets or sets the type of repository to create for this assembly. - - - The type of repository to create for this assembly. - - - - The type of the repository to create for the assembly. - The type must implement the - interface. - - - This will be the type of repository created when - the repository is created. If multiple assemblies reference the - same repository then the repository is only created once using the - of the first assembly to call into the - repository. - - - - - - Initializes a new instance of the class. - - - - Obsolete. Use RepositoryAttribute instead of DomainAttribute. - - - - - - Initialize a new instance of the class - with the name of the domain. - - The name of the domain. - - - Obsolete. Use RepositoryAttribute instead of DomainAttribute. - - - - - - Use this class to initialize the log4net environment using an Xml tree. - - - - DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator. - - - Configures a using an Xml tree. - - - Nicko Cadell - Gert Driesen - - - - Private constructor - - - - - Automatically configures the log4net system based on the - application's configuration settings. - - - - DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator. - - Each application has a configuration file. This has the - same name as the application with '.config' appended. - This file is XML and calling this function prompts the - configurator to look in that file for a section called - log4net that contains the configuration data. - - - - - Automatically configures the using settings - stored in the application's configuration file. - - - - DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator. - - Each application has a configuration file. This has the - same name as the application with '.config' appended. - This file is XML and calling this function prompts the - configurator to look in that file for a section called - log4net that contains the configuration data. - - The repository to configure. - - - - Configures log4net using a log4net element - - - - DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator. - - Loads the log4net configuration from the XML element - supplied as . - - The element to parse. - - - - Configures the using the specified XML - element. - - - - DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator. - - Loads the log4net configuration from the XML element - supplied as . - - The repository to configure. - The element to parse. - - - - Configures log4net using the specified configuration file. - - The XML file to load the configuration from. - - - DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator. - - - The configuration file must be valid XML. It must contain - at least one element called log4net that holds - the log4net configuration data. - - - The log4net configuration file can possible be specified in the application's - configuration file (either MyAppName.exe.config for a - normal application on Web.config for an ASP.NET application). - - - The following example configures log4net using a configuration file, of which the - location is stored in the application's configuration file : - - - using log4net.Config; - using System.IO; - using System.Configuration; - - ... - - DOMConfigurator.Configure(new FileInfo(ConfigurationSettings.AppSettings["log4net-config-file"])); - - - In the .config file, the path to the log4net can be specified like this : - - - - - - - - - - - - - Configures log4net using the specified configuration file. - - A stream to load the XML configuration from. - - - DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator. - - - The configuration data must be valid XML. It must contain - at least one element called log4net that holds - the log4net configuration data. - - - Note that this method will NOT close the stream parameter. - - - - - - Configures the using the specified configuration - file. - - The repository to configure. - The XML file to load the configuration from. - - - DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator. - - - The configuration file must be valid XML. It must contain - at least one element called log4net that holds - the configuration data. - - - The log4net configuration file can possible be specified in the application's - configuration file (either MyAppName.exe.config for a - normal application on Web.config for an ASP.NET application). - - - The following example configures log4net using a configuration file, of which the - location is stored in the application's configuration file : - - - using log4net.Config; - using System.IO; - using System.Configuration; - - ... - - DOMConfigurator.Configure(new FileInfo(ConfigurationSettings.AppSettings["log4net-config-file"])); - - - In the .config file, the path to the log4net can be specified like this : - - - - - - - - - - - - - Configures the using the specified configuration - file. - - The repository to configure. - The stream to load the XML configuration from. - - - DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator. - - - The configuration data must be valid XML. It must contain - at least one element called log4net that holds - the configuration data. - - - Note that this method will NOT close the stream parameter. - - - - - - Configures log4net using the file specified, monitors the file for changes - and reloads the configuration if a change is detected. - - The XML file to load the configuration from. - - - DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator. - - - The configuration file must be valid XML. It must contain - at least one element called log4net that holds - the configuration data. - - - The configuration file will be monitored using a - and depends on the behavior of that class. - - - For more information on how to configure log4net using - a separate configuration file, see . - - - - - - - Configures the using the file specified, - monitors the file for changes and reloads the configuration if a change - is detected. - - The repository to configure. - The XML file to load the configuration from. - - - DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator. - - - The configuration file must be valid XML. It must contain - at least one element called log4net that holds - the configuration data. - - - The configuration file will be monitored using a - and depends on the behavior of that class. - - - For more information on how to configure log4net using - a separate configuration file, see . - - - - - - - Assembly level attribute to configure the . - - - - AliasDomainAttribute is obsolete. Use AliasRepositoryAttribute instead of AliasDomainAttribute. - - - This attribute may only be used at the assembly scope and can only - be used once per assembly. - - - Use this attribute to configure the - without calling one of the - methods. - - - Nicko Cadell - Gert Driesen - - - - Assembly level attribute to configure the . - - - - This attribute may only be used at the assembly scope and can only - be used once per assembly. - - - Use this attribute to configure the - without calling one of the - methods. - - - If neither of the or - properties are set the configuration is loaded from the application's .config file. - If set the property takes priority over the - property. The property - specifies a path to a file to load the config from. The path is relative to the - application's base directory; . - The property is used as a postfix to the assembly file name. - The config file must be located in the application's base directory; . - For example in a console application setting the to - config has the same effect as not specifying the or - properties. - - - The property can be set to cause the - to watch the configuration file for changes. - - - - Log4net will only look for assembly level configuration attributes once. - When using the log4net assembly level attributes to control the configuration - of log4net you must ensure that the first call to any of the - methods is made from the assembly with the configuration - attributes. - - - If you cannot guarantee the order in which log4net calls will be made from - different assemblies you must use programmatic configuration instead, i.e. - call the method directly. - - - - Nicko Cadell - Gert Driesen - - - - Default constructor - - - - Default constructor - - - - - - Configures the for the specified assembly. - - The assembly that this attribute was defined on. - The repository to configure. - - - Configure the repository using the . - The specified must extend the - class otherwise the will not be able to - configure it. - - - The does not extend . - - - - Attempt to load configuration from the local file system - - The assembly that this attribute was defined on. - The repository to configure. - - - - Configure the specified repository using a - - The repository to configure. - the FileInfo pointing to the config file - - - - Attempt to load configuration from a URI - - The assembly that this attribute was defined on. - The repository to configure. - - - - Gets or sets the filename of the configuration file. - - - The filename of the configuration file. - - - - If specified, this is the name of the configuration file to use with - the . This file path is relative to the - application base directory (). - - - The takes priority over the . - - - - - - Gets or sets the extension of the configuration file. - - - The extension of the configuration file. - - - - If specified this is the extension for the configuration file. - The path to the config file is built by using the application - base directory (), - the assembly file name and the config file extension. - - - If the is set to MyExt then - possible config file names would be: MyConsoleApp.exe.MyExt or - MyClassLibrary.dll.MyExt. - - - The takes priority over the . - - - - - - Gets or sets a value indicating whether to watch the configuration file. - - - true if the configuration should be watched, false otherwise. - - - - If this flag is specified and set to true then the framework - will watch the configuration file and will reload the config each time - the file is modified. - - - The config file can only be watched if it is loaded from local disk. - In a No-Touch (Smart Client) deployment where the application is downloaded - from a web server the config file may not reside on the local disk - and therefore it may not be able to watch it. - - - Watching configuration is not supported on the SSCLI. - - - - - - Class to register for the log4net section of the configuration file - - - The log4net section of the configuration file needs to have a section - handler registered. This is the section handler used. It simply returns - the XML element that is the root of the section. - - - Example of registering the log4net section handler : - - - -
- - - log4net configuration XML goes here - - - - - Nicko Cadell - Gert Driesen - - - - Initializes a new instance of the class. - - - - Default constructor. - - - - - - Parses the configuration section. - - The configuration settings in a corresponding parent configuration section. - The configuration context when called from the ASP.NET configuration system. Otherwise, this parameter is reserved and is a null reference. - The for the log4net section. - The for the log4net section. - - - Returns the containing the configuration data, - - - - - - Assembly level attribute that specifies a plugin to attach to - the repository. - - - - Specifies the type of a plugin to create and attach to the - assembly's repository. The plugin type must implement the - interface. - - - Nicko Cadell - Gert Driesen - - - - Interface used to create plugins. - - - - Interface used to create a plugin. - - - Nicko Cadell - Gert Driesen - - - - Creates the plugin object. - - the new plugin instance - - - Create and return a new plugin instance. - - - - - - Initializes a new instance of the class - with the specified type. - - The type name of plugin to create. - - - Create the attribute with the plugin type specified. - - - Where possible use the constructor that takes a . - - - - - - Initializes a new instance of the class - with the specified type. - - The type of plugin to create. - - - Create the attribute with the plugin type specified. - - - - - - Creates the plugin object defined by this attribute. - - - - Creates the instance of the object as - specified by this attribute. - - - The plugin object. - - - - Returns a representation of the properties of this object. - - - - Overrides base class method to - return a representation of the properties of this object. - - - A representation of the properties of this object - - - - Gets or sets the type for the plugin. - - - The type for the plugin. - - - - The type for the plugin. - - - - - - Gets or sets the type name for the plugin. - - - The type name for the plugin. - - - - The type name for the plugin. - - - Where possible use the property instead. - - - - - - Assembly level attribute to configure the . - - - - This attribute may only be used at the assembly scope and can only - be used once per assembly. - - - Use this attribute to configure the - without calling one of the - methods. - - - Nicko Cadell - - - - Construct provider attribute with type specified - - the type of the provider to use - - - The provider specified must subclass the - class. - - - - - - Configures the SecurityContextProvider - - The assembly that this attribute was defined on. - The repository to configure. - - - Creates a provider instance from the specified. - Sets this as the default security context provider . - - - - - - Gets or sets the type of the provider to use. - - - the type of the provider to use. - - - - The provider specified must subclass the - class. - - - - - - Use this class to initialize the log4net environment using an Xml tree. - - - - Configures a using an Xml tree. - - - Nicko Cadell - Gert Driesen - - - - Private constructor - - - - - Automatically configures the log4net system based on the - application's configuration settings. - - - - Each application has a configuration file. This has the - same name as the application with '.config' appended. - This file is XML and calling this function prompts the - configurator to look in that file for a section called - log4net that contains the configuration data. - - - To use this method to configure log4net you must specify - the section - handler for the log4net configuration section. See the - for an example. - - - - - - - Automatically configures the using settings - stored in the application's configuration file. - - - - Each application has a configuration file. This has the - same name as the application with '.config' appended. - This file is XML and calling this function prompts the - configurator to look in that file for a section called - log4net that contains the configuration data. - - - To use this method to configure log4net you must specify - the section - handler for the log4net configuration section. See the - for an example. - - - The repository to configure. - - - - Configures log4net using a log4net element - - - - Loads the log4net configuration from the XML element - supplied as . - - - The element to parse. - - - - Configures the using the specified XML - element. - - - Loads the log4net configuration from the XML element - supplied as . - - The repository to configure. - The element to parse. - - - - Configures log4net using the specified configuration file. - - The XML file to load the configuration from. - - - The configuration file must be valid XML. It must contain - at least one element called log4net that holds - the log4net configuration data. - - - The log4net configuration file can possible be specified in the application's - configuration file (either MyAppName.exe.config for a - normal application on Web.config for an ASP.NET application). - - - The first element matching <configuration> will be read as the - configuration. If this file is also a .NET .config file then you must specify - a configuration section for the log4net element otherwise .NET will - complain. Set the type for the section handler to , for example: - - -
- - - - - The following example configures log4net using a configuration file, of which the - location is stored in the application's configuration file : - - - using log4net.Config; - using System.IO; - using System.Configuration; - - ... - - XmlConfigurator.Configure(new FileInfo(ConfigurationSettings.AppSettings["log4net-config-file"])); - - - In the .config file, the path to the log4net can be specified like this : - - - - - - - - - - - - - Configures log4net using the specified configuration URI. - - A URI to load the XML configuration from. - - - The configuration data must be valid XML. It must contain - at least one element called log4net that holds - the log4net configuration data. - - - The must support the URI scheme specified. - - - - - - Configures log4net using the specified configuration data stream. - - A stream to load the XML configuration from. - - - The configuration data must be valid XML. It must contain - at least one element called log4net that holds - the log4net configuration data. - - - Note that this method will NOT close the stream parameter. - - - - - - Configures the using the specified configuration - file. - - The repository to configure. - The XML file to load the configuration from. - - - The configuration file must be valid XML. It must contain - at least one element called log4net that holds - the configuration data. - - - The log4net configuration file can possible be specified in the application's - configuration file (either MyAppName.exe.config for a - normal application on Web.config for an ASP.NET application). - - - The first element matching <configuration> will be read as the - configuration. If this file is also a .NET .config file then you must specify - a configuration section for the log4net element otherwise .NET will - complain. Set the type for the section handler to , for example: - - -
- - - - - The following example configures log4net using a configuration file, of which the - location is stored in the application's configuration file : - - - using log4net.Config; - using System.IO; - using System.Configuration; - - ... - - XmlConfigurator.Configure(new FileInfo(ConfigurationSettings.AppSettings["log4net-config-file"])); - - - In the .config file, the path to the log4net can be specified like this : - - - - - - - - - - - - - Configures the using the specified configuration - URI. - - The repository to configure. - A URI to load the XML configuration from. - - - The configuration data must be valid XML. It must contain - at least one element called log4net that holds - the configuration data. - - - The must support the URI scheme specified. - - - - - - Configures the using the specified configuration - file. - - The repository to configure. - The stream to load the XML configuration from. - - - The configuration data must be valid XML. It must contain - at least one element called log4net that holds - the configuration data. - - - Note that this method will NOT close the stream parameter. - - - - - - Configures log4net using the file specified, monitors the file for changes - and reloads the configuration if a change is detected. - - The XML file to load the configuration from. - - - The configuration file must be valid XML. It must contain - at least one element called log4net that holds - the configuration data. - - - The configuration file will be monitored using a - and depends on the behavior of that class. - - - For more information on how to configure log4net using - a separate configuration file, see . - - - - - - - Configures the using the file specified, - monitors the file for changes and reloads the configuration if a change - is detected. - - The repository to configure. - The XML file to load the configuration from. - - - The configuration file must be valid XML. It must contain - at least one element called log4net that holds - the configuration data. - - - The configuration file will be monitored using a - and depends on the behavior of that class. - - - For more information on how to configure log4net using - a separate configuration file, see . - - - - - - - Configures the specified repository using a log4net element. - - The hierarchy to configure. - The element to parse. - - - Loads the log4net configuration from the XML element - supplied as . - - - This method is ultimately called by one of the Configure methods - to load the configuration from an . - - - - - - Class used to watch config files. - - - - Uses the to monitor - changes to a specified file. Because multiple change notifications - may be raised when the file is modified, a timer is used to - compress the notifications into a single event. The timer - waits for time before delivering - the event notification. If any further - change notifications arrive while the timer is waiting it - is reset and waits again for to - elapse. - - - - - - The default amount of time to wait after receiving notification - before reloading the config file. - - - - - Watch a specified config file used to configure a repository - - The repository to configure. - The configuration file to watch. - - - Watch a specified config file used to configure a repository - - - - - - Holds the FileInfo used to configure the XmlConfigurator - - - - - Holds the repository being configured. - - - - - The timer used to compress the notification events. - - - - - Initializes a new instance of the class. - - The repository to configure. - The configuration file to watch. - - - Initializes a new instance of the class. - - - - - - Event handler used by . - - The firing the event. - The argument indicates the file that caused the event to be fired. - - - This handler reloads the configuration from the file when the event is fired. - - - - - - Event handler used by . - - The firing the event. - The argument indicates the file that caused the event to be fired. - - - This handler reloads the configuration from the file when the event is fired. - - - - - - Called by the timer when the configuration has been updated. - - null - - - - The implementation of the interface suitable - for use with the compact framework - - - - This implementation is a simple - mapping between repository name and - object. - - - The .NET Compact Framework 1.0 does not support retrieving assembly - level attributes therefore unlike the DefaultRepositorySelector - this selector does not examine the calling assembly for attributes. - - - Nicko Cadell - - - - Interface used by the to select the . - - - - The uses a - to specify the policy for selecting the correct - to return to the caller. - - - Nicko Cadell - Gert Driesen - - - - Gets the for the specified assembly. - - The assembly to use to lookup to the - The for the assembly. - - - Gets the for the specified assembly. - - - How the association between and - is made is not defined. The implementation may choose any method for - this association. The results of this method must be repeatable, i.e. - when called again with the same arguments the result must be the - save value. - - - - - - Gets the named . - - The name to use to lookup to the . - The named - - Lookup a named . This is the repository created by - calling . - - - - - Creates a new repository for the assembly specified. - - The assembly to use to create the domain to associate with the . - The type of repository to create, must implement . - The repository created. - - - The created will be associated with the domain - specified such that a call to with the - same assembly specified will return the same repository instance. - - - How the association between and - is made is not defined. The implementation may choose any method for - this association. - - - - - - Creates a new repository with the name specified. - - The name to associate with the . - The type of repository to create, must implement . - The repository created. - - - The created will be associated with the name - specified such that a call to with the - same name will return the same repository instance. - - - - - - Test if a named repository exists - - the named repository to check - true if the repository exists - - - Test if a named repository exists. Use - to create a new repository and to retrieve - a repository. - - - - - - Gets an array of all currently defined repositories. - - - An array of the instances created by - this . - - - Gets an array of all of the repositories created by this selector. - - - - - - Event to notify that a logger repository has been created. - - - Event to notify that a logger repository has been created. - - - - Event raised when a new repository is created. - The event source will be this selector. The event args will - be a which - holds the newly created . - - - - - - Create a new repository selector - - the type of the repositories to create, must implement - - - Create an new compact repository selector. - The default type for repositories must be specified, - an appropriate value would be . - - - throw if is null - throw if does not implement - - - - Get the for the specified assembly - - not used - The default - - - The argument is not used. This selector does not create a - separate repository for each assembly. - - - As a named repository is not specified the default repository is - returned. The default repository is named log4net-default-repository. - - - - - - Get the named - - the name of the repository to lookup - The named - - - Get the named . The default - repository is log4net-default-repository. Other repositories - must be created using the . - If the named repository does not exist an exception is thrown. - - - throw if is null - throw if the does not exist - - - - Create a new repository for the assembly specified - - not used - the type of repository to create, must implement - the repository created - - - The argument is not used. This selector does not create a - separate repository for each assembly. - - - If the is null then the - default repository type specified to the constructor is used. - - - As a named repository is not specified the default repository is - returned. The default repository is named log4net-default-repository. - - - - - - Create a new repository for the repository specified - - the repository to associate with the - the type of repository to create, must implement . - If this param is null then the default repository type is used. - the repository created - - - The created will be associated with the repository - specified such that a call to with the - same repository specified will return the same repository instance. - - - If the named repository already exists an exception will be thrown. - - - If is null then the default - repository type specified to the constructor is used. - - - throw if is null - throw if the already exists - - - - Test if a named repository exists - - the named repository to check - true if the repository exists - - - Test if a named repository exists. Use - to create a new repository and to retrieve - a repository. - - - - - - Gets a list of objects - - an array of all known objects - - - Gets an array of all of the repositories created by this selector. - - - - - - Notify the registered listeners that the repository has been created - - The repository that has been created - - - Raises the LoggerRepositoryCreatedEvent - event. - - - - - - Event to notify that a logger repository has been created. - - - Event to notify that a logger repository has been created. - - - - Event raised when a new repository is created. - The event source will be this selector. The event args will - be a which - holds the newly created . - - - - - - The default implementation of the interface. - - - - Uses attributes defined on the calling assembly to determine how to - configure the hierarchy for the repository. - - - Nicko Cadell - Gert Driesen - - - - Creates a new repository selector. - - The type of the repositories to create, must implement - - - Create an new repository selector. - The default type for repositories must be specified, - an appropriate value would be . - - - is . - does not implement . - - - - Gets the for the specified assembly. - - The assembly use to lookup the . - - - The type of the created and the repository - to create can be overridden by specifying the - attribute on the . - - - The default values are to use the - implementation of the interface and to use the - as the name of the repository. - - - The created will be automatically configured using - any attributes defined on - the . - - - The for the assembly - is . - - - - Gets the for the specified repository. - - The repository to use to lookup the . - The for the specified repository. - - - Returns the named repository. If is null - a is thrown. If the repository - does not exist a is thrown. - - - Use to create a repository. - - - is . - does not exist. - - - - Create a new repository for the assembly specified - - the assembly to use to create the repository to associate with the . - The type of repository to create, must implement . - The repository created. - - - The created will be associated with the repository - specified such that a call to with the - same assembly specified will return the same repository instance. - - - The type of the created and - the repository to create can be overridden by specifying the - attribute on the - . The default values are to use the - implementation of the - interface and to use the - as the name of the repository. - - - The created will be automatically - configured using any - attributes defined on the . - - - If a repository for the already exists - that repository will be returned. An error will not be raised and that - repository may be of a different type to that specified in . - Also the attribute on the - assembly may be used to override the repository type specified in - . - - - is . - - - - Creates a new repository for the assembly specified. - - the assembly to use to create the repository to associate with the . - The type of repository to create, must implement . - The name to assign to the created repository - Set to true to read and apply the assembly attributes - The repository created. - - - The created will be associated with the repository - specified such that a call to with the - same assembly specified will return the same repository instance. - - - The type of the created and - the repository to create can be overridden by specifying the - attribute on the - . The default values are to use the - implementation of the - interface and to use the - as the name of the repository. - - - The created will be automatically - configured using any - attributes defined on the . - - - If a repository for the already exists - that repository will be returned. An error will not be raised and that - repository may be of a different type to that specified in . - Also the attribute on the - assembly may be used to override the repository type specified in - . - - - is . - - - - Creates a new repository for the specified repository. - - The repository to associate with the . - The type of repository to create, must implement . - If this param is then the default repository type is used. - The new repository. - - - The created will be associated with the repository - specified such that a call to with the - same repository specified will return the same repository instance. - - - is . - already exists. - - - - Test if a named repository exists - - the named repository to check - true if the repository exists - - - Test if a named repository exists. Use - to create a new repository and to retrieve - a repository. - - - - - - Gets a list of objects - - an array of all known objects - - - Gets an array of all of the repositories created by this selector. - - - - - - Aliases a repository to an existing repository. - - The repository to alias. - The repository that the repository is aliased to. - - - The repository specified will be aliased to the repository when created. - The repository must not already exist. - - - When the repository is created it must utilize the same repository type as - the repository it is aliased to, otherwise the aliasing will fail. - - - - is . - -or- - is . - - - - - Notifies the registered listeners that the repository has been created. - - The repository that has been created. - - - Raises the event. - - - - - - Gets the repository name and repository type for the specified assembly. - - The assembly that has a . - in/out param to hold the repository name to use for the assembly, caller should set this to the default value before calling. - in/out param to hold the type of the repository to create for the assembly, caller should set this to the default value before calling. - is . - - - - Configures the repository using information from the assembly. - - The assembly containing - attributes which define the configuration for the repository. - The repository to configure. - - is . - -or- - is . - - - - - Loads the attribute defined plugins on the assembly. - - The assembly that contains the attributes. - The repository to add the plugins to. - - is . - -or- - is . - - - - - Loads the attribute defined aliases on the assembly. - - The assembly that contains the attributes. - The repository to alias to. - - is . - -or- - is . - - - - - Event to notify that a logger repository has been created. - - - Event to notify that a logger repository has been created. - - - - Event raised when a new repository is created. - The event source will be this selector. The event args will - be a which - holds the newly created . - - - - - - Defined error codes that can be passed to the method. - - - - Values passed to the method. - - - Nicko Cadell - - - - A general error - - - - - Error while writing output - - - - - Failed to flush file - - - - - Failed to close file - - - - - Unable to open output file - - - - - No layout specified - - - - - Failed to parse address - - - - - Appenders may delegate their error handling to an . - - - - Error handling is a particularly tedious to get right because by - definition errors are hard to predict and to reproduce. - - - Nicko Cadell - Gert Driesen - - - - Handles the error and information about the error condition is passed as - a parameter. - - The message associated with the error. - The that was thrown when the error occurred. - The error code associated with the error. - - - Handles the error and information about the error condition is passed as - a parameter. - - - - - - Prints the error message passed as a parameter. - - The message associated with the error. - The that was thrown when the error occurred. - - - See . - - - - - - Prints the error message passed as a parameter. - - The message associated with the error. - - - See . - - - - - - Interface for objects that require fixing. - - - - Interface that indicates that the object requires fixing before it - can be taken outside the context of the appender's - method. - - - When objects that implement this interface are stored - in the context properties maps - and - are fixed - (see ) the - method will be called. - - - Nicko Cadell - - - - Get a portable version of this object - - the portable instance of this object - - - Get a portable instance object that represents the current - state of this object. The portable object can be stored - and logged from any thread with identical results. - - - - - - Interface that all loggers implement - - - - This interface supports logging events and testing if a level - is enabled for logging. - - - These methods will not throw exceptions. Note to implementor, ensure - that the implementation of these methods cannot allow an exception - to be thrown to the caller. - - - Nicko Cadell - Gert Driesen - - - - This generic form is intended to be used by wrappers. - - The declaring type of the method that is - the stack boundary into the logging system for this call. - The level of the message to be logged. - The message object to log. - the exception to log, including its stack trace. Pass null to not log an exception. - - - Generates a logging event for the specified using - the and . - - - - - - This is the most generic printing method that is intended to be used - by wrappers. - - The event being logged. - - - Logs the specified logging event through this logger. - - - - - - Checks if this logger is enabled for a given passed as parameter. - - The level to check. - - true if this logger is enabled for level, otherwise false. - - - - Test if this logger is going to log events of the specified . - - - - - - Gets the name of the logger. - - - The name of the logger. - - - - The name of this logger - - - - - - Gets the where this - Logger instance is attached to. - - - The that this logger belongs to. - - - - Gets the where this - Logger instance is attached to. - - - - - - Base interface for all wrappers - - - - Base interface for all wrappers. - - - All wrappers must implement this interface. - - - Nicko Cadell - - - - Get the implementation behind this wrapper object. - - - The object that in implementing this object. - - - - The object that in implementing this - object. The Logger object may not - be the same object as this object because of logger decorators. - This gets the actual underlying objects that is used to process - the log events. - - - - - - Delegate used to handle logger repository creation event notifications - - The which created the repository. - The event args - that holds the instance that has been created. - - - Delegate used to handle logger repository creation event notifications. - - - - - - Provides data for the event. - - - - A - event is raised every time a is created. - - - - - - The created - - - - - Construct instance using specified - - the that has been created - - - Construct instance using specified - - - - - - The that has been created - - - The that has been created - - - - The that has been created - - - - - - Test if an triggers an action - - - - Implementations of this interface allow certain appenders to decide - when to perform an appender specific action. - - - The action or behavior triggered is defined by the implementation. - - - Nicko Cadell - - - - Test if this event triggers the action - - The event to check - true if this event triggers the action, otherwise false - - - Return true if this event triggers the action - - - - - - Defines the default set of levels recognized by the system. - - - - Each has an associated . - - - Levels have a numeric that defines the relative - ordering between levels. Two Levels with the same - are deemed to be equivalent. - - - The levels that are recognized by log4net are set for each - and each repository can have different levels defined. The levels are stored - in the on the repository. Levels are - looked up by name from the . - - - When logging at level INFO the actual level used is not but - the value of LoggerRepository.LevelMap["INFO"]. The default value for this is - , but this can be changed by reconfiguring the level map. - - - Each level has a in addition to its . The - is the string that is written into the output log. By default - the display name is the same as the level name, but this can be used to alias levels - or to localize the log output. - - - Some of the predefined levels recognized by the system are: - - - - . - - - . - - - . - - - . - - - . - - - . - - - . - - - - Nicko Cadell - Gert Driesen - - - - Constructor - - Integer value for this level, higher values represent more severe levels. - The string name of this level. - The display name for this level. This may be localized or otherwise different from the name - - - Initializes a new instance of the class with - the specified level name and value. - - - - - - Constructor - - Integer value for this level, higher values represent more severe levels. - The string name of this level. - - - Initializes a new instance of the class with - the specified level name and value. - - - - - - Returns the representation of the current - . - - - A representation of the current . - - - - Returns the level . - - - - - - Compares levels. - - The object to compare against. - true if the objects are equal. - - - Compares the levels of instances, and - defers to base class if the target object is not a - instance. - - - - - - Returns a hash code - - A hash code for the current . - - - Returns a hash code suitable for use in hashing algorithms and data - structures like a hash table. - - - Returns the hash code of the level . - - - - - - Compares this instance to a specified object and returns an - indication of their relative values. - - A instance or to compare with this instance. - - A 32-bit signed integer that indicates the relative order of the - values compared. The return value has these meanings: - - - Value - Meaning - - - Less than zero - This instance is less than . - - - Zero - This instance is equal to . - - - Greater than zero - - This instance is greater than . - -or- - is . - - - - - - - must be an instance of - or ; otherwise, an exception is thrown. - - - is not a . - - - - Returns a value indicating whether a specified - is greater than another specified . - - A - A - - true if is greater than - ; otherwise, false. - - - - Compares two levels. - - - - - - Returns a value indicating whether a specified - is less than another specified . - - A - A - - true if is less than - ; otherwise, false. - - - - Compares two levels. - - - - - - Returns a value indicating whether a specified - is greater than or equal to another specified . - - A - A - - true if is greater than or equal to - ; otherwise, false. - - - - Compares two levels. - - - - - - Returns a value indicating whether a specified - is less than or equal to another specified . - - A - A - - true if is less than or equal to - ; otherwise, false. - - - - Compares two levels. - - - - - - Returns a value indicating whether two specified - objects have the same value. - - A or . - A or . - - true if the value of is the same as the - value of ; otherwise, false. - - - - Compares two levels. - - - - - - Returns a value indicating whether two specified - objects have different values. - - A or . - A or . - - true if the value of is different from - the value of ; otherwise, false. - - - - Compares two levels. - - - - - - Compares two specified instances. - - The first to compare. - The second to compare. - - A 32-bit signed integer that indicates the relative order of the - two values compared. The return value has these meanings: - - - Value - Meaning - - - Less than zero - is less than . - - - Zero - is equal to . - - - Greater than zero - is greater than . - - - - - - Compares two levels. - - - - - - The level designates a higher level than all the rest. - - - - - The level designates very severe error events. - System unusable, emergencies. - - - - - The level designates very severe error events - that will presumably lead the application to abort. - - - - - The level designates very severe error events. - Take immediate action, alerts. - - - - - The level designates very severe error events. - Critical condition, critical. - - - - - The level designates very severe error events. - - - - - The level designates error events that might - still allow the application to continue running. - - - - - The level designates potentially harmful - situations. - - - - - The level designates informational messages - that highlight the progress of the application at the highest level. - - - - - The level designates informational messages that - highlight the progress of the application at coarse-grained level. - - - - - The level designates fine-grained informational - events that are most useful to debug an application. - - - - - The level designates fine-grained informational - events that are most useful to debug an application. - - - - - The level designates fine-grained informational - events that are most useful to debug an application. - - - - - The level designates fine-grained informational - events that are most useful to debug an application. - - - - - The level designates fine-grained informational - events that are most useful to debug an application. - - - - - The level designates fine-grained informational - events that are most useful to debug an application. - - - - - The level designates the lowest level possible. - - - - - Gets the name of this level. - - - The name of this level. - - - - Gets the name of this level. - - - - - - Gets the value of this level. - - - The value of this level. - - - - Gets the value of this level. - - - - - - Gets the display name of this level. - - - The display name of this level. - - - - Gets the display name of this level. - - - - - - A strongly-typed collection of objects. - - Nicko Cadell - - - - Creates a read-only wrapper for a LevelCollection instance. - - list to create a readonly wrapper arround - - A LevelCollection wrapper that is read-only. - - - - - Initializes a new instance of the LevelCollection class - that is empty and has the default initial capacity. - - - - - Initializes a new instance of the LevelCollection class - that has the specified initial capacity. - - - The number of elements that the new LevelCollection is initially capable of storing. - - - - - Initializes a new instance of the LevelCollection class - that contains elements copied from the specified LevelCollection. - - The LevelCollection whose elements are copied to the new collection. - - - - Initializes a new instance of the LevelCollection class - that contains elements copied from the specified array. - - The array whose elements are copied to the new list. - - - - Initializes a new instance of the LevelCollection class - that contains elements copied from the specified collection. - - The collection whose elements are copied to the new list. - - - - Allow subclasses to avoid our default constructors - - - - - - Copies the entire LevelCollection to a one-dimensional - array. - - The one-dimensional array to copy to. - - - - Copies the entire LevelCollection to a one-dimensional - array, starting at the specified index of the target array. - - The one-dimensional array to copy to. - The zero-based index in at which copying begins. - - - - Adds a to the end of the LevelCollection. - - The to be added to the end of the LevelCollection. - The index at which the value has been added. - - - - Removes all elements from the LevelCollection. - - - - - Creates a shallow copy of the . - - A new with a shallow copy of the collection data. - - - - Determines whether a given is in the LevelCollection. - - The to check for. - true if is found in the LevelCollection; otherwise, false. - - - - Returns the zero-based index of the first occurrence of a - in the LevelCollection. - - The to locate in the LevelCollection. - - The zero-based index of the first occurrence of - in the entire LevelCollection, if found; otherwise, -1. - - - - - Inserts an element into the LevelCollection at the specified index. - - The zero-based index at which should be inserted. - The to insert. - - is less than zero - -or- - is equal to or greater than . - - - - - Removes the first occurrence of a specific from the LevelCollection. - - The to remove from the LevelCollection. - - The specified was not found in the LevelCollection. - - - - - Removes the element at the specified index of the LevelCollection. - - The zero-based index of the element to remove. - - is less than zero - -or- - is equal to or greater than . - - - - - Returns an enumerator that can iterate through the LevelCollection. - - An for the entire LevelCollection. - - - - Adds the elements of another LevelCollection to the current LevelCollection. - - The LevelCollection whose elements should be added to the end of the current LevelCollection. - The new of the LevelCollection. - - - - Adds the elements of a array to the current LevelCollection. - - The array whose elements should be added to the end of the LevelCollection. - The new of the LevelCollection. - - - - Adds the elements of a collection to the current LevelCollection. - - The collection whose elements should be added to the end of the LevelCollection. - The new of the LevelCollection. - - - - Sets the capacity to the actual number of elements. - - - - - is less than zero - -or- - is equal to or greater than . - - - - - is less than zero - -or- - is equal to or greater than . - - - - - Gets the number of elements actually contained in the LevelCollection. - - - - - Gets a value indicating whether access to the collection is synchronized (thread-safe). - - true if access to the ICollection is synchronized (thread-safe); otherwise, false. - - - - Gets an object that can be used to synchronize access to the collection. - - - - - Gets or sets the at the specified index. - - The zero-based index of the element to get or set. - - is less than zero - -or- - is equal to or greater than . - - - - - Gets a value indicating whether the collection has a fixed size. - - true if the collection has a fixed size; otherwise, false. The default is false - - - - Gets a value indicating whether the IList is read-only. - - true if the collection is read-only; otherwise, false. The default is false - - - - Gets or sets the number of elements the LevelCollection can contain. - - - - - Supports type-safe iteration over a . - - - - - Advances the enumerator to the next element in the collection. - - - true if the enumerator was successfully advanced to the next element; - false if the enumerator has passed the end of the collection. - - - The collection was modified after the enumerator was created. - - - - - Sets the enumerator to its initial position, before the first element in the collection. - - - - - Gets the current element in the collection. - - - - - Type visible only to our subclasses - Used to access protected constructor - - - - - A value - - - - - Supports simple iteration over a . - - - - - Initializes a new instance of the Enumerator class. - - - - - - Advances the enumerator to the next element in the collection. - - - true if the enumerator was successfully advanced to the next element; - false if the enumerator has passed the end of the collection. - - - The collection was modified after the enumerator was created. - - - - - Sets the enumerator to its initial position, before the first element in the collection. - - - - - Gets the current element in the collection. - - - - - An evaluator that triggers at a threshold level - - - - This evaluator will trigger if the level of the event - passed to - is equal to or greater than the - level. - - - Nicko Cadell - - - - The threshold for triggering - - - - - Create a new evaluator using the threshold. - - - - Create a new evaluator using the threshold. - - - This evaluator will trigger if the level of the event - passed to - is equal to or greater than the - level. - - - - - - Create a new evaluator using the specified threshold. - - the threshold to trigger at - - - Create a new evaluator using the specified threshold. - - - This evaluator will trigger if the level of the event - passed to - is equal to or greater than the - level. - - - - - - Is this the triggering event? - - The event to check - This method returns true, if the event level - is equal or higher than the . - Otherwise it returns false - - - This evaluator will trigger if the level of the event - passed to - is equal to or greater than the - level. - - - - - - the threshold to trigger at - - - The that will cause this evaluator to trigger - - - - This evaluator will trigger if the level of the event - passed to - is equal to or greater than the - level. - - - - - - Mapping between string name and Level object - - - - Mapping between string name and object. - This mapping is held separately for each . - The level name is case insensitive. - - - Nicko Cadell - - - - Mapping from level name to Level object. The - level name is case insensitive - - - - - Construct the level map - - - - Construct the level map. - - - - - - Clear the internal maps of all levels - - - - Clear the internal maps of all levels - - - - - - Create a new Level and add it to the map - - the string to display for the Level - the level value to give to the Level - - - Create a new Level and add it to the map - - - - - - - Create a new Level and add it to the map - - the string to display for the Level - the level value to give to the Level - the display name to give to the Level - - - Create a new Level and add it to the map - - - - - - Add a Level to the map - - the Level to add - - - Add a Level to the map - - - - - - Lookup a named level from the map - - the name of the level to lookup is taken from this level. - If the level is not set on the map then this level is added - the level in the map with the name specified - - - Lookup a named level from the map. The name of the level to lookup is taken - from the property of the - argument. - - - If no level with the specified name is found then the - argument is added to the level map - and returned. - - - - - - Lookup a by name - - The name of the Level to lookup - a Level from the map with the name specified - - - Returns the from the - map with the name specified. If the no level is - found then null is returned. - - - - - - Return all possible levels as a list of Level objects. - - all possible levels as a list of Level objects - - - Return all possible levels as a list of Level objects. - - - - - - The internal representation of caller location information. - - - - This class uses the System.Diagnostics.StackTrace class to generate - a call stack. The caller's information is then extracted from this stack. - - - The System.Diagnostics.StackTrace class is not supported on the - .NET Compact Framework 1.0 therefore caller location information is not - available on that framework. - - - The System.Diagnostics.StackTrace class has this to say about Release builds: - - - "StackTrace information will be most informative with Debug build configurations. - By default, Debug builds include debug symbols, while Release builds do not. The - debug symbols contain most of the file, method name, line number, and column - information used in constructing StackFrame and StackTrace objects. StackTrace - might not report as many method calls as expected, due to code transformations - that occur during optimization." - - - This means that in a Release build the caller information may be incomplete or may - not exist at all! Therefore caller location information cannot be relied upon in a Release build. - - - Nicko Cadell - Gert Driesen - - - - When location information is not available the constant - NA is returned. Current value of this string - constant is ?. - - - - - Constructor - - The declaring type of the method that is - the stack boundary into the logging system for this call. - - - Initializes a new instance of the - class based on the current thread. - - - - - - Constructor - - The fully qualified class name. - The method name. - The file name. - The line number of the method within the file. - - - Initializes a new instance of the - class with the specified data. - - - - - - Gets the fully qualified class name of the caller making the logging - request. - - - The fully qualified class name of the caller making the logging - request. - - - - Gets the fully qualified class name of the caller making the logging - request. - - - - - - Gets the file name of the caller. - - - The file name of the caller. - - - - Gets the file name of the caller. - - - - - - Gets the line number of the caller. - - - The line number of the caller. - - - - Gets the line number of the caller. - - - - - - Gets the method name of the caller. - - - The method name of the caller. - - - - Gets the method name of the caller. - - - - - - Gets all available caller information - - - All available caller information, in the format - fully.qualified.classname.of.caller.methodName(Filename:line) - - - - Gets all available caller information, in the format - fully.qualified.classname.of.caller.methodName(Filename:line) - - - - - - Static manager that controls the creation of repositories - - - - Static manager that controls the creation of repositories - - - This class is used by the wrapper managers (e.g. ) - to provide access to the objects. - - - This manager also holds the that is used to - lookup and create repositories. The selector can be set either programmatically using - the property, or by setting the log4net.RepositorySelector - AppSetting in the applications config file to the fully qualified type name of the - selector to use. - - - Nicko Cadell - Gert Driesen - - - - Private constructor to prevent instances. Only static methods should be used. - - - - Private constructor to prevent instances. Only static methods should be used. - - - - - - Hook the shutdown event - - - - On the full .NET runtime, the static constructor hooks up the - AppDomain.ProcessExit and AppDomain.DomainUnload> events. - These are used to shutdown the log4net system as the application exits. - - - - - - Register for ProcessExit and DomainUnload events on the AppDomain - - - - This needs to be in a separate method because the events make - a LinkDemand for the ControlAppDomain SecurityPermission. Because - this is a LinkDemand it is demanded at JIT time. Therefore we cannot - catch the exception in the method itself, we have to catch it in the - caller. - - - - - - Return the default instance. - - the repository to lookup in - Return the default instance - - - Gets the for the repository specified - by the argument. - - - - - - Returns the default instance. - - The assembly to use to lookup the repository. - The default instance. - - - - Return the default instance. - - the repository to lookup in - Return the default instance - - - Gets the for the repository specified - by the argument. - - - - - - Returns the default instance. - - The assembly to use to lookup the repository. - The default instance. - - - Returns the default instance. - - - - - - Returns the named logger if it exists. - - The repository to lookup in. - The fully qualified logger name to look for. - - The logger found, or null if the named logger does not exist in the - specified repository. - - - - If the named logger exists (in the specified repository) then it - returns a reference to the logger, otherwise it returns - null. - - - - - - Returns the named logger if it exists. - - The assembly to use to lookup the repository. - The fully qualified logger name to look for. - - The logger found, or null if the named logger does not exist in the - specified assembly's repository. - - - - If the named logger exists (in the specified assembly's repository) then it - returns a reference to the logger, otherwise it returns - null. - - - - - - Returns all the currently defined loggers in the specified repository. - - The repository to lookup in. - All the defined loggers. - - - The root logger is not included in the returned array. - - - - - - Returns all the currently defined loggers in the specified assembly's repository. - - The assembly to use to lookup the repository. - All the defined loggers. - - - The root logger is not included in the returned array. - - - - - - Retrieves or creates a named logger. - - The repository to lookup in. - The name of the logger to retrieve. - The logger with the name specified. - - - Retrieves a logger named as the - parameter. If the named logger already exists, then the - existing instance will be returned. Otherwise, a new instance is - created. - - - By default, loggers do not have a set level but inherit - it from the hierarchy. This is one of the central features of - log4net. - - - - - - Retrieves or creates a named logger. - - The assembly to use to lookup the repository. - The name of the logger to retrieve. - The logger with the name specified. - - - Retrieves a logger named as the - parameter. If the named logger already exists, then the - existing instance will be returned. Otherwise, a new instance is - created. - - - By default, loggers do not have a set level but inherit - it from the hierarchy. This is one of the central features of - log4net. - - - - - - Shorthand for . - - The repository to lookup in. - The of which the fullname will be used as the name of the logger to retrieve. - The logger with the name specified. - - - Gets the logger for the fully qualified name of the type specified. - - - - - - Shorthand for . - - the assembly to use to lookup the repository - The of which the fullname will be used as the name of the logger to retrieve. - The logger with the name specified. - - - Gets the logger for the fully qualified name of the type specified. - - - - - - Shuts down the log4net system. - - - - Calling this method will safely close and remove all - appenders in all the loggers including root contained in all the - default repositories. - - - Some appenders need to be closed before the application exists. - Otherwise, pending logging events might be lost. - - - The shutdown method is careful to close nested - appenders before closing regular appenders. This is allows - configurations where a regular appender is attached to a logger - and again to a nested appender. - - - - - - Shuts down the repository for the repository specified. - - The repository to shutdown. - - - Calling this method will safely close and remove all - appenders in all the loggers including root contained in the - repository for the specified. - - - Some appenders need to be closed before the application exists. - Otherwise, pending logging events might be lost. - - - The shutdown method is careful to close nested - appenders before closing regular appenders. This is allows - configurations where a regular appender is attached to a logger - and again to a nested appender. - - - - - - Shuts down the repository for the repository specified. - - The assembly to use to lookup the repository. - - - Calling this method will safely close and remove all - appenders in all the loggers including root contained in the - repository for the repository. The repository is looked up using - the specified. - - - Some appenders need to be closed before the application exists. - Otherwise, pending logging events might be lost. - - - The shutdown method is careful to close nested - appenders before closing regular appenders. This is allows - configurations where a regular appender is attached to a logger - and again to a nested appender. - - - - - - Resets all values contained in this repository instance to their defaults. - - The repository to reset. - - - Resets all values contained in the repository instance to their - defaults. This removes all appenders from all loggers, sets - the level of all non-root loggers to null, - sets their additivity flag to true and sets the level - of the root logger to . Moreover, - message disabling is set its default "off" value. - - - - - - Resets all values contained in this repository instance to their defaults. - - The assembly to use to lookup the repository to reset. - - - Resets all values contained in the repository instance to their - defaults. This removes all appenders from all loggers, sets - the level of all non-root loggers to null, - sets their additivity flag to true and sets the level - of the root logger to . Moreover, - message disabling is set its default "off" value. - - - - - - Creates a repository with the specified name. - - The name of the repository, this must be unique amongst repositories. - The created for the repository. - - - CreateDomain is obsolete. Use CreateRepository instead of CreateDomain. - - - Creates the default type of which is a - object. - - - The name must be unique. Repositories cannot be redefined. - An will be thrown if the repository already exists. - - - The specified repository already exists. - - - - Creates a repository with the specified name. - - The name of the repository, this must be unique amongst repositories. - The created for the repository. - - - Creates the default type of which is a - object. - - - The name must be unique. Repositories cannot be redefined. - An will be thrown if the repository already exists. - - - The specified repository already exists. - - - - Creates a repository with the specified name and repository type. - - The name of the repository, this must be unique to the repository. - A that implements - and has a no arg constructor. An instance of this type will be created to act - as the for the repository specified. - The created for the repository. - - - CreateDomain is obsolete. Use CreateRepository instead of CreateDomain. - - - The name must be unique. Repositories cannot be redefined. - An Exception will be thrown if the repository already exists. - - - The specified repository already exists. - - - - Creates a repository with the specified name and repository type. - - The name of the repository, this must be unique to the repository. - A that implements - and has a no arg constructor. An instance of this type will be created to act - as the for the repository specified. - The created for the repository. - - - The name must be unique. Repositories cannot be redefined. - An Exception will be thrown if the repository already exists. - - - The specified repository already exists. - - - - Creates a repository for the specified assembly and repository type. - - The assembly to use to get the name of the repository. - A that implements - and has a no arg constructor. An instance of this type will be created to act - as the for the repository specified. - The created for the repository. - - - CreateDomain is obsolete. Use CreateRepository instead of CreateDomain. - - - The created will be associated with the repository - specified such that a call to with the - same assembly specified will return the same repository instance. - - - - - - Creates a repository for the specified assembly and repository type. - - The assembly to use to get the name of the repository. - A that implements - and has a no arg constructor. An instance of this type will be created to act - as the for the repository specified. - The created for the repository. - - - The created will be associated with the repository - specified such that a call to with the - same assembly specified will return the same repository instance. - - - - - - Gets an array of all currently defined repositories. - - An array of all the known objects. - - - Gets an array of all currently defined repositories. - - - - - - Internal method to get pertinent version info. - - A string of version info. - - - - Called when the event fires - - the that is exiting - null - - - Called when the event fires. - - - When the event is triggered the log4net system is . - - - - - - Called when the event fires - - the that is exiting - null - - - Called when the event fires. - - - When the event is triggered the log4net system is . - - - - - - Initialize the default repository selector - - - - - Gets or sets the repository selector used by the . - - - The repository selector used by the . - - - - The repository selector () is used by - the to create and select repositories - (). - - - The caller to supplies either a string name - or an assembly (if not supplied the assembly is inferred using - ). - - - This context is used by the selector to lookup a specific repository. - - - For the full .NET Framework, the default repository is DefaultRepositorySelector; - for the .NET Compact Framework CompactRepositorySelector is the default - repository. - - - - - - Implementation of the interface. - - - - This class should be used as the base for all wrapper implementations. - - - Nicko Cadell - Gert Driesen - - - - Constructs a new wrapper for the specified logger. - - The logger to wrap. - - - Constructs a new wrapper for the specified logger. - - - - - - The logger that this object is wrapping - - - - - Gets the implementation behind this wrapper object. - - - The object that this object is implementing. - - - - The Logger object may not be the same object as this object - because of logger decorators. - - - This gets the actual underlying objects that is used to process - the log events. - - - - - - Portable data structure used by - - - - Portable data structure used by - - - Nicko Cadell - - - - The logger name. - - - - The logger name. - - - - - - Level of logging event. - - - - Level of logging event. Level cannot be Serializable - because it is a flyweight. Due to its special serialization it - cannot be declared final either. - - - - - - The application supplied message. - - - - The application supplied message of logging event. - - - - - - The name of thread - - - - The name of thread in which this logging event was generated - - - - - - The time the event was logged - - - - The TimeStamp is stored in the local time zone for this computer. - - - - - - Location information for the caller. - - - - Location information for the caller. - - - - - - String representation of the user - - - - String representation of the user's windows name, - like DOMAIN\username - - - - - - String representation of the identity. - - - - String representation of the current thread's principal identity. - - - - - - The string representation of the exception - - - - The string representation of the exception - - - - - - String representation of the AppDomain. - - - - String representation of the AppDomain. - - - - - - Additional event specific properties - - - - A logger or an appender may attach additional - properties to specific events. These properties - have a string key and an object value. - - - - - - Flags passed to the property - - - - Flags passed to the property - - - Nicko Cadell - - - - Fix the MDC - - - - - Fix the NDC - - - - - Fix the rendered message - - - - - Fix the thread name - - - - - Fix the callers location information - - - CAUTION: Very slow to generate - - - - - Fix the callers windows user name - - - CAUTION: Slow to generate - - - - - Fix the domain friendly name - - - - - Fix the callers principal name - - - CAUTION: May be slow to generate - - - - - Fix the exception text - - - - - Fix the event properties - - - - - No fields fixed - - - - - All fields fixed - - - - - Partial fields fixed - - - - This set of partial fields gives good performance. The following fields are fixed: - - - - - - - - - - - - - The internal representation of logging events. - - - - When an affirmative decision is made to log then a - instance is created. This instance - is passed around to the different log4net components. - - - This class is of concern to those wishing to extend log4net. - - - Some of the values in instances of - are considered volatile, that is the values are correct at the - time the event is delivered to appenders, but will not be consistent - at any time afterwards. If an event is to be stored and then processed - at a later time these volatile values must be fixed by calling - . There is a performance penalty - for incurred by calling but it - is essential to maintaining data consistency. - - - Nicko Cadell - Gert Driesen - Douglas de la Torre - Daniel Cazzulino - - - - The key into the Properties map for the host name value. - - - - - The key into the Properties map for the thread identity value. - - - - - The key into the Properties map for the user name value. - - - - - Initializes a new instance of the class - from the supplied parameters. - - The declaring type of the method that is - the stack boundary into the logging system for this call. - The repository this event is logged in. - The name of the logger of this event. - The level of this event. - The message of this event. - The exception for this event. - - - Except , and , - all fields of LoggingEvent are filled when actually needed. Call - to cache all data locally - to prevent inconsistencies. - - This method is called by the log4net framework - to create a logging event. - - - - - - Initializes a new instance of the class - using specific data. - - The declaring type of the method that is - the stack boundary into the logging system for this call. - The repository this event is logged in. - Data used to initialize the logging event. - The fields in the struct that have already been fixed. - - - This constructor is provided to allow a - to be created independently of the log4net framework. This can - be useful if you require a custom serialization scheme. - - - Use the method to obtain an - instance of the class. - - - The parameter should be used to specify which fields in the - struct have been preset. Fields not specified in the - will be captured from the environment if requested or fixed. - - - - - - Initializes a new instance of the class - using specific data. - - The declaring type of the method that is - the stack boundary into the logging system for this call. - The repository this event is logged in. - Data used to initialize the logging event. - - - This constructor is provided to allow a - to be created independently of the log4net framework. This can - be useful if you require a custom serialization scheme. - - - Use the method to obtain an - instance of the class. - - - This constructor sets this objects flags to , - this assumes that all the data relating to this event is passed in via the - parameter and no other data should be captured from the environment. - - - - - - Initializes a new instance of the class - using specific data. - - Data used to initialize the logging event. - - - This constructor is provided to allow a - to be created independently of the log4net framework. This can - be useful if you require a custom serialization scheme. - - - Use the method to obtain an - instance of the class. - - - This constructor sets this objects flags to , - this assumes that all the data relating to this event is passed in via the - parameter and no other data should be captured from the environment. - - - - - - Serialization constructor - - The that holds the serialized object data. - The that contains contextual information about the source or destination. - - - Initializes a new instance of the class - with serialized data. - - - - - - Ensure that the repository is set. - - the value for the repository - - - - Write the rendered message to a TextWriter - - the writer to write the message to - - - Unlike the property this method - does store the message data in the internal cache. Therefore - if called only once this method should be faster than the - property, however if the message is - to be accessed multiple times then the property will be more efficient. - - - - - - Serializes this object into the provided. - - The to populate with data. - The destination for this serialization. - - - The data in this event must be fixed before it can be serialized. - - - The method must be called during the - method call if this event - is to be used outside that method. - - - - - - Gets the portable data for this . - - The for this event. - - - A new can be constructed using a - instance. - - - Does a fix of the data - in the logging event before returning the event data. - - - - - - Gets the portable data for this . - - The set of data to ensure is fixed in the LoggingEventData - The for this event. - - - A new can be constructed using a - instance. - - - - - - Returns this event's exception's rendered using the - . - - - This event's exception's rendered using the . - - - - Obsolete. Use instead. - - - - - - Returns this event's exception's rendered using the - . - - - This event's exception's rendered using the . - - - - Returns this event's exception's rendered using the - . - - - - - - Fix instance fields that hold volatile data. - - - - Some of the values in instances of - are considered volatile, that is the values are correct at the - time the event is delivered to appenders, but will not be consistent - at any time afterwards. If an event is to be stored and then processed - at a later time these volatile values must be fixed by calling - . There is a performance penalty - incurred by calling but it - is essential to maintaining data consistency. - - - Calling is equivalent to - calling passing the parameter - false. - - - See for more - information. - - - - - - Fixes instance fields that hold volatile data. - - Set to true to not fix data that takes a long time to fix. - - - Some of the values in instances of - are considered volatile, that is the values are correct at the - time the event is delivered to appenders, but will not be consistent - at any time afterwards. If an event is to be stored and then processed - at a later time these volatile values must be fixed by calling - . There is a performance penalty - for incurred by calling but it - is essential to maintaining data consistency. - - - The param controls the data that - is fixed. Some of the data that can be fixed takes a long time to - generate, therefore if you do not require those settings to be fixed - they can be ignored by setting the param - to true. This setting will ignore the - and settings. - - - Set to false to ensure that all - settings are fixed. - - - - - - Fix the fields specified by the parameter - - the fields to fix - - - Only fields specified in the will be fixed. - Fields will not be fixed if they have previously been fixed. - It is not possible to 'unfix' a field. - - - - - - Lookup a composite property in this event - - the key for the property to lookup - the value for the property - - - This event has composite properties that combine together properties from - several different contexts in the following order: - - - this events properties - - This event has that can be set. These - properties are specific to this event only. - - - - the thread properties - - The that are set on the current - thread. These properties are shared by all events logged on this thread. - - - - the global properties - - The that are set globally. These - properties are shared by all the threads in the AppDomain. - - - - - - - - - Get all the composite properties in this event - - the containing all the properties - - - See for details of the composite properties - stored by the event. - - - This method returns a single containing all the - properties defined for this event. - - - - - - The internal logging event data. - - - - - The internal logging event data. - - - - - The internal logging event data. - - - - - The fully qualified Type of the calling - logger class in the stack frame (i.e. the declaring type of the method). - - - - - The application supplied message of logging event. - - - - - The exception that was thrown. - - - This is not serialized. The string representation - is serialized instead. - - - - - The repository that generated the logging event - - - This is not serialized. - - - - - The fix state for this event - - - These flags indicate which fields have been fixed. - Not serialized. - - - - - Indicated that the internal cache is updateable (ie not fixed) - - - This is a seperate flag to m_fixFlags as it allows incrementel fixing and simpler - changes in the caching strategy. - - - - - Gets the time when the current process started. - - - This is the time when this process started. - - - - The TimeStamp is stored in the local time zone for this computer. - - - Tries to get the start time for the current process. - Failing that it returns the time of the first call to - this property. - - - Note that AppDomains may be loaded and unloaded within the - same process without the process terminating and therefore - without the process start time being reset. - - - - - - Gets the of the logging event. - - - The of the logging event. - - - - Gets the of the logging event. - - - - - - Gets the time of the logging event. - - - The time of the logging event. - - - - The TimeStamp is stored in the local time zone for this computer. - - - - - - Gets the name of the logger that logged the event. - - - The name of the logger that logged the event. - - - - Gets the name of the logger that logged the event. - - - - - - Gets the location information for this logging event. - - - The location information for this logging event. - - - - The collected information is cached for future use. - - - See the class for more information on - supported frameworks and the different behavior in Debug and - Release builds. - - - - - - Gets the message object used to initialize this event. - - - The message object used to initialize this event. - - - - Gets the message object used to initialize this event. - Note that this event may not have a valid message object. - If the event is serialized the message object will not - be transferred. To get the text of the message the - property must be used - not this property. - - - If there is no defined message object for this event then - null will be returned. - - - - - - Gets the exception object used to initialize this event. - - - The exception object used to initialize this event. - - - - Gets the exception object used to initialize this event. - Note that this event may not have a valid exception object. - If the event is serialized the exception object will not - be transferred. To get the text of the exception the - method must be used - not this property. - - - If there is no defined exception object for this event then - null will be returned. - - - - - - The that this event was created in. - - - - The that this event was created in. - - - - - - Gets the message, rendered through the . - - - The message rendered through the . - - - - The collected information is cached for future use. - - - - - - Gets the name of the current thread. - - - The name of the current thread, or the thread ID when - the name is not available. - - - - The collected information is cached for future use. - - - - - - Gets the name of the current user. - - - The name of the current user, or NOT AVAILABLE when the - underlying runtime has no support for retrieving the name of the - current user. - - - - Calls WindowsIdentity.GetCurrent().Name to get the name of - the current windows user. - - - To improve performance, we could cache the string representation of - the name, and reuse that as long as the identity stayed constant. - Once the identity changed, we would need to re-assign and re-render - the string. - - - However, the WindowsIdentity.GetCurrent() call seems to - return different objects every time, so the current implementation - doesn't do this type of caching. - - - Timing for these operations: - - - - Method - Results - - - WindowsIdentity.GetCurrent() - 10000 loops, 00:00:00.2031250 seconds - - - WindowsIdentity.GetCurrent().Name - 10000 loops, 00:00:08.0468750 seconds - - - - This means we could speed things up almost 40 times by caching the - value of the WindowsIdentity.GetCurrent().Name property, since - this takes (8.04-0.20) = 7.84375 seconds. - - - - - - Gets the identity of the current thread principal. - - - The string name of the identity of the current thread principal. - - - - Calls System.Threading.Thread.CurrentPrincipal.Identity.Name to get - the name of the current thread principal. - - - - - - Gets the AppDomain friendly name. - - - The AppDomain friendly name. - - - - Gets the AppDomain friendly name. - - - - - - Additional event specific properties. - - - Additional event specific properties. - - - - A logger or an appender may attach additional - properties to specific events. These properties - have a string key and an object value. - - - This property is for events that have been added directly to - this event. The aggregate properties (which include these - event properties) can be retrieved using - and . - - - Once the properties have been fixed this property - returns the combined cached properties. This ensures that updates to - this property are always reflected in the underlying storage. When - returning the combined properties there may be more keys in the - Dictionary than expected. - - - - - - The fixed fields in this event - - - The set of fields that are fixed in this event - - - - Fields will not be fixed if they have previously been fixed. - It is not possible to 'unfix' a field. - - - - - - Implementation of wrapper interface. - - - - This implementation of the interface - forwards to the held by the base class. - - - This logger has methods to allow the caller to log at the following - levels: - - - - DEBUG - - The and methods log messages - at the DEBUG level. That is the level with that name defined in the - repositories . The default value - for this level is . The - property tests if this level is enabled for logging. - - - - INFO - - The and methods log messages - at the INFO level. That is the level with that name defined in the - repositories . The default value - for this level is . The - property tests if this level is enabled for logging. - - - - WARN - - The and methods log messages - at the WARN level. That is the level with that name defined in the - repositories . The default value - for this level is . The - property tests if this level is enabled for logging. - - - - ERROR - - The and methods log messages - at the ERROR level. That is the level with that name defined in the - repositories . The default value - for this level is . The - property tests if this level is enabled for logging. - - - - FATAL - - The and methods log messages - at the FATAL level. That is the level with that name defined in the - repositories . The default value - for this level is . The - property tests if this level is enabled for logging. - - - - - The values for these levels and their semantic meanings can be changed by - configuring the for the repository. - - - Nicko Cadell - Gert Driesen - - - - The ILog interface is use by application to log messages into - the log4net framework. - - - - Use the to obtain logger instances - that implement this interface. The - static method is used to get logger instances. - - - This class contains methods for logging at different levels and also - has properties for determining if those logging levels are - enabled in the current configuration. - - - This interface can be implemented in different ways. This documentation - specifies reasonable behavior that a caller can expect from the actual - implementation, however different implementations reserve the right to - do things differently. - - - Simple example of logging messages - - ILog log = LogManager.GetLogger("application-log"); - - log.Info("Application Start"); - log.Debug("This is a debug message"); - - if (log.IsDebugEnabled) - { - log.Debug("This is another debug message"); - } - - - - - Nicko Cadell - Gert Driesen - - - Log a message object with the level. - - Log a message object with the level. - - The message object to log. - - - This method first checks if this logger is DEBUG - enabled by comparing the level of this logger with the - level. If this logger is - DEBUG enabled, then it converts the message object - (passed as parameter) to a string by invoking the appropriate - . It then - proceeds to call all the registered appenders in this logger - and also higher in the hierarchy depending on the value of - the additivity flag. - - WARNING Note that passing an - to this method will print the name of the - but no stack trace. To print a stack trace use the - form instead. - - - - - - - - Log a message object with the level including - the stack trace of the passed - as a parameter. - - The message object to log. - The exception to log, including its stack trace. - - - See the form for more detailed information. - - - - - - - Log a formatted string with the level. - - Logs a formatted message string with the level. - - A String containing zero or more format items - An Object array containing zero or more objects to format - - - The message is formatted using the String.Format method. See - for details of the syntax of the format string and the behavior - of the formatting. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - - - Logs a formatted message string with the level. - - A String containing zero or more format items - An Object to format - - - The message is formatted using the String.Format method. See - for details of the syntax of the format string and the behavior - of the formatting. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - - - Logs a formatted message string with the level. - - A String containing zero or more format items - An Object to format - An Object to format - - - The message is formatted using the String.Format method. See - for details of the syntax of the format string and the behavior - of the formatting. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - - - Logs a formatted message string with the level. - - A String containing zero or more format items - An Object to format - An Object to format - An Object to format - - - The message is formatted using the String.Format method. See - for details of the syntax of the format string and the behavior - of the formatting. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - - - Logs a formatted message string with the level. - - An that supplies culture-specific formatting information - A String containing zero or more format items - An Object array containing zero or more objects to format - - - The message is formatted using the String.Format method. See - for details of the syntax of the format string and the behavior - of the formatting. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - - Log a message object with the level. - - Logs a message object with the level. - - - - This method first checks if this logger is INFO - enabled by comparing the level of this logger with the - level. If this logger is - INFO enabled, then it converts the message object - (passed as parameter) to a string by invoking the appropriate - . It then - proceeds to call all the registered appenders in this logger - and also higher in the hierarchy depending on the value of the - additivity flag. - - WARNING Note that passing an - to this method will print the name of the - but no stack trace. To print a stack trace use the - form instead. - - - The message object to log. - - - - - - Logs a message object with the INFO level including - the stack trace of the passed - as a parameter. - - The message object to log. - The exception to log, including its stack trace. - - - See the form for more detailed information. - - - - - - - Log a formatted message string with the level. - - Logs a formatted message string with the level. - - A String containing zero or more format items - An Object array containing zero or more objects to format - - - The message is formatted using the String.Format method. See - for details of the syntax of the format string and the behavior - of the formatting. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - - - Logs a formatted message string with the level. - - A String containing zero or more format items - An Object to format - - - The message is formatted using the String.Format method. See - for details of the syntax of the format string and the behavior - of the formatting. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - - - Logs a formatted message string with the level. - - A String containing zero or more format items - An Object to format - An Object to format - - - The message is formatted using the String.Format method. See - for details of the syntax of the format string and the behavior - of the formatting. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - - - Logs a formatted message string with the level. - - A String containing zero or more format items - An Object to format - An Object to format - An Object to format - - - The message is formatted using the String.Format method. See - for details of the syntax of the format string and the behavior - of the formatting. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - - - Logs a formatted message string with the level. - - An that supplies culture-specific formatting information - A String containing zero or more format items - An Object array containing zero or more objects to format - - - The message is formatted using the String.Format method. See - for details of the syntax of the format string and the behavior - of the formatting. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - - Log a message object with the level. - - Log a message object with the level. - - - - This method first checks if this logger is WARN - enabled by comparing the level of this logger with the - level. If this logger is - WARN enabled, then it converts the message object - (passed as parameter) to a string by invoking the appropriate - . It then - proceeds to call all the registered appenders in this logger - and also higher in the hierarchy depending on the value of the - additivity flag. - - WARNING Note that passing an - to this method will print the name of the - but no stack trace. To print a stack trace use the - form instead. - - - The message object to log. - - - - - - Log a message object with the level including - the stack trace of the passed - as a parameter. - - The message object to log. - The exception to log, including its stack trace. - - - See the form for more detailed information. - - - - - - - Log a formatted message string with the level. - - Logs a formatted message string with the level. - - A String containing zero or more format items - An Object array containing zero or more objects to format - - - The message is formatted using the String.Format method. See - for details of the syntax of the format string and the behavior - of the formatting. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - - - Logs a formatted message string with the level. - - A String containing zero or more format items - An Object to format - - - The message is formatted using the String.Format method. See - for details of the syntax of the format string and the behavior - of the formatting. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - - - Logs a formatted message string with the level. - - A String containing zero or more format items - An Object to format - An Object to format - - - The message is formatted using the String.Format method. See - for details of the syntax of the format string and the behavior - of the formatting. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - - - Logs a formatted message string with the level. - - A String containing zero or more format items - An Object to format - An Object to format - An Object to format - - - The message is formatted using the String.Format method. See - for details of the syntax of the format string and the behavior - of the formatting. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - - - Logs a formatted message string with the level. - - An that supplies culture-specific formatting information - A String containing zero or more format items - An Object array containing zero or more objects to format - - - The message is formatted using the String.Format method. See - for details of the syntax of the format string and the behavior - of the formatting. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - - Log a message object with the level. - - Logs a message object with the level. - - The message object to log. - - - This method first checks if this logger is ERROR - enabled by comparing the level of this logger with the - level. If this logger is - ERROR enabled, then it converts the message object - (passed as parameter) to a string by invoking the appropriate - . It then - proceeds to call all the registered appenders in this logger - and also higher in the hierarchy depending on the value of the - additivity flag. - - WARNING Note that passing an - to this method will print the name of the - but no stack trace. To print a stack trace use the - form instead. - - - - - - - - Log a message object with the level including - the stack trace of the passed - as a parameter. - - The message object to log. - The exception to log, including its stack trace. - - - See the form for more detailed information. - - - - - - - Log a formatted message string with the level. - - Logs a formatted message string with the level. - - A String containing zero or more format items - An Object array containing zero or more objects to format - - - The message is formatted using the String.Format method. See - for details of the syntax of the format string and the behavior - of the formatting. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - - - Logs a formatted message string with the level. - - A String containing zero or more format items - An Object to format - - - The message is formatted using the String.Format method. See - for details of the syntax of the format string and the behavior - of the formatting. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - - - Logs a formatted message string with the level. - - A String containing zero or more format items - An Object to format - An Object to format - - - The message is formatted using the String.Format method. See - for details of the syntax of the format string and the behavior - of the formatting. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - - - Logs a formatted message string with the level. - - A String containing zero or more format items - An Object to format - An Object to format - An Object to format - - - The message is formatted using the String.Format method. See - for details of the syntax of the format string and the behavior - of the formatting. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - - - Logs a formatted message string with the level. - - An that supplies culture-specific formatting information - A String containing zero or more format items - An Object array containing zero or more objects to format - - - The message is formatted using the String.Format method. See - for details of the syntax of the format string and the behavior - of the formatting. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - - Log a message object with the level. - - Log a message object with the level. - - - - This method first checks if this logger is FATAL - enabled by comparing the level of this logger with the - level. If this logger is - FATAL enabled, then it converts the message object - (passed as parameter) to a string by invoking the appropriate - . It then - proceeds to call all the registered appenders in this logger - and also higher in the hierarchy depending on the value of the - additivity flag. - - WARNING Note that passing an - to this method will print the name of the - but no stack trace. To print a stack trace use the - form instead. - - - The message object to log. - - - - - - Log a message object with the level including - the stack trace of the passed - as a parameter. - - The message object to log. - The exception to log, including its stack trace. - - - See the form for more detailed information. - - - - - - - Log a formatted message string with the level. - - Logs a formatted message string with the level. - - A String containing zero or more format items - An Object array containing zero or more objects to format - - - The message is formatted using the String.Format method. See - for details of the syntax of the format string and the behavior - of the formatting. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - - - Logs a formatted message string with the level. - - A String containing zero or more format items - An Object to format - - - The message is formatted using the String.Format method. See - for details of the syntax of the format string and the behavior - of the formatting. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - - - Logs a formatted message string with the level. - - A String containing zero or more format items - An Object to format - An Object to format - - - The message is formatted using the String.Format method. See - for details of the syntax of the format string and the behavior - of the formatting. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - - - Logs a formatted message string with the level. - - A String containing zero or more format items - An Object to format - An Object to format - An Object to format - - - The message is formatted using the String.Format method. See - for details of the syntax of the format string and the behavior - of the formatting. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - - - Logs a formatted message string with the level. - - An that supplies culture-specific formatting information - A String containing zero or more format items - An Object array containing zero or more objects to format - - - The message is formatted using the String.Format method. See - for details of the syntax of the format string and the behavior - of the formatting. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - - - Checks if this logger is enabled for the level. - - - true if this logger is enabled for events, false otherwise. - - - - This function is intended to lessen the computational cost of - disabled log debug statements. - - For some ILog interface log, when you write: - - log.Debug("This is entry number: " + i ); - - - You incur the cost constructing the message, string construction and concatenation in - this case, regardless of whether the message is logged or not. - - - If you are worried about speed (who isn't), then you should write: - - - if (log.IsDebugEnabled) - { - log.Debug("This is entry number: " + i ); - } - - - This way you will not incur the cost of parameter - construction if debugging is disabled for log. On - the other hand, if the log is debug enabled, you - will incur the cost of evaluating whether the logger is debug - enabled twice. Once in and once in - the . This is an insignificant overhead - since evaluating a logger takes about 1% of the time it - takes to actually log. This is the preferred style of logging. - - Alternatively if your logger is available statically then the is debug - enabled state can be stored in a static variable like this: - - - private static readonly bool isDebugEnabled = log.IsDebugEnabled; - - - Then when you come to log you can write: - - - if (isDebugEnabled) - { - log.Debug("This is entry number: " + i ); - } - - - This way the debug enabled state is only queried once - when the class is loaded. Using a private static readonly - variable is the most efficient because it is a run time constant - and can be heavily optimized by the JIT compiler. - - - Of course if you use a static readonly variable to - hold the enabled state of the logger then you cannot - change the enabled state at runtime to vary the logging - that is produced. You have to decide if you need absolute - speed or runtime flexibility. - - - - - - - - Checks if this logger is enabled for the level. - - - true if this logger is enabled for events, false otherwise. - - - For more information see . - - - - - - - - Checks if this logger is enabled for the level. - - - true if this logger is enabled for events, false otherwise. - - - For more information see . - - - - - - - - Checks if this logger is enabled for the level. - - - true if this logger is enabled for events, false otherwise. - - - For more information see . - - - - - - - - Checks if this logger is enabled for the level. - - - true if this logger is enabled for events, false otherwise. - - - For more information see . - - - - - - - - Construct a new wrapper for the specified logger. - - The logger to wrap. - - - Construct a new wrapper for the specified logger. - - - - - - Virtual method called when the configuration of the repository changes - - the repository holding the levels - - - Virtual method called when the configuration of the repository changes - - - - - - Logs a message object with the DEBUG level. - - The message object to log. - - - This method first checks if this logger is DEBUG - enabled by comparing the level of this logger with the - DEBUG level. If this logger is - DEBUG enabled, then it converts the message object - (passed as parameter) to a string by invoking the appropriate - . It then - proceeds to call all the registered appenders in this logger - and also higher in the hierarchy depending on the value of the - additivity flag. - - - WARNING Note that passing an - to this method will print the name of the - but no stack trace. To print a stack trace use the - form instead. - - - - - - Logs a message object with the DEBUG level - - The message object to log. - The exception to log, including its stack trace. - - - Logs a message object with the DEBUG level including - the stack trace of the passed - as a parameter. - - - See the form for more detailed information. - - - - - - - Logs a formatted message string with the DEBUG level. - - A String containing zero or more format items - An Object array containing zero or more objects to format - - - The message is formatted using the method. See - String.Format for details of the syntax of the format string and the behavior - of the formatting. - - - The string is formatted using the - format provider. To specify a localized provider use the - method. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - Logs a formatted message string with the DEBUG level. - - A String containing zero or more format items - An Object to format - - - The message is formatted using the method. See - String.Format for details of the syntax of the format string and the behavior - of the formatting. - - - The string is formatted using the - format provider. To specify a localized provider use the - method. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - Logs a formatted message string with the DEBUG level. - - A String containing zero or more format items - An Object to format - An Object to format - - - The message is formatted using the method. See - String.Format for details of the syntax of the format string and the behavior - of the formatting. - - - The string is formatted using the - format provider. To specify a localized provider use the - method. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - Logs a formatted message string with the DEBUG level. - - A String containing zero or more format items - An Object to format - An Object to format - An Object to format - - - The message is formatted using the method. See - String.Format for details of the syntax of the format string and the behavior - of the formatting. - - - The string is formatted using the - format provider. To specify a localized provider use the - method. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - Logs a formatted message string with the DEBUG level. - - An that supplies culture-specific formatting information - A String containing zero or more format items - An Object array containing zero or more objects to format - - - The message is formatted using the method. See - String.Format for details of the syntax of the format string and the behavior - of the formatting. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - Logs a message object with the INFO level. - - The message object to log. - - - This method first checks if this logger is INFO - enabled by comparing the level of this logger with the - INFO level. If this logger is - INFO enabled, then it converts the message object - (passed as parameter) to a string by invoking the appropriate - . It then - proceeds to call all the registered appenders in this logger - and also higher in the hierarchy depending on the value of - the additivity flag. - - - WARNING Note that passing an - to this method will print the name of the - but no stack trace. To print a stack trace use the - form instead. - - - - - - Logs a message object with the INFO level. - - The message object to log. - The exception to log, including its stack trace. - - - Logs a message object with the INFO level including - the stack trace of the - passed as a parameter. - - - See the form for more detailed information. - - - - - - - Logs a formatted message string with the INFO level. - - A String containing zero or more format items - An Object array containing zero or more objects to format - - - The message is formatted using the method. See - String.Format for details of the syntax of the format string and the behavior - of the formatting. - - - The string is formatted using the - format provider. To specify a localized provider use the - method. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - Logs a formatted message string with the INFO level. - - A String containing zero or more format items - An Object to format - - - The message is formatted using the method. See - String.Format for details of the syntax of the format string and the behavior - of the formatting. - - - The string is formatted using the - format provider. To specify a localized provider use the - method. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - Logs a formatted message string with the INFO level. - - A String containing zero or more format items - An Object to format - An Object to format - - - The message is formatted using the method. See - String.Format for details of the syntax of the format string and the behavior - of the formatting. - - - The string is formatted using the - format provider. To specify a localized provider use the - method. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - Logs a formatted message string with the INFO level. - - A String containing zero or more format items - An Object to format - An Object to format - An Object to format - - - The message is formatted using the method. See - String.Format for details of the syntax of the format string and the behavior - of the formatting. - - - The string is formatted using the - format provider. To specify a localized provider use the - method. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - Logs a formatted message string with the INFO level. - - An that supplies culture-specific formatting information - A String containing zero or more format items - An Object array containing zero or more objects to format - - - The message is formatted using the method. See - String.Format for details of the syntax of the format string and the behavior - of the formatting. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - Logs a message object with the WARN level. - - the message object to log - - - This method first checks if this logger is WARN - enabled by comparing the level of this logger with the - WARN level. If this logger is - WARN enabled, then it converts the message object - (passed as parameter) to a string by invoking the appropriate - . It then - proceeds to call all the registered appenders in this logger and - also higher in the hierarchy depending on the value of the - additivity flag. - - - WARNING Note that passing an to this - method will print the name of the but no - stack trace. To print a stack trace use the - form instead. - - - - - - Logs a message object with the WARN level - - The message object to log. - The exception to log, including its stack trace. - - - Logs a message object with the WARN level including - the stack trace of the - passed as a parameter. - - - See the form for more detailed information. - - - - - - - Logs a formatted message string with the WARN level. - - A String containing zero or more format items - An Object array containing zero or more objects to format - - - The message is formatted using the method. See - String.Format for details of the syntax of the format string and the behavior - of the formatting. - - - The string is formatted using the - format provider. To specify a localized provider use the - method. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - Logs a formatted message string with the WARN level. - - A String containing zero or more format items - An Object to format - - - The message is formatted using the method. See - String.Format for details of the syntax of the format string and the behavior - of the formatting. - - - The string is formatted using the - format provider. To specify a localized provider use the - method. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - Logs a formatted message string with the WARN level. - - A String containing zero or more format items - An Object to format - An Object to format - - - The message is formatted using the method. See - String.Format for details of the syntax of the format string and the behavior - of the formatting. - - - The string is formatted using the - format provider. To specify a localized provider use the - method. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - Logs a formatted message string with the WARN level. - - A String containing zero or more format items - An Object to format - An Object to format - An Object to format - - - The message is formatted using the method. See - String.Format for details of the syntax of the format string and the behavior - of the formatting. - - - The string is formatted using the - format provider. To specify a localized provider use the - method. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - Logs a formatted message string with the WARN level. - - An that supplies culture-specific formatting information - A String containing zero or more format items - An Object array containing zero or more objects to format - - - The message is formatted using the method. See - String.Format for details of the syntax of the format string and the behavior - of the formatting. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - Logs a message object with the ERROR level. - - The message object to log. - - - This method first checks if this logger is ERROR - enabled by comparing the level of this logger with the - ERROR level. If this logger is - ERROR enabled, then it converts the message object - (passed as parameter) to a string by invoking the appropriate - . It then - proceeds to call all the registered appenders in this logger and - also higher in the hierarchy depending on the value of the - additivity flag. - - - WARNING Note that passing an to this - method will print the name of the but no - stack trace. To print a stack trace use the - form instead. - - - - - - Logs a message object with the ERROR level - - The message object to log. - The exception to log, including its stack trace. - - - Logs a message object with the ERROR level including - the stack trace of the - passed as a parameter. - - - See the form for more detailed information. - - - - - - - Logs a formatted message string with the ERROR level. - - A String containing zero or more format items - An Object array containing zero or more objects to format - - - The message is formatted using the method. See - String.Format for details of the syntax of the format string and the behavior - of the formatting. - - - The string is formatted using the - format provider. To specify a localized provider use the - method. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - Logs a formatted message string with the ERROR level. - - A String containing zero or more format items - An Object to format - - - The message is formatted using the method. See - String.Format for details of the syntax of the format string and the behavior - of the formatting. - - - The string is formatted using the - format provider. To specify a localized provider use the - method. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - Logs a formatted message string with the ERROR level. - - A String containing zero or more format items - An Object to format - An Object to format - - - The message is formatted using the method. See - String.Format for details of the syntax of the format string and the behavior - of the formatting. - - - The string is formatted using the - format provider. To specify a localized provider use the - method. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - Logs a formatted message string with the ERROR level. - - A String containing zero or more format items - An Object to format - An Object to format - An Object to format - - - The message is formatted using the method. See - String.Format for details of the syntax of the format string and the behavior - of the formatting. - - - The string is formatted using the - format provider. To specify a localized provider use the - method. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - Logs a formatted message string with the ERROR level. - - An that supplies culture-specific formatting information - A String containing zero or more format items - An Object array containing zero or more objects to format - - - The message is formatted using the method. See - String.Format for details of the syntax of the format string and the behavior - of the formatting. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - Logs a message object with the FATAL level. - - The message object to log. - - - This method first checks if this logger is FATAL - enabled by comparing the level of this logger with the - FATAL level. If this logger is - FATAL enabled, then it converts the message object - (passed as parameter) to a string by invoking the appropriate - . It then - proceeds to call all the registered appenders in this logger and - also higher in the hierarchy depending on the value of the - additivity flag. - - - WARNING Note that passing an to this - method will print the name of the but no - stack trace. To print a stack trace use the - form instead. - - - - - - Logs a message object with the FATAL level - - The message object to log. - The exception to log, including its stack trace. - - - Logs a message object with the FATAL level including - the stack trace of the - passed as a parameter. - - - See the form for more detailed information. - - - - - - - Logs a formatted message string with the FATAL level. - - A String containing zero or more format items - An Object array containing zero or more objects to format - - - The message is formatted using the method. See - String.Format for details of the syntax of the format string and the behavior - of the formatting. - - - The string is formatted using the - format provider. To specify a localized provider use the - method. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - Logs a formatted message string with the FATAL level. - - A String containing zero or more format items - An Object to format - - - The message is formatted using the method. See - String.Format for details of the syntax of the format string and the behavior - of the formatting. - - - The string is formatted using the - format provider. To specify a localized provider use the - method. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - Logs a formatted message string with the FATAL level. - - A String containing zero or more format items - An Object to format - An Object to format - - - The message is formatted using the method. See - String.Format for details of the syntax of the format string and the behavior - of the formatting. - - - The string is formatted using the - format provider. To specify a localized provider use the - method. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - Logs a formatted message string with the FATAL level. - - A String containing zero or more format items - An Object to format - An Object to format - An Object to format - - - The message is formatted using the method. See - String.Format for details of the syntax of the format string and the behavior - of the formatting. - - - The string is formatted using the - format provider. To specify a localized provider use the - method. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - Logs a formatted message string with the FATAL level. - - An that supplies culture-specific formatting information - A String containing zero or more format items - An Object array containing zero or more objects to format - - - The message is formatted using the method. See - String.Format for details of the syntax of the format string and the behavior - of the formatting. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - Event handler for the event - - the repository - Empty - - - - The fully qualified name of this declaring type not the type of any subclass. - - - - - Checks if this logger is enabled for the DEBUG - level. - - - true if this logger is enabled for DEBUG events, - false otherwise. - - - - This function is intended to lessen the computational cost of - disabled log debug statements. - - - For some log Logger object, when you write: - - - log.Debug("This is entry number: " + i ); - - - You incur the cost constructing the message, concatenation in - this case, regardless of whether the message is logged or not. - - - If you are worried about speed, then you should write: - - - if (log.IsDebugEnabled()) - { - log.Debug("This is entry number: " + i ); - } - - - This way you will not incur the cost of parameter - construction if debugging is disabled for log. On - the other hand, if the log is debug enabled, you - will incur the cost of evaluating whether the logger is debug - enabled twice. Once in IsDebugEnabled and once in - the Debug. This is an insignificant overhead - since evaluating a logger takes about 1% of the time it - takes to actually log. - - - - - - Checks if this logger is enabled for the INFO level. - - - true if this logger is enabled for INFO events, - false otherwise. - - - - See for more information and examples - of using this method. - - - - - - - Checks if this logger is enabled for the WARN level. - - - true if this logger is enabled for WARN events, - false otherwise. - - - - See for more information and examples - of using this method. - - - - - - - Checks if this logger is enabled for the ERROR level. - - - true if this logger is enabled for ERROR events, - false otherwise. - - - - See for more information and examples of using this method. - - - - - - - Checks if this logger is enabled for the FATAL level. - - - true if this logger is enabled for FATAL events, - false otherwise. - - - - See for more information and examples of using this method. - - - - - - - A SecurityContext used by log4net when interacting with protected resources - - - - A SecurityContext used by log4net when interacting with protected resources - for example with operating system services. This can be used to impersonate - a principal that has been granted privileges on the system resources. - - - Nicko Cadell - - - - Impersonate this SecurityContext - - State supplied by the caller - An instance that will - revoke the impersonation of this SecurityContext, or null - - - Impersonate this security context. Further calls on the current - thread should now be made in the security context provided - by this object. When the result - method is called the security - context of the thread should be reverted to the state it was in - before was called. - - - - - - The providers default instances. - - - - A configured component that interacts with potentially protected system - resources uses a to provide the elevated - privileges required. If the object has - been not been explicitly provided to the component then the component - will request one from this . - - - By default the is - an instance of which returns only - objects. This is a reasonable default - where the privileges required are not know by the system. - - - This default behavior can be overridden by subclassing the - and overriding the method to return - the desired objects. The default provider - can be replaced by programmatically setting the value of the - property. - - - An alternative is to use the log4net.Config.SecurityContextProviderAttribute - This attribute can be applied to an assembly in the same way as the - log4net.Config.XmlConfiguratorAttribute". The attribute takes - the type to use as the as an argument. - - - Nicko Cadell - - - - The default provider - - - - - Protected default constructor to allow subclassing - - - - Protected default constructor to allow subclassing - - - - - - Create a SecurityContext for a consumer - - The consumer requesting the SecurityContext - An impersonation context - - - The default implementation is to return a . - - - Subclasses should override this method to provide their own - behavior. - - - - - - Gets or sets the default SecurityContextProvider - - - The default SecurityContextProvider - - - - The default provider is used by configured components that - require a and have not had one - given to them. - - - By default this is an instance of - that returns objects. - - - The default provider can be set programmatically by setting - the value of this property to a sub class of - that has the desired behavior. - - - - - - Delegate used to handle creation of new wrappers. - - The logger to wrap in a wrapper. - - - Delegate used to handle creation of new wrappers. This delegate - is called from the - method to construct the wrapper for the specified logger. - - - The delegate to use is supplied to the - constructor. - - - - - - Maps between logger objects and wrapper objects. - - - - This class maintains a mapping between objects and - objects. Use the method to - lookup the for the specified . - - - New wrapper instances are created by the - method. The default behavior is for this method to delegate construction - of the wrapper to the delegate supplied - to the constructor. This allows specialization of the behavior without - requiring subclassing of this type. - - - Nicko Cadell - Gert Driesen - - - - Initializes a new instance of the - - The handler to use to create the wrapper objects. - - - Initializes a new instance of the class with - the specified handler to create the wrapper objects. - - - - - - Gets the wrapper object for the specified logger. - - The wrapper object for the specified logger - - - If the logger is null then the corresponding wrapper is null. - - - Looks up the wrapper it it has previously been requested and - returns it. If the wrapper has never been requested before then - the virtual method is - called. - - - - - - Creates the wrapper object for the specified logger. - - The logger to wrap in a wrapper. - The wrapper object for the logger. - - - This implementation uses the - passed to the constructor to create the wrapper. This method - can be overridden in a subclass. - - - - - - Called when a monitored repository shutdown event is received. - - The that is shutting down - - - This method is called when a that this - is holding loggers for has signaled its shutdown - event . The default - behavior of this method is to release the references to the loggers - and their wrappers generated for this repository. - - - - - - Event handler for repository shutdown event. - - The sender of the event. - The event args. - - - - Map of logger repositories to hashtables of ILogger to ILoggerWrapper mappings - - - - - The handler to use to create the extension wrapper objects. - - - - - Internal reference to the delegate used to register for repository shutdown events. - - - - - Gets the map of logger repositories. - - - Map of logger repositories. - - - - Gets the hashtable that is keyed on . The - values are hashtables keyed on with the - value being the corresponding . - - - - - - Formats a as "HH:mm:ss,fff". - - - - Formats a in the format "HH:mm:ss,fff" for example, "15:49:37,459". - - - Nicko Cadell - Gert Driesen - - - - Render a as a string. - - - - Interface to abstract the rendering of a - instance into a string. - - - The method is used to render the - date to a text writer. - - - Nicko Cadell - Gert Driesen - - - - Formats the specified date as a string. - - The date to format. - The writer to write to. - - - Format the as a string and write it - to the provided. - - - - - - String constant used to specify AbsoluteTimeDateFormat in layouts. Current value is ABSOLUTE. - - - - - String constant used to specify DateTimeDateFormat in layouts. Current value is DATE. - - - - - String constant used to specify ISO8601DateFormat in layouts. Current value is ISO8601. - - - - - Renders the date into a string. Format is "HH:mm:ss". - - The date to render into a string. - The string builder to write to. - - - Subclasses should override this method to render the date - into a string using a precision up to the second. This method - will be called at most once per second and the result will be - reused if it is needed again during the same second. - - - - - - Renders the date into a string. Format is "HH:mm:ss,fff". - - The date to render into a string. - The writer to write to. - - - Uses the method to generate the - time string up to the seconds and then appends the current - milliseconds. The results from are - cached and is called at most once - per second. - - - Sub classes should override - rather than . - - - - - - Last stored time with precision up to the second. - - - - - Last stored time with precision up to the second, formatted - as a string. - - - - - Last stored time with precision up to the second, formatted - as a string. - - - - - Formats a as "dd MMM yyyy HH:mm:ss,fff" - - - - Formats a in the format - "dd MMM yyyy HH:mm:ss,fff" for example, - "06 Nov 1994 15:49:37,459". - - - Nicko Cadell - Gert Driesen - Angelika Schnagl - - - - Default constructor. - - - - Initializes a new instance of the class. - - - - - - Formats the date without the milliseconds part - - The date to format. - The string builder to write to. - - - Formats a DateTime in the format "dd MMM yyyy HH:mm:ss" - for example, "06 Nov 1994 15:49:37". - - - The base class will append the ",fff" milliseconds section. - This method will only be called at most once per second. - - - - - - The format info for the invariant culture. - - - - - Formats the as "yyyy-MM-dd HH:mm:ss,fff". - - - - Formats the specified as a string: "yyyy-MM-dd HH:mm:ss,fff". - - - Nicko Cadell - Gert Driesen - - - - Default constructor - - - - Initializes a new instance of the class. - - - - - - Formats the date without the milliseconds part - - The date to format. - The string builder to write to. - - - Formats the date specified as a string: "yyyy-MM-dd HH:mm:ss". - - - The base class will append the ",fff" milliseconds section. - This method will only be called at most once per second. - - - - - - Formats the using the method. - - - - Formats the using the method. - - - Nicko Cadell - Gert Driesen - - - - Constructor - - The format string. - - - Initializes a new instance of the class - with the specified format string. - - - The format string must be compatible with the options - that can be supplied to . - - - - - - Formats the date using . - - The date to convert to a string. - The writer to write to. - - - Uses the date format string supplied to the constructor to call - the method to format the date. - - - - - - The format string used to format the . - - - - The format string must be compatible with the options - that can be supplied to . - - - - - - This filter drops all . - - - - You can add this filter to the end of a filter chain to - switch from the default "accept all unless instructed otherwise" - filtering behavior to a "deny all unless instructed otherwise" - behavior. - - - Nicko Cadell - Gert Driesen - - - - Subclass this type to implement customized logging event filtering - - - - Users should extend this class to implement customized logging - event filtering. Note that and - , the parent class of all standard - appenders, have built-in filtering rules. It is suggested that you - first use and understand the built-in rules before rushing to write - your own custom filters. - - - This abstract class assumes and also imposes that filters be - organized in a linear chain. The - method of each filter is called sequentially, in the order of their - addition to the chain. - - - The method must return one - of the integer constants , - or . - - - If the value is returned, then the log event is dropped - immediately without consulting with the remaining filters. - - - If the value is returned, then the next filter - in the chain is consulted. If there are no more filters in the - chain, then the log event is logged. Thus, in the presence of no - filters, the default behavior is to log all logging events. - - - If the value is returned, then the log - event is logged without consulting the remaining filters. - - - The philosophy of log4net filters is largely inspired from the - Linux ipchains. - - - Nicko Cadell - Gert Driesen - - - - Implement this interface to provide customized logging event filtering - - - - Users should implement this interface to implement customized logging - event filtering. Note that and - , the parent class of all standard - appenders, have built-in filtering rules. It is suggested that you - first use and understand the built-in rules before rushing to write - your own custom filters. - - - This abstract class assumes and also imposes that filters be - organized in a linear chain. The - method of each filter is called sequentially, in the order of their - addition to the chain. - - - The method must return one - of the integer constants , - or . - - - If the value is returned, then the log event is dropped - immediately without consulting with the remaining filters. - - - If the value is returned, then the next filter - in the chain is consulted. If there are no more filters in the - chain, then the log event is logged. Thus, in the presence of no - filters, the default behavior is to log all logging events. - - - If the value is returned, then the log - event is logged without consulting the remaining filters. - - - The philosophy of log4net filters is largely inspired from the - Linux ipchains. - - - Nicko Cadell - Gert Driesen - - - - Decide if the logging event should be logged through an appender. - - The LoggingEvent to decide upon - The decision of the filter - - - If the decision is , then the event will be - dropped. If the decision is , then the next - filter, if any, will be invoked. If the decision is then - the event will be logged without consulting with other filters in - the chain. - - - - - - Property to get and set the next filter - - - The next filter in the chain - - - - Filters are typically composed into chains. This property allows the next filter in - the chain to be accessed. - - - - - - Points to the next filter in the filter chain. - - - - See for more information. - - - - - - Initialize the filter with the options set - - - - This is part of the delayed object - activation scheme. The method must - be called on this object after the configuration properties have - been set. Until is called this - object is in an undefined state and must not be used. - - - If any of the configuration properties are modified then - must be called again. - - - Typically filter's options become active immediately on set, - however this method must still be called. - - - - - - Decide if the should be logged through an appender. - - The to decide upon - The decision of the filter - - - If the decision is , then the event will be - dropped. If the decision is , then the next - filter, if any, will be invoked. If the decision is then - the event will be logged without consulting with other filters in - the chain. - - - This method is marked abstract and must be implemented - in a subclass. - - - - - - Property to get and set the next filter - - - The next filter in the chain - - - - Filters are typically composed into chains. This property allows the next filter in - the chain to be accessed. - - - - - - Default constructor - - - - - Always returns the integer constant - - the LoggingEvent to filter - Always returns - - - Ignores the event being logged and just returns - . This can be used to change the default filter - chain behavior from to . This filter - should only be used as the last filter in the chain - as any further filters will be ignored! - - - - - - The return result from - - - - The return result from - - - - - - The log event must be dropped immediately without - consulting with the remaining filters, if any, in the chain. - - - - - This filter is neutral with respect to the log event. - The remaining filters, if any, should be consulted for a final decision. - - - - - The log event must be logged immediately without - consulting with the remaining filters, if any, in the chain. - - - - - This is a very simple filter based on matching. - - - - The filter admits two options and - . If there is an exact match between the value - of the option and the of the - , then the method returns in - case the option value is set - to true, if it is false then - is returned. If the does not match then - the result will be . - - - Nicko Cadell - Gert Driesen - - - - flag to indicate if the filter should on a match - - - - - the to match against - - - - - Default constructor - - - - - Tests if the of the logging event matches that of the filter - - the event to filter - see remarks - - - If the of the event matches the level of the - filter then the result of the function depends on the - value of . If it is true then - the function will return , it it is false then it - will return . If the does not match then - the result will be . - - - - - - when matching - - - - The property is a flag that determines - the behavior when a matching is found. If the - flag is set to true then the filter will the - logging event, otherwise it will the event. - - - The default is true i.e. to the event. - - - - - - The that the filter will match - - - - The level that this filter will attempt to match against the - level. If a match is found then - the result depends on the value of . - - - - - - This is a simple filter based on matching. - - - - The filter admits three options and - that determine the range of priorities that are matched, and - . If there is a match between the range - of priorities and the of the , then the - method returns in case the - option value is set to true, if it is false - then is returned. If there is no match, is returned. - - - Nicko Cadell - Gert Driesen - - - - Flag to indicate the behavior when matching a - - - - - the minimum value to match - - - - - the maximum value to match - - - - - Default constructor - - - - - Check if the event should be logged. - - the logging event to check - see remarks - - - If the of the logging event is outside the range - matched by this filter then - is returned. If the is matched then the value of - is checked. If it is true then - is returned, otherwise - is returned. - - - - - - when matching and - - - - The property is a flag that determines - the behavior when a matching is found. If the - flag is set to true then the filter will the - logging event, otherwise it will the event. - - - The default is true i.e. to the event. - - - - - - Set the minimum matched - - - - The minimum level that this filter will attempt to match against the - level. If a match is found then - the result depends on the value of . - - - - - - Sets the maximum matched - - - - The maximum level that this filter will attempt to match against the - level. If a match is found then - the result depends on the value of . - - - - - - Simple filter to match a string in the event's logger name. - - - - The works very similar to the . It admits two - options and . If the - of the starts - with the value of the option, then the - method returns in - case the option value is set to true, - if it is false then is returned. - - - Daniel Cazzulino - - - - Flag to indicate the behavior when we have a match - - - - - The logger name string to substring match against the event - - - - - Default constructor - - - - - Check if this filter should allow the event to be logged - - the event being logged - see remarks - - - The rendered message is matched against the . - If the equals the beginning of - the incoming () - then a match will have occurred. If no match occurs - this function will return - allowing other filters to check the event. If a match occurs then - the value of is checked. If it is - true then is returned otherwise - is returned. - - - - - - when matching - - - - The property is a flag that determines - the behavior when a matching is found. If the - flag is set to true then the filter will the - logging event, otherwise it will the event. - - - The default is true i.e. to the event. - - - - - - The that the filter will match - - - - This filter will attempt to match this value against logger name in - the following way. The match will be done against the beginning of the - logger name (using ). The match is - case sensitive. If a match is found then - the result depends on the value of . - - - - - - Simple filter to match a keyed string in the - - - - Simple filter to match a keyed string in the - - - As the MDC has been replaced with layered properties the - should be used instead. - - - Nicko Cadell - Gert Driesen - - - - Simple filter to match a string an event property - - - - Simple filter to match a string in the value for a - specific event property - - - Nicko Cadell - - - - Simple filter to match a string in the rendered message - - - - Simple filter to match a string in the rendered message - - - Nicko Cadell - Gert Driesen - - - - Flag to indicate the behavior when we have a match - - - - - The string to substring match against the message - - - - - A string regex to match - - - - - A regex object to match (generated from m_stringRegexToMatch) - - - - - Default constructor - - - - - Initialize and precompile the Regex if required - - - - This is part of the delayed object - activation scheme. The method must - be called on this object after the configuration properties have - been set. Until is called this - object is in an undefined state and must not be used. - - - If any of the configuration properties are modified then - must be called again. - - - - - - Check if this filter should allow the event to be logged - - the event being logged - see remarks - - - The rendered message is matched against the . - If the occurs as a substring within - the message then a match will have occurred. If no match occurs - this function will return - allowing other filters to check the event. If a match occurs then - the value of is checked. If it is - true then is returned otherwise - is returned. - - - - - - when matching or - - - - The property is a flag that determines - the behavior when a matching is found. If the - flag is set to true then the filter will the - logging event, otherwise it will the event. - - - The default is true i.e. to the event. - - - - - - Sets the static string to match - - - - The string that will be substring matched against - the rendered message. If the message contains this - string then the filter will match. If a match is found then - the result depends on the value of . - - - One of or - must be specified. - - - - - - Sets the regular expression to match - - - - The regular expression pattern that will be matched against - the rendered message. If the message matches this - pattern then the filter will match. If a match is found then - the result depends on the value of . - - - One of or - must be specified. - - - - - - The key to use to lookup the string from the event properties - - - - - Default constructor - - - - - Check if this filter should allow the event to be logged - - the event being logged - see remarks - - - The event property for the is matched against - the . - If the occurs as a substring within - the property value then a match will have occurred. If no match occurs - this function will return - allowing other filters to check the event. If a match occurs then - the value of is checked. If it is - true then is returned otherwise - is returned. - - - - - - The key to lookup in the event properties and then match against. - - - - The key name to use to lookup in the properties map of the - . The match will be performed against - the value of this property if it exists. - - - - - - Simple filter to match a string in the - - - - Simple filter to match a string in the - - - As the MDC has been replaced with named stacks stored in the - properties collections the should - be used instead. - - - Nicko Cadell - Gert Driesen - - - - Default constructor - - - - Sets the to "NDC". - - - - - - Write the event appdomain name to the output - - - - Writes the to the output writer. - - - Daniel Cazzulino - Nicko Cadell - - - - Abstract class that provides the formatting functionality that - derived classes need. - - - Conversion specifiers in a conversion patterns are parsed to - individual PatternConverters. Each of which is responsible for - converting a logging event in a converter specific manner. - - Nicko Cadell - - - - Abstract class that provides the formatting functionality that - derived classes need. - - - - Conversion specifiers in a conversion patterns are parsed to - individual PatternConverters. Each of which is responsible for - converting a logging event in a converter specific manner. - - - Nicko Cadell - Gert Driesen - - - - Initial buffer size - - - - - Maximum buffer size before it is recycled - - - - - Protected constructor - - - - Initializes a new instance of the class. - - - - - - Evaluate this pattern converter and write the output to a writer. - - that will receive the formatted result. - The state object on which the pattern converter should be executed. - - - Derived pattern converters must override this method in order to - convert conversion specifiers in the appropriate way. - - - - - - Set the next pattern converter in the chains - - the pattern converter that should follow this converter in the chain - the next converter - - - The PatternConverter can merge with its neighbor during this method (or a sub class). - Therefore the return value may or may not be the value of the argument passed in. - - - - - - Write the pattern converter to the writer with appropriate formatting - - that will receive the formatted result. - The state object on which the pattern converter should be executed. - - - This method calls to allow the subclass to perform - appropriate conversion of the pattern converter. If formatting options have - been specified via the then this method will - apply those formattings before writing the output. - - - - - - Fast space padding method. - - to which the spaces will be appended. - The number of spaces to be padded. - - - Fast space padding method. - - - - - - The option string to the converter - - - - - Write an dictionary to a - - the writer to write to - a to use for object conversion - the value to write to the writer - - - Writes the to a writer in the form: - - - {key1=value1, key2=value2, key3=value3} - - - If the specified - is not null then it is used to render the key and value to text, otherwise - the object's ToString method is called. - - - - - - Write an object to a - - the writer to write to - a to use for object conversion - the value to write to the writer - - - Writes the Object to a writer. If the specified - is not null then it is used to render the object to text, otherwise - the object's ToString method is called. - - - - - - Get the next pattern converter in the chain - - - the next pattern converter in the chain - - - - Get the next pattern converter in the chain - - - - - - Gets or sets the formatting info for this converter - - - The formatting info for this converter - - - - Gets or sets the formatting info for this converter - - - - - - Gets or sets the option value for this converter - - - The option for this converter - - - - Gets or sets the option value for this converter - - - - - - Initializes a new instance of the class. - - - - - Derived pattern converters must override this method in order to - convert conversion specifiers in the correct way. - - that will receive the formatted result. - The on which the pattern converter should be executed. - - - - Derived pattern converters must override this method in order to - convert conversion specifiers in the correct way. - - that will receive the formatted result. - The state object on which the pattern converter should be executed. - - - - Flag indicating if this converter handles exceptions - - - false if this converter handles exceptions - - - - - Flag indicating if this converter handles the logging event exception - - false if this converter handles the logging event exception - - - If this converter handles the exception object contained within - , then this property should be set to - false. Otherwise, if the layout ignores the exception - object, then the property should be set to true. - - - Set this value to override a this default setting. The default - value is true, this converter does not handle the exception. - - - - - - Write the event appdomain name to the output - - that will receive the formatted result. - the event being logged - - - Writes the to the output . - - - - - - Date pattern converter, uses a to format - the date of a . - - - - Render the to the writer as a string. - - - The value of the determines - the formatting of the date. The following values are allowed: - - - Option value - Output - - - ISO8601 - - Uses the formatter. - Formats using the "yyyy-MM-dd HH:mm:ss,fff" pattern. - - - - DATE - - Uses the formatter. - Formats using the "dd MMM yyyy HH:mm:ss,fff" for example, "06 Nov 1994 15:49:37,459". - - - - ABSOLUTE - - Uses the formatter. - Formats using the "HH:mm:ss,yyyy" for example, "15:49:37,459". - - - - other - - Any other pattern string uses the formatter. - This formatter passes the pattern string to the - method. - For details on valid patterns see - DateTimeFormatInfo Class. - - - - - - The is in the local time zone and is rendered in that zone. - To output the time in Universal time see . - - - Nicko Cadell - - - - The used to render the date to a string - - - - The used to render the date to a string - - - - - - Initialize the converter pattern based on the property. - - - - This is part of the delayed object - activation scheme. The method must - be called on this object after the configuration properties have - been set. Until is called this - object is in an undefined state and must not be used. - - - If any of the configuration properties are modified then - must be called again. - - - - - - Convert the pattern into the rendered message - - that will receive the formatted result. - the event being logged - - - Pass the to the - for it to render it to the writer. - - - The passed is in the local time zone. - - - - - - Write the exception text to the output - - - - If an exception object is stored in the logging event - it will be rendered into the pattern output with a - trailing newline. - - - If there is no exception then nothing will be output - and no trailing newline will be appended. - It is typical to put a newline before the exception - and to have the exception as the last data in the pattern. - - - Nicko Cadell - - - - Default constructor - - - - - Write the exception text to the output - - that will receive the formatted result. - the event being logged - - - If an exception object is stored in the logging event - it will be rendered into the pattern output with a - trailing newline. - - - If there is no exception then nothing will be output - and no trailing newline will be appended. - It is typical to put a newline before the exception - and to have the exception as the last data in the pattern. - - - - - - Writes the caller location file name to the output - - - - Writes the value of the for - the event to the output writer. - - - Nicko Cadell - - - - Write the caller location file name to the output - - that will receive the formatted result. - the event being logged - - - Writes the value of the for - the to the output . - - - - - - Write the caller location info to the output - - - - Writes the to the output writer. - - - Nicko Cadell - - - - Write the caller location info to the output - - that will receive the formatted result. - the event being logged - - - Writes the to the output writer. - - - - - - Writes the event identity to the output - - - - Writes the value of the to - the output writer. - - - Daniel Cazzulino - Nicko Cadell - - - - Writes the event identity to the output - - that will receive the formatted result. - the event being logged - - - Writes the value of the - to - the output . - - - - - - Write the event level to the output - - - - Writes the display name of the event - to the writer. - - - Nicko Cadell - - - - Write the event level to the output - - that will receive the formatted result. - the event being logged - - - Writes the of the - to the . - - - - - - Write the caller location line number to the output - - - - Writes the value of the for - the event to the output writer. - - - Nicko Cadell - - - - Write the caller location line number to the output - - that will receive the formatted result. - the event being logged - - - Writes the value of the for - the to the output . - - - - - - Converter for logger name - - - - Outputs the of the event. - - - Nicko Cadell - - - - Converter to output and truncate '.' separated strings - - - - This abstract class supports truncating a '.' separated string - to show a specified number of elements from the right hand side. - This is used to truncate class names that are fully qualified. - - - Subclasses should override the method to - return the fully qualified string. - - - Nicko Cadell - - - - Initialize the converter - - - - This is part of the delayed object - activation scheme. The method must - be called on this object after the configuration properties have - been set. Until is called this - object is in an undefined state and must not be used. - - - If any of the configuration properties are modified then - must be called again. - - - - - - Get the fully qualified string data - - the event being logged - the fully qualified name - - - Overridden by subclasses to get the fully qualified name before the - precision is applied to it. - - - Return the fully qualified '.' (dot/period) separated string. - - - - - - Convert the pattern to the rendered message - - that will receive the formatted result. - the event being logged - - Render the to the precision - specified by the property. - - - - - Gets the fully qualified name of the logger - - the event being logged - The fully qualified logger name - - - Returns the of the . - - - - - - Writes the event message to the output - - - - Uses the method - to write out the event message. - - - Nicko Cadell - - - - Writes the event message to the output - - that will receive the formatted result. - the event being logged - - - Uses the method - to write out the event message. - - - - - - Write the method name to the output - - - - Writes the caller location to - the output. - - - Nicko Cadell - - - - Write the method name to the output - - that will receive the formatted result. - the event being logged - - - Writes the caller location to - the output. - - - - - - Converter to include event NDC - - - - Outputs the value of the event property named NDC. - - - The should be used instead. - - - Nicko Cadell - - - - Write the event NDC to the output - - that will receive the formatted result. - the event being logged - - - As the thread context stacks are now stored in named event properties - this converter simply looks up the value of the NDC property. - - - The should be used instead. - - - - - - Property pattern converter - - - - Writes out the value of a named property. The property name - should be set in the - property. - - - If the is set to null - then all the properties are written as key value pairs. - - - Nicko Cadell - - - - Write the property value to the output - - that will receive the formatted result. - the event being logged - - - Writes out the value of a named property. The property name - should be set in the - property. - - - If the is set to null - then all the properties are written as key value pairs. - - - - - - Converter to output the relative time of the event - - - - Converter to output the time of the event relative to the start of the program. - - - Nicko Cadell - - - - Write the relative time to the output - - that will receive the formatted result. - the event being logged - - - Writes out the relative time of the event in milliseconds. - That is the number of milliseconds between the event - and the . - - - - - - Helper method to get the time difference between two DateTime objects - - start time (in the current local time zone) - end time (in the current local time zone) - the time difference in milliseconds - - - - Converter to include event thread name - - - - Writes the to the output. - - - Nicko Cadell - - - - Write the ThreadName to the output - - that will receive the formatted result. - the event being logged - - - Writes the to the . - - - - - - Pattern converter for the class name - - - - Outputs the of the event. - - - Nicko Cadell - - - - Gets the fully qualified name of the class - - the event being logged - The fully qualified type name for the caller location - - - Returns the of the . - - - - - - Converter to include event user name - - Douglas de la Torre - Nicko Cadell - - - - Convert the pattern to the rendered message - - that will receive the formatted result. - the event being logged - - - - Write the TimeStamp to the output - - - - Date pattern converter, uses a to format - the date of a . - - - Uses a to format the - in Universal time. - - - See the for details on the date pattern syntax. - - - - Nicko Cadell - - - - Write the TimeStamp to the output - - that will receive the formatted result. - the event being logged - - - Pass the to the - for it to render it to the writer. - - - The passed is in the local time zone, this is converted - to Universal time before it is rendered. - - - - - - - A Layout that renders only the Exception text from the logging event - - - - A Layout that renders only the Exception text from the logging event. - - - This Layout should only be used with appenders that utilize multiple - layouts (e.g. ). - - - Nicko Cadell - Gert Driesen - - - - Extend this abstract class to create your own log layout format. - - - - This is the base implementation of the - interface. Most layout objects should extend this class. - - - - - - Subclasses must implement the - method. - - - Subclasses should set the in their default - constructor. - - - - Nicko Cadell - Gert Driesen - - - - Interface implemented by layout objects - - - - An object is used to format a - as text. The method is called by an - appender to transform the into a string. - - - The layout can also supply and - text that is appender before any events and after all the events respectively. - - - Nicko Cadell - Gert Driesen - - - - Implement this method to create your own layout format. - - The TextWriter to write the formatted event to - The event to format - - - This method is called by an appender to format - the as text and output to a writer. - - - If the caller does not have a and prefers the - event to be formatted as a then the following - code can be used to format the event into a . - - - StringWriter writer = new StringWriter(); - Layout.Format(writer, loggingEvent); - string formattedEvent = writer.ToString(); - - - - - - The content type output by this layout. - - The content type - - - The content type output by this layout. - - - This is a MIME type e.g. "text/plain". - - - - - - The header for the layout format. - - the layout header - - - The Header text will be appended before any logging events - are formatted and appended. - - - - - - The footer for the layout format. - - the layout footer - - - The Footer text will be appended after all the logging events - have been formatted and appended. - - - - - - Flag indicating if this layout handle exceptions - - false if this layout handles exceptions - - - If this layout handles the exception object contained within - , then the layout should return - false. Otherwise, if the layout ignores the exception - object, then the layout should return true. - - - - - - The header text - - - - See for more information. - - - - - - The footer text - - - - See for more information. - - - - - - Flag indicating if this layout handles exceptions - - - - false if this layout handles exceptions - - - - - - Empty default constructor - - - - Empty default constructor - - - - - - Activate component options - - - - This is part of the delayed object - activation scheme. The method must - be called on this object after the configuration properties have - been set. Until is called this - object is in an undefined state and must not be used. - - - If any of the configuration properties are modified then - must be called again. - - - This method must be implemented by the subclass. - - - - - - Implement this method to create your own layout format. - - The TextWriter to write the formatted event to - The event to format - - - This method is called by an appender to format - the as text. - - - - - - The content type output by this layout. - - The content type is "text/plain" - - - The content type output by this layout. - - - This base class uses the value "text/plain". - To change this value a subclass must override this - property. - - - - - - The header for the layout format. - - the layout header - - - The Header text will be appended before any logging events - are formatted and appended. - - - - - - The footer for the layout format. - - the layout footer - - - The Footer text will be appended after all the logging events - have been formatted and appended. - - - - - - Flag indicating if this layout handles exceptions - - false if this layout handles exceptions - - - If this layout handles the exception object contained within - , then the layout should return - false. Otherwise, if the layout ignores the exception - object, then the layout should return true. - - - Set this value to override a this default setting. The default - value is true, this layout does not handle the exception. - - - - - - Default constructor - - - - Constructs a ExceptionLayout - - - - - - Activate component options - - - - Part of the component activation - framework. - - - This method does nothing as options become effective immediately. - - - - - - Gets the exception text from the logging event - - The TextWriter to write the formatted event to - the event being logged - - - Write the exception string to the . - The exception string is retrieved from . - - - - - - Interface for raw layout objects - - - - Interface used to format a - to an object. - - - This interface should not be confused with the - interface. This interface is used in - only certain specialized situations where a raw object is - required rather than a formatted string. The - is not generally useful than this interface. - - - Nicko Cadell - Gert Driesen - - - - Implement this method to create your own layout format. - - The event to format - returns the formatted event - - - Implement this method to create your own layout format. - - - - - - Adapts any to a - - - - Where an is required this adapter - allows a to be specified. - - - Nicko Cadell - Gert Driesen - - - - The layout to adapt - - - - - Construct a new adapter - - the layout to adapt - - - Create the adapter for the specified . - - - - - - Format the logging event as an object. - - The event to format - returns the formatted event - - - Format the logging event as an object. - - - Uses the object supplied to - the constructor to perform the formatting. - - - - - - A flexible layout configurable with pattern string. - - - - The goal of this class is to a - as a string. The results - depend on the conversion pattern. - - - The conversion pattern is closely related to the conversion - pattern of the printf function in C. A conversion pattern is - composed of literal text and format control expressions called - conversion specifiers. - - - You are free to insert any literal text within the conversion - pattern. - - - Each conversion specifier starts with a percent sign (%) and is - followed by optional format modifiers and a conversion - pattern name. The conversion pattern name specifies the type of - data, e.g. logger, level, date, thread name. The format - modifiers control such things as field width, padding, left and - right justification. The following is a simple example. - - - Let the conversion pattern be "%-5level [%thread]: %message%newline" and assume - that the log4net environment was set to use a PatternLayout. Then the - statements - - - ILog log = LogManager.GetLogger(typeof(TestApp)); - log.Debug("Message 1"); - log.Warn("Message 2"); - - would yield the output - - DEBUG [main]: Message 1 - WARN [main]: Message 2 - - - Note that there is no explicit separator between text and - conversion specifiers. The pattern parser knows when it has reached - the end of a conversion specifier when it reads a conversion - character. In the example above the conversion specifier - %-5level means the level of the logging event should be left - justified to a width of five characters. - - - The recognized conversion pattern names are: - - - - Conversion Pattern Name - Effect - - - a - Equivalent to appdomain - - - appdomain - - Used to output the friendly name of the AppDomain where the - logging event was generated. - - - - c - Equivalent to logger - - - C - Equivalent to type - - - class - Equivalent to type - - - d - Equivalent to date - - - date - - - Used to output the date of the logging event in the local time zone. - To output the date in universal time use the %utcdate pattern. - The date conversion - specifier may be followed by a date format specifier enclosed - between braces. For example, %date{HH:mm:ss,fff} or - %date{dd MMM yyyy HH:mm:ss,fff}. If no date format specifier is - given then ISO8601 format is - assumed (). - - - The date format specifier admits the same syntax as the - time pattern string of the . - - - For better results it is recommended to use the log4net date - formatters. These can be specified using one of the strings - "ABSOLUTE", "DATE" and "ISO8601" for specifying - , - and respectively - . For example, - %date{ISO8601} or %date{ABSOLUTE}. - - - These dedicated date formatters perform significantly - better than . - - - - - exception - - - Used to output the exception passed in with the log message. - - - If an exception object is stored in the logging event - it will be rendered into the pattern output with a - trailing newline. - If there is no exception then nothing will be output - and no trailing newline will be appended. - It is typical to put a newline before the exception - and to have the exception as the last data in the pattern. - - - - - F - Equivalent to file - - - file - - - Used to output the file name where the logging request was - issued. - - - WARNING Generating caller location information is - extremely slow. Its use should be avoided unless execution speed - is not an issue. - - - See the note below on the availability of caller location information. - - - - - identity - - - Used to output the user name for the currently active user - (Principal.Identity.Name). - - - WARNING Generating caller information is - extremely slow. Its use should be avoided unless execution speed - is not an issue. - - - - - l - Equivalent to location - - - L - Equivalent to line - - - location - - - Used to output location information of the caller which generated - the logging event. - - - The location information depends on the CLI implementation but - usually consists of the fully qualified name of the calling - method followed by the callers source the file name and line - number between parentheses. - - - The location information can be very useful. However, its - generation is extremely slow. Its use should be avoided - unless execution speed is not an issue. - - - See the note below on the availability of caller location information. - - - - - level - - - Used to output the level of the logging event. - - - - - line - - - Used to output the line number from where the logging request - was issued. - - - WARNING Generating caller location information is - extremely slow. Its use should be avoided unless execution speed - is not an issue. - - - See the note below on the availability of caller location information. - - - - - logger - - - Used to output the logger of the logging event. The - logger conversion specifier can be optionally followed by - precision specifier, that is a decimal constant in - brackets. - - - If a precision specifier is given, then only the corresponding - number of right most components of the logger name will be - printed. By default the logger name is printed in full. - - - For example, for the logger name "a.b.c" the pattern - %logger{2} will output "b.c". - - - - - m - Equivalent to message - - - M - Equivalent to method - - - message - - - Used to output the application supplied message associated with - the logging event. - - - - - mdc - - - The MDC (old name for the ThreadContext.Properties) is now part of the - combined event properties. This pattern is supported for compatibility - but is equivalent to property. - - - - - method - - - Used to output the method name where the logging request was - issued. - - - WARNING Generating caller location information is - extremely slow. Its use should be avoided unless execution speed - is not an issue. - - - See the note below on the availability of caller location information. - - - - - n - Equivalent to newline - - - newline - - - Outputs the platform dependent line separator character or - characters. - - - This conversion pattern offers the same performance as using - non-portable line separator strings such as "\n", or "\r\n". - Thus, it is the preferred way of specifying a line separator. - - - - - ndc - - - Used to output the NDC (nested diagnostic context) associated - with the thread that generated the logging event. - - - - - p - Equivalent to level - - - P - Equivalent to property - - - properties - Equivalent to property - - - property - - - Used to output the an event specific property. The key to - lookup must be specified within braces and directly following the - pattern specifier, e.g. %property{user} would include the value - from the property that is keyed by the string 'user'. Each property value - that is to be included in the log must be specified separately. - Properties are added to events by loggers or appenders. By default - the log4net:HostName property is set to the name of machine on - which the event was originally logged. - - - If no key is specified, e.g. %property then all the keys and their - values are printed in a comma separated list. - - - The properties of an event are combined from a number of different - contexts. These are listed below in the order in which they are searched. - - - - the event properties - - The event has that can be set. These - properties are specific to this event only. - - - - the thread properties - - The that are set on the current - thread. These properties are shared by all events logged on this thread. - - - - the global properties - - The that are set globally. These - properties are shared by all the threads in the AppDomain. - - - - - - - - r - Equivalent to timestamp - - - t - Equivalent to thread - - - timestamp - - - Used to output the number of milliseconds elapsed since the start - of the application until the creation of the logging event. - - - - - thread - - - Used to output the name of the thread that generated the - logging event. Uses the thread number if no name is available. - - - - - type - - - Used to output the fully qualified type name of the caller - issuing the logging request. This conversion specifier - can be optionally followed by precision specifier, that - is a decimal constant in brackets. - - - If a precision specifier is given, then only the corresponding - number of right most components of the class name will be - printed. By default the class name is output in fully qualified form. - - - For example, for the class name "log4net.Layout.PatternLayout", the - pattern %type{1} will output "PatternLayout". - - - WARNING Generating the caller class information is - slow. Thus, its use should be avoided unless execution speed is - not an issue. - - - See the note below on the availability of caller location information. - - - - - u - Equivalent to identity - - - username - - - Used to output the WindowsIdentity for the currently - active user. - - - WARNING Generating caller WindowsIdentity information is - extremely slow. Its use should be avoided unless execution speed - is not an issue. - - - - - utcdate - - - Used to output the date of the logging event in universal time. - The date conversion - specifier may be followed by a date format specifier enclosed - between braces. For example, %utcdate{HH:mm:ss,fff} or - %utcdate{dd MMM yyyy HH:mm:ss,fff}. If no date format specifier is - given then ISO8601 format is - assumed (). - - - The date format specifier admits the same syntax as the - time pattern string of the . - - - For better results it is recommended to use the log4net date - formatters. These can be specified using one of the strings - "ABSOLUTE", "DATE" and "ISO8601" for specifying - , - and respectively - . For example, - %utcdate{ISO8601} or %utcdate{ABSOLUTE}. - - - These dedicated date formatters perform significantly - better than . - - - - - w - Equivalent to username - - - x - Equivalent to ndc - - - X - Equivalent to mdc - - - % - - - The sequence %% outputs a single percent sign. - - - - - - The single letter patterns are deprecated in favor of the - longer more descriptive pattern names. - - - By default the relevant information is output as is. However, - with the aid of format modifiers it is possible to change the - minimum field width, the maximum field width and justification. - - - The optional format modifier is placed between the percent sign - and the conversion pattern name. - - - The first optional format modifier is the left justification - flag which is just the minus (-) character. Then comes the - optional minimum field width modifier. This is a decimal - constant that represents the minimum number of characters to - output. If the data item requires fewer characters, it is padded on - either the left or the right until the minimum width is - reached. The default is to pad on the left (right justify) but you - can specify right padding with the left justification flag. The - padding character is space. If the data item is larger than the - minimum field width, the field is expanded to accommodate the - data. The value is never truncated. - - - This behavior can be changed using the maximum field - width modifier which is designated by a period followed by a - decimal constant. If the data item is longer than the maximum - field, then the extra characters are removed from the - beginning of the data item and not from the end. For - example, it the maximum field width is eight and the data item is - ten characters long, then the first two characters of the data item - are dropped. This behavior deviates from the printf function in C - where truncation is done from the end. - - - Below are various format modifier examples for the logger - conversion specifier. - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Format modifierleft justifyminimum widthmaximum widthcomment
%20loggerfalse20none - - Left pad with spaces if the logger name is less than 20 - characters long. - -
%-20loggertrue20none - - Right pad with spaces if the logger - name is less than 20 characters long. - -
%.30loggerNAnone30 - - Truncate from the beginning if the logger - name is longer than 30 characters. - -
%20.30loggerfalse2030 - - Left pad with spaces if the logger name is shorter than 20 - characters. However, if logger name is longer than 30 characters, - then truncate from the beginning. - -
%-20.30loggertrue2030 - - Right pad with spaces if the logger name is shorter than 20 - characters. However, if logger name is longer than 30 characters, - then truncate from the beginning. - -
-
- - Note about caller location information.
- The following patterns %type %file %line %method %location %class %C %F %L %l %M - all generate caller location information. - Location information uses the System.Diagnostics.StackTrace class to generate - a call stack. The caller's information is then extracted from this stack. -
- - - The System.Diagnostics.StackTrace class is not supported on the - .NET Compact Framework 1.0 therefore caller location information is not - available on that framework. - - - - - The System.Diagnostics.StackTrace class has this to say about Release builds: - - - "StackTrace information will be most informative with Debug build configurations. - By default, Debug builds include debug symbols, while Release builds do not. The - debug symbols contain most of the file, method name, line number, and column - information used in constructing StackFrame and StackTrace objects. StackTrace - might not report as many method calls as expected, due to code transformations - that occur during optimization." - - - This means that in a Release build the caller information may be incomplete or may - not exist at all! Therefore caller location information cannot be relied upon in a Release build. - - - - Additional pattern converters may be registered with a specific - instance using the method. - -
- - This is a more detailed pattern. - %timestamp [%thread] %level %logger %ndc - %message%newline - - - A similar pattern except that the relative time is - right padded if less than 6 digits, thread name is right padded if - less than 15 characters and truncated if longer and the logger - name is left padded if shorter than 30 characters and truncated if - longer. - %-6timestamp [%15.15thread] %-5level %30.30logger %ndc - %message%newline - - Nicko Cadell - Gert Driesen - Douglas de la Torre - Daniel Cazzulino -
- - - Default pattern string for log output. - - - - Default pattern string for log output. - Currently set to the string "%message%newline" - which just prints the application supplied message. - - - - - - A detailed conversion pattern - - - - A conversion pattern which includes Time, Thread, Logger, and Nested Context. - Current value is %timestamp [%thread] %level %logger %ndc - %message%newline. - - - - - - Internal map of converter identifiers to converter types. - - - - This static map is overridden by the m_converterRegistry instance map - - - - - - the pattern - - - - - the head of the pattern converter chain - - - - - patterns defined on this PatternLayout only - - - - - Initialize the global registry - - - - Defines the builtin global rules. - - - - - - Constructs a PatternLayout using the DefaultConversionPattern - - - - The default pattern just produces the application supplied message. - - - Note to Inheritors: This constructor calls the virtual method - . If you override this method be - aware that it will be called before your is called constructor. - - - As per the contract the - method must be called after the properties on this object have been - configured. - - - - - - Constructs a PatternLayout using the supplied conversion pattern - - the pattern to use - - - Note to Inheritors: This constructor calls the virtual method - . If you override this method be - aware that it will be called before your is called constructor. - - - When using this constructor the method - need not be called. This may not be the case when using a subclass. - - - - - - Create the pattern parser instance - - the pattern to parse - The that will format the event - - - Creates the used to parse the conversion string. Sets the - global and instance rules on the . - - - - - - Initialize layout options - - - - This is part of the delayed object - activation scheme. The method must - be called on this object after the configuration properties have - been set. Until is called this - object is in an undefined state and must not be used. - - - If any of the configuration properties are modified then - must be called again. - - - - - - Produces a formatted string as specified by the conversion pattern. - - the event being logged - The TextWriter to write the formatted event to - - - Parse the using the patter format - specified in the property. - - - - - - Add a converter to this PatternLayout - - the converter info - - - This version of the method is used by the configurator. - Programmatic users should use the alternative method. - - - - - - Add a converter to this PatternLayout - - the name of the conversion pattern for this converter - the type of the converter - - - Add a named pattern converter to this instance. This - converter will be used in the formatting of the event. - This method must be called before . - - - The specified must extend the - type. - - - - - - The pattern formatting string - - - - The ConversionPattern option. This is the string which - controls formatting and consists of a mix of literal content and - conversion specifiers. - - - - - - Wrapper class used to map converter names to converter types - - - - Pattern converter info class used during configuration to - pass to the - method. - - - - - - default constructor - - - - - Gets or sets the name of the conversion pattern - - - - The name of the pattern in the format string - - - - - - Gets or sets the type of the converter - - - - The value specified must extend the - type. - - - - - - Type converter for the interface - - - - Used to convert objects to the interface. - Supports converting from the interface to - the interface using the . - - - Nicko Cadell - Gert Driesen - - - - Interface supported by type converters - - - - This interface supports conversion from arbitrary types - to a single target type. See . - - - Nicko Cadell - Gert Driesen - - - - Can the source type be converted to the type supported by this object - - the type to convert - true if the conversion is possible - - - Test if the can be converted to the - type supported by this converter. - - - - - - Convert the source object to the type supported by this object - - the object to convert - the converted object - - - Converts the to the type supported - by this converter. - - - - - - Can the sourceType be converted to an - - the source to be to be converted - true if the source type can be converted to - - - Test if the can be converted to a - . Only is supported - as the . - - - - - - Convert the value to a object - - the value to convert - the object - - - Convert the object to a - object. If the object - is a then the - is used to adapt between the two interfaces, otherwise an - exception is thrown. - - - - - - Extract the value of a property from the - - - - Extract the value of a property from the - - - Nicko Cadell - - - - Constructs a RawPropertyLayout - - - - - Lookup the property for - - The event to format - returns property value - - - Looks up and returns the object value of the property - named . If there is no property defined - with than name then null will be returned. - - - - - - The name of the value to lookup in the LoggingEvent Properties collection. - - - Value to lookup in the LoggingEvent Properties collection - - - - String name of the property to lookup in the . - - - - - - Extract the date from the - - - - Extract the date from the - - - Nicko Cadell - Gert Driesen - - - - Constructs a RawTimeStampLayout - - - - - Gets the as a . - - The event to format - returns the time stamp - - - Gets the as a . - - - The time stamp is in local time. To format the time stamp - in universal time use . - - - - - - Extract the date from the - - - - Extract the date from the - - - Nicko Cadell - Gert Driesen - - - - Constructs a RawUtcTimeStampLayout - - - - - Gets the as a . - - The event to format - returns the time stamp - - - Gets the as a . - - - The time stamp is in universal time. To format the time stamp - in local time use . - - - - - - A very simple layout - - - - SimpleLayout consists of the level of the log statement, - followed by " - " and then the log message itself. For example, - - DEBUG - Hello world - - - - Nicko Cadell - Gert Driesen - - - - Constructs a SimpleLayout - - - - - Initialize layout options - - - - This is part of the delayed object - activation scheme. The method must - be called on this object after the configuration properties have - been set. Until is called this - object is in an undefined state and must not be used. - - - If any of the configuration properties are modified then - must be called again. - - - - - - Produces a simple formatted output. - - the event being logged - The TextWriter to write the formatted event to - - - Formats the event as the level of the even, - followed by " - " and then the log message itself. The - output is terminated by a newline. - - - - - - Layout that formats the log events as XML elements. - - - - The output of the consists of a series of - log4net:event elements. It does not output a complete well-formed XML - file. The output is designed to be included as an external entity - in a separate file to form a correct XML file. - - - For example, if abc is the name of the file where - the output goes, then a well-formed XML file would - be: - - - <?xml version="1.0" ?> - - <!DOCTYPE log4net:events SYSTEM "log4net-events.dtd" [<!ENTITY data SYSTEM "abc">]> - - <log4net:events version="1.2" xmlns:log4net="http://logging.apache.org/log4net/schemas/log4net-events-1.2> - &data; - </log4net:events> - - - This approach enforces the independence of the - and the appender where it is embedded. - - - The version attribute helps components to correctly - interpret output generated by . The value of - this attribute should be "1.2" for release 1.2 and later. - - - Alternatively the Header and Footer properties can be - configured to output the correct XML header, open tag and close tag. - When setting the Header and Footer properties it is essential - that the underlying data store not be appendable otherwise the data - will become invalid XML. - - - Nicko Cadell - Gert Driesen - - - - Layout that formats the log events as XML elements. - - - - This is an abstract class that must be subclassed by an implementation - to conform to a specific schema. - - - Deriving classes must implement the method. - - - Nicko Cadell - Gert Driesen - - - - Protected constructor to support subclasses - - - - Initializes a new instance of the class - with no location info. - - - - - - Protected constructor to support subclasses - - - - The parameter determines whether - location information will be output by the layout. If - is set to true, then the - file name and line number of the statement at the origin of the log - statement will be output. - - - If you are embedding this layout within an SMTPAppender - then make sure to set the LocationInfo option of that - appender as well. - - - - - - Initialize layout options - - - - This is part of the delayed object - activation scheme. The method must - be called on this object after the configuration properties have - been set. Until is called this - object is in an undefined state and must not be used. - - - If any of the configuration properties are modified then - must be called again. - - - - - - Produces a formatted string. - - The event being logged. - The TextWriter to write the formatted event to - - - Format the and write it to the . - - - This method creates an that writes to the - . The is passed - to the method. Subclasses should override the - method rather than this method. - - - - - - Does the actual writing of the XML. - - The writer to use to output the event to. - The event to write. - - - Subclasses should override this method to format - the as XML. - - - - - - Flag to indicate if location information should be included in - the XML events. - - - - - Writer adapter that ignores Close - - - - - The string to replace invalid chars with - - - - - Gets a value indicating whether to include location information in - the XML events. - - - true if location information should be included in the XML - events; otherwise, false. - - - - If is set to true, then the file - name and line number of the statement at the origin of the log - statement will be output. - - - If you are embedding this layout within an SMTPAppender - then make sure to set the LocationInfo option of that - appender as well. - - - - - - The string to replace characters that can not be expressed in XML with. - - - Not all characters may be expressed in XML. This property contains the - string to replace those that can not with. This defaults to a ?. Set it - to the empty string to simply remove offending characters. For more - details on the allowed character ranges see http://www.w3.org/TR/REC-xml/#charsets - Character replacement will occur in the log message, the property names - and the property values. - - - - - - - Gets the content type output by this layout. - - - As this is the XML layout, the value is always "text/xml". - - - - As this is the XML layout, the value is always "text/xml". - - - - - - Constructs an XmlLayout - - - - - Constructs an XmlLayout. - - - - The LocationInfo option takes a boolean value. By - default, it is set to false which means there will be no location - information output by this layout. If the the option is set to - true, then the file name and line number of the statement - at the origin of the log statement will be output. - - - If you are embedding this layout within an SmtpAppender - then make sure to set the LocationInfo option of that - appender as well. - - - - - - Initialize layout options - - - - This is part of the delayed object - activation scheme. The method must - be called on this object after the configuration properties have - been set. Until is called this - object is in an undefined state and must not be used. - - - If any of the configuration properties are modified then - must be called again. - - - Builds a cache of the element names - - - - - - Does the actual writing of the XML. - - The writer to use to output the event to. - The event to write. - - - Override the base class method - to write the to the . - - - - - - The prefix to use for all generated element names - - - - - The prefix to use for all element names - - - - The default prefix is log4net. Set this property - to change the prefix. If the prefix is set to an empty string - then no prefix will be written. - - - - - - Set whether or not to base64 encode the message. - - - - By default the log message will be written as text to the xml - output. This can cause problems when the message contains binary - data. By setting this to true the contents of the message will be - base64 encoded. If this is set then invalid character replacement - (see ) will not be performed - on the log message. - - - - - - Set whether or not to base64 encode the property values. - - - - By default the properties will be written as text to the xml - output. This can cause problems when one or more properties contain - binary data. By setting this to true the values of the properties - will be base64 encoded. If this is set then invalid character replacement - (see ) will not be performed - on the property values. - - - - - - Layout that formats the log events as XML elements compatible with the log4j schema - - - - Formats the log events according to the http://logging.apache.org/log4j schema. - - - Nicko Cadell - - - - The 1st of January 1970 in UTC - - - - - Constructs an XMLLayoutSchemaLog4j - - - - - Constructs an XMLLayoutSchemaLog4j. - - - - The LocationInfo option takes a boolean value. By - default, it is set to false which means there will be no location - information output by this layout. If the the option is set to - true, then the file name and line number of the statement - at the origin of the log statement will be output. - - - If you are embedding this layout within an SMTPAppender - then make sure to set the LocationInfo option of that - appender as well. - - - - - - Actually do the writing of the xml - - the writer to use - the event to write - - - Generate XML that is compatible with the log4j schema. - - - - - - The version of the log4j schema to use. - - - - Only version 1.2 of the log4j schema is supported. - - - - - - The default object Renderer. - - - - The default renderer supports rendering objects and collections to strings. - - - See the method for details of the output. - - - Nicko Cadell - Gert Driesen - - - - Implement this interface in order to render objects as strings - - - - Certain types require special case conversion to - string form. This conversion is done by an object renderer. - Object renderers implement the - interface. - - - Nicko Cadell - Gert Driesen - - - - Render the object to a string - - The map used to lookup renderers - The object to render - The writer to render to - - - Render the object to a - string. - - - The parameter is - provided to lookup and render other objects. This is - very useful where contains - nested objects of unknown type. The - method can be used to render these objects. - - - - - - Default constructor - - - - Default constructor - - - - - - Render the object to a string - - The map used to lookup renderers - The object to render - The writer to render to - - - Render the object to a string. - - - The parameter is - provided to lookup and render other objects. This is - very useful where contains - nested objects of unknown type. The - method can be used to render these objects. - - - The default renderer supports rendering objects to strings as follows: - - - - Value - Rendered String - - - null - - "(null)" - - - - - - - For a one dimensional array this is the - array type name, an open brace, followed by a comma - separated list of the elements (using the appropriate - renderer), followed by a close brace. - - - For example: int[] {1, 2, 3}. - - - If the array is not one dimensional the - Array.ToString() is returned. - - - - - , & - - - Rendered as an open brace, followed by a comma - separated list of the elements (using the appropriate - renderer), followed by a close brace. - - - For example: {a, b, c}. - - - All collection classes that implement its subclasses, - or generic equivalents all implement the interface. - - - - - - - - Rendered as the key, an equals sign ('='), and the value (using the appropriate - renderer). - - - For example: key=value. - - - - - other - - Object.ToString() - - - - - - - - Render the array argument into a string - - The map used to lookup renderers - the array to render - The writer to render to - - - For a one dimensional array this is the - array type name, an open brace, followed by a comma - separated list of the elements (using the appropriate - renderer), followed by a close brace. For example: - int[] {1, 2, 3}. - - - If the array is not one dimensional the - Array.ToString() is returned. - - - - - - Render the enumerator argument into a string - - The map used to lookup renderers - the enumerator to render - The writer to render to - - - Rendered as an open brace, followed by a comma - separated list of the elements (using the appropriate - renderer), followed by a close brace. For example: - {a, b, c}. - - - - - - Render the DictionaryEntry argument into a string - - The map used to lookup renderers - the DictionaryEntry to render - The writer to render to - - - Render the key, an equals sign ('='), and the value (using the appropriate - renderer). For example: key=value. - - - - - - Map class objects to an . - - - - Maintains a mapping between types that require special - rendering and the that - is used to render them. - - - The method is used to render an - object using the appropriate renderers defined in this map. - - - Nicko Cadell - Gert Driesen - - - - Default Constructor - - - - Default constructor. - - - - - - Render using the appropriate renderer. - - the object to render to a string - the object rendered as a string - - - This is a convenience method used to render an object to a string. - The alternative method - should be used when streaming output to a . - - - - - - Render using the appropriate renderer. - - the object to render to a string - The writer to render to - - - Find the appropriate renderer for the type of the - parameter. This is accomplished by calling the - method. Once a renderer is found, it is - applied on the object and the result is returned - as a . - - - - - - Gets the renderer for the specified object type - - the object to lookup the renderer for - the renderer for - - - Gets the renderer for the specified object type. - - - Syntactic sugar method that calls - with the type of the object parameter. - - - - - - Gets the renderer for the specified type - - the type to lookup the renderer for - the renderer for the specified type - - - Returns the renderer for the specified type. - If no specific renderer has been defined the - will be returned. - - - - - - Internal function to recursively search interfaces - - the type to lookup the renderer for - the renderer for the specified type - - - - Clear the map of renderers - - - - Clear the custom renderers defined by using - . The - cannot be removed. - - - - - - Register an for . - - the type that will be rendered by - the renderer for - - - Register an object renderer for a specific source type. - This renderer will be returned from a call to - specifying the same as an argument. - - - - - - Get the default renderer instance - - the default renderer - - - Get the default renderer - - - - - - Interface implemented by logger repository plugins. - - - - Plugins define additional behavior that can be associated - with a . - The held by the - property is used to store the plugins for a repository. - - - The log4net.Config.PluginAttribute can be used to - attach plugins to repositories created using configuration - attributes. - - - Nicko Cadell - Gert Driesen - - - - Attaches the plugin to the specified . - - The that this plugin should be attached to. - - - A plugin may only be attached to a single repository. - - - This method is called when the plugin is attached to the repository. - - - - - - Is called when the plugin is to shutdown. - - - - This method is called to notify the plugin that - it should stop operating and should detach from - the repository. - - - - - - Gets the name of the plugin. - - - The name of the plugin. - - - - Plugins are stored in the - keyed by name. Each plugin instance attached to a - repository must be a unique name. - - - - - - A strongly-typed collection of objects. - - Nicko Cadell - - - - Creates a read-only wrapper for a PluginCollection instance. - - list to create a readonly wrapper arround - - A PluginCollection wrapper that is read-only. - - - - - Initializes a new instance of the PluginCollection class - that is empty and has the default initial capacity. - - - - - Initializes a new instance of the PluginCollection class - that has the specified initial capacity. - - - The number of elements that the new PluginCollection is initially capable of storing. - - - - - Initializes a new instance of the PluginCollection class - that contains elements copied from the specified PluginCollection. - - The PluginCollection whose elements are copied to the new collection. - - - - Initializes a new instance of the PluginCollection class - that contains elements copied from the specified array. - - The array whose elements are copied to the new list. - - - - Initializes a new instance of the PluginCollection class - that contains elements copied from the specified collection. - - The collection whose elements are copied to the new list. - - - - Allow subclasses to avoid our default constructors - - - - - - - Copies the entire PluginCollection to a one-dimensional - array. - - The one-dimensional array to copy to. - - - - Copies the entire PluginCollection to a one-dimensional - array, starting at the specified index of the target array. - - The one-dimensional array to copy to. - The zero-based index in at which copying begins. - - - - Adds a to the end of the PluginCollection. - - The to be added to the end of the PluginCollection. - The index at which the value has been added. - - - - Removes all elements from the PluginCollection. - - - - - Creates a shallow copy of the . - - A new with a shallow copy of the collection data. - - - - Determines whether a given is in the PluginCollection. - - The to check for. - true if is found in the PluginCollection; otherwise, false. - - - - Returns the zero-based index of the first occurrence of a - in the PluginCollection. - - The to locate in the PluginCollection. - - The zero-based index of the first occurrence of - in the entire PluginCollection, if found; otherwise, -1. - - - - - Inserts an element into the PluginCollection at the specified index. - - The zero-based index at which should be inserted. - The to insert. - - is less than zero - -or- - is equal to or greater than . - - - - - Removes the first occurrence of a specific from the PluginCollection. - - The to remove from the PluginCollection. - - The specified was not found in the PluginCollection. - - - - - Removes the element at the specified index of the PluginCollection. - - The zero-based index of the element to remove. - - is less than zero. - -or- - is equal to or greater than . - - - - - Returns an enumerator that can iterate through the PluginCollection. - - An for the entire PluginCollection. - - - - Adds the elements of another PluginCollection to the current PluginCollection. - - The PluginCollection whose elements should be added to the end of the current PluginCollection. - The new of the PluginCollection. - - - - Adds the elements of a array to the current PluginCollection. - - The array whose elements should be added to the end of the PluginCollection. - The new of the PluginCollection. - - - - Adds the elements of a collection to the current PluginCollection. - - The collection whose elements should be added to the end of the PluginCollection. - The new of the PluginCollection. - - - - Sets the capacity to the actual number of elements. - - - - - is less than zero. - -or- - is equal to or greater than . - - - - - is less than zero. - -or- - is equal to or greater than . - - - - - Gets the number of elements actually contained in the PluginCollection. - - - - - Gets a value indicating whether access to the collection is synchronized (thread-safe). - - true if access to the ICollection is synchronized (thread-safe); otherwise, false. - - - - Gets an object that can be used to synchronize access to the collection. - - - An object that can be used to synchronize access to the collection. - - - - - Gets or sets the at the specified index. - - - The at the specified index. - - The zero-based index of the element to get or set. - - is less than zero. - -or- - is equal to or greater than . - - - - - Gets a value indicating whether the collection has a fixed size. - - true if the collection has a fixed size; otherwise, false. The default is false. - - - - Gets a value indicating whether the IList is read-only. - - true if the collection is read-only; otherwise, false. The default is false. - - - - Gets or sets the number of elements the PluginCollection can contain. - - - The number of elements the PluginCollection can contain. - - - - - Supports type-safe iteration over a . - - - - - - Advances the enumerator to the next element in the collection. - - - true if the enumerator was successfully advanced to the next element; - false if the enumerator has passed the end of the collection. - - - The collection was modified after the enumerator was created. - - - - - Sets the enumerator to its initial position, before the first element in the collection. - - - - - Gets the current element in the collection. - - - - - Type visible only to our subclasses - Used to access protected constructor - - - - - - A value - - - - - Supports simple iteration over a . - - - - - - Initializes a new instance of the Enumerator class. - - - - - - Advances the enumerator to the next element in the collection. - - - true if the enumerator was successfully advanced to the next element; - false if the enumerator has passed the end of the collection. - - - The collection was modified after the enumerator was created. - - - - - Sets the enumerator to its initial position, before the first element in the collection. - - - - - Gets the current element in the collection. - - - The current element in the collection. - - - - - - - - Map of repository plugins. - - - - This class is a name keyed map of the plugins that are - attached to a repository. - - - Nicko Cadell - Gert Driesen - - - - Constructor - - The repository that the plugins should be attached to. - - - Initialize a new instance of the class with a - repository that the plugins should be attached to. - - - - - - Adds a to the map. - - The to add to the map. - - - The will be attached to the repository when added. - - - If there already exists a plugin with the same name - attached to the repository then the old plugin will - be and replaced with - the new plugin. - - - - - - Removes a from the map. - - The to remove from the map. - - - Remove a specific plugin from this map. - - - - - - Gets a by name. - - The name of the to lookup. - - The from the map with the name specified, or - null if no plugin is found. - - - - Lookup a plugin by name. If the plugin is not found null - will be returned. - - - - - - Gets all possible plugins as a list of objects. - - All possible plugins as a list of objects. - - - Get a collection of all the plugins defined in this map. - - - - - - Base implementation of - - - - Default abstract implementation of the - interface. This base class can be used by implementors - of the interface. - - - Nicko Cadell - Gert Driesen - - - - Constructor - - the name of the plugin - - Initializes a new Plugin with the specified name. - - - - - Attaches this plugin to a . - - The that this plugin should be attached to. - - - A plugin may only be attached to a single repository. - - - This method is called when the plugin is attached to the repository. - - - - - - Is called when the plugin is to shutdown. - - - - This method is called to notify the plugin that - it should stop operating and should detach from - the repository. - - - - - - The name of this plugin. - - - - - The repository this plugin is attached to. - - - - - Gets or sets the name of the plugin. - - - The name of the plugin. - - - - Plugins are stored in the - keyed by name. Each plugin instance attached to a - repository must be a unique name. - - - The name of the plugin must not change one the - plugin has been attached to a repository. - - - - - - The repository for this plugin - - - The that this plugin is attached to. - - - - Gets or sets the that this plugin is - attached to. - - - - - - Plugin that listens for events from the - - - - This plugin publishes an instance of - on a specified . This listens for logging events delivered from - a remote . - - - When an event is received it is relogged within the attached repository - as if it had been raised locally. - - - Nicko Cadell - Gert Driesen - - - - Default constructor - - - - Initializes a new instance of the class. - - - The property must be set. - - - - - - Construct with sink Uri. - - The name to publish the sink under in the remoting infrastructure. - See for more details. - - - Initializes a new instance of the class - with specified name. - - - - - - Attaches this plugin to a . - - The that this plugin should be attached to. - - - A plugin may only be attached to a single repository. - - - This method is called when the plugin is attached to the repository. - - - - - - Is called when the plugin is to shutdown. - - - - When the plugin is shutdown the remote logging - sink is disconnected. - - - - - - Gets or sets the URI of this sink. - - - The URI of this sink. - - - - This is the name under which the object is marshaled. - - - - - - - Delivers objects to a remote sink. - - - - Internal class used to listen for logging events - and deliver them to the local repository. - - - - - - Constructor - - The repository to log to. - - - Initializes a new instance of the for the - specified . - - - - - - Logs the events to the repository. - - The events to log. - - - The events passed are logged to the - - - - - - Obtains a lifetime service object to control the lifetime - policy for this instance. - - null to indicate that this instance should live forever. - - - Obtains a lifetime service object to control the lifetime - policy for this instance. This object should live forever - therefore this implementation returns null. - - - - - - The underlying that events should - be logged to. - - - - - Default implementation of - - - - This default implementation of the - interface is used to create the default subclass - of the object. - - - Nicko Cadell - Gert Driesen - - - - Interface abstracts creation of instances - - - - This interface is used by the to - create new objects. - - - The method is called - to create a named . - - - Implement this interface to create new subclasses of . - - - Nicko Cadell - Gert Driesen - - - - Create a new instance - - The name of the . - The instance for the specified name. - - - Create a new instance with the - specified name. - - - Called by the to create - new named instances. - - - If the is null then the root logger - must be returned. - - - - - - Default constructor - - - - Initializes a new instance of the class. - - - - - - Create a new instance - - The name of the . - The instance for the specified name. - - - Create a new instance with the - specified name. - - - Called by the to create - new named instances. - - - If the is null then the root logger - must be returned. - - - - - - Default internal subclass of - - - - This subclass has no additional behavior over the - class but does allow instances - to be created. - - - - - - Implementation of used by - - - - Internal class used to provide implementation of - interface. Applications should use to get - logger instances. - - - This is one of the central classes in the log4net implementation. One of the - distinctive features of log4net are hierarchical loggers and their - evaluation. The organizes the - instances into a rooted tree hierarchy. - - - The class is abstract. Only concrete subclasses of - can be created. The - is used to create instances of this type for the . - - - Nicko Cadell - Gert Driesen - Aspi Havewala - Douglas de la Torre - - - - This constructor created a new instance and - sets its name. - - The name of the . - - - This constructor is protected and designed to be used by - a subclass that is not abstract. - - - Loggers are constructed by - objects. See for the default - logger creator. - - - - - - Add to the list of appenders of this - Logger instance. - - An appender to add to this logger - - - Add to the list of appenders of this - Logger instance. - - - If is already in the list of - appenders, then it won't be added again. - - - - - - Look for the appender named as name - - The name of the appender to lookup - The appender with the name specified, or null. - - - Returns the named appender, or null if the appender is not found. - - - - - - Remove all previously added appenders from this Logger instance. - - - - Remove all previously added appenders from this Logger instance. - - - This is useful when re-reading configuration information. - - - - - - Remove the appender passed as parameter form the list of appenders. - - The appender to remove - The appender removed from the list - - - Remove the appender passed as parameter form the list of appenders. - The appender removed is not closed. - If you are discarding the appender you must call - on the appender removed. - - - - - - Remove the appender passed as parameter form the list of appenders. - - The name of the appender to remove - The appender removed from the list - - - Remove the named appender passed as parameter form the list of appenders. - The appender removed is not closed. - If you are discarding the appender you must call - on the appender removed. - - - - - - This generic form is intended to be used by wrappers. - - The declaring type of the method that is - the stack boundary into the logging system for this call. - The level of the message to be logged. - The message object to log. - The exception to log, including its stack trace. - - - Generate a logging event for the specified using - the and . - - - This method must not throw any exception to the caller. - - - - - - This is the most generic printing method that is intended to be used - by wrappers. - - The event being logged. - - - Logs the specified logging event through this logger. - - - This method must not throw any exception to the caller. - - - - - - Checks if this logger is enabled for a given passed as parameter. - - The level to check. - - true if this logger is enabled for level, otherwise false. - - - - Test if this logger is going to log events of the specified . - - - This method must not throw any exception to the caller. - - - - - - Deliver the to the attached appenders. - - The event to log. - - - Call the appenders in the hierarchy starting at - this. If no appenders could be found, emit a - warning. - - - This method calls all the appenders inherited from the - hierarchy circumventing any evaluation of whether to log or not - to log the particular log request. - - - - - - Closes all attached appenders implementing the interface. - - - - Used to ensure that the appenders are correctly shutdown. - - - - - - This is the most generic printing method. This generic form is intended to be used by wrappers - - The level of the message to be logged. - The message object to log. - The exception to log, including its stack trace. - - - Generate a logging event for the specified using - the . - - - - - - Creates a new logging event and logs the event without further checks. - - The declaring type of the method that is - the stack boundary into the logging system for this call. - The level of the message to be logged. - The message object to log. - The exception to log, including its stack trace. - - - Generates a logging event and delivers it to the attached - appenders. - - - - - - Creates a new logging event and logs the event without further checks. - - The event being logged. - - - Delivers the logging event to the attached appenders. - - - - - - The fully qualified type of the Logger class. - - - - - The name of this logger. - - - - - The assigned level of this logger. - - - - The level variable need not be - assigned a value in which case it is inherited - form the hierarchy. - - - - - - The parent of this logger. - - - - The parent of this logger. - All loggers have at least one ancestor which is the root logger. - - - - - - Loggers need to know what Hierarchy they are in. - - - - Loggers need to know what Hierarchy they are in. - The hierarchy that this logger is a member of is stored - here. - - - - - - Helper implementation of the interface - - - - - Flag indicating if child loggers inherit their parents appenders - - - - Additivity is set to true by default, that is children inherit - the appenders of their ancestors by default. If this variable is - set to false then the appenders found in the - ancestors of this logger are not used. However, the children - of this logger will inherit its appenders, unless the children - have their additivity flag set to false too. See - the user manual for more details. - - - - - - Lock to protect AppenderAttachedImpl variable m_appenderAttachedImpl - - - - - Gets or sets the parent logger in the hierarchy. - - - The parent logger in the hierarchy. - - - - Part of the Composite pattern that makes the hierarchy. - The hierarchy is parent linked rather than child linked. - - - - - - Gets or sets a value indicating if child loggers inherit their parent's appenders. - - - true if child loggers inherit their parent's appenders. - - - - Additivity is set to true by default, that is children inherit - the appenders of their ancestors by default. If this variable is - set to false then the appenders found in the - ancestors of this logger are not used. However, the children - of this logger will inherit its appenders, unless the children - have their additivity flag set to false too. See - the user manual for more details. - - - - - - Gets the effective level for this logger. - - The nearest level in the logger hierarchy. - - - Starting from this logger, searches the logger hierarchy for a - non-null level and returns it. Otherwise, returns the level of the - root logger. - - The Logger class is designed so that this method executes as - quickly as possible. - - - - - Gets or sets the where this - Logger instance is attached to. - - The hierarchy that this logger belongs to. - - - This logger must be attached to a single . - - - - - - Gets or sets the assigned , if any, for this Logger. - - - The of this logger. - - - - The assigned can be null. - - - - - - Get the appenders contained in this logger as an - . - - A collection of the appenders in this logger - - - Get the appenders contained in this logger as an - . If no appenders - can be found, then a is returned. - - - - - - Gets the logger name. - - - The name of the logger. - - - - The name of this logger - - - - - - Gets the where this - Logger instance is attached to. - - - The that this logger belongs to. - - - - Gets the where this - Logger instance is attached to. - - - - - - Construct a new Logger - - the name of the logger - - - Initializes a new instance of the class - with the specified name. - - - - - - Delegate used to handle logger creation event notifications. - - The in which the has been created. - The event args that hold the instance that has been created. - - - Delegate used to handle logger creation event notifications. - - - - - - Provides data for the event. - - - - A event is raised every time a - is created. - - - - - - The created - - - - - Constructor - - The that has been created. - - - Initializes a new instance of the event argument - class,with the specified . - - - - - - Gets the that has been created. - - - The that has been created. - - - - The that has been created. - - - - - - Hierarchical organization of loggers - - - - The casual user should not have to deal with this class - directly. - - - This class is specialized in retrieving loggers by name and - also maintaining the logger hierarchy. Implements the - interface. - - - The structure of the logger hierarchy is maintained by the - method. The hierarchy is such that children - link to their parent but parents do not have any references to their - children. Moreover, loggers can be instantiated in any order, in - particular descendant before ancestor. - - - In case a descendant is created before a particular ancestor, - then it creates a provision node for the ancestor and adds itself - to the provision node. Other descendants of the same ancestor add - themselves to the previously created provision node. - - - Nicko Cadell - Gert Driesen - - - - Base implementation of - - - - Default abstract implementation of the interface. - - - Skeleton implementation of the interface. - All types can extend this type. - - - Nicko Cadell - Gert Driesen - - - - Interface implemented by logger repositories. - - - - This interface is implemented by logger repositories. e.g. - . - - - This interface is used by the - to obtain interfaces. - - - Nicko Cadell - Gert Driesen - - - - Check if the named logger exists in the repository. If so return - its reference, otherwise returns null. - - The name of the logger to lookup - The Logger object with the name specified - - - If the names logger exists it is returned, otherwise - null is returned. - - - - - - Returns all the currently defined loggers as an Array. - - All the defined loggers - - - Returns all the currently defined loggers as an Array. - - - - - - Returns a named logger instance - - The name of the logger to retrieve - The logger object with the name specified - - - Returns a named logger instance. - - - If a logger of that name already exists, then it will be - returned. Otherwise, a new logger will be instantiated and - then linked with its existing ancestors as well as children. - - - - - Shutdown the repository - - - Shutting down a repository will safely close and remove - all appenders in all loggers including the root logger. - - - Some appenders need to be closed before the - application exists. Otherwise, pending logging events might be - lost. - - - The method is careful to close nested - appenders before closing regular appenders. This is allows - configurations where a regular appender is attached to a logger - and again to a nested appender. - - - - - - Reset the repositories configuration to a default state - - - - Reset all values contained in this instance to their - default state. - - - Existing loggers are not removed. They are just reset. - - - This method should be used sparingly and with care as it will - block all logging until it is completed. - - - - - - Log the through this repository. - - the event to log - - - This method should not normally be used to log. - The interface should be used - for routine logging. This interface can be obtained - using the method. - - - The logEvent is delivered to the appropriate logger and - that logger is then responsible for logging the event. - - - - - - Returns all the Appenders that are configured as an Array. - - All the Appenders - - - Returns all the Appenders that are configured as an Array. - - - - - - The name of the repository - - - The name of the repository - - - - The name of the repository. - - - - - - RendererMap accesses the object renderer map for this repository. - - - RendererMap accesses the object renderer map for this repository. - - - - RendererMap accesses the object renderer map for this repository. - - - The RendererMap holds a mapping between types and - objects. - - - - - - The plugin map for this repository. - - - The plugin map for this repository. - - - - The plugin map holds the instances - that have been attached to this repository. - - - - - - Get the level map for the Repository. - - - - Get the level map for the Repository. - - - The level map defines the mappings between - level names and objects in - this repository. - - - - - - The threshold for all events in this repository - - - The threshold for all events in this repository - - - - The threshold for all events in this repository. - - - - - - Flag indicates if this repository has been configured. - - - Flag indicates if this repository has been configured. - - - - Flag indicates if this repository has been configured. - - - - - - Event to notify that the repository has been shutdown. - - - Event to notify that the repository has been shutdown. - - - - Event raised when the repository has been shutdown. - - - - - - Event to notify that the repository has had its configuration reset. - - - Event to notify that the repository has had its configuration reset. - - - - Event raised when the repository's configuration has been - reset to default. - - - - - - Event to notify that the repository has had its configuration changed. - - - Event to notify that the repository has had its configuration changed. - - - - Event raised when the repository's configuration has been changed. - - - - - - Repository specific properties - - - Repository specific properties - - - - These properties can be specified on a repository specific basis. - - - - - - Default Constructor - - - - Initializes the repository with default (empty) properties. - - - - - - Construct the repository using specific properties - - the properties to set for this repository - - - Initializes the repository with specified properties. - - - - - - Test if logger exists - - The name of the logger to lookup - The Logger object with the name specified - - - Check if the named logger exists in the repository. If so return - its reference, otherwise returns null. - - - - - - Returns all the currently defined loggers in the repository - - All the defined loggers - - - Returns all the currently defined loggers in the repository as an Array. - - - - - - Return a new logger instance - - The name of the logger to retrieve - The logger object with the name specified - - - Return a new logger instance. - - - If a logger of that name already exists, then it will be - returned. Otherwise, a new logger will be instantiated and - then linked with its existing ancestors as well as children. - - - - - - Shutdown the repository - - - - Shutdown the repository. Can be overridden in a subclass. - This base class implementation notifies the - listeners and all attached plugins of the shutdown event. - - - - - - Reset the repositories configuration to a default state - - - - Reset all values contained in this instance to their - default state. - - - Existing loggers are not removed. They are just reset. - - - This method should be used sparingly and with care as it will - block all logging until it is completed. - - - - - - Log the logEvent through this repository. - - the event to log - - - This method should not normally be used to log. - The interface should be used - for routine logging. This interface can be obtained - using the method. - - - The logEvent is delivered to the appropriate logger and - that logger is then responsible for logging the event. - - - - - - Returns all the Appenders that are configured as an Array. - - All the Appenders - - - Returns all the Appenders that are configured as an Array. - - - - - - Adds an object renderer for a specific class. - - The type that will be rendered by the renderer supplied. - The object renderer used to render the object. - - - Adds an object renderer for a specific class. - - - - - - Notify the registered listeners that the repository is shutting down - - Empty EventArgs - - - Notify any listeners that this repository is shutting down. - - - - - - Notify the registered listeners that the repository has had its configuration reset - - Empty EventArgs - - - Notify any listeners that this repository's configuration has been reset. - - - - - - Notify the registered listeners that the repository has had its configuration changed - - Empty EventArgs - - - Notify any listeners that this repository's configuration has changed. - - - - - - Raise a configuration changed event on this repository - - EventArgs.Empty - - - Applications that programmatically change the configuration of the repository should - raise this event notification to notify listeners. - - - - - - The name of the repository - - - The string name of the repository - - - - The name of this repository. The name is - used to store and lookup the repositories - stored by the . - - - - - - The threshold for all events in this repository - - - The threshold for all events in this repository - - - - The threshold for all events in this repository - - - - - - RendererMap accesses the object renderer map for this repository. - - - RendererMap accesses the object renderer map for this repository. - - - - RendererMap accesses the object renderer map for this repository. - - - The RendererMap holds a mapping between types and - objects. - - - - - - The plugin map for this repository. - - - The plugin map for this repository. - - - - The plugin map holds the instances - that have been attached to this repository. - - - - - - Get the level map for the Repository. - - - - Get the level map for the Repository. - - - The level map defines the mappings between - level names and objects in - this repository. - - - - - - Flag indicates if this repository has been configured. - - - Flag indicates if this repository has been configured. - - - - Flag indicates if this repository has been configured. - - - - - - Event to notify that the repository has been shutdown. - - - Event to notify that the repository has been shutdown. - - - - Event raised when the repository has been shutdown. - - - - - - Event to notify that the repository has had its configuration reset. - - - Event to notify that the repository has had its configuration reset. - - - - Event raised when the repository's configuration has been - reset to default. - - - - - - Event to notify that the repository has had its configuration changed. - - - Event to notify that the repository has had its configuration changed. - - - - Event raised when the repository's configuration has been changed. - - - - - - Repository specific properties - - - Repository specific properties - - - These properties can be specified on a repository specific basis - - - - - Basic Configurator interface for repositories - - - - Interface used by basic configurator to configure a - with a default . - - - A should implement this interface to support - configuration by the . - - - Nicko Cadell - Gert Driesen - - - - Initialize the repository using the specified appender - - the appender to use to log all logging events - - - Configure the repository to route all logging events to the - specified appender. - - - - - - Configure repository using XML - - - - Interface used by Xml configurator to configure a . - - - A should implement this interface to support - configuration by the . - - - Nicko Cadell - Gert Driesen - - - - Initialize the repository using the specified config - - the element containing the root of the config - - - The schema for the XML configuration data is defined by - the implementation. - - - - - - Default constructor - - - - Initializes a new instance of the class. - - - - - - Construct with properties - - The properties to pass to this repository. - - - Initializes a new instance of the class. - - - - - - Construct with a logger factory - - The factory to use to create new logger instances. - - - Initializes a new instance of the class with - the specified . - - - - - - Construct with properties and a logger factory - - The properties to pass to this repository. - The factory to use to create new logger instances. - - - Initializes a new instance of the class with - the specified . - - - - - - Test if a logger exists - - The name of the logger to lookup - The Logger object with the name specified - - - Check if the named logger exists in the hierarchy. If so return - its reference, otherwise returns null. - - - - - - Returns all the currently defined loggers in the hierarchy as an Array - - All the defined loggers - - - Returns all the currently defined loggers in the hierarchy as an Array. - The root logger is not included in the returned - enumeration. - - - - - - Return a new logger instance named as the first parameter using - the default factory. - - - - Return a new logger instance named as the first parameter using - the default factory. - - - If a logger of that name already exists, then it will be - returned. Otherwise, a new logger will be instantiated and - then linked with its existing ancestors as well as children. - - - The name of the logger to retrieve - The logger object with the name specified - - - - Shutting down a hierarchy will safely close and remove - all appenders in all loggers including the root logger. - - - - Shutting down a hierarchy will safely close and remove - all appenders in all loggers including the root logger. - - - Some appenders need to be closed before the - application exists. Otherwise, pending logging events might be - lost. - - - The Shutdown method is careful to close nested - appenders before closing regular appenders. This is allows - configurations where a regular appender is attached to a logger - and again to a nested appender. - - - - - - Reset all values contained in this hierarchy instance to their default. - - - - Reset all values contained in this hierarchy instance to their - default. This removes all appenders from all loggers, sets - the level of all non-root loggers to null, - sets their additivity flag to true and sets the level - of the root logger to . Moreover, - message disabling is set its default "off" value. - - - Existing loggers are not removed. They are just reset. - - - This method should be used sparingly and with care as it will - block all logging until it is completed. - - - - - - Log the logEvent through this hierarchy. - - the event to log - - - This method should not normally be used to log. - The interface should be used - for routine logging. This interface can be obtained - using the method. - - - The logEvent is delivered to the appropriate logger and - that logger is then responsible for logging the event. - - - - - - Returns all the Appenders that are currently configured - - An array containing all the currently configured appenders - - - Returns all the instances that are currently configured. - All the loggers are searched for appenders. The appenders may also be containers - for appenders and these are also searched for additional loggers. - - - The list returned is unordered but does not contain duplicates. - - - - - - Collect the appenders from an . - The appender may also be a container. - - - - - - - Collect the appenders from an container - - - - - - - Initialize the log4net system using the specified appender - - the appender to use to log all logging events - - - - Initialize the log4net system using the specified appender - - the appender to use to log all logging events - - - This method provides the same functionality as the - method implemented - on this object, but it is protected and therefore can be called by subclasses. - - - - - - Initialize the log4net system using the specified config - - the element containing the root of the config - - - - Initialize the log4net system using the specified config - - the element containing the root of the config - - - This method provides the same functionality as the - method implemented - on this object, but it is protected and therefore can be called by subclasses. - - - - - - Test if this hierarchy is disabled for the specified . - - The level to check against. - - true if the repository is disabled for the level argument, false otherwise. - - - - If this hierarchy has not been configured then this method will - always return true. - - - This method will return true if this repository is - disabled for level object passed as parameter and - false otherwise. - - - See also the property. - - - - - - Clear all logger definitions from the internal hashtable - - - - This call will clear all logger definitions from the internal - hashtable. Invoking this method will irrevocably mess up the - logger hierarchy. - - - You should really know what you are doing before - invoking this method. - - - - - - Return a new logger instance named as the first parameter using - . - - The name of the logger to retrieve - The factory that will make the new logger instance - The logger object with the name specified - - - If a logger of that name already exists, then it will be - returned. Otherwise, a new logger will be instantiated by the - parameter and linked with its existing - ancestors as well as children. - - - - - - Sends a logger creation event to all registered listeners - - The newly created logger - - Raises the logger creation event. - - - - - Updates all the parents of the specified logger - - The logger to update the parents for - - - This method loops through all the potential parents of - . There 3 possible cases: - - - - No entry for the potential parent of exists - - We create a ProvisionNode for this potential - parent and insert in that provision node. - - - - The entry is of type Logger for the potential parent. - - The entry is 's nearest existing parent. We - update 's parent field with this entry. We also break from - he loop because updating our parent's parent is our parent's - responsibility. - - - - The entry is of type ProvisionNode for this potential parent. - - We add to the list of children for this - potential parent. - - - - - - - - Replace a with a in the hierarchy. - - - - - - We update the links for all the children that placed themselves - in the provision node 'pn'. The second argument 'log' is a - reference for the newly created Logger, parent of all the - children in 'pn'. - - - We loop on all the children 'c' in 'pn'. - - - If the child 'c' has been already linked to a child of - 'log' then there is no need to update 'c'. - - - Otherwise, we set log's parent field to c's parent and set - c's parent field to log. - - - - - - Define or redefine a Level using the values in the argument - - the level values - - - Define or redefine a Level using the values in the argument - - - Supports setting levels via the configuration file. - - - - - - Set a Property using the values in the argument - - the property value - - - Set a Property using the values in the argument. - - - Supports setting property values via the configuration file. - - - - - - Event used to notify that a logger has been created. - - - - Event raised when a logger is created. - - - - - - Has no appender warning been emitted - - - - Flag to indicate if we have already issued a warning - about not having an appender warning. - - - - - - Get the root of this hierarchy - - - - Get the root of this hierarchy. - - - - - - Gets or sets the default instance. - - The default - - - The logger factory is used to create logger instances. - - - - - - A class to hold the value, name and display name for a level - - - - A class to hold the value, name and display name for a level - - - - - - Override Object.ToString to return sensible debug info - - string info about this object - - - - Value of the level - - - - If the value is not set (defaults to -1) the value will be looked - up for the current level with the same name. - - - - - - Name of the level - - - The name of the level - - - - The name of the level. - - - - - - Display name for the level - - - The display name of the level - - - - The display name of the level. - - - - - - A class to hold the key and data for a property set in the config file - - - - A class to hold the key and data for a property set in the config file - - - - - - Override Object.ToString to return sensible debug info - - string info about this object - - - - Property Key - - - Property Key - - - - Property Key. - - - - - - Property Value - - - Property Value - - - - Property Value. - - - - - - Used internally to accelerate hash table searches. - - - - Internal class used to improve performance of - string keyed hashtables. - - - The hashcode of the string is cached for reuse. - The string is stored as an interned value. - When comparing two objects for equality - the reference equality of the interned strings is compared. - - - Nicko Cadell - Gert Driesen - - - - Construct key with string name - - - - Initializes a new instance of the class - with the specified name. - - - Stores the hashcode of the string and interns - the string key to optimize comparisons. - - - The Compact Framework 1.0 the - method does not work. On the Compact Framework - the string keys are not interned nor are they - compared by reference. - - - The name of the logger. - - - - Returns a hash code for the current instance. - - A hash code for the current instance. - - - Returns the cached hashcode. - - - - - - Determines whether two instances - are equal. - - The to compare with the current . - - true if the specified is equal to the current ; otherwise, false. - - - - Compares the references of the interned strings. - - - - - - Provision nodes are used where no logger instance has been specified - - - - instances are used in the - when there is no specified - for that node. - - - A provision node holds a list of child loggers on behalf of - a logger that does not exist. - - - Nicko Cadell - Gert Driesen - - - - Create a new provision node with child node - - A child logger to add to this node. - - - Initializes a new instance of the class - with the specified child logger. - - - - - - The sits at the root of the logger hierarchy tree. - - - - The is a regular except - that it provides several guarantees. - - - First, it cannot be assigned a null - level. Second, since the root logger cannot have a parent, the - property always returns the value of the - level field without walking the hierarchy. - - - Nicko Cadell - Gert Driesen - - - - Construct a - - The level to assign to the root logger. - - - Initializes a new instance of the class with - the specified logging level. - - - The root logger names itself as "root". However, the root - logger cannot be retrieved by name. - - - - - - Gets the assigned level value without walking the logger hierarchy. - - The assigned level value without walking the logger hierarchy. - - - Because the root logger cannot have a parent and its level - must not be null this property just returns the - value of . - - - - - - Gets or sets the assigned for the root logger. - - - The of the root logger. - - - - Setting the level of the root logger to a null reference - may have catastrophic results. We prevent this here. - - - - - - Initializes the log4net environment using an XML DOM. - - - - Configures a using an XML DOM. - - - Nicko Cadell - Gert Driesen - - - - Construct the configurator for a hierarchy - - The hierarchy to build. - - - Initializes a new instance of the class - with the specified . - - - - - - Configure the hierarchy by parsing a DOM tree of XML elements. - - The root element to parse. - - - Configure the hierarchy by parsing a DOM tree of XML elements. - - - - - - Parse appenders by IDREF. - - The appender ref element. - The instance of the appender that the ref refers to. - - - Parse an XML element that represents an appender and return - the appender. - - - - - - Parses an appender element. - - The appender element. - The appender instance or null when parsing failed. - - - Parse an XML element that represents an appender and return - the appender instance. - - - - - - Parses a logger element. - - The logger element. - - - Parse an XML element that represents a logger. - - - - - - Parses the root logger element. - - The root element. - - - Parse an XML element that represents the root logger. - - - - - - Parses the children of a logger element. - - The category element. - The logger instance. - Flag to indicate if the logger is the root logger. - - - Parse the child elements of a <logger> element. - - - - - - Parses an object renderer. - - The renderer element. - - - Parse an XML element that represents a renderer. - - - - - - Parses a level element. - - The level element. - The logger object to set the level on. - Flag to indicate if the logger is the root logger. - - - Parse an XML element that represents a level. - - - - - - Sets a parameter on an object. - - The parameter element. - The object to set the parameter on. - - The parameter name must correspond to a writable property - on the object. The value of the parameter is a string, - therefore this function will attempt to set a string - property first. If unable to set a string property it - will inspect the property and its argument type. It will - attempt to call a static method called Parse on the - type of the property. This method will take a single - string argument and return a value that can be used to - set the property. - - - - - Test if an element has no attributes or child elements - - the element to inspect - true if the element has any attributes or child elements, false otherwise - - - - Test if a is constructible with Activator.CreateInstance. - - the type to inspect - true if the type is creatable using a default constructor, false otherwise - - - - Look for a method on the that matches the supplied - - the type that has the method - the name of the method - the method info found - - - The method must be a public instance method on the . - The method must be named or "Add" followed by . - The method must take a single parameter. - - - - - - Converts a string value to a target type. - - The type of object to convert the string to. - The string value to use as the value of the object. - - - An object of type with value or - null when the conversion could not be performed. - - - - - - Creates an object as specified in XML. - - The XML element that contains the definition of the object. - The object type to use if not explicitly specified. - The type that the returned object must be or must inherit from. - The object or null - - - Parse an XML element and create an object instance based on the configuration - data. - - - The type of the instance may be specified in the XML. If not - specified then the is used - as the type. However the type is specified it must support the - type. - - - - - - key: appenderName, value: appender. - - - - - The Hierarchy being configured. - - - - - Delegate used to handle logger repository shutdown event notifications - - The that is shutting down. - Empty event args - - - Delegate used to handle logger repository shutdown event notifications. - - - - - - Delegate used to handle logger repository configuration reset event notifications - - The that has had its configuration reset. - Empty event args - - - Delegate used to handle logger repository configuration reset event notifications. - - - - - - Delegate used to handle event notifications for logger repository configuration changes. - - The that has had its configuration changed. - Empty event arguments. - - - Delegate used to handle event notifications for logger repository configuration changes. - - - - - - Write the name of the current AppDomain to the output - - - - Write the name of the current AppDomain to the output writer - - - Nicko Cadell - - - - Write the name of the current AppDomain to the output - - the writer to write to - null, state is not set - - - Writes name of the current AppDomain to the output . - - - - - - Write the current date to the output - - - - Date pattern converter, uses a to format - the current date and time to the writer as a string. - - - The value of the determines - the formatting of the date. The following values are allowed: - - - Option value - Output - - - ISO8601 - - Uses the formatter. - Formats using the "yyyy-MM-dd HH:mm:ss,fff" pattern. - - - - DATE - - Uses the formatter. - Formats using the "dd MMM yyyy HH:mm:ss,fff" for example, "06 Nov 1994 15:49:37,459". - - - - ABSOLUTE - - Uses the formatter. - Formats using the "HH:mm:ss,fff" for example, "15:49:37,459". - - - - other - - Any other pattern string uses the formatter. - This formatter passes the pattern string to the - method. - For details on valid patterns see - DateTimeFormatInfo Class. - - - - - - The date and time is in the local time zone and is rendered in that zone. - To output the time in Universal time see . - - - Nicko Cadell - - - - The used to render the date to a string - - - - The used to render the date to a string - - - - - - Initialize the converter options - - - - This is part of the delayed object - activation scheme. The method must - be called on this object after the configuration properties have - been set. Until is called this - object is in an undefined state and must not be used. - - - If any of the configuration properties are modified then - must be called again. - - - - - - Write the current date to the output - - that will receive the formatted result. - null, state is not set - - - Pass the current date and time to the - for it to render it to the writer. - - - The date and time passed is in the local time zone. - - - - - - Write an environment variable to the output - - - - Write an environment variable to the output writer. - The value of the determines - the name of the variable to output. - - - Nicko Cadell - - - - Write an environment variable to the output - - the writer to write to - null, state is not set - - - Writes the environment variable to the output . - The name of the environment variable to output must be set - using the - property. - - - - - - Write the current thread identity to the output - - - - Write the current thread identity to the output writer - - - Nicko Cadell - - - - Write the current thread identity to the output - - the writer to write to - null, state is not set - - - Writes the current thread identity to the output . - - - - - - Pattern converter for literal string instances in the pattern - - - - Writes the literal string value specified in the - property to - the output. - - - Nicko Cadell - - - - Set the next converter in the chain - - The next pattern converter in the chain - The next pattern converter - - - Special case the building of the pattern converter chain - for instances. Two adjacent - literals in the pattern can be represented by a single combined - pattern converter. This implementation detects when a - is added to the chain - after this converter and combines its value with this converter's - literal value. - - - - - - Write the literal to the output - - the writer to write to - null, not set - - - Override the formatting behavior to ignore the FormattingInfo - because we have a literal instead. - - - Writes the value of - to the output . - - - - - - Convert this pattern into the rendered message - - that will receive the formatted result. - null, not set - - - This method is not used. - - - - - - Writes a newline to the output - - - - Writes the system dependent line terminator to the output. - This behavior can be overridden by setting the : - - - - Option Value - Output - - - DOS - DOS or Windows line terminator "\r\n" - - - UNIX - UNIX line terminator "\n" - - - - Nicko Cadell - - - - Initialize the converter - - - - This is part of the delayed object - activation scheme. The method must - be called on this object after the configuration properties have - been set. Until is called this - object is in an undefined state and must not be used. - - - If any of the configuration properties are modified then - must be called again. - - - - - - Write the current process ID to the output - - - - Write the current process ID to the output writer - - - Nicko Cadell - - - - Write the current process ID to the output - - the writer to write to - null, state is not set - - - Write the current process ID to the output . - - - - - - Property pattern converter - - - - This pattern converter reads the thread and global properties. - The thread properties take priority over global properties. - See for details of the - thread properties. See for - details of the global properties. - - - If the is specified then that will be used to - lookup a single property. If no is specified - then all properties will be dumped as a list of key value pairs. - - - Nicko Cadell - - - - Write the property value to the output - - that will receive the formatted result. - null, state is not set - - - Writes out the value of a named property. The property name - should be set in the - property. - - - If the is set to null - then all the properties are written as key value pairs. - - - - - - A Pattern converter that generates a string of random characters - - - - The converter generates a string of random characters. By default - the string is length 4. This can be changed by setting the - to the string value of the length required. - - - The random characters in the string are limited to uppercase letters - and numbers only. - - - The random number generator used by this class is not cryptographically secure. - - - Nicko Cadell - - - - Shared random number generator - - - - - Length of random string to generate. Default length 4. - - - - - Initialize the converter options - - - - This is part of the delayed object - activation scheme. The method must - be called on this object after the configuration properties have - been set. Until is called this - object is in an undefined state and must not be used. - - - If any of the configuration properties are modified then - must be called again. - - - - - - Write a randoim string to the output - - the writer to write to - null, state is not set - - - Write a randoim string to the output . - - - - - - Write the current threads username to the output - - - - Write the current threads username to the output writer - - - Nicko Cadell - - - - Write the current threads username to the output - - the writer to write to - null, state is not set - - - Write the current threads username to the output . - - - - - - Write the UTC date time to the output - - - - Date pattern converter, uses a to format - the current date and time in Universal time. - - - See the for details on the date pattern syntax. - - - - Nicko Cadell - - - - Write the current date and time to the output - - that will receive the formatted result. - null, state is not set - - - Pass the current date and time to the - for it to render it to the writer. - - - The date is in Universal time when it is rendered. - - - - - - - Type converter for Boolean. - - - - Supports conversion from string to bool type. - - - - - - Nicko Cadell - Gert Driesen - - - - Can the source type be converted to the type supported by this object - - the type to convert - true if the conversion is possible - - - Returns true if the is - the type. - - - - - - Convert the source object to the type supported by this object - - the object to convert - the converted object - - - Uses the method to convert the - argument to a . - - - - The object cannot be converted to the - target type. To check for this condition use the - method. - - - - - Exception base type for conversion errors. - - - - This type extends . It - does not add any new functionality but does differentiate the - type of exception being thrown. - - - Nicko Cadell - Gert Driesen - - - - Constructor - - - - Initializes a new instance of the class. - - - - - - Constructor - - A message to include with the exception. - - - Initializes a new instance of the class - with the specified message. - - - - - - Constructor - - A message to include with the exception. - A nested exception to include. - - - Initializes a new instance of the class - with the specified message and inner exception. - - - - - - Serialization constructor - - The that holds the serialized object data about the exception being thrown. - The that contains contextual information about the source or destination. - - - Initializes a new instance of the class - with serialized data. - - - - - - Creates a new instance of the class. - - The conversion destination type. - The value to convert. - An instance of the . - - - Creates a new instance of the class. - - - - - - Creates a new instance of the class. - - The conversion destination type. - The value to convert. - A nested exception to include. - An instance of the . - - - Creates a new instance of the class. - - - - - - Register of type converters for specific types. - - - - Maintains a registry of type converters used to convert between - types. - - - Use the and - methods to register new converters. - The and methods - lookup appropriate converters to use. - - - - - Nicko Cadell - Gert Driesen - - - - Private constructor - - - Initializes a new instance of the class. - - - - - Static constructor. - - - - This constructor defines the intrinsic type converters. - - - - - - Adds a converter for a specific type. - - The type being converted to. - The type converter to use to convert to the destination type. - - - Adds a converter instance for a specific type. - - - - - - Adds a converter for a specific type. - - The type being converted to. - The type of the type converter to use to convert to the destination type. - - - Adds a converter for a specific type. - - - - - - Gets the type converter to use to convert values to the destination type. - - The type being converted from. - The type being converted to. - - The type converter instance to use for type conversions or null - if no type converter is found. - - - - Gets the type converter to use to convert values to the destination type. - - - - - - Gets the type converter to use to convert values to the destination type. - - The type being converted to. - - The type converter instance to use for type conversions or null - if no type converter is found. - - - - Gets the type converter to use to convert values to the destination type. - - - - - - Lookups the type converter to use as specified by the attributes on the - destination type. - - The type being converted to. - - The type converter instance to use for type conversions or null - if no type converter is found. - - - - - Creates the instance of the type converter. - - The type of the type converter. - - The type converter instance to use for type conversions or null - if no type converter is found. - - - - The type specified for the type converter must implement - the or interfaces - and must have a public default (no argument) constructor. - - - - - - Mapping from to type converter. - - - - - Supports conversion from string to type. - - - - Supports conversion from string to type. - - - - - - Nicko Cadell - Gert Driesen - - - - Can the source type be converted to the type supported by this object - - the type to convert - true if the conversion is possible - - - Returns true if the is - the type. - - - - - - Overrides the ConvertFrom method of IConvertFrom. - - the object to convert to an encoding - the encoding - - - Uses the method to - convert the argument to an . - - - - The object cannot be converted to the - target type. To check for this condition use the - method. - - - - - Interface supported by type converters - - - - This interface supports conversion from a single type to arbitrary types. - See . - - - Nicko Cadell - - - - Returns whether this converter can convert the object to the specified type - - A Type that represents the type you want to convert to - true if the conversion is possible - - - Test if the type supported by this converter can be converted to the - . - - - - - - Converts the given value object to the specified type, using the arguments - - the object to convert - The Type to convert the value parameter to - the converted object - - - Converts the (which must be of the type supported - by this converter) to the specified.. - - - - - - Supports conversion from string to type. - - - - Supports conversion from string to type. - - - - - Nicko Cadell - - - - Can the source type be converted to the type supported by this object - - the type to convert - true if the conversion is possible - - - Returns true if the is - the type. - - - - - - Overrides the ConvertFrom method of IConvertFrom. - - the object to convert to an IPAddress - the IPAddress - - - Uses the method to convert the - argument to an . - If that fails then the string is resolved as a DNS hostname. - - - - The object cannot be converted to the - target type. To check for this condition use the - method. - - - - - Valid characters in an IPv4 or IPv6 address string. (Does not support subnets) - - - - - Supports conversion from string to type. - - - - Supports conversion from string to type. - - - The string is used as the - of the . - - - - - - Nicko Cadell - - - - Can the source type be converted to the type supported by this object - - the type to convert - true if the conversion is possible - - - Returns true if the is - the type. - - - - - - Overrides the ConvertFrom method of IConvertFrom. - - the object to convert to a PatternLayout - the PatternLayout - - - Creates and returns a new using - the as the - . - - - - The object cannot be converted to the - target type. To check for this condition use the - method. - - - - - Convert between string and - - - - Supports conversion from string to type, - and from a type to a string. - - - The string is used as the - of the . - - - - - - Nicko Cadell - - - - Can the target type be converted to the type supported by this object - - A that represents the type you want to convert to - true if the conversion is possible - - - Returns true if the is - assignable from a type. - - - - - - Converts the given value object to the specified type, using the arguments - - the object to convert - The Type to convert the value parameter to - the converted object - - - Uses the method to convert the - argument to a . - - - - The object cannot be converted to the - . To check for this condition use the - method. - - - - - Can the source type be converted to the type supported by this object - - the type to convert - true if the conversion is possible - - - Returns true if the is - the type. - - - - - - Overrides the ConvertFrom method of IConvertFrom. - - the object to convert to a PatternString - the PatternString - - - Creates and returns a new using - the as the - . - - - - The object cannot be converted to the - target type. To check for this condition use the - method. - - - - - Supports conversion from string to type. - - - - Supports conversion from string to type. - - - - - - Nicko Cadell - - - - Can the source type be converted to the type supported by this object - - the type to convert - true if the conversion is possible - - - Returns true if the is - the type. - - - - - - Overrides the ConvertFrom method of IConvertFrom. - - the object to convert to a Type - the Type - - - Uses the method to convert the - argument to a . - Additional effort is made to locate partially specified types - by searching the loaded assemblies. - - - - The object cannot be converted to the - target type. To check for this condition use the - method. - - - - - Attribute used to associate a type converter - - - - Class and Interface level attribute that specifies a type converter - to use with the associated type. - - - To associate a type converter with a target type apply a - TypeConverterAttribute to the target type. Specify the - type of the type converter on the attribute. - - - Nicko Cadell - Gert Driesen - - - - The string type name of the type converter - - - - - Default constructor - - - - Default constructor - - - - - - Create a new type converter attribute for the specified type name - - The string type name of the type converter - - - The type specified must implement the - or the interfaces. - - - - - - Create a new type converter attribute for the specified type - - The type of the type converter - - - The type specified must implement the - or the interfaces. - - - - - - The string type name of the type converter - - - The string type name of the type converter - - - - The type specified must implement the - or the interfaces. - - - - - - A straightforward implementation of the interface. - - - - This is the default implementation of the - interface. Implementors of the interface - should aggregate an instance of this type. - - - Nicko Cadell - Gert Driesen - - - - Constructor - - - - Initializes a new instance of the class. - - - - - - Append on on all attached appenders. - - The event being logged. - The number of appenders called. - - - Calls the method on all - attached appenders. - - - - - - Append on on all attached appenders. - - The array of events being logged. - The number of appenders called. - - - Calls the method on all - attached appenders. - - - - - - Calls the DoAppende method on the with - the objects supplied. - - The appender - The events - - - If the supports the - interface then the will be passed - through using that interface. Otherwise the - objects in the array will be passed one at a time. - - - - - - Attaches an appender. - - The appender to add. - - - If the appender is already in the list it won't be added again. - - - - - - Gets an attached appender with the specified name. - - The name of the appender to get. - - The appender with the name specified, or null if no appender with the - specified name is found. - - - - Lookup an attached appender by name. - - - - - - Removes all attached appenders. - - - - Removes and closes all attached appenders - - - - - - Removes the specified appender from the list of attached appenders. - - The appender to remove. - The appender removed from the list - - - The appender removed is not closed. - If you are discarding the appender you must call - on the appender removed. - - - - - - Removes the appender with the specified name from the list of appenders. - - The name of the appender to remove. - The appender removed from the list - - - The appender removed is not closed. - If you are discarding the appender you must call - on the appender removed. - - - - - - List of appenders - - - - - Array of appenders, used to cache the m_appenderList - - - - - Gets all attached appenders. - - - A collection of attached appenders, or null if there - are no attached appenders. - - - - The read only collection of all currently attached appenders. - - - - - - This class aggregates several PropertiesDictionary collections together. - - - - Provides a dictionary style lookup over an ordered list of - collections. - - - Nicko Cadell - - - - Constructor - - - - Initializes a new instance of the class. - - - - - - Add a Properties Dictionary to this composite collection - - the properties to add - - - Properties dictionaries added first take precedence over dictionaries added - later. - - - - - - Flatten this composite collection into a single properties dictionary - - the flattened dictionary - - - Reduces the collection of ordered dictionaries to a single dictionary - containing the resultant values for the keys. - - - - - - Gets the value of a property - - - The value for the property with the specified key - - - - Looks up the value for the specified. - The collections are searched - in the order in which they were added to this collection. The value - returned is the value held by the first collection that contains - the specified key. - - - If none of the collections contain the specified key then - null is returned. - - - - - - Base class for Context Properties implementations - - - - This class defines a basic property get set accessor - - - Nicko Cadell - - - - Gets or sets the value of a property - - - The value for the property with the specified key - - - - Gets or sets the value of a property - - - - - - Subclass of that maintains a count of - the number of bytes written. - - - - This writer counts the number of bytes written. - - - Nicko Cadell - Gert Driesen - - - - that does not leak exceptions - - - - does not throw exceptions when things go wrong. - Instead, it delegates error handling to its . - - - Nicko Cadell - Gert Driesen - - - - Adapter that extends and forwards all - messages to an instance of . - - - - Adapter that extends and forwards all - messages to an instance of . - - - Nicko Cadell - - - - The writer to forward messages to - - - - - Create an instance of that forwards all - messages to a . - - The to forward to - - - Create an instance of that forwards all - messages to a . - - - - - - Closes the writer and releases any system resources associated with the writer - - - - - - - - - Dispose this writer - - flag indicating if we are being disposed - - - Dispose this writer - - - - - - Flushes any buffered output - - - - Clears all buffers for the writer and causes any buffered data to be written - to the underlying device - - - - - - Writes a character to the wrapped TextWriter - - the value to write to the TextWriter - - - Writes a character to the wrapped TextWriter - - - - - - Writes a character buffer to the wrapped TextWriter - - the data buffer - the start index - the number of characters to write - - - Writes a character buffer to the wrapped TextWriter - - - - - - Writes a string to the wrapped TextWriter - - the value to write to the TextWriter - - - Writes a string to the wrapped TextWriter - - - - - - Gets or sets the underlying . - - - The underlying . - - - - Gets or sets the underlying . - - - - - - The Encoding in which the output is written - - - The - - - - The Encoding in which the output is written - - - - - - Gets an object that controls formatting - - - The format provider - - - - Gets an object that controls formatting - - - - - - Gets or sets the line terminator string used by the TextWriter - - - The line terminator to use - - - - Gets or sets the line terminator string used by the TextWriter - - - - - - Constructor - - the writer to actually write to - the error handler to report error to - - - Create a new QuietTextWriter using a writer and error handler - - - - - - Writes a character to the underlying writer - - the char to write - - - Writes a character to the underlying writer - - - - - - Writes a buffer to the underlying writer - - the buffer to write - the start index to write from - the number of characters to write - - - Writes a buffer to the underlying writer - - - - - - Writes a string to the output. - - The string data to write to the output. - - - Writes a string to the output. - - - - - - Closes the underlying output writer. - - - - Closes the underlying output writer. - - - - - - The error handler instance to pass all errors to - - - - - Flag to indicate if this writer is closed - - - - - Gets or sets the error handler that all errors are passed to. - - - The error handler that all errors are passed to. - - - - Gets or sets the error handler that all errors are passed to. - - - - - - Gets a value indicating whether this writer is closed. - - - true if this writer is closed, otherwise false. - - - - Gets a value indicating whether this writer is closed. - - - - - - Constructor - - The to actually write to. - The to report errors to. - - - Creates a new instance of the class - with the specified and . - - - - - - Writes a character to the underlying writer and counts the number of bytes written. - - the char to write - - - Overrides implementation of . Counts - the number of bytes written. - - - - - - Writes a buffer to the underlying writer and counts the number of bytes written. - - the buffer to write - the start index to write from - the number of characters to write - - - Overrides implementation of . Counts - the number of bytes written. - - - - - - Writes a string to the output and counts the number of bytes written. - - The string data to write to the output. - - - Overrides implementation of . Counts - the number of bytes written. - - - - - - Total number of bytes written. - - - - - Gets or sets the total number of bytes written. - - - The total number of bytes written. - - - - Gets or sets the total number of bytes written. - - - - - - A fixed size rolling buffer of logging events. - - - - An array backed fixed size leaky bucket. - - - Nicko Cadell - Gert Driesen - - - - Constructor - - The maximum number of logging events in the buffer. - - - Initializes a new instance of the class with - the specified maximum number of buffered logging events. - - - The argument is not a positive integer. - - - - Appends a to the buffer. - - The event to append to the buffer. - The event discarded from the buffer, if the buffer is full, otherwise null. - - - Append an event to the buffer. If the buffer still contains free space then - null is returned. If the buffer is full then an event will be dropped - to make space for the new event, the event dropped is returned. - - - - - - Get and remove the oldest event in the buffer. - - The oldest logging event in the buffer - - - Gets the oldest (first) logging event in the buffer and removes it - from the buffer. - - - - - - Pops all the logging events from the buffer into an array. - - An array of all the logging events in the buffer. - - - Get all the events in the buffer and clear the buffer. - - - - - - Clear the buffer - - - - Clear the buffer of all events. The events in the buffer are lost. - - - - - - Gets the th oldest event currently in the buffer. - - The th oldest event currently in the buffer. - - - If is outside the range 0 to the number of events - currently in the buffer, then null is returned. - - - - - - Gets the maximum size of the buffer. - - The maximum size of the buffer. - - - Gets the maximum size of the buffer - - - - - - Gets the number of logging events in the buffer. - - The number of logging events in the buffer. - - - This number is guaranteed to be in the range 0 to - (inclusive). - - - - - - An always empty . - - - - A singleton implementation of the - interface that always represents an empty collection. - - - Nicko Cadell - Gert Driesen - - - - Initializes a new instance of the class. - - - - Uses a private access modifier to enforce the singleton pattern. - - - - - - Copies the elements of the to an - , starting at a particular Array index. - - The one-dimensional - that is the destination of the elements copied from - . The Array must have zero-based - indexing. - The zero-based index in array at which - copying begins. - - - As the collection is empty no values are copied into the array. - - - - - - Returns an enumerator that can iterate through a collection. - - - An that can be used to - iterate through the collection. - - - - As the collection is empty a is returned. - - - - - - The singleton instance of the empty collection. - - - - - Gets the singleton instance of the empty collection. - - The singleton instance of the empty collection. - - - Gets the singleton instance of the empty collection. - - - - - - Gets a value indicating if access to the is synchronized (thread-safe). - - - true if access to the is synchronized (thread-safe); otherwise, false. - - - - For the this property is always true. - - - - - - Gets the number of elements contained in the . - - - The number of elements contained in the . - - - - As the collection is empty the is always 0. - - - - - - Gets an object that can be used to synchronize access to the . - - - An object that can be used to synchronize access to the . - - - - As the collection is empty and thread safe and synchronized this instance is also - the object. - - - - - - An always empty . - - - - A singleton implementation of the - interface that always represents an empty collection. - - - Nicko Cadell - Gert Driesen - - - - Initializes a new instance of the class. - - - - Uses a private access modifier to enforce the singleton pattern. - - - - - - Copies the elements of the to an - , starting at a particular Array index. - - The one-dimensional - that is the destination of the elements copied from - . The Array must have zero-based - indexing. - The zero-based index in array at which - copying begins. - - - As the collection is empty no values are copied into the array. - - - - - - Returns an enumerator that can iterate through a collection. - - - An that can be used to - iterate through the collection. - - - - As the collection is empty a is returned. - - - - - - Adds an element with the provided key and value to the - . - - The to use as the key of the element to add. - The to use as the value of the element to add. - - - As the collection is empty no new values can be added. A - is thrown if this method is called. - - - This dictionary is always empty and cannot be modified. - - - - Removes all elements from the . - - - - As the collection is empty no values can be removed. A - is thrown if this method is called. - - - This dictionary is always empty and cannot be modified. - - - - Determines whether the contains an element - with the specified key. - - The key to locate in the . - false - - - As the collection is empty the method always returns false. - - - - - - Returns an enumerator that can iterate through a collection. - - - An that can be used to - iterate through the collection. - - - - As the collection is empty a is returned. - - - - - - Removes the element with the specified key from the . - - The key of the element to remove. - - - As the collection is empty no values can be removed. A - is thrown if this method is called. - - - This dictionary is always empty and cannot be modified. - - - - The singleton instance of the empty dictionary. - - - - - Gets the singleton instance of the . - - The singleton instance of the . - - - Gets the singleton instance of the . - - - - - - Gets a value indicating if access to the is synchronized (thread-safe). - - - true if access to the is synchronized (thread-safe); otherwise, false. - - - - For the this property is always true. - - - - - - Gets the number of elements contained in the - - - The number of elements contained in the . - - - - As the collection is empty the is always 0. - - - - - - Gets an object that can be used to synchronize access to the . - - - An object that can be used to synchronize access to the . - - - - As the collection is empty and thread safe and synchronized this instance is also - the object. - - - - - - Gets a value indicating whether the has a fixed size. - - true - - - As the collection is empty always returns true. - - - - - - Gets a value indicating whether the is read-only. - - true - - - As the collection is empty always returns true. - - - - - - Gets an containing the keys of the . - - An containing the keys of the . - - - As the collection is empty a is returned. - - - - - - Gets an containing the values of the . - - An containing the values of the . - - - As the collection is empty a is returned. - - - - - - Gets or sets the element with the specified key. - - The key of the element to get or set. - null - - - As the collection is empty no values can be looked up or stored. - If the index getter is called then null is returned. - A is thrown if the setter is called. - - - This dictionary is always empty and cannot be modified. - - - - Contain the information obtained when parsing formatting modifiers - in conversion modifiers. - - - - Holds the formatting information extracted from the format string by - the . This is used by the - objects when rendering the output. - - - Nicko Cadell - Gert Driesen - - - - Defaut Constructor - - - - Initializes a new instance of the class. - - - - - - Constructor - - - - Initializes a new instance of the class - with the specified parameters. - - - - - - Gets or sets the minimum value. - - - The minimum value. - - - - Gets or sets the minimum value. - - - - - - Gets or sets the maximum value. - - - The maximum value. - - - - Gets or sets the maximum value. - - - - - - Gets or sets a flag indicating whether left align is enabled - or not. - - - A flag indicating whether left align is enabled or not. - - - - Gets or sets a flag indicating whether left align is enabled or not. - - - - - - Implementation of Properties collection for the - - - - This class implements a properties collection that is thread safe and supports both - storing properties and capturing a read only copy of the current propertied. - - - This class is optimized to the scenario where the properties are read frequently - and are modified infrequently. - - - Nicko Cadell - - - - The read only copy of the properties. - - - - This variable is declared volatile to prevent the compiler and JIT from - reordering reads and writes of this thread performed on different threads. - - - - - - Lock object used to synchronize updates within this instance - - - - - Constructor - - - - Initializes a new instance of the class. - - - - - - Remove a property from the global context - - the key for the entry to remove - - - Removing an entry from the global context properties is relatively expensive compared - with reading a value. - - - - - - Clear the global context properties - - - - - Get a readonly immutable copy of the properties - - the current global context properties - - - This implementation is fast because the GlobalContextProperties class - stores a readonly copy of the properties. - - - - - - Gets or sets the value of a property - - - The value for the property with the specified key - - - - Reading the value for a key is faster than setting the value. - When the value is written a new read only copy of - the properties is created. - - - - - - Manages a mapping from levels to - - - - Manages an ordered mapping from instances - to subclasses. - - - Nicko Cadell - - - - Default constructor - - - - Initialise a new instance of . - - - - - - Add a to this mapping - - the entry to add - - - If a has previously been added - for the same then that entry will be - overwritten. - - - - - - Lookup the mapping for the specified level - - the level to lookup - the for the level or null if no mapping found - - - Lookup the value for the specified level. Finds the nearest - mapping value for the level that is equal to or less than the - specified. - - - If no mapping could be found then null is returned. - - - - - - Initialize options - - - - Caches the sorted list of in an array - - - - - - Implementation of Properties collection for the - - - - Class implements a collection of properties that is specific to each thread. - The class is not synchronized as each thread has its own . - - - Nicko Cadell - - - - Constructor - - - - Initializes a new instance of the class. - - - - - - Remove a property - - the key for the entry to remove - - - Remove the value for the specified from the context. - - - - - - Clear all the context properties - - - - Clear all the context properties - - - - - - Get the PropertiesDictionary stored in the LocalDataStoreSlot for this thread. - - create the dictionary if it does not exist, otherwise return null if is does not exist - the properties for this thread - - - The collection returned is only to be used on the calling thread. If the - caller needs to share the collection between different threads then the - caller must clone the collection before doings so. - - - - - - Gets or sets the value of a property - - - The value for the property with the specified key - - - - Get or set the property value for the specified. - - - - - - Outputs log statements from within the log4net assembly. - - - - Log4net components cannot make log4net logging calls. However, it is - sometimes useful for the user to learn about what log4net is - doing. - - - All log4net internal debug calls go to the standard output stream - whereas internal error messages are sent to the standard error output - stream. - - - Nicko Cadell - Gert Driesen - - - - Initializes a new instance of the class. - - - - Uses a private access modifier to prevent instantiation of this class. - - - - - - Static constructor that initializes logging by reading - settings from the application configuration file. - - - - The log4net.Internal.Debug application setting - controls internal debugging. This setting should be set - to true to enable debugging. - - - The log4net.Internal.Quiet application setting - suppresses all internal logging including error messages. - This setting should be set to true to enable message - suppression. - - - - - - Writes log4net internal debug messages to the - standard output stream. - - The message to log. - - - All internal debug messages are prepended with - the string "log4net: ". - - - - - - Writes log4net internal debug messages to the - standard output stream. - - The message to log. - An exception to log. - - - All internal debug messages are prepended with - the string "log4net: ". - - - - - - Writes log4net internal warning messages to the - standard error stream. - - The message to log. - - - All internal warning messages are prepended with - the string "log4net:WARN ". - - - - - - Writes log4net internal warning messages to the - standard error stream. - - The message to log. - An exception to log. - - - All internal warning messages are prepended with - the string "log4net:WARN ". - - - - - - Writes log4net internal error messages to the - standard error stream. - - The message to log. - - - All internal error messages are prepended with - the string "log4net:ERROR ". - - - - - - Writes log4net internal error messages to the - standard error stream. - - The message to log. - An exception to log. - - - All internal debug messages are prepended with - the string "log4net:ERROR ". - - - - - - Writes output to the standard output stream. - - The message to log. - - - Writes to both Console.Out and System.Diagnostics.Trace. - Note that the System.Diagnostics.Trace is not supported - on the Compact Framework. - - - If the AppDomain is not configured with a config file then - the call to System.Diagnostics.Trace may fail. This is only - an issue if you are programmatically creating your own AppDomains. - - - - - - Writes output to the standard error stream. - - The message to log. - - - Writes to both Console.Error and System.Diagnostics.Trace. - Note that the System.Diagnostics.Trace is not supported - on the Compact Framework. - - - If the AppDomain is not configured with a config file then - the call to System.Diagnostics.Trace may fail. This is only - an issue if you are programmatically creating your own AppDomains. - - - - - - Default debug level - - - - - In quietMode not even errors generate any output. - - - - - Gets or sets a value indicating whether log4net internal logging - is enabled or disabled. - - - true if log4net internal logging is enabled, otherwise - false. - - - - When set to true, internal debug level logging will be - displayed. - - - This value can be set by setting the application setting - log4net.Internal.Debug in the application configuration - file. - - - The default value is false, i.e. debugging is - disabled. - - - - - The following example enables internal debugging using the - application configuration file : - - - - - - - - - - - - - Gets or sets a value indicating whether log4net should generate no output - from internal logging, not even for errors. - - - true if log4net should generate no output at all from internal - logging, otherwise false. - - - - When set to true will cause internal logging at all levels to be - suppressed. This means that no warning or error reports will be logged. - This option overrides the setting and - disables all debug also. - - This value can be set by setting the application setting - log4net.Internal.Quiet in the application configuration file. - - - The default value is false, i.e. internal logging is not - disabled. - - - - The following example disables internal logging using the - application configuration file : - - - - - - - - - - - - Test if LogLog.Debug is enabled for output. - - - true if Debug is enabled - - - - Test if LogLog.Debug is enabled for output. - - - - - - Test if LogLog.Warn is enabled for output. - - - true if Warn is enabled - - - - Test if LogLog.Warn is enabled for output. - - - - - - Test if LogLog.Error is enabled for output. - - - true if Error is enabled - - - - Test if LogLog.Error is enabled for output. - - - - - - Represents a native error code and message. - - - - Represents a Win32 platform native error. - - - Nicko Cadell - Gert Driesen - - - - Create an instance of the class with the specified - error number and message. - - The number of the native error. - The message of the native error. - - - Create an instance of the class with the specified - error number and message. - - - - - - Create a new instance of the class for the last Windows error. - - - An instance of the class for the last windows error. - - - - The message for the error number is lookup up using the - native Win32 FormatMessage function. - - - - - - Create a new instance of the class. - - the error number for the native error - - An instance of the class for the specified - error number. - - - - The message for the specified error number is lookup up using the - native Win32 FormatMessage function. - - - - - - Retrieves the message corresponding with a Win32 message identifier. - - Message identifier for the requested message. - - The message corresponding with the specified message identifier. - - - - The message will be searched for in system message-table resource(s) - using the native FormatMessage function. - - - - - - Return error information string - - error information string - - - Return error information string - - - - - - Formats a message string. - - Formatting options, and how to interpret the parameter. - Location of the message definition. - Message identifier for the requested message. - Language identifier for the requested message. - If includes FORMAT_MESSAGE_ALLOCATE_BUFFER, the function allocates a buffer using the LocalAlloc function, and places the pointer to the buffer at the address specified in . - If the FORMAT_MESSAGE_ALLOCATE_BUFFER flag is not set, this parameter specifies the maximum number of TCHARs that can be stored in the output buffer. If FORMAT_MESSAGE_ALLOCATE_BUFFER is set, this parameter specifies the minimum number of TCHARs to allocate for an output buffer. - Pointer to an array of values that are used as insert values in the formatted message. - - - The function requires a message definition as input. The message definition can come from a - buffer passed into the function. It can come from a message table resource in an - already-loaded module. Or the caller can ask the function to search the system's message - table resource(s) for the message definition. The function finds the message definition - in a message table resource based on a message identifier and a language identifier. - The function copies the formatted message text to an output buffer, processing any embedded - insert sequences if requested. - - - To prevent the usage of unsafe code, this stub does not support inserting values in the formatted message. - - - - - If the function succeeds, the return value is the number of TCHARs stored in the output - buffer, excluding the terminating null character. - - - If the function fails, the return value is zero. To get extended error information, - call . - - - - - - Gets the number of the native error. - - - The number of the native error. - - - - Gets the number of the native error. - - - - - - Gets the message of the native error. - - - The message of the native error. - - - - - Gets the message of the native error. - - - - - An always empty . - - - - A singleton implementation of the over a collection - that is empty and not modifiable. - - - Nicko Cadell - Gert Driesen - - - - Initializes a new instance of the class. - - - - Uses a private access modifier to enforce the singleton pattern. - - - - - - Test if the enumerator can advance, if so advance. - - false as the cannot advance. - - - As the enumerator is over an empty collection its - value cannot be moved over a valid position, therefore - will always return false. - - - - - - Resets the enumerator back to the start. - - - - As the enumerator is over an empty collection does nothing. - - - - - - The singleton instance of the . - - - - - Gets the singleton instance of the . - - The singleton instance of the . - - - Gets the singleton instance of the . - - - - - - Gets the current object from the enumerator. - - - Throws an because the - never has a current value. - - - - As the enumerator is over an empty collection its - value cannot be moved over a valid position, therefore - will throw an . - - - The collection is empty and - cannot be positioned over a valid location. - - - - Gets the current key from the enumerator. - - - Throws an exception because the - never has a current value. - - - - As the enumerator is over an empty collection its - value cannot be moved over a valid position, therefore - will throw an . - - - The collection is empty and - cannot be positioned over a valid location. - - - - Gets the current value from the enumerator. - - The current value from the enumerator. - - Throws an because the - never has a current value. - - - - As the enumerator is over an empty collection its - value cannot be moved over a valid position, therefore - will throw an . - - - The collection is empty and - cannot be positioned over a valid location. - - - - Gets the current entry from the enumerator. - - - Throws an because the - never has a current entry. - - - - As the enumerator is over an empty collection its - value cannot be moved over a valid position, therefore - will throw an . - - - The collection is empty and - cannot be positioned over a valid location. - - - - An always empty . - - - - A singleton implementation of the over a collection - that is empty and not modifiable. - - - Nicko Cadell - Gert Driesen - - - - Initializes a new instance of the class. - - - - Uses a private access modifier to enforce the singleton pattern. - - - - - - Test if the enumerator can advance, if so advance - - false as the cannot advance. - - - As the enumerator is over an empty collection its - value cannot be moved over a valid position, therefore - will always return false. - - - - - - Resets the enumerator back to the start. - - - - As the enumerator is over an empty collection does nothing. - - - - - - The singleton instance of the . - - - - - Get the singleton instance of the . - - The singleton instance of the . - - - Gets the singleton instance of the . - - - - - - Gets the current object from the enumerator. - - - Throws an because the - never has a current value. - - - - As the enumerator is over an empty collection its - value cannot be moved over a valid position, therefore - will throw an . - - - The collection is empty and - cannot be positioned over a valid location. - - - - A SecurityContext used when a SecurityContext is not required - - - - The is a no-op implementation of the - base class. It is used where a - is required but one has not been provided. - - - Nicko Cadell - - - - Singleton instance of - - - - Singleton instance of - - - - - - Private constructor - - - - Private constructor for singleton pattern. - - - - - - Impersonate this SecurityContext - - State supplied by the caller - null - - - No impersonation is done and null is always returned. - - - - - - Implements log4net's default error handling policy which consists - of emitting a message for the first error in an appender and - ignoring all subsequent errors. - - - - The error message is printed on the standard error output stream. - - - This policy aims at protecting an otherwise working application - from being flooded with error messages when logging fails. - - - Nicko Cadell - Gert Driesen - - - - Default Constructor - - - - Initializes a new instance of the class. - - - - - - Constructor - - The prefix to use for each message. - - - Initializes a new instance of the class - with the specified prefix. - - - - - - Log an Error - - The error message. - The exception. - The internal error code. - - - Prints the message and the stack trace of the exception on the standard - error output stream. - - - - - - Log an Error - - The error message. - The exception. - - - Prints the message and the stack trace of the exception on the standard - error output stream. - - - - - - Log an error - - The error message. - - - Print a the error message passed as parameter on the standard - error output stream. - - - - - - Flag to indicate if it is the first error - - - - - String to prefix each message with - - - - - Is error logging enabled - - - - Is error logging enabled. Logging is only enabled for the - first error delivered to the . - - - - - - A convenience class to convert property values to specific types. - - - - Utility functions for converting types and parsing values. - - - Nicko Cadell - Gert Driesen - - - - Initializes a new instance of the class. - - - - Uses a private access modifier to prevent instantiation of this class. - - - - - - Converts a string to a value. - - String to convert. - The default value. - The value of . - - - If is "true", then true is returned. - If is "false", then false is returned. - Otherwise, is returned. - - - - - - Parses a file size into a number. - - String to parse. - The default value. - The value of . - - - Parses a file size of the form: number[KB|MB|GB] into a - long value. It is scaled with the appropriate multiplier. - - - is returned when - cannot be converted to a value. - - - - - - Converts a string to an object. - - The target type to convert to. - The string to convert to an object. - - The object converted from a string or null when the - conversion failed. - - - - Converts a string to an object. Uses the converter registry to try - to convert the string value into the specified target type. - - - - - - Checks if there is an appropriate type conversion from the source type to the target type. - - The type to convert from. - The type to convert to. - true if there is a conversion from the source type to the target type. - - Checks if there is an appropriate type conversion from the source type to the target type. - - - - - - - Converts an object to the target type. - - The object to convert to the target type. - The type to convert to. - The converted object. - - - Converts an object to the target type. - - - - - - Instantiates an object given a class name. - - The fully qualified class name of the object to instantiate. - The class to which the new object should belong. - The object to return in case of non-fulfillment. - - An instance of the or - if the object could not be instantiated. - - - - Checks that the is a subclass of - . If that test fails or the object could - not be instantiated, then is returned. - - - - - - Performs variable substitution in string from the - values of keys found in . - - The string on which variable substitution is performed. - The dictionary to use to lookup variables. - The result of the substitutions. - - - The variable substitution delimiters are ${ and }. - - - For example, if props contains key=value, then the call - - - - string s = OptionConverter.SubstituteVariables("Value of key is ${key}."); - - - - will set the variable s to "Value of key is value.". - - - If no value could be found for the specified key, then substitution - defaults to an empty string. - - - For example, if system properties contains no value for the key - "nonExistentKey", then the call - - - - string s = OptionConverter.SubstituteVariables("Value of nonExistentKey is [${nonExistentKey}]"); - - - - will set s to "Value of nonExistentKey is []". - - - An Exception is thrown if contains a start - delimiter "${" which is not balanced by a stop delimiter "}". - - - - - - Converts the string representation of the name or numeric value of one or - more enumerated constants to an equivalent enumerated object. - - The type to convert to. - The enum string value. - If true, ignore case; otherwise, regard case. - An object of type whose value is represented by . - - - - Most of the work of the class - is delegated to the PatternParser class. - - - - The PatternParser processes a pattern string and - returns a chain of objects. - - - Nicko Cadell - Gert Driesen - - - - Constructor - - The pattern to parse. - - - Initializes a new instance of the class - with the specified pattern string. - - - - - - Parses the pattern into a chain of pattern converters. - - The head of a chain of pattern converters. - - - Parses the pattern into a chain of pattern converters. - - - - - - Build the unified cache of converters from the static and instance maps - - the list of all the converter names - - - Build the unified cache of converters from the static and instance maps - - - - - - Internal method to parse the specified pattern to find specified matches - - the pattern to parse - the converter names to match in the pattern - - - The matches param must be sorted such that longer strings come before shorter ones. - - - - - - Process a parsed literal - - the literal text - - - - Process a parsed converter pattern - - the name of the converter - the optional option for the converter - the formatting info for the converter - - - - Resets the internal state of the parser and adds the specified pattern converter - to the chain. - - The pattern converter to add. - - - - The first pattern converter in the chain - - - - - the last pattern converter in the chain - - - - - The pattern - - - - - Internal map of converter identifiers to converter types - - - - This map overrides the static s_globalRulesRegistry map. - - - - - - Get the converter registry used by this parser - - - The converter registry used by this parser - - - - Get the converter registry used by this parser - - - - - - Sort strings by length - - - - that orders strings by string length. - The longest strings are placed first - - - - - - This class implements a patterned string. - - - - This string has embedded patterns that are resolved and expanded - when the string is formatted. - - - This class functions similarly to the - in that it accepts a pattern and renders it to a string. Unlike the - however the PatternString - does not render the properties of a specific but - of the process in general. - - - The recognized conversion pattern names are: - - - - Conversion Pattern Name - Effect - - - appdomain - - - Used to output the friendly name of the current AppDomain. - - - - - date - - - Used to output the date of the logging event in the local time zone. - To output the date in universal time use the %utcdate pattern. - The date conversion - specifier may be followed by a date format specifier enclosed - between braces. For example, %date{HH:mm:ss,fff} or - %date{dd MMM yyyy HH:mm:ss,fff}. If no date format specifier is - given then ISO8601 format is - assumed (). - - - The date format specifier admits the same syntax as the - time pattern string of the . - - - For better results it is recommended to use the log4net date - formatters. These can be specified using one of the strings - "ABSOLUTE", "DATE" and "ISO8601" for specifying - , - and respectively - . For example, - %date{ISO8601} or %date{ABSOLUTE}. - - - These dedicated date formatters perform significantly - better than . - - - - - env - - - Used to output the a specific environment variable. The key to - lookup must be specified within braces and directly following the - pattern specifier, e.g. %env{COMPUTERNAME} would include the value - of the COMPUTERNAME environment variable. - - - The env pattern is not supported on the .NET Compact Framework. - - - - - identity - - - Used to output the user name for the currently active user - (Principal.Identity.Name). - - - - - newline - - - Outputs the platform dependent line separator character or - characters. - - - This conversion pattern name offers the same performance as using - non-portable line separator strings such as "\n", or "\r\n". - Thus, it is the preferred way of specifying a line separator. - - - - - processid - - - Used to output the system process ID for the current process. - - - - - property - - - Used to output a specific context property. The key to - lookup must be specified within braces and directly following the - pattern specifier, e.g. %property{user} would include the value - from the property that is keyed by the string 'user'. Each property value - that is to be included in the log must be specified separately. - Properties are stored in logging contexts. By default - the log4net:HostName property is set to the name of machine on - which the event was originally logged. - - - If no key is specified, e.g. %property then all the keys and their - values are printed in a comma separated list. - - - The properties of an event are combined from a number of different - contexts. These are listed below in the order in which they are searched. - - - - the thread properties - - The that are set on the current - thread. These properties are shared by all events logged on this thread. - - - - the global properties - - The that are set globally. These - properties are shared by all the threads in the AppDomain. - - - - - - - random - - - Used to output a random string of characters. The string is made up of - uppercase letters and numbers. By default the string is 4 characters long. - The length of the string can be specified within braces directly following the - pattern specifier, e.g. %random{8} would output an 8 character string. - - - - - username - - - Used to output the WindowsIdentity for the currently - active user. - - - - - utcdate - - - Used to output the date of the logging event in universal time. - The date conversion - specifier may be followed by a date format specifier enclosed - between braces. For example, %utcdate{HH:mm:ss,fff} or - %utcdate{dd MMM yyyy HH:mm:ss,fff}. If no date format specifier is - given then ISO8601 format is - assumed (). - - - The date format specifier admits the same syntax as the - time pattern string of the . - - - For better results it is recommended to use the log4net date - formatters. These can be specified using one of the strings - "ABSOLUTE", "DATE" and "ISO8601" for specifying - , - and respectively - . For example, - %utcdate{ISO8601} or %utcdate{ABSOLUTE}. - - - These dedicated date formatters perform significantly - better than . - - - - - % - - - The sequence %% outputs a single percent sign. - - - - - - Additional pattern converters may be registered with a specific - instance using or - . - - - See the for details on the - format modifiers supported by the patterns. - - - Nicko Cadell - - - - Internal map of converter identifiers to converter types. - - - - - the pattern - - - - - the head of the pattern converter chain - - - - - patterns defined on this PatternString only - - - - - Initialize the global registry - - - - - Default constructor - - - - Initialize a new instance of - - - - - - Constructs a PatternString - - The pattern to use with this PatternString - - - Initialize a new instance of with the pattern specified. - - - - - - Initialize object options - - - - This is part of the delayed object - activation scheme. The method must - be called on this object after the configuration properties have - been set. Until is called this - object is in an undefined state and must not be used. - - - If any of the configuration properties are modified then - must be called again. - - - - - - Create the used to parse the pattern - - the pattern to parse - The - - - Returns PatternParser used to parse the conversion string. Subclasses - may override this to return a subclass of PatternParser which recognize - custom conversion pattern name. - - - - - - Produces a formatted string as specified by the conversion pattern. - - The TextWriter to write the formatted event to - - - Format the pattern to the . - - - - - - Format the pattern as a string - - the pattern formatted as a string - - - Format the pattern to a string. - - - - - - Add a converter to this PatternString - - the converter info - - - This version of the method is used by the configurator. - Programmatic users should use the alternative method. - - - - - - Add a converter to this PatternString - - the name of the conversion pattern for this converter - the type of the converter - - - Add a converter to this PatternString - - - - - - Gets or sets the pattern formatting string - - - The pattern formatting string - - - - The ConversionPattern option. This is the string which - controls formatting and consists of a mix of literal content and - conversion specifiers. - - - - - - Wrapper class used to map converter names to converter types - - - - Wrapper class used to map converter names to converter types - - - - - - default constructor - - - - - Gets or sets the name of the conversion pattern - - - The name of the conversion pattern - - - - Gets or sets the name of the conversion pattern - - - - - - Gets or sets the type of the converter - - - The type of the converter - - - - Gets or sets the type of the converter - - - - - - String keyed object map. - - - - While this collection is serializable only member - objects that are serializable will - be serialized along with this collection. - - - Nicko Cadell - Gert Driesen - - - - String keyed object map that is read only. - - - - This collection is readonly and cannot be modified. - - - While this collection is serializable only member - objects that are serializable will - be serialized along with this collection. - - - Nicko Cadell - Gert Driesen - - - - The Hashtable used to store the properties data - - - - - Constructor - - - - Initializes a new instance of the class. - - - - - - Copy Constructor - - properties to copy - - - Initializes a new instance of the class. - - - - - - Deserialization constructor - - The that holds the serialized object data. - The that contains contextual information about the source or destination. - - - Initializes a new instance of the class - with serialized data. - - - - - - Gets the key names. - - An array of all the keys. - - - Gets the key names. - - - - - - Test if the dictionary contains a specified key - - the key to look for - true if the dictionary contains the specified key - - - Test if the dictionary contains a specified key - - - - - - Serializes this object into the provided. - - The to populate with data. - The destination for this serialization. - - - Serializes this object into the provided. - - - - - - See - - - - - See - - - - - - See - - - - - - - Remove all properties from the properties collection - - - - - See - - - - - - - See - - - - - - - See - - - - - Gets or sets the value of the property with the specified key. - - - The value of the property with the specified key. - - The key of the property to get or set. - - - The property value will only be serialized if it is serializable. - If it cannot be serialized it will be silently ignored if - a serialization operation is performed. - - - - - - The hashtable used to store the properties - - - The internal collection used to store the properties - - - - The hashtable used to store the properties - - - - - - See - - - - - See - - - - - See - - - - - See - - - - - See - - - - - See - - - - - The number of properties in this collection - - - - - See - - - - - Constructor - - - - Initializes a new instance of the class. - - - - - - Constructor - - properties to copy - - - Initializes a new instance of the class. - - - - - - Initializes a new instance of the class - with serialized data. - - The that holds the serialized object data. - The that contains contextual information about the source or destination. - - - Because this class is sealed the serialization constructor is private. - - - - - - Remove the entry with the specified key from this dictionary - - the key for the entry to remove - - - Remove the entry with the specified key from this dictionary - - - - - - See - - an enumerator - - - Returns a over the contest of this collection. - - - - - - See - - the key to remove - - - Remove the entry with the specified key from this dictionary - - - - - - See - - the key to lookup in the collection - true if the collection contains the specified key - - - Test if this collection contains a specified key. - - - - - - Remove all properties from the properties collection - - - - Remove all properties from the properties collection - - - - - - See - - the key - the value to store for the key - - - Store a value for the specified . - - - Thrown if the is not a string - - - - See - - - - - - - See - - - - - Gets or sets the value of the property with the specified key. - - - The value of the property with the specified key. - - The key of the property to get or set. - - - The property value will only be serialized if it is serializable. - If it cannot be serialized it will be silently ignored if - a serialization operation is performed. - - - - - - See - - - false - - - - This collection is modifiable. This property always - returns false. - - - - - - See - - - The value for the key specified. - - - - Get or set a value for the specified . - - - Thrown if the is not a string - - - - See - - - - - See - - - - - See - - - - - See - - - - - See - - - - - A that ignores the message - - - - This writer is used in special cases where it is necessary - to protect a writer from being closed by a client. - - - Nicko Cadell - - - - Constructor - - the writer to actually write to - - - Create a new ProtectCloseTextWriter using a writer - - - - - - Attach this instance to a different underlying - - the writer to attach to - - - Attach this instance to a different underlying - - - - - - Does not close the underlying output writer. - - - - Does not close the underlying output writer. - This method does nothing. - - - - - - Defines a lock that supports single writers and multiple readers - - - - ReaderWriterLock is used to synchronize access to a resource. - At any given time, it allows either concurrent read access for - multiple threads, or write access for a single thread. In a - situation where a resource is changed infrequently, a - ReaderWriterLock provides better throughput than a simple - one-at-a-time lock, such as . - - - If a platform does not support a System.Threading.ReaderWriterLock - implementation then all readers and writers are serialized. Therefore - the caller must not rely on multiple simultaneous readers. - - - Nicko Cadell - - - - Constructor - - - - Initializes a new instance of the class. - - - - - - Acquires a reader lock - - - - blocks if a different thread has the writer - lock, or if at least one thread is waiting for the writer lock. - - - - - - Decrements the lock count - - - - decrements the lock count. When the count - reaches zero, the lock is released. - - - - - - Acquires the writer lock - - - - This method blocks if another thread has a reader lock or writer lock. - - - - - - Decrements the lock count on the writer lock - - - - ReleaseWriterLock decrements the writer lock count. - When the count reaches zero, the writer lock is released. - - - - - - A that can be and reused - - - - A that can be and reused. - This uses a single buffer for string operations. - - - Nicko Cadell - - - - Create an instance of - - the format provider to use - - - Create an instance of - - - - - - Override Dispose to prevent closing of writer - - flag - - - Override Dispose to prevent closing of writer - - - - - - Reset this string writer so that it can be reused. - - the maximum buffer capacity before it is trimmed - the default size to make the buffer - - - Reset this string writer so that it can be reused. - The internal buffers are cleared and reset. - - - - - - Utility class for system specific information. - - - - Utility class of static methods for system specific information. - - - Nicko Cadell - Gert Driesen - Alexey Solofnenko - - - - Private constructor to prevent instances. - - - - Only static methods are exposed from this type. - - - - - - Initialize default values for private static fields. - - - - Only static methods are exposed from this type. - - - - - - Gets the assembly location path for the specified assembly. - - The assembly to get the location for. - The location of the assembly. - - - This method does not guarantee to return the correct path - to the assembly. If only tries to give an indication as to - where the assembly was loaded from. - - - - - - Gets the fully qualified name of the , including - the name of the assembly from which the was - loaded. - - The to get the fully qualified name for. - The fully qualified name for the . - - - This is equivalent to the Type.AssemblyQualifiedName property, - but this method works on the .NET Compact Framework 1.0 as well as - the full .NET runtime. - - - - - - Gets the short name of the . - - The to get the name for. - The short name of the . - - - The short name of the assembly is the - without the version, culture, or public key. i.e. it is just the - assembly's file name without the extension. - - - Use this rather than Assembly.GetName().Name because that - is not available on the Compact Framework. - - - Because of a FileIOPermission security demand we cannot do - the obvious Assembly.GetName().Name. We are allowed to get - the of the assembly so we - start from there and strip out just the assembly name. - - - - - - Gets the file name portion of the , including the extension. - - The to get the file name for. - The file name of the assembly. - - - Gets the file name portion of the , including the extension. - - - - - - Loads the type specified in the type string. - - A sibling type to use to load the type. - The name of the type to load. - Flag set to true to throw an exception if the type cannot be loaded. - true to ignore the case of the type name; otherwise, false - The type loaded or null if it could not be loaded. - - - If the type name is fully qualified, i.e. if contains an assembly name in - the type name, the type will be loaded from the system using - . - - - If the type name is not fully qualified, it will be loaded from the assembly - containing the specified relative type. If the type is not found in the assembly - then all the loaded assemblies will be searched for the type. - - - - - - Loads the type specified in the type string. - - The name of the type to load. - Flag set to true to throw an exception if the type cannot be loaded. - true to ignore the case of the type name; otherwise, false - The type loaded or null if it could not be loaded. - - - If the type name is fully qualified, i.e. if contains an assembly name in - the type name, the type will be loaded from the system using - . - - - If the type name is not fully qualified it will be loaded from the - assembly that is directly calling this method. If the type is not found - in the assembly then all the loaded assemblies will be searched for the type. - - - - - - Loads the type specified in the type string. - - An assembly to load the type from. - The name of the type to load. - Flag set to true to throw an exception if the type cannot be loaded. - true to ignore the case of the type name; otherwise, false - The type loaded or null if it could not be loaded. - - - If the type name is fully qualified, i.e. if contains an assembly name in - the type name, the type will be loaded from the system using - . - - - If the type name is not fully qualified it will be loaded from the specified - assembly. If the type is not found in the assembly then all the loaded assemblies - will be searched for the type. - - - - - - Generate a new guid - - A new Guid - - - Generate a new guid - - - - - - Create an - - The name of the parameter that caused the exception - The value of the argument that causes this exception - The message that describes the error - the ArgumentOutOfRangeException object - - - Create a new instance of the class - with a specified error message, the parameter name, and the value - of the argument. - - - The Compact Framework does not support the 3 parameter constructor for the - type. This method provides an - implementation that works for all platforms. - - - - - - Parse a string into an value - - the string to parse - out param where the parsed value is placed - true if the string was able to be parsed into an integer - - - Attempts to parse the string into an integer. If the string cannot - be parsed then this method returns false. The method does not throw an exception. - - - - - - Parse a string into an value - - the string to parse - out param where the parsed value is placed - true if the string was able to be parsed into an integer - - - Attempts to parse the string into an integer. If the string cannot - be parsed then this method returns false. The method does not throw an exception. - - - - - - Lookup an application setting - - the application settings key to lookup - the value for the key, or null - - - Configuration APIs are not supported under the Compact Framework - - - - - - Convert a path into a fully qualified local file path. - - The path to convert. - The fully qualified path. - - - Converts the path specified to a fully - qualified path. If the path is relative it is - taken as relative from the application base - directory. - - - The path specified must be a local file path, a URI is not supported. - - - - - - Creates a new case-insensitive instance of the class with the default initial capacity. - - A new case-insensitive instance of the class with the default initial capacity - - - The new Hashtable instance uses the default load factor, the CaseInsensitiveHashCodeProvider, and the CaseInsensitiveComparer. - - - - - - Gets an empty array of types. - - - - The Type.EmptyTypes field is not available on - the .NET Compact Framework 1.0. - - - - - - Cache the host name for the current machine - - - - - Cache the application friendly name - - - - - Text to output when a null is encountered. - - - - - Text to output when an unsupported feature is requested. - - - - - Start time for the current process. - - - - - Gets the system dependent line terminator. - - - The system dependent line terminator. - - - - Gets the system dependent line terminator. - - - - - - Gets the base directory for this . - - The base directory path for the current . - - - Gets the base directory for this . - - - The value returned may be either a local file path or a URI. - - - - - - Gets the path to the configuration file for the current . - - The path to the configuration file for the current . - - - The .NET Compact Framework 1.0 does not have a concept of a configuration - file. For this runtime, we use the entry assembly location as the root for - the configuration file name. - - - The value returned may be either a local file path or a URI. - - - - - - Gets the path to the file that first executed in the current . - - The path to the entry assembly. - - - Gets the path to the file that first executed in the current . - - - - - - Gets the ID of the current thread. - - The ID of the current thread. - - - On the .NET framework, the AppDomain.GetCurrentThreadId method - is used to obtain the thread ID for the current thread. This is the - operating system ID for the thread. - - - On the .NET Compact Framework 1.0 it is not possible to get the - operating system thread ID for the current thread. The native method - GetCurrentThreadId is implemented inline in a header file - and cannot be called. - - - On the .NET Framework 2.0 the Thread.ManagedThreadId is used as this - gives a stable id unrelated to the operating system thread ID which may - change if the runtime is using fibers. - - - - - - Get the host name or machine name for the current machine - - - The hostname or machine name - - - - Get the host name or machine name for the current machine - - - The host name () or - the machine name (Environment.MachineName) for - the current machine, or if neither of these are available - then NOT AVAILABLE is returned. - - - - - - Get this application's friendly name - - - The friendly name of this application as a string - - - - If available the name of the application is retrieved from - the AppDomain using AppDomain.CurrentDomain.FriendlyName. - - - Otherwise the file name of the entry assembly is used. - - - - - - Get the start time for the current process. - - - - This is the time at which the log4net library was loaded into the - AppDomain. Due to reports of a hang in the call to System.Diagnostics.Process.StartTime - this is not the start time for the current process. - - - The log4net library should be loaded by an application early during its - startup, therefore this start time should be a good approximation for - the actual start time. - - - Note that AppDomains may be loaded and unloaded within the - same process without the process terminating, however this start time - will be set per AppDomain. - - - - - - Text to output when a null is encountered. - - - - Use this value to indicate a null has been encountered while - outputting a string representation of an item. - - - The default value is (null). This value can be overridden by specifying - a value for the log4net.NullText appSetting in the application's - .config file. - - - - - - Text to output when an unsupported feature is requested. - - - - Use this value when an unsupported feature is requested. - - - The default value is NOT AVAILABLE. This value can be overridden by specifying - a value for the log4net.NotAvailableText appSetting in the application's - .config file. - - - - - - Utility class that represents a format string. - - - - Utility class that represents a format string. - - - Nicko Cadell - - - - Initialise the - - An that supplies culture-specific formatting information. - A containing zero or more format items. - An array containing zero or more objects to format. - - - - Format the string and arguments - - the formatted string - - - - Replaces the format item in a specified with the text equivalent - of the value of a corresponding instance in a specified array. - A specified parameter supplies culture-specific formatting information. - - An that supplies culture-specific formatting information. - A containing zero or more format items. - An array containing zero or more objects to format. - - A copy of format in which the format items have been replaced by the - equivalent of the corresponding instances of in args. - - - - This method does not throw exceptions. If an exception thrown while formatting the result the - exception and arguments are returned in the result string. - - - - - - Process an error during StringFormat - - - - - Dump the contents of an array into a string builder - - - - - Dump an object to a string - - - - - Implementation of Properties collection for the - - - - Class implements a collection of properties that is specific to each thread. - The class is not synchronized as each thread has its own . - - - Nicko Cadell - - - - The thread local data slot to use to store a PropertiesDictionary. - - - - - Internal constructor - - - - Initializes a new instance of the class. - - - - - - Remove a property - - the key for the entry to remove - - - Remove a property - - - - - - Clear all properties - - - - Clear all properties - - - - - - Get the PropertiesDictionary for this thread. - - create the dictionary if it does not exist, otherwise return null if is does not exist - the properties for this thread - - - The collection returned is only to be used on the calling thread. If the - caller needs to share the collection between different threads then the - caller must clone the collection before doing so. - - - - - - Gets or sets the value of a property - - - The value for the property with the specified key - - - - Gets or sets the value of a property - - - - - - Implementation of Stack for the - - - - Implementation of Stack for the - - - Nicko Cadell - - - - The stack store. - - - - - Internal constructor - - - - Initializes a new instance of the class. - - - - - - Clears all the contextual information held in this stack. - - - - Clears all the contextual information held in this stack. - Only call this if you think that this tread is being reused after - a previous call execution which may not have completed correctly. - You do not need to use this method if you always guarantee to call - the method of the - returned from even in exceptional circumstances, - for example by using the using(log4net.ThreadContext.Stacks["NDC"].Push("Stack_Message")) - syntax. - - - - - - Removes the top context from this stack. - - The message in the context that was removed from the top of this stack. - - - Remove the top context from this stack, and return - it to the caller. If this stack is empty then an - empty string (not ) is returned. - - - - - - Pushes a new context message into this stack. - - The new context message. - - An that can be used to clean up the context stack. - - - - Pushes a new context onto this stack. An - is returned that can be used to clean up this stack. This - can be easily combined with the using keyword to scope the - context. - - - Simple example of using the Push method with the using keyword. - - using(log4net.ThreadContext.Stacks["NDC"].Push("Stack_Message")) - { - log.Warn("This should have an ThreadContext Stack message"); - } - - - - - - Gets the current context information for this stack. - - The current context information. - - - - Gets the current context information for this stack. - - Gets the current context information - - - Gets the current context information for this stack. - - - - - - Get a portable version of this object - - the portable instance of this object - - - Get a cross thread portable version of this object - - - - - - The number of messages in the stack - - - The current number of messages in the stack - - - - The current number of messages in the stack. That is - the number of times has been called - minus the number of times has been called. - - - - - - Gets and sets the internal stack used by this - - The internal storage stack - - - This property is provided only to support backward compatability - of the . Tytpically the internal stack should not - be modified. - - - - - - Inner class used to represent a single context frame in the stack. - - - - Inner class used to represent a single context frame in the stack. - - - - - - Constructor - - The message for this context. - The parent context in the chain. - - - Initializes a new instance of the class - with the specified message and parent context. - - - - - - Get the message. - - The message. - - - Get the message. - - - - - - Gets the full text of the context down to the root level. - - - The full text of the context down to the root level. - - - - Gets the full text of the context down to the root level. - - - - - - Struct returned from the method. - - - - This struct implements the and is designed to be used - with the pattern to remove the stack frame at the end of the scope. - - - - - - The ThreadContextStack internal stack - - - - - The depth to trim the stack to when this instance is disposed - - - - - Constructor - - The internal stack used by the ThreadContextStack. - The depth to return the stack to when this object is disposed. - - - Initializes a new instance of the class with - the specified stack and return depth. - - - - - - Returns the stack to the correct depth. - - - - Returns the stack to the correct depth. - - - - - - Implementation of Stacks collection for the - - - - Implementation of Stacks collection for the - - - Nicko Cadell - - - - Internal constructor - - - - Initializes a new instance of the class. - - - - - - Gets the named thread context stack - - - The named stack - - - - Gets the named thread context stack - - - - - - Utility class for transforming strings. - - - - Utility class for transforming strings. - - - Nicko Cadell - Gert Driesen - - - - Initializes a new instance of the class. - - - - Uses a private access modifier to prevent instantiation of this class. - - - - - - Write a string to an - - the writer to write to - the string to write - The string to replace non XML compliant chars with - - - The test is escaped either using XML escape entities - or using CDATA sections. - - - - - - Replace invalid XML characters in text string - - the XML text input string - the string to use in place of invalid characters - A string that does not contain invalid XML characters. - - - Certain Unicode code points are not allowed in the XML InfoSet, for - details see: http://www.w3.org/TR/REC-xml/#charsets. - - - This method replaces any illegal characters in the input string - with the mask string specified. - - - - - - Count the number of times that the substring occurs in the text - - the text to search - the substring to find - the number of times the substring occurs in the text - - - The substring is assumed to be non repeating within itself. - - - - - - Impersonate a Windows Account - - - - This impersonates a Windows account. - - - How the impersonation is done depends on the value of . - This allows the context to either impersonate a set of user credentials specified - using username, domain name and password or to revert to the process credentials. - - - - - - Default constructor - - - - Default constructor - - - - - - Initialize the SecurityContext based on the options set. - - - - This is part of the delayed object - activation scheme. The method must - be called on this object after the configuration properties have - been set. Until is called this - object is in an undefined state and must not be used. - - - If any of the configuration properties are modified then - must be called again. - - - The security context will try to Logon the specified user account and - capture a primary token for impersonation. - - - The required , - or properties were not specified. - - - - Impersonate the Windows account specified by the and properties. - - caller provided state - - An instance that will revoke the impersonation of this SecurityContext - - - - Depending on the property either - impersonate a user using credentials supplied or revert - to the process credentials. - - - - - - Create a given the userName, domainName and password. - - the user name - the domain name - the password - the for the account specified - - - Uses the Windows API call LogonUser to get a principal token for the account. This - token is used to initialize the WindowsIdentity. - - - - - - Gets or sets the impersonation mode for this security context - - - The impersonation mode for this security context - - - - Impersonate either a user with user credentials or - revert this thread to the credentials of the process. - The value is one of the - enum. - - - The default value is - - - When the mode is set to - the user's credentials are established using the - , and - values. - - - When the mode is set to - no other properties need to be set. If the calling thread is - impersonating then it will be reverted back to the process credentials. - - - - - - Gets or sets the Windows username for this security context - - - The Windows username for this security context - - - - This property must be set if - is set to (the default setting). - - - - - - Gets or sets the Windows domain name for this security context - - - The Windows domain name for this security context - - - - The default value for is the local machine name - taken from the property. - - - This property must be set if - is set to (the default setting). - - - - - - Sets the password for the Windows account specified by the and properties. - - - The password for the Windows account specified by the and properties. - - - - This property must be set if - is set to (the default setting). - - - - - - The impersonation modes for the - - - - See the property for - details. - - - - - - Impersonate a user using the credentials supplied - - - - - Revert this the thread to the credentials of the process - - - - - Adds to - - - - Helper class to expose the - through the interface. - - - - - - Constructor - - the impersonation context being wrapped - - - Constructor - - - - - - Revert the impersonation - - - - Revert the impersonation - - - - - - The log4net Global Context. - - - - The GlobalContext provides a location for global debugging - information to be stored. - - - The global context has a properties map and these properties can - be included in the output of log messages. The - supports selecting and outputing these properties. - - - By default the log4net:HostName property is set to the name of - the current machine. - - - - - GlobalContext.Properties["hostname"] = Environment.MachineName; - - - - Nicko Cadell - - - - Private Constructor. - - - Uses a private access modifier to prevent instantiation of this class. - - - - - The global context properties instance - - - - - The global properties map. - - - The global properties map. - - - - The global properties map. - - - - - - The log4net Logical Thread Context. - - - - The LogicalThreadContext provides a location for specific debugging - information to be stored. - The LogicalThreadContext properties override any or - properties with the same name. - - - The Logical Thread Context has a properties map and a stack. - The properties and stack can - be included in the output of log messages. The - supports selecting and outputting these properties. - - - The Logical Thread Context provides a diagnostic context for the current call context. - This is an instrument for distinguishing interleaved log - output from different sources. Log output is typically interleaved - when a server handles multiple clients near-simultaneously. - - - The Logical Thread Context is managed on a per basis. - - - Example of using the thread context properties to store a username. - - LogicalThreadContext.Properties["user"] = userName; - log.Info("This log message has a LogicalThreadContext Property called 'user'"); - - - Example of how to push a message into the context stack - - using(LogicalThreadContext.Stacks["LDC"].Push("my context message")) - { - log.Info("This log message has a LogicalThreadContext Stack message that includes 'my context message'"); - - } // at the end of the using block the message is automatically popped - - - - Nicko Cadell - - - - Private Constructor. - - - - Uses a private access modifier to prevent instantiation of this class. - - - - - - The thread context properties instance - - - - - The thread context stacks instance - - - - - The thread properties map - - - The thread properties map - - - - The LogicalThreadContext properties override any - or properties with the same name. - - - - - - The thread stacks - - - stack map - - - - The logical thread stacks. - - - - - - This class is used by client applications to request logger instances. - - - - This class has static methods that are used by a client to request - a logger instance. The method is - used to retrieve a logger. - - - See the interface for more details. - - - Simple example of logging messages - - ILog log = LogManager.GetLogger("application-log"); - - log.Info("Application Start"); - log.Debug("This is a debug message"); - - if (log.IsDebugEnabled) - { - log.Debug("This is another debug message"); - } - - - - - Nicko Cadell - Gert Driesen - - - - Initializes a new instance of the class. - - - Uses a private access modifier to prevent instantiation of this class. - - - - Returns the named logger if it exists. - - Returns the named logger if it exists. - - - - If the named logger exists (in the default repository) then it - returns a reference to the logger, otherwise it returns null. - - - The fully qualified logger name to look for. - The logger found, or null if no logger could be found. - - - - Returns the named logger if it exists. - - - - If the named logger exists (in the specified repository) then it - returns a reference to the logger, otherwise it returns - null. - - - The repository to lookup in. - The fully qualified logger name to look for. - - The logger found, or null if the logger doesn't exist in the specified - repository. - - - - - Returns the named logger if it exists. - - - - If the named logger exists (in the repository for the specified assembly) then it - returns a reference to the logger, otherwise it returns - null. - - - The assembly to use to lookup the repository. - The fully qualified logger name to look for. - - The logger, or null if the logger doesn't exist in the specified - assembly's repository. - - - - Get the currently defined loggers. - - Returns all the currently defined loggers in the default repository. - - - The root logger is not included in the returned array. - - All the defined loggers. - - - - Returns all the currently defined loggers in the specified repository. - - The repository to lookup in. - - The root logger is not included in the returned array. - - All the defined loggers. - - - - Returns all the currently defined loggers in the specified assembly's repository. - - The assembly to use to lookup the repository. - - The root logger is not included in the returned array. - - All the defined loggers. - - - Get or create a logger. - - Retrieves or creates a named logger. - - - - Retrieves a logger named as the - parameter. If the named logger already exists, then the - existing instance will be returned. Otherwise, a new instance is - created. - - By default, loggers do not have a set level but inherit - it from the hierarchy. This is one of the central features of - log4net. - - - The name of the logger to retrieve. - The logger with the name specified. - - - - Retrieves or creates a named logger. - - - - Retrieve a logger named as the - parameter. If the named logger already exists, then the - existing instance will be returned. Otherwise, a new instance is - created. - - - By default, loggers do not have a set level but inherit - it from the hierarchy. This is one of the central features of - log4net. - - - The repository to lookup in. - The name of the logger to retrieve. - The logger with the name specified. - - - - Retrieves or creates a named logger. - - - - Retrieve a logger named as the - parameter. If the named logger already exists, then the - existing instance will be returned. Otherwise, a new instance is - created. - - - By default, loggers do not have a set level but inherit - it from the hierarchy. This is one of the central features of - log4net. - - - The assembly to use to lookup the repository. - The name of the logger to retrieve. - The logger with the name specified. - - - - Shorthand for . - - - Get the logger for the fully qualified name of the type specified. - - The full name of will be used as the name of the logger to retrieve. - The logger with the name specified. - - - - Shorthand for . - - - Gets the logger for the fully qualified name of the type specified. - - The repository to lookup in. - The full name of will be used as the name of the logger to retrieve. - The logger with the name specified. - - - - Shorthand for . - - - Gets the logger for the fully qualified name of the type specified. - - The assembly to use to lookup the repository. - The full name of will be used as the name of the logger to retrieve. - The logger with the name specified. - - - - Shuts down the log4net system. - - - - Calling this method will safely close and remove all - appenders in all the loggers including root contained in all the - default repositories. - - - Some appenders need to be closed before the application exists. - Otherwise, pending logging events might be lost. - - The shutdown method is careful to close nested - appenders before closing regular appenders. This is allows - configurations where a regular appender is attached to a logger - and again to a nested appender. - - - - - Shutdown a logger repository. - - Shuts down the default repository. - - - - Calling this method will safely close and remove all - appenders in all the loggers including root contained in the - default repository. - - Some appenders need to be closed before the application exists. - Otherwise, pending logging events might be lost. - - The shutdown method is careful to close nested - appenders before closing regular appenders. This is allows - configurations where a regular appender is attached to a logger - and again to a nested appender. - - - - - - Shuts down the repository for the repository specified. - - - - Calling this method will safely close and remove all - appenders in all the loggers including root contained in the - specified. - - - Some appenders need to be closed before the application exists. - Otherwise, pending logging events might be lost. - - The shutdown method is careful to close nested - appenders before closing regular appenders. This is allows - configurations where a regular appender is attached to a logger - and again to a nested appender. - - - The repository to shutdown. - - - - Shuts down the repository specified. - - - - Calling this method will safely close and remove all - appenders in all the loggers including root contained in the - repository. The repository is looked up using - the specified. - - - Some appenders need to be closed before the application exists. - Otherwise, pending logging events might be lost. - - - The shutdown method is careful to close nested - appenders before closing regular appenders. This is allows - configurations where a regular appender is attached to a logger - and again to a nested appender. - - - The assembly to use to lookup the repository. - - - Reset the configuration of a repository - - Resets all values contained in this repository instance to their defaults. - - - - Resets all values contained in the repository instance to their - defaults. This removes all appenders from all loggers, sets - the level of all non-root loggers to null, - sets their additivity flag to true and sets the level - of the root logger to . Moreover, - message disabling is set to its default "off" value. - - - - - - Resets all values contained in this repository instance to their defaults. - - - - Reset all values contained in the repository instance to their - defaults. This removes all appenders from all loggers, sets - the level of all non-root loggers to null, - sets their additivity flag to true and sets the level - of the root logger to . Moreover, - message disabling is set to its default "off" value. - - - The repository to reset. - - - - Resets all values contained in this repository instance to their defaults. - - - - Reset all values contained in the repository instance to their - defaults. This removes all appenders from all loggers, sets - the level of all non-root loggers to null, - sets their additivity flag to true and sets the level - of the root logger to . Moreover, - message disabling is set to its default "off" value. - - - The assembly to use to lookup the repository to reset. - - - Get the logger repository. - - Returns the default instance. - - - - Gets the for the repository specified - by the callers assembly (). - - - The instance for the default repository. - - - - Returns the default instance. - - The default instance. - - - Gets the for the repository specified - by the argument. - - - The repository to lookup in. - - - - Returns the default instance. - - The default instance. - - - Gets the for the repository specified - by the argument. - - - The assembly to use to lookup the repository. - - - Get a logger repository. - - Returns the default instance. - - - - Gets the for the repository specified - by the callers assembly (). - - - The instance for the default repository. - - - - Returns the default instance. - - The default instance. - - - Gets the for the repository specified - by the argument. - - - The repository to lookup in. - - - - Returns the default instance. - - The default instance. - - - Gets the for the repository specified - by the argument. - - - The assembly to use to lookup the repository. - - - Create a domain - - Creates a repository with the specified repository type. - - - - CreateDomain is obsolete. Use CreateRepository instead of CreateDomain. - - - The created will be associated with the repository - specified such that a call to will return - the same repository instance. - - - A that implements - and has a no arg constructor. An instance of this type will be created to act - as the for the repository specified. - The created for the repository. - - - Create a logger repository. - - Creates a repository with the specified repository type. - - A that implements - and has a no arg constructor. An instance of this type will be created to act - as the for the repository specified. - The created for the repository. - - - The created will be associated with the repository - specified such that a call to will return - the same repository instance. - - - - - - Creates a repository with the specified name. - - - - CreateDomain is obsolete. Use CreateRepository instead of CreateDomain. - - - Creates the default type of which is a - object. - - - The name must be unique. Repositories cannot be redefined. - An will be thrown if the repository already exists. - - - The name of the repository, this must be unique amongst repositories. - The created for the repository. - The specified repository already exists. - - - - Creates a repository with the specified name. - - - - Creates the default type of which is a - object. - - - The name must be unique. Repositories cannot be redefined. - An will be thrown if the repository already exists. - - - The name of the repository, this must be unique amongst repositories. - The created for the repository. - The specified repository already exists. - - - - Creates a repository with the specified name and repository type. - - - - CreateDomain is obsolete. Use CreateRepository instead of CreateDomain. - - - The name must be unique. Repositories cannot be redefined. - An will be thrown if the repository already exists. - - - The name of the repository, this must be unique to the repository. - A that implements - and has a no arg constructor. An instance of this type will be created to act - as the for the repository specified. - The created for the repository. - The specified repository already exists. - - - - Creates a repository with the specified name and repository type. - - - - The name must be unique. Repositories cannot be redefined. - An will be thrown if the repository already exists. - - - The name of the repository, this must be unique to the repository. - A that implements - and has a no arg constructor. An instance of this type will be created to act - as the for the repository specified. - The created for the repository. - The specified repository already exists. - - - - Creates a repository for the specified assembly and repository type. - - - - CreateDomain is obsolete. Use CreateRepository instead of CreateDomain. - - - The created will be associated with the repository - specified such that a call to with the - same assembly specified will return the same repository instance. - - - The assembly to use to get the name of the repository. - A that implements - and has a no arg constructor. An instance of this type will be created to act - as the for the repository specified. - The created for the repository. - - - - Creates a repository for the specified assembly and repository type. - - - - The created will be associated with the repository - specified such that a call to with the - same assembly specified will return the same repository instance. - - - The assembly to use to get the name of the repository. - A that implements - and has a no arg constructor. An instance of this type will be created to act - as the for the repository specified. - The created for the repository. - - - - Gets the list of currently defined repositories. - - - - Get an array of all the objects that have been created. - - - An array of all the known objects. - - - - Looks up the wrapper object for the logger specified. - - The logger to get the wrapper for. - The wrapper for the logger specified. - - - - Looks up the wrapper objects for the loggers specified. - - The loggers to get the wrappers for. - The wrapper objects for the loggers specified. - - - - Create the objects used by - this manager. - - The logger to wrap. - The wrapper for the logger specified. - - - - The wrapper map to use to hold the objects. - - - - - Implementation of Mapped Diagnostic Contexts. - - - - - The MDC is deprecated and has been replaced by the . - The current MDC implementation forwards to the ThreadContext.Properties. - - - - The MDC class is similar to the class except that it is - based on a map instead of a stack. It provides mapped - diagnostic contexts. A Mapped Diagnostic Context, or - MDC in short, is an instrument for distinguishing interleaved log - output from different sources. Log output is typically interleaved - when a server handles multiple clients near-simultaneously. - - - The MDC is managed on a per thread basis. - - - - Nicko Cadell - Gert Driesen - - - - Initializes a new instance of the class. - - - Uses a private access modifier to prevent instantiation of this class. - - - - - Gets the context value identified by the parameter. - - The key to lookup in the MDC. - The string value held for the key, or a null reference if no corresponding value is found. - - - - The MDC is deprecated and has been replaced by the . - The current MDC implementation forwards to the ThreadContext.Properties. - - - - If the parameter does not look up to a - previously defined context then null will be returned. - - - - - - Add an entry to the MDC - - The key to store the value under. - The value to store. - - - - The MDC is deprecated and has been replaced by the . - The current MDC implementation forwards to the ThreadContext.Properties. - - - - Puts a context value (the parameter) as identified - with the parameter into the current thread's - context map. - - - If a value is already defined for the - specified then the value will be replaced. If the - is specified as null then the key value mapping will be removed. - - - - - - Removes the key value mapping for the key specified. - - The key to remove. - - - - The MDC is deprecated and has been replaced by the . - The current MDC implementation forwards to the ThreadContext.Properties. - - - - Remove the specified entry from this thread's MDC - - - - - - Clear all entries in the MDC - - - - - The MDC is deprecated and has been replaced by the . - The current MDC implementation forwards to the ThreadContext.Properties. - - - - Remove all the entries from this thread's MDC - - - - - - Implementation of Nested Diagnostic Contexts. - - - - - The NDC is deprecated and has been replaced by the . - The current NDC implementation forwards to the ThreadContext.Stacks["NDC"]. - - - - A Nested Diagnostic Context, or NDC in short, is an instrument - to distinguish interleaved log output from different sources. Log - output is typically interleaved when a server handles multiple - clients near-simultaneously. - - - Interleaved log output can still be meaningful if each log entry - from different contexts had a distinctive stamp. This is where NDCs - come into play. - - - Note that NDCs are managed on a per thread basis. The NDC class - is made up of static methods that operate on the context of the - calling thread. - - - How to push a message into the context - - using(NDC.Push("my context message")) - { - ... all log calls will have 'my context message' included ... - - } // at the end of the using block the message is automatically removed - - - - Nicko Cadell - Gert Driesen - - - - Initializes a new instance of the class. - - - Uses a private access modifier to prevent instantiation of this class. - - - - - Clears all the contextual information held on the current thread. - - - - - The NDC is deprecated and has been replaced by the . - The current NDC implementation forwards to the ThreadContext.Stacks["NDC"]. - - - - Clears the stack of NDC data held on the current thread. - - - - - - Creates a clone of the stack of context information. - - A clone of the context info for this thread. - - - - The NDC is deprecated and has been replaced by the . - The current NDC implementation forwards to the ThreadContext.Stacks["NDC"]. - - - - The results of this method can be passed to the - method to allow child threads to inherit the context of their - parent thread. - - - - - - Inherits the contextual information from another thread. - - The context stack to inherit. - - - - The NDC is deprecated and has been replaced by the . - The current NDC implementation forwards to the ThreadContext.Stacks["NDC"]. - - - - This thread will use the context information from the stack - supplied. This can be used to initialize child threads with - the same contextual information as their parent threads. These - contexts will NOT be shared. Any further contexts that - are pushed onto the stack will not be visible to the other. - Call to obtain a stack to pass to - this method. - - - - - - Removes the top context from the stack. - - - The message in the context that was removed from the top - of the stack. - - - - - The NDC is deprecated and has been replaced by the . - The current NDC implementation forwards to the ThreadContext.Stacks["NDC"]. - - - - Remove the top context from the stack, and return - it to the caller. If the stack is empty then an - empty string (not null) is returned. - - - - - - Pushes a new context message. - - The new context message. - - An that can be used to clean up - the context stack. - - - - - The NDC is deprecated and has been replaced by the . - The current NDC implementation forwards to the ThreadContext.Stacks["NDC"]. - - - - Pushes a new context onto the context stack. An - is returned that can be used to clean up the context stack. This - can be easily combined with the using keyword to scope the - context. - - - Simple example of using the Push method with the using keyword. - - using(log4net.NDC.Push("NDC_Message")) - { - log.Warn("This should have an NDC message"); - } - - - - - - Removes the context information for this thread. It is - not required to call this method. - - - - - The NDC is deprecated and has been replaced by the . - The current NDC implementation forwards to the ThreadContext.Stacks["NDC"]. - - - - This method is not implemented. - - - - - - Forces the stack depth to be at most . - - The maximum depth of the stack - - - - The NDC is deprecated and has been replaced by the . - The current NDC implementation forwards to the ThreadContext.Stacks["NDC"]. - - - - Forces the stack depth to be at most . - This may truncate the head of the stack. This only affects the - stack in the current thread. Also it does not prevent it from - growing, it only sets the maximum depth at the time of the - call. This can be used to return to a known context depth. - - - - - - Gets the current context depth. - - The current context depth. - - - - The NDC is deprecated and has been replaced by the . - The current NDC implementation forwards to the ThreadContext.Stacks["NDC"]. - - - - The number of context values pushed onto the context stack. - - - Used to record the current depth of the context. This can then - be restored using the method. - - - - - - - The log4net Thread Context. - - - - The ThreadContext provides a location for thread specific debugging - information to be stored. - The ThreadContext properties override any - properties with the same name. - - - The thread context has a properties map and a stack. - The properties and stack can - be included in the output of log messages. The - supports selecting and outputting these properties. - - - The Thread Context provides a diagnostic context for the current thread. - This is an instrument for distinguishing interleaved log - output from different sources. Log output is typically interleaved - when a server handles multiple clients near-simultaneously. - - - The Thread Context is managed on a per thread basis. - - - Example of using the thread context properties to store a username. - - ThreadContext.Properties["user"] = userName; - log.Info("This log message has a ThreadContext Property called 'user'"); - - - Example of how to push a message into the context stack - - using(ThreadContext.Stacks["NDC"].Push("my context message")) - { - log.Info("This log message has a ThreadContext Stack message that includes 'my context message'"); - - } // at the end of the using block the message is automatically popped - - - - Nicko Cadell - - - - Private Constructor. - - - - Uses a private access modifier to prevent instantiation of this class. - - - - - - The thread context properties instance - - - - - The thread context stacks instance - - - - - The thread properties map - - - The thread properties map - - - - The ThreadContext properties override any - properties with the same name. - - - - - - The thread stacks - - - stack map - - - - The thread local stacks. - - - - - diff --git a/packages/log4net.1.2.10/log4net.1.2.10.nupkg b/packages/log4net.1.2.10/log4net.1.2.10.nupkg deleted file mode 100644 index 1495fd753f44915b800e68c2b7d22ebe58907fd2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 963871 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όX|~i0WGtWfkhTVL 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

A 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ͯJxx zHD4_$tyVXbXvQbEn##y$NPrKzxf>@hI&VN?IbHy)nWk zaZso-(kp}@1qVse?=2H*KU}fAQPw&gy}4fH9{eX&Rp!}y8y7(FG7gv_h14U_2fK%_ zDYsbFZKM4)2piAqAjLx&_z88741C%WYCn7P)FGe!^;LdB%W(B|UuC`zxHJ9z84d57 zf%K;Ox=P${`Z+;LpVkzm=gV(E-`~K4;}iP_2w~Jb-ny+mCkU(`nrdB7bLI&S?6r%T z(I5OpBMjzck7F6CTj_b}515L7%Z`b6cFO9D z^@0PssvAm#D11Qd#-Hc!ra5N?Z>4JGS4irMs#Rl^&rS`DE_=Nh6f}%cCz{p}HS^k4 zSsfW9nqUzcf|kA^%FgrYTQ+ z1F~(~rxPq;vLu6uo)XUMx{9pLf3SDMiz?h9#Q@}HHc`etUad-6x&(@DY{cd1Sx2+X zs$3lWY&PSp`!c^u&)3T--k`;z_Bx$V&V!p#s{K5N<6dxbKzPf6Vx%Z(@1$Xp%PMwV zU48AmIDh{CHV@F~ zVsdyC{Qm$;zFIFiDg8RHnX+ux!@tg!=au2vf#xl(YAhsM)ROOTTZRsxz{B|f_AUs^ zkB;7SdEotqX;Yr_s+>u9(P$eRyC6-MrP+iMu%W<&KFKYlXDZZsZ>&4iwnzhBMiP-K z;5DTWK^7!4fuF(Vrzp_y!`dn3k1#& zjo>|M-a zJ+uGckdv?PPW>E{_y22x^RwXiZI;AuhWbB}#P>^J`721b6C`O)oq!(5)F>knOio>? zvpnT5Z!HJ6pPetr=@G{#qvcUSJ%$S<9)q0kByX?sd>I0Z;~1NO$Y)=@Z)&qg^6~L( zWQNMYm|3(*;Ob_G>ofk`86C`^;nYKnv&ai5_ zwJ?6;^t`Q_za7B|8u-nQlg(}x8s6JZ!HxbWlT>mYrbC$3+qjJuK@XBcTJ&YGDl5y` zw{>%G&pkbYSuwp0<^JEwG-9m&f66i)XsS;CU&KPO3?3s*diyrS{kh_*+c{Xb<0^vH z+-_bt>TCw5=WB4D1hzLY-8nf&w_&?)f{o*0XGHN?<)dT*w|GquFg8fmKAs*e*YLNd zM;*t%IH#5N9$185>*cIR%ny!-f7Yfs=*xWgLzRKP^Z);T&i@g!+K+#JF>79fU5{Jx zb|>pFNqSqpea<25CIV%Rx7<0o=9Zc1lBRmepM+3vq}`9Wx{KI1&L)zyw4a~p2)_=K znEa>2R$)LJj`-_Lw0*fV&G8QYzdzIb`R(--{tHPLh-yl&!%~IsTS!vMtGiGl0r#W>q$wjF@^Ejx@^-eB5_t1 z7~^0n;hR#!&)!qMn%^Jf-?QYur7V4styWN9@I*Jp3~iUkZXsJY4s!F(z8`MPp?^EKU5aKd8X=f z)cfUczoggeVx}IJ2Tqrr;0pN?d|Msa=O5u6VZu(DjQBd&q20tx1j04_V78%E)22J+ zUp#t!-Pghhea!EM(!vwo8Xd+Gc3=m2BU>4dL+NoFv+#AfkU!7O+W)Ooulx$ZeNnY) z)$-Y?fzf5QH-mD=E}iheG+QpKHm1QkB1xplTaml;4KdCh5H| zr#x*?(p{S)bKaW-OW603`&%2n+e!7AaeX^xAaLqBn(rHMcX(yYy4|MlzV}1RingY{`IGKi+3Wm0;)mc*o1gelX}O(yapN>^W=A*89v_C8@!P6(V-K(9#H6{C z6zK}07pNwumD#_r(H>^wmR#a1e34jj7>?67JjwH{P3wGB!`==AmZ^BZKkF2{*0@pV>X6qL;KMRA!gCB?as(?+Dh zIVz%Wj5)lmlDf6Oaf=lgpM7D;gn>Qwq|anD{8oa*1UHzRvHwp$oTuk8nO z&c@h2P>bW2S>4#xDKJDYs`pHPUw?g2P~TP1ooP4&uaoP1o)skzM>T~geUdeLttu}` z8_;5DmOg#)I-OTdi|P5gyv(2fC_V7ry8dS~Kd^a)D1s>Yr^W1SWj>!1hu>0f{3PBa zD$?{!0i6PR5#!7Kl!!_{KTR_Mt86$kpln;p%E1r&6z1)a`r!DkzAQg6_0m}Of z>sBNB|D03%bs&BH^|2deakIjV%i@n5Rmkn-`J|-IIEFb}68!UwEMu8p=4F~$v^bA# z#GttWCqf@nd{wk_o@YCj+3i(-j=Z66J3t#U{i^oVF`GvF%PML+qqhP)6bzwpVkFd9lnlN_Uvo0`grmCg9tAOz%98R z+Q+!#ARqdU)AMGYzi~+Kp<&#Retgssy{O)zk6SX< z&mz4-vwvGxN^&WhKIur4(?eoSy6Ys2@-2z&yH<{0Z_kQ@e%5X0@QnfK#;{m7>Hu3eE7VoR$nen zgJvsW)#ug41*!AXOXBU@`Y-|t5hneQ(o=9;xKqTt(#dUw-uG2X4;67$a{NkZAJ`jw zo6p8KBpLD6a?NC-d9&zH2B|Fh?GMg9o)Dx+^3f30klE>g@zY9v-9&hoiByt?o!)}L z|1ajN?|uLOMV!?LYh`tvU4uuM$C@88+5hX93^eGBsXy+~H^6j`*oKI?N2fvE-$w=n z<|JSUf3vUPb{>jz6HOV2~<|szXrJa20;<|_~6j+EWVIuF{P2~YG;q{ zVw< z!e3Ij%}j?~m}xIGZOiJZgH*LdJ{KwGV)3<|!EZ!1Y4OT@zCk!|D}V|bD*%>RzYg1z z+h%zp;Cx=rm~GJO@5#j$E;;5|Ng18lwVAlGKv3GISJm=kxGv}yD)k~OmOrOcMk}Ir z%Dz^5lmN&KbUol_3X=`MJ*UwbBQc0wS+HRE#| zFWbH)ugpSRzX8dLc0z)@tXg4^t~8ScxUSY@pDFcJG*e2LiA&&t!S|e-L_E-)pxb%# zC+M2JL3IZ@DE_}e+CRvc_$=AevR%d6XV4Gf%bQKikNETdwfy<)7W}#R{S7+LX%cS9 zkk7lUbu(vu!^j@P<-aAi$0mDW(H&86f@Q*rW|e^Rtb~O41_snw(TWbpe0WcBlMc+dpEBLUfp zihTe1?L))clbyQ0EM}bgpSix9_PQiRF1|NuwHgk1RTHg=>}ra-<5u+EQA@y8GPd73qR6NfpG{=eDjE0VM)C z2&pGtWG;AhacYq981j}g=DSuaPa|Lk+~1mk`QQYMHw-JO_(QTR=S59Y*=BFibw15! zIkN*qx8FJhT#_#8YnC74+&?1>+I)G-N!8ZFvxfvFkvv7lvJ7UzX}DX?u(4{G(R1mS zXzjp!19tCKK3h*U90;wR(YL|;`6C+|&a_&#lyfuQZ=E;mlGH<+US{PwN2;dgFW%A%dA{w`@|&Fx-&lx-LRW@VQadV*%NwkJ>?gfgAY}IG$GCZ zKh@yZ8Qv`?`No;+NzZ!O(#-tCy2#r%G>6}<$%frF2zb4o2=5Z=!`iqDn-nptw*_e! z)^9ZIDewT8umcchxn}g~yU8_z$}56Geo9Zjd^56m#W)H+&3pBK%NgR&ZzqO+)6a=1 z(x-5d^5xf&*c;~LcJm#~u}b#Ym*dFX&Z=B8nPr~6P4joteD$-VK;Mh)ELK?czw*!` z8!sOB@}fyEDw^YJc`@!V;~52^c}5G0v<6Hwra6whu1S>VwCq%}Lt4?-O&qP0swS;? ziWk0(_Kej3xB1A?_js1AZqG^DT9}1kP@bzpv?2Dw`W~t6D@uQJaxsLvAPbpYXdJN& z@&>no{>>|u|E~=6n{>TZP#bI)wp-kbJ1y?+?(Vb{FYZop4ess^MT$#tDUed!-Q8V- z6Ud+U+xtJ+Gy5zDnaL!Rz@)vOtD)MJ|3rs_R(K7f;b6X+}gsbp0EZZ=Oe$P z<9#p6FGwO5wEp+FQ^UyY*JdHrj1Q5QMLn&ctIpg3IVcLce^a-!1bPcS5M)8754ZI?oDSPc1=_R-@@uB11P63$*A`v~#!8_l zV_SEr8jUfWa`yw*#DaO1rj}&l*l8&L>o`u)X*b$wUz0P7cM&pbU$6ph%<|+?7Vj6_ z2FBs#jW-#raRZXgMSK}^t9%GZESvucDjQn2K2Scv=ODq$~@S1}*&>@Up* zAK&ROGSR-G6(qHDq`1dOzVN9k-(=Gt`;A%Mg@3;u>#G8C2oApf`K+r$E1V6F z{SHA=EB^4W7;f(YLw$0ItPj)C%xGU{%68-;z^Z?VGVO|XEOjZ?EW71NisiH5Yty$S zkFB+J4ApOK>|EaSQ&WTf0p`?DCqlzst^4c?DUMUgPS>krH?jV5DQEr604x3Uqs}t_ z7cXtV5zkDsp=Q6gqhY3jcV!3A>hE=zB@&FmQFRR1=ow5pUhoUbEWW_X7x>_x^!&vs zXnG2p9UgGTk6YrK5Q6?-e;s_(2Kzo`r}D#~Ik3)ZpAzB+~s}H4=tAWQ?EIh=2TY24R$K>_cO#KX=x-H zqYS5nayzMS+Y4_s(a5XMeOm49L&M7S(S@F(l#C0mnT&l7lgrZw&s-~FZ#8A2mfz52 zXF9YHH(Ea6BN=n39VYk9*AM6Idy_Z&*G|?~eVv;_3XP1C;2;K1LPM207`R#nO0Zu&Eoack-CD%#(lts2Da<2B3tais#unZVz<`!TuQ-}Uy> z3XLfr5|&~M7@nr;{Op0AgGAba?4 zZsHsn;Vl5RDV{(@E;nyMfw+|YOXREk1I~u^x4!xWbM$tGPQ3C%Cq6d`>my}Pk_EF> z7ATcExiWne*Mv_rK$;x~Ct=yP^1U0biBq9JYV<32tVKJNnujX}FaD~9ffw%N|9`ju zA2scJTf=?To;aTFANrjSy}21`WRGGAW0459vF981RMj?KFD1G)gr9*CxT=D zBJE$AEN2Mx6yE~lHAbxMNXdW5;CbQ<%D+*LnjBY?X1xS>GY9fd=r}Y96)i(eQxTG{ zt{VWKcP0a){qnL(xjL1vzLnhKQLA@`G~^lh*{|+eyfS~4EtprqA=dp5U{%h;|0QS* zB*UJ*GkBm%ZDgn-d_3$BmiZ+tJr}iZ4n6$L!AO)bsWToC62+9LOR z(#Xfa$0bcs;t;1Cfc#fZ#&@Dkk&DxgPJ`yLxjsY=;J;+=pVZVL1Jy2bG`?Fnt4S;b@nfcKCkt^ zc4$t0LBaU}E_ZSSY>VPGSOy=xpd8)}gT|54>gW703dH7Gjt5~BaXLUEPy_cc+joOlOZ zkpC;FD!O%%8&0`NaQoj#3=vd+ac`Hp6>Hm%$5hO8@0hVr8T_R4Mrx8>PcrDNMF{mh zeYBXfRm;wn<&{Q^$ZWo)l?}uR@I7xCWnk0~ym)?_&KCI3na8xp{Hc!_qK_60ADJcF zWsjYCcowb1^h367P7HZ4-H2%9ANjoJ;0Yy|(=c?S&;h|8v!JG(fUc}$#%LnemY-6wZ|{CzQH`MW`I_alL1P|@ zR?uxeY*bqL%1;)?U?^xZKzb8(A4%i1KbDt*l(e*Rfxpd+60pLw>=j;Hc1NsT{PV}E zk6|tQAq@;^%^*gwPh|gCuHFu znDnbDJX1dY92Cxw3x{OU;NzjBsQqBPO-hXVxfJz`u#_q`gB^_&|!8 z>mK_};r|ht;cPmfzX*}5CD_n%2Ksxs-ti{+W71%5{2NB@F0i)j+j#g5`6~g+uH)*; zG+(C@GMvGI?|5G#iW;O%tHr)mdG&rzdb%#vXWugCEY4-U{?1~AX6C$Y|9d-3q1i`dU2%;1n7OOUTZJ~^kG0n`^foQ zJHMZ})2(VM7vzTgU>1<3{JPrZA(Bfh`cC`mFPA)K+_tbk)RfJU%20M!Wn=l7Aqjeb zIP7+D+^)OrJPEp3!bJer*^F^BTr_`w`T=(z-r>w%t22DzxaMpmmas))nyE` z{y1+O9+Ax3iM5q$_jknJo^qSJx!^3dE$Xq(sO}=#2se=lvs?)Ic$#jC=wQ9|lcFHa z$J6hkyMoQMa&)!>_8hLO-rCQA^QCN=*`hXQ=!W|6WyP9Jv7Wc63RvqJn3Ec8sNq>h zNgsclv&B@s8vPRwZc8DoTQ_y4=9Uo`uJf@Kon!$ty-~_HW{3Jnk)hY6D1z8h+m4ks zHn)F&cWk}XaBT9(T*FV|0qnBf2m0NjW3kFC3_ z(B}_-JpJ86&yWGKULyu4x4f@3EKc!(TtTn776+`vMEweUH|*8 zd)B&oV~LaATHzgA-FE9tZ3St+uh0#$%AN%1{TzbDSWF$aTX^M=D!XC-g^cF9o&=#5 zy`dcQ#5yv$a8TA>Y;9=tJZe41F+9s9Yq`%^FB_SeVoQm%MHqUmvbn|f)pB;cjb~RB zt9Clr@S45SC`>!0oLGGsoui(b!Y3a^1^fLbM^xX$5Tf`2;<`Bh>h|@?e*6;YdO5cc zKdi^Lrz7CpwHgK2hr@wKboE&;Ud2gbq%IDKM4CKB6MOt+Xbbla^D7B?@t=f1Cl07% zf?L40m|OE$TYj#wg-B~ zSQo%-3QkjO9Uwiw-q4M-XQ5hr1w44~Ke(M~rpYa-XA!vvUY3FJ8(uQUZeNb<1_dwa zF@I5!y^D*lWn@9>^Uk-JflizDInK$2r~v}^^nbA^=np>SIMZw{4|QdIJ|`Ba>#>@r>N=vAf)DFZvc%VG6WM~=LX?z za_5@cER!A;+Ku*WsW{TyTOu44pKl5s`xccaGqmnA5P?RV8EKjF#eDEybfHvzg}^>< zo0eY7?>7rL5tAlBN#^dr_qN>I3CZD~koxK;=;hL*wZCvxND51AO*qH{+GB8Hgzu~< zPxYRp;5f7^_6cHEp`5{p?z>y}G)=0{z4V>Ksk%(*`9QRG+B)mzC-?5DH5ryES_7us zzgiW_ZRJ7y^OwpPhk40Hq~jx{(_%k6H^UK_{y?-Ds4{%*z%!~ zX5Gz{J5g~nYT!p=ktxFGXIB5(o(RT$(FzY|HDIH z5f}vS5@m~xtsi(!Lttr&)s3m7`MqzA{r$l*b0y3lh=l_~S$-yMb^i3$Nq%~ho45E_ zI*g^XHNWn~13I$g9Z`D9+>h!`v+UYkJPB$VP}-&Oke|{-`iE&W$zRKY$gmFRK7W|& z{Y*ic*UW)zZsfku7|L89r7(@dMi1?kRFx6ZHlqf%%c0U! zGOTq-6Es}nEmnEmy$C5H9aQL&|1v7IC~C1&mW|`LAd9eB?e;z_pCM)jKXnFGsG<}# z?zx%s*jSiRdSADmJn=CEX7%||>xlos*GVJ<2G&+?K3aJ!hdj{;No{Job<>|2&5ld* zn^;*3s&dIbMJ=&cr|j45@AJ_4Y8_?fHEoagn#me3h zt>p4w?WawV0sfEGxWwofX8~sQkT#)r>BED_PXQP+Pg*?{Y;L%b-G^~~j-jkRODoCt znZ51XmjbyeZyT<1zKn_zQcAPB>NtX<+Sv7r>mUiP+Xvh+I1^Cww`DlEYe#6IyU2^p zZ8r4zk5-Svv6r@hhKea6*_@+wd4R8lrDpxg$wN;WvmZt4{i=K9hPtlTMVVuHz z+-e>Ymqf4bYB2X36N;cPJeKs-mSH9 zQrZ|su8(Q#KXpV-?>f}yeVIa`7cKwwazDzIO8U={Sm6VQWepBbS|eSC*5i^1EdD89widX*fiJnD&W{cJZ0-)I9 zo3xDmw8RIP<2nW|6&ew2@N&_iBe-)UfY5V;J9ekDr=N;JK~R z>X`xH=cyFqj^yOcu{m&{eZeiF-m_^rv-8iVYG*EcpD~~7PvPW7o?jaUr4KvpMS}_b z(NYKI@#Z1QRu^w`33@1z{}T4jN{^hBFCH(hk0Qd-MqC4l-vhsDg@JEdVS{8C28rf? zDd_#Tbo@mg#WnspEi3l^;7*!ub`=|)LEjn=w3FntX?gkERN)*!^x;R=Rd?+JGwWNg zeW$pu`mSZe2)#}1wu~bDPHXO~oBy;PYfP*Kwt_MzGG>Vl_q1-ScyO#sDTXl)wAz#^ zRCw5E8Hez~k5)mcGl(LoN8FQ&ylyPe6p?XiSGSbFios93K*HJ*4MO|d<1)*ZI0+iq znY(Xc+h*TvH(k$T%C#6J9RsvkCbfmEhTo06J|_LI~8?LuL!89K}gxo zJi9DN1p~)aZ%;yq(Uk1Z$Cwe3{tcY0qpB+yelI?bIYjJrqvTHL+BM_XIpFmdl;o{ zq<1)*6qw{O99a(kD03AApkg1fWF;o=l7<8sf7kg%KVL)6aobR%nu|YZ<;3N5r-%$+ ztu{wpY%!Tnb@h8c-5cqQZ~Xc*H8>jTfNLW)Z8E}c;~Ss7=9mze027Sab{w8yEa>Uf zMMQIo0K)O*qd5LkoCy+}_B{DYK6u&2ONLQdsn(!qOl%Rm%(t# z)F5Wy-ks-$sZaSodYflTYj0_5&!Uc&uwh!ge%ibw%1?xmz;&(aR^f<302@yzyIv{fV5P8CHo$Eqijc8QrT-E#U;d}ArXS_gDriK zHTt(B6@GtQwZ19rHI|r%F^|_SUBHBg@B#ikHveJK;E7`@898*gER-GiJQAosx@~Eq z-%N}v`;|np3eQL1f^e*=$U>SMplLnlgtIL>a7LSL;T37rsCLPVA z=CE2eW%K=6OAFYIFD)aMdJuEx-Qugy%B9q2_el54RDgRLmm6{l+zHzP6?{Wmv%Lu8x&VbR)!Vt7I(NO)1zVv zk{YeR)-dYnBuHU02Hi+vsdQl>((DZj)2E56DY>gOO^YUjQRx>R@u@}2YQ(0}J2xNh zwLnMoK7qRMi= zq3Nt0J%7nKYfGNewH^L88&jsJGZzyvVlIth`G)RWXcVzPWslyeb{2|4ATFgllb&RN ziKL8LjFcvsYr+*hy61nM@#$r(QaX?5p^W_FxbHigLCxsrM05&&qjXD;fitw*f?I2c zk?_UHiJGt=#AxQlgBiyN?rkOY23=+%DnvkUVW4C5dwfuEhOf9ABe9qL9%q@I0|0}D&pdJGlIrvG2i&h-tT_ws0d5-Gr8)zz+ zi@-y8ViBXP#9YE1ucmMy@`9FWJZ4vAqfxeimGsBAXcD>&YpdXl#GOn&?U54tuC)dH z>r0vi4a3>o0dz5*%8((|g1%s3VD|*j&q7NOd{KducCXPO#{;ua>rNH;;4z_;2=qn$ zS9`W;p#@-wpgA;5%90&1vGcEZ|&u~ zX)Yta*3{QgjG6O!gm1%%$2bts*$qBdn|_Tu$;~O^-$C!D2=LA3rfSQ})Di6Z+Id2;7MtIw;(a(soA62$3pE28tLwORF){DFwJsv{Sn>8O-o%3suS)E<{yU3&(NDw z;7V(PVzc%02z{15;T!4J`S=@$k_zb6hG8?LENDl?cyO%o*TR0J9o~Xlyzse$gr`9_ zih;<5Umd_A_7>UuqIz70hdSg+%nWK>a)Hen=uM|p#2N^pN)=FU>m@vS;57?kmZ4)m zOTs_D-vv`^WyY8r?4K)7y<3c02dD@iyQm8P^stoqaKBSk=L-6q31!!qT)4nGQRixD zFRa}&4L}h8;iWUr%vsnJCg)79vcpTZwjZ4x;Jt&Vu!nBhgIxoRJzg-bFCB?_$_Qr+ zIM}Tg1Jd~_W&obV?|k}ak<_psQz5|H-@Bj|-DfSe1bE9K8bM1N{#v`+W^H^+ejm|L z9f@$%G8Ecog?KDO=UVds0&NCsypIeIpCyDn{;R(1b01B%b`$cyu455@876BZTH+rq zpbK2y*AvaJepL5qjG&+4S#!cB!J;J5KgmBdn8?Q}Hvew909oQZ$yNHkum+-@(Uon{ zEdc2XoDFL@jo4Y0ML@#=ZqEf#?^q0<#{GC~eu^8l-d~-(5&JL2vmuh=B(0qiN}|H# zn)(+_Eqx(rs1 zR^B^?Kuz^CAf>r_JL-vP1~fw!w2Wqhzqy7d-vc!DIpE*(zV_IMI{_ere>1D;&p>Vh zl-5V0sJT9!vHg(d@8&0aE1C5@0szo!;E$J=`CU?tAc8Bg z+BU@^H2FuqjdJYP<0drEHsmv3qM#@})d>mw;x`Gnm$AlDSrt{chdSsk#)txZxW6`3 z@BVAFW?iFG0x?9#omM?UR1Kw?l%x34IT*RYn=E-$jf|VH2+zy~4HgPzKSSUWf%XyI zQ{|JO<8R#z@zJ*Xyk0)8`E(FBOCis2-|>5( zK6VbU5#0D{v;KbLXpTpoy5*8q#DF3L?~a-M_*_#fQm;EsCk6!)FM6*vtt@BL*+pY9 z4Iy?#POU8l+uPS>SQK5wd^o^j7sfy;7IwYtcLqKvud?;(cWwckIlj7#eZ>5)MC&5s z(;2pN1UNDhFb&)r6EM6Sv51Syi2RIU_&udA68h@IKF2q@tA|(mmTM9p3i7iVw4UjqQZnTb0J0`0YG#dcIV)2C zr*!D!MW?E-kG0n~{P&Q$!tK~su+q(fF1t6yA7Tr1YDbZMX?D6ztLlNq|HPUTU5et-M_j1M*1LbE-m1Veqj$$E8I8VQ0$rT~| ztZyd8h`S1Ej6$5K>=t=)SUO zyf!g>a~oNa15rOk`Fx*v*S|E6`_Dyu78k-kgNvXTc)~yHOQr`pu_J zVu|#1YNs(Tatzah^D@BkHQpRLuU`SL7iV_G|CH=a0izdMfA2X7jQkaV z^-W3MonbhOi*&A#=1T1*tig(fHLAqo%&%EX6A05v`He9H(9+2qU?~hpvRG&P+LOFO z)$`5T|LV-WD?xwxG5^^)?+xHN-FXnVA%KDX*eQ&0l^Ww+IrEk_E9}@kn7bt)NgYsX z;S6xnL=@dLObWIc*0ce!wvZXC0diRS@(sSu!b!YD$o!e>V;za1WXE&d?a2r`;RTdV z__i>i*~HlEISdcGEJ&5e2D&=Dn07>TsVDZpY(2>$Y*dweixmu=H48oIG_yRH-!L`~ z-4JN`WD0iGGYV9s^3z|^dUO02YvcZkg4Z-tih65KVgxmiD(kO*5cxU@pVXeg;;W}p zKLU?8CkXPGnYO1C`AYI!Y-7+oHH$zy)fk&cOg`sjG#?LRz_P<;S*_KR*I*!U7R1Ds zp*7($476KJji^Cn@7TUClV8Kk(A71OocO8AtrRU`X5ng@L3i~#&+=Y{RQt?RmM#un zWQw3I=fVbfEN_#GkG5M(!1p^mG-4)|GqTNBD@n4a>a-0^*)IjIz#^&#s=77{vRB(7 zrW!VbTukBx1bKD{*EyI+#YCZSENGOfrgrO&bW(YUX1iPEpQhz=YN2fEH6`(NMbw(e z(^B3a=Y-Kg-!3Q0hPIZ^SLzO18Z}XB1Hvda`(74E*zD39`^1cl2ah*Dd!KwYA2HMn zqp)L{&a$<{24ebDK zfMMUg+sJnaaJQIz0-_3n6wKvArpsPM%M;@K*AP^{7>A0W(u%al=G_fK{OD>@FQe3! zcOR|U-&Gsh9Y^={vJL<85RMW1FOu1hA(W>HarRE6K4HZFZU5LNWt@crr@`Lm#ky<} z2xG#i(CCn?Oz$E|G%e-g1Jj1R}CA~8qmDCC6jIies82NHTd zM)TYC^R#(o7xzpMJ>)=6BBk}xqchribRH4K7%a38FP3OB&eZY0h64st9 zSNJ>t4T&XFQqnOGotK{AY)2wsx)n{+Nt!z$YvKf!>3r2PTe3d(ovn%!Mlj7|B&oUQ z;hyS!Y1OER!C-*Q+ifdb=syHOlIlg_YGO(Y6&3&ZI|4R2ZDVNTMOJ9;t_;V6H1jLS z1r^pQW@H>ij(=a$Pgx0$dQU}My4cfjTrn8{r#RmfFZx%+UnV*TOl_29NL3pnuByLq zs43j|1FZu3KkUim`6_oCV0-IW^4Y)O12?UgG=sP`&TS0?XsI-Om&&!(L3{&P8`MR! zFuA&$XEJLxfGN-#9yh(qUUa9b2%|Dw`>(2yme`~i%t1>brQ3pSVMUmj*0uH8T>u^@ zR0kY_=(ltlBPB*hbq$*s)}~{kMs8qrTSLw?2sQ4|ioXUQq`ub-=(-&@t^EL&rtxEO zhKWpMG;Z796?yyq&>~Y?tVIMhQCPp^USH>qBCnCU#>Q228-q#sP%h6D^p)=> z4X|;a^Sk-BnjEUv6bxV0iUj(}K41=!ma>D1uJ=WqXMKAA;RK1O1uDk-pgL@reg^yr zP7G;@jXHfZ`O$6a)L#y3WktiQ_z!_KYGH}2VSb5Hq%bIHK!)TeZbp$%lPR5JH6&+=Hqt zuQYvMyB{_~6v55nxM|kn=Hb8U|4FHfeh>PSpc!oxXAw)_yvbx4G>(n0HRBlFCfEat zDi_#(U_9R!x^8w3oDD>Fh=HPAT2~?6%Z^P20pzalNxJfMa62yV`!DccuF-s1FD+l~ zzOhPJ4H1@#us?g(ocZF@ZjVfZ&Ia^W-4+wl{5 z?MHPvlS`R%=Q?u;HGiljQ+|1x=+e*RzJ+YhZX)`Ne{{)0CB*r+ugxctV%f4@){s(f z$i~oc0|1QPG!_n>Jhdd$?5F>;T{&lnyp9c;)uam(>iawq$d^Yl^LQa*@BA5m?WdJ! zvQN#Vx!a!6y;b2Zt<2%9vKq1BlMP12{3j1&E-6^tHs`WSOi|>-ikPJ{#W{kD&WS)S z>N!QlOS(FGwW`K(+Fl_sKmBWGnm%aalpREJVnuz@z(E_qJC*Ttl z;*L$feNt~6BJN~KL|rIKZ92YX8LOqp$o5rUMR56%kNQR$SHO}dIp@GOo0VPc^>}~i54etHrnK-^TXJop?o+yHFC%b`z04Re@>C)mX?Qp7IHlK4 zJE>zKF-u42VM`x#Jomd#O=Uq^#ubk|V53qn^k(+2OBLVOgD->=T^z}s^BpMO^kEgN zDUO^OV}#WY`Xg^1$>+D~eVr3E`ZKd}d$http`trvu&+^Z_b0-r`6C(-qvsaI#dl!p zn$&mBt*zG$z>lXL_UHF00$eetzh0`5S5yoEkdm9k`^99Z6;dDZ@~g7v(TZ(PBOM*( zao7IRsJE8Xcnd|j8<|WPt@K~y|9v>rTF(f&q38hZe^XR!z{9rc^eu3v|Ge?XSd2aE z-p9ab{|iP-%Sezvc_-pPBTJm_Q8TN~ss9IQ#Shgki>k~$yk@Dd6ml0R$^+O1ie53pT#wnBaQ404QIEyZr;58dMT>k&;b1> zU8DBoK;g3y_NI(w&k+Z|wfi&ns=-b^9j!Ody{dcAd8d9`8Ts>AoqnW??Kw@qjMc;` zoK?`)-;~=AbKQl)vLaY_0}(kaxCGsnpT76-cFDbeLzX#$EqcsrCaK53VB53T(ROwb z8D;^s=!`#u95yDa|1aWphph>ZHtOO` z^CtK?oW+&RUyD>|AV0$$UTB#2Dk-1O{I-C#R=m@*vTCCMtA*X5o}&6GwBqnrtK=4$ zp0!DjZ_r$8?_D4oP}MKvQ8*4(04$25@fnP%{V>hB`h#hhWwE~zx5nzGQLgDwhWCIq zIi1d5MwU8}iSbhJ09QcU(k1ZvNoc+HJx=6R)VCNd;fx)urul zzQ83wDM^rN=~Jn=!PfB4+L9KYc-QY$;3r-MOH-GWd|Nus zO`i%*XG%%@p=wxZ0R6u)cD{vMvFk}VCY0}w#L>Gx9;EH$d?V12;GT zo)P%{y3t8d#KhBRzLfg)snY2%c}wIPQ#NN-8Txjunul>A9rCLrBL+Jc4ZWBcyv%A7 ztjX?d@~x=rb4T$bcdhUCl}VwgR$Vhyd>Z&YsHko(UMVWxlMoqiPDIKlc0JVy;)Lm6f3tu zGoxbfrK8pqMfqpD9CTcC;jgflCXwwwN_unltHzT$tkG`z@=3B&4JKisRh9`n-3I;r z;pjCH3h=u(ot2B3lQ8Fc(^t;|UPeT|T*0>Dn}`{{c4 zno$UgCo7UA2RCcefymND6VJYk;1s@Q@K-AjAIJ6F#}TB+>y_yjUdwEP-?_ zh_=Zr7$43EX17uSsGl)l5N*NF@v7Q!;^UES{10*Bt?Rc7=IuYqW4-jT;xr1{%OZo> z{qeNUh&h4J^mr5rg*t?U@Q}NdCv*js#ZM<31?6%?G9|J8(SJ|Qrl^Q)^bJ`UlWnQe z5tD-`Ti_S_Z4#a45UgEI+8EpWU~P1!9jKpDg0B%-D~<+cqNU|V3aOra{4;@{yi>=Y zo7n`i1cgM!>17}OH&oh*5j2f6t;8S9#R;hK z1IUV|$75HOk{fs;lZe}TYRVME@MM7G8lGi;+*LHT?qFvBq^ZEi=6EgTNK%L2{Hb57 zjKj27_}7!q_~9Ge7;cvlHLm93euNSAk-Hi}&OGj`0P##VN+rpL+)q4HLiuJMAy#Ir zQY4T6%(&U%imGMp#N}yc6lcl3uMxgv(%WSJzqCU`kkL#uS_P*bm3~ga zFM}^{FKI#x?jL=utW^n>)&AU%hMx$?vy0 zgo*KMwEqBW?!s?YIFk79MxRt^>8f&9OMdNQej*_X%aRkhurh3Q@bziPNy$Sa63Y;# zhF9{TlgG^ZA#S6E$XC&8_L>5!^?l_frFbQx6@84%m0e#(GW*FX%PdMK! zAluZI*@*(rG%ocpjpEz6#E0HeYK!_&>jybAOCdI8HE5~x+(ZnBa+}HsSTQuGn0g;Ga8DZ%Zwxnr+=KD&45Y zh;XozLwySMD;`gPT@OVx=Y(~7!AxEW4|%Eq=0_SZ;ASM#xQpi9?|%0Q&Gg@0m42pf zd2Ys8cEx8k);kK)H$l-`)8D}fAN}Ee@ZTWvx9`02hagS0fG~fmV9W5FEhuHAGyPB> zWLMiNC5usCyCbIc09983UOlkEdKN~C2Q5p+nW0-_)dtkBlVbIThFIm9-Yn(^BdWeX zTa8lY)noBxRjp&Lh=KV#H*J#zj_l*|hox|^+Arz#gxu3@ z%9q=w?rmh)D6Kf97#}Z2Em;H4>ns7ExP!h+i9FDp1x{w0?g>fEe7qZw2Rf?)2fHB8oy3)YsA0U-6c(o4_ES>LZq{RK z<~Arigf_B{tdnbboHfRK*vt_ooLDO`3=DEx1pHR0oZlav zxD=Kk&Ro5S<;Lg>FMx-~t~vsM6*`LV#{&+Y)P^>}(ZreFp}jjEYRVSpeo9gSnF5qu z*FlTJkk?pbk8ffly_aam%9)+g5iOLA1TJ(wKe=Uk$5QRT79J6YOTT4*ah4Xnli#Y# z(ZBwziwN3ezwW_XAiK2O<|fZ3B)zH$i{6qn5tg1I#lXdXVRiTl$>^ zmKBsI-*rUJj&$+p=w~O%yG}cmw6(-kKZ&mP=ZwP<5%F9eZe>Ps_!P(QOsJWD#Xoj2 z&IE1l+?oqYzIDB&B>3#eR||RS2R2uMO0@DJ&UL3mrU|U)SyzDO*3ct+;>O@CiSwl^ zv2Ac5Ywm!WDRcuScv}d3y{c=imVA#IG;jsDqxvCqZn_@xx1Y~o%je${O%62?M^+<8 ze!Ew!%IuI(HOV)o2sw;n@`(rVu`m%Dx5x?t7`H9TY>WEl>A#+rSm#<5Kflp_1GKP#4)L2T0yb2eMCc;JIJz$V z{afKF%x+~{cO@oOY?)%sRLFI|J|f@<1r*=)1}^_300L(r8E`jN=hoycg0%RXaO^z% z3DWA>6kuimvHuL2)io2yHug4>dq3$uv`mhZ;tVx#X0(s_-lfm9#{e| zx~$Fa6L?Cjs%_}5l1?Cs6}g3XvkMw=_m{YlNlTN*P$E9knOwwj1{nHz*n2!-OgEm< zY$P<(N0eUk!B(`Dav-*A(A0kQ-5Y5{Bsqt@8<1j{cas4egRHJWW`ej|an4zqgXg4$ zbLQ~)`^bSKmj-TQCwCQJpfy6+)aH~&XTjXIa^d=`ImmG}AI`OqYvHui+LKDejU#Hd z5=w!UPqt~e#x%OAHJ7I^rK61&f^9ZG<9Oy_MFWQ^Dgjfnre@2=e|+CG~T)MtT=Y zamkd4ELtv@h0z2xIoX{p790{UF4awtVdB8qqo4BJGMRd%gWwcQwSCh+ugC@_??#r| zs@n{dPTV&^88Pk~uLfs^h&(L3fUQ|f=s7K5`(XCuv}Y37^Blrok0ymcd)guV0%Aq-Ml z0cZ~7o=nU@g;$?sz1zW z3T-+i?pP%9CRY?hFK5|6&D7!>v31tw&NpNS^B4ZbP(9+ z<&BGZ$w$3?3(g7sub&F`YkF$QXHg5wSh$deco9yMd&y;bG|3r}HV;`JCrs-w*acCOF5+zRTJeIE^rD)iy1lu6*;f zjbDqaX~jiy|D!j5N7BoQ-q1$0R<0`Mck! zMN4X5vh0cc_FRH3)I!CMh zi*sh9${TG)m?MM^2YBlRCR_Q0zslIk@GS?4)OF=t3j|T}RFC~?gntRm zUkCJJG?xjWo&4GEh7yVU9&ndnXN>fEZ&#apq>K1x4JNSz0e^T+fhR{i>L+tKWlYA< zKXQAM^@(~w?x#tPTb&p&FM@Y=?(1EmiO(Pc@4yOdkR@E z&sbEPcg1RIttYw=f}KX9r#H6vu5^uKUDI015)I!087(Ul=iYnXLIv}KH(iO$9=Bp_ zc!2=Fq94^(!zLbt*n%Mbtn#R#k|CZq_758gN z{(>}X2a{%SYTz7K6EHIRz!(jNFvq0_!v?}phOdU0*=h$m*Ke82MXqO$nGr;{IrYYD zJ5WV%UGm$?uMG|7Et>oG{Dv&fwdeSh$I|hpwb4A6kAIwv&V7w^Vx8&+EUTT$ z#`uNuNZZ3RhWjeHGajrn9i7e}NRP;YpV$q+dBc^jp<>2{z)E!d1Z-3ys=WWI5L*l< z8{~VruW$OzN4kgF^XwT-;EgGi`-ROfW_Nuo=X6Sc#GnI!gSF%jYJ^GTwt7O_`^5uY z6BV()6)pCuaaS_@d$~g+g_yM>i22>l#xwXM1ql-TQ8%6WN##DtZ9;dLk2YIRzb$oj z50Yq8Ts%UhI*Kpqe!0te4LYv-CO~|dlWrJUXITtRf41v>ohAP%&7pVPUjA1dP;zzpxu*?I8R=Ouh4W+~50#+ca)$+l_78jcwajW7|f9#%gTawmGpq zXWpOhI_sRZ_FphR?Afp9x$o;zZK&`qGs< zLhv8eGTH7vqVt&Cp2+4ytPLh=r|dSm=)q%qync#(0dOYwvHrL|u=!*4r-k>zz zN&oia188UR)n%XW?Z1P;d;w=wB6L!Q1Air-RRtYE9>1J0NDu?dm%|gzU+P2UK4Us30reSxFQY;wt6I zDzKPR^oz%<2hA+fpiVJd^MiJceHC5^2vL|8N*)b`Cd zBMo1u+RDMG-xpo66OXbn(i=-0Syci zo+#V@H=c(mX`?dXtkzPDAN`9OEEk_}inQYL0b0VL;qEb<2B06JN2x0lWbJ$dg@C48r`U8vjNJ4cAXx6sVX|af#sYZQI zynY(koyv!Z%+9AUSKV#d>meG}3;@MHENqJ5-+=T7d^UL)*LQ0+4Yh)@1CKs0+yqTn zp*ifD{ZxB8{k1QY&{v`Oxe8x9EbhdQ6&36GB}zIsJENZO6NU7TF3RfiUtyS6-8xuy z{u{rKxvb%)yYYPzCVv!qrlMj(2+z{b;@t0iYZ}d_>=<<@1qc0!4vg5(V1N);LbQ>r zrh;pybIQkTHZYHsUJB9(PA%!L=zo9R@j!?r_R0(k9gBlG=h-GDmlURs{V1S1)SkPB zT&r>Npu0A~X>{YQJ^zC>^kA2oXWH0FN3^qqv=dAfMoE$rLNsDserq2j-CfP=wy&<| zz#Z%l;a*Y&i>N$~+SEvcnN4H67k`?J6xXd_8QUR#XPs$K;uJ;>)n}W9^OdFYf-p7V zv|+yR3N0V=JK>O_6wViKqc0#ZWtaU?O+ z)MT-h{ll9}N!tPGG%4W7SRGMR!+Pn!*12&x$Oa3G=DR#tM0u^)6=u>Nv|!3M*>U&#^O^*W%u!kOs}6=%VDj1NQc#^IEyZecQ#uY6Cta)DK`)p)HRB*8UndgoT>Xxb)gui%Zs zg0jJ#6gs|SE}#D_)l(Fi8$XLHq`(;*cqa_>kKN?a%1Jj{kK;!Q7b7YNHD&3R*655gm#OKb@iM1KYBtlLE zcDh=c7!#DC@Zs*R@flg|tf1X2^A>i;{1e5#0zOIX+^D4u*yqHjhmaT9m zB5JB_n%OMZf-DEucw!U=8TbQ!Mdajm*9uH>b62ZyK-jqcEf$R^j;<7<(M^16JSwHC z?sSI4nN1?0#RL3LSEGeg%a5sP{zGTDS?+ zJg-+Zn1a(!+=j`4B@n@A2q0ko{R0JTb@2}sno`uJvOw5&m(}1-#>XtsGBy66=a`pE zBBb`Mh@jIIGr$-9rDf$0@}X&UUP;uEn)u%g)Ag63Gd%59t%RP<(wPV*?rsH-5nkjn z+B>mRi+oNYQm>X$I;?7>FZ`%En>#aYgOG06qwQ~}vCimcG|i`8a8TFhuN%+DE}!p? zuh6kKczX}ni0X6bEJ%b3jGVh{{u1!8gx`ew{c9}cd$i&Fs4*Q*o0NDc@~!kvIv4+G zE6Us%Z6BMOM>z>BTi%w{r$wiWI70QskFEWbp=jHY{HmEsKRr?>MTr(mAphN|jHrnE zX?iU6cBvUDow;=#Q+*10LpC2jH%zZ9kx+7VOh%zH_n>^_O$O+>=3A~{sK4i-NKbeB zX0AjRfgxCe`L)-eXiP;g*R{qq-BB=QsrfZ2%QL{yB_P44E@wGEF>B@65yV z@_F2QC&(5*4lm{2`fFbD!u!F~DH-j7?yY-#@r{r`#XCU`_7uJ@>2?I^rK`DvaX@#yYfO`@Ks1kPm&Yb*xck0ZlD-@0gN1e9M#pv**+R`pH0 zY6-va!>Gas{Tl;AT8b}!;nGxm98cGn2E2b(c9O9?n;pI;Li8!za=7td7raN-B#u^vPCq^)}a(JmP@Bk;nA_XP6 zYlR`-fg~kwWJk{~Wgj3ny?^nS|JC9S)FoDbBYARDA7w6vRPj8t%Dh?;oL#>~@D*I4 zJNq8cz|~-o@e5d2dsdWdqUhePUwYW=P*~<)Y!`6#?=s%?5=iS-jkeXg?1yA=2Ze## z4-Ci_@k=!D>t---Q4Ihgdpd{PUD6otX|?ZZc@8(~j_LLtCmD-Cz6vq>!08zQNX7G< zUtBee%W&Fbum2y=N#b^>WOrgrF}dr9-J)G}f-9_6d`SdHfe5L`#OoafBQUSUi=c(% z$>vs-ONCBi{QOJD(qmjDdG!k<3TTR!{jf%J;GwLA%P^uV>XIai?zC!v3#|=+8T`-8 zX523X>yXicCkMW6SHM=%#@w^>EjfG49Fq!T$9&>!_$X)UK3_prSt0Qe?YyszRSry) zlo{1NYsit9etX^P$DW({rMfr$9ZqR^k3DzgUD%RSqdtkrxZc+N4Vj4)!>afCJhEz+ z`_Oq;`S7`xy1iRus=6^F+&&(u7)+OD)i{0ui#fzGqgFg53llo+-QDT4xC?E+Z{zv7 zyx%8FWj5G`Z!?IK_nFtSBnl7XJHQmdJ%)kzO9mc0#MJ#2SLW|)gt$USQJnhe2d0Q3 zfxl}=D&Ff&)QW3LVd3A904sef_0rc1sQPCDMK?=~5?XE9lOfK2JL5vUtl60l(%K#{ zKgUf}ehp3DU$`$)uI-KbG5+-S9xyX|<8d)qs-;mjyUg)gKbrzEhPpd|K#AoqSD-~? zli(H*#ReGBG=S8jv|RcdR4nq&ZLwqA@zII%*ZbJ0f!(g??oJJg^fiaQhHBO1q<=76&eeC`U8vR1&0Gw__^tE!iQvL5$t87>OP}q# zhF-AV(rCWjf4Z4Af+O|E3AN$(Mrg2mW$#(>PxkQ57`(|uyt>*>3DTfO;7Mp%wH z*Q~@mYVC2HEoIYw)6p5&nw{Uefg8VjF1JZ)_Syh>_sb_ZtvW?xqqg~=+GGiYS`!>2 zFM<}$is@HC^XkJIaduvkjdScja~Ih(@;_6sS}$xXrq<^dS!L+N_LX`&4m_j!&R|gIgm0xUwNLK{NA6s7Oc%uZ%{Cj6qOJmRmzLh)gqGK5)6KK|P}}!?`+&6Du#QK{fR$}j zBeqbK5@J(vr%{Zu{sDGWnK^o^$dJw_9%H?3tB1;`)tl#VL=)-mf_u1`vCb-+xYBbF zrQ)8_oVI6g?pKtR3{C5borHj)lMTcEla-EGh5?B`T13z0ztWo=@{6?9hO|SWIFf`h zO_UaJE$u@}qfvl({p6_Q=69>F9MQ-thya2YW})lCgr2Y7Zkj0`KJgKSEG&d;%3{w^+Wu?Qdhx;~MKLk__< zidPU`Puy+ZYzO?%M7OLRFD>VH*=DuG^ZpXp{Iwx#+vz=W*kg_OA=iA<&*s0M%{v@$ z1Cfq}h}kcS+x{)_b%-rWa*^3U_OQZ1BL@vx4xh0O470BRzE|>TTuk0$Tlo&2xvzCB z(un_!t_4JCi~^9azHRjiwd_v-XQKOQ{<>F*y;BbUmK=(f0g-SO?7tZDYxWA!C!S4) zkdi_Za0GIy16oBt*YcmxgfFLZ=206P*WMLg)>P0wvYDIV&pxT_kmsQl*V0*Ft74{O zQIk&dzJHSqIIQ7a-0c;*yC9L8=d)2*Nv0LBV$C%d#wI(f&>@Jbn!prkM>cL6FZ8es z6zXC^8viEkP#*TNH{!-j1+9fsTTx2m3U);5;1GOb2Zg{tjzgx`cuLIAk4wxSVTM@_ zT9}Z~BezeLW7Kn!Glqou##Ge{EhKrtlg1v+8A5oLZb9?GfI&>h*sqL z5!_!s%f|WE#GELT4Qgf~y!NWX1_+>g6!vI(=+zPZjq9%8+e(U@nuT~uvk2~H;y8tr zUssWtMYVRXxgy+>Hc?RieTF&K`+ssl(-ern9*A!+eYs$QwD?%H1t<#)OZ2F$zt!wy zOjhX(ktR{UzwA$Np4}=E=JN~s-+e5O<~p_bBWixG4pkbERZ~_8la1nM#AiQGRoeG3lsQ{tdQ@}zh29Spo0>`3*%!DJ50hL{~z2tOR5EX z{edk)8)ba$K>|}d0K;d<6t4nzQ-0t!Z0~J!K02zCD@b4CIw~}5f>~a%o09&Q&#&&Q z0t3}*2~BrpJT!Sg!rn`D`Wy5zhM6_*K}hjAgd^E_F>C2DYw{)e&)890{lp*hs=;_- zFn1Ni%Oq^LSx9$ld^H_Ynmt;X0kvn9bu#3AX1B};xl!?5I4GWDru!@3{TB^rDI+?1LN$LnaBjRDrncY!@ zk{KpMX_hmXr)Y(Ha{O1oHF&PFEoH>17B-x+&0aGLN_gm+HY=zY;Ijg@l5Lwv+etrN za0Gvat=$3bD)l~ISB~dvV@IJIG-lR5*Y+BwO+R};jJ?6uOLjOuv+yzMt)#IV_c{Ht z1(slt?X&*vd)^HP3>=WOII=oJ8Z{4BgJK6eM4q`9~^)2)-z#v&0Gt2yjPb?|#5 z{Dq!%FAUbFc_ShqVEm)CIn7j#l_^Ud(NLf}lM<5oFwhKR%Dfb*7MUa{l`_my7A-$2 zWg|dVzIEJs%DG`@BH7sJHley z1JT(l-fkCXY8=o#hTNfiV7mKzrxflD?paKn_J*NUf`ero7h#GOMKtj@lDNA|P96nd ze7>5JPipOW4Bx>bLL9ebL*4ik+xk=$jG|5vPljtlJY*)(poozLu1K`ie5z1XW|o?` z0!h((EW8wnaQ56!V=Q*_$+&aAr)~?5$+17a0ajfU!5>noA9ZT5&ztFdd?OH^ZU|2- ztBhUb!Gfe(*~fqXU@~X)m7Qni5VrLr^1E}=>Vj$Dbszm3l&3>HT2v$$lzby3WOz?( z=P^k?wi+sIFB+1gn?w_3H<{k0-=dl~rg6%c3Bx9jMMkt`gz#{HZs!nhUSUY7OfF{< zn0$W?Te`H;<9$9}gg?%nYtFJXCjEn#TzmW8qjlm74(=~rKHn)2hM!ek5^9g3H}ZYKuq?I0n|rl5!)-Eq210B!T4vnOlQ_~LmGBZ zh*fzVT@aBxTy~z9@A2s3pScy}__#x)*u>yvoj3se*$72!xGHw!Ep9EM;oGCv=3uMf zXy5k4$M|c@xj1~|W&+}GD(K^{_ReQ{ly|l60=Cq-h9YH$O4%bl(#Y|bM|zs;jzWif zKs=ZBAA_o&$)UXZ;9;c{f! zAFd#njV}mhb9UDZZ;knjrUZAvDn|h$?;v$L0;L@TDS3C{=h%Pr8lRjsh57v)y5#%A zdk^u2xcMKIKAo=gaqdx%KmLcVK~_48%B-)?-SZ{8mAcAy#llKx(o3T&O#uv#dygAM zRPD-~_MwaaormL}g`!J5VMQd$<_?PExUd0*Ct+UAhhDv=;hMiEsSwX=pr0FW{VUe5 zG=tdZw%x4y?l1q?Sn9_M$0RD}FCq8&=*n2{9?aC)H=|H`%)i9kgOmB-sMY_?4VFB; znPhA0k{0TLKjR7jf1RDxA&>dtmJJ&0I!C=B^7VYWT+{)p4BcesLG2}o@JvZIP%3%K zXA+YuZzCFSa{+#*u7{TT3%Ig`AzZI-FR8ebWzr3X+tbpxR7YldPkO!1jxPFGa40^eGkn_2yoJ?zJ0&58{cbv`GJo;&zOwwUO&B-WpQH1xd(of zZGgGdj#BX2;oEL5M{d_q(20VNHNC7r`xm#W$1%xmJ#CBn?wLf_9HR$JvNx@B8c$HUgD6Iy%|PZLZFo}%{J7;smUulw2d_u^YB&A>Vo$&3TSC3zIrK7 z2l^bG>@d&28DktPr|B$a2mF(I2)@F?rx~!2m`YUF~ng)BMWCc=!NAyeeG_)q5?$u2r&%fdPCgB=6-E6 z&57vTic7pHWe*J-kAutzyPlBuKmA)EV7wglaGM9P0-wkT#6(liHHQf!w+&_x*UYWy zI{NLQ35bk65BB1eS*Q@5*oZ9|Sd3e<$1MgxPuP)Q`_ay1eIIVrmir;}&nX@h2q2|- z0Gn`u;Vo%}py%0D1^CN9oy@3B5Op1kb*Q}+tA8&+8fQ_rUgId*6t~o#5(^RhU%zGl zw(yud*K{ycCT+e%&Co6AXz=fDHO+<%Fqw&2}5o< z+sFIm&~kQMnz*UV=?lJ4yaRlJ9qJVHf2#77RC)Rd6bBSdTL>biF>D{PYWa43%8@Gk zJ;#*c>6!#cpds)XYI*w2lpjE(1Y%1RV;*v{x@q=QRSq92?s(wuEDqX@6IpBORHwJ( zqPjCI!{^OvY^`BqrD@%yp|PaUvUPstb@>{m-SB&d6`m}eAdBGrDy2W&av)C`@P2?O zw{fqvFe-~SZo|a5HPTbzTD(5DkWb&7OrjJW3fM|w*U}-Csn6UNDYPW-pWc87ltP(3 z;TS7>Ha_Px+EGKm%6EE!dP#9?fpvWaZ8mPBBC87602plYJcU;^4Y)MPLs4m`RN`8* zv?Q(anOs~(9`O+ywHs<+ajkJEYW#FjnziXyJD_;`}X-Mbl}r z-)Ax<02eFVB^9`qVRWJQ+U>2!_ywYujJR9&r@e#N*)Z=m58coj zI{llMEkE@8o%XeCgJt0IL~>p<$jb<`A)8@cG*a=D$2%a6b7)9euE897Kwo#AZqnKX z75?`qYcMYb#}?)OP!pkpltgdid5YgG1h9 z{?r~{NlD|Y54=U#6WyF!{mpTrKwJNMcvUv;J^WK5R(de-BOn_9*!j z{h5dPWFdJ*B*BpzZulGuE;<5})$HSCGF402!wgSY_6fOdPW6~*dAvUQLW`Pr($rmp zudjxnZ~R$@5(BQ9FTt zocu(ii?@mvvNi;`S*+zWFRR`Vh!$6G5F5T#@|z@yp9;y;r4z99xOf7~t=YB?!djwRa8*~Q&ZJvB&D{fCfJnH}OWJ<+~fbXvZ4kAjKD3RWv!ntpP zdR?P~n=n=Nr@WlrKt}cXK8p>_k8A}RfRXY#I~}i?A!FhN>Yx?dFs5|FjfI*d!gQYp zplC|*e^8{J=OXkYQ&kMV-$0k_^_S)+#qVG3F374ryt zxJxNm5kCD-;orrVJ1M5QTn48~*;?c+N_K7P%M?^9SgG!fe0JqJH5tBr;?m(bqZhDt z8nY8$(W(^bln28C^4omj%jF} zNzQIwUlF#NJQhR?K;NbvwF-*OJM`lng40D3+vAdwEjE(o zH>c`VM5*GaB4f(9dm}7t^wY}J&R{1zhg{P(Tu`uqYrZ5I{c?o}OAev?oIi7^K-@zN?GXNP@Mn{+*Fgws2SN|oCyBN}f0d104$aA00TIp*AuU+KGP{!xsC7^m z2luR3r02HOIc@cDNSrP7;f^mhCkU(3WZFZg_Ur7{^~ZEOML;JKbL8(r)(SH2@^jx! zg70m`p#!zI$deEt?h4o4T1zFZ5+Nqfru-p!C4~ixRp@W!)P5=av%r(Ebi;iWrl$y- z;!jzH0Au#jVBX}g)V8`NSjfn!MZ8-nFiz$ZaV8dfcE_wf_OXI>I|h~zM#3Li!I2Vd z^N@0IU$aZcrG4H%I&s{)7*N(N=k3%qE*g9YwxS*k!aE!!*PkQf|IgbNpw7zLa(WOh zTVUcWf@0^_W^D10R_t6zKH~#z$um}GTi~n&YwBnmk0X$gM~CTDYfnMW zdvYTy_VvGk>iT#o$%2=ArbpqN_YWAwZW5!H*xfiG9VQ5GqX7G*FjuId62K81RW|)t zy*e8V5-vk|&Gr)-Y|G-b#mU8e8^srw+Af$4A{aHAa68@C9@`#sTloZol*P8pJ%ShN zdWqV##^IVWDF8R?$;+*<=qQB?;L+q>;0%)#r0neAJXS5V3p2T)d-oV<*MTuDYE}QS z#b%M@%8D}bIE3r;9_^-;mnDHZxbn)Vjb%#zp>;|g3~e5mB>o7e<%)+eb9!mWZ$?%& zYq++J*DuQ+?YVQ%RjE6`h^5HaZFBZ8Wpj^^H%O1sal-d|fF~|x#HpS7V>{*UICiPe z2ONfK0_DAVm?DC`AXR|JxV{<;(2#*+<|dkh;_r(;)0aE;)0%?@M=RUms4m(p3!fTw zC?ee|DJysH+3Xe^JiY8<$XWN_hc~PDekZ?!M9mTrf)8A-%Ch#p6IAz^xA<#Ej-Q+x zlPEQ?){Rq(J$Qgq{L+9mtSps?Qafe_p70rL=2!QWrgi&tkk<4JI}q zeh2*d3jmW0_S1=XhQ7O1eDpdY!K16-0Mh|4=Sc5@X_G3??aD7DcOVBmw?`b-$U=@bkeQUDcT)`F5#=zC| z%+=ZPKzCcS^){lz@9#;F!mACPLk;_}_V9_fa7D%ruRqJscdEHudi(OM@a^Xw9etl3 z9ZhE_8>Zc5tGanLwkCB4KKi{<^XUg;;=Z`*^6}~CeqwpiiL;*cim0>k1RnYD!UlGH zZ99Yu?5sHB@gwo$|7h&J#1ALB`qza{0wC$EnvXi#fMZK*lV^8n4JZ|6&P2!*#IzJ) zgg82*%`_t~8Dh>Q<_ebiU7Ihz^QFtB*OIL@p>41rfX!=@l-HuMc5Ow_?Jr4WiN_^t z{^^`t^{ot3xc$xj0r3-5?C?weUf@l;Wz8QezuQ;k;UAYdy&y$2>h2%*xeR~H&V6n3 z_}DkO!rpTF+SSIu1{OM7S0yzt*MFIkw%|;tzUq-(ucE6F?QdC$2>ibx;+@I?Bg8MN z7DryJ7fIt2zn4Zz_vNS^g;RYH@^V6*Qs@n6WNah#0t{e(LQdAt59FlcD1faq7^m+dU1>WzGhg%1n)L5CK$`b@Q9 zK><737VBGm^!CReQ1odnkGKR|Nsu3O0fs;6f=y6G$XHTqN2^33^_JGGQ;`^!-tQE3W3{`%_4Rlb6uFf(F1ibtP|v(I>C@NeFH z{6A)WeLcn*z%l=f$(~TBd*Rj0g%Yz(PywRh>O5g;HI@H_vaR?M-`Z{)%yziJXJ<3S znoc!_Y2?}7IVD!F0?N+pR-v*OOV=8L3HL;COLR?AyAlSin(Q?In3yS+c?_ez=2(X> zaAwA|&@+uT-r*vBX>0)HuX8J_7hJWieptqPnljG7BG=Ms>E9PC6tl@TfP@y7^r(|R z4j`Fr#IRhM=WhlEA(!dF*;&zy3%x2pRwrEYW-Ep_iqhW9y~mod+EafijhEQ}M+s;^ zaU}nsELnIK$XaOq{VchoC@2d(PZh2=Ije!R1=cw@W!-R}b1H6wV#oY>K{nt0Dmlpd z@a&ug*x|Pz{r}Zxq&X%g?r!xyZ}=a=7luf1R%N!8qZ2MWLu4;9$iSdcc!)$vgd4{I&Gsh-G>Z&Y*U*w?f)CVt`6xSB&=ROl8mA!uE@@*x_pnUGr zAhT|9CSOYA=xuTgu3g7F{RQ_)A;{P)>xo=a-Q_)ES3-ZWjr_Qsd zO!`T#AxIi>dZyhf&ZuinWF#m^BgKLi^YuS^x1m3%5SBaOK=n`J#26ttCfomSXbkam`D~|Zs z{Z*DsIc{^4%s&ycC-^$ZzoYeuP|H~BuaF#gBv?w*5=rK#=3fK+uCU1|R| zcgq{;GHg-I*dky&d=H`GCR!D)>eFhjP-^vpJuCQiIt|U;gn~L2xmgJ|iOVqrO&B<7$(` z_C(7j#WLA{bEHV|_NLY#X}c@i9M%13HZmy~V>l;4+J7QIryW%v&>VDx?p9ZkfP3C{ zc+FZ4bcj+dy8m>+s~cq7nNdJ?ku`HC0GhYoId|&<2uL~u>GcET1u(xpzo{n} z?pj!!%ep~<>jo@S;}0Gh)U|l&(B2OJG}2VPi!nbt)Ydy>8~9!u(tq)}1bP&l$Vbm9 zA*s7PK)e6Zg3Xe&vYZQoCT-5J6DB%#Gg9 zeDvD$MBh05eOJ1iD%aWxR*|y8GmiOrub-*?N_4U)*`h<;6yP2qZ+9LEd=*~n;vg&B zU~oQ%aTxa5rr==?mBxSURTMlJfc>7&%Naewy<_8lBbJYAhRe0qzv2x7<1-+0{SvoH zf-vUfmC_#}zZkFZh6`p%>&Em`W=VpVG2jP@Th}7|l*74?t+X;J7p(QB6I_m(O$z7? z{W)6QT*0ru0%G@Eg#){RYsPJeS%PpMCrnrjt^s(ZI<-<;2u@owKWW2>cEaij_!qQN zIVa*%1t(>Kvg@xNGL$42pJ&2^I>%?c<_fjr;pq>-+ z0wun~FgP8}`Hd+R`4F)3@HCj58p3)Q=yX4jK=DIS!BqN!`_HjB~gQHy3&_M5=}?;M&6!&bwiaf%DZ?LM9t3 zlxJ1tP1lYjwUq+ZWV5BSl9c~iG4JNg>aJwm-y^5&O>MyMav=V3IbO9f zVDbCZ6ZqCXxK|X;Zcfgx3$3Ai z1KT(6ZhMQRrMu1nfEMD-C|D=|wJ8ncW6=3A2*vR@c(}i@8jWf|iT{T87h~1Bw&ix~s;{uQ8yOWGZ?k@GBm(ktOWJ`gV^34gTSQL# zoj)Ga9C$^}+O~%`?gVh3D!+i#<$4a2a4Mrzc%?%Hx~|kfGNUhGKGXflttBbu25yDK z=A(l)y>D+4urBW9wFH?jIoJI-$x)0+im^rmy%eSQM(u&SO3}99^z)tqIf4J z?RD50(?Ai}Ic_C=I9RqDb`ylhN(nZVxHQUlxXn9j*vi)i0wUB{QIwFau(@?#WF3(e zA(E&p4ohB-Y!Fo~*^ALH{?wZkF~pow#nxsk5b~JstyFxGa@&TfR42%@NF4=e7Vxtu zFF9wk7b&HLfQ_9bHK-*_DZTK-OG~9snTzY_V$yRbn7J2TH$C!LWQOr&EYF+3NTX@% zufX@25$9{w@RHyV2|`EQF8DTd3$-(U1_^*>XUMvT@}eJ^(@~V!by_6O%=c>lgjQAy zF8-Wdrp9-+OvR_2Ez)PhH_fSBcvC zE{mp$Fp%NybcU>BOxA|3l)~$-&KzoQTB35oWSE6j8(z9=;uxc{?>-sN@jCH3%GNxl z@|24lK{POm+ z9s6^4KU?d877Sp4eq0QfMbmr+sR9xT2z9`<2yOqlN*vB5kSPR_M=n}uQcz9q%xFBQ(F zqdE~iEQ^f7{bf*+>>|3S@6h0=r`O7DI9Y_*CHgu7f;>7%iMIuQ1t`gXUf94ayvDN) zg3gR00*Z^V1l~a*(h530is#feRb5-x(@Q{T@;w;|5SgUxrI5;A2{zv2<&WdaK_hS` zqytE#lp|WR1Qbj;iGNuBzXK$CR6o7xI%nhyF!?cwJQKT6qxkj9brtA?--~3_mw%9Q z0VUB!cCO`kM%)`VKG`ffqIkt(<2!Js`^8tI`iJ)DOXgL4n?=D%97u-n1++o)id)8hP2^T@a{@?;b zrt%(JNg?ukH8i6bM7|cR46Bv3k-p&UpS!Ou9AOYoQQN| z$HIOD-O%1@GoU>ZUcU7{9#-{4m+Oj8G{!(PZQxVUZVVRGGc)Mh=zK%RK{Rz;o9mZY zZ7=OWG$7u5$CvM=Hf^5)ef}1si(%lgEw_yqe$4Z_e>O%R?qtqKX)d-J%*a%#_4aQR z1YKRgTzDwfZhr01*&EGA!X}a#IcBzxL{7Vr>^DuTJ@*}t3wIh`MNeX8Y@}heO`m0? zN7$ZBoKW5zVFW~(SA;4$J^y7ze)vlm{D40n@^byN(xS?=wdHIM`C`PQOm7z)3U|;G z$yiR-xn4M_R1@7yT}RiL?kUKeNC2;g42RDx{wzR#wU0b_cY&Jq*q9MIwd8P1VJB{( zkwb53$&C4r;f<5iKf^DW!b$u_xl}E}9s0OY*3U?$D0$$lK5 z<1}m@iELJd2DP-nLS>8_jilp;EF|xq*Rqn~l~p<;K$>+zw8kX~yc(8{Z*-G&aeFAr z=&qhmwoOYvI_UTxdXAjoOyy<&m1X`xLjEM?=bYKcLByzi<#n34jwxu8Ic-aKU#Wo3 zNvv$(Ny@GuD21eag{4<}zK;sUn~jP$Kd8=%&5miS?47==)E6_$UXgiOzw3Bk)lG#$ z69Su#>HzRu-Ib*f?3$F(4kdLH{_B#}Z)w&1VlRGeH{AywAft6#dt~$tiWd%~&(ui5 zYY)RcAY`u5;lf3T*SO6)DS>l={rP|R%y-c zV)%nA31GG;q|Ilg-2AyCrh_ z?rX@x&(dcg$QGa|?YEVxn!M#F*v6k1XrP?cn_wR6!Fj8nE>y;smQwvejac0yVcPXv0Kz62!1;rUTbIRJl=xOk z;EJmXO4wP{f&HtseKaSF!)9AzGxjQ;3}3{#+*2Jf?kLw9`3nc>jGDq6run7;k+`PT z)m9Rj;|!jVn=T&Us-*WdyEsRCbqRPyyt8LzBAodVpgI1xvLHlAQ2D1IKt}vH9W>RV z#|%GU)?!!Uj@Qc1CrINjY`tm*18+GZ=f0sN^_o7S*K&#|w3i$pVorIc7R_XbW2F$( zHUGg%-(vE|Kkrg}+mJLs;og?9+o{_-HfIij?{VMeCZ+dtTe9HgxyPxQhcFKz4v2lw zm!b+2EwNit*4|dGQ~XE7k@K+BUP>~w&L7iR#o~5PK2k^w{8kdvtC`$6r&bnX(u*V4 zMWq>>HR6^ko;mu@&yUTB+J>&&CMD#VeSd6=Z?JiWlM_AzjU#p&c<|RnoeHnO8?p|&m2Lhe(usc?5d2=$W>W=q2;560(|PLy&5xv4O9HF$%jT5xmeOmbbtB;NF?87 zED``yt`Wd~01PPCK)&tTnj7X38h-}Fr~;B=PDPN9$xD@pgt@i`zPeyu$aebQZ_@tF z;v8VZ5Y%5wYECzB_~b`|ik<-u+m&hDXuHkuQlm|D5-Oe6Vk?MKmd5b}4l^!E)Pjh@ z@5t;_h6JDaQx9+P*qVffk^sCzIu3QTsGfd%LT*o5<>=AC$K_&CeO{fUboJH4M`^XR zS9CI4QwWc@Or}d{ueS#B5mO#U8S;%)!~FvhLkawnqO0Db!q3?un}Y* zh5loICvspU{H(LVSm|#!B^VP~7l0VNi4+cNWi;6)FN7PE6DcgkYszSi3xD!-egFk% z3h(Im;wpNm*mez6*kF?CiSh+;+HcrdxZCn3 z*cdi!o)#S19LbN9XtfD8^1$;>Is^93iWGa{oUWldUeDL?);D_Xg^8^+SbK)e%EP?X!$de8zzrop8@5P%%+0Iq}JK3cBzTJCO#GOSZUC&@e0YXA6QiLxbxRBBLkyGcY1 zQiBkZ>`UD_h(c;?iI#IHWl5rFks69ZGL~v6bxJB}ml_&6?b}o{%|2(&@?5^Z=l6O& ze?0z}M$5cru5(?V&wIPhwS1rP>(d)PM%7#G%5)&LVKs?FQuDurYSPD#r`+rFMRy-dC4k z;;yK*$2Q~y6^`*VlFU|LnKLUkvMF}4_ok|h-L6w3ihnfR$w+GKeD|U)z3%0IW7x-= z*M2F}U+4LwX-3l1sYTs~lK(51blEN8N6XP8k`HrdKmUDc`}#E#wyU496PlX7zq}k7 zQm{p1oL~Ib{6fj@sV_Y$$==8@kvYjz&F&8T-SHTEF)HkG$bNTXa~KkDG3%!lzj|ux zY8`{Z{_aFOXS-!9=5a!gAB4XZy>d=X;+8}&5_Ub?_-gj(*ey~b?-m1G11(&{?RKB$9ZhE%JBG~%_06}HUHw_F6~!M-QIV`?+XYx zSiN%7qO2F95}Wlk|8l;!$nO6<@~-GZ@zcmFp>_MWMW0!_K^%!g-2om`bh`HPZQIv> zM@*rc^ru$~4xW7eTTjPfhaJ^^ZP^0hzE>;Ou6!18Z{hS2^o$tTHEjRpIq1Cr%9psX6DIT8mhM|;9<89v{?wy)e zb8?}Pi`}sw<8^s!r!F5BIsLPRfBK9&IOpv{Ug*!?RaWm-iq>rzZpv%xdNh!?fc$`k za?0Bw)S@t$uac?1m(TeeVqoLRR%8jxE-EpB|ssm;P<+7z!E8aHZk)&j>zx0P)-2EY%dj2UGxYWAqpCy!b$Te8gh zG}~u||M3e;j-5U|CvDcKe;!XC_5b&8uu%8#>@D&07g+m!3r4oexANOAJQ;W8uz|(T zyKAQmmfWc6i5)aO>1@6*>))&2j_*6}={<98^-#(uWoxjg@c%sI+ox=|RAMv$NyoHK zD{8m4RHn|o^71Q#1&1(L^NLh2Sp9reE)orO@>KzSG_9mbU&0vSbLZBHUa*)B$P|)h zsy(Sxtc$M_z=IsxlYR|J)hxQ8D9O+@|7BLxYLBOlfK<0!h|QD-CC#jo^(Sx}H`-QJ zpd(;l{3mpF_j5;l*U+}e5Y)M!l5*DAo}tsBPVllwDJ12mL*w4>anvv71ULL_B?C1oTFM&Ihp9DTnrG`(+{IHwTaXm+BDX?9I^!r~w4B{W zs!i%KOhK9P)CKV{C85_=M7*WE4~0YFEK0jPV7FU;V2Nv_)R%BeT&5&aW$4+Igc-KS z{@d->`}}B&!+1wkgEYO@xh^J^;lK)lWkjF)|MLxYD$-BK9*_uRG!#YAJtEQ;iDq*M zceFev;2*KggG+QqFNYqqrd)1eVy+4sCgeyd$B}k%#677tOkPKTgRBq<8?Q1%%GpYk zI*x!N75mu~JDTQ0_(Zy{hpS>D;_Fl_ChZvJ$S}$s`OYCw(pkvn&_igCXdhKT|FJH> zli~CRlpLZ*43+Bdemq(N2*%n<|H-?3IKM)hVJ$ zq=jos%SJ@BGohnTm9sRK^aBmr%8@yT^y+Ikj=_{O<&At}f0X*t#=*C$xN-q8&A6QF z#F|E^vf)bh4TcAYFh(~?d`Wi?b9|>?Bddl%3Q1$M)%wYWQm!=n?_@G1mB_L~*mfbf z!YbQ+XtQ<3VVwU0bwmB5`?Ir+3gy0jWIS5V9TAecD8@ysLEva>^AfN5D@h$NYZ4}R%7kZFXwmh! z5K1WNMHN$Cqj_!LygGV4%&MUnj0}iuEi=SEUvi{uKac$L2kC^eaMN*L!MI2k=eL8A z=wUDDRQn+b)Frqg1?uIi-uLx#>%_2=ersPklr`@aT!^!7S9{A1DfbmIYOXx0WMMia zWU0*L-?mA8_oI4+;O;|6_CR2{+dO}{{n2l%?bBO)&>rqvT>cUr#iirX9jxTXI)`pi$1;HAs1X3bvIp*@cj5_V|2C0fDV zOP0%mC6#|55&tzc10P`Gdaw}dojzgazgOQxY$l93M9&Wy56_Nug9rIpR1;)U(=SKb zd88goZ3~Bf{mONkJx8MQWz&)JQb@=@V5{HP&A4&FpPq>}bLGDDaHX|cuTKey658V2 zz{m&Rtw2Hgm)W(IjlaO3exaazh4n8IS_hEil9JW%GBkkpFU{OI^^dkCw~tVEXcx0IMn+R8Ey838#7tFykYCXT4?z+S$)GX0Xoa)jIR%!M zjUQs}uQAcjC8NnabQzCyz1~7)fT!vm0_?vQ3KUrO5pl#8O8&if!&_R&mz|K>_uHe2 zJ|>l`65RUP#n*H(r~fNv9tj;oXf#xhMJJG!MCgd_@iu&h! zDP3@s5~8s^$^>Ha4^|R|9fXPPss_SLrm$9LBYOLs(BkSWk%&~FAQyPJ+oeBd#D`smv&I+)L z&xhEH{Qg1@r446Y+L0ei2O8K5SY^f}gf?4(+AVc~7j4rs&nJ^P-r?aP{du~xdl^o!L$xJ1;?=J%jhvA z;kVez89K>9Zz?Wt3#IZpv2^M^;;GUnn%Kfnd4=nEqS;_p7sP{QLa=X7ZF~A>&)3In zO3Sf6n0w7?liQqMgnIXfN$AXv0V}4Wt=#=7M?W#hNVK(&NyuONs7O8)vEpz;ES6CO zhmQP*M7zP^kdPM}_&7XiGD2}jOo(pqHm$tq`Di(~{XA{V@JrKHwKE$qQ1vH$)Z~`! z32`|g6Mj!dts2J}(Bhb0Z`2ef!(qJxRoG?<&&{gqe+KpPhyWxRv=5Dixwcez@4e0$ zbi3RS@8A(~mf93F5=Nip5W5)Pa!4b8iN);5WY_j345ba%;WT6t14M8ehDjWoP$e>%g_pY5Jd;xUn<&KPu z{b`KS$I)^(N;DX(?|9d`1HfXQ7ajhb6#CH@S0~WlxS3O(NdZ6*la5M`Ie@Zj=J-61fRljZED!tafquUG&*yKgj@##2gdx;D2tdPcRxt?w z1%s(e^HHZOudlV!e34k_)C@1bDo-Z8!NqPa(-PD3@UFm|d}TXF;k(}dz%{B5YP?aO z?Oo$_CS{X4L2mQ2Ib>AhZgR|=6e4o<4fM9|)p-9YX{)AR#hRV3?7c0+8MEfnUa(&J z%nf&tKW=ag82Ny6gbArLp-uDS4jVDfN$Yt}*3Tr=8f%o3f`SS)X zPFoD3spqOi;)(3Fr(~vn;t6_=8Y{$fNM6aVXIS0LGw~nO!GmjNcn=!>9SO@wjQafd z(+lBfNW<^KkYupNA==ndqDEA{!~(joS`PX);ewV+v3~wBHEjz=|HYR8$mNnO-1pTm z`49~!C})6{MmVP&0X!n2K}qm|uJ31cUG=BWk|{(MHskcXUzJ!-LdZ21oD4}iC7pp9 zTjB$_;6q-rk;vP=VtNiE78>YXF;W5*N^yt)}MMC#c#2+73Lw4 z&`VBN9sK+66OqIRO;%4r_n^#B1%QwGi;@89oFdiu7W?1TC4Ha%rbVUPvm(}5b=A$} z&ALcTkC6YOXpX^%355#)N`J;$IGvDZVF~br+t9>|>&pSekF`&X>9I}AWG}NP@Q&3# zFWM+i0C>emW^b9kiisGJ^*fSU$kmUQtK_pXMd1qwlB*QF>u$lxIRe(E-#SyKKiZP8 z9>adNjYKslxt@h;`J`%aT~ttCujp10GGz7eA!NPGZ>5%EhV6fJ`5^N)+zFxh#-&k% ze)D7hQTqiZpod8PsWY2IF~b04b1BPeMmp#qadzk*(Qf*@N~~Y(%UMIo2ar-WEt0j+ zdFwP-AHNfQ+URx>F2pjv_3^OzMs#EkA5*omKf6wUE7p6`*T-yqD4yijkGY)~w>-&0 zY|#)$1|`JcwyS(fWG#5j&wFDwzT^<{K_yy5QU*H5E`iy!DrC(Ufhz2hV4-=E_GP6x ztbG3@kQEn5<~ck0#SnR{T0bNPbeZdbcmVe7iqQVEt*5W(>3L-Nk?{ccAY?fFh@a5UdN1lxbHd)T&k)eyyN`dpogi zW?bFE{U&hgw_fy+Qi|<%q@xFW(N@vBDP0R|sgt}3apnV(mqg~_E zONS7?>ku;ZSk1k9c{ckrL|&;sYu%uWj1Cn~%;mb-6=^J|mqa0HpDsl?y5Lhk;g**} zsqM+FWcINWPg2$`Uv7=&dDaoRfHP#^Mp?U&KTv0?`jMb9Vd7}jUvf|@dap5QMh$v= zDy7n>h7vYlmaD(t-u;gahW_Ht4O-{EXGWJ+%0m(SMC0F$IKN)dT=>|H-m}l_gv6I# zg_B&p4tS~zb+N#nr9OKRLtkKHZe$1%*tBM#~mC==64 zDxrhCtu|bW?ipZau2His&%lMOUVdc6mQCnntE4%zRvaECucNN2*5=}1aA^v$mQPAR zeRH2_*ah;;WleSsGJZTdOx3P7$2)ms;e%>aU%zpCLhQktvtwl*^AZGTq(sE^B-Gi*#dd8Qs$?C6HFzq_`POvvs2`OXlg*7^IY%NTAqZ!}T zZvT`kks-jy0uAKezp8uRfU@H?^Vye6Za!2Hy2)4LJ>kvw-7j~XYUllU(Oh@DNN=Kj z$5(#j`qqi}Rw?dJD`)CyXoCrSHQRf2rv9_uH@jUsADX>r>KR_yGrviPde<58IXXIl zm2ha$!wS%lyLhbP^A8<=w5BEC8oDf|N+pcR#XFz3=M=l$Xyq-%%y$W8dq%NNPnK!E_IzmRd`wfaE2 z(XM&@3sCYROFn+tA&HP|2?XfIBr4s;rcFF?l7GtE3)?2egddJFRp(~0>c{Cj(yoIl z*fc4g^;K;&C#P>J)2j%%Dl!mhSc@fvG{rCrVf1Ta&V&loKLY8^F2Pvl^ro?<;^YP_ zuwlQv;=A(@H>SAq=a$l?s9thxb|j?^-;U^|BWqCS!W)ppZz;tlU24Uh{F!kQQvt=_ zukchq4_|uoy*xe3QB$LLcv?IKc(+R1qYlyQ{Aawl@Sw~)y@%KB(gm1tp zhEcbV*x-)z^JZ1=G{%~Qadbi|_3&vd<-d3vHJX3zoEo(|aDVyerWv7_}Af*Fiy~ z?-^sgQJX47k}4jhz3(tuB9biX;sHfx#g+d)ivtPUH*44VhBYDEU16uD>F5Yo=|Qaa zpdCrcL{N$lAy!()2;ZCbOmDFYh;^-OsmJ$SU)Tkjg2Vk{o+gyq^G!(ZQ^|SHptxXG zWF1gNL_E?82`w1{nh|2+&Qq1iR<9$=dS&1Y*BT`BjFmg_o%0xhld(I3Ny1D>$)Dp+ z8f#8-k>$qJ#(x!gAY$$jvJkt2=evcH7ZJkvbv>x8pvR4HXdzG$TqM185HjTr8DDum-PE3H3g%Fo+8K#!H7wPIhtp0YcE z!UWy$@zUp6Pu{*7a|crx>gAFf$-G>?g5THmBh=yg6Lrw`!$ka~bkhNSC`1@&v6}21 zqbhFHR~=2J@Pan&y@)kg<%cByt=dR-Hf`Wqoxf&BE1q6*12wxptugjqEAI7p4bg-{ z?E56X{&_Ylo-!+>QfL*H5GnJZR{vH01V7HFsUb-+y&4?3`xt`@a8X*kPjbYBZK&JsP#zJ|o#5i@V-PbNlu zV|M`=E*fYr6_C?0u?FA`s)MBl6ybX6jtX+M2NL!?q_&3W`NGmi^t!6yA)KR*e*0SP z>s59}*1?CYpYwJ~givR1;E9uid`SE9yGOyO7WW!yR}ct?V;w+8%l&8WGCTlYtnLc@ zAy**RiwPau7b_2*;!^7u=R_G7e^vjH@#lEuYLcg!s+h-waoDtvfp(2Kt0^H^NUvFO zOJB`tWN*)q^96X^b2%b5xwnjz1O5x0AQ&NP4=U(;VXTU&szJiB462W*H5NQ+K2yyW z3!0ECAu@rWL{Um8o<8 zXl^?Of3dNW)TVwFNqpz@uELkO3!d@dQa8ArOS*7cuIQfZ!Ek>3xIR(0K3sr_kC2VQx~u=f|iU1}R_ zat!x7sXUE{dc`tcVUAx3N7*N>3&Bv_Z#=-yD`gX!1D)V|}$0m`*z-eGts8;fXK)fav@ZXLbwU)~8f*!YAZ8OWsVY^h18 z#Dm7s5>8xSGHQmZO^7^H$p)%6e&3U<(>+YwS)q@5-p?av4S);K@pfF#Apa|xa1`_=~*p84Fgdt7lpf6gNy4B>p$pZwKx?q&|~ zHqq#e^UuCb>OU|t@!wN&Vf4l6F;+3Yd5E+6-D*7G#zQpq$?Xr9uf=vM|El^fX|P@zio-_utvmYA1zB^!lROa^C`%q$vO~a7 z`5`X;nkY~`kD^0BvYqebH!@ap1<@wSFH$Y7r=8jz=2{VBV$ByJGT*(Ze%}ZA#H5Ey zc{>)&(bfIeL%)7DLg{{S1v-__C*u$sJUi!E{mXo3SC;zE0M^G8F4`JT1*wx?nC-ay zcP(RpB@bm>Y#B88+Bj1d`)+()FIR8%x4^>Tjk@FqHDwqc_tLsAs)6nLu$LJTsfm^~ z8p^Kc8i0;A;)O=Pl@9+JBV+~xgt?&kxx<0%#iK#S7&0u_y7@2AVrRWLn-q_FM;QMPm}L&-5+FN{xh5Jq8kiZ`e7S)P%rEOC|`JU{B~F^7fcb4;r55p%h=;2@hjZozThYcjCn zOWUrs&g>EMfO0t)xNM{h1%ir#eqY@Sl$A%MF@kY5zKX$-da1{>lcT`R z_B^>g`A|}r$>YI)AWSvuE?rk03}&PH*{oi++=W^TyhNmuagBl2SgXU6?jSRR8R)@6 z7lR$veVm>;%J%LqI`?Dl&)ZOpv?}v=#reBRL+v);L=gFCC0CkE?v> z&W=8Fu&*o_JyRNtn4wDHULa>4Nr=3>X46toY$i>5$z8f5WPARu<|ET*2A!jhV29|L zI(PViav&rASrfijZaCWf8RymbkD@H}Ysg8-mAatLm()>y5C5FBhxdY-wrS3N zIl70X3Ha~M!l(P?3709?*~5^3`!wq}ew5!U%+hz!7F}$B`=->?U%Fo*xKQCq?&Y13 z?!WHW;idAuFsc47?tnN&IiO=6sd4_7&yIuYz`laI%eVJ^B#w%g|GIEInRBggIkx;p z1A9}{=M(FqJ`?6|ZTv2Y_(aVd@Tt#=-v4}9#;u`%ynkS=7Uei^%Xgan3NPTebY)cY0 zpKwqy{}+{u6u7}P*v)-2fKofm^P~3t6U~}_Od?rFm!x2upR8+dqTAS7=@O(7Mc2uB z4N4D0!+o-D-r}ULIdBxzIs8_7uSnIw{~(=cZ&!oB&c+5Oq!y9Pk!e$ozLk-y>=CpK ztiY^cCBvx^i#my44_YxakZ~my`KM8u3A-*bL0_nc`P6)5R*@zEu4LRf*;k@9wB;xq z-TND3tn)J?PhQHlpS{(XJUZ&u_Hy98YW=Rhu_C8&bmH`@kH>b$!lvKmldD&=I$Mda zS=wb!7j56M>fKBChguaL%&dz18P4U45AQ`e0I`?LVzQOb`QvtF`aq^j(1p-?sDHcQehSB=C?-gc#gFfRPMq~NYNG~>J=NW+^e*jLD0eg(oLQ!F$wqjkljN37Le;;dH|UKH?Q zB6)BjkUHpSAg5_!`uc1!XQ>pE0b}CU$n>ByRPwC-QVf;xH&B{PVCMwQ?m`g`q)Bi* z%h*9_1nVLR9<9f^{MhK6x-GD6Hojb0BKo>YR`*92HR!HKe1tKy`>UnD^r^8dVCJ^Y zgp!2(+ahe~3ce~#{ds8`AQ~w(KK(Qa^f|QOTAjR@PrBELt}Y}^MkL(1D~TmCsh%>z zjef?_d8&D1&H2uF^yaaC>0iOqmf}K<=~B^Cl4^OnUM(1id3=#W zM26|oM=qfGAb3$1bsUw6o+0ol zpDyjq$g+|2=j{5UUM8j4g+_r(PKCn>o;beIdcvVwmF2Y22?`M;`=e@u(2IkM~Ox-EH_}=RW!mI^$iv>Z#LnM8m_q z$K}cmrwukdAi9R>^;``m;cZePM^Mcl4Ajp<|I9T%O|1)|_P2=!xVd%|pR}c>;OgBM zsXZ+(8EaGNCy@5Sm)YojcRC2+3|zxL3pifSH;IuQ`(*hOF;5pmNj|HO_R2(|ehc-BLMW zT%A+PwF--rN`D6gtIu29;q@~PR?dvK5sk}04okgySp zT#Z}Si#Qc=xLXGw?cz`WIOVcB^s*UE&AqJFg#N-Ed88(?g$n)NtlWJyLAtxdp4KG^ za$Ie*R{QsmlEKe&qLbCUsX-oy{R!X!E{VxPChWoGS%@(UPB5o-zlrdO;Q%!0>F{KJ zr5kLHch6|$q@5%+^qW;Bi0IAKI{WsU5RYmonuO)-PcC=}Xty%Hk-%(x9K~>h2E&Ol!``RVs zgG9TGc^b(#6qyvN)JXpu7y3)|hqk?qX#$CdEK67fxcpscuA&FbnE)gk>*oC-YX(rx zxPA03ti0=MWec$yRfx8605P!&rGkk(yTIYu$4h;YQ86NxSw}8?;F493r9BqAOF4q1V`wxjbqt9+l@`u7dwEp$y)XdSU3Z;A%Pl#w&hxaE ze>And@+Li6>Ph>Ip%aJ%ph)5K=@~Hb9nq^6gRUa`Tb9#67z3$9uK#rkC0JDqt;K?c zkc8Dy!KPg(OYg_vIr#2In6T-2iW%+xLGWbOflblt>V58KiX)m{bZ|%|s0qR7&~kqb z24oh|(;;q|@4VZkb#3O$*3dXWod$_Mu!$yhE#ZgYz>J7Hymi*CIQR8Qc6m<(CJ~w!2snve-bp<Gs4o|4^#1ZVm5(?5=GoRtYVaNm827J16N}US8R{8!*!j174kw zvutwl8Cfvpj?VhDi{$^9H+Sb)6Mxd=T2CLyq5&sR&0ae0+d^p_L|`2S^t8dUYFyw? zR-D#by5W@PGa0|n5L6%3oIFh%$WqVc>l%D;E~i*N7IUs6tJ?2s>&BTAV3xSz5~ju$ zN#<;aQyM&x2RJj0dj;f~e3|sjpFNn4fY7aEFP)dX<<(sxm~*;nKw&*SWBwRG(&_1m zM6;Y85gch~kD-RbADmu5D!6V>Dels7?#F*Q`%D%>T-+0JIJV1np)PelL@84E5_T~b zW?ycT{UGW1jusX#csY1BlQrVIzw509V6ZQ8=&>LnCSSh(;O4ewRC_kphT0J(=+HA-m~!7k{SNXjkj!-1B(>ua?4D*QP&ocK&8dpSvIty-oRv zEBh>?TU)^dmzcx^1c_%%!Ydl9!gIb?{f^d*`FBOwI)NI6vy z5_J#5^&b^$W9YRa%SXuh+UWszfifBnB~K-z;qYv9{0$2K)UgaNgtf~xOiGTN7GfEB z9`s!D>f+)PBA(g`0WP`{xajH{c-QJ1Eh-+gSxUuM5X1_9$F9UiTvi_}- z`~B3o<3{lL<7qgLGTq!?H7jZF(sIxa|E4Z%;q$!LDxh&U`X*Cv^+Ueuf^gx8Z}rd` z7IBU0T1W+$WvKRU(SIGHO775RKS!UyYQ{u}#?8+yF`9q#>6H6K3979-AAs?OZi6oi zkWSH@w_EPto04&O+w=_LtoNSKr6YlhVk3?Pzx=AijxIQE^pY;Yv|fEiBd1%0j-RoU z&OE}aB9Mb}i>^L|zaNGHT30NM6apejtZ)^(8NBY& zp`9PMaf8JU_%&*@gEKl@VyKET9T{MaJqHLq$WJ(|JbXt>dK)g`miE7aL`o2B^rO1@ zbYXY+2>3gX14YJ#J03^|fwkl?mNEeez>60ij)}vb07~5pdC7%8)S|(d!8Vck7bNAc z`{H! z7x$DsM@a5S0{Mlj7LZ#~RNa9V4#X|EsO-`0LqyB$-o5my&9rb2mcc+9EYUXRl?Ye& zalZkLA%oB&-*<8m{cv1u?OJdvb=F^j(biSXRh!sn_xDG#$y89shm}#iygeTKcLBV; zzkU=_1@-b&0k9u)RV7f*V2Li}PSkMgB6FoATV@~pwiT;*iU$AyfL%L}dXi|RGfHwR zO8&5A1!4&8WUr-(?ORJA{!TI91O!e>`j{CFZw>>Um|_$E%RK(o-&8{Sjx+1=D>XaY zrJ%Z0{{`Q&*7=`nFE;(+c8@%i>m_28Q^;s~?Wb!P-YPnfiB7y`hUG8x{i;dpJ5`*n zI_6@(Vx+{4USj7sr?kIJcV73A34l03jUh*7K0vaqR2HW%@XU&j60cRe9Lf3hM%29b z3UaM!QbAfn9*Y9*v0jGznw!~3jE0VXKE68&5d%GrYD^3Tc_zIH9!PY=dn3A+t2I|! zJcPMB)0~FB%Q@hRgfWI#Qx}gdgWRsA%%}<6_HNWRtJuK1x4J49ErzizdkIzOW;5z+ zk~kb4iJa5 znAN;=yM6G6A=<8~5ZWE`_^-*s8!wozQ5-!@&z>UZ|HA8FSEn1;->~1n{#jBkEudPE zO7Nu#8BJ3HP#!9|+<$xdfsr<{^+<|U2T>eL=yFcF*IcEf{yN!4d2}0y4%HPZMUy@` zf7FWl9?|pai(x2GdVVS=K_m!iCj+Yf9{Sl3OiAryS&FITtDliUwbxhjuVU?|f3tz= z{F80){w!L{T^Fz9AGmyh%I+6I_G;5d@pSIxjho)N0+)=p@qOZ~Ka_yak{3uSUL~#P ziTEHq5jt1O21P8t>k*kB*1+X}w?=OI_O+`9Xj%3;V&T+65E*kD55(IbFst0?S*3H0 zy0F8Gd?rp+j0pY6{e?>gAhKZIp1#ERPAu_U0B!rUKXB*0HR?Y80W#?Iub9eXute|! zIng_D$SCKxt`*Y3SH0!f6m^1x@rYYh2nhnF80AaoAgG$)61HZPGg>~9ad~#oVIS%& z>A4}7dcas05c%XMLun~X;o?gC?DLa}!bJ8yI)YVH8IXk-AtY;ZNcQLI*Kw;CquC=f z;W$Vb=<^005@nxbY+hb211y5I<-Tg89b-gnKS+xK9bGf&f!1@D4W9d7;xT9Q=W8if zHX0)uW^$6*$K9l@t^g;-}``c6*bMO|cz zF0T-SV9Kt5)sGMwB62`NuHF%iD%ek_<3oscuPMm+Z}M*f<^gd)Zu#yOsfQ2j)v-L2 z7o4a!=FaUNp2a2y5a5W0(l>2itPX(Fu{Igs{0HKR(>^kqHF|J^1-%fbvGpLN=lZ;# zy^i*~=f7QYPKZVfx9L;%>NYe%AO3IU2!cE0QMw^##BAarFF3|g#pn*FpG@pSj;=)r z{@9$284hYsIK2RsvqyY^MR$)OuZ7CmVA|0sa7g2~$F0Fv!VR{+{(Q9Qzfb0I4U4^G<^{izEU%b`0w;E;Ior z?j}h!PZMk_K=|aL_A1+uk?c1^+~q$M{C*x80O(;pnTH;#Z}!y)lk)B^O)Fzlf&<1Y zBSbMTj$A^iDW4z|Q?i%-P%!&=7_glf7eJaYjNNzukbN98{ zwz(}l94dXy+l!8G-y6EA${TIxvT%8&LDKh%{}Tyc5BPZrr?d(@{@*;fYf>`3-GdR4 zjaVIY%Yyw@?nj&0uN3(G>C%{!OE@?F(vz?{C2GAYWMd2i@vm-Kd`=&onw!5NbpX+R zne$wk1$HP{&IZRTO6+I7!kZ-aiD@{iD{xXi&bn&q*2NAM^@BhPB=aHn8yrHdgq;IS zr`>8IS0s4fh; zTBUsj7B+~qjNO>Sh|3iFPSfK73D{sTXX7iUn?LKZKh)-4Z}r)>z0^KbyC7K?F$|!E zV1EVBY-lfrm-jlmn}k^->wa068zQaE1gZe;alw)FgF_`N#95Z%=+ya}5E5H^Ow3$h z1SJ0b-ICOkjAf&Yt5)mMF3h3xze;B;;Q_38CF8ODOyl3y6gLOC;^S^S$ZjSkN2`| zv&4kDF=E@i43}v-=-ANO!8XhB+g_iO`4Si1yv~L~*T;nL@QKU3sNAU$E@3SH5fC|)-z`KdApEI+exVxm*$f_x-nPSpYuLx*-jWS+j zp317r=Rw#VAoZ7s%I}oP`g>)+rZ#pkwGGw?Mth`Pzci`@vPHFfM&G6X7oc_w>gEfA zTp$`k!>e_l7X*rZi3Oo4l<#uuWwl{LA^-qKhn?7wxm00zB?WPQwZ@z&b&yWB-cH0~ zshK?nn=9E$0kvK4B-NEbTvQDjc4E+0W0pEM8JV(v<1L$eZb-!dpNBSv;iC1AO}-CS zviIIw08CHb$_4cJflkx9W%+X==pjg3{T1_+-mAD)@)wGLvuW<$#Rd&2yeTI93(zt} z)zi{XRwA~k@jv7PAWo`!i;;X)&051(6NV`>a`rQNRHg%dS?^JG%k0j5_tcwPu-Jn_ ze!P6TyV(~ewf+}ZoxIKt4u?9^*>ZmQs9@#HH;B{SZ2gwcl&45`B%Fyj<7(}g_;k?8 zvlLH0gBkh1y&_XtGxBkE+C?-`aO4y`G{6iqdyQPT|FXM@y$#)ujwc&E$De}vP*lRH zS)ObEatp8u^9wXWzHOn>D+4-%P30OXIvqj9u!E~5N zgEz$jyH&2Xo3eSfE8^ijTz5ovX^uXX&0FiR$aE zyKq^=q`E-XkfWSc!7$jQv8KYYfr`Y2OO-=>%bJ=`85`6Eh+gRsI(4BILFmB+w`LYh zGizt>AiaC`r&d{2ce5qF1nBxB9^*Hmb-=4LFq*h85($q`lRdhtyMZA$p`S~-z`F4R zk*5y>yLn1GHg!ZJNFa3@w5{T_+#`5LFAGWDxm=BWfSdM|${OUy~rpY73WxU7i-5R4sO+eLu zv{=~8F8Ma)e;E$;c!rJtB8Lz-3zFC`cSLOu0ZnBSy6;Ae>MSaq;)uR)>qPS8Rt=)J ziBdjc3oj>63wc)q6}yk&c^99N+~W^2G~`1bJ`p5mE3BqTm@*C6 zpwo!fAZp(^`_%Hp4AhZe|D!v0)Wbhdl*q#J_f+ush2K3{n=WWV5zlXnsb)E2;~O{| z=iu?nq88}St{>p3=cC2xGw35NAzNAW+F~kKM6RB`D;gGd@ei@Q+Re!AC{-u+MQ71l zFZS_{b1!K4cy=5l0s%k1N)JCTDQJtp1`?j;**DgSa-QftxmH&+qt?{%R;_2fLcb%g ze}~{lPQZD*pWDRd$=e)ysZSX7`*ZY2>F-Y6Mr*k}_QmO$a{Hj>_-yZ!hl4m)O!@m; zr3aG&PZxCq1qaQl{^P6~0d1Pm%kWU9y;BxUuBj9a)Nyji6VHd7VULDoEXN-+p^%9< z?A%W6t8Av%cFg$(_LP>@^zcd_SI(Jlel#EQ5n7HLaf7u9g|U;$7Fiw%YNpN>2>HxZ zVg0>~>NCeLq+{FQa~4Ej%;$nN)7(QkID}dO-ZIN(8d}LdKu_lESX%RX;Xw`NY)sni z-INU{jHr0(+@A&UZpRl+M9F<11<=97_2D?|1J&t#pIfg)!W-C16Qad~*8Ox?8F?+5 z6GC|aG(8!WgTxHI4)>t)<#dtWhqbwsrefe@eT(Rk*1cRH?n@!(qGlx$n&Oc5iz^or zK{e>uuiRs?Ws2VgYrqy}C=pXOKU+b-%?X^nr8Y-d{ZS zqe*E(`kxDA&5hS+yXSzgnm()KdYG;$^2J}yUz$zeZ|DTA8cT89- z(Bf&mmFyU9A>3C7#iSj17cst&wwHzwU)bOiCsy~yG=wamLW)|JNs|)Q#M=fo*mEye(@eFkwcF4#41wH!8byt8)3$w>oeVys; zs|54U?BOap9EoOVyeuMBwxAUJWh}s#E~+3jxOAJ`=Re(2!#N*-j4M=+PIXoPfnA$j zP)H8n12W%}Tq8OnmA_QRzR$7&g_c38Z< z@373Ck4TrO#vtRSo8(z=h>Q6A9by)oG;tiSrG?upEAR0z7SWTz zCX-7*`-v{gb5PqB?WK&ZsSdq&w>}az!57rIvz*>4(LB9>LtBUnof%25A;G7mV?+yB zK4(jn<@#YMs$N9zP!fPp6)dy#r(<_*8njlw#rB=ixWI$FEM#!1qY4Dr(XI+uH#Hl4 z$)hfW4{{61iCzK$B2amO>gHfLwx86Hm!lA7~R2 z7yLhzy?IcT- zY11-l)M?W;)igEJY-hROUEklmJnqNie%$x{$8}|CrsK>xpYwUY-mlm5jd_t4YsVPl zIP^9>`yo+1=N~Q-Sw(39+t2Z}1e2BschECJuU>EJ zi3znGXJY;cw*T-??Z67nv)7rxCK|3vq_N_XOsh-8tg2xC`qh>JlEM(;vJ}j6Uqcqc z1*(K%y=fl0X%lFDhh9vWm40w+%18FXB=v zKNd%4{W69#AQ#l2p6W^q`qIRFIu>I!3%Hhb{drAr4x5wV7 zJ;5XQs)+;l{A3)4-)2r8`Qc8Red* zrB9wOdYPC3F>ATCtqDryNO1A@@_&ogq|mk|4wxq?h@ZQfwsD@gv&Al8FmrGrM0_bO ztS{-c3s!>2TYdc-27xcVJve=-z>aKy<6i1?@8!Sl?${17&IK`9Q#=%TP2cRxTkH4b zSh;cibr0!GV&m`>bPs2=qKaE$7(t8{@0R#A!-mh`4IYijFn0EXs}@DF4hLa$bd!Oz zB-+f@vcRBXpoHZb;KXDbDO#r@{&5s!#Rd3R%R~;=?%KOzr63Vy4EWJ`GPxCRl z)!C&pv~cB2x1TFRu>?8AQxrVsu@k_5V%ecc>Iy`zW7u@hq0Jd(T*oO7(oa+WZ0Lyz zubkyf!;Pv}M^Dszb_FzoW<-%0p(ghTQhyikBG9e)gd?Yv7L&iT zQxU`7Pn5=ZcBP0#c!*A6<#mkP^EN4!MgV^Zm?4bx>EOwJ1VVvTp#uW?;VAoMBHqdYG-Kx(&7$c0I5}hRc!RjTo7ZBFt}2=@Q~zhu z$GK&QsIXj6SDP#i~CjZ{C1G&Bqu z%8;d{Q`>rmyk}HA`nVd~PFA3kiex+k6SAyir@Rj~zF-}-C5NnQ3fPpDh(#aW@(UCz%2tuyX3JI$8T=d#u z413p)>$V2>dl<}(91vO@WrQkrsIeFU$b39u0p?8PdiOPTNHJo;R?_!=M%9q!b{zTTp0XK z@IglKo^cpeG>RyCV}8-7%HPpHMV!qjefoTYN5}qYWvuCL-{&PLJ;>JV_ua61G70-v zMF^)`Ecm0`<*>E%A)FHDRZ~#?Z8GiPZs5)V{pLTHDUdaV|2ZOe82(fU` zZB7ikWF_;J;Euu3H5})^BoVR9$rCG zmmkRSz0al`u6gIvHaBzd)VFuCWlEX%^@+6Z@qb{y<>o+AH^u0JpM~#;?rVpl928cU z|5m8?PH6Twy$nr>LxE2QDgf<5qQ*t1u%o0}0|qS+o2r~(zr#B_6LBF=^yubI3o8A+ z)_lG9I5OtM`me3Vg$pSK7QoH6v%xl!_yv{6KRc%Q63LAxcE?=V3m6Qefsxb@50E z6?9DLedGqLMisWwz4FmdAq-H+M}{Lng@i8 zb#A)g)3{9xYGZ7PI?AxhT+Vrae$FE79U;-aS9(Qqea{klFMY|_|H=Lvva+0u8dH99 z;`#FJ?1;q9la1Y_NE?UnWN$Cy7BPwooU1d?%aP^He5TZKh{q+3Z3I*Ll$-8Dsw)%r zXL@yQOi(l*lo%9Y@<_6ygi~$nc0D}(wERUwsEtg7zoO!>@B82OzecNL*53--H~a30 zY-MzMbgKpZf%){e(mJ^Bw>t~k#62y{^<8yZqF>yNXMeB=H!b?IqPfWDT1SSZBDvd} zmDc0^eD8hXu4+ayCebb=9tOX`Z|&Oy&0p3#kLAq5QeA9O3SM%ch&7%s5%Bt)n@{LP z(;bWXp!54Cwka&o%>py*u%wpTeM)T;Np^h95iy{`{>$1y8~^!Py6j4{#G^k@!9^q5 zmGEFJC5S}$LV7JeCB|W&S{g~lDwHMMNB*#KJH>UJ>&pE@MTv(hzMMach&zT2AM=d? zJ^%%p5t`t98|{TX4i!JF@w1z|n_N@&gNp>{^ePbAYRiMlpE-p;sl}r$d!JKQt6v{a zU73W&lqmhdn`MOYD&j`r%zJF=i$$y7uY9S&OdNL{Aj3tQ|68Uc$p5 z>l10OV-Dkka@KbaTCY6VK!5+%X&VnawBIi)=(Rs33T5vKVxKF@sCkx0N@O@K;1QZk zhdYX-r$h(`&R|aS+Ms;y_E`nsjgSo~SC$BWE0ocESj+L<+42!?UJ}2-K4t$6=THD+EMci2;^Mc4Ta~ zm6s8ZQAQXJh8h1CzwS^tEu~4dI(p&fKGyRXYVOu)lvOuV%q3$nJJPtJg01C0Y(YxI z_2|D$*wNJ^V*AQdbRyY1lS4XS%z)wKzEjQv^^A+_IAkI6sKRNW9ZvSC5 z!s7Tm+jLGsYibO=Bp}^`=?5_;=hm+Z>3dGV?TX7w5)X3fD{?%U${*~@Ar-rR-IoYi zOyzB|H-+q#=AFXoi^TQ!$=)wyZ{#OVz_p4SA?OY=iC|3#-C&Z0lwHoE>A0sm#GvBgOGkji>}4QV@L?14X|o|;_gsJ;zF@|cUGsD45ur1XB_vcJ3x zAL4WFf-^#|Cr%|94<8?Yf<|DKt-px;BOWiBxCYF%Qz_p;Ys?8#Srtf2zAu}3IPr_3 z%psAyJf@SU^n#j>rG01^8qy=Z!9Jnqw?9fPG;Sa}<(ib8-S3B`T@mt>X8$@$@yi0{ z@i(5&y18JgAQLXxiHqQf4IiP5IWH4dEJ~efx$t$*k>Ac$eYM!c2GSQRYlPbBbkU8L z)r4;?cJhiG-sgfsu5)GWi)_;NkE_n!=2vU{UQy|5Q)-ecjIfmOXJP%^(N`8QuFC0* z50@7X*K-Rl$aPdQI?(sAlRQy3)59;`S6{>WxuUH_U~STD?}SsmEP)O>=0EabT}CZ- zvL2NAPlDZw&B>j&PWxF6!OuLvx7dC4{^MQ2@dfy804=JIR{VzV*cZ-?T5*<&UENRYB`T8(InrOF53*>1A$%BheR9 zwU(vcCjm2n(T)A&P~}f-{Utk&C;dP9+_&13@V*UM>sIA7LP1pp#=(AW6cu!6OuCj& zn?)Ty{aO#6zE;1>^MQT7UZp9dm{Sv$L{qk$SML`?!!gzV_3Qt#xZ|$`e`J%^nF##? z(2HR?GKk(@2xl)C;N_^eq9uJUB`GQxbSFL-+)y4$9@_4gI*0TNT#AC-OW9n+HR_?jJl+}oEtE35GU;=R zv7NQO+3BI0a8ie!ma*P3WHqHJIEBr7U1I-cv1nCEuF!3sgX@Fsm-+)u#vdSNU7TJ~ zUq^R!FB6q~>0_lzA~#}G1J>>r9ESBZp`V514>U?AUcN@( z`7ETm`@ONs0BMCRD;Ss*khN_iN3yn|BU#(`s$*0CSJw7{RvKr$ZH;iF?Vs?XKBhN# z2P1yZrBm@<-VVKmtCbd+VsS?cK8Pu;#J2({y`}H~h?)PaVJq7+n2wSkd>~)5M+qRO zqh#lT>nlZ+(D3>(|AUVZ|1Q~(#maM^%xsm7_a+r*6J;~NH<>^+40u+a5eSEi6t4RZ zvTb(V#@dyWXWKa{)7@kRvN!Xiw)z+i%n2Bdac9zR^Z6&GRR^l8&%Di^M*mkpiN`z8 zEJ=#bVM~($I2q-vG>I$GV8y{!oY?Spypl+>^xIPURCZ&Zj|^uh9ipq;5@^9~Xo$GP zLiIZgcLT^w<**c)7e}2TA55IxW;ypW=-6(j+!WDg_c*M4gWWVb@o;&J38>PAtTb&` zmpfPFr7J^62m3TWlNYU=7iD$_AM_6AULz>+kg?Xel(h%T{(YNY8yA8&BXUoL8(7>& zgwKgOC&xuX3&%$sZL$_h)HdgNFA2l_tm{WX9gkeRoLwT+ngmguQBsc%cEV>QX98dxcqzq4x6ZUz=r`Lz+wBE* zzRL)S)ZuM0y{kZ_9+M~KXD`mTc$I|99?_U8dHrUJkFN< zMoDButjyKHR8Krd^I701AdTDciqnTWcw7ET;}`=q=~T|<-S>%oG>awNJ3jtlola1>bI_L7VwDc!TZ?M-^GM&oeRhf58ZRMzj`EV~XU z2c#|c2px&(^fAu#jqc7zH!x%>t5#j>sKlE zg6d&jQ-j62Z8>kWR6e0~Pf2dydcy4MN~ZqxS>>k~9hXK8@!DsC6LxK@vgcHm2@%_C zPhAr0C$BFJd|d9bU43>j2T(=6|MKH^vr6iWpJza>jr({fU0cAtmPST?+bBz;+ytx|)tEHk#JuUEPJek0_V>Ro}=_c%zQ|w~B5=<;x?a&En37 zRGYR_9%2u{?_(UfNA$k}FOyLrF4VI0urH@{P^0p_BI}XZSz@yakOJEy3nNFGc_y-> zqsW$CBM6hVM^0v4bEOtzV1`{F8af45d?}Ay)H&=uxNJo)!xg(bm$=K>r+~$&FrP0? zBH=Y-&ow6#RTDQK3&Lx@!J?9Y=m-vA-E~5_N9n_?&#f7X6!5mX!Ir+0_eAnsPkHh= z+NZ$tww1LgzMO~b9=(o3ISz2^i}w|9U-ze5G$EN3-k0nptZtW@ab`3nEwv?2`zxxO zl9b|Z>|SUi$XJ7Q9^$+)%d?&7QOfRLO0m|MZ?xIi8%(t1hllvoZx=&hHTIMJ^;^=m ze@&;@4WGPIico?p3gp-zqD>T@W1FZy_g$A0_eIG5s%+$T=2&~R{&Z**2yp?lX&zQC8m5Ot!*g|Hk_-*pY z`nl_w8`W@b;*mgmbh)fwhc+4UmI~Gqfijni*`({1XhnuxvUKZ)Oy}~yaT1|pyB>M@ zo~iybk=axw z)cUaGY<5A|i6wjgu%F-i%Url%U;{4aw7dmd=S!Wur)B6lsZJeQBuwtdv;szJtS{5b z>j>E*%m4iv(f;XJABLZhd;B3Yt*O<8lG|)*``Lqc_n7~CX=l_L=Lz}!(l>=_SoAL=;^B1r8`id?`Q{bhjN+x;g^n1a~ZT=@~9CueJ%sm6Pcth2n$))q##Yfm^wuUtn#q`!kRZY42~ zA@Fe>*uSXwk8yRy_jdPFmA-o&KWRrNat?oXroE-ze*z}x zwWVhJ$9{E2bvf_k)dA9OSKe^2^3z2QHM+n01zd#}IPd->p&`mo7dX_3{_0@)9{1~~ zN!NABVmWtv(@$X^vAN`*L2qoh&ShW%YBI{lT=imyC9YUHq$~KqT+%+SIm>46VcFv) z(y9{G>9_x{d)5RX%*}3#v&I8R2|KP z4Wi8GW;MM}x0H4N6=%>x!{r2oC}=$pkjko1=ee->wMZFc9hkm!o{ToS)6BG$9t@YKnuBg$Exon~Fdq>Xj zXf5h77NT%`e3(edV#1zRc%)P4eLG?pU^Cm>W^Fjhdf^u8e)3W;cgVy4nJnroU})@m z=@{)P>=Y0rl>Dy94z7X8yZ-eL{top-2CotAFFq7Qppwja&cOBc#l-wkwCnCbWU%Pk zA$B&R_(C>E#%MY9siD{X2Wr>@20zrWB(m9g%=%eH2(;Y#G;h~V36MC_`#+HdUF|$7 zwzFsdwg%ipO(QIy02pt+rg7<2uiV9ivXN z8wV0bA8>ojGBx;f*4>GENyQVQ%WL&If^dz_@7dm^mPco{#IKntG%=WH5U;J)Y10{W zG}vptII}T+UCr75^{Nhd)%gFfui`hJbo$&_8BZ9ImU8VrAM>B%F`e?8e!>S{c`NfQ z&#!E9bDHV2#$Zx;p=Ec)`1}c-o4UL+EwAN%DT_as`P5SGs`MH(s281isLeKx*OoRJ z!65~CwI0bTieDLj&S`eMG+sModil*tuBic_S48|B${?k^tBG|jGVF2X%X@YllbYd4 z1-X8bYqP34oNs+ve=yj;j+;$oo_^mxfmUD-&PTB|W$xIcUoFToRCD_*YWPn(MC|KC_Tmr>5ztWxu3d)M*a{Pi#|9) z++~g%a$8k|E~Dl$2RKh$VzKyxS;%0L$PdiV>wG(f-#%xc2{^ES+XqKd@og#kSrGVL zZ&RQXtjG@iyBV**2bv27x0OKQHL5|I2F_1!vuKf9fc-J_Tk|~Ioit$@q}SR~X>bk)C~1KcSHy6%bRkD_as6aQ<}3QHE(hrtMX%pGoA7#I_C*mUfnk?f+4S zR50_GQl2~|93`xGxe`QX)v&ko_4U-KF2j!J%h=iAx27dyjeXY-0HinqZ%LeaSjB%R zQZGji9^7#Ow6s!+b#uQ+n1Sbj`F8gY`2kQI^{*!=1UkE(n{{%q(gpIXv1Fup2nvn- zlNcMTN9~ztB0l%bu-+EaSwe1vgoCsR@8_TmzXJ@*fNdL>q=1Xx+>m3S?-21#bfPxs%8c}vYbQhVRn z&=GqO&^VfMwm{GUTDDQ>FF}~AUEB#GXX8BuG>t97q?y7M$R1VFK zVEd7`2LKsiVtZ=YSuzs~DchB(UlNvX>K62evRckT*>f|nYuzBGE|MMF5&5-(@_Yf! zRDnOr$R$#2NYC@&2`EAGz6x>kwyCrC({w9#Ts;)~-h4G3Tbw~Uf+h9EuVEf#_ITNx z{V8M|wkkPoumh@HX_VFMfQ2a8P`mVLszlnFi0`TVO{JlNk%;_*JvFTSgo}j(F`AJr z#(H@IV*z{x1Y``j7pFt0Y{F@1_2@EfRvsQzEuzv_?UF++o@b9u+Fl(n8utvUNT-~t zyDXwVM6mVk?>GIS?&n{W8-@5A83S-d{=SX99VUmXg9l86$wtp z&b7K!7Zcv=(UJTGa=>CgwWN~sKfw7f6uRdq3s9pb%7|?w|EseaT{)PH>hBPQ&zk$J z?VC=532g?)7R%;iz|lnvJyE0IS#V(qt2%k_*0d=E*T#&>B=tzhm-(=0E36D`6+#0n z()IxdTi2n}T5Gqq2lWZd{^t$PNRlQP!Dfux;*h%5Du8Z~j`F=MRAJw1p- znzr9t-ls)d^h~08S|POFm3%tFU4}*JQCxf$#cJ22EuOW|cAVx^s2I9>N|6_B(msZ* zGOdRrBTwJ#cG1gGrdeKY5sv6X8CMOW&eAGq34RM1F@$Hd6pa8YE)&h4pUSy+_E6R` zR#MXXHuTPE!oqJgb!kl!ttIN5sL(O3K_)&aGmTM!R6_*bSiV_e+3Y1iGOhB3Xfi?h zwRmTB^JhHbVT}UQhc5miqm3$s!Vz|XX<~Eb@wN0`1;t4Bq0GHewe|NM0BN{*<3Hrr z)oE&Xe-t+Fewa4xYpQ~EXG)Coi$}y^^5~h@$xMP5v}lG;CRPo)NjDdZBwkVK?{n{| z%S&9a95Gueoi-ujm5H@0A>kS!uq&#lV_gky#pe-xmb`@3PA?i-SMN1^-WD1qDTurXsF1j#RVZSa}A)V*cIs@|@6zsuFNCK+Ra#m$YJstAA(SasIuzh4ewF0`lr$sZb z5GiA8-X!Jf2!HBe*V+Yi2*?uPB0JftV?rwXcoXUxMJu|7BY*8jlbDp0G+VR(9lon* z+DhJZn&|5>gZ~MbcTmWObAB?>A_eO&2c2B}JHrh%2&&^l4-RgJ+B9m-sE&``~CO!K3FY3&z)%QvKcV!3f z^?UYT`GuSna=2rg1HaIY-4Fux*$2@?mF*ZQsLdQ}8pXhjJZ_}mTGhjP^no&L-DJ4z zHoK#{XkW>BT8Y-N=^kD(BE{&=UMWNuxIDtKgA0{~Qd1z@EkG(XdwIC8#=MI*BmAcU zKxKHmg$GJ|45f?ljW51i%DfTDj%Uv?DH9cPciSk_KDZA$|H9~8*4-Lf-}lJ-N$_0v zAogLk;4ip%w7`A(PYZO|gEX&Y4GOya=>um3PczvGw_M2LW0Y^N(};cFw(PH4DQf3k zO&mG&QPG#}a7)TZJH5XaSkGY)K|I1d;9E>G^#Boc*nagPCuMx|a6;*bhd^?TAsX+@ zI+80XpwS7-U6;{Li7Cj}WY zvvi8RtrMG5Df50YOt*7$O(;h2!D4PMGo5n(eezfwGlWfj`l^x<6=lqN5H%ttm9aHV zy|;DX<=c+Xx{^}4()?J>BMFS8@u?W?Y z4UK#;W&@z1UFdd}+~iJpTqvK~mV#PdIvrq$JLd~_@u7;J?hu=^2WRA?X0b{xY6!NvE2j(=|pu<+~=PNp&M^nAU%F` z5~?3GLF?)I$?50(@@{eP6PZu5E)1%X8*9WdtsJXIch}RMl^S{%x4twOED&BbrsTys zxUS+@xH0v)SjTT8LOhnWI!E}6E_Q_#;d-*xMNP8&`AF6*MXNMl2lZ(W(?y6WQN}Am zb7X-71&mqpRxLe6YsEJmbX$8E^Hf(DHW492QO4Apr^eI@f04na9GNmCM|KLnSzmrk z5v_s{8a{2#xBNxii2)*xW`GDbp-juc0@_Smz%ofRrtTH%U}cp$m|l)ddjWDrGvI@% z-a2m-4oKFj6>(l!sl$Rdn=Wsa&QY``i3&J#~Iw!2> z5IiWpYtWNPvf`VnIl4G6z%J`qK~8%HamiL5l!aWM{{2=h2Zm%@)$G6H685TlmRTd! z2}bbp|IT16+|d|#ZYb~C^x1^&-O_cpdyq%7l+z9vs>m!zN%2`y zapv5#AM}8c%o%&py5-7!@Sm&uD5T_j^sN$Jb#@ zA3iMpaG{477s$6^eeWw4uDzMmX&PMB!aYQreChC9y>$dHo7%mR4USc5abEGonrENS#h9XX_=F!~9IdzW}{(gQA~T;+$mE_f;R$$TRbz z%q&5RNNRtqMSydS34?JoZb+?n-5O0a)S}_-5v z{45E+V6P;pIj+aKK!^CjD&V4yK0e3Jz4aDq@1!=qtU&BO6L;wwXt431BjrX(Sb0hG zczQxK&=Pi2)17$6@(LLbQ`4lp2nCq*=?!cmW?TD@0T2>Bw!!2yvf<~XLzWv{s=nmv zT%L2HoDO@MPH)EgP|KQO>|Q!N2}Lfk73pFB2rrm_q$XO=oob8MzdJT1>tpN&ty)$hpto}ew`@RV#I#arI2mDx=yz#7S z+LImRX>4)O6gJJxe-zx~+^IzwQ&$7KnJTKgY=gbJ9Y6X{U^p!}>OXh<_bTDDo0}Hr z^}|pO9&Tx$>hiAM**%q`9!oY&>@zr+8q?5wqO#Yx`K0l7Q{8g(49t)6B&W_S$8X)6 zwC^d1E2@k8ASSdW>@4|cqBh3`eX!*>S86cL70N4x9@T*50Da;eHT&$%h2L3Xy*>0a zhdP#**zokS*GY7Z82;q@vJ#eDZ#K~fYfjU4AG)wc%sjt3L;_?R&&$>a+V7;LMxp`w zdElbIyNSH^jnJX2&Mv*#bVO^M#?~gic7AWq{%6~-oEty@t4i={MG!J5hYKwfd}$x% zGeegast{$1GN>-845Ni~95Dyd!4H^_sGTXdi9Kdzb)P@}C5&`P8m7M_svonz;KjDKzByZ13G7Z~`z~8~U!wtf+kepd zxASKMxfGx<&^wO$M8f(UOV_YS4~hTBO4VC~6Hd5J+x7&;7kN3O@Z>IJaXle;e@qa$ z$SRzjuh4pe$1PfIDP|Il(8d6^N(4IIH;2k7H(PJs@T{_g_&{1uV2KP4C-w*l$(_B* zgcaK|qkdEiXB1bn5?P4}>|EnpJNi^NNZOu{U%qCj^&vuxm$o_vRB4;~icSa%Vu)79 zp;j*3?Nj$Ic(#sRiZ^G-G=IOAy`ZOWw>j0YCwE84?IBNBw4WNs+#omIvJ2g|&`e&YeYfWLx?RHk z4&))=k)j_SPSp7K&8}i?&^S3lm$l!>lsU?W zkQiG7wx#k?@w46UWiW3;fInHb9!A{ofV?~Zs;ESZogiUpj-%Z^eFH^gzeKP4)X1xy zci75RVD(h;PK8ur2xTQeIF>EY(X<0kGtjj9-#z_&;;Sn+_gM zPURKZrAFNWuBq?br{b=Du2D9bg{vZWy>8>61|{nk6j4;@r)JW~GcXWN-};L-2a1o@Z=&jkF;xKF)QQ?cwK2!B%1YCA^Qd zCHiZ@rsm^)Fvh4|$M|DM>KN_nzLKuze84T<>H25?Sr;cW#q^lY$8fA;=dgrMR~ zh#iTz$e~?fxD4bIv;`d%`W}X@G54XF197C4d-ccs; zIb2!c)zgU|VNh6q-rv`aWLh#dbC2A!I833>{vUfDUU_K~4!Sdp!xF&u)MC?c5%?~J zOd@4kKexnobm5W&^qFlgR}PK%t!mv|MfOwYS*Fz9);eW+1UcroY{3NPi$R@wY}%#h zMd#(_Ys(lLKU3@1Z6I`H3+cs$jsP5Fq|S{+OC}?o#XkyILynYM@%NE0_6Fc71Opab zD~48~FydhGf%+p##M-^w?Z1HtFM@9S-L#cicLyS`0s=mY8ktYk4-=W~1+L=pjrv&% zZ@>RzAVNq#Hf2aV_R&MAE6mtGv*4~VuZ2e3Oe^~93j5r??$U9i3FyKiozi+>|Kr_7 z;Yq;dICc@D`3>0Z)qF)SZ@_EK)WBz(_maA?k5}R325I9Dx8G(?739NB=(XS}G{fiVOmsrkq`AOC7%Gx}4)mYv%ZZ?gw=eY~%yw(|kL&#r2- zly^02=br+C=KENs)Bky}gkv%~IBEa?Jy=!F?6#b8Lc)%y8!nr6Uzg-_R`PhP8E_<-7!ZB$OV+Q$u1jo_fhdx{iM8_WUz$Axsy0tRP`P$Q+Qv-D94-cE}kJ{r|l-!i3^JKVZ_inRN2Sw(LVMV zsCsEa3a}GX)_qW!w0Pz%SG8Qukz1NFxKn>fxn~|zu=EB!N7E)w`h0cEGnLtC0r)7~ zph=1bwENK{Hcw{zONw_X(!HJvsqGIs*!`PpCbdf~5;5U3ZVxLl^1#>~b%o@+m)Qqo z$RKw0KQC74$k>BRbSVm6ENIV%G<-*XYN93$mTw&5l1}zwvKTMDPsg{k;qTeQdUs>} zpZ`16IC?g*O2eVy;~5IEQ_cQA?O4pt?l(tL+KjKUL4GUY9_dy2N*?ov`8epKqWlL< zBa;tiPtKCYk-8y5c5v>B0mf8mBU1I>*aK=SCu1c|KOoE9vXG66@3Mg!daQcg)g!}R z%~O?Y>zW3i4x1K-Dguf_<3yjy&hjQAeTrT?`rqV(z@U?;Ys|>xgFb3x^1+7+)Gs*k zLq9#?u$!~}+^j~kL;*^8cvZG5W>>{ZIZDBMw{f@jppzDE9+361 zBb=SiEGx177I+u{gn@JB00!f+_=9Y;bXefPdXn)C9zYTJpcBKqcL^E_J`ZNe$4lk@!3fV>akclg&&cB-`i1lQ zm&&dI<9VxSKpt8+^eouW%4>V8zGyi}=@ak37OG9B7c?#h3;Sz1s9Lp!N~6MYbkH&D z{-Xl)qE&TS3ACsN;|az|r|-AvkmleK9sGZxzxg18=5hjS%E9eW)x}G;yO%|3!cwHP zfO8sf;R>}|wEn5#6Gzn0*+uO2V5B0p{)N-?hU!^_BeuOVmid<#{6O{r$&~lWbvEYX zjaf?I`omsm{+~E{S}DxC;r{&|AjsU}K_UrqnbsBC8~SZS*Nk&cG~8+;(?C{fc-dz! zmZCxFu#QT&(lDCU6SeClypD#AL>%G!tD2iZA`W%mTSN@gUc^g%nA_bZ^0?soEh4=@ z=ljNyWBS5Yoz+N39PAmp=QX8qcq^UO#rt1lE#`L^=Q0MXz!o7C=b{68rvYx#K>68K zKt7~Us3^X5J)n|tt!ORLp{PSUd}W&K?xiOpM+^&huw*3SOKLOibv46RYypY%+=Qbt zMp1Jl+tVo-T49N~6fHY2AeBhx1lwW3tt2}2;N3|?)4bc)Nb7*vq2vHh{hV4a;wR=W zli@YZBx=%xZC2;sDCUaF#3B^!v)!OSjQ&IAf0ef(8zBL(o9w6=JypubpyFn}E`#w~ zAY~IHkmuc`dGjmWA(c|0N=2|Bq$KR6pq*gy&G@bJh^MOZDLgZDY3h$?NcK!-?1iLk=3sB>xLez zUSW=Hhe4eooOn`^r*DnrL@y<~ENT&GguDDwXS1dnc;>f?1*voX*fl-6r2994Ht)`e z-8p2BYP1XrY!ren90#640IIosI-ri|b#A~p03i~NLi=A)%t-!-95fn9wgRX8y6vl7 zl-Rp@H3@{8GvxV||C+WB$JA_NE2X_G=dA$wd4hj$7(9i}v{kCSFCMaQF_jiDk76=d zT4@a@rA8g*d7u9JM8{n#Y?x0!4x#B5q^*`E_W)Lu)b6k>t=Lfs^%lMSp3U^E-AE_t zTgz~~2oAERCsHvP@7phdBI6ll_vylhN;DgPqHyfO`{>nEVNkY78=%x9aEaGV;k;CY z+Jl@V)kH(ABrMwfeK@fgo1wAv<`Ru1^$&5NDkONu0V?;>6Om8e-0x+=(Jcxi^ib9G zfdIClXY%&sPRu-h`srf?x|aS0M5b4XgKAH)+ki+wZyNtq&SEZQ7Xs#OTn^{Ahrjz7 zoZD9@hI|yRJ~2}=`>cZL#2}^;WQu#7v3a^YLO&iIHzHAl{z8H!u8hF;h}EDrR{ z=}H$7W#EWOWQ^ZFVx;4Dc(pO;m)MN8kC{>KGDmg*q3|%H$FXTmSsNa761XBW*+78# zZ}KtorX~4e+HBB$7e?jyXM@A)lO}NssbCq}ZkhV2@mIPXgPNHgG=l?JL)QDbYRgMBf*!+han22)r;pJZ8wX9YPlZzFdBu0< zcJjC|=*wG)ky-!*;A{?m@ZO^iw} zs2qoJ*8%V=>jVttmg5!HC<@;mEa!LCv&LUxM^MkYIM}(zHnOM-htQWd`E1X+zw{zL zh0rn7^ws*nZCpCxPHQSY>Xw2#aM7}Xa!E+XKJY*yYM|bUhp>K_t@pf-wQ0lc$TwJS zy4K)B<_Yn`B4g}++iOglxDI&1kxy3APOn$NV`s`%aF-$5Y=}N@@T_KqKeWxt8}fj=Z~O%GCGI)=bt6vi?XmZ@{D_2KqZ`UN1A^Fa?QPjN4OSL{ z*zf(v;J`j~(cob}O!a|zyUM~mpQ^SI(h6yESUeX~Uw5OAP4>(oNey&coek9nzF39H zK0e4jLvgfKB0@tYzR8RBEzf+lWagFzB+Tl;DAz6#U{>0a>h_AdM4%I%_TPr3SDq5+ z$D2;bqb0|HKPQD>QEI=YrkxLEF zB#d8B`dP}3DB;W~#i5ieG=9dRRXT!{Qv-%!{`V8#R=X!x3MO1VF&kbu1R}LHrOI3^ zTL@{p0;nr7Pl-oWUKb;*_Ah&>RPbm`mSpfgAd;L(m zR3KExr^BNUD@^iaOsIKYAcn^i5&p+1rNxoE8ML;$U3b8-`ab+I`)EIrRv+d(`TSN+ zYxL|LN_tk-Uec}o;D=6nB%?wodgaw`>gsxU!OXlBG^#DK&slU)5i#Nb(J3VF;OkI> zakWn%lw=)S@o*HFf%UGA0hZk67Xa=JKHSlY3->p}Se3V+$RX|s2jyr($ zM^@L?Krs}y$_Q9192WXN;rKHlNw-W`4jzdx6u|` zRM0shGyHwaIQr{G1lz6M4;`JG%(j0NH=BBX!}=$|Coo^8-RnR%XM8rejV)eaXXUuT}242-W1krdQZB~59j!~3{i`oo>qri4zvaB>fA7$MAX zu)P8Tyl*X{X~>;0NQW3#Oj$y^lJ@V%!i|}Ti~={2U?387crrWp)A5|>Y%J!)Fb~eq zLuBKz=>xTh0A@FDd}R|L*79SJ>%~>90AUGtZ^Cu&FPmXdYs1{(5tGUM$8vp0c*mAn zNLYtox5m^u=gC9a zK{|GaPYuJ5^#fas*X?O-O8q_=`&YOy!|gkosW|nslI=$|dv`^QeUEymC^L?&?J8mk zRR=tZ_oF)1i}#Z<{mR?3uMm{=m=t6|yb?E=nXj)PP&Yq_X~_SR4Py{LQj63*)A4H2 zT+){S@U;g8*+?sM@0(KgZoX8Q8xZzp@ z*lDz9h+&>35#)C+Xt@oUnN zXNW7hDlMl_4VOm%rHul2^n`54?pi(0FkC87Sh&Mj>qzoE(W*W3>Ny|gFuzHe66`zu z;J2@yWn120k5x7u5xJ?M#!)>MIz?EvTIXY;p@;Qc2vydQah?lyHZ#n*~h{Lo)kjyXad;1G+& zX%jsJ#?S4rFJlcN=iEK5)B^4Lpvt{=3+E;49KPRIrU{s|;YJC9QRlCNWTi-`Y_YJ& z8i>ZeR7}LFH0p(re_Afdpmz0e3)EIt#-3DeAE)!NW}ty7_v~T94ByK!sv??4%j7ZVif0L+nBU>@dleOH9PO{$DN*%q0us97K|7N z3Lt*=R*!|?#=?&;*>Cf{8pak6W>zg9ig&w=wlUl?BCpZD8@iCr zB6gxPJG|lQXFk1b=P+;jkEx8wCs3QGy{z}7bq#a-{+)O6Njh0_*QiX|8g8Q8Iu0qw z3)CYEZ*f0c26Y-hSEc+T1w@M=C0Eo6<26-M4oC_?Q`Nn98YD@x$i`h%z)EQok(qK&%}WN5J?-Qu4l@Bo|;1(}HT|*H@xAI^^tLn9TvSoD^E)g1nWt zV*+IdR0J)ec~F-~-b;#?qAs#I(MDd-f2OQe%(nCLtj;vJ-M~aU};?Zx~xbbq+#E zvPWSgbS*htYLI$u6`HEL#>nP%q9Ip_U7bHBfTuIkQm&U@bXSw7F_`8+O2 zTe0tCb7$`P`Pcf-h7=(<3&YIu-L?GP4)>Sv?)WAILyLw04Tg$OZWGS8iO?jheGrARvxq*qgSg29lCkuc=cAKR)1};j;e;BT z4@znGW&FVtk)SwN?a2lHRHtnjkL|u)8aE)*o_k^S)K(pAAJNwRM&~*2Dn-d|q_=JR zuKlJBvQHT~xxEygXr|2(#^`Au@$kXao9ePJ$kV350_&c#YzX8puuYWH?Vt3fIjzb` z&2aVYPv6_}XEk%PM7%7P%3eN2I%U!LUj4>7l%bTEI&=9s)Nv3}gbsEl#Q z(J6bYE}1{|=F}I2h1i1(dw*W+^KNmh<^$a&v+A2s z?!+J1TEFGg`}J(lyWez_!Eax`c)J@0a-`c-%&yp5_sNu7Af5?yy0L^85Gy?I#i6Ac zFa1fEPSd{ES?h)weLd{0ciBebS|)*6WlF-y}nZbcoTKTP1TS zKCqp_GwJCG?r}&tZj9x+Vf_Aod1;(51w>Kymaq_KZ4frbE!xE4=Bri z-qMwnk4XJC{)M)>F+g(-(lpHp{q} z8Q-Z~2D(gBU@V>g#yKdp3A|lXBQZ<_FknxMZVu9m3aCGp>*$7B*~b1Zl15d>+%9di zE(?>bael$GW?VIP^tlg`&1?P(@o$0T$ybT8)0_GaW3bNwjh$dc!#7NvP(Y}>ql}K` z>0C{j&wIpKgIFOE=R0`w*nyL_Pd3UAVu>k%>xBDs&PoHVVBbkc(Q*47pm@mC$uZ1{ z0u9g)DqwhCLJhF?cEy`4LAueEDh8UAkl#>!*uwAOpaAi8hb zgWcV}B;_4S^V!Y$pxbxazddW@e~=^4b8+96QKZDU0R5Ej+qsUr!(cg=e~-|53hAXe z#%MC1QX7Dd=&$i4Khb=d@CURS@w8gSm_o>^M)`hMghNoX#2hQUU`<)Hp&K^BXo0f~ zGATlD{rKu%R7iAdEiFx9>R~Ku(GWh^i%-%X-Z!Oaf}RillM-)L)XVP)ZNJ4ZO>%adU}R2IJQQ9NHh+Pr zqF(tY?&X7HplT+{_OI!&ZC9_%@1i+7NGIdpb9s3$iktkq4FciU^k2(y=VMw&?thbg z1y=fU#(a}v(LXRj?0ryGK-UpHUwI)BKaNeQc|tJetqDGnZf$dZ`i~&X!d~9g2EZxw zNl~A*0vX2xPv04qpWQU|ET%^VA0v8=Mx(2Kj{P0AdRO0kv(p^%Mu*|)xxRXKzC+Tm zj2ii+@GFVK!kfiE|hdi{E& z?~V1pWT%p@!Xo8L-j#gL9l&>TxGr?Ug2WH@I0JTj1IR15*zyKobOyTDLpj?Fs6p7> zL$|ULz+PRXhR!%VWwyuH8Zjx%)>vi~1pBZ~5bXKvDsi01=c7)0s^}qeqaj2wSp(Y9 zB2U2)e~-A)sNz3e*vE$4_v>8BY_EV&vjJn-lmvaZ$*)c}86@g1TkP4mAH&}L8&Fwe3D=Ck z+f6?{A1l$U7Lnip3YDlXGcH!16rH*ZuB*ilaNQKgVE**baiUL!Lr$AC z*(LOmqNRAKuMw0^ZwacRLx0j;qwB%gLNP|XJ^E9lob{+EVnFI{%Vv-7m!$FYxWF1Z zg_?gMU$W5$>#1#54gt2#_E6pzJNyyQa{y^`vJ^64AUfEeg5u6xHcSmT@d9Ccmg4mm zktaS;Z3-TDeP7zLMNwf~5QZWK1J^)fS5Ir*IUaAOHQepQDl)VMVBE!VwGbzL&n(YR*yp;T)e(-E|usc z-)6xxYLZb$-t73t_H&B|7&*y<3M1q_^xd79HUhii$PCj zqvwa@s=_+y-~o7G<*49Dbb^EkxaXAc=@aVgjN{OtGDXVmkig%LD%z zufG=1cyd0N^8*s?Uxd&w zB4g+qx8@a#@G|vLV-m0}AI}uyh3fM9P;=^Rq;%`}28F$uR)C5frr2hKFlhecegF1o z=lREu(%i2>T=wdsDLCv)ehF&O>$kC{glTa*+|XHhH#fV7BUMvv|AxtCpwJh1zz+}L zXML`b2hD)-6zc!5aNk<_@>OIKs4b{IhD*eUi!JdLPC+DI|w6%k9tW*>ZRC=37bf7&zXVSYnAMG9%rlR}VP9F-LB^ zk!ALbu&R5!Kg*|D()_g8wN4`|Ay;{#2~Qpr)1T#%tO(zXKM0fs4`nMae}DTA=W6

jy@K?*`>1>UX=GnTxi!5@lTV9^N{@}38yN5m~;v&-+H)SJHD-%3Q z2Rb;er}Mbj|^XJXFwh{VBLTN|Ma@z)}BFq?@Yk~^k5Dp^ul`U)a$%~>;2hj&Rq>*R?7H?*Q zETOAn=+k%R;7@V*wVSbrl4AX5^{J9)_aR+;ZXY!eQDY}wC^osztK`mi)meRM`JcA= zQo@@DHQeaT%yyYnQj{t~oKtU$+3DVt!IZd+x|+?Jvqzp_}l?G=;z%{tnTwv;ly|9?><0g4)}ilX1f*+3D) z!a{(_%?DqYB*QjN{Bz=s4}xU9LM{7TrM?W9Gfe#}vH!WL^@#=Lt#5y_Ku3!&3+&N1 z6jaU63Jyi#m7_@B(|9}iY6iQYMwL=0UliAMcT4x^=xGr%0TX zezGO!m_QBHH*4}+X;CX1JTAkXK}X*hQ|E{{(T)mRW61vZJhDGMw}HV?;~X z&*c}x69X5Dsjxdv@iF8QlL-htR>A2CRN|IB>Z=Tdq3gds)zNF9_HrLZe?O(}=9xCB zfePC^W}_`S0{@J?#rUvbLi-w>M&Rb}A&h&`v)-sx_HmUN;!M zDDU65zi)%*eq1d~K9|8+WS!&sTtpAMw^(o!DdTMd&FG!&W=`?#uY&qpsax7~ZMLJ# z5#8p09rP(<KT`|S?hF9;rZWS>&dlhk;f_HV zr3uJclNj^U7|?F9L* zbDLU8{37`>y!5udgq}OeZ%$7C+#e!btZQ+bl%+!XZu^Ieed0t++V0V0h3bdF&jVD@ z_;sDs(VCx98xBJIVKaW?T0lk*nI(A#sb5e+s5e#6lF4iqQ%7m4%9&Fusf2*tD(Nkq zVVt)0NkLiR3rjyP$R~-oW4`yQ(;Ok|^ElzR$KS(Zieh0##UY#y7inuv; zV@K?1Ja!zB_fgI8q0=w)O}3CVBL1~s2nA5hrs6`PvTCTkX2xH?x;6wH4>yGBG$uXi zxaFz7e}?&ks+4cc6ZGaC-Asbaq(3a_@Gucj}sn zu|4d?J*QB#$mcq8HcZ_oc%k8!zD^)7?P1&IF)`|j7cZRh?3>FA+h{|r^8BY=o-R#z zEG+ZXNfbfWT1{9(IJXkbx+ldek=|{8&%fsUuWSe{#dd=wZtCg7yKYl44_&YH6j=FL znhX>^<_%K6vWy|K-*z*t8?k~~_?>kB(%KDed$Wz`o*FS|8x&-#L*1nwRJY#Mn02K- z#JzgbwiyIMt*hl`eGN|}@L_egu~NomZ64nCg2sAg4mYheS97QLnr%P0-J79#_dDtt z1%i*zLYneWJgR(F4xnY(ZUc&fn9?s%$M%XVnx3$66GFC_U*e$;&sT%{-MyNBNc`PGWG6YG=NQFkN7f_Ytdxz)R8s6_IQh)dVCb)AFb zAC#HSOKM6&SPmC#Pf;TAlxJ%zHZKDeirimlXEz}IWV&k-R!ra zvf}IA(-JC&n7$uo^0E3gVsU)}Q!k>X#p;qkRbBZ8LA8R*44|fKP zBDFFG3uHnjE~_`Qp&^wg(cUR z=s`lOL~F$ljR9SR$V@+6(gWrnu23_qO_$0NQ5!ky)*L?3q=)hwQB&~ifI)K18RF-l zJ-rC#Xu;8irrY%e#k8$w_S@1i+s);PY0THO_ow&onB4_|!6s0h3%cWA_tey+%Sah{ z%MuZv5?{L%leVxvE2U50SqX&wQ&Y$C34Jr6098wGsW>y~(C;g!P>u=ntj$y6e6WL+ z7WH{O3Z?8sxm$u|VZ!0C3_er7Yu2=>-TrOyM z$z&=cDtT?9psuZe(a>1swFqB-U6Yp7-kIbv3U%L^p|lg z$_9Aal?2^DnJ{zwb>^r1A}nvcQEu)b93-%{(e-^cwnckc3OgK6k(G4N%YeVFg-o~< zx@vyOs*ejYm_nq5B9JMNtQKRyP9f$RmPp;l7j|$lViO3{3OE*^NWlWkj8;yu*uTRE zxp~HQR!64s(ob83G-}G`Ie#4@g6|J58gLedYzZaQvFBwg`2%wvjy)jdHtJQ{vNbK5 zD?8ce|C%$JHHXUzT#0wc)O&zJSwIkqh%Jl@sl6C71uZ=1Y8IubBtau z#}rOJzUWWf=bt6(bh0YWJ8s`lxg@+rxx(9-c$>7xKx?FJY@ZK|_hjoW z3Lcxs{zs2o*ho|t4xHae7&l#hdFK0lBH<_paAlh&i&Ojsfj()@%m>UM2E~!hQw13n zNdPPz(o;CFCon=ZebNo;9v%>1E#n&)(0z01fNmZiY$~Ucm;+qEEs!YksIP{JGXDrO zZ2xgVtG!iEjUMEa8#7tuS3i^`ndJ)Zq&Qfkj7fvp*OS2;MOz}7;lWc_Jvc}_a#t{E z1xd_P?j|Aj*<@_s*@%)qjh^YBRjrd6CX>TEJO=2Rm@>}PczStY?OaKx<69gny8yq^KereE(kTz`ZyR1 zx*T`my!4v%n`I)iQzLa$Tpwk#Z61T3VFTdQvgwqECu}wLlDV=CqYJ*)j^qU65GguDe-BuEdayz`jDz1W0z< z%Mf~lYC!Mr1U9UlFgx!I_XZ627FH7=9I&G9jW_i;ETLcmJ5X%D0!_>qg!CCqb!gvK zsHSNNEL)qRje~N7PY({pqygC^OPWPN$>fmzD}ZD@Yj`N5>^WTga%ct@35LX+VM)w9 z0X3L98HyIyh=fZo$ZqVm{Bcn;ABxQS%@?D+?zE}%oMOM^vXBtn6Q`EiMK(=s7SN%w z_NTK(hdV`V57E*28g26B;uOFc=8kGHw!)x--4H(=FQ^Z#jy;}l^!iKE?&_y#posfk zc?;T)^cEjQ=exh%9aVSyoq1{X9m3l8v)i@eeEF*NmK(BycAHrjf^e;Us4B4|5acy6z?JK3}KsEmP-wXgkb-iUITrO8u(elEeV! z@fE5$DNqtr84|698O1s|ZX#7Rm6AJqTP_;1B<3)e{E>Z+A5J%yEwbyr*<2wpI&x`W zceBm%q*>Cdu*M3VS+d(82UDBSSO%MFpokm&!N0)~>b*FCWB)y7WO_FSP-4=oYLGDr z3GI(JRC|8%ggK&}KM`wvgar%a)nTZo!89pF^ZEYO+s~s&m`HxT{9i`3^_RiztUr~( zSRHD7En2X|cV2a2RUx@m(I^-6YPlpx%x=3CjeARkFZ3p{ka3=A1QXPQ3)|QR87pjA z9?(i+u=f4+x^ft{2ma&^aY1-jzgZjH_6xM337rBcpF!pil8x)ue;kONyE(`XLtvrA zS}dTWDsp!1&L?Z&T&xTkJ8XAh@%u&Vf%duig{Y4|V5f;oTJ_B97SKgWLlZ{5#S8zd zo|iFu}! zH-}i7EH0P>z{1vuz?i?J{V1o?2JCw&r2b$NtP+r5njo_sHfhgWx7RLG=mMUoNaPND zv7v&(i!(9cBo6)!s@dbM(1iPGHS#Km?6cY-pMYY?>oOMPV0N~pw zb*?7b^W8Z7S?px`8Q13oAd165NTSCgytSs=BbZ%XI5X4eq|OqHOh03%itx0WXsV-x ziv~f60WURf@ISj9{E7ycEV>P-&;RQ-@NQqMS=YQDCj&>O1b$LcafzxA&D?n5AK@cW zXe_?`mWbWootdG13Fw zx@NzGQ=T7or zWWkA#D?2laJvi%(`2FuC+wjFJfigZza^(d`iW!125Sab{WtD&S9eC#c3tn7*l`qg$ zNH(oA)^%fDApXfnK@P){4$Pq@nK|VS=ib()8&vy%3e@FAD_uMZ4or-y(eSEDni`w~ zRb;&}tVA2-6I8&4yxY$KG4Xg2AJRyiQNBnWFFffO(JNusl^e{C@TPrR+~4_is~Wb& zY_+qjc2U{wr%jr$TCLZk^O2&djZGS`qoptnvJI-1g7JE3Dca_A};=wVl9 zw1XNcC*M>t5D5_M9dZ9=n0c(J*zT%rSLeK3S%ac_qBAb0yG$Vs1Y)Jsg1iR}JawqS zxZ&^{H_z@YAj$1)TIhfC%1s_$=<4M|`w8Y3y*rG)R^9tUz+>WL{<{)W=G{-_dSd3i z2V2JEa+50jUK&<+RGEZL8x%dP~ zYV0wQy(cVZ*XtZ1h!9HXTLc+-?>0rvud9(jG4a00X8$n7p&DTEZ83SQUk$N+^;Z>W zN-yL0!=m?K17~#8dhTNQi{+{T{>u<3z6Khc zYL+2wNRLaoFAl8hHfq-?ZER^Fc`XGkh6 zp+;W8!*>wLY-*d+<`Y?csqTElkyULsvBHf`+pFkX5_}_6y%sHadG?EVE*6f3@QOx< z!B@WMJd1W{WGQ$&YxLYvI=p8Q8F@<(%@00#^|RE$jWj;MDU#|(m#uI z6(zCH1#{SfZm7ls5NnB*o*Uh>6^p(x6ZsO1( z(VD>GugKm36L>End7b9+{`j>%ucVjU1|aTpu6lQ__Twtwvipf?%YWGJVauO3(SP!@ z#@|h1ZU`Adc%LpOe;lO*$mEae`}vrxJAb522~|zZFH1#5fd4d4tR(K(+HMkohgfnw zjg5I7E&9a#-m8R^{87f7-~HV<8p8OvKlBOQ%Bye6fZL)1G$~}}p*WlI*X;sFs1G^% z$Gkazx!U@tstD){7FHSd9KOheS?o`diFVUr`^HT;i0hwBFpr`9u{<;zh|C2x~g4L3a=T{NHEa#HH=Tg=qu(|WJnm2;dy zqhW$M1{6&tN?9TS&8eu0QU}d{%gpLHTMfB-453cXE@_~gR>#>~7W030sF(Pm@UI0Y~OMzc;BIGLciUkgAf2swvMVd(O z)Zzbmp>6!iURNoV{M8f~J$f6dk92XiNRXvhsA50l+5Nnc!VG%qhR&xw?h+TgxFaAa zT0ioj2sOKzvKDneM+6?`vP)aB|(pFSFeGR~i`B9CUnA z>UQl~rF{Ir>bZ;YZfa1Uxc9pn*}4JY3taoO1KPh8ltF)`eS2}E6S}x<;GX60D6?g+ zzAxfsV(5O9H-F=;jC_bryZa68jAxGTkA@uA1jj(FmL`3vmU!Uj^V`s|zhovzWAu&U z*WsFOR0b<`NBBDjv$gjzyjyGN$}XlJT|N;|SP<43^bZ~(?cz@oohY1hEJ6J}&eYyx z{cjRf60VeSN4fqk8}&mzhirU6)r(kg5SAZ6*_^wSkbUww-@ZX%TL-|DDOE;x{4ult z*Pp-xni7AC*~=ve-~UZZmQwm)IVx01in!E!Vq(C9@(idO-4)ugyu5;q*}MWZSwtGS z;3uO2z{@lYb3G2|yFkkfBH_FK=(d5H*0>|Ne{_f|?0l3tv9Stjl!kLedIj&NOCbvL zr}1G|tSMO61mO+npM2)$I?UV*A+W;-NKU!!(;Qje0Ev2W{!>lFTVPh$B&dV6-(R^M zc_2&(Kppq3EIEaHb{^^aE8ZgoK+E4qgRFLM%{P3lYqfk`y7qs7n{*B5*J@^N8oY<) z35STnkJS?*uG_esnK6%nV+(m-JD0;iqV!bywd6U7|Af$k+!cp=}Y@uH7QO+5XN` zsFX?TLT|?k&u~KK(u1#R3kHt1U3yVqh2JM1h{(y<#5XdpPMPEzS4QMM-N4KAWsV`6 z)^cwu6zEcnH>9GCah&g^iVo_ylLz1d=g?0U+;8Dh*r2png7bs%(Qrl|^8;dJDoE+< z=~z-u_>onQze=hCHPH{o-Cho(WUcnBq8{DQM6GaszDdzv3Nzlnd=TYb3vY4!Aelm= zMU>T{+qDJM?SF?!gF%Sfn9eB=73fp|<`}%d1BVeJGD+Q5;x7g801aowN&`>y7<31U7qC zex3LvEnDdO^ud}NlXOh?A^X6id{gz8B`(}_c^~kGYK5sPb85Pih9Z3s2RkY#W< zwlwYzjurqtZ1fyjwm3mdd6#Tp^Hpl)*SNZ9DGPZv6eXY|0fJ$gJvyT_QryX=V9{?M zJ%=JqEDx%gr!vi#GtD)2pLQu-+yF6G0o?MRxX60f3&`lc(*_K-qC(<|046A)hYf7g z0z|wN)~XJ=$eK2vU0S(haSQtCOe(LTW_W8&Ryyi(LpyKM^o?emFv?o^EN*vI8@xQA zAZE=qqZ4cDNWaDtpm3G7h8*(OIzEPqY$EI)s#{|}6f*pIrV8>TDx$exu`vLsRz9Yf z$LIX22bF0YfAKEJ*#j&n^vwmdGk9(~xumDYdhk}tS8G)qOcjX+J;(|-lqF0uLCd1( z!>(g1baC7#PRW>p9l054s~*g(v;jKCEVMHaZ zF((w-(@oL~J|F(#+=Rt4d+qGp**MDZNi;;nPoS>wb1E)mx9}xCk4xN4K`E!iN#yl0 z4}ZwPFo0@;C+k|fDI{uye83}HbD-Gdbo-Me4ERL1 zp46}1U8Y$!2%CL8eh396Zig@9g{yarWpjs4G^I|QXv(Oi!K~IjyLAzfIRyHy@)e*Zui`pC{}3WobGna_qB9PIOc|j!z=GbvHN~ zC0wVLS=~QEc0R&xR!Et2M0fk|v%^noP(?i;4hO!L){_XvmjF{}57N=?^tsGJ9~X zet79W#zs-1q)ay6<1|4!6(mJ;Bw3r2;_E2sYL0|e@+^2=tQZr_4;zs9DJ~3frA^w+ z_6nxslz4HrqXKY$E^V>_eZ_j^wc_-A#-Evh$M8_%xcgw}G2IV0Q2FY!Yv)V}zw+0w zvz}H=!qvXUT_vG7wQ2GpP$~Yiz2I=EpgA2z0P8RMT%t7l^$D|$@~W0H>=3UYtrnPV zj?be!U+M#9ufMW(?{|JecV7PJQ7^YWWn53E6==bL5^%kz+vUAt^@I2EX-+GOzWPIi zk&5=+?)iznx2r=xa*dD}kaa4fxo*sJT=Nb5uoKFO|2dyunVyFbN z1a%sF3>0H_huv(i+^91|6=S@fO&A-5vbzMuoT{Z?zvP1(v8FWnl<&S{oFX}q zpn=d~pEjK`hgxnx${saxhcSPj8g#&9}wY;+;pLSov)GqBh4g1@z4SPQXJIE z!>zUnGC4Jc7wUSf6gn|HO#%e%AzWbkOyo8pk&j7gV#L_`6~gaD2U};KXFwVmgu#5U z*=3=onaILI5~o721yr0$GU+Yy;#6^*s`l5_#jR9D_adRTl$iz+z?_LbTg@PZ40Xk;`4)U?TfV2!;Lmyc4UVAmwrqHMGPFD5$r;4DrhUC{

nO`V(ow{XkNuhasfEB>@;(_|Nj$ycr$Kxg z^T9?2U4t=>Muv*V{BovU3tiV5a)QA-1cT&v_eT79h8woR<}x?6>Nw{AKGceOXe-c1 zL_K|naDAU@_Rm~&DO+E*oN|o`mbE)ZP3`Ejss+h8m1xN!G4_G`tfIvGkNm;S?pMi4 z`c=GGRmI>4eJK9|9=#Vgc+L-zI=ZNuwL9d9D~S$J#K2~S27#`s+43Os-B{+h6fYMH z^1B+9BnOl4uum<;lvJuwVyCN=6hqOIvFcH|yvIJlx`x47onV5m>kjh*aujE#(k|y0 zdl;KyS67#XGF6jm8N=w;8MKiJjYFzh%Qo8r4>6W031&pnJB{tb1sQIWfroG^%FupJvkGV-rbfH! z^I~`!$@Pro$hcs2EEFsW^SB#%P>w2U)8KZfdj&u2AQy_yiM4TO#`B9epJM8)-y!O= zsB?FU7k8dqWz9ww)k&%-+$`?=nI9$GpsKCs0R$je3!cKjufI4IJ$H+Nh*bM$K*u>v z#9`K(jIrb7mK%C~3k3tl&wH%VsO6%06u)f!2?$Kv@63|=Q~X|?A(@jCIj(@OR}aJb z*qyn=oZeGhKf+Rv^yS=F#!OZq!A?**^Bpha9H19)@sKiW>b+QH=q*(!8B++ye&dK@ z!e&gYMfl3-SAWgV`Q5lTAVSFqPYIhv*I^QN|Jz9*a#-zV_EhK6UWK{zAXM8n!m%XK4TsH2)&KYr6g+Nco$ zH)_yp?t;JuZs|B%IFLv2ZCSa3lb;fH1&ye8dv$e8UW?r5W}@TqJut0@FdJ#4;f=W_ z@2=w-GW0YwS;ZTh={nWuEg(y(N{Rw8OwUyBWx}hv(SVQnjE-=3z!Wu(qbp-k6f`?-l>FY&mT1i^GKD1^AOeu zN>wEi>R?=Y9TK_-N(uH5x(iD2XCw>|ln5>vL~&KnnLe3Dlv)m@VnG|@@IhbI4H=9=-ZmdV3oTkZqN4%0TJhLv`tuqCq#7`9B2`^3%4hhEteh|^*USK+ zBvSxT3juTX9CHC=ayTa=2;O7R56ovS1_;GJT0&V5N=9_k8bo+9Hq%f1#+g%q$jAk5 znLw3eUJj{4K6FWL2VTzb{5ptG$Z|MlTzoa5w7z3-#xFLTx{>)|T*W9s8EWzn*BS~M zXqXeo1ycDrT*WYGQWN55|7eMYcY3kSrvikdI(Z3gO6TJx_HiKUB>+uuIVvIMk2l6Z zQR+lqiK;c2j0+%Jl!;MHlbp*i(QgUsMPwCivf5#dRCJWVNATE$Y$yK9>BnToQu*I)LO9&71F@^-hz`ItTMyymKItP;qg!Ou77l}WXqXp>xPFVqvF3=tns zwU===CVDxl6B~mMbrYuTRZ=Z-PC~gR6X44@(Z2AT1S#Q_s>DkwGGE2Vqf?38sP44} z-UF)bodSg*K?#=w_)ugE?t%4Yctt+lV+u74dw^Def^d9df^wR16!s9q4med|-Udsn zmrukVl=b%KpmZ@Bb*6e>VB!LVLpr-zOSw*<&1$*TZ^Z7F;3R_|+gu2@@r}^NuDy&d z1PC8c9rK#uyRdR5YYaZgv{}k7A@h+Gna!qjajl$->R%_;J8}sfwEoxw&lQ>xNJ9m( zO6gB%p%R>MkUZ--c>uC{q`@@8m2^v9-rwnoR1l1Gko1?%N41XT;f z&CVrY5cy!ipOYi#a%>^AG~9eYtQSGmzKk|`a`D&&>xl*e+f}z9&i+9j17848Bz=wR z`2pq}@Yi64bwEr!QaYN4TU$xV0b)IWO4tapUbiX!5?3yIMe*hEDwqWiy{b)M0+zrD zfrGLD?$Jn7t1;V=lT-Jo+o(V^!y7QYL{8tEGL#h&P{mf6Jg7l96;7Qusi53m*M`QRwbI_l^!PA-1v{R3=xd%n4CZ0qvR1khHY%V0;a3NC*%{sXX#+>k|F7#RLNEtZJd^cly+>aI&_8_LF3J$xso2mN_G*F39Xb5 zxq975=xB6(rSK<2(nb$FtXU;pGXg7V6EUU)_rZDuyTR3<7JVjg5v@nCqjKr?-E@xp z@TZ-C=PyEaIQv<+F5%Z_1}kXO{r%8?K_Ga})R+r*ffdD1Mx*uW;xEkvkQ<;{EyE#$ zg1`fV`;+sjWE5fN&CS)x-FbaCGVm35pFEF1Y3=}8#wy!=6oX5Cp_8|VLr|##kEt}& zBC?5DDzHA&O&w7~v!sOp`e7*z2loYhX{tV9-BYl*dMgcKFwzVxUJ@CoF4ai7=D}Af z{VP%CO_T{hUo!l%al{fC*jLFknPBzU(C1N-f z)u>cD|0Mu_tbz=zZ=oVViw_Aio!{bn46ppr;%Us+$g60*YFsT9#SHj&7ihE2=E_wM z8Q#Tm5G&~%R6@Om3#)69gXxI4OYzoU+HYCQ27{fJUMXpk^z=5uI--_PYCP75{YS#E z8g0~?XmB&~DkQXJl`i!(RCV5l;Xb_HivR8pHTaX5jfGwMOHM*IwvdzKY}GYkrHDW9 z=n?dk9zwuog|o;8LeK(|+|`%TIXS=2g#O zN_j78u&!3E#w!_xN?0K%4MOTAutS9u|Ah|uK=C%59IDIWGvJaNXap`Qf=Urz4a4Bo zRCp!TmoiWq0%2P3q9y?UKY{L`5~)e)yPc|%bXj;EUNR_S_PAF}KX7|3%1IG06Hj0X z>nHoO88`{dn!Fh0p!g(Kei#go zp7v{fBs58Vt*LApdQ-6Mma`y}wk@HC^LiVqNMa12pqb)?xZbV^LCmLt&Xk;D`9ai8)vhILX{mFX5Gs>nMDjsiSX&ViVIzCGf~q;5U(FI6>g; zsDO7%aI++O0v?HlTnfll9u$OI_>R8?Ee8DwhWBCiK=HG6{o9Z7xQ7)flKr zH>eI);PryR4MP7rOx0l@Y(-j4HOE16RvY?GfdR^we^%fo)p38aR%P`3tU|4-BhZ4w z%*}3*aq(i4RXM&UTp+4l@D1j?z{AZ&Gca=D9Mh!(54LG&VbGk);VTSa3*U z`d|2=V4!8+U{Z08a6^Tv?hgbQ@AOT$gVxNHLdmNQe4I{|JhWIG6vl0%0K9L42*Vgi z%B5|eGGCv%OSu4~d_s5)Xu!sFVKr*?=X_D!Y$T^MfRJn}x`w|C|7?M}Rs&Hs72q9( z_@_L3gj$8)W5E`B&VDlZSFBnk$&+$3b!JNv)I-F(>r~7;EVyzi<^vWoIF&dL3rj@2 zMyEpXzS-Od$^gy_3tia`dyGTKZAERd;DfXxn>E|jFU{3PLmWTR$0P<&Mi**c^1JY6 zTn;J|&+A3%Rjo>4@*N)W>D3Hw44s`zw5H>CbkItHKxThUAOf zHC%uQC!wAzf0kio&{X4N*Qw|Ir&d8YeR(^-@m676fU)%eaBo7Uk7m8nvQe|Y;EQ|x z?}-eCC!$3bP(lh1rW+qz!7`oeEHCiHX6299NSuv@I!>i}gN12AXdbSphIul~5W&z* zFt`{Q$abmYi4n1sRE;{~^q&;`f%u4pDoD`*+PE7!=7m^MV3hMAkSo*{_zUrif?wg8-__WmvU;H7^<=x=s@AwNBiRJYe&J%tkoiBSouXnkR zpnuWV%cwsHrvkp7I%|pW8B3yGXk_qFA*3&u`Sw|A6}{UE3-;KY0K2IhHg_{I?l>$K zdskAiM#jy^NGmA>P|BcVt=>Y!8*Iy|PFk=PY9uyCX^{mdNUnJOOt|W0rBgL@zF^v= zJ4fP(S@wGA6!s*vYO91RI+bLX9V0B{R0ZYYSfBlQ*yp*~t{AyB3;lE|RhXTG9}Fpf zC57|SDUS$Y`HzkwAs@C3ER0`=P2eW2yBtpZ0ELHmb*br^TBXWIlvMCwR{!F%bRWC~ zgLO59I|znC_=stOfv#vf9G8zS9E;6JgHVaHz{eQgZxkHRK?=Ra&8oI<-)7*7)|TW& z2~sXnm=Et%v_@>kZO|xAOE>YvmpbvcNWDp9|D6U={o#J5fbz(|i3;X^n3xZCY_Pqr zi~3={#PiGx!{zT>53`Y1)l#@N;we`V!I7kh5&qJt;QU}+#7n*BFI=npK#`bEq_E6P z4T%uay^TxeMEgXjp+ztquB)*9Q#{jpFBz%U7Fw%Sq8+``+>YnTTZJw- zJs11H3#gOnZfS%LP9Kc>VXO6V&MefXkaBg5#Uuy zqk+1L`P?+MN~(4jc!lx2c!M?e2|GgJ=|T+(?;fp%hbwOF|E$)35=)=6pvq5Tg)r72 znZmmMA5Cuq7FD&jkC$b>X2yH!6emrmjv1BNltz@OyDzn}qE2sFnr%In)|qVT7?C1- zm1g8IqBJEz9L2HTZY?x^QezO3ehiKzSW14hfwp^JI; zVJ;Q%98fe9stZdEX7MI_!4Uor7So^_o@S`ZAbcT<(H?@3)^HV{Q`HZ+)gM=(Lrz^c zm{^cd0Y+FU&_H?IN`eM@ABZ88`e6EB3@twH&12-(XK0RDd8ozyAdeTFT*f4SAvdde$Vj%xbD~XaOZTKC(r2Mj%?mh6Q{JXQ+ zvcDC1B<8dBR3G|r^_A0jRXzW^-sSFb@3yFM#H|-0{;npV{mtU+UrxzTkDvcQ>>NHj zHkQUi>q({6k$loe0vjA9gycENsEq~bLZIf9mM;zKv}Q=dPHwj@ZC)k>QW||HpQbna z|1ECH{Cull^j&k)l@|LJwGrXVe~-6R4C|&x>^0{JQW1(s;0yl1WML{sLe`IPwi_!O zT5cQ+BNq4ufS5mX#K4*y8pCacc_q&dj(I*uzwGVHN{|0EJqKa#weT8pa@jQ}R4cVI z*5lPD1GiZc?OAZRg*eM_kTs?aRvZ~`b-Z!0->nYgte(z#{2p>lW7V`<(_OFU#K_KPJ zO#hnCBaYP@36G(F@lu*!Dcx#81%AdE@Y3fkhE0E9i>7m9S%8v$jiW*H%Nl!+_j>h( zB(K|X5&KcUL^|RwgD3L@`PmsSC3Rw_2ggh=Te$LVI_WKTS5ENuhw}IK)%3>1jSuXR zF!4bzgY%YOd$QBB<>DSv^gtSOBSKm(?Hbw4518`14;(|GgZCbDkhrZ{nwt1_ldyGF z;@M3k;BB)|kkL!v?zqERQ<#56=r*u{M$b$XNn;b(pDY#3_@J6Ejh5JYF(&fTjp8Lg zCMEo;RVrN_Q`{z;aRiwG*ICL8^@7(&A3v5a<%unovArXY0`M^B-pYV?makRE5Nj!& z#B`uu6WCt(;2){&AyvQFisbf+qSfR%B_f>_$uQ4^z0zZeHS|&b56m4R=;}E^#eset zm%f0;l3Z_;{91#UZi9*oU}0C?My$f0yA__=HYoBV`HQbW!1442@h^w$Vvz@eioAXw zzl>JXugKy)^t%hVtsfHp2}d{gnFG^51cZ|)-8YP0J2V&3V&{^O;+Xy8wk;e(fUW$Ne~SxsDDhog>3bq>Y~i>vDwFM~CqzixkrvPY zy4wxMDhse6vKt|Q7yBj>>tAY*xN~!@Jq(#r3u50fy&~;)8yajLuKIrnFG&jrMhFzU zJlyIIxxNX@DMN3}#ik+zmWb8?WHjA#XKpql8*mC-(T5sz=C$Nkhew1)%ED@t?4T?y z0o*l2S^y3A<4(_ilJI)~zZJU?OkTD$lod~X46&4vdVf7=67jWR=Slk*`%gw(7DG;J zIm}HUos9{ij$}X$wn!Kul$XngRwC|aW0AH1ZP-wWo;C#kmoJrz_y4$uKf-m7RPMmN{m8I;SX4P& z{rMG$GWV(sH~crt<@eH%i^b))c90pYAF@*)kqg3Y0Ctau z094FnKB_C8L<^uE1T+)xHr63cRz*hE0rm|n%j`ul6pIZ1Krsx`K1?0qCv)(mZ z<%HKf;NgY#?pgaM5o-dqoQc%Ri0dby2JK>}nCRamcH%FiWs@c)+%_DBq>oeGq`i7- zL#46RxMI_57P4JRtw^iRY4HV(B4#skM2olJ-4>RK&LSP+3XEljt~m8^{07~hreh?x zqW%ZHVlYvF371GU!iQ`caOB(dH%!-0K$5Sr-{5iSK$baA$}6YU^?*2G*4!sWvXMnf ztR~VS+uI5~JG8KPZ&*=l04~rTVKAMoq&L4(@AwsKM2i=gh1n4G!=(13C`!W~t2Fkh zu`Io`S0<10gYjZ18~1c?`xZLeN{0<=vJeb*(hmdy%Ep_Ej+7Vum^0|Qeo&k;Ckd&l zB7W7a(xB^e%s^nQ`3?#>5UPzTHFnQB6Ljj15(Zn%X`(t zBp_B0*EjV6Op4kolG}3T(3u-4>rfNeXchEqFTUQRCX#m0*=E6_cjB%-M~5tg)8ZqD zPc3AtPLPokQJA!m>rn=P0MKY348qpT;q_D zH53Or`)opB{z--Trma3WkR#o73G#5zlxF!OMJ(Nq0Ju3s|pC}!MV9*0PkI*V8?NbUVvF_g|J?M7lUV zyaHX(wt*lVbwJv5Wmzu`xL(Had_^qQn{PE^a_T!N>rw~u=aQ@Sx!Xxc8td-WE-*b4 zr;O;zo5VV!6=K0SXe@V1(vwIYBJtpquF#&qKlC9(mKtb-nz|(H{3*>!osWDR+h?g5 zqOv`>Pz@RRIp%cUkg2)&lWj09Us(QnRu&XHg^jT+Z zs?eWHp-cb9hk23De+(}yEC=R5GA{d}47tF+TBCkH2+ezkHOl-EuaoUp98bgR3mBQR zzF=}Zlx&SzpeM)o0~E9cL z(I~bCoch981!dC;_qhy3h?j$`V$mq+ci?hoyn%u++W`69z^`hF;|+h3uUT#$frz|Q zjr`PkAZ2-3kbs>r5u}c}`nXjbbcLp@E@zm*26#?kw|XaB$;pO-BIXfnj6nDRp^5uDM@6RvbnRv$)FZAjb$6=gkfEIG1_LZWP!!ZW&#bLEls?W##`CfqTvMb(hX%- zZjB1hyOjja@D9ZFmoq)oCvt3Tm(0hI0?RKLWxN4P>u$Y#TsJZSY`K*s!|rrYwokm|RD%fRGh5AE5}!o!YN9e+S_*XrC+CqkTov;n zGr9M+c&JTdow_muw||vD1z5zti$(u~q^LT)%M(t#ZO8!7!tBT~SybK@B^Jv_w~8 zB!+}Mj7l|yZ3t^KzoaY$S|sF!8(9_Wa=uxwg17#puAJ5+G+S?x@^UON6k6dAsXg?A z{VXa@uyO*55OuwG2LTNHJpbhkk3t$x(>v$b2j-oH1y5z4fGFV?ceJYs*J{J~{`zG3Sz)3fe&W(As7<>wXQ=yI&QVUQS}*#Hxslrjhp&ev&BT z=l~420!V(R$87arXt*5sf)C4duxb2f=*NKg@?wIfo{14~7vUpb0@+6)OShgJw9Qvw z>??>WLZb+_pU>c9CP11K>quM<)th7TBhH7v=Y62yB8@oUG&`kYf(GK(S$?O!jvs|i zg#OyXB3|nkpW)!h~LJXKPO;;sxPt!lQ`^MTCa#BSmU=^qh^>TLykag zoHg2_k@a5C1DQMfTXM)N3Q38ReXqVMRRnH?4{aZ1z;}(FcoWzFE3mgk@Hh*xYAO9o`y_pA%Sjg6` zZn6tlZiB8h2z2enUp^>c1giELKGDK`!u!Bra9=T;W4&~XZ3;@&?W`G6c+71z;d{ha z+c8LwsTRU=xDR&#ap7Zjv&cu428Ahqgs-^+*Q^uf{=YZ$6Tb0-kmF0ceE8 zy>aLE5%X`3BXSfb&p_a>``LWjLyo8;n-IDu$Rl&1bU>^q-<++beW#sP^^nx6wky{M zvVv`(6V!u>-d@j|MAOgC$oIkeG`p?MVI>{z3~!=A*G;s?14Fe!)zi+)>iOhak>f_k zB3%I!EH-9=@SlK={q7%V{+5XS|8JZDk(_Z4F33SY{eu)C9e5n{SPB_yMaX#(FkUuk z1>MXn{YS#z;xP|}70BfO=}(Zl7uM33zo*z!ps38m)TAMimzLOYAJW#T>aTF%V>7En z{wF?h39pmtPR+m5n0$cciZOicxqwSFIT5?Uo_&ulgRQEmyx1!yd4ZRq_#u_wnb`2v zg|xWc93$lHpqCb?AoJARF>X7mtrDJq_~|w^tQe(Io#)(pz4bTLqH?Q31v#rG?)>%8 zGBERzd&`E|`KRv#rhB@a)gdo#uQ-c|6KoFw+x@0m5#R=SbLb2!k{uEo3{Aiif;{?ZLj7r))|dv16U?1GSt>B>8WNit7BL+&9~Y!_e*9dL`d%&<3R!uGHN z2L5!^GlzgN@jTO858T>fxZda$N3?w2Z>54FQt#!PVS!RXn$oC+5Ee9qRYnP(JffJJ z035t+An22Jc|L=ISbjA6$IL6QKXV|aOm82u@zSsPypVd?y0d1hRM*5JD90@4g=C{` zydP@$ybQFcz2aZhDsN&P?cr4f43=v8V@?3gMhipYzlP#@TCyces^ds4!<%u86?o== zSx8$Qx2RV92Qz}epWznS7gP4ro<`yM9Y2A9QzATHX zvz4}C$j6%NI}^DL<`(QZM;>;x3UO5m6eO3+X=9&-2Q2i^(a)zzHG}ioneJo{+cYl zQg?~GS+#0NMZHw#15dLY!V(#AUKGlV1$@jL+Jj}iW)V(Fwz1O>$ zjTH0u!K!LF#hgXHFjyydChM6S%n@zWrjT zmx6O%W zqF4-(4*K%LDlT0tTte3SI1Xjmhmg)*c>}p?IB2k;-E8>fNOboIHDvwFZ02H)U@|Z? zYz{*9fbE65v9>l`H3hM|*%Eh#@BdN7N%Z{y;X0G;)*yMwv`0NmK6|~*7%f>&Qm3A; z-$D=c$_2D%8~^JDNrU6DUJM}_UHL;Smrp|o&t4#CZ05wsy!Yjrd9vK`P2#u56F(~5%>-ok%SzU4>-AX_; zTIICoN#*cPQrG z0ZXILMO|!(S@5wf1M?7G0sX9F59UU~%I^*IJ-n>`hFFthQipP2YABPuIY4-mK;P~stUN?{NGVlzPfpim^tFW1s%JH>5i9DAwUXA8!gP zWH%Yt$AOb#RpmUXmH}LjBp(y0kfX4|1#mC}u6B8^IzOWj^koR)djDQG+$NK{x zVd?a@6Ja;u`7FZQ#n8Ux2^9K(s&n6d0$L@%5%Y%!xQq@Wds0Zw4=vLyjo_=D5JBAd z?;L9c{3x>^EH@gqM)15w&Yw%-sUCjKlrQJ~7Q|bAJDa;Ieh4cm15bU&*SP}bPJv3_ zxC&TW9e+%{WFq@j+;2?^6bv4A;4z;z|KA%pQZ{jA7k+zQo}O`u5?e+@z( z1}@uP0O!s0^oamu5eM_H=y+n)BKFVZ37Id0QE64*qYOc}`jcQq`0wJ1T>i^PcYv@D zVblN%c6#-&+lcUA#891j3&{bi2ma0m`;qx7WQ;;CzWW`w&!3ITw7n6dW4QW6(pkb!%N#`2TNA_iuO)mJ{t1l!OnarK0rW&$?@i-P z@UTP}_c3IX8Sw(!K4deWpLliB{zMu?<4>TjnuS02A&}%Z0%XcehND7 zUPRaDWbTD3KBNBCK8S(vg`JC{S*&mu-OTm7hTb|O_93fqGDqu$LLOaf&?*%Z^}mJO&9X6_+gC^*r2%Yt{uay}oh+Cq{ zYBL5?*jaU6;mNjfb$m((8bsb8Co+1)+^_<_H z#uU}`n=NhP=PCb1!~GFhZ4qrNm6p8fHWb-V9k)xDaJwKOo{xbFJ@CYRsi8KWIfxch z!amefB=P^T{HP%2w<6I4fG?0sn%sjPoT1J=!`vXP<-f2p(1&yC0|vEKf>H&>ctd8<1wI@Jr26C(&MQ-$@0&G1qQFV#hL)Z zWxyrqHDs;Wsmu?E9sBuw+C-!IN3*h|D$2&1_z34}{Zd{=N>2$(*^tYwu!zIF49;a_ z8PG>G`vX6gP5c9PUqzeT;rvcn093Bwyj*GaQMTT3=)wiG51WB%=DHf%E}&P{TG6$X z>)o^pXg1k;;P6qjR&rSn>B-N%L=K65wGn!@ouiu|KJb(Ds5t01&w%H)+`4+$E7m9p zyH-6Rl?spZ2cPt%;RXYhslDJ9z7nf?84dF!Kz&bG;nFoQLba@4JQADCw93-a{#WoF1CihdAKr zzZddfhTd5hBYl}TMylL=3CQ>n$64CoFwoqsfPai6Y`jb=7yT4tpE2eXy!NLHb>+R^ z+0yTI-hy%7WcdYjrpXm;G~wc$SUQFQQOMrkX-KwBwGcJTJ9sC!mgal_qmd1-trPH= zY0DG7#tR&DTX(F!RwVUWkns5ebB%)|H9jX+Zq0|^93c(a)UcnLuF%n_!2upA@<=b} zZgb26+9bj!9YWQ!Q0u+cLx!OAwc;Tb@&Ek^)mm4!KAkoRhc#>G@n!fI_zCbguF$~g z)Jxe)=2s49t9sc|9R(*%as()QK6#yISsO^H8&3iI`xKmOE7MGVj&sPzCeiP~q715w zKvP^6OqN+bnf#a$65Fe=O4ECXUNd))_eX&ItCiwaWAi5=!+BBC0Gm%fXT!&1uRj|~ zf6REaVc^@19&0k<&!(q9jK- zm+c}sv(y=^Y&%e%Bl1Wq0jWBgbwxMWw2fWPJ%>-p5v4b~Q5+ns`9vyJ+r=$f6K#)~ z`_xY5v3{{$>WeG-bvQMxZiIYqqS9Kye=1pcM~6&L3bu-Y^9c6RYQ@)cJl6bfx|H2U z`oKZvpW;7>c?z;;zJzIy$j3x}8&8E`AtnKJT?mR)#*_!d$$VnlISoS(t9!m4L}opg zjmC66KfXieYljkPLdSR3T^BU~3BQ}|)2#UbB4SrJsl1HY0q4CYa05`F?JSFiB&DY49=LQxm4-!1)m{}gK1Ya- zFz2hl9n!}vkGkwaF-Jyc5vFdNHQ=!JVXYUO)z~S=F|5yDrC7an1`YHn4*lquB$ZlZ z9@EDPRvPI;uSA4rqovd5$o-@)BCCA?GMiXe@JI?D;}Dped}Awv83})5jSVLKAD_0H zVrzP>j@)>ymAdJ)d>XTUIKRphpM~M6A@7Uqd{?qHpXVY+^ys%zX$h}P_~j=h2=s_E zXqMPjz~*al=L?gKOGqgh5dIgu{(4r~l?1gu6`^E&v{bGpkZ2#l=l}QN*=Iki2im9M zTPelzH`Yt2Jh&e!yw9;S#%{3uhQ~UB3!{0!3;MjsSz(rHJ)tMB{t^(QUIL^Md98

53J?I$-T?0z7`!b0Cpr^=(Q01Ls^sH+6&BeB+_srF3&ndda z{1a{30(-NQR+bX0X^u^In1iMJ9xFp$5y1MnrynGzh7|)+$6i`si^E#wqC8GV*0Uh) zPeR_y`H#dLNW%uwbAk!C; zL-bd}->D8d1HjonBtOQmz5O|HIoFH-ol8#`es6poO<4hl;f29V@eG^ zT>xr2nqR5O88}Z3i#V^^%p^@#JJQS%aQgn5cg_(Ux(GQubP-3$z6k$n=purP>rcFP z1z+>WO>Mv;D_9jTsGyRf4vGuOALi z2jJCI9tqQGkzDG^=BvzIXAh)pil*wx@Ag8P*c3#17|Q=bu|xUJr9;Xg zJ)~&*SawwOw;(A4BaYKNI&>Ohn=pvA3hGW7+0S2M!<<$#jlOT$BTP_jl62BOO`B}N zrLadJEndcF*f+B{=;Cj1v`@l}R?{dF*%*r=-b}W#;VQa?F?+>7}kB+ddFHrN12 zEuYQ#<5r?WKfrUOvu5O+>~pLU4JF|@Za$`cXRi(-iG|yoX^qybX1>jgENS1JLHhZlNOH$z^#TE|bszKJ z&-EmHoX2$!ir+qhqf7EU`V3O94mKi7)HkIiH<*+dolpAJO*`8wglO98po=z+AMYrj=W69*_Rj$;EpEm$ z5~Dq=d4y@_jaXZ_wNcF8L!PaPk+ry84WT9|GD-Kb8RXEicfRMf0WmTboqd@1`|eYl zh%e0q*w{1gk)-%QLavC=gLnNDFQav2{XFm&Sk781eP~mwM&G|O;Nt(($_ps^$xdp` za*}?bZ(gA$8EDuiTgi9~)wSU)O>~j?XgY;hp!Q&+=~StKMZ}pa=K^5Y$3J&X<=CHM z$YQG<8r$GFlucu@CG?8#YAC-!USKq-{TR%IsJn((f6^6d!J$7z+`pt_@y*@e%`U{^NXV{ z;WRyYs83-ak_o|Hcm`cG3ewg7ufgD9hv2?$sZ7UBOowURrJW%C^wI45wPYIg@+8H; zzvS2;J=qcKq3`S^mK<)wv0W@F_ENw_4F0xeg=NdQY{)=@|Az{OS<|`zh>o?7yMh0L z{Q_Gvh8LKT1s;ZNaVl9^rVd2VP5J>7Ry5k!4Me*}YTebSUP!wQvwVLg5cOjA2|X1= z+CMBOhZja%{9>L4QjL_S#@+^3Y8FzyCB*72G3e6>v@2<~j9gK739WIzopA9N%z{Tc zvCut;PQl~Df-a2vJ@I|iA4X23AMOJSdup<-EdY)YuaakUXpfBfI_61~sR&fQLrM#3 zU<{x5c4Dp6PyYp{_W5eILoBz-UOXn8S6HqzSqUb=Se7A6Uh7Kan$6fIsUH-{N0ftG z$YI&~-5AJ^m(A761vJ22`;*50EgJQqN@EGmSBvlP+llycKwt#p{k+VyD|#GA^znp4H!oh;nm1Y-X$7dBeOgGdvg;(4=hx9J|p#)=;PW9ys9n6 zK!!1N)qaI_;=~_As)CiqRA|5B22%TFd@`r2rP8?`&Xq!<7XK6ltR9cj%*01b?0pd7GDTddNU ziy1s>3^={>v31ijWF*k16FDdGHNI+`88L>F_p|s>491c#9$aa(${Vg*L3ZX+%yi8U z6T5F4c~k@~1DOsN^CRU<^!>JgjFv7*jIyj$`p$pArw9XBcWHj{yd_&@NF#i@jYjPU za9*d1F&F=MbUlR-$~{I~3|aJm!V13Xme*@+4;~-% zbRe}Zv9aajS&x{FShF7mc*y#VmTKyWosq|6-DSCAA^TRmaXbHPnjz6h1E|zb{Aq7} zVJ*jsOUoR3g|qkZidMH7YerMVdc=-q%xWeVc}=JE#OhcKhV2WsPGi{M zOw;RL)OfpW*=BxD^Cfp1LfpkcllbEecIMvY6T+^1X+^9J@C)DGmc<9LY*(pZHbya5 z4m{x9S~&?TtOzvLc0qS>#7?)w^BHU!Y92qBzyo4>8L>cMb^J`8HYZ=~ z-%ca3w+ku3JR+e$*Y{{1vy6YM{t`jknP&bufRFb!agaWQ2JNIFyix`-VhW+Odw5Fd0cle2Ip9CILWoASugQ%249rNHt|Tv0;O7jw3iNqW)KS_xbSkrr zwZPKn(OL@Gdjg1zRV;L+C6Zu8`;vb}+?~bZYL}2G^RQtfx&>ag0P$+vQyEG&Z{`Wv zQlN1f)Gjzx7_M1NM}et=Z(!myeA9z(Sea+fu#lox41K~}P5&b-$W_6tc!ITvhIUUt1_Y(DVo<_X~ubcv*&WuU2LEkt0n((-k$ImHkzSwuSK~3Mx z4?!4$;*<|L1`@m@ewh`C;o6qkMW8X#4249C%z7FEEk@;WI z$Uu_o+4BXE$YOIAyqUA^;4v%=Y(#TR+9bk?PZRE#{Ml!Gv%P$8oWLiM{u*5YO~^rO zWvmO)+G`Gn4c2Ym%;)B;y${lJ_`sWy{~3Opbpa|*Z|!n^b2;9^)3DCbc5nO%0=4b~ zD{ELqjF`<}T}GDu?{OYdq)_=WkuWFd&W#*PZBy9Uwmg50{)AMVHFTs=^wl@mXDza(At$!(*`3HECzP=L?C6xo!F_-Bycay1 zVt1{GAC|)4uXW(dQ?%0BFmK)O;`6Nu9Q<509@<(jp-N;T$4LYoUF4kWG-fyYQ*(FceO zr)UAP{`%axZ?>+^>RXHZ9#u{t7j0XrCC$J|^A`FtHcSO1;Rz6Ir3X#hCxU zgmBzm=eq!QTcx5;=%kB&wEf9V`1XfmGt9r-ed@e|ty`SW8>i%{NGd*Yem6FWkNrk> z6jaj_bM1KPu5ViMN%4;?b=Q_o(YGw_JoUFMWd1mJmAO4+!wuFkI?pPa8P7zM78=X0*hSmmjdg3Y zT&polAW_Iv5#Wfuq66YK;k*voVuf}B2}itWrU^beNJ%sKA#^!el0kQ!{s{BpE+IML zbf6!3HV66-UZ@|x3x(0uBMXJP0?S0mJ;V-03z67%GopOqXViA3@rEK$M8luB|! z;C0%8^#j4=`hE>vd0x<43Hc7dM!x9t9&|G-fILirZ9{x(b>&?EkxzQ2Y?iK=bbSdu zfxT+;twN)ofQ1FI*+2e~V=47`e-<-6{x7$X-`#qjvUS`e$F!NEdD${NF9I^0(J2+v z^}ONw29UuJA>Hx}8(#lK?Z0xqCO1xsdd)q;V)o@XXVg$p<$-qj8U%A0i-{h(aA>e z4XTMJC|sWnNxV}H$6z;0!^Os^ZDx+4&~fIvmEYOXN^JaXr3)2h!^L#5rN*FpI#`0ulZhU~ga2rJp?Z{ejOHyvX8CRv}J8d(FMM z^yV^iEo@if2#FN+&=c>ovbl(HrUCOyT^SJAo@9E$0a-u`4QLhHO!Fg1b6<-UhKSJ! zD;azmZ+&ROTcCkO;g62r3R}G2OHTmY8tH}pd5r(^@n)Q34_Q1Ozw$uE*{>98>7D|5 z0&(ZitNhk2_M57Yf24OVdG^jFr=f6bv%kT#tjYb?%A2cbzc{C%_4- zrBiaq1|U%SQw^qE+N#@euuxn!2Nx})C&pT%rXFCK5bH1Y9fO)|#JT6;&T;MPw&7Ew z14_ahFBd?h%cHPwS(p-s*RJIITy_i>dJd!H7wyHo8;0=Nm_Ed%+Oc1W*2Gae$vTXAZ7)`9f^ilTc^$yo`H=1=s5inygwWN@W0a8|O2 zZCxEOJlkoB84;vJPnt1-6sxEyNENrA6b1CkxEhr@dOj|E4+g=S!>2j(yPe0w4uESP zvvpg+T`qPDz!H`-zkqRRM7}iCQv9p9BjSKW|AAf7?qeP#$AQW{S=1P(eFg4=lk# zCMUiDMtPYzZpE))qaE*ZeiG&#Q0`&p!#cv7P)e_;jc34B#h~A=tRbPRZOT*u21DJt zHc^1PJdt(%aYR68JLut~CVKi5X^$Keie`rktZ9I=OQxHYlv4Nr$6h~{MSDeyOBVBX|k&-WFRvgd9VCeI#X)EA6zW0rJnm%a^ z8=^8L%e+d3-+{iD}u-RmfR%^=*Z#6uxD_6m&iBKggWT& zqY#+O^#M1yT6^(7G_TTFAQh{zlx~>}qH9VK@5dSnVA zgqTHqAr?p2sLi6$A|6cR<)qk0=})l*KP5a;h{7Y<8a{8YT~FiBW+EL!F=Z*eXs20 z{TwzFh}Z|Cm?iqauDYqk(D*cR@^G0M!xO&IF`wl^6LsapKp^h_4KMiiw?AI#iQ_pj z59SKw3GiEg^>bJkWRY%^xyPE;f4m|lVnVmY+6er+StvD%ieRoiIY449-2)Z;f^utx z#^5C-A)=OQmAWyJ`}#+UtDuh#c}WR2h1}6FlXvG$%`~ zVoXI6>2GMuWMuLk4S7+8XL4lOc3GnVN#^m50knQMT!Wzu^C17dNF7Lf2YTLJiQ;%M zMuR)d*>u4D-J4HIonkC)!NI%Co9O^+s4}0BTHVgpY=i;n3LR{7>wdQKrDJNJVikqc z!>q_U2)}+^8$o;Kw0~d!IXIK84fLXJc)&zG`T#uL*3AkEXESZI0)!&A1V4@{mUj(` z2!R-bk6FGMnHmwT5Hd-IO_bd1hF9F_<(a6W^{255_@BpGrX*4&5IK|J@Z}kzRY{M) z+Z{0f8dAdE_&Cz4?%47|qM~w@vA}$i4m`vBwEawPvU!kfF^}wP)PlIMKJM=&YPVv| z7@HWi4^5a@hMxTQlCaVWOx!>etNSa@(VN~d&nwn-Y}CFeDO`=vVYaIZ8R{l_B%dEl zhh~eOrk|Q`EZswveE&AtOxuyFATcq<+qZOBlIdql3wmVUt+2S#`WbS4ezl)+w4ZMU z-JG1!qQD8M)0XYaRNhL?$t!$H4vfu85h2r&VlkEh2di4P2jGNkq`^CNo(ka|vcm|3 zpFG&UfDVvqlorrxGB}E(wVm?AMva;3J&DwriA(|?(WbxmxdXLwIg)ytqz$KJqk+u| z81jOk_{A>7WoHtZd^!gD3)YlD@+!obyOB1lI&3V3k1;}Ah`q9*0;G9 zZVNt8lvb~WsMzeSD%tSASkA5lS-8LXft460RL}^$-h0hVvdeMrEpzCA19$nS&r|ii zP?Tu8h59t!yI06(dXcnf5gTjM2>t9G`g{*)rKS9++JR;#9#B(x3g4r4)XGM#^|2W# z;$4oIA5TWDxn0h8U(S$P0sH)Qdp!N$-R|gIAfE#%AgFeBDLK2aPm}{>1=KiA&cu9Y zVtIg9F;hs?o7bk$0RcCZ{P|)_mP*l=ShU0ORS*IMK~uyMI>2|58{Ku@YZIw0;L zJ83;>r5pIh*U#Yq{pu;?js-S(CRXHBYt-BKVTFQ|nS|oLn4B4fjFC^PLe!jGiS_XY zWQ>oJkVZ+T1MizhRyHH`n**K$c!v%YJ-4Uua_)REI5oC z-$YKIEi?;yuEV-V7CaBNgq8p$)#e6zZ_VI~w(b&gm-eM#^5DVDm4fOH`k3XHcWN(L z2Z2~cyeG3{_{ekZI=>)%eap`Pnh23iz@Q`f0rAV!Ht3M6A;sS{y^C93N&5l=))~sN1?{@XGO2Y`t`!)70 z?bdLnY2=Hik`M3_Tpd+mFG?2_3mo>UZX6(w@?m$V7`bxc@f{ZxX#5~OeiA5an#U~&7)$zQC9jWdkS ziH$Jr)vY2Gdok1pM#G%JcBoT~Odoh50s6YNlD>hNdJAH%d$-~7KSinfzq_FZW8reO z_mn5*KLI7&nU7rjDf$ZY4}dFJMed*Mlv)e)R{F@DcmwY99KHpzA|nHXiZV}p0Ka2l z*$@#5UT#IAN~^x>_^Ujs?l3bwh_4U32U}Ph9H@O}Ciu;BXw0sjIPREuXAOm&TyO{E z>=8cAtl%%|en$h{&e}+=`vvP@27h(W^qNVN4kVG2av-I|Eon4}CSnK4DaUdf;@pdM z-$`%qk{0($IC?A0--Fgl+g+`L~ z==3ke&cRqBpkBy`XYv^!r=kzcLBw0AH5(%Y46~4)@&x?@zd{JIh)3v7LlOW@0z@(> z?~CVD)6@8ty{0SWs&Bj%NwU5M%LzZj19~84^PmKnF&zY*u!w^1#%@{5k%9~0iVtX$ zN#Ir9Cwc)of-kB_;cjl zqMqWWei37NFwH!Ve<{YmQ~pZ~pL0Tv00Kt^dC-5v_qL3-9R zfwWfeUYXmUT0EUQ%vZ41P)F>IAHxDi{mPjRC(mpY=B?sM>w}~lYBwZ4f5^<(M1!`O zd|(cHmJWEnn#>2q!8ztCRPY&TaIjEIA~u*-8I=6Q$@%2$G7^I;#}4inl89X%#+hLj z&?6%Evj=pgMt~dE47|lyhISa{Z`^WOqv?Qpgw#HEUXA-fBX8A9Sf|?IHZwV>OEv5p z&p~ABdtl~K>A&8i52pbz6hC3B6MnK|3ppkmsOwl>8B?umNsDZNwocKVbSjENvH^#y zn9&!&VoGDnahW|R?+mx90bIu{IKwE6qZTeFx}BtnWSIwPm3V_z73JeF*VT4D=@T*b zGnf;T8Q!38=ZLA9{DhcQP1e^X%1J9obHirv?Qj$~#?JJZIk-Z}jQ5rjE*nVh?KrFA zq5o-(y4x6mReHhs@-43yvnnwwoP0EE$5{bSdvP$ivCqLW7uf%li#78kA6Cac6Jr7@ zVD}@DVhKQ@HeqeDzs|8gkE<0QA3Ape`BT9j6e$1~*ih1-*p4xI1vHrO{kxm?TwE)x`!0871NkT3eN-V{!4WmCt zy(Kh1N~S8A0A27vbFfANWiwI_ziu3#xT?bgdvGJ0`*xK8HQGi-B6Pi_FzzOO_`+U8 z7DA&MD0sBRRG?wUz+~a&P;AngpaVf>la_0n9yE1$A|am^ZzefG!^)|(Pxdt8+gjC{ zg^UJOZ6&?Jo;qUvIVV;ReXxx^dn${Yvf;2DGe^|0uA`^vAVlJy3DlWe@W?KRaE9Q) zx>35j8%5i2>=x^O5uWgEmS0R*$S7P8;fmdAC?a2Ajm5eFVAVqQ5<{^@v&RyC!24{c zdO_uxFi2_4;v;qcK9-5ZQZm`g;ihh~k#2XygO#?GWeyqw&t&_>ET6oQGTeLu;Rh5$ z0gLp-cnm**`7ek&KiNPI*>BajGcbzz#WZX0%I6Sj=p)Sks23=1@J5uNT9-)us!lP$ z2PsNjI%#MuZvt;5dr&zll9O3dk*X8?@2za^>PkdJEZZ#jRdvFNFNTM<#$EMW@?z(4|F5t_-1zud^NRJ>N^x4FDuv6QYEFBNgsc0AVxsbwz%XzRJ; zXBfO0r;%V07NHj(z8CuCg7M(h4$OlI0bygTIgk7t_u85PipN6Bq?uNP2E+#o(Bsak zW0#o`2QQ>gN0a${Zph_F$i)TAXoSN{sthJ)zszgomJ6bLiiw2E7N_LrSdhpdVuZ{j z>Bd*`uxtk0cdI#?mjOA+nLcyI>q4v2qCJg_7J&1PlM2%pkKkG~4 zrKDffyhhP0<5_E8zJ*9gbWbFA)k&79WpvPoe<64S?J2EI-Xy?3!p3}Xa&+rv0uAhe zoc@m6l;Ogz;<>DBn~7Qkchn1u@@^17i4gTKhh$%o6I(*tmcW~Av-$x8E7`T=(d!4t zvQ@T0cu8@`{a9Xm+Y`$&*nd!^r$^4C?>zH)W+aM;U;Pa|DxPGOs_s32hVYvR#&Nk+ zA)e3{U%^r8*TPrPvue*R@pN<50<++$-mG|Jd`O%URnI9!FlL~%cygi|Yodqb*ofhi z`Q1h1h0e8{_T)96(s(`lCQ{u8v&munSpa&*o6TUU}oswhu z81Z|`K>laoDq+RH!B_D=z6{6!X^LT>--;UyTPIcg#!j;{t)libn7rh5pOXDGvEKKv zN?JD{&uga5jutDz?i?auR)|_X@b9 zqyjmbDXO(gh_+*dhW?R+YsRxxMzov^)Lcm_d_!+$8WE%r)OasVETJ`WY$^gB({=sh zME53UNENm}xb+@dhxp3wQX)ct8q^+a`>u64dp=D;7!b|sbe^-{Y0<1v03g!qNijan zwfwPS_7<(HmFIzBjr1IRghucf8|k;mZ3kU~5nbV8MaXWbQbECUnb=58 zZz3wkM9_tdvvQ35nsw7SQs-U~^~2wi&EdWG8WFUW`PlmSCKMf}vj1Mshx$SGT5UY$ z3^o6%(a?P?=k4+Qo?Z21vSsCW-t*9>7U8Rtn$@5Gm)*#^JmsmEa&hIPil3=^@S?jD zT`_tlyoGCyw-&S1C7;#vWcEA%ifg^sb19eS)N$zum!Lq#bHivMq*R>XQ~C3TChvZe zb*+qvi37&^-k3Z7t2HUdx-P1U$QSRA$LP0;tnNvg!>pos%RmZ62U~A|mR!5^e-cF( zcB?O)=R&|s|IubG?9us{_&v8Cr?d$ztU{W#)f$^1jtPAwt>yXCU-)!94|?9A%Vsv4-6vHV1=|EfVUmA&i{5+4gIFPv-gd_6k!1w*sFSqaxy_Jfz8yCO)1KD=Dn z2qS>GZFt}>Ye>=fwESc4Tc=D~VO35O?_GZNGW=@x{+}s9|5fkpgZ--CLdlTECvn3y z8C#J2bl68nb4J7M+XlU;hiF-JZ&>~~Ok?e@zj5mq@!!}>>&Ppgu;!!Iq>aJ)RcbWz zv-;ebggrSaggN!}g;wVr_pCmuN|pa~C*D1pGVEL|*#0YOXH>P`Fw0_w<|_-({$~!= z9Ol+D+GHN0g@hM9_h|unPe`Q1)ykP%s~Dg2KSguGo9L^JKXkR!EeS7<3I*zsJIsxH zjPgh7#3Pi~J`6RF*k@*CUP{Rx=_$Z}pi6JYvDbfbz_v;TE&t z_a5r6FvMU=P}Vv}_EgsQ!S`9%F|_;5oVZH<#Us}2s*7j-WmZAKK#czsGGydu(oSXI zJ~~NPJxNTQnJhlpZvMM~XGQN)Em2q5094N47up@0jnU zOyM(?OIk=>ANi4g%h&US*tAyVW|3vx1BR70_&9*s|Btsfe~4+1|HmyY+-|Z*UB({Q zGDt!+mYXdZ%Oxb|61s%3XQ_GF_k=D{G6>lRNt8NBrQ0%+j7lAvR->j_YL;`(>-Bw( z`~G}CpTFS!%X!T?bN2IkJzvk|@q9d00{!5ozGv9PqN77PUFWbmZQJnbP@0##ksWg? zio6EYFWo!MHl-@sPYW`CR)_vQ_b6Ne#+8CJhno0pHG(j2uKmlmO;MyK&=^I13vbg- zCqFyR{KxG91Ov}R`HQudrsM)Aa#nzMz=v|!m`R84YQW8j-9Jp1l1cJZSuW5-E8_Lv zf_6I*=GrM{W53zo#K&6~)+jrKm0t_B#mbY@$uP-Bom`YvCcpRvGa`*^!~7fd^3@kd zS73Uy10C(D^d3ZBC7F5U2gXy?qS)fQe+W&=xC>#G;JERA!cDt0eUn)Zgi!M^y{4Ux zC4IP(jFo!&Kw0gV=vP|*U!=TX+?IEkCM_Z$*)Bac zm+eOPkU0!8y?rNtN*bhg9n+iLO;zeG^-lWXkGrPVJ~A7lMcc|QXxLQAq;N&cc+xoI zzP|`w{5x5DM3RzjhUpUaFxbp_eI?7d9C=Spo$iqqB=!3=Un+Q_OO}|$Bgsta&G75| zfTK?1ElHb}Ofx5p(8^~%=1wC=&2heYV0E!@3!VE*r~50PPaR+&;b|8%W$BFW0}F`? zsi*$@5x3+Ou#BaOx_hR4hB;NLb}|pF(?-^WX3C+&f=xMrX;yl@#J#r<)w{I-X3VmvVHPQX_+h!7Mp|hZ%y6@Suj5^xoqUW0J z)Tk;A|DjRyek};a$CZpvze5u8iux{%Uj9Y)YDrGO)eNg>FX33~-Ei>i!XQ`#S>$z5N6)LJt=d7}ImqSkW^^-sQ+z_lmX0m^?S{ z;EHs)+@8uBO28%dmhShW7WFCp$Q>88FfC4R=&4=Iftcr%zl6L>YYtF z@=V!9^S^e>fPmOcy&Zn|Bu)XO<#jPWBD&3{o|?J1&eHQBb_>N{8{MY1KK?~Sy-1?%4kBIhwbRX9l9!ZMmXIWFOu6km&R4A7toOW3ny) z2{O!XFL+uZ<2>Q>nhs8Z%rU3^Rd^6;H^Au3_5FKWB-Cj;dbRqb$YwaBbAyRNU3=ZL z_OWO3_7`fSVjZw$9DRwZw;45TRa&N+-G)0F+4p&P;FsxZTjZ8$Qb2!u_W2!8Hz1D7 zuSCd?}c!pXD!Z5vubDe-NC_Au9?MP%MaKe;_1}QUNj= z&#{LK!t#a;b>fNe79r=si3D(ckB>@fTKNBInqiH=>FG}lP^7GZ28ba7 ztj>uLZX2x4-9;K;5@`y-ljtl22|7G9GYFAMAE21OAQVo}aZKc$zd!(&ND2wrXdyJH z4(W6YJxxRcVNI;T!8SzH-vpRBZ8x5HCJ^%JkHgkCtAQ7F6caCau1P#WoQG6H=@Ae% z!Yz%qaQ^R2QrjfH+s79Fd1d50##FuL|1{8RAl;nA)p(3>w)hn)Kw%vj05luqS>(HA&vHDJ>9W7MTtMsKUR zjNi*RO&ucuK{qMfN`?)U$;9{ooNoe~)Iq9du+r4tVw3?*ivUkjA)tPD*3yufEC3qV zLIY^jT+SD)s6k{E=H$?<#YPP@E3r`q%^Hgl0_XrrdzC7JkEAk-IY{x9H~$Y2tN_f} zmEQbD@W_n2t{`ekjot}S8G)R~YItzJ;Ut1mDc1hWmC#ugLK9F?5g&kP#Ghx}M^ne0T* zK0rmWKzV(X>LfZ`!5=@VOJ?OLf>tNT7k0`6r%xbiuvF$Ul@#{qZpfh_$oZOUB!)78 zpqZ^+oL8D-40&@BeNQd}r=O`8VyPgb68q39fgz;AoJ1}%+Q@5&bjAPy?L{2d>m@5V z2f93i+G}xuL?n|kJpqszaOzM9}|PN?Pb+bQ(@VyDj#lMM<}yQKUZt zl&}&{lWHIw2-##PVFqxS*e?XHfN=&Xm34(5EOY~}OrB|N;%3pAC360`sYSCHG7_#L z2+6t+O^1{!zc=3<`P9MKOsT|hmUUC~xo60#EVJYmVsHmCatf=G#v-_q9+feW#*%;< znEC{y)ieo7DczKS;PMO{sF2}<=qRXYxH5q>F&20~(##A|WoWBS=(q6Ee7y*2vL&Mi zE7{!Q>%}rd5$YYTtK|&ToA62O4r@q)fgrqR$|*Q2I>(?#Tj>0=4*!=(LoalzyY9(qtpu zB#viDBW0>Br1zoe@%UuDku*BvQFIOL91qOSQ9AE{5=5->IkwG_w?2LwrFqc>MLH0+)Am4yLtKG04&COI zD4|j*-9Z?r11fOQ2uYk&PwA;4B$BCjljc*KHA)<(xF~>RO&ctFJrV8=1~lN>k2AH- z9Po5RM@0UPj@K`P}tsozYCC~r7YLZ22=T!Cmx8aIS~4Usj@a#F*?YtyF= zzeR6r3Bf&P&DN@a8+L+uVcK!!J&08^JGUNaTFjLSwpm&zZ#(A%r5Efm+2aBw4Ls~_ zB5Cj5IYr zL~-;kt)fta{+%}St>}eGAq~#M$d6#Bla$XHR9h_oplcyruxlw_s-z24)v_6v%~Tgf zSGvX+O@3MVWQmk@h85vAh788M7)mR&!Bz4ahIGeJXn`T->S(ARk}Km9a^-c#gUp_} z1aI_0lrES|xSAyc2v$nBbr-2x=F4lE3?M86B|9vQh*R?=0HIvK16UbwX5M%4OUej8 zq_5LNHO>%<`E-wUrYk^fp;Su-QUg?XO|ya=2svP;_yfR76L}lop^V_V07Wdjob)P)}9}5DC;En;C3+| z#Xhn?U=L)^{xJ}-=y0Q+z9mlQ0!P=RfC%6o7c;ulu5=5vLj&3`UImH)7m^-$_Q%3l z>Jq+7)jF-q#+t;PFN*dikthOfX)fclh*qu@z?W!}A4e!3 z5F4xyT@}hdrb3O*`$gms)g6P2fwF7Sf!0BDZ5dT-{-!LK-+z zD}GOtER6+X2b*|J5iM7fAEA@*4uu+&i?q9>jA?e}Q{D&B;Nw<(Cx^Yw?rP?1JPaw$ z_d8P=A94huZ82n?-#_LZqb{f^BL!thQ2^vs3wZVDMQ~qFdM?am4io+m=A)YR%)J+4 zSy*ykb(V}P{$qc(fCsh>*@uawPL4fDWlix61d_DjI}7tBaY!eHA}-`j0nVTY{rCYt zu~R+)EdW;UH(39P0ZiCB7D)~FKn+QNDVh_mJ#>~p(TS!x=Av$?@(x38slO(_Cy&1{YZ&PxwH#wnv zK`J*CB_rU(dLSfYEza&bz>LWFCYaKD<7EO0AEe7NDBqg8#9Y)E3iEF{vkJlzPuxQJ))lJrh#mIu$IO7MffOc~^BQ3i&m zGz&@0qw+@!QH7?}3*7b@h#y&sB^9NCA3jpvJs?yHp~LTc94xiW)$~tuHkw3_nselj zeaCSSrfifOGgHZi5TlX}XLvnmu6#&(xUsB={(2h}A}*7IdGaA{K8@1+jimMgK=wH` zQ_l9f=0uVofJ0NW%ZN7eFg8W_^sdNsK2F2k1(i^0&$bJb7Q+Ox97m2xpe^O0jhxjW z*bH&68U%{TCuKvN%+!pFlcAtD+h~!c>fKI;LPEtghMz!M*6>VZJQnw>BZ0hZ7;f+hgnbUF7#z~#AR z%IzH%aC=Cj6HE#m#OerdkKVc|=?Y2HNd%kXQGO)S3P_HO59!TSh8$>#qfYfCX-F%Z z-XNE1Wqb~Bn%VP}=yx+5E`UkD<7N6vsr8wde1ZdL&=Yk|z%9;$qk;Hhpjf#?Ap>lo zzbTe?IdoK{2VC+=l%^Ev`9g|QSBvy=4w(1l&7w)W4P_+eM}0SXt=S!YS_ zoHVzLmfFN(@#(KJ&LN(*DA~QJhH`~bSRvxwNn@P`H(%k-ku?VAM9SbyT&&orzDvJ} zH1|Z8Yw9H2_vAqVoKfmim?dAzons`f`^XxRMBf%|KTPE0#Tl@Yo#^(|H~Otr={}8KEB$CA8%k8 z))$z^Uf!p-a%aYU7xe~ZxI!olprsR05U}T|~5IBsncUU5-b>62SzPj(E4ltJ7 zcbb2U%u0L{eU}w9_bpP{uP+$I@n*xh(-{?gX+f5OcJp?LCT><7R2I0CK`V zgUIBLi?H<<7a}#-w~m^D-b;2k$Fsc}@oN|nS4d+hsiso#!Dkw*pnLCqQx!y-0T}_z z>`Iyu83Oo+hZNDFs8}8fvB_}F6$s9}75oV@{*B<{7v2Lp8hel_hiL{`97agfVDzCD zmaud&o!7l}ZjL0wND76{v*7%8LtD29*B|jYs4$rRu=5V%{alVx%k{z2Wg)l1cJ&9+J)`!a@C| zY7y&k8tU?ZAuyfbP=LVs5V(^;eE_mpa}Z8{?Rj^;HyC+9%?ZL9$zO1} z+;#$&C*J{R5l3l+s7^Tnp7s%?c856#SRUTf=!?90JkPrE%M_rPHz+M&<|-^nBP#%4 zVwnYH$Sg_eGYAGRgJ3d&$n0X!$iVX;E}~J9d{H3{Acn z%(^=~W!7LkDXW&Wu4vVld~MsYO}kcAZM(s;uI)rvHnn|f*RGYJttb38{rs2v`EM&5 z>%TTOF0gE8GX<7oY^?i?v$39GqK)+o%Wc-!wrh3S=Bj;%R`+dMVEGc3?OJ{Qx#yRk zdw%`7XVuTM)%`r%kDq62vY8HNm}xt}dLCQPHXT~+vR&7{U8{Gt*7N7tTF?L9)_V1i zwgOmw{<-HD+ad7#tL+F_R@plL0#9K(yj8naKWyJwmudEY{Wj~uz(K-||L#Szn`bM( zZok%U-(Ot@d_FU|X$?%}L! ztEd)F2(7wXpi$Q|GP5I;IR$80LG(q;=btN<@Uige7j1=T zJ$ylFn~U~2uzv)K09CcP(FCZ{knRRe8ntZ>xx&SuRy?Z!7wFC`a2HuZhJlncDF24# z1;Vd^OUxnoJA_$oAOscAWl)wggX*$bnhRR*4F+XXT^bN*bWlCe&7c8l1MrZ?^2?9` z2)(5FOhYm|1LXs~hm31+qrqkrqv2sd_<=t#U)@l&2&$Bj^! zA`JI@lvbfX2(G79T2nM1BQlla>j}HyZaG*32WEss#X!hll9>_hBm6-VLmwmjQ4<5* zn2-8EseUCmNTgNZBj6TjHh5rbjmQ#z6ToI?aqQ7>XM#7;07uG|3O1P+nv4RrH`1}X zWLkjU5O2P1j}F8ucI4$DnD_18kML6U0Oh_n*co__|gS{Pc-5b(<= z`Df&n1g7n0rcr|%@O}nT^c!#z(o!#Fvo@nujxq z5xg~WiNTS?S_u{_aD#yFKr@=n*y|&mQLJf7;5wjkO_LMXfxOi;dGV)dHF&Tz&v`GL z03R8eNLodpQqd8*2tYLa2)Zbe%$0F-Q|Y2urryaEr(^Dz;~s)L$`opeho&JEq(uUa zLoER)fvyd;IHLqo6>5=76UetvO9ZNAfMc>8)rzIH<&4>AilcciQl(kWgC9sQfZxYy z$N}^s;k2H%c!3h9Cr#kir@v-PUrShr4^-0w>XF{zG`NOXhr84xY)hM*xg7c{#oE$P zZzg~nL1$>T8bi&KP&BO$H6N8mBW(iO#gp3vJbW#YKveWe z(=tN}-Iogu=bR8H3FBmlW2Br2aYIE|1p4(eY4(H2XX!~viOsvztJRsG)DM_ob(lJO z1HUo=m3?9on-vn?HGtqxD79H#Zmug(dC4{0$GG~q$^xfGt}qn8^+J|7k*0v!Q!7u` zCx0>T)o?>Y@dGbX5=UwZNLVeR^=hfwll!D;dSD2kn*!n`y~5O00V3@Ky(EqOBxrsh z!T~5N8NZb9!x>9zdb5=jgZ)J79}uwVzPZtQw@A@=wyM~zRyIb)O_Fh;GR`HQ3ELk0 z)ZJ20m;d*KyVFJPmTA*bRb8ZjuaBp98ImLMwL&!7QXJ20W|PZsd2;A8fdtAS?v*H> zl{JWVv5GHPpG;0P&{9@Xj#HD#{sy$2m6hP=XC$|QY-5!@-Bip@&MOjyg$0L=!v&`N zU86Ta>WWF+i)>V(U7QdK1!$27Q=prdGloXZ)=<(|QZ9R$`jYk4;BTSiP%0`br;UxG zJw{nNEBV4J8nH1HK;O)!TIV0!CNHM6q-6J_ZBO(Kan4>4k)!n1$%O+!5KF0)Fkv=A z18(FilnN^1(FEdr$D<+91-z|F;35Jkq~1&Zbwg%n8W9q$^c&uA%Eq&I)*xF;dk6&sK{X>FU^8U;@TCI08vFS79f4w6$XVv zxK4E_(+wmL4mkxv8D0#|)%aOdjq8o3+Yae>?!=Kw3+wj8{ER*GB}? z(=8#uJq_-}EIp-)hw9O=AFnj!P(gs=Xq0cMRhrV;zcET9AdYDqIGASSTa192bAd8c zKa`(&55V@Ybk>2ZBigU>c|XEB?W(};fD&b3gMd!|&sALb)3V^8m<}jTk*o*Qwh-;_ z1LHdj!fPV4au;|r*U?$g;5M2vk65FQ@GdtT;2`SAKp<`T0SK|V&`=A+pK}2pyFYe; z^T=>T9C&(1-z;Jbl+ zd_Nk;}9FB``+UjfM^*3h6Gs!K=y5fPewvO=ud|!UqNRN0g+i#c}3D~Cv>G|46=j%lC9#nJg9&}uU2sElusxOsmq&3VbXh)F7FR@jRM z#WsQIxeO=88F9u(MiK2voSQQscG;1Cg(lhRu} zkUG23r!Vz4gDPK+7FwV-{o!2@I6XYkfo26w>K^StTwj(dL|L^CI20UgA0o*f3+Ge| z;Dkt0L}h;^(HmPAP;^qW+Qme^#)&GGjw^uuF&61F8Ea6>givr#Cj!r~@seI9qi z{*Nq1Z>XdJe)uTz@eRp+Hl6Oh=L_5XUKv`)&|7UTlKeo9r7JR1MbFw!MCx9*K6LOd zVa%?#tF;~aaN%CiVS_PW(7QD3HA$~T0J7pG((tF38+qZ!TQy?oD1h!Xv@R8-8EJlx zoy_|XIzpPW2TO7^Oqw#z@2s=gNT(aYYI-Y!Le~h+5Xb(l7vUCD*cO3|J8#scJ|z(X zJcVxk%^b^ZF=+g`)G(>J-6WjXpX;qsJP?$<{f5frD{-%yrg1if?a?+1`ym-A>6Nud0+{zr|XR_28}d3Q3s$*4~zf|iQ5BTo;=?Hm<7wmMC8bI;9?%_;M2 zCO>N5dBe;;?OOhNyLQ{GmeWt;&;GOM{N(D<_nwS!cj!~oGWY-5*%f=ssURJ^MJmK--Dr)36Z3=YrfztsA-7_m zS8FBfvEz$svQjgtm1^dbVWW1hTL^4qcl}fB5*&P5*~IpFeZ=O#Ury6EjE!Ecnd#*+ zYw4o)e~w7}T|GLn)v8UJs{b+htv97Cuirl51;OOo=>86WC5A5kFt_E`)_?k7lUBu= zI&E=3M33jg>-0>m5$fqKEJ|%^qI7$|8AbJG2$GRYib5>h-Qg}iz(CrYpX1SExc$wq z@<*HhWlZD-Lyj{Lht3DduLAW7{qS_ZY_1J!{r4N!^ls{8V*qX|+Ru=DSt|}{-0&$T z?_KodjzhY{P~LBL*#^AUXVY(L4>T~Bah_x)?v_7nS)+{mt^kOV$sCr9g2`b3bELfLk^a5cQ_5~9zzdohNyWj zY!sPhJ=JQtVup{plP}@+!r`^Xw=_MJ?2RVj>|WIa(b<8G&U_W%HRp^fx01kxZ2*N z!2)IIL%7bmbd*S`qMtYc5rPXncK0`WEdSF7^A*UIpdfZfo((xG#Oe>p?RlVyZ~=SU zR>((QN61g7K;hut0CW8ys1`SWD*)5qDhcF1-fU!{8)}rFfA41Xx`doFV%HC~^nYi7 zj91AYOa++te!3bI1UQuh1osf6Q68?PeF4H*l}2tEa<-jAoMpkgIViIO=z;7R@QQ$1)ui-;8=FmVOjlp-p~2i2 z-ob)7T9ttf2H7;FzsUojy;1N8gSVP5N)Z^;1LwdEj&0HmS!skl4RR4fF|@ZEpa;_t}QvF|fKIOt<&FW}x-g_Csi>^{-vF1owNRR$gCHz0G2b=3Ige z8qmh1Lhw{^9_f(#X6*&@zZeFBv#Mh{+}K=sy&ggad}6yIcqKhJ*15|q*gS%E;#vPr zJ3;9H^lw*yr@5fEne(ixo}F*OOPagT!b`x~-*h4#9_q>nn9MZF!F6S{>?iOX9cr@T z&(W!oKbtEfd5+K@2NKN+PXaNO#O1!i{eTuBEd)!gb7okIf-!_@G|Ig1R_6K0x+N@AnZZ=K5NLa;JhCf`rK6A`M6k@EFy|d}U#9%qI9HmT`^$9Rmd`gf|#b4bp&bY*hG@OyUi0 zqXib=+|mmZ5Dfr>^9Bw0P5c+eGEhA_q~54`Pt%ZZz|Om23YpIxK`7>Wrgeb$bRCM9 zb$!g|8}{l$@B_o%e3Bk-I$Hx_Q7`yZX9%A$_#Brs_(}$i0AFSN;D&4no4sK5tVA*S z@N(hySrcDDfqDo8&5?1(IgJdSGv1IRgL{TT9U^$LrO?chk=@Yv(c}d@0qF6zu;xn> zGpC{8-RccF6dW*+uA$*=Wx_^F2(S?5P}50gA*iXp^VlEmA9{m7gqbJs*b|i2K|EH% z0D_0|gk1nxXOE||M02+YwVk0SViz(XGu?U~aT86tX8t@H z!VcCgig~}nt-Fw6pb0Mg4cNC`$Z!80(l0Z^x`Pl7>74o2dO=|k{ZG#u&o4ed*)OQ_ zA-EZDDTqBt-0MBeO0ZgHz|ULb%vN~2vnARDB`nSxSRrV2P_@Co(2YJo`15cYzzllA zo(basljkArM%a6x?#FtYMc`|LkLH2=Dkoc_^MI@_q)0=IR#3(R7@jvFQ3;v^1_go? z0<0v&hO+C7l#K9?DYfSfG2q%fElJWKOO;i`=7X_fPLjg-@q`HhNaj5g#8Q9*CWC8q zC^ja;fC;exW_B4pJRC!gX&H3AGbBwP!k;$e)F~}-^+vIYfop_b6Zh89M1J zI_`uX2oe~28VD6S3z+0Jb7@g6qPS&(A~#A$Gi*}hdpD6)=FnM2^gvu^WTK(&+JlXj z)l*4lH*Og?$HDnu3aa@DN)6Ip$uBd)rh4TbhzjM?pQeGE+MLv(ox=#)g5dg?kS=fO{|#7VT1g_P1F9;S1A)qS z6srJT^fol$*sp^I{>y>}{sRV8p;b?X2L8JM4gB{B8u;%a#mWbaL!K}SU@+9ldH*6B z>~etryAhZFHrBuz^v&+ze1)6rAFk85iz<$N+6(3AH~0klaO;O-9m z6xjrbM!jGS3=EC5frfq$3CZW~Q>^ADL-zjHvjMPZgws3x9EUWJOWW5QtyZF(Zn27+ z*_P<1zy=-pK|{yjoBsd{V&u=uLk%tP97x;nv>lq-hqY^FvqYyod7F8n|P+*M>*NrE8;WVj+oMbZt_%m88d-)9^ z(CS1t#MUS#^ll9#0A?Fl=)53N$3d3uLd&FDgn+9`R^;aK^G(6MQ6DtJfBuf93lK;` zp!j0o&My*vAZ!5Pz5qPgKoK^>Qss05&2k5v5WK>pfIPIw^|^J72*@iThCuLylDf0x4f8$RA)X z3O(w?s-+O4T4oUDm&*4Z#h~Sui|eAOXu>z6@{N`%C4}dHDAPc-1Gb?NJR88JfLg~? zE7QaqrT)vrgFxPhG3>mBMTU3*j>WC@4x&@ws;cxnzo zG7KsQQE2>%B2l@bKFZA?)Mm){PKU_E4g_k80f;U!WF$&wG14jI+&_GZXbKH1Eg_ch zEOLdUP=#(l(2;6jZ3%=5QfQ}eopqpsggMHkF!2nT2R#?2fJc;(1;pK4a&96{u?i0u zv#YnE@>5b0^ivj?7NT-6XcPF9@!`6JBKi-w_cmj0pq%ww3doTVya(h6RjUlxxA?y~ z-;Q44Lz5o7Z|_{W@g%&4CS?dL>y!aSwbqy;j8OpmhQdB$|2sg`YFDeH#My3ln>MZb z*zIl8x>a9TwrS;N7Y@t8b_kY3?DoTQsNF$W4!1iD%Mo@*VJWmb4oi2tld$x#i-6@= zyGU4i+MR`^w_Ox0MRw<5IoU26mQ(C5!E&lyEL>$8EZh8V#E`v7Gv+|7f~M*B^9w_E zsPhL6bIm$Ws*ILqyvo7@4gubbP?|>nBZcUzRXt=_C7WAsWR4QZVo#&bd7F7N^Fztr ztB(Rh1NMfjR{2e&KxsgjG930eiyy%95)S0|prQQUW;Nen(4E|4mY!fQ%Ui zYyWkqQ21{mk3;|aFBBk3Amg227XY$2!P@WPIPyQGC=%}hrHGA${{}$={{ebM3>#t0 zh+(5QG_Vnj2_c+wR1$IiuM2ttXzm}(d!jUQ+1s29sxc`4kauf+PgX!34EIo2gW+z3 z<_hMWVB=ZLYhdjX<^`aK08%9qe1l*fCQurGkQ;ir@m?JRgbr*mybnkT7K32`7l&D7 zDD1CSVlZLI`JW$xf*j;h154l}Fg_(ZHAw*%AIz)PHC|0D2FRdOlOEwZum4^`Drcel z0-5K}AbTorpsi8cW2aHyi{i z{a!ecJD}G24TtU)+Xsp^a8Nb{AW@tY z)KQ=^f|H1V6(I#0V8nn21=bNbKO4!VfE^8$*i)=yS_o@!1tF|KKbFH9XfJYDYnGpd zDY-<>mI1R76e@S)K1*N>d=RiZ0C7{74Z%;Nllid#+_H}ZtRrlz%m#%JfCG;i_~Jp* zA7DF^=K^-P6=49WE=rRcMOdSBWt2(-?)$_l&1{S*6+IhYsS**7#dM)H`QrrG>!t{> zB{Wi%6-)q}=BdyJ4W1a@ps3E%+QXg95hxTIHbQg@36Y9{9uqHBiD3q-@vHzX<2g8S zpgF{tpnoQCS*d`lZ2|fSI*UL+cHl=H0*C(S16EHpvVF}_aAQaQf;m5nnlTboXqBYT zMWP0+zf&IYc9;Tg8?8-QyBh1!y=?T>qeuLAw9|h_NB%roG;k2tLqHbSP^QLH`jhpFu?v@rS#@M$^8&0!D`7h9 zL&$nK(>c@x^NxD`cTclxy#|GVYu^R^qKW)H|jFgex}=s|)nEwP20ipk zM=}iB+!mr7XM%u*i&H&V)8wduD5Mc!Tx-Cp>rH1tukAu-<%0ZmTfw!h1HBJTB}5Ot z4FD{J98bj)EQAsh;#x<57)R>~z!3;SBtvg*wWU-vlMo2PAt-S~Nh63Es>DNh2ZD3L zm<$q&NeKBFmQcSZ2m&OYZ|4cn{QOUAq=t}xiZk(ONp|8B&ZFS8|GlvBxgqQw{_BsN zlrR`xTZ_9F>&i;DF5dG%e0Kuz=$`-dZtf~w$jkIirD58Tu<_>luu|+&Q?8WgM@#NO z2x@h>^olZ5ciot;y}##d^0UMyMfB3R;kxcJVQl4%-|t!cRtQh5SzPKlH(G6r!oNJ* zF=}b@Zq+i#^3&(O!U^!k$v(rYe6bl9J@=)xE~mo55`%aepLEy{7* z1iVXd-3WQ&tV>0;Ym)NJ{s$wNC*)FkS?3j!Ck_q{XfK`qZ(>Pwu5Lmb{qv=rc2s;U z853F*B#qYw7mbe(%Hi+dl|R{2(+MlT7S<$oaiJDX7&-fpEbrePxMt6J;^Ib0&EKK& zyXB;+R)L6rf}5o7ptGC~lUi8Xd-sk#mP#Yi6(yofc4KepAAM#n)9Ge?s-o?}7d?!v9G&e6hGXWF zC94OL-hGFKUpaqhRei*tILuFVb7i1frg*Y$ex>-)-=RBqjbvRK(|^zMeXBEd5KBDq{MTPqMFFC=lT60wMUMw; z*){u*y$gqJjj7RZ2z=I}QJ(y?@(sFQHs0^aTpMI~axpznex>`S6HHb0hoV;U<1crI zJdNOXEa+}iqiolc`InV%S>AoA{&%;zgO{CoFa5T?SoiYznVsT$K8uG1y2jM4`rYwU zzkLHVCl?JG-H5(b9B(c@%o=iqZEn-X>!;eP$84vT9A2HiI;k^fUe@*CweEg(-rD?I zgMx**9)1(FecmT`Jtszv=5N=|h?RfMJ@EP5=Jfmba;N?oF}Cj1zaNH*RurViCKbJC zP!|5!(IGr5;&?&PSY5={#Z|FIDGz53>^$R&R^A;aR`$| z{lNM^2X)9zO&b4c-gfU}7Y{TJ0YMa-KW> z`s^R$`UkR&OD_d3@indYyPo@dCO8e$~!;7Cn%x8Vdi0}Lh$n63(hahlWX%lIt6Ob)UN#xJXKn1 zofGfimN&TN-24@tkLNtwC77sqcy9+w9vOS@+cIG3g^Mqr4$<&KiiZXsEIQn;)d9aV ze@$yM<&k~=v9Z2SLT~hnxN-lk&F|4m&+oXjwAH9&D0~0^0~{;VjoT;0eL;k5zI4|1 zQHj^kb#8l)w7T05aVFs0J+@g8`}kdL&_-L;kkb41_5tLc~()j+rzanXlz55K)1Wb%zG~f435r= zNE0%7v)Wkd-b{Hjc@GsO+>??)~D)&}p*|`^on0tV$ogxUs*>X5+$6 ztNDW)&U0DmaeOY{vS)(Ax#y`m@xqT8*Ybw8cubsMAGX2qJW%+o4DZ%s5d_&q$8U2L zzPi?5|CQ{#HI*76Kfb%6o)FHx7%e2-h+KkL&K7qrX4J-a={y;CK2GZ~3SI-A6+cJAX%YAv} zyN(5S4{xtvb+de0udNC1L+AYZRIa?Y$VZ@9J~B8U{a@kVZ~k@>M;EQHamrhN)APpF z6}=T}J^I$Hbh()&?=<*+lRU`zoXwQo-a(i4(I}f@(aBF5@yq*z zmX=H#^X|bu?K}C1%soD(i=8)jpdOV6WtV5aDni0{Lwj)7^}))dLlxZC@%aZ|O@88^ zw)E!51^s{9w?yc9`jb9vcVR)p(bf**$~RoJRy%pSWxNA-nc|E;>oItue8u9SnkXr2H{bYVe1a6p z@pK<>)!#4r$J??2$Hx41D#jz$H`j)_2-rf%wm4&G6wJvM)}fVK7&^{i{5z&!q298st5K zu7w=~TOD1y;=FrfHh);t=3z*R;OgOBwal&gO|tLOF^&G~`n>LXr+;&ec&4^k=hZW( z=J~gO=1adk$Mo`FCjH|g4DpM)oVP7z>z3Ic>m0TlOOp&mE=S@ir<>Ir)~;!^gjeaChhtQgVD+>}{{t%a;uMyI|K-OVPDt6R+?a z6WQ{SbynXBpSq>SE9SSpXJ0&o8d*007qF2rTbH>=mP8k<2s~yXF-VWPMlYC~~&mNus!}F}-{lj}@G4F!=c`clRb8jw59Mtly zr0BS7(9vId{W7_te5-w0-L;mGuqzpSf39pzl*iSq^z!#-|4aidqrv~EY{w@N#|B=g+rWr!+y__wadM1J+f z*JU00zuuoZ>FmHb;lOj*@~M}j7xnLCzx7c+cgd3&=`o*wsN>NQ)N>OrzuLt7$)!9j zIFq6apAqgb+l}yuP^$LT;@TVaCo_T1VVK>g9z(>GZnW(jLC+M4v-`gtA2WsvquqBT zrC(eab?QMm7$q+Y>dP26Vea=6-h_H-2E*XQr!ro%s8o zpE}O6?Xq0Ix8_36OY_~jR^?Userjk*8e}@zaMrfS27U8#op5ZE4*%I))2zBWp+|+o z%AlZ;;?q=b+2u5I_(+>S9-o?I+rh9a7@)kyfKISV^fjULuynbG!2hYRbE-(6Fm{weaulLY>N&G-vzcJVbpn^EmA zSs`t%F_IST$pnSi9985mPY+w;{kN11ZC^cj*0l8=%I57m@=GS((I%e7kr7w){U-JHptT7F{9!QJ7;kUm{P z=Z@N#Wbs(>c;K!DNyBeO1pDXxnmDxIx`oBUv$J1c4m77EUg&dv+5Ex&!#+8f%j(bB z4!7&Nq-14wYCZa6SV!r5^OgMRJ65K()~C*0f9GC#3)>j{x6#(mxv>11mejocyI^d~ zj--bPi|u6HOES;pNk(m4J>}e<8k>Q!doQ@_?JM^?>~MTCmz-qKx8}8vG^^@^{^)e* z@UK7EIL|_H;o=twTWDQm@POL4$z8AYTRx`!P)(@(Ja_tH$DTd69DUkt&)28X$_Qet zG!mbNV)->>q8{BD@v*s*x;!WS&JWMm_7fa`{1LPK`uhy7(1hB_<}j%40H z4`^+lzs@O`t(Ny~*42NsN;aj8F8@5D>&wG6qd&e*Nm<=; z@yof5pE~B=-o;#B8u0!PZ#5pi{94am`v;wv=fA|qHb%5$#Jg7)YFt_SF`kzt=J59F z>8*q2YwbTCUpM1>QLFedorYRG&mR_F${Bd)78UdSG<;>=8@b z&!|2$Vd|B6Iv>E6Chlq9a;plB@>#vNK-+2lxtNLhZfZb38n5RKA2p==%vo{W3|pq( z`sebXfADt`kbotP&X`R~3{ohPE8=2(s^DeRSgiuvWL+5PRdtAA+`O}fI5sotcmjrwhAdp}*&gvo#Qf3nt922IU~E!^{ImS4%r zId|6mij9X_4f!FAuKe&^9NzWOlj)}?$bDZ9NLrk~!C!L1w)=c6*wWPmGQW|zI*n7HXpYh;_iH|^gqlPOs&m>wXTQP?V6nGB>2%(m;bKc z)UWPg(T}};`)y>1Y~bU6|4n=0u`#B}cfjHmOJ~n-Wvn(kXLjz}7Z@{s36@4kf(L3p zCWWm+<`H3ocJE&<&}OaZSgl3e+>#5^rH_tI4I5O^Ub=GWGO;vfo^$&Tj9KrKY8jh3 zM|aqqanVt|t7q;?(PW1u(p>{}kKeZaHsfzwovQ*CI8pBuveRZy-dl^YyItf zEsN$9zRBMA|M7N~Us1kMzgI!Jq)U(%>28n^X#^Ajfst+y5D9@nO1heUX04n1y6(C5-rv1H-@Z{w3CddR!?Et9_P9)3$JOTN zswe6*lm>`Gjg0oRhv_MjuflCHtXc=h=;AdK1UaokB;&{vZ$$U$G3pNDf3w!T+n-e} z0BS~ybzNfUdo-)SQL!%RpVUTtQqT2&ORZlVmbn|Yv}=?Crf?rye~=IXLG+n)hp)S0 z|BIM*oo_=YrO3sCY%+6RPBoXrr+W6Kvgl`a4ZoW4n$8|&N34X5T>YIsZg~nOzQs6j zJH1S>uyv1Sda(*0{#%0g-G5-979T?dlMCp@XQ+#tzGFOm=xPP74hW8=bv)^R>(%Zz zak-0GeUhacuqdZu)u+bB+DRDYD%PE+V4muvl3iv)ROoX10A@7ljQJ5-W!&#LY=_u~ zS}a7=7^YDYPgA>|+^_Gr6S*cy!BYz{4n^gOod^(23=`LQEFtQ#DSC+(6KJ+>xb}Uv z9)9{Aw@;|U8Hzpi(8r`sK7-9Yu7Z(OwrN`CZ)!mZjLhm;(8@c>p4XY5nIjUf3prKWHL7mJj@-RzzDGvZs(B%vmaYaa4pIYq9zJ;HB`@h@UxE*L z)Tjh*=Gy;rP3-$in4(o0^@5VDQh|h|Q{x#209PFKMeIqii(j8f#ZDoQ0xoQZ-R}6B z%Y>AjCYQ8Fd4gE;0LlbomPh2sW z7$3WxDQ3=@zkfOLlW0=aFY=$Jwr^%^Z0~n1F8BZ6V%TSB)8y_)4-5*^X`@QrW_w&# z@cn@9!Otk<>3Z+gDcggQE&}+W`ei~uS=EL@nI((oj%2yS$@9?ljXj_eQY_k22y@`?E9 zqOJFLGOD?_u%}vdUM^?+-q+TNvhOt~^cZ^R_I~P&K*lf3iM$VQXjOwWUeHcijI3~KFv8RUTm)* z*mj8fge*%hj%a@QomTdg4Cfguwzl}Qy3>f)SgRD#ErFcTLywovqN?p~hR8zSSYIit z4(JhpP3S94+zk%L!?*PPifH*n7Og3hZ-%&pa%WI@uepYAli#Sb@p%Sn&JFhXo5yn* z1)Za*-D^`g=a$nLL+lQEFIXHrM6N?8%r@-Dy0qY#rd^ZSDs*bU`purU_wDCWZI%`e zR|K@8A&Y1>Dfq%mkLilIk zLSc5qod#!x%=fjf@qdIt1jkO;!d>L|?vZ>6zbDfs9b`WoGWBJ8{_$1k?2Ddwe-VMq zBkRaNE4(e}+`SC2U48*fvlfJTuVpWnN}Hdn0v_xqt)x!f;iddO3X};t2B4lA(+P2c zg#1f}5UXyoQqIROgN<`o#{9n2Rxnyl{}^AgGgCsLFL_4Y-WuBdB+!?0zO5gp8RELn z*`b&nFO@UacxU2acKtkq5SFyCd~;q_LL$F3f9U_L3S+HZqNGAfE$&=RsE`SVXt8OI zXYCC$hL$}|_yo~M&)xBu;#>m-uuq$VTL%SPHrUBfLU~FSG3qadk8Sg?6A#waw?Nm- z>T7!W9EA)BuXhydjJhm?CvR`k1kyksUjH1rC`wYeev;v#@sDQVC3vvLb z&{e~1j~UhcUE2e48&M4oTdlbY&J=f%LiOnPIk*tf7Tpe*PYZ3*Utl026Z!pS>>WYz z>z?k+(7W>`f>x<*rFy>V+N(I)cg!Cr?^LXZK9}qUlGT#7njq0`o|R>=xBU3RNMy^o zhy}a4i4%Zqeq<8B&6)2G+pChH&d;cfNobapmnuA%h+^DIqa(K^%oz>SQVP^jbawxu z`^+jV^fQd7p9OtdvqDK`EOPTsEaGy=5oxJThv}gMYBnst8$KyS)nphya(hwTZr6gw z55?PlaU@$={LnDae)k(f<=MgWus0i3e@YVFl6CVOPmSL=bPU#xxm_@5%=W{7JOEEf z;>Cvi*n4YFVlF)IY%=r12a54My8~75`@Wzn-yV>em?xj<741u=sI2VgM& zi_O8ww{9b9L?_$ZqcDFDWb@tb7xI5ss@V?x-N`$rg1>Ej+pVAZ~X8X_9 zXQ7+30y=R2JIw&p{Jf{j3GyHey=8vezrGFn{!8;ageLFf#an-k44`ujHMyDczRa2onY#A|QCd=MGKkm+yWml z+Fpbl6=%P^7Mm*dX8Pf`)#p87a_PYdRvt|}8rj=r^xLI1ew-BUx#nSJb<~U^_bp0g zCBDG67t>6(;0Nb&TOG^Ty^&E|b}|+Jvz-IKV z`3LVSc~9mfoXjnejfEesP8Q=0Vb9G|&q??P&-pC7>R{n(`z*7HG2dw~9$FhFyxPzc zX&46WUGy=Ff8*YFS%&o0(SzTqs85!zezm8@7R)vma$$p?n+rbDJ)k;!T$%s!?N{pv z&4Rk8qV+~`N}{Bx@-x-e>h7p|wT{@vyNqG^ugo%%Bz(+$V|CPvuR=y7r0W&O+OOPK z6e(&WRE;0avQ)7Y>slGzwhf@uG#S!Pr9s{#(#(IqC6(DDb|hR^EqxkTufw}P>LuI> ze%7N?Rg{g1D4sv(h$i&a%NfM*W>qnH4D|bZC`F&MyW^+=w9?rp_ZLB1AC6+h86c;@ zF1&Nly~@oEkkyYjOb^x3gR%GWT|BHsqf|Y}Z6Aknt54DBd$e-V*i7z#xI76Qcd>>V zcj#}sIZF=w;#eqlMJjZOtCCnAv$o(j;=J`0|9z-3^D{Uehbx<_Nnt$6yVuR)2$iJJ z+bH#0vSPE~4Z_Y20=|fPTnWqsodUi7rIUb20Q%m#rVs}LYBQY*ecT(Q=1eeYbTF9h zCD8jI07A(lPD_E%KT)6u9PtjA7izdgt(v0f-2x$Lw+v0ji2YIlm_Hk|ZOOnir{B9* z7n0K=b*Fxh>fQ!UEBZ2R6fyu2j)G%$cax#=X}Tlk&0h$w7cpAz0xpt}wNFnGM67Yk@yANEuyfjIGhh zpy$nU*`TJ#ewg6BtycuHy8@XilBYH1DkJJS22kBl2)sQ@awJq`r{FQ>* z;C&3A^Zcy7D#G0FdDc!`D5?mH+kT@7 z@j{}DQM%U8xT9NcJ$C7w_o;7mh`W=PA!`fzKi;ttm{tv&RUL2K42^DR3Wz*n7vwI9 zu;J{PK`uMk%5Pb8C;;O@x60x5hMgJ;5YxI32M$kD#@S4FCCau|wFl^0IK9ti#|mV! z7tivxPM>(;PR$a2$f$=+%r&zMm3@CkVTqx?6cPP_j1I?p^?VrG4&FbG`BK!RRW!)n zV5&1zpr5%SP?N@(exs7C54G>wkczL=P~4~f(>Rv!s5-Sh&_Mjo!#J~>B{Dm6e=~*S zo8-kC*q1VgAVbQpW4LRkyUehj-O{%JiD(Ee7kJTu7IeanXI zt|7PmXtAMx&-X+}$}kz6fn%$;TtO?)Ru60|d4;>RtKvS)G{fCp8ZbD;O>@$57lrXR zkSqBmT>J(hL1k#4At1-0xOTuzaHBbw{NT4Z*yE7e2L$CJ=A%iHzEwB*bx%L`rv>&; z;QIHIt*UUi;PQbS5J$?MNTyQxOi;+=mL;emBjbLVDIhXQc?ccp-f`+Zq$>w?7M07U zqs+Tv1|6xjW4~2aZ<0sjZ1H@91-0;bYfSO?(o6SQ#B? zDal^`1^f#C{}YOkp9)Ic99gxjx=sv#m$YjiX1=RE6P@8RL0~WDJ?1N-I!4fWI+Qis zDQCerV^sz-H2qj~Dn=Nfu{fU{q^lB#yaBg~?4EHyxPMz73@OX0)cEHOs zQ!h-5XYH(;?bT2J1{P=b^Cd;+KGobv>ShxHpGdsplPrm zq&4TQ7lZ!;f)m_=`X7U<%6pb8+xwO{X%S$iSsJJMZfky+EI3SUaZ|Z_a&c-+JAjV> z?Wr@Ja2HF(x}InIYFE3}S@O>&_QA(WN9Y$yL)Go@8RF)Spbp{;4dnqics~EJJ{8La zE}eC{)LP8A4Z$Fp^3a$Sw#;$M?j~jQb)oHdLMHcs@tt6^iW**Ugw_3X4fZO~gp7dKk{H8&^{uLgxR>6j17UF3vpB%en#KW1XYa!I5|?M&?BL1bT^5;B zHk4>2qG?rM-#g#DI>hMkJu07{J?S;DEWd%e2Tv!!Asw2i!%~_9!wA)D#1$(zTx`HW zWZ3W~CQoqlNT6zq54FiR^{Pz(U&Z6oyt|@|hdb!itAI;N^8u&5Mx%uNzX{K}7po=# z33ax{wUGNh!D63b^cmY;lHuuWX#2%AM|&1EkH_m)&0H(5>FnVMZ!Ojg>o1rgjedV` z40_=FOOLLZ0HEYPY?~%`;qbT-4@+WK*PZQ%+xXQoZ2X?j`Pj@xCpt$#Uy`Nc+x`1P zy|EBd>-@-!;6-snG#a%e{my~tIPgVvDSahVv8lRD-xHg_LC2D_z}oC>6?M@cPhYgA zf@9w&p+cq_pUnB6iWZj*J4M;wg1*1z$JqykP}X`4b7(K4g8AADh6 zAOdPXhXoqc$X`At=~z?qdJ#n_@-lW`jP-rjsEV?{2^dZ9PM_OyKDMvo!5c9>fa7uA zqf1Tf!T6}mQFtM`ERca=bgz-0f9sL-y|2!`OPB{D=gC!Z(-?A9qD-O@4XL?bS7F#z z#zFEPU)bA|5XrBU4w>LEZt))#?q1ifd5`s&T#m1OpA~^fz(=4NA`yp)!(X(~^dp zyqz>%gt{Jve_%bn>X}I2Y0+8TnHqxE73Z`RM#&S;_tj7no{N9Oh ztOay&ddnQ_Q7gxQ{@fJN3J0>hKE!Og<5_hvMY>GdL~_s3arMdmiSBlXBeDdN?CKxf zz;;~t!8sO|8oYF_$+o%B>e~b>9j!YK=Wo4m zPo9%9ubZw;l1oVjVOc%bPtvbwuDWxQ<6w;Ha@Xj2KZi%>r;mCk7q@R!P)4oiyiR{%XmoU`I+ngQ0e|_-#XGMp6o|m zVMx>HjPGT&R409^vcvoF4AC3U4DXGPpp%ssDtvARwu5^z7sa?3PXki{3uaGe#%x?;^fW0D53>#z&T8eydvv5x$~YG#eOvz@V&Jb zzHtkjFZleFOSt&pQQ(uf!NSOqEdmfLlQP%zjglk3 zfWE?td{uF3UAH!}GlG?7*=L{z$9R6Sf%&0YC#ii?-A zRuN3~zQq3Q&w}A!{Lj!D-+e3lq-9pbNc#JeM-0Odd^hfCdzajPy*VZ~j_QBopGsQs z)Y^ygjYP&?)2zDSJd;w1d~_@RRe|M!rcRdC{4AH9-L=}%<+1IH&z42Tv}g_?VjKB0 zFA}%2rZ=e6Nm~07%Wx3P)UksyJ6V}c+sQb~H!};~mzMlc-0^z1HS&2nos{1z{_n2} zX6`!Ox^--qqCTNb^~-sQ8SOJ90*MiYytJZHA!sDRbQ0>SVT?<-C^3DuM^GCROTa~9 zEIL9juKYtX#8nEU;flp^p_7*OkVD5OwCrW{?mJ^evUVJ%h{uo)9^7EDjNG(0xx=uh z8p5Pf{q02iCCiXK&;rzazj)EHLEPXeY<i}@j6Vmm8p97a6wBke|c#`A?aIW?5#kig|y6M33xoSsUZ8Q!HqJ=8p<_$R&X z>!Xs*dKyQ@@72Mh)DIDM@0m`g`wm@sgp-lIr{wb|8LtlUQ-o$>?N#R#zJx;6HEI1s3xAlkJBa{gF;<_cv{+_>5 zy^kjA+JoB^3SJ>R!@)Af?o^9M}a}q%4LZ7~n*2;b&I@@h%PIvY5W~q#W9RDu#l5$BQxh-ty zoqHf3SPjvR=?du?iL?h?hWl(qt~*n%vigsCClF0Po9Q-vR)dE8j(4{;us*DomIbwr zsSy)Y)#Bh4g?(jNQV%C%^8f=)lsr;wa=9DhjS3B7Crv?T!W4$?td2f8Z{I&{S!vnD z_ZJ6b(}&~Ne2GdYch+)kO3D^lb@sZq6n_Q2zV#0_&i42)x=VVA;r^l-XZ?jQb@`KMTCR#{yf!T*VI)MV^t+;-{?6r z^rybA*?;Bg-zf$-J@ug!z9T}y_WV}*L zJlXb1$$mZXXw1X=MWmtz`AU9W*Lb%6*3Yzc5!{5=!OrB}?d;gr#7{*h!aOADnJb}}@bT{5+>MSQIpLZX z)>-thuKp9mGlgO!XoiNN2IYv@e5~bOo?MdINlCv-maEI(h_sZ~9S|EtT)#_2*!QSk zTw0?S``@+>bbQYVkS6F%3M{*ekAbLvp;>(}r}5;KoR3O0;@p4N@x~5a&rj!qLZ*{&AY?fb}@rtm7n6v3lXx`EzMKj z3sUz6ZKa{ENb~R*hAiOGB_1VSD#rTEVXsT*&m?t%FHlx}hLM_(7yodp-c?MY^1dyV zFZ`F;U20uVUr50ZLmU2cxzS9DIcgM&cAh*Fq_gB6TwIlZCO;x)>xn(s`EAd>eUM3-YTbN#HBLsWc*ZS(>l$56fTRQ+2B~T)Fc%(_!`_reR z?Yo7h^9))ij0n|^+cpPv^bmxR&GFMpjQ)N$tES{bajr@GYA19JS`^Vg;Zc-@HQoDFU< zvLY!(4O+UH`EPiy8YUQ*4m8-ZMf`8Fv&a4*^~y!*VAki_OldJ{-;=|_Bft5+rcP4m zlW(s@)Bm=$8qGB5(Ai#c{9~)_5(>+O&>Q}hy-{H>`PNM!^N2`Zm~26-u|G^P(pw6Xl=n zj&-#BO#3^!unIn`F57|}_+u4<;LV%tCl+`j{n2cJibgf&Bg60e zc%))R$ULuQv8ViT=lho?2$L$MHU(~=eQ=#xCG&LujXagmcNBfl&=VORP8I(wypv_r zuR_r=U#`+{4lQ04nwBD?G3)8&zg5Duc(JQ_$Caj4U;~vBAMW6QmZqBCi57v zn#Ymh>M;v1{M;e~U$810Gh>&e@$Z|IXEHx2iA+zyj2U6UT1DLwK3J7}x6=XF`8Q<_ zO5eQ$6I=58#e1Uh633LhR`(~9q2}L#W=dc(NWeU&)ep59y)Iz~YQ085{*zG7M*g<6 zJ~9i%M5P{13)m;ba5?f1NlWD%KgQ7W+{Swh!FpoQ9KI+qGOe_8u!jC*aeQFxIlwkA zRZBq@=mHrUF7obSK&IESR>N>`AY}X)4j>MJ!Ek^}2pA}d1)jS2T?g#ciJ`J7LN#wW z3y&T5)ZgctX~;%Pj0yOeP=qE0Vs&M%PrC#%w4@++|N9OMtmXFVK+EX&b#cg+m79Fl zL>ASR$bL;k+_5)U6-=|pAb;Ns0043;0{-w${_a_ZyU@xPY^+DuVq~8|?pc6H|B`ky z#i`&8l`Y@r_~e= zcxN(Bkg+#&SG0LwyY@>$$Z?eoXU^RQ)8lq0C8BtirHV1wmsAFo8{VE<$jk-Wn5WDD zbru-agP!7|W}zj@KL`z(CTs40RD}ifTYuJoUc(@QboV_Rxm;A9tiL)L*7cZ;twjOA z$HHUp9n94Z>@nKq>%#XF_S$oS?!YOMfFL|EQaV2K2{?rz)#QIoc5YCI9V%VH6@d1L zdk&C;7mM8hVj)Cdfwbgn!0o5)S;-%8Fu*BF#{-R@TS+%2-|vw;tYqtxe9Ng@!olg- zJ!$=#3Yvcgm^eYBdSI_?5+^_al(G1mAwbSK|BCrQwxgp<6AL@x6jhqGl_q~-C_)RP zI2+d5_V3`$5^>5oah@T9ZNjW}TDGpn*!%z%=6WwI{L#*TP_=6$XC6?Cf3_q4hF+;XV{Bimsel_47QPeeLJ|*l&7EL{hGjJ{MP~WepvV}OY()&gx~$T zr@oCb^re)R%*Q(^|D>r8yLkQ8{lR(*+bZI+G4gPpa7{A#_*LP}8*=)OCpX}^&!laV zNxYg`=6_SJ&?$T0%G-C99^Gr_RI6b5@?0X{LhZI~f6jfYsI6B&ahT3EXWIK;sVmkB<(F>jIDC zfj9e88Ejy-_0MiKXd%Gk+6f83Az2)NGBSE;9ei~Ize65lp|6549H=v^G1IX`V7L#M zXOkT0sHVfD%=g!0Vzk?+;`?HoH^f&?vK8J<9($flF`v&uPTp%Pli4c57~Ec#DMKDx zc!!R6^FL26`xfy~c`xt7$P)jBnMJY1&J)-EP%k329rWLaxkw2}39|XDQ7FmaQ9{aY z&}kIsO`g^3G$Plmn>!_kr&!`=ad8acgzVKMjUOaVv(9bgA*y;fq^L|M+P&FC3(Ju{ z_|^Fff7v2Z3I4NK+Kb>^IxNz~NF(t3n22&*t+S!dt&>@@BQoc)WH)TXmeD61D`Fz; z>7?h_&5BnbtJ82XzS|`5Dl6<(><4quVcNNEKiQg3W+&{Z+L@ zv|IPHXv*@kH{mZMeT`1ME5yh@M3`S^TD0w^G586MxrQQ|th9PIzs5x9uHeRx;kyMA z_i@{>^Zwr3S;X*$wKlm!+gEl*b4?Hj8Tyjpg*Q5)DU*+JJiK*oUl%Z;e<=7F(DcgE zl}OvMED*JDt#RhD4CthI?FfH_-^!`IhE3@bZSd*8{@+LZ`!SL}4=)TbY!3Haw%3O( zhGOWX(%t%`d|xQUtIrvrQB)=Hx6V1Nayd)8WV02Sj{@x`Z6;V!U^}zVt?|Y78_Et7N3p_YAQjPlp?jcvqkv2WuN#RGyKw7#AKzmH^F);BO@Qnul}@H zGkwpRFCjQbiDDAk3{@i(eU<_lVpt)rDBC}rz4qz_@M}6P!0wC;nm(+Z zEP+vLEDy@7fEK$YlLubV#=INAAUI=2S{f|ey^=wUFo@sy%V^&UkY5SyTQHvwyGc#V z*vfsZ1Xrav9?6IX^krT zM(Mc0Hu=NekcwJ_V%VnE*xRpQ^LlLiGdu6FQSDC0ZlUuliAlY9%k%`m#lw-!lj5Q0 zCZ|8$?w9P=03+r!6paA6_MZ&N1PLHcP2VMwAS>-u8PG>@A~wkJA;9FZSDE(T}jS#hy3)SWQ&L>5hroO{dy5h%tNtQy3pD3xKMjGz~ta)i-T@-me`&$aDN*L7(1sHD`$c$GgQ_@%B7fJi?Ml{))|?JIW{DW&*B50Krji-SKq_+T*$P zD@(5Dl)WzU~Sgs_nUZ{uF z8H7b&?=IOs=YD!?>@vP4fZyvzg6o-UrGf#%HON5Y*yo`EnxRiPJRRo}I3li-e&py| zF@+`vZSDg7mpiTXa!eMM%gr?Db_2bNEup@RbSMs`bvxS^O8{I`WajN~p1A$t8REad zuf6W&F{g0E`DNr2XUSFg{ox-E#EV!00zVTWzYGP-hFI>&r2ygRUXP%)nvyTN>UNvKIM~vV6#)CGUgYucUmct+wD-uCi z9)Tx+dSXz)e|3ys9V6hH;Q{T}QrAIs?{_Lj^9s_Czuzk+E>Dks!YI+4lKhD4R>f4@ znh702%>GF-L_2oBY*fjxeF zn#uiI#Lf*vf8w7=N1j~0p}Q{FgG57pFPhHmR!r4NB2JOZ&@ZEAt@wd|k4I9HYEqFL z#vF9L$0Jsm&!}NdO3phjHP=fG7#=Yt0L$)#W)ggT@~XJ;BgHS`7<|!}14Obxsfdzt zeKfY<-knvhvrI!vLmjYB&@W&TEM_F)l4u|jV~I&x=*N|#B&y$pg{fPT75=X59?jqj zxWj!@y~QoWWG1or(|4!hpySywJQ{k5tozR9oZ@uwF2*$UPvuF6Ke(NiB#f8xHL~3e zT&u?Kf#Z6H%WIl|I}&>`HOq2+ce&cNsS>#RcW$tC=1`KnAdb5TQ!VW?tz4~)n7($btM6#%M;oXY zr~4=HyQ{UcZ{sm_-y;-R&@J-*`mL;T;2zmqz=D|jW^ZFs^Ib2Y z>con5`YKmf`S{*d(%nNuyJhh+qv)+AQ}@FPp4e2hrJGW7IcRAaA0&@<59q@*ES z_wbGNeZeTTeJVC%ghZP~t{i50V@uY~07HX;1(*lMGK+WuE)a^~i&4(7(R53l3Rm)+ zbfIuM9BNokuh}pk<+0H4@uJJNEg8-!Da^NR>DW4A3Z<`I+AR`w6KDH*-n>yy=x zaZB8fxL$K^khahbyICr=-ioa}CerF%vt@L>{L-q4(Fr7G{}eb5{qoV;N*%Xljkw|3 zuVwmi-%`JbdF!l!F7-*#O7oKm%(w&_LOTKdXLffM5(Ff_e8bm-LSyN8pBf!4<^U=X zXlZd_Hs}@?6(SMRLZ`)xNSZlG?S7%eNaJasr0tXZlZm2ELt3xxQ)Yxz(r+9^|J71u4vkI83x6){edjOvBQ7(vW! z`(G}%JpQA!MVB`Tx$RWqqW(nk#4CEG_U`-Y?At{1^rNp5os9lz1_=SvA~i=94S)d& zdU%b@ukc_E)mT+7ny;I{`M_-9X%A-;&}nf|^>Y5DY}|qpt=>LlBO}bB8*q_Qc+?d% zIEffN17Xd~){DN9=>;N~En$mjP$#>T#Ag4d&NT(Oc2^ zoh!BwA3~u^v64FgJH>4Mof#uZx+Aqu_GDd)%x|}g(e>jEI{#K0R z1lV9~$xCxI7auTpi(EgCKD3wz_#`M&BS7JhpTtTXuWNEENS! zs*5%j)8+XdM8Gsn?a~v0c+~0OP6CD#Q_ahYrnl>CT+}OII97Ey`|J;LsrbC#QiELM zZ1pmEf^#NUi5hM~0AMiw9n1}M6*^95XJCB~J{lNX&J$iRP-sc!y%7hFUEuw|^72ME z5OhB;Buv=r)G1 zX2ToE9E|5ZMjoWQVRbk$c2D=q#b{Ay1UEV##&oMT67r)*4A)ypya?G!h|fWBDkaiK zC-U-zDbZ6o-L<;7exR0$f_{ZNVAD`!()9=#Dp;FZz2$hFJ}JRV2s`7n1z31Lz&BaS z29&u56{j36T)#|mgs)_N&hm0sJ-d_+!fss>#fwyUF$~tF5~75u{LY)w3Ll{bwznqQ zTM7IIhGWT|$fPa=kln^0cf*f*b$9PCW#;1Lij$5MG6h?p6)~%`$|Fy0CvUcz@s{_b zS33EjdI;e&lyMASP-w`72tZApWms`xxA*h`SDW7CguyR?`i^7zI0g&GbSbgD%A)VI zM`-m(As31+!NAD{`5SN<*3q@;m*FhduyC3?R~S;v(ji{6FLiTjf@$Cyn*fWW5T@E+!;7VL!f-r96qp;b42K}3IxDCI=6l%9tsS2uY8S6UBMnomDzG=FDp?*fBKH`64CXW*PAv;Xp=ZU_#oDHHj{-6Lj8I17tg|mcg zv*-MxE0*#cJeY0kc<}xXtvf6j%P-<;%*>|Tbv@VHVqQ!6&MI8FoG^Kq4#pkuMPqBh zDg0hc(1oBYXQR*{kKJPO`n3^+rwA2R^$NBfs3X8c`_W7Ccbl7SVpcYm9^3n9O_@J+ zyY=fKATTZU$VM|W3EqgrmA{N+yHQ{~ONi$u9(!0%e8wwUi~mlni3#8fXsYz!W|4R=Y9TTyOqTL-6bw!_JMeJz1bqf+S`8BgxeJ_dBsPAr4TPg?uZoH>7S_-R8Ig2hf+?)HRSjCxM&d zdJ;`91O6L<8zSBy-Bs!+qX_vPQMy^?4RJM??QiyZ=E<)Gder8+t%L|UbDw%Sae0|g z;~Kio3ztkxt3_YNbmQp`_?rr*iD-t(FUxpQno<+Cp zUWK7^9%1*FwR;$SMma(8qsx;3IKP49x`7PomRlzluv6#}UBHEb9#LAUJKNtip^u`V zxn0L-r;l5^5);}$AK1&Qsq6)PKvfkP_t?d`#Sd~fvyfT336SI{d>@ONlRht z=g$@oZ1zBn!JGg7QS?@v3>-zT#s%bpx!2C*8-yrfZETg63ivgU$F!VgDeS!h^hpJl8tbc7b2+OS|~{#f7mk4He++BiR9Tw0EmFS|X_SC|s% zP=rWPc=&p~PS zV_t7CnnU_k>+K)HNk=Z-ctnE6XOS3zbX8!h+(iTGWQQwBgTi#Febz!(r2NPHcAk!t zVlZ(eEYDTrvYrb(;>h^ouDJp7<0~9p>8N2HwTz^%pbYX+slH0z@LFktQ^8$2fTcXt z7I534fH(qMYPs+XIAZT2|AN*%Ys`U{MxcR)%X@$`}NWCWP z@#7M5ysMJEmdLl#V(6=?P2$#H*(L}O6hTw>(K`gVwnt5O zS}QkwJ-(SZ91}#x_()Vzr^(tFwX$>|25e z{GOdUHXX#Qt2ct7S(VM11y%5Umw3KJL4U^eZc(NtlhAtOd&-wBSs%TUj;9NYEriic zNBw%o+5}@@nwfdi|N~gE`?-AejaM|*ieG6!Nlv3(dW~a{F zh#czNfwxuwnL|4Fz0?UyPvr-C71kx_q|<@SdRQ23TXI%LYwL1>+n$zl1)kjNy834g zfmp%}Iu~@|YM3kr>iQK4H9GW`nH`{PqF^MoLU(j$)X(DpVD`s*A&!={<;z(wr6uSd z!#s^7l+#HRvfBw7SZe!KtFkFtNFWho9Gf|PeooTx##@m8tt z(+cnLhrIqLMJL){{;WPrQNf^5bh|G4#gOPLdlI3qWz~`774V2Yv4m7Il4E7Fw?uFd zrCom!RFZQ%cVra^S^gz+GMm ze~PRN9|GK9gN1;kcN=8KyL4~ZKFf$y_3zK&^Zj$LGC?d=y%Jbl&aZaE!0qSEeX= zBUf6P?mE6>DfeyQzq_rcb*I5CmEc~;a>pz~EwFEZ0Go|`CSHv!yYuCjE4Qas&$FO| z5ol*g>I2RPv`V-H$QZBLgI~oLr_#ymed{Edzc)83Sm5)gn7Z{eJJL503KdySTh!sK-@MAk(7c;Z znI3GDyUwhw#NDn-l^-tH69v3%I}hfI-b}fU{8}GCqAkHT<|b4F*$T;!9jm97?g^Ha zgfemcf&g}1x-_}dr z1o-@VQJbJ*m^OZJYtR=yz@KtbJLcRXeL@@2%Y|FvA73lM4Quu31;r~qkEtu8DNi42 z#UP~fSQO)6i2aY}g5%ZYdmMn!G0nBaZrOfYiwi#sPP_lw4 zggLvl<&f;l7R;|_q+Z44$Egb$(st{iPRrB#BC?8;8*U;@A@NG#ym@TGw9%_KTEw(srKy$b~_?n?l5X@Gt-c!-FnD=sG9)>p1XM#Gc?((d~ ziI|83jRZfyCcKaPu;lIsV-_il5Axc%H&>U`=0N8f-FP`u`=HK;opp4&yg{TlG=8(p z3s<7|IoNzh>H%pcsX$@feeq80Qtc`L&ybnZiC3{o*l^*^>cYpnYMF+&izL_$RmuB< z*Rd3+&tAhHCAD*t?Ng1GUWe_@4Oe7aF*RSjdtlN_hjPL7yMC;kemyIB@4qg#-do>& zv~^H?2fItU3%*=R-lX3YLjt_vj3V?otmh33^A?6=-qt1$ArkJrhcCv$}2e6%j6nt~ zC6qH7Prk>*yd9P}jxHZ6e3x_+1rIMh&4zKmRvKy)H>FtBY6EbPZGiuemd|Pz+k#oW z-7OALNWHM`uE49~HN)TF;L4u5|L$r$p(6sCUNubJ^~BX#jaM|`s^gxy>?(zAH+Od` z_y6$r=J8OyfBZMHhOF5cyChq-B*v00TPlPyp-5yZWS=P%St1nKNtC52DrGw%Yj!aq z#=c}71~X&kocnz4-~Hcx|9gKu9>dtq%sJ<}-rM!M-p@|~?dVcc-|tx2aOqXMD}+(p zg;UVY<{-Yh9^$tBmC`~hhBi6Jt<l}Z3H>ZEDz~HK`8wyc{oI79@&RD? zz5L>RS2i+c#jbw*;XJ!#C;EP1{jx38Pu5Pp-hAM16?2?ZPR^+dM#C6*xfNW_^`_eS zJT`(JXz5PsCj zUBANNM&=j6G|Ofb*e0CQ@;?R{2i`}xl={!m4`1mt6tN9S&r1<9k~8k zhvA+doR+yxkI{(O^*8>2O$V_SZuD$zLQqK?j@a;!dxA51s}Cn*0dqW}Jp|5^n0(nM zm?s2Dty{7jqPqm1b=zRiILDaYGiNFZdMo#Ot6O9&P*<-d;$naKWFPrPH-Tm@x*!`o zi#4uxR4Z(sBpZ-pR(>UveI!2J-p&|s9kmO)mmTr(bjN8&D~s|nL>i zCL$HbZrC$s6fO}}C+>Fo#K>tGjlB7k2ulTavb(qZd6oDr;k1|-`7`46`<0`;c4t7b zcoam33pTdclupKuxB)bUjQ=)CU)RIX{1XuP85}`SwGn`R*pc&J1V*+s?{V^PE!#RR z`x1@~WGV+_vPUU6>fCVvi-3Dt&j6#x9klEH8QfEzc`QTD{2D1(?lkXtL1;fUKAD2E zBY|q6_J(0<|g|dG=4Ge+1KJOBSNk+4d&}ZnQl( z$TEB(koo)lGea?!jl-M9SJEA2U!>(I1B+37^VVk*^3P4-py(bJer3!?CkaAz5%CAz zL5J|N?IB#5QEwqobfo?bc+)AF*v%pIByCcQx^ zh@r*MG9GL-YDpCFbs1KBS59F)sdGEI*`y94(4sSk#>3L z1DGk*;2sE^rfmUFuuvKy_ap7g|IN~o{rxT;mBawCk{9)E*g6ldC4%HWXa?ZI4yGc^ z;<4MPJ$G6$R$^wZ5E-@yzY2-Pgvu?llL*3@wq%3~6hgezKM3kR-me>42FxE1>=80$ z)QlCQ_L49gsI59O(?v*^`nCwdVc~D}2C(_63`a;n3WlzFlmYOW!N=|5IPnUdQ(`=7a=IOED#R;m_6}{m-X1^tJ)N z(k3tJfzn}78|u7d0R60X8$2_1{bvhNY!Ho=ysX!Tyio{qq)V~y#@XRgAB^uy!D6n{ zcGuuPLFLewYdr>zMMO3oHm!*sgCd~6b724)#y;4v~&cSgEZ;@$z9 zh(>fjmbOIe*`lnCd|Z7)cx1I}Fr-A9#90>7SpQnV@GsI60)srZ7ja||KK=iRYx>O1 zNYxQJ(X{VByGWSJdZdX_qAY}#peThXP6(E=3p}FrYZsw1-cb$c_3kU%`0nun6-sz|E~`^0qBQunU9RJUu&NFZ+wJ;U*7j2 zNNktcfEE}9Oml!amUgmrrZoSfm5z7cuegp0wQ#gJV558fr64+(scUh@*!-wnJxvbir0i@eJkrO|#)uJw z^b+d8pB@2Bp^eXj8{4Aq=;Aa*fFpy1YpcVK;fc9|jCQ+TGdA^}a1Vz)hjPQ+q@ zXuIw+g#>p%kBAmuKWd#s4rW}8wea+Xf?H;$#T!jsKLa+q1b5NjtxN2#$x zi?mLZDwZ}1e^JNM_M}@;&#~k>Ag7a-wF~SVqM$YSroMW&fh-l=yL6fr%Db^Wz>$r8 zro7|enn(*Gv31Y}Oja|i{4aFu6}FW_f@b7$=2m2TA#{0#PH079wXhUKcNWBFr!bTz zzm!CX(_hkid=AE3whP0n)`tT(0x;F^jkm?Z;yoVfBn1nJO4D3c=Fy!S{o8&|66zWLCA|B>DcVYKo@;Pq|v|dN%j$4G`h4~aoH&EE*4u($; zt~?MCBTun|NHqj)glj3Z4grm@4sZ3RExaM&!F)_PVHGy|V0b|eVCzB4+E9UZU~Z}B z1CBPV*ySI=6ub-*sRyV=LeV+efixZ{g7yoYUJAUT(cNh!ghyDq9lQDV7-FZeTVwgK zIH{rUerl3%-MG_+Me@oalC^!Q)fgH_XM$(T5RS)TBs@jjG?ZonZKL;dX+GyAYTl#y ztrR&<(J!d;jwdv*uOV~UdUYj9@|9$^k9TQDejtDmw37E>>@Pw#6@H&#G)1au9N$rz zo{VhEi;F%l37G4r)v@;u#nYlGv4kP$=C`fiPdu@U@Q8(^SIh!gBZhcLd*WSqa!VI2 znfBNPdju1bl~hdMOVk0|nt3Vz3O+tw`8X8c)!KfD@W2T$4nXbDbPe35pn; zaTintXV5_n@J+rM`OZIWPehKqk2@6K&ay2*G8Aqjv0}+B0PNRH1~1F|0IRs&ylERV zO!)aK*v2wAynYEQ~0Ue4oMt>dcDYN z8nfW34hG~*s+Jd)-I|Ouo95K&M-v4A#!TMV%_wp3?57DAqz{Ike>Dv&sW@B6vH)q$ zEuAOnKUQD_D~AdBN@6lj`~K46lm;!WYku2>kXROAP@ANE=e4@Cgyw9Ju#sF1b!xo0 zz25jew!5a`rzyj^HwnrLc25D_&?J4T8T5$|#|Fh${nVh#?yF<@t}ci2e}PowjVNYN z6G47q;rt*&Ii%=`1e`*e7gsK&*4YZG!PX?#e-x@qx{?|UN+45%t9$Qb+S)Wz_kE7cc z8LtL_X~0S-RTU%qf`Cav&A}&)O)4aFFXI2RHBJka{N;4ld*WAqVq#Jz3(aK{5ZTgm zb;zXa?!!m1LbZfKmOUt*cB|?tbdp+VyNXiy2l2dE+2Wz(o~K{ddP>fEPhH0Cb>iNp ztg^w4+qzw_FGY?}1Cvk-M$l>gx5x!F(^u@vAKog)*nn=t?Y74o$aWOuzq1D@&cJG$ z`K(_EAWvDQhew^}PhQT7T?XZz!oqg|xJDX5>>xyck>hEWgR)#J>T_7vSXv8~zp?;1 zqsLdi!^1lSRxfm-m5}G*_TJ#ZmbW=sso3USH5jzb@ju-){rmsn8L6O*v&t^8)l2 zy|jFj2oX-n*?WW|z=u;jKZEok9e#QAouway-kbJml8+I)xh5+|L9=f(J&kS(fuS{_ zmyT1qh*7cXN_Iake{Pssr!hC8u_ZSPO_G%ZN~e{6ZVCeyr)vSw!fL)(@CD(0p})~5 zuRVjf*n)5rUFfy}zRnHgA2#OujqI=5WuwoZzw~Szu8v7)Sr7-2_C_l>cn<}FgiSBB zXeAj8@!Ww7is|ZJN*g@%K8)P0GVg8vG7ulY;VX?PH{mi`R|7b=8BSzn6KZ=$7aMW3H*I@joF6}3)*M* zq7Fl41;_?Nh44Xl+@qc#XJ;Wdz@WwesErE*cG0bT2WYRxr^p4o2~v;`bOTzpN_*x| zObB}RN+OhZeII^LJ1)<#@w4V$VrPfu5MT%~_S-t1@j)B|+~`pNjH4}}I7_K;c1Fl9 z+50cC?89adI0Accd$1b^9@DIhIlo;3wA$~$SC5!G2+jV0oxHxjHXsnL20Z(AZ)dX5 z4xqEn45Cc?`4#6w`O8;%z-rr+t}Yg`8aFzzS;6gWgK{zVWKpvBWI9+@J;;sC8L7vQXx zC#8k^r)Z`XRR_)l*XrINH4b;?woa1iA9^{kQWq(^*#h7>a7G;tpG0E5BQtG<=^X_6 zE%E`+ktsN0CgYAEXX2UVv6Ae4#GeQn-ul`O-tSrr8WW9)6-;g{A$FrWP1qx-W}ucc zHzewI?-!EHW3_PWsshL*rMV5pW3DIsK(~UsXm$AEAYptn{!u~{y-&9ef*7s z`LiZ4Yo6HP_|BBrQ)nUc3m4z3K&SuPBW~hMtb0%y;9)$JiJU2<*G^-=P$w*erMpAX zz}^-e4eDbT3Ht-(&=7$X3KG?!IphvRtAtX9pwrR2E>IZ`>W9EWS~avr*k=>Qj{PHm zDbN?x{FVq5H~@TsgN`}m%mIxK;gNIe4wUPdH|qm*Jqw_vkjg`=a{%|S+w-Y#42?e2 z0}FupH-(fDFag+c0Xwk-I3-f|v&VtCQ@}q0OwtAop+y4a5c-2Y2&ILWL;C=!j?RHy zClHsRJ_tl_;~ZHz90|C?wYG1&0HDW8GN7L&t)bhokUKeR=MMnl;11eUz)1NY^01Cv zZTtmA%7t3+GX*Hq3u1|zdeEM7HJ45TYo0Ro6C8F~VDh5EBM$Hvw(+Pv1MypAHmHR( zi~b>5wSr2FgMDM+@iGR=hF~l1?Up>8BqVVu)8S%=9fl51lQ9R_1yJ#@#HSXQb1vGs z(Z(g@OV8TA*s90Pc1Ak7%_@;#tg$S;{$KnUc4CsnqIM?rwyrSwHhq#tMLwOrZ0`pt zCLj5Z3B_E$^O~**5OL5NI~Q&1`7ms8o#B(gA>L9mJd6+U+CNZPetO>Bv=IscS@?oF z(sBvDT=BE?RrxvK*fSwIl}%veVv&8>5?--AF>VN;JhECV)|Lj4_^6 z#Y*)DoYh_8_B&8Nu#cv#L975=RCCXS&5@B3EUS8)4H*3HM35{Y*7YT5lgzD^fVzDH z*v0kbtn+{eCQF2@mHoBdF3A6c=DTJTXF5;AjyHTMIctNKLqWT+511o42E#|Ye4! z>4=Z6*`*73C1&neT^ z62vhL1ZJk6r-+j+KOM!S{?P2KGT!u|_SQ^3gEPQC_%Pj0hihGl0lv?D zAE5`j=YT_8{HXcPIjesd0q5Avqn!Y@DXa^tUwRk{hG3Ubhn+XaA2&;fPz|7Z+e}pI zvo=mA>>#SYBA1`ALN7c_vF7jvTF@mMB44l^2?@_7aKg^W4ZX@`2>sB zSOL-Bs{S{Y6fWG#crse52hr=`n+@XfX+qdRAYNZq@ov{|~uZoDRpj*Xq{>EkbHMn-ln4Bxma&otAibbbZpma z8e9&2nw%g{YHtI%!!m(9h~9ur&WyI$wH#9O190+_Aj=7Ad=$~0CWG3b=Kvl1E!;Mu-`t_@O*ZyU-s#r$dr`N0$0DzPWRDFldMx4`NJWJVboak92WenYruhA? zt=(Km25wOerP-bvli*YSMuYR91aD74tRycJmo)&1U0g!Z+}O{-h3&$e`xkSy^g+xW zia7f(I1Rop16UUh|JqsIL-PPfraN;{YkEd%zyAH>!;6zj5D!Xpyv%rd?wJI=nCs4xJv=lJYL%M zZQ5F$ciV2#f4KV&DQbOjt_RNnJk-6D4=`Ki;g?hgl9EF5O{U0OQIsbT%-r&i0^u3$ zAiI^^hwx0Do%{ehC;zAe*i?GljSFhbi`Mfm-*s=%N>SdmTjy3nLF$g(K=0#a;1qQR z1vi|4>nnOcd6ohx#CRHi!We?&TL{80y(QXm(!QTpH1)&wzzLVVESYL%;l(Z4jeUb> zagGaMJbZCE-adiSQ22_=8jA?ih*ciSJm2d7Njv?@ z02+*^wK2H}AR$t!j2WB@?E(Txd;cAQeu@U2t~Ah?*`oa~WaCA@88ue{HE3QD5^bXm zYy(KLexBj3f&aCgfdZ%uc4g1sCJ|hlZS+>kCEBIrSfsc^JR38ki3xoGL!9A&z^iy}aN*25a*Rj_9&$g#!ULW8wo*vJmvD)qD5d&1ZOt2l zQ~?G|ZumX`Z_V&sf(cPFi?E0n6dSa?rQ7Gbx{xE0%hJ|2l2x!9bA?|WRpaL!h7~h- z4(W$;0MCBv16l$Hp-Wvv9?Egs3RL@t37|dTFdodob`|cC@nPNJwJf*#(=KEzQ2gyX zOM$00cd#%d^?ad6(A>H5G4DXFw|P&jg`VpfQ{gn=za}j+cd1+H1l_G-;5rq0aj@il z;mJ=bS#di+R@HmM;`d|>XzEqF^fH|TyPqMs9?CI&j1C#m8`^-4dkq5Dtu55`znIPW z+hOGt+#e)mkq+Wy9AFoo)ZA2d<>H=yBV8wrMoVrEH->I8hhBi7OlmmU|L+@SH~Vd# zm4nHP5eZ{;;k%-jsjZjX9()j;KRkk_EQ*f!wiJH;`wwpF@u7don|e3frIcIg`R~KS zSf~W?-?c{-U5caz=HMnu+?oSt4@9hEZ^G%2z>}SeLYV=O8B|S33}%8%zXOE0;K40U zJ?0)d4>eW)%V{$&mcT7+Z>!ckc2%I~6Ue$iQ`k-i{Wn3Rz)kRC={hC}Nzzjs*u+!q zwpVcuEDpz|BXZGSR z+IW9P4>H606FIOO@NUzT_jaZTtEERqhfn@<{td52+riW5PX2*p)Ge1C@$ug_myU*W z>zIF!A#nTydFY+*yh-$U(0ipI+Vb?ts>e_o;V{(8jYyUAdrWxkXzBHg;~1fk|2m)> zz5_eTZ8#p}puau;6OG+2?9gYulbhyZdnU6ugSn-RQS|AzaokYPs6P$H>+TFZ@Ce0Y zmI-lXDNG*;Gj(C7_{I@C!kSNix1kQ){}z|hG&7QRFJo8Goe*e$Q~)|$r1c;z{oW%N zP=_hAOpv{XsB{myUB3)zEDrB;(k!R^`8^4At-!ut`LHjJ4aZJnT>scC|5w5kJ_yPE z^7JxKdn>c11e z34R4YwAC!XYA8){eU>&4aIC~G2u#r00sSYsjoC5K{njPni&bq1>-j7=SzzUXmoM`5 zZ+f-asHlmsTE?97Ni?*P9dnG zoYO>f%(WgDz?Hf-)XE%v052+*Z^N}&f;K%Q76`@C39LSlFdw_y#4I0O7H)7>>`MX& z9E4fnmVMafYRoUp+&_8LFxn)l^9pqiPu1jSi!q(SPNLvqzEBdpk}hzDn2KD1u9Po@ zQa9kku}|^JwM-h91LIrr+gPpu*x4+Tl-J56PjHHLA*cd3a*?F`6Yt@A0JL|)?`c~4 ztL&?eus(YpF6f*&yoEhMc|hyfN`hd;fTq^<|MOM(gcw!5^H&bH4D+$?SV&!LzXCazhGSeGB3etKX%Xh!lb^38%bZb;sqzJLM0cI z$5s+{v2t#la*fcb1xd^XA#3Zrjqj|@wE z=4#KQ=R*JOC@>Qu@z7)ac!6=WZ5x>z_hvnY*c0?qLTSGKOkz=X zH6ZK`XU37_Ixzpw6usJ25F2Ta0b78kj}r*mWNaifh&raV_v?i)J;W2O95C}mmR%B} zta&Rx3+e+@)c4^0KvL*Bwt+AQ4>hd890RS8IUQ88$a7BKRu?Zq+Q!5J_V8m<@8$>k zT2TXZRxC4_%yX-9J05h%q?4;V<_RvK?|OJ`l+CN$T0vk4j!S7&D)GPAa36M_Z0Hm1 zL5)3Sr1_ALX^&f(YGKaRS+!hJ7c1^wWB)q7{nc%MAw$U$v1bH zL)ohSTa^x&s`Tya>SkCLpS0ky|1z;@>o4^ml9Ix6H#gST14odBWw}HV8{u4WcvZ0j zO@m(&XxR)yH#TTZ!x}~IVKqRPZjPD6J&PK|5mV_XKv(I`HjRyJ_yx;404#ig3-Bof zsI;Q+)uM1hwNT&ZiruJlDmLII1WsX7NC(NS0M511^Kj z^Zdgc^ZENM>iO~{2_ob=^Fs2v+&eUDpx=mon6dB!0!ivZWYpz%`wG?b@He|GEJsie z8UP4SK|tz1C|^XJOOUYBpFg;GhJoU*|B(h43bs4oF13yVc`-~Wc{kLsDM3d?w`qa2 zG4W$Xyd5t+cx49&q&1oYpnIcnNu#o8KwUNs)DNunh9=7|`o|kV^C#X>b(8}tPh54q z$2)dOedWGA)-wfTZfL)U!~fpQbGxS5tj}h9oF(`d%6n<{LWk8#osF2*K~WyJ&HMfwdBp#ug?vr1l=OQKx=qT(qZ3B5JDlOj z@Ca4{-b%n99YhsEKZ;N(5w{32kyEr2r<{5Vwy?l`$iBiG@uK%-ND2z@w6K=E7U%B^ zu<{=lz5IUm6ZmnPV)(iYbqD!m_;)WSIAJ@PkBap&IJ)Rh#aI~HuDTZ@+72+>7tpk` zP5V>hS>GX@6V?n;`b#8+mDtR#J=~Dp=bzz=mIJ8;2t#B9hD2MT4DG&I{_h8np5gyQ zmRP8A?SC>k09KY(fG-3@O49Q@xBt&M{=ZK8|M@{<`2XZBAzhBpu}lmM5OmSz2(usq z69YTLu}VdwTlVXmu6s-j&qoCr1Q;Y30{pzxHPtlL1JJ(OfwzLy!tMr0mxwT&C=z7& z|N8hJKyaiWsV$*f5wG!fj;hGR+o6rSLtFPr;!3H$qnVge(z*T|MU-uiKRp-e?vq4& zSEaU}6@ExogWgteJe$Afe^v2T1?3}W zkwBmHrqo+eXqure$t(QDQWmAg=@dujX$M^5LyuD8l%qPrA#?Hn zR4E1+-n%Z2%+YcZeh^OW`q>ENK4r-LY5`@eeeRwV0!qH?2q_4W^nn?)%|f!t2db)H!2`V^h~#KZ0ax7j`XXuWQN!&Id)`TnbZ(dF>T4^mT2ks%>E52cUGM%R2h92!co zv#NL=K@*?v>hi_y_&EvSZ)uNJ*596tvi4SVX1uG~qkmtD_`9BQRIB8&ebJ6<7P>|k z#XC}VzA+iB`Vn$|#Lq~MRS=9CSd|sM)*t*~ofJ1E#7$=WyU~K#U)c*W`;%Na%o}xP zUXRis^y90PL#pnV@Tky;;La>jy#T#oUIDTFyPv}Peun$q4iYfUU*h{4H(~hDc^GTA z^doMME&uCzDXCM@+^YG`%e2VQ4zn9cAtN>NBR5|N9g5YckOnEWHPpW6DNjcwSu2Zl zBW-$gu7B{%Jv)LaU;<^)-DxQ!S^J?v6#=?(H)QqmHL>^Svr~PwI0M(7c6^=9FYtJi zx;)CoWYucQu5&}g^c~mW_n`~pQpQ+EzUz!d&e{_-MejG$-pbLoMqU4Kx+j=F?Cbqp zU~5Abto?k(VT~qS&8ZV|$K>3X%EU9w51Tz|jQV<*A|SJmpLHu%XE^P(Hm=^VIHtno zb3TK3gqrouAm7D>)_TkN1IKds7d3-Rc5j-yvcl~o{K+Si=4t2TIDbDMSWxl|Q*r%n zFf+HXRnuOfU62?4JnKE?F~`6#9!WeGosZAj{`|+!6YHPo$q;l#?;JAq>|puvKBw2J z>PCkN#=-gZ87}3WX!{YpPKScRGD5Ch#a1eC&{$8#)Q{d*941BjIsk>3RNFrXBemt_ z>eG2}x8>pLDaZOqrD)<}E~(vRps@VSv`y*#poo+*1#}V%y}o!uyyowCvKz{0FSuYd zu6>$*DBglp^8LU?_%lvpTDbzaAW#c-8P^wD3=RzpFvwYh&|!5{DIt>bZ#`+=1#XL-glwm={5`6r18^I_|#A~E?s#nD@8y)}=OFA=5!L zt$FH&1>U3owjiqT%hoK!r{3uOp~#No$ML{B$kB4|8eM3zctcXs zDJZ#jCu(cDzdy`3v!LqNtAIY=Ur|$IuKE{HACzus(wlbH^hPJ6DB}w)vFjiSEN|f1 z+E_MV1OzYeQEU3t z&jZ?&U^|c5J>O;5@r8Jm8}{{6QN5c)U-WI=W5At+9bX5ee@$CfX&SCeXmIPkcD0P2 zNI_E=%;mI;*q`gmQvQUgS76dVU88%6Lrk@O z=bR;1BVU-@#)!-QDbg6`FB|+U_wpcR$d9)Hox}BNzS;W1Ujn6rT{CWSfJstKc3K=D z?j>y7)wD@JBxs9X!AE5TKXQWLKS(BMD4dura;`aOKm5i$p3|C6T`^dzDPmu<*35k= zIPtHX_*Fe|b@HTPw@u0rq2Bday8ET^ZtDY6<${2Tvh+aHv<#sl+14w4miYwU$~;$JRz`6N;>T2u z`9IlL>Ljja+pU%JdW zjvkX^l3nsh%gqnJZBK^3=CocF#eNn@Ac!nI#)w}X53ylk3Ta>~NRabY}I?YyMzI8=phK1%~@EXb9nY$sbWukOIy;;&O zQ#R>W)RVnB1k*uq+58cOp7eng0c^|7h&bD$uLSZgnup9enUuOYSIcjkaB3@=7nNo% zES?4)oR=H>SK0ZznfKdAi>s0RuJ3z9734C_3`&NIdoL+w>$er69@n2zFb^1_^PZ+A zDu2k*ZrZ$=xnc_R)&7b(59f9Rlho7btjyK7fARH|!si$j9G*6_j=wF&bVX$k{lVR? z%K7_om{oM^1iBLW=e5_|iQ(MOOr%rQ9Q~CK;F<`N@J(5@KPLt!d>BU`ZhXI~z(TkY zzn91gH_wNc8U5ZA%kSw)DMm@+fnVp4mQq-kYt707*EL4=juV6R9V3r%ntwNJ)w=3b zyqKaxv|xYsH^HaL&FMTXXsP$C5+U>2$Zko%Xi=I4ak8tz^1W*F*U{60{Elxw`z*dY zCn1s`u(x>h4OQ3E`NG9VSNx(2>~4iLEPZ>^IdwB?d~Iw|nXk=cz+iZUoc%7``r$RB zyMM%Lgs1pytDIgbC}*!XI=TFKH_;)&Fh|PFOQm!jXqe;h8{A7F4;vg zqMVo0zo!K2JYjMX9QtDQ1obF@9A(}(9%J}EvM%uNatF^VouundliyN&DwS{ODTmt2 zjn3?sUHn@4yk5wb*-iV~@wMKw&e4*B>1)o(yK*Kps8ZUZ@rFvmyugD&s!GWH@tLo7 z#wuSKbw1sFitajpYIjXn0PL5e z|B#T?3;5Zz<$l%I^ZG)`%WCDmZAV625*y9$+gs;XRuyWA-r(i+EI#7cl{{*h=ag=A z^NU-?EUK{WPss3Z;dqWJsbH9ep~KB%`1IEOUgE%hulXE8FX(F9x5eL41#)$+a_rV|6dKi97D8_{GLOtR49^%YwY0jaC!s!DsKs$fjBoFjyt&&!khtqT-JKCa z8KZ^R3>UDdJ*$-t_?C=5C-cohEzoB1V8MM^?Ag3ba6|NoImQ(W>?cRA4t>Kt#y_JA z<<_;AXm`&BoHe}NFHT_~w6J$LX%t?!A%A#RO3`1CD!V7EK1&HVN3qYav4vC zPPsFp)AGr$yA7&tzeuk2mgt;$%PaBy#d^2s$0{?;vp36y1!V2N?BBCi*obThzS8Sx z;9H^MW>3_<-sdfVLrBF1M-8;+?7UMGEDmw%9^H-+@rm;m=w4yipAE}l4TzuxP9Zs$?;3C&yqmY@st58|f{io|{IY96l|l?cbm zCqP^L=Y5q;DXZH}FY`@IDC7J|;^Fl1KK&vh=>SJLg6^X{w8efsH4#(uv7Y_WC^1)* z?8~^QUK6S`elqt`4CPh!h(P>vQ1i43E zA@rt3(^A&H8A>R;xTU(GhxhNmO(??wA^IFN1J6s=R4w~x%a~F&TAd@lJx)c#3w2q_op6vX30atvg=8ca#_Iq zEL%0lAAS91E!VG}_?PjgE-C7Muk)cwd32g3ZW@2`3|ql1l_54v4fMiMiGQ=5JCQh&uTH#K<-eZH(#Xf^aQ7ZG{wb9iVCcD++- zV8_QzIKVa%Rgl1Z|7#4(BXW7!%1A_bud%j{=F_!*ZxM%@Vyou)zH{a>HkZpYEoJoA zRDN`sUPqS^M68#O^U2()v++MFMVQhU>S@4u+gAIdpPCRJ3Um=+Ti<^JQ^3%%@Sy2ZWB&SQ^L0cSGgLMTnRS2Qx|gS0pX0T2g$$Vml>uPN)L{{=J#$=m~--fV6N*o^-gH*aU$B|~tNUUXk3Z6!etp(OjV{HcWgOW41zFRA zOzeb!JF$c|BYJ@H^8C2%Z7-)FtBT2gw_;*RO;+DL)&BK-tj4rl+3Ma?)&A6|e)dmD zdf)G;h>B%#_TZf>tm>TZPSGz^{Z>OdI0Kcde*$j_nn5TRlcs+6=cc0Q>lSS%p@}Mf z)m;^I=Dp)%eR-pAFX_hVb(f*h<|_zA-~7SW%hkb+aPvTw6eO4Pr{$|GJLTlBT)~I> z(1anRp&T(Lp@;K4wlm*xa_+ee%WjnWYp1^Vn;o*~oOM|jPLy=K>6oSj*y%xC{F=c_ zzWj(j536ATc2(xVSg32Z;?}+3+D#PaD?{zhuF(C3*nOL@m|{HY`5o~9R?{IVV#eaxyh_r1=exmUqH_mN4M34LrG8+mN>ZG^lwRth%? z1t>dEX4;Mn;?*o|)A>hl##$NgXcyEHt$zedKCBvkd9%rY@^5ly`rZjnMCa3*(@4Yz zuhhFthS#h3$}BrqERHwdEg6_>*RPvX0DE~J+AX!ejUs5RJ=jfTtx=N^d$RCC<3#!o z*A}KOkfm5!iuH+FqKt$+b#K3o6B&8gB!r0Blr)n+mN+M)ABRAq9M+4kF^N<@lnkQ+pdlkCR-(IruQq~g$T?q4^J2W zJ+?WZRdeI}$)k(*mh^+NmPKeKMWqVYTl78O$MW|c&O|IYXH7e=z{*E8*-+C8qN_$bqm-3$Nao*O33oeP7Y$q6RTk71D_mMjO)6S%1 z!8hppf_M=uZGV@MrJk#kYI-T-Dnfmib7#>!Wrg3sNMh=`(&2Lt#c^j3PQhw$= zC17-|Dg`}9bKCGV*F;$qu@G~B*xcdlEx5H_re@0KBrE;Ri|`Hb`1J>UHTnV0Dw5eN z#cWmlss;6-N4nA$Wp9{okLYpb=wml#bKK3dE&PtXT5hr2KM0Du#B&WF#=yA*()niy zo>ljs65?r1Dd%^5F=8jN@$GD3Ja9QKdFxGnj?=eW>L<^OOF5pcOv`=ewl?&!S^J`8 ziA_nd0-LGnM)oEMNH$$?TR}&UZ$=`dmbcNn-zpue^BaEUj14I z*yCUJA6&BGv)iWTcztLmum2*7i!FxwxvJtUx8@%;5oL8stP51dQZGu}mN9d%(7;*} zC5_TN&i*bGUf6AQ_PDX#q5AUO8F%|2l$=@7g@1P*+N~3=D|0KT>Kb{xlN;7h;t&a& zav?3=EhqW@YN4_EtU#$p|FS($2pK+vL2;{9f23Rhec(_m4%k`&-pSrM4M9U&J{vD@rw33>1{lCc!qZ|#eJ zK#0ZE^lUgk23#+7jK~M>eV;U_p8hh2v`>>iGcdM@_h2H6jfkA$CfrfOe(QN6EDZD| zlfsZKSMOKDiFN-Ecm^?t67!-ubKMmqZl$1PQ5`{YHQIBSt2tR*s| zccE$WOq;wj;Md%GpY^jq|;EmI=9UkL#v?$kd%T#8t99;jhf&Kdjx! zdBas^^riB{tM{%fiArB&Gog--L>_I<;D#5?OSdgExcsl*9Xerc0dn8Kiu*5|OP`bh z!;g946KD#~51U7yCbKkZ^ruGKEpMGx!H37WP6NAt_okjLBM2#bJ5oz4**lECYh9P=8wYJaSGKt|cS)BD|2pay!z-`q(nq9S(H~V!E9L;p#Vz4w*xXQaPM|s4jy64E6HFnu3 zB7(Y5Ie-*N}9F2v^b_#O@MgR(- z&y+xLI@g=`4CM1K+DhgRkIz$=niD-!_p<)+?yxT$Jk{}bLS5wFWYbqNw008wRY!`n zt~8P{c4EKkriU|YGIryFk--nG?H@ed(;RLarF!+BNb{<{dveCt|AUUn!-nwYd?CKH z`C5&G{l{WI9Zp1iU5(YB^Zz-F+d+L+yZvukt1j%9>*4@Mag}^Cm7%oR(`feE41OV< zr^n~4(7hYFS`5?mhDWY;t=%Ffjp>JzOAoSCqtX@E|M}am=$V53r0GD}=>_gSV|ClA z<6~^6x>_FREM(74+Rtw&E!fhW9*8X`*z_{FIA2;BU68xZw&Uwl>(}qY`SZ?eM;QSs zQfS%r$A=24szD#Q?6xIcr{UJ0g+)p0dz z76$&)4RtabCEN7~gOygT>34>&G!w&iMktvpPM)tm9CcGJJs5aacArGOK7B&yg$B8s zO3M>iHSCXypstfEm(dtV31t}hkoxZc8@+$IyzV%^Sh)-oH(Smv3i8bRBTf{Fe$if$mMN%aqRYxK-8F2t{j0v2)*i zUZY;z518Om>7<`gn|sOQ#ki;SmgJdrWlP^&(>2P~MfJW;U*hX?i8quLuX+EK(0(Q8 zemVGzCv#xKXRz&cRy7`Pm#g04P*KrayO<9R^a)ti4bIkTM12aJP@>e%UAKSCt}!Iv znfPeuUm~$IdhKgbR+sLRj{}Tt^12gVjE5#RS|q&A_hp@1Tz339#)BxW7Mk~oFL-7b z*6s?&;VAFdtL=I%{si_^Zu913g}y1?>wf9KOP?9)RS-ysm|lWoy+za6{A5=T{+2Xz z{z7A`6m{-*YT|(p^q+=bgUe`9NAvP8&`dmB-h38W_6}pUsRHb|(mvBolkYtmvP;-34EV?!7noRiYgWp`Ea&%Op%UERXHnmq0Cak={2Dr8n8APQ|HG|J@6vhyar z7TjX_^OLuz**!7n{o1;0>{>b|NH_k4kvXeu?7U5w93fsARx@xGH<`r5lpMd+6lU@? zR`yr8jGEEzpnq-2>tPt>q&#|{^ey*xVJ3gz(;1HTC=MG|YB>D+~vx;gR_Zn>rZX}$!Y9no@s#139XKc=34N@ zmO+!+T>N$kli~wxHl&W}pNVX!7h(!s*X3Tc+`WzL4ZNQ-_AZ>O=&ET*C0)5bZ(j6> z)-Ly#%%Y052wTmb{|nSWE5HA@sDA!nE6|kBtBVV2dy28%)=OqxtSZf^1E`pw+Le*pRQ=7NqjHo^AId{y2 zTO8k;yiawDDH-M$m(LlVo$r00=O;u?X6p|8ziMf-W9Jp}HIOV)+OtA@1>vMex1j>o zl+*TlMU6T*JeDUpq5)EXO zj>IZkpzeq2pF5B5`dD_ybvHJ!Ta5Pj>xVmmGp|V`B2l-yg3Z2q`9vC7z`juyx?md0 zma(ZGzds=!-vwvfLS~-i=U6^)DgeWR_|A-I8kXR%I6oIc=+3nhr=DPpDQozXRY`tH znLo|iEEFO7@>!W(G!ULUkkfqGtQohg>ztCWGo$y(Fd;@F<7ic_48n*%%~vsVMo5Md z!h-)?SJS-te~n3kig{L7i<{KU$b9n^(Q|yl0xa*`)@Y$8QPc4lxkry%n3nURZdxDB zk66F($1pDVTxMw~3+_V`JOqR?B2ZOt#7?;8ZI-zxcv1XcFU{VwC?=OJj!ku$Q^tSx z!!RKK@8QPV;QPKD7hSNt6^F^2!V^DNv+t!a(4}e+PjqsV8~s_E#rIm_Ui|)o7O#NZ zZmM|nH?BUP_%D7ukp!vt*KxqV(&HB*m6D@>~D7I`@Jw){QlF)dysw8LjTvI z^*245+&V(HAC#B%6eDeci1uIZMqDn)V7$b&ciVZt(N<{a?*1UH9`6AqMkIBf+mJ z&5Pf^Gzp2VuZy@%X&9vMm<8Yt({z*E**6p{xTMI>h4K*s-cD4{Ec@vKyqQ(A(hnPW zRa4C2C4>6*Aq2`EcmWDbt3@usNHIKFpXfiSEN*Wpgy1kv^&%YtXZCW`rguOzrbxxVO>tHQS`I6Yx z@gr;Y&eDF}`C_1+^Chp#;bach0OjNi{bpPXxKeoGGdN#cdv3>7>gV`th} zg(1`A$$USz@SZ&K#Cmv4SM3g~9#Pmo`()!GenIm7B!31BZb?2bvYF*&amnF?a$gvb z7_!|$wr(8Tdug=i?_p9t&yiTDq2g#Zkd#?VR>uewNLfamy~Q{^?rUq$tG%KSE}j~5v9w`68co$AEL^@-x6j&c4vp7KgHs48>tnzs zwKJTlQ3W(Bv|jtVw`Tq|&97V0s)8w$&|UE9pb~a`PU$$p3*R$p-Kig3pdcE3Fwz@c zl5d7UabMNTKYvq6i}%7xzIl(7MWAR{S>8T>5kh+J2%A5TX@EEHhsF&Zf3S}E`oW(! z8^k0PuSKM7_LlY3s%mKQ>Jm1;%`du&q|Qmo;6j-IbdkL)7HdlAt(iB7G#&9Hl1yo7 z4BlREtvTzg7N*}dLBcmPG?F*+3a1o)jKYp-j`Bt$a&aqW0FcY#SAOMxlg(x_vxHX& z#bE6@E1OxB@VURc_de;w$Y-jozcC7_Ml#mClrHOqlB-mX538;s)Za2;8}uM07jH!1Sw z&N%(j`W?v!BH!s;@bquc??lO1=r#3(wwIPvI2g2x!+$6via$1Ji~>I{X{L z*vB#KlW$Pwek4KC=j%hY z!p|ZmKL_IO5>XuR{A@_PFXJ8U{r?V${~-&+m&@{+QbR8@@(8k$nd52JW?x4#j4$S; z-6-KvQ3omUM{Bq=@UhYvb=I*%VM6XhBxF8rAGtaa6?@dGq&CQ1TFHC&)Ive7gtR&Zart66+NYp01FR-TOlv!gM zr7Bb9XSF{-X5JVW8@kf8p9>j?DNKOy4Rd)fDx*L*2Ue7`$cX)>#Pt~uonq#haWJN$ zin`WgnyuP(?FLZ5HRgp98{Tx8(amg>8GB(G*pAkNvZB0Qs2t%o{+uu%#Zi3?EN*1h zhzol>t6t=-{qx7Co1CK#QO}kIOb6))@F>y{#jtNG1ARkud41uwdOuFTm+J{K z7)BLOD?+JWPuWkX2tk8#6l3D%I0|1wGu%w<<0&Ps$RYWXGg`M@;c`?D&DtbGMo%*k zk|bka|AVMGxLg3sP%{DN~MyrAxipd8>;;#6suA#kv->ToQ%VP!}3Gpjb~&zoL|5`N4RD z9|b$07WSoh7QCuSx@=8A&S@!{RAEa{*nsnZmla1~Nci>_aBpd-&#=6GZL@?!6hZ!R zQO!8e6K}k)+&+XJCYn^DWEW%rzOJ(U1_b!a=o^so@76`D z8qNu0pzqd=SqW@i*Ist=Yp}qKM4WD%Ib^t0(MJ-CrUUh*JT+^v&?B}68=yK(YOvYeE21jf%N-mHUwfr{Pk6ndyLdq zb2dlvLro3bEEg2z6Q93^y9TNb+qv8F|1%zx2mk>i_o8XCi(FX4%0Oc}Oxyfj`*m2J zU^8Bx-J`jNWFca=N&Z`M9tRZa2`OV$;w#O_gPdHa&3eLNS=WFm5C~5zaaUVc zCBM!@kXbftn{-mBUDN`e#X;@y(9^o5>A9b}&$`>}6y2(R*{Dla{}-(0V5>v_M*X^DWiR0M-rDQ)R> z!xzU-zZ}0fePcMQzO6{yUXgM>4_&?4(5=;mmGQup*dZ)S`9N@Lp^x;!gX=kkU0S_| zhV77@LNTLLZ>2sXpS^Z64dGFNM+D@?M57mRAaSCg5_vi(Ey5s#MW%weXuIrGQafS-kn-FgD-F2WL7-y7`_NR0u z$u05KG@q@JaNpqNeNBe{M&`|N$}Q&$l4W9)_sI^wv~d>1k7x2W%*mhMelCAjvHM}p zOG6eG@pX$e(OaTy44s#X zB&7%dKYYaB!_ky6iu;AGqRS(jS<$@u!y6~_!<+Zh608~QYQPVfqXgmG&&nHzB-8hY zh3UGJmbe|ZXX?o`a3hGmE-dh1iHmVXikkWDmLb_UJia`!1sxH z-b;0Hs0Sa;gnW@@71d>8c*r+gYu3OE`$C}aIePy5GAq}4L=-mQ6TxF+&#^Av)7^4N zGzN>pE@(^*1|F&r34ZT{VLzPxCNqQldHyb2tjhezb!CQ!uD*Dk9#0Xmrk6#Qe);st z$)nEu(`uF#>+<^SDSfqf|M2OPpRjO9B8%m{djx3m5k)pYsXKf# z&Vk_{Qhv-#6p;(3*)T^!u7)yVcY_KTV%LiI3`~rVT!`!y12wn3i67`eeL6-Z{j4 zr?0DZJXo<+P*B+iWuBf4osenv5>{V_R(=$!Ho5JvuVO zaL8G&(0Nu;zI6H)%WSM-uB$a?v}e`TvaGUMdR|wH?!dBi&MIQwwyQ^X?=G6za=fsE zpkU>$d7Z+BTQqunH#_R|(d1b@owG@LJUL=Iv;4DBF%*A%chX;iy6x1}*|f~xgD2$$ zWlQ}d&Y3~epG7wP|LA1$JbsZaGi2fn{rO9w+bw7H8?pB9n?2~6dK;PB#Z)gKiss!y zfHx<^-_xWA2yH~<7JYx9B|j}BK!!p0QZ8l*AzU?RyDNph`Hw9rJprl^Nf2gP|8PdEV}5yW|bKv|Cpw;IydNz%XHAU{-e z;On{h{Kf>}2CyH<+pK&UM!LwZ;gjdW?H;c@3tVWAWMfu2#2j0Xr-6~_w!wnj9gIR! z3fEn>$)I$;CVwglLmcNwH|nVK>Xw6i&FuQpaO+Lu?KJNW-Hx`)ZC`)rRy5TGHyWoe zX&t%`bJcq&mB8T#3b!KadvVUK(EHg@5MO<*^zmznaD!Z`u4-+vW8atseeA7+(^`Ch zhl{>%LZ>UG4!2Rt38kxoyin@vJS!XSY&^gb4xMjWe+B9|(=Nq<>1Viy$M->(1Y;$fYk@AIDn_{AWiXU*}(EQN3ri-%Hrc-QPrP1z zz2!t>@cg+Vg>el+*cHmOqn}bzb~!rv5NYX}I)ZNzP#u3G9@#mCG^Fc7$c$P#&q#4h zd46W^Z}x1HuJc)piF;^ShH>fO_f1P@gh|)TrONA$U;_v#!9u8(dPMb1CsHWYjMLZa zNt2UEEqf-E-1Br+G}Ek}MH2tFG@x%P;6BYm>hpc{jo--)B<1xsUh(U=3OB6LIUhLeJC+B`JnuI>DQWpN2Y1s7H7^Y#as0k0hn<3_ z#k7NsJ)Lopb9&1tm)nnz5H;ESu&b{#mn3YIkzeMTB!4e|ECfVqJwyj-_?nb@K^jWd zx=FaNE99sUZ(Yp`3NhZ7xVk{u7xb?o(>Hebl2rEs>C0P6v~4e0ICiQh*F012InLXP z_4^og;;|_h+|rN{Bi1jb&Y-O95R_Moykqw=$j5mBmWhq6!)*BJ$Otwer?x)Nrtc99 zGwMuHH4x2u!XuHGMTg_rYcXll5Z3v6$-J7CsRlUgCpM)YF=wK8CJI_TIo(g^L(uCG>5a=gh_LZ;^aKKW@ou zm=w2a?vv>j9Q4hiKbySA(lGFLkv#kxo4@?I8$q$86@&K}#IrKHkcjKt_`P+8v;;gV z6Z+)oQzpz0doW}mrbTo6kQ_5&-}!&TY*5~-yzNW?d2avz3dG4Xdmp^1`TrZx7Onao zh)2E5=L}_h_A0xQUo|Vi!ceKvfLMg^LbWgHiKX#Aes+j+W03ENV}E-O&D=|IeQh<( zpARLmZVB~$(o_-Sx1lFd9M-;~Rru~=-L#anY$@Zh=4@=njb@?a2nxOaiRYAet*~fI zf$cP(t-H}@h1i_^RdS?S%8o6FU3!E4rmXjSaLCj5F@8PP_y#N?e?G({?+yPOV3!;F zl(dXZ3(5ji2xp=T5Z%l_LqyIFAHPrDt~X(KJDBIo^&+o1e-B@>13iow{Pd24cPnm; z(#)p@{a&pkWiw9C&Uv-T#g`cN@zXEIFHYZ>6j0sCK=S&8x5T49%DhWGp6OfR9FZXY zoCriKch!3l>1Rg>U%scy)04vw^ndvCAsKux*x!KsEwXpTVojmknu$q@dsbW^JYQ?> zkn|{p{j!ptr$2dXKCqwp{r!-5*CXN&i-E&5uE%3PTU`A5J^bDt2Y-MQ%%2Z&@2%l} z1Dxw|EYW&F3!kf!lIFY^EGs9>tl%?Z;Htd*fW`427UL@YevX({Sn6kuVQ(Mr^!fE` z2S5DzAiLfY>^H!zM$e+l5wdubYg)7&namTM7UB!S!z7-{^=k6}y6= zezv$(qtdU*uU{wT4MDmH_?AI$`1&^{BDWuja~OVhV)t)A2yZ_aUh9;R_<3T3=52|6 zYkA#_n?>!UT3(V&>nfZq^%}ZovuxGLc4y1$&0}^0mif3ng~Ete{mrZd}l~w&FuNMXBI`hpfWmuXwA)B%@!O@Tc)uo2x7q8EtqiNVV+3Xbp&|kF9 zX>GN?d^I3&x98l!k)@f#xq~kjdS_WpD;Mi_wI+Sv)_JxF;p%E@Uf1+n&`w90=@N=( zEog-g?}UJ8<|$4;qlGKz?yM}UD-jx@5Sh5lfS9HwAzI?IMcy>o1*<*@;BUn(WW4%n ziu6WiXp+C9o>UFnS%a2kSq547tDk(cyR*Z~UUgM+`XB^KoLtqc$6)UW5XBU&H>hbf zqq&AT4Lag)mgH@cNw3HkC3HKq3ehkKFgX5XlFzftg5VVVHaWNF#WLc$MhFpOo+sCU zfTi{kX2#4j0l%sXGU-dhF^cxb%>eIo5a_6^m}MPe+wq&MzQ|eYSRX}onWk}OMGd0> zv=j$HGDJZbH;Ub@HSdcr-<&?`a1aPXlaXf>LU>Hdc71xJF3E|IYy9Q9eSCL%go*F; z)@ynSe7P}O7wQtj&19Tyv5;jTHIEjb?#vV6iQ<&~q(yWzTUAX{OiD(P$az7gh_a{! zx$@;TS+G7SO>WkXH-x_hU7o+o7Au1J;;SX~!koi2T1vQ@z7*=6ar)hP0W8q0 z5LPCZF6z9OtW*B(;ZY#}d!5qPV1((Krh%MS!h;3__qBmgl0IU+XFeQv$$s0J|L&Z4 zpP2r@hYso{>XhNu-UtOUsbf_8>QG9G=xrcH3%u)K$ zZAJklK`ME9@!3be_ZQDUQqwd0?4!0`_d_eiwDa+gJr+FJpZV;g(^s#)eAP4OKlT_5 z#=>hF((JbVJm`--o@CRvLBm)1tk(?BV+tVZVzP#4Y11claWQX4U$IJ@QjfhC$q|T- z;&y|3divz6&u@eC=XIWknHuh7sPns+h+D82bmVhJNCm=bR#lcA-hfefW(kkKo>)v( zL6S!o_M!3Pc?GKrP&}lj%THxNt1C$9e)iF1U6y%2vZ3i+96bilA3Y%mkMHuYk4c87 zb;04|(c`<}U;N527^dns0Eam08-T(L{0+eQeR5Fx8vyijU6bH{1AtDhv#(9&yI_ny z+cw6{5pDwa!55j}rAmgpcv`}-y!OfpzsK<( z#_FtsV$_2Myr?Vk*C4$UZkN}$p{WP{X|cE&_N-Ve-W#%0nz0Uy+d|OU;Vdy_@7co> zdg<-W*iX<5if79>yy;a{zfEbT;BOiu+T3~1?q88gtefcQJOrR5q0Y^p~G&i1NG^c$t7Mx-)v*rUcx?s|88Y7cCTCXryoUiKe=*Bc~Z$Mvz zAKz;}k7u(lG7hD;-s3F}o%yTg&MldNI`VQfL~WaN;mG8c6Upm2I!=Z4(Glj+0Or+} znFx2!8@s*!5^TRFGx+2IV|cg)X|>K|pK?}H+e&U(audT&HAuIvJMI}=zD&sbv!?Uj zkH`2I%U>rnobhu>udph-Eemljm{#-V6^A#-qq=nuZ?0m<=`XL}<`i~PZt`h$Ggg>7 z?(Mc}#^+AWA2BFlQAr;Y6VO-V59ZMCN-EstrNhO7Th07{;U)&6Jhjn?s-Lb3iYsP0 zXodh1-xxlog$Y@Wx>ct?`|LJti_5IdzvRH|wl>xoD;c%C>{h?cU~kC^x1Y#P$Dvv@ z`ap~d(|uThd~@`EFPCQV`?HyQQ?VEPn(f#viTl&Z#iadot{&)YnEImKg}yaX3{ye_YDl@>$u&w8-z4A$#cfn=nJ#R z`n4hqhV;$$#a4sh|F0U$H>EA!i_Ko; zzi3ShpUrc&7`J7&U^TK<5TS?m!eXJIC4iKr>-Xb7q94}nK(r5^@oyaUZ))1!%caFP z$2Kc?>uDo3zFaTB;&w57Rx~Se7rY$fE$8NaXznk&os*HVOBS(3lJI4CKP-@L#o5F4 z>&^y$PBTvF_Udbd6u}DUjWc^&BNmz2u_T3WIl*oIj+L3L!Q4ELKdYEi^7=i|rsbWV zW1PRjhqA!_eyFeUBCj3&9FKt4qTUmEvoLit>il_JnqKI7NUI2vi@aW~s=8Gl*`Ro{ zZ2qj$M;FW9heDAczixsBw3`X{vpObOkb9pY*%i8bp0vF4?hZl0Wberr8v zF}}b{KX*9)J~;&8eUZNAw|?%henOh&eQ} zH%m|Hou505zdNVw;QOL{g_phooZm<92Ma&9!}nO14Y6)TDZs4p7Re@gdqt|mPYcf} zFP~un0c#7q0wO#`OT!sEjv;hso(sw-&8u}egXwghOx8D%A8e|hdP`T`q3F64ySO(Z zS1fzT-O_%)$E<$U7NyLaCT35UZGC;)*;|rNMa|)ibQYmD^boiQ4E@82ZZd=98)Xx6 zOun6Mle{$J*t0VL)ZY)MWaEM{f1 zs14#jThwIiCu(7PI#i6T1NXO;`ip#EiZXh=G0S#q-}p z4;~Lw7tOk8GhGUR%hbZ3VY5ZR?An^JNr!#Dv2=?5Lim;BSCFf5%jrDE3QV=UD6h8> z+p;oI2w3HaMzOZnGxM7ZV{e@c`Nl)m4YU})%Cp&*%kp~b7LD)Rl5!_?PEKJ%=@|ND zwp|hU^s0t(7G0dBkEcg{@Q?3Kk0@qp+H5(^Z%Zs_iiM7tBCYnLBm9f#Ysy$C5&;fb z&DKHG%%ZOW+jYI{YCy`x3?pp-8^7KTyElqH@Ehkbme%agnncl% zo^qqBY+Cee-p@8!wq9R1ZN3=XJH{%=jSmuQl}_9lhCz@zuPdJeoxdIc7zTbiH8$XQIbH?0K{n|9jv6|I7s5 z-i0BPnSCvh&U9Yiv#Z-pH%$G{_C%}3b)Prmv;Pmu>h0<8$0D4-SD%c`I?fpu-Y3vXejw>EGK+PB%oM@Iu*ZT@aru4lQw zHuw$E>!ey;zp1_vg?NIg7RQ37pOOn3qyhw_1(kezRuHc=^l{crBix;zcWgfT2W5@{{z$A>zM~A zJ^vuDt8H0Ol)=#=yR@a=14PkROFFff&bcoTXp&!$&G^~lu;bZG*()~u+wv1ZfuVd4 zqN;tMzi+gtUuWhE5{dUVY=jf77H70jZ0*;r@Vg;10W4(Z?d$>`FKlvTHpyvan!6o; zt(3#D(9%@`VA3+Gdb<9ep^X3RJQn zOJfa*BNyf zsSjFBrznC3ObcWe>|oT=HDzL zH{x*e=idZp*F47CAoX>be~{&Y?AJ;TUQu+htlC?;6FqAFth3&6sH(pXyBUSNIg@bv zG2e!RHmGCm&tPTw=4&&>4^1QfNF!3$pXco_}r_UD9ezQ$@soMGO_ z+S)|%?WX1fIOu(GdT+-1`OZ+^%rf$av((h~`LoJb({FSc_($wDfW(`+SiGrT7eBad z>iTuw3Ik2ERW>bJt6j2b3vY`oIdGsc8RFk!_P?pYRL8QscB_$ylO$ttjAL0QWA}-b z)y)Io&&?z;HSpfg;=KK2Ru+_G&pGvZL&WkUhkjW2ehwV^;i)qV=TEANR>mSa{YNwT zLz>C=>H2os=5wPr`wCK3XL(I}h?lkUuaOw}8cOwcgFI_qUoWQ=DK5!K%-(0TnJy^P zyce{vP%JOp3fpwbOr{QmQ@_L-jqQ%;uthOyp3SzK>^#47i$U|}RuR|e{k+qg=QVBa zE?6?)g{-e?o$An7+WzBAHOUn{l7 zBPBJ_7zuh0kMM`H;L*>pUF5Bz{Ii*5`>~t#>@9S;LK#%%x9H{n7ux)+c~-p3XYb() z-=yU_x@``Zk`^PVleD2;Zp(%Y-zu{kfJT%SC+lbVdA2TFUdfj=c>(*gK*m?3LBCv< zxAntsL&dY_MZ>tWcCHBcH$prg;LkbXPBfr;AF}ysG2&QkbRpPWsK;>&YTh`?+ogJ~ zdUl_^cY6EvdbO&s`rTfya<*+YlcnzFd-(XNMlU>{r`!}Rq z)61eMCS{(&Lb8LmCX2J4OiRdE6Ta}3#vK}Ktm>+zPU$l;G7ag2DN*p|aq{P1N5ww7 z?fAz}#iZYo4#(n}+>H5+7~XD%zP>qZip8q@|BEd=U9OGP{Wv)1n_P)K6IDd+GCWUY z?+fBk*dQ+%@8&_gC9wQ$$>K+j?ewFgeh~Q0Q|U+Ufq?#zd+@W!WIwNbf&X6_eiM~P z)crT1)MH3As~36urp~6h`RtbTdmPFA2nfn(RTpV~DdDZ?gX7mP$1hIbgl0}<@w@qC z%ovQX+MZyMBV^y%B4N{E1XT4Wc?s%eWUO+K;sLM(Genx`eakmy*D zrpqo^6H~tOx>{?#k~AMlL?)!O+OJx-t99E^d#c1%1V*4Bv8}mCd{I+|E^j!kGO4Sp zhGr-IlC=fa9Y)+K(gBwR*}`^SKte6DVOQsMwIHL}$7Md=k)an8^BC&?eEyI-|NMXr4iUl5;{4X&GF5>L^<7oGg56R$Pd%C?I(d$)`=ENfpMifemIt#}Ksb+e-%(Z_e+)3JRI#iw~wFZlbqQ}|60TYj;D z#0fbZ5Zvze9PrJf{!L9-sI_=D^;-&Y zT239YV@Dl@;JtycV>r#$jc6eufn}~+T6+Er#MD`Y9<$?zgGRvC>iQUWnnG(3d)f7# z+c~lSyeenH9Op&Zf?sqTX+x~(V6#(e;FOg(rcKumENC*tqnQ^JLe|rHf5q~aLc^c` z@EsU8>ue`&Ui_HZ2j1{4#qW&te0>f_7X%gV^Jj}0vzq)g1*1O;@;1=>h}7Pqx@0_P z$|=P|l)4Pi`v2H`IUi_fzQ)J1nfbJzO|>uF)(aBAup3KDwA;>~@9vm)KVotAbyzl= zjX&7kp+Sojvl1vg?Jn#4oHIvMC{gJmyY48ic~wDE8AVH6G|QKyOx6;XI+VXQ$9xlW zODQKix1Dh7cGJl@D@%pGSB$Ugf0G@U(g^2=RB5&4VcEF%HS=& z99xqIwOm6CB{RIN`mcqM!{H*DKCjlxe&%%`KYV)@eI)>HpuP~2EV55aq_Yf~9mLM! zV;mY*K%c9kEXjg~0A-w!)bkIK&0j%l=f`DfzH4sD-tuAtA^xHGdA2{I?6f2eGSv0Y zJu$yIlVAoN*SC^7n84$Md`AzyHcuQWHg}8nLG9K-OWN%ru!XFXw zMOGF;0;LeA>f#3K65lV@4V>w+>`suEn;V|k@d>)-?A|hjttkG#K-NFVs`(swqblt4 z=ZCQ6&9?4G?75jee-7ExWsZiu>G!li;$VG{`HAIyj{PO%+v(H~OdrWW-nZK`=6@_` z(f{F?^j_$DU>)C_V)S*%!5T3;yrq1xYOgz?w}%$3Pw`^RoSJ&x&CeRsL^SP&?9~r7 z_rEEN_W#>8fK9~zaw)pycH}=14=zwak~b*x4Bt=!san^xp7_lZ@s;T#qo~vN!_g?h z&zYZWvdA^-={(IEP7KqFAbhR~$1etX_~k zTkz6CT~`vzGiI^|Dh9>H;kW7UhrklA>4$tjyhQZ9@88z*c+JD5Ig#w^ZTZ6YAmmN) zAxsVzxzlAXc}>ZeegioYB}U`n+shUYo0FfT>H3DVSu@W5-k?S;SX~Z@I*X!_i%w)` z^!3+a1k(4mW9EkU!!kn(tYVy;(0wq|h(Y&!==VShh?I4n&8}0`TuQ~T3ro@w+APze zO|Pou$1OOY1_iFX$cp9vTR8HAb8yeA>aAOMFr)wBCg4iKVZHh$a&RHG-5gvG`wxy` zKF4~Pj?BwCSPf=GU}C25|8*8fqSX(~Zmnus$f(v$d2M9GDkhB@eKl}P9=iQ3@ZvK4 zj~3s~*JXMIxvleU2s=nl&c=Chv986VFP6mY3;zB8WpnV&Sr#)lp-5Qv{AQC5=H>s_ zF0U6>*p~CK6^h7T>Sn930>QrolyejmaKOc=4v)& zC5BRJ>=~N%`kPts#^Jjp-mQjjez~pDD}upu{^*Z$PK9twZHYKwAwid+l(=+uLeo%{Rx968PJC9zZ?gI#Zy`pMFI(j`C9+i{8^kdc*`AtYfN@d; z1jDd@nU^SPx2DaDFW;O#635-DD^P_T2| zQ$XlVGm;>rK#>09Zt(Yai{-t&j`n$Z#(s&Q0`8+_1CNi!=^Hp>khM0})u7$>SUS{- zcRLKlt`Tway6;@wnkl~vi)5ljW$I`{fbt)M%0~6r<;f-)D~Jxm2*it zvDCygz>kp*HM9HZHrP+A8F{AJ^5V0Pe(x`yf0X9rG_La5XCKj;M}LJuG3|W(V~+(7 zUYq;uqtjQfzI@fA>yJGq#>-iun11{Di}@LOSj(npuX}Hi zos8mkJCvWEKKbhN+hFo}o#)HjcYYV-y#>QS6+CBz3gKa^zmWfrPPX0FQ{Rao@BEe8Qosf z8@=vGbUNTG>EC45Z|Q)4174ZhSI%F;8DbM8-i*G~@o#VCE`9@E{{M@|c1v#i<~f61 zy8kcmMkI{-{~3qeW`y4qpF|RD10(zKX?tr1IU|3*$VzgW$vr1;`^v7}Zp>=kfC8vG zEwkp<$<^U(<~NECyd^}O>lG%L!@kbcZcG;RM)R{jjdo4uIp-b5XY%v5Ir5+7=?y!J zZOW=GbCXS$Tu^#mbn}e2Vr=b2RwzxENczlX@5NOye@n*kbwt{y8W_<-Y||pg zDP>)4TS{xwij$-~kRH0Iv82NZ4WwT5Po`)`b3mjsA$pI!e)uk${9^g-q^k4rbII78 zV%6fdT*YbCMNZKuFY_W3>Xsxnug;oZUcb#LQBy6)Ppg};!nAR3UrXP5poBMhg$4{j zUk$I7-rfcVU~>3kK}c&jGJds{1l) z^DjB0a@z%8XVzuN@^arY-jWY)KZ~7?J8DuDf!Hu6`ljX4Z;IHrkI@&uf6NcK6~&*y zS+Jgg@|d!)?--J%T`=Q@>L2^!=&(bD4zn${? zI->F3371=vk{g@V4Q2zQeWMiajE{*y|H}&&74mdHQgpCh`jNL9Yd@E?T4dREaBdi@ z|2N|uL-2h#>iMQt`$V+F~6`VC}_z+(i$8YwfAE_ zFNFK>>Hfx1|EA{b_92Ew7q^`&GOWw>0!+QCnx>ePy6UdWo9yjyYS^S50w+XW;ag7F z`%Hwt(uy2HV-{&;O_o>oNi^9D=vWeXst(nD0```3!k^Q;XJu2pZ=e?}ci%XQl) zxnryw-*Sd!x`?eOKWsNbas8Z^|KAhY3%vAmfh{e8zb~!??B@bgUS@w^T(9ub&jq%! zn7|d~fou_^qD{d{3^k_ZG4#z4LQ{>$i)G`Pq{4p-s_Vzc12- zyokK_H-P)C6?%}lyB*5Mx;TQYBL#F><0U^Qd3%*3Aw0L?{hX338L~h~5OEp{!(C)E zN~yF+?}gBvDK5zQoLB2|2J1L0niZv8$UJ6!!}q~v`KgzC><&dUi=2qO5xHX7L++MV z`Nk=|eOAbu(w~hCQLdr4zN;5AR!G%%9($^*hLF;)K!Ypm3Y?yvjmkRh{w=7*(e0 zNuIdqDqjeQvK6;8H<8btTw{GTTbJ!9g$Jg1^q26JsIF30*>C?K%n|v8*I;0pkN0i-A zlK=klJ+jhYUjk`HIR!c=`3K{(MG$7!m%3)-Hag)O(7^w19MmmY>l@o9T&UU1PnQZvi^igYK&HMMJe9yxE}tPveKhGWVP6~Fv)(X%7H4eBG?O*8@tOR*^K(3tVJ~(G%!}6q-CIsLs{ib5O`kE*6qa&=rn$Y91 zTXJ`-5e7y<;PGAz{9V`}L5B!Dj1f^)88pOb6b;%sjO%l4%z~xqm(-@dDw;eFF8~n& z|GAI?`NfLC357o6=aLOLMXYpN*5@Ek*7SLWhyo-RW_w&8LCO5``fXn3Ed?DjKUj5-PV0r-3L*B?X{HohZj#6_jz9 z<)B$w$=Z++TFNsFD2H##x4ON%cuP*=#wND%5)@`c`d?l^4k6zkdD(=I zOgh2;T*3f+b6aL&tp4AOcMQSzVBr5(jpb%W)rKF=sG5^+o~u>79m58BmRdoO1K_E> z7q)K&EuoVn<=&6$Jd5?=^ZbpY{!L9*#5;PLPu3UauUpQIG>>JL15Zrdy{AQXv8)=( z?={jJC;8>OTh7t@&_4H5Z4j*U;$mIPU*|~oY2KE+u^A@^t7ThPB?a4L0m_2VTIO}r zaji4T9%j>a%^6C(IZj{alKlMQ_0t!WZk(HkV7s02pV#79#bSlR7b!XulBJIy{I-^VSj$Yu%Gy6v4PDoQ2cWQX+8Kw_+$iJMx z%(vpb{G89U{PN*3mltMeL=%P^w^rltXX1X2BB`H+A)cMzkoOMf?QF526+hDB&&qW( z*E~Xy(m)2{_D0Bn36ZkV^UoTCMixlIfi8akA{^@N_|eiQJ;z&Q*Rmz%P8VU3Mz?0wRPO<2=LXT2^gu7?4Mrgod3`T4@G~X>p!XnyWLZMnp2-^{q3S;r{Z+ zE&V~Lotc_)ak@geR5kQXh|c>?&+P=~^PEVFq$hr6ItHGVVmSkmh{cF-984?iBw}L` z31JDFMr4I$?wb%0pWKsto?RA%dclF!VCNksU{t{QXjiS62`n4O8P``IA+)B2?%-gF z&;nK5I^=48-4Fpw=E(H|A7#YmP(E$3ARN9X%N<`<#ms~pGHR=YHYh666-2eJPAKRV zNDt@sAdnXseMGPB?f~Jv9eg<@xf-Y6Ce?G9*Gv`>)d+Jm@(1ZFsSC>3?oZ$q0#-%S3JBZ{;=f z({pUt`3)lyCsIfK@UsJ=^BBvvDe73c)LD$A<{7IHG(zebVH|B>8nc%9`!UbYbS=)Z zlY>D^(zi_`!K?abR;IP@k`MTXjS)L(BH@m3lv=2H{%$X)3u(2&a#v`LKvW~BE#A-? z|KD@qx~J>a4Kb8W?5@&MHVtQpp-0M^eR9}fQ+zXn|GMEfjV+S;>tig= z-tIB`==yGC>FbTb``ZnZV~Kn3N+76ZFgcGDerVA^%QG@Y+8*r;I>1T-&vZ80pB_%YU?>-%)H*3l`9|M+RW)={9j5c z&cNZk4l<;#iXyaedBWAQCr9JNncW%M$l`mnl_k&NF0%&Quiq8rpT591pxpxXU-S0B zZrKwe!}OGUxb~p}vkxx421acNzHEACrv>m>7u7X+qBqO`V~2?WZZx<3rMk{z(xH-gj%TdehKrdF0f()ei&O0+{_;cZr4+fc9Va2Im07=w(2)( zX`-E#BnabOU-~@yq>TzB0OA%`LOp;E2-TYsnLJ;1?}1l6&ic_G)ymj*ohJLHDk z;uj8}PYvvc)`WvdJxkzw6%Arw^FXrJ=W54A%+IZAEq^Ab!glFrZ&FzMJ^@nYnGDy% zV_6c!zhko56#O)JfPM5R7`@h^p|+Gtl90N_LPQw-{W$$4Wy!;UmG}`5s8s$*3sb|P zST%Ql4yD(09E|);8QETjC1yf-tTt^Q`P&YT>Cas?7h4VLXaJh(#PXmf3et_|XZJ-6 zeu;JR;K<4vs}-gGh&tRU3>vjvMHtlw7sr!{gY__cqL;>_7(disejdobAd267c+>d> z6*?H+Ao#1@P#Rd;@BvRiFRUN=ttphC!nYl^Jdu^AVA5yr!t(<)PMaU7m$nv1tQfa; zD)z4py)5vczOKb4ec@bdPCw_DFIkCZn;{dbQ)vx5od>_5R_6u=FlCbg<{mZCU2KO_ z67@<N~c1@Dmo1fuO#0nAcy z@mh#PtD1sjTIn&}#pZ_c`+3>2*Z4B0w)7vK!AOL-aF!`q56=$Ob0Ak9ZT4tqx2IqJ zLqU%BkBT-WaVTl)IxgJb2WckK-_4-DeTB9=`;pAb34G_|LCFchh!Dbsr^68g3t4rCB`F@A^rHtV@a zX@c9O2^Ywl^C>7N@RQwt;mVAlZU4Qm{qg&HDwa4-^Kd4bhQmK$9h)2VS;b&pCarSf zL6!zwu7s+rSjQt7EDc(yQ{Hf&=?NZ=&rrs)G)aCem&XmcVZgw!&5iEGbz(zvW3Zgs zbQKt}xO|QMgjrH(O}k93?4xYeU7m1!hH>mMCbKtV`%R9*kJ|Ww9QS(5SwsbPM@~s+1qPhGeh)L(eWpUiH_SPCVa57w?!DZ*8l# z%2y0{(xN>jpVx;4XXdpro zdcNp9#3N@Joimk)^xx@BT4BThi$q6ClmM2gtVrF|%U z;6$s(7mHH6P>Ymlo4TV_YWXYOEoI{L$2H|6bwh8wj#(195|~~e zH?ihnepr5lv}TF6yrz}TxO3DA3o0Z3j^{U`#j{5`tJS;*&bce%Jb6vY2J+$8BM+}F zoSzZ{U_$fy3DTBq8|zJ-llkk&{&`pEC!qZ5-9K8Tfd*9UTId{~N59$pEnq;NGVD8y zItM}U#;msYPd3W5FJqB^nFn1bk5eD^W(zXi=U{NUMwV+7-EO{yBpPjM z@S@1!7Z7e}E>7m#opl!VfH@-M!txTk!VK?(kGxuyPbXqdXmw$jf2h;6R@4s1(>%NA z0VSG3_{ebr8B88mYuT^WFSfHXN0X{=h84eju3OmSe0#RPts2+}c?STArx>C&ZlsnQ zYEUyHF$HI5nf7rqi|y+$T7DzSaTcM3vy?WvrFq&>wGlB^`5REkT3UdG=mZAjjx&2x zaEJ^wAI=+oZ?iuPiEl8IbVt(elvq%qBi~xb;8GRq;qtTc7i?sgkL>YV-uk^g-@UQW z9D1v&3#T$W4~Dv?i{XY$8w*UzdvU$&(h&XXPJw@O8RQ@Nii#1D%o{_wO#bLf-S(Wy`u#Sa=~MGyHViVY3X`Ug!_Cdb|oB zR8Vb90abwM^+`;(1N%j+XhH}t@HE3Jn#}L@rE^wyZp)4xQ>I3{vVx|ekzolRf2C;N zSsm|yIUM1S(l{th@=?s_#tP6i03&AZTySbIxT0vh{o% zw+v4k=OK=>m*1{)Ewz$L$kg51wVHI<#c)7iC`ej5iFIbwi0^7BXzDKa!pniGOfiyL z440I;u73tsC+)nBXOkT0GZ%)ZovLEwmWkVN^CbPa-v#yOpr!op3(~u*XR&8J{`b(& zuju`fGW&V|V}1Hwle;n|hQXhMCR_%<6csF)vvEB;XX7vCOteYYaIXmI3RQGuyG5AH zwJ;ALv3_>{G0U6M4q_=OY&KmSB;~bw>)^2cXQNl zMp|Wz3d0ubGqM|Xa=DKqwv~kO1IMDV78`41c4ub6xFUaRYepEu5G)`Ay#ye2;Z*3%s;OyP%<2zRhzn0`e;$q5O$NS=+;Jxb_ zM|w(2k0Ewdh-l*VNrAoTj4*4#R)Wu3$*Tt74K)jOvR5Z#MwsTS_i<|}90!VGnCmFv_&?0d;HuCZ4-UEzn{-FK z4~DY3%~CPE9*;;`(U3w+Nni7?$4s$1D=>9Ph%+3q1awdNu7)(nE(6A$ zhqcyyGC_9&j!O^qy?yK6T0ET`v?B(@aN_II3ha!0pObSfCHdj`ydg8o{durL&JbfU zl)LoBv68^QU`;S_pBtJy*4RA2`;CV-@o(tN+^I!XdmH^py9j^FjN?~hRr&f&NhUcX z|5ksq=I9x zW4~6vm6luZTl7(h#b%Z&)JG0Y)lIfXDR)1;DT2=^pZgDtwjUY>dQV|2+;i&WoTEY= zLo@sZti?YO;;2~HvutI;mYpqF(&ctyY*Nu~Qoz+XfHuXL&8iDK0 zSp*tWDtPgWpsIaMHe6dpD*52}STWow%I;E0GX)F0n4xjwrDp;7cgwg?aA_4PNwPlF z!2D4=iK?cv%j2K?)&=tC`N9)>a3@4)fnRuUh}c0-JK742R_boc54bk-3uy&AjlM^# zxm;8u=2}wC!!d_X_le7L_$vkQSQA#-ZMmLfwiE$Mx=4PRJs9>bym&b)SUknR~rv<7zv}6mMeJ0YJF($NY&J~b`v6}ct1~No` z^mz8S(!C%~ug{a;4@9GRTH)7* zh-ux3rB0B4_}|OaeLhZBSvr~XTxPK^V{(42>fdWZ!~YWbAci%vj>O(4^*`q)@MleO z2Z=+s9>%`%*7|jPr?Ie-`5L*2-IwB0awedS1tM5@X4RV$|CH%zX1-eEO|O6CpPicn z037R8nLYkfT679;WXudea)rHhjvm?fV`Z4^z8#Cqk;J;;5t^zM7bRy@KNNQhBS8a- zen(_W9@GSuo|Gk}UU`dAh4MqRpXIfakYCx$3Tck44KBct0x0#8++knFRwL;tziR&W zoKXMxV)Z2032M~@e?Mx9@3{FGTKD_;l(M9BBnlHx*`M~V8=9+L2#B%;W}UFZTg<{Z z_a(}YYzFNt!c2lb{1tJb)fPg6EW`f-ubW1F;7rM4R?OkC@q>TmbS&sxN?DU=D-Wk> zvU5fv{9@kWp_86f<`RpP`qntS%vXwX0~oP7iP&7<=q-EnxIRc3;!^@BuEv{+l;qOI z|Bvc38ENZ6+fsSwdU{mPz?zRR662*`r6syjgeJRzd2+WRa~}ev!y`ExVJ#q3)+Mh| z7i-gR?Ie*Lr1xErXZl){E^d{rm8HdQWwklyHuQ-}Yim1d=*2)qYf z?$a%BBQHwHtJ&9odH+heeJ~C=TQ>{?O5F_>wn|1B9f5=0;yX8T2&tHruF$lqU#eS(!&An_p~zt3@$3i%;3`k?20mZWG0)fuD&Pe&aPn(XV-1WrfbhC~gPg1z-mq+3ucc!t>P! z4e88XWt$WkIY6ljd>kKlPAuy(q;i7Z_|IG5Rwn*S93jxxG?;9+Saz|}qAHRu4u83N ztIGK082{Yu?C?_x>JWc!^B^_iL|V4FwZrI_LuQ%; zDk~z1om9hca0|~%3vFIq-ehS`kvPqs`0C$`Nmn_L zo6zs4Vp>yOUD4eHo^v#lk}7)ki-dF2qS^D#1uF8J5r{u$F*bqa40k`v)VdTISasvq zL}j@LQ|EDJAj)(uTQ?whEk|Hla|aE@0M}ow^Yv>DlaLsfWy_r|MP80Gm4$^*!q@AI zkqO!OUz`dCO79pp>3*R}R52F84*X;m##&)>D01W49GSPR=6E}n-^n}2qQV@?;gu4u zt-O4++?C3A-M^0t0yT9=VY#q}(}zSa?OW6RJHpI*PaQ-)K6+0>$$34nM5(gmF)9}+ z{K2j~q@>NEo4Osij1zymoy7x|s3wbC_gVPN4aQFSn6Y?Q;BGmm74b3*le~m-)Z}$c z`ej8di_(m$vUt`1oow7)fEvq8NQY@lDKu01dJ5ip8?g%;N*}Wi z)r!vBHr_!Z0>R9Ul~nf&pb&p@3tK8ZgiM0pVZoMD6guCu(uBbY^{E#I^< zr=F|1Y`61)i|VD9K|Lt>c_T8%$gO6U1ikUN$Swo(dmWdm2mKdIQ{=ZI^Ym{XO5^QU zLdC8DXT%gy1=sxmI1CnbEzcvnkH~Jj#L^m`Z+JPOOOYM7qe-IXOwsF_i{#I?EcV1W17+*hN_4+4zBb z9fOJZEH}`o@1eg>Ujy;~6h+u=svEMkL7xR|x}^GV!37yQDPfU-PGrb>@09`50UVRM zhNX}U=C7}XzaGCU#cjzCalIW!sxj%v{ZSo_IG!Y9R{|8}o>dmi(9C;{>UzxWhLF%n zRPh$WL9?_{f5xy>wrXctoIj`sMg=A&nW`-=;JRo(cUVt)=T36n=yewT(bAoh;S-|M z#;cXNENH0saHZjEp<4MJdicR8?m9$HZ;EuQ*^m?*w!*Em+Q3Gswf_rocj~*SjGSo4 zUQT#yjLt=?lKDnRHwrnK^#I3E3OV7~B-1FQXDRB< zG3;V0Trd#VNu0qP>ggg?0>PG$RJ|+LLp+LP610|unx@y z%)YLgh;sGX=($F5FULIn+)&Ci&!k0t$2KKn8G%tFi zs8+GKXHXA0$?=`S`ozb5iW{aWZEx_ko#Wx>s5AIv z6pu*LF0bfDsD30$D7^&Dotlxyt`JCTV77)lk>zWNk5ulE{4I<4@LBUjzOf9)av^;x zl?u$}_>wVpC;p4P`iUbSy_|*b$~7YlON#Yvlde>R9UdwotL6R1alfa4PMK>Fm+fq( z)|<5^Zv^yJ4S&;${_enpErdae9FPNUuTPJ@$TU;bKGTmlw2T|g-RLok*%H|^iW-mB zr=`jLvl3Q?Hi_gRYi)fH&DHl`WN0dlyPd+X152?_Zm<|;xjgRxVv2$d^UfuhW^TPD z{u_Mv<|qk8hCFSdI}DE?f@3!NRf|&%>grdOH=G-Fvayi4@}CbUC&ziZ<;@dM9B$)?H1ZrLVFl(n;orY4+oWK|6YZ-Jzn6UzPGQO4xBo+)}18cm#eVsp3`_SU^CwX(l zrWot9h`P{1icFs8_{_^v;S}4DIso!j9Z9RE#d(C%8OGD3r)IDcpR*GPqnGG&$f&vT z@s3+5zbnyOnp->mM~vvLUL#1h50X`~8+PNMzoT8UfA6~bjS`o7(baWKIt+Yp@ewC1 zlI8KY6$ZQ9&f(l{@@&1s&nUw4-L>nP_GafKhCd9~+gNv*HdUPR)5i>7(c3SKL z&u?)YB&b$SbRonbic?b}x(g{3-yD`ZMm=;Lr5ku=sDwQZ-IiH9t?ay`Yjq^5HeW+5 zN=YPEPpTbiUKg8+$^eA``QpAjOIy9GirH?ufq4O|csi z;z;Do4t?N*C?qnV^(2vz*CMVXB1gZyDyQZm>cJ|efF9`JD8{k|JN_nbP+9a@g8<%p zohiuu=(xZ9xoPQkGr9F$FGp|tcYJ&td-yC%su_x8ryGs{1Z-P{Nc;Pb>WoJdym50w-^JbZ!{i~JyZOAcy^pXe?BEuz<2tlgfS}HA zVUeTr`{-=j+e-S8+6)G}lRm&?>d~K_mS2bGUorJtxd_Yy{Vx*GZoCZ$B zZn>l{w&Z9ZC}gimtxZd4o!9o#Z2$IwK9Aa_xvB2$VJYE4gkaTwcL3 zm3lZuRv4&181^;YluCs$iJnT#f&W)GbdN1akt^s~J~_8Vg^VzHyRh&ov#CoCyE7o% zXTSDj1HMA{A4b*r?VwbZ!&GXjTQ;AI7S^J(<`JVr1JM)tFz01i5PoKe<{2WtFG5Z?r?-p%!|_7iz~ zsY>(s4|P@2Fs;^@`V20U0cehED@?8RzTtr|GLR+t&iyefs81VG7rW?hm=-^L`6fwM zFZh(UKy2|H%!PKR=QMRZcckJPG|wxX`qmy|`8`vsD1a%V%rXnzbZ%4!{_(8T8;70z zRdYwu9DSEzW-Va=J&LdssoRM5 zbqK?FxMY5{neAvPaMVV)Yo}=+^xWInNMX}mScpzqUD8sB>WHO$A};`u zn|zLOi1eC&10Pa>-WE9=X=}Dhsu1xYJz#S%LUaZ_BbVQ<2+I)+hl!HFSbZkziwmD3)Sk^f@=Lnm-UA7JwkK6>qf3i`PlL2I^%Z z`=A?m=SQsj?(o7NRm+=y{Sb17aT+1H*za@jL9Mqf&E6Dn55)z3#!?Zfj(i`FMj>n* zBM$lIH>Kta+&mor@KlhaI&3ulFv4&}o1S%Q34hujoboqEZ$d(RZo4D?zf*cEZ;6-} z=_@^xh7wfF$OEsE5rJ&2{27N!+Eso}*Nq3t#6~S*@lTbKC3P*lf%8`o`^mZa85&`+^=1@8U`BJ%JAWJ6&)q`v6X@S3@jsv5o`D$>WtI!9W+ zza|PJ546aJ2JZL|3|gBwDT>xPf|ketGNaSW*pa`#DBP(V+_+igZqetRcUtRoYVPtn znrH(z10LTF(sn!9H73I!TY5f3L<<+7^9Uj+ zFu-!*gy-*_a>$d}c%sIT}3mO%&G0~akVOpcgApBfSdis#R^j(N$ zhCkystcb-FuzjXNgB?Z9h`Rve~r;8HMAmdC^JS53Ha2 zU(;d(AtHdPVbsL_N|Kv{7M=(h)cCAkWY+r5($!zT5oUX&cWb%^UPcoH*xv0Dre<YIM%V}tuWdEof@0OiuOnk^s6sO-d zE!*%M+mIwt7$ixQWqmv5N+y!+I608$v{LdUI;O9$x>uxu((#XqBp;ZxJA7ZE7clXQ z81>Y0!yiCG8IaqOiWx$6YVUpJt=Z*nSWC#2b%_@BYjMexEDPhntn4MInO2K>VeP>t zozYY_gtw(9mGeJ5#yI!-v9-v`L+>*Jg~(IPX10gROU3ZBNXz;y!>~ZFvu>txroKy5 z=SVk+3sah8lY>?9_k$jWJje@UooyTaQGg$(_(L__vzvuF&gf_j!^&Wr4|1r=gkeY> zSotqzL{ju|7#p6ElyJd}e5xU#FkoLgkY;jM?*o&2z8E{CSWnzZT{|I;v!zZ@_zBtY zJ&yG#X|T0skzR|^LXvY~UF>hvwNU9{Lhi|AZ^^{(oNuFM{UcVpa= zyuouBaRXcT3*HGQUg9`X_D%Gxo7|1)8$1BuQ)9q%J9_Lot;k%%3WMxfOn;8mXU+4%BVBKLB&q7w+mgbQu=q1olIvhwh=j)D+O}Lm|1ZHLLa_s(mNq1ngm$y#Z6q<%u}_0;SdTKt8%=Z| z)Z(W_ODVp_2cJe8l67wD{l0Gb zOCNaqa(^GGSrD+S9XpR$y~vlYlB80!Vy=~fVNp2AL>M_9wj~a=6ZWMus&nURwOH9~ zAmj{*lucM_tIc%4t`^|q-!`n+pBwtGHy1^4)=eq^>bw;SAEgwyKK zyj(TaAfGv%f}*C1cfpqEJ)=p5gFpuyqe^h8R$4&h7M(R@AEOZEMo1<620sUpB* z!&^zA!)-bfw%j0Vu z#pU-{9n09Hgs4<{t;UK{1=VBT6D=(s%@+?{1NRadZ2Juhd{47z&E{=I6~7;%G}?qz z_}3QgyMxIlSRy3xoCbJ{()7r>cQ~GYF}kz@a?MY>@!6`^ajIFKc{2>u)lWYFL5_h> z$CK3-*WrI=wHK)T0}KXJh2JcAnaVb;_9?qP?eGHA$BWo$_p)?p|DcTXhNFxVSf@WA z2|QN7i-ePGZq7Xusg5(3#=Be_VdN#lKDlz%Jy!iPs_g5w7gfxemcgGzr_-&9pkogxo+!UmbV>R#^}q7eHZ;g2!B5ouI@>R$mqRkK6vr-m4u^gU(~AZ2 zN3LO{y%_8lxmud$^%?FYsBHF6{~n@gErv8(HMpNrxi1L!xd&M;gh}P1(&Yt6@>GE> z5-eY*=pL6AadfpZB7>LY&!koHC@rrB^$w!=9`-it&zW=ZUAh_$nlhfm>dCxxG&pZ; z_GyG1#PXnCtRB?;p4iFbAhTA3UsePU!1-dO_62 zKe!2N3@BTlQohpFL4QH?`x$e;6*h{eJPmy*;Y+l=Ve=9};b>UKUS;rKlJHM!00d~g zF>yGI!)Jzr_2_<%o^jOuL+_lU~eb zJtBU)r=hj!%hF0cJ?B4GK?V4|?3#(TETZtOq}^ZlP^;3?!{nf>Me2B81Hh4hghs5e zQ=`Z|z2Tu*$8DOsD%@S?O*LCJo6m30%_V(a5dT;;&RlIjEe$dykseegdc^YJXX6s) zPuq1<7a$9VT)H9 zF49%#Fl)WTi7U_rd|M?OnCV*mX%(iW!b_H|C%Sj~@15(52nUJe_{l#* z=<5jCfW^hk$X4zX>iwhaY%AY5*#vEbg#li+6qPn~G|3~|v!*JAT;{bjdm)#=jWu7= z1$!z`bH%H?5An{7nl^M8mX08WF}}CR>ve-PLI%`tG%lC7J#J2K(2~9MF=6S`p5{AP z$PWn%-w;YeY4&d!aI-!w->?Hy+i<>h;xu^4tp3F`ZqRS^ns+c5@8J}q6N!ozDTcmk zu3o66(rNFW0O^zU@fmI@1tO1FlRSK6dDerCCge|02j1?TXgVyFQ@OK}XZOb9>2HyX z7&KC^S{b3p zr71!4<3bky>B&$A^v_+ZB?*@M<{?GX)1Ko?64PH!=ksHCxGaUqSN*xaEpt|tp2u4+)lbD*I(`blnk^Vm~SR$9zRfJ0wE6I7UlXMvS%N> zWbXw9QGg4VIV>@Y45h_L0Bb4^OM>k}y9qcu4jPSr*Qjr2QP2o<1+dD|Y8>e{IL$WFH+&IKEKcTG4lGC8*0@Q%70p&q-B9iQc<+qf+m7&`?@~k9mP_z6C-RCr6(kp{JCzcLe_G{$H_@HBSQFy`O`z1G zUg{9#4L#g<*KlwQ__R4#^lvSsvh%Ie=G`dhS^MndG&Mc&VPSOq1K-$BO>3^DMZ!C} z`2=EnN%d@ajIYSc8)oLeO_4MoT-;H{GOuo-t>wYl>87n~VMu0xzqqpUuC!4PrOZ#B z$#XpDTr%9yeA&#?U-$eFiG8)_Klq4i-Fp3CyL|m19eR8Jh;aV6|LAWO0ksXirA9S4 zg&lkFk(PG442)aO@c{q1wT*Zc$KVmIRtly~q(GW9y`}7b*u+o>oBhLEVN$*U)??rA z0K*gAD%DV6tZTiSSS)pbpZE&&JkHG51&r1?te-wEcl_18+w>2SJ}=%o4AaR32D@-2 zT|#PM6{0nTi#3Frj9miulAqjk9_=#7TGm4p+>TpcNVV zQ7$6{Vv{+hPMr|c{a|ItK_D`RFuTyTXV+1JFaDMWcwAY^(JNIGq_$s8{$BiF_Mwb- z>H#Xm)^4qox7cWx%u1=~n9`CJ_4FSCF{aB>UQcXnZ1?lFx7kvpZx#=v1RA4((~&nu z07yWb?`Wu%cLH9wlrc-W+}(R~W(A zE`!2@rIMGW{?`az^xN@NYY*}EtaT`@6+sbC2Y!)G;qvzIfDm4ZQ$J|@BO2iU*m79! zn)TxIAl7Vi?lr!ygQAcUhOn|#GJ2IvM+MS0Ixh*?X~fcgEZ@Zb=?RT;@L6> zpRG1-&|Uim+14G@lw${v2_p2>1eN}+LBA0d{tmUznSp!(PtN(>{pBe-PfUDlVLrGE zTGmi@I=!AC+*5~2fk4Ouk-u)EDqRgJ??+vwH+xR${&H#qjj=Qcq<@SZ7NnqSbyaWe{o_`xtZ65BGp#`@cSIqWY70^MJZ*c<$nG2LroaQf( z1W#eda7s;$=nyxE?zb5qkg57%Ag~qe400X%`?_-4yuXW+37fd=$y0LGB1Rny9(R2R z=r=z->ddE7{TRSFIy>NEFejae1}HaKctHL6Vy#n+$!lt(A;@RTVQwdm@JA*($rIwF zDP4k1f!ale8 zV(P^E3)6-c8}8Z{*1i3fJ_LeCHsaC+S!5D;O%Wu2`2{Kq)}J)$B`d1*CKYE&^5o!; zgCAj{d3P)@SD(6{c1M?Vcy=XbEKmMR0QsF}3!t|ddCh!v_(Z%H^0(K%`{~+8Qp;J> zDuJ;~_u&?*Y+djMM*S72;4L*~q1yEPp>HWTa0zoff$DJg_Hk9>r^URz@yz-0QKH+7 zptjpwJ&J~rDUw_>3eFt3JBP6X{?G5WN(|CU2a5aZ)sX^E3ThS^2dKpF@{oliRhCSK z6mB@fDN%X>4he0mEsLQJxfFA zpYe2Ve>G*92G!LdMO_|WSBja<-8W$q$zvU4_~kGK-U0LhC^v63*u4L*-^s9>8G6?% z!{%rDpZ^k&u1|jjKT`f+kU}y(G(Voc$F-*XPWSDYnY&|Ej?epeXH}Lu9*bN`V^uaH z0X*O0`UiBhn(G0}TI~KmKV2@$zClyCFfyz@qzffXQe&W;^9k^ghT~$U^Sn@Y=iGEU?jUb1mvRl*z|a0K1~nJ*@t{unbNB}@RkKE7$b zbSTeVy9!2LE+R@6N;1Jedor0zUK=RLt3rRJikg=DMs9#cvVJG5$ zL&Wk)%*W;N;A~#IPN0JdwLY>>R~`sYPN>wG4WK+&c)TOtnlM$d^SVlm^X>m>OgN3{ zo^pteYCryZ^{efMW&~uRV9Sem$kUR&`c#R#+Y%lMOHZh@x z88U&KT2nyMo2baAEjpfE&JGSH(1CtPBwihu*}6tD93ZLR>%rGx@AZUVEEZu=BjPMQ zM0~}QcQ#;d$pV50gZW1i*@-775Rvt@egblN^?zJzGslzWnEH4psEt|KMVVCGJS}J} zWGYgrX)nFRd)(B8&I67qZ5QNEopjDLkX@8IP~Q2EY?tLykNfT1K4<7Z&V0mgICI|J zBjyX&Z$Ii-Ov*i)kk&>AFaDR_kgc~x^28cM(8B_3n z0lBPh@mAwKr&ag<0e)-INU18(xXi(s5jT}Kl2qXUbOvOldCS)={O5G7N^PqiIv_AO zDX1JlkvmjgOs38xLhiVSK3Y4oQ_(@G?)gK;)G-s)L7f(WefPd=$r{v6(vJ|wVc-x^ zau=cl8w3af;r$DQI)*+U(=h@(D$|WquJ;xe};2 z4d(lzT2J_Ar%gWy3r9S5=Wg?TV`-ml^p%>KzvT|o?r^_dvYvLpl5%@Z{!6<{Of7Fw zp@8Y~Izt%d>v`4>AAem7X3)oD)PlCDt8rpxmijN!*2@LzN$zM{=Cy|<%~xvt>`$+|Da!}aizU*3{ZjK2j7B%-+6 zaA@#Sh^)&tH96L@TaQ)YD<%x9v5d1E{M3jHEgMsV>QGJBsr_!rl;*=% z?Z;Mso`LqCNfwn%edxwNDc0wIi~2q!cCRR^w%aB-qbAx!74OYJX{Ke*$EE7g)VX4Z zk&D_D`0w7YZGXksaZqP96aN823iCD23^rCkRVHx|Ltqw;)%95seaBX|FQU3!Fs6!i zBuOT9a>Y8g<>GW^qa((m`3q~bwE_2n_qSXvhfZzV40zN48vFL9$t{lO6@IrnPkTkt@WlzUPY?ZOpCOk>^WVR)AEITTGO5{_|3HmOkIxRSw$GRKy{$THD`M{fQ=> zcaWE{w*D-9hKCbD8c@;8Guesa{?Wi`RJ&zKQqHSOyxZ3^*RJUWg1Q4WL=XE;ye9Oz z+=#Y|Y?|C8D!Nv;(pQGVm!App5cfkq2Xt)!oih~X0cgS z8Sv!|wZo%XbO%PM->Ns%=D2^*NGOoZKv;ufTlUoFaU#+*Y*%ap$ZIXZH0{_K%Nl^v z;s8OR0_s^X#1S;}`RKzr3nCghS&;c)5 z9sSm}i7zRp`(R)_cRS?gv~HxaCrl8zhNCsw%6ELxPQmrETUcGXyO?`8_8+y{PDaCc zM729w=_rHdE14Q@{~OpC<4mO<^tt_yHeog}S6b9HqWIrYe}EJ9 z3}9!X50}3wC0j?S8X3Hv8 zr9H`a+?>Ow*jVv$2-p8)YJ9>}DDs*L4!Jc4rtP@>89mPz>_b;KZ>kqg2b#B}_-va<5V`!Ocd zS<`5}da4xlU2JO4yCX8VL13H0$TUCFVjD>Yn)0NA$s2{#Ul-pjh+g-e>$AZu>%32_ zc-de&#i8yW$cp{AD#TKyY~-Sd#r{Oigy>RMgVVT@SwGvcaY0s>>TYTJLfgp6pSv08ZrBt5^l8RC^xHBqtnz&`9zaVSQ0!bRK%r(A=EeD^yJnF| z(`e!=rYl)=na&ESsJs|pa@`G(6pfEVAIGB(f z>uB-|t6<5~axLcyLR&v6zl%5{QVX9@YErytM|?qjR^d)?8UH+0Zf-rmcHQmcm(meH zNSK*Sj~UWBCr+6RrIR8>pE@6-q^KR?7>#YJWy};PJhy3*zsz*Fg!lEd{^S-Ss+^H|i&*6y;KhGeSyhR@riW z8V`Uzkf3;xaBsk^-rFQ!BY&$%Uw1|0WX;@tAtPI%zQW$aS(=8hNW2-D@hC+-Le;>0 zPN`i152f&gXU&{EK^B`3jujEiY>~S&zvaq$PcV)p%-)lu4_rZYey+4h5(d2M{equLlwlNoBywWRnD6DY|U!gQ_~b-f#JA;Gli%pIjzh5Z?o{cF5n z(p051VPn;R$zC4t-M;2QovFRfuvVs4ncWTJo#zKO=bfgHuFC%b3PJV0&cj!dr1gn( zv~r%2?PywJVxPBF$Y)TmB!V-+&v)t!oUkXE*{_S|cganoKBv{p;}TwRyeu*?u+|lz zxezY(6WoxurzcGc$GPCmwR$wkBMug`DQKVNyGS5J13?J`?o7x=!aG3 zwREK~m^}V%C^w`R@^=|LhVJBpZ2A=z?`VaO{?XirvGZNg`+n=}<*^KOe7w9K zr8{>HJA!W1NV+z^by`fW+x&aqPbcg1^SthSr^8a>vyteu=x}j;-TCAfhkxR+i0Ei6 zid&eN?f~%gKOtLL=39v5??k?hbc#oYNWEGN$ig#wZISGBNFBoik53B%rJDNTB^@G=mYmMFPT#?$hq~-hDMFz> z68ZQ|rTE|JBGEyB@+manuE2Xt{*y(srm*Kp))dn&yFV=!T|OtVaZKKC?O2E!TK?&` z(;25mPl(I6?(|y((@E`QyqkFZO^?U%ytkabw_I$(3D0*S5`^8l<06`81NT3slO_M!ZR5 z-ioC}$bONtQx&&joPCwwlVAM3FYto#q*ESyqRX?L4EcSv}w;> zwwQ>s?R(Z~d%cpyi(7l&3{v<^#X*9b&pxsP>Uk#KJ1;R%eF5W*w=Fr*+QCk;uj7}L zlE~|&=3))3-+lXj$$|Rs4$h;&e(!f*&Zgf_x6|KUo#Ee|1hOQK>Genvi;lJTMT}MM z#(kh$u21?+KQwHLEW`MY;tzB2(r1`&X1UUjp1tKs!pp;y5>%2mQzq@sbBf#445Khcd1I!Ivw_=wC0i&OffULBhFUPxY9Q#y4JK@ zvkD0y-D^Amn9NEm-n zEWKVY>O2z_bj!E1cl!1KZ9mvp@h@AZO)r0Z=a%M+jfZMvr{gA)aN4XS%rCFs=4IZ} zqVCh`W~{9KzpWjFWG$2?ek>w9CRrkJ;Kw3{i?44ay zXSZh5h52rnTJP)c|6DPWbE1V5CzdyE$yQkEa$VF%Uk?17z(p74mB^K)zV}a!sZ23)*fIXPokH72h-I@p?C?Uyv6X9oz z2&d}Oy$2zt8HLI=q9AZ9&O_Vj?v1Va;m>es-Rj$qt2@D-X6YH4oAenEc#{VD*%nRoF_xrqS6hd?@I#@5SxSBnT69*Qc}y6KEWv&gSl=q1 zdq2HQ%N`B1PJ^Go_G>HYzK;I7rkvK**X2xB%X_Ne7Ifs#IV<{&8lk?%?dauADk_G~ zdw51)Sfmtr&0rNX>P&Js6q3@|I3Jxpo*X@We0Or>wcaWu(^?}DVV7ifXn0{yd-ooW z_wL^}|GzW#I~P_)6ue|#hSHyPML#HwMoVTO2{GqYMPs7AhTk=x*4TSr=x-s zf-8Exps2tIjitWH6`qkhRufc8ujb3FE-Ea1mKDOz2L4)YxBeksupd ze%*J7z>m1mnNoaZwd@s(YzrdV;)rHejmG1<{J}tDnu}>& zNTTkk`~C4<|BDD3cQ@kknAW!kyJU3ia_jBUi#OqB5o-F6q_`Y=5%VF<(6G%i%T>*K zvh103|A|hd`|>7&4Upvaq}uyAB$aCX|Ig5B_lH6(_#RKcO#woa*Oy54FPke+$?9+= zm*<~21V`y)P0q=Zln%0iKNmC=DeirEOMP{WP=?fDE4mOGn^sQOtVU_9AjvGMe38cy zYgt__K`-Bp=`1svMMYA@ub!Qx_jVubvZpeEFHX*Anu$O8_&A-jD>`r6)uX$2udc4f z1*HndRef<+6gt*zn!6UEZHv%HN6_-=RX#}@qSE8L$46g#r4lS*=33n{a=wgP*7d|- z=q#yVcC*=ne1@jQ+9vrQ&6F0twkbC%e}-LUvzg#O=58C?aW2l>1a2@JbWV#_L?*M& zCpMkld!=#>gGQF8z*5L{rysN2Y5<)VCBH+%S=Hh+yICg8&(F!|@{|^a2J9G|s{=q? zHssTVov7a~=&7sIk%ezA8+NOh>pk)Wy@2a$XN87RWB;!UyN;Lao?X!3`0GH1Z?#zH zmKwvQ(VJHnJM^K9FtRBo&G3P=|6xUhZ$4mF83&|RoTcIPGs#R$V zzy$E~uSQSY%B03Z>AbZRmIcG4~UO)gqSD&&sRC_~DJNj+Pol6>Yo2ECv-hM+Sw z`oQ^C=>13`y{AGteZRbSppQ1MXGVJ=Dy(%y^r|L*nwdefj31(NFjGI<=zIfG{IiYX zEk)u(nMT#i*I=0sP_rM(9^X{A@52UuKbt6uS)Q_LKz`+Y&;wtvx7S%e4H2n017Tw) z&Gk}e)OT@-*Vq)kAHJl)M4cC%xSSI6tGsTnf!jsSek4u4SfBS98{zqtu@_%&@_s+c~6#oJUwdbHRTScNAJa5aWCSVM*W-e8J_hgN|=On zG<{<~d@3PbTmeV{U zq7iElLx8O<4EAl=Zb(@bNT+{e*dP>wU0<)9a~k%D1tO!z8kxRXMt?593B_>R*&`MA z1qlpk|E=4-@SKc9`I`Qr5nbQ8<-AibSQ(R!K->~g#5)s6x12kO<3fk1;3N<=utC(> zOyst=Xmfi-A_%|#^oQhO8|DyeeeLwKrfF_H^ZbjQ^^>a3DFMfhz$yHI+s-Wuj#}yh z>nCL?t4d zU>rrVE=|6cbOPE(N5>)fVW~vG+EDXu*Py0+_qAvKLr43=pW|gtOW*m+x~PJQ-u#;U z`7E0jCA~CypO@a(2QU~q;;j_dufr%03HY3j^*qSz5$kd z4+4Et+;!WiWbykudf#fY*-Dw&;JP57HTmg$+D5G3H!zk+8Y4QEv-hL?7w=7V{`~eL zi^W`qO^aVOM|^fAj8jlKCEs8@%>0kVTSjsi`3BQC1WK-R<1HF)&N^)-lVnUe-7HdQ zD3NYuWmBbZm(^7#D$T@uZL^Cz>0;f;3gom}wizu{Q_2v2EG@9)p;XH{pg3fC2+(#} z2xQ`{l9!#yPr~e{Tf+(Gp8HP`!h#T?f!+C8Q;N5xvQa{}WJY=0>c0=-MOsvbAXdu{ z$W(MxDR@P)r82W+(ICPI`&HyAd5PIv)j7?7fi(l9M~SP!E5z9OyB1x{B0SRJjh{^$ z@HM9X{YYoS{M#`=s5Xg)AH)Jfv0<;5pEWsozv(i>8lNum`XXOW--B$lhy_+zFV{^r zDLXv$wG7VJ#QnI;Z=I3NrmW&vhfbhS-{xd37K?mVkds&5LIM12jp781L3x^64rHp$ zVFhLdhu%MTxS!Vbt+UNJ+Wx-+>+fdu^7hWxm9+kU1?Dd*n*02gh%b?sqNPL1Mm5F7 zl6)Jo39TE)&)qQ2mXb3gByP?3h5yda9qLc>$@;dOGeg^L@z>Sm{3dwk{mkNf`bBE6 zoNIA2!u0%&s%kh*H>mezLSJGxZ z`MH*d7x~p~g@IsSRrOo?dDZ;C0rjue)733e|LUugm;Y}-`J}9-Z*Ph76m8S3X&mFp~QEn@ZqEddYIrw=+nUI}ZqFm?X?Ou}AM`FCh zoA7^sj*;K}|1$EoWtRU}B7g7y%gFEle;N7vJ>>sCg#4%fUq=4H&o%P5&0Rf5PU1aR zbdJd=Wle*nILh{8=`^E6fvlWQDB#E`!LZWs^?S6m{SX;=Qlo^ukv5CE@;J;0{Ci0Zr^o>q92apH#H+eB1>## zKDZ^>pXOyjV`wZ_657jFIGR)rX4!t#6w9~c^cyGpn>q2bK^we1%ds{>G$bTuf?o`+ z7&>oMJhJ6=T1|dBC!rLHS**%@As}d)ye0KpkaBz`?EYNn@S6Ii)%37q&iGL7JRhfL zt-)G4Q`FZDXgGdx`bGvofAQ*n2*)5D8#%<@@)vSrc?&4$Bm|Nv;*CGhAu09;szY-E z5NFwe6@)H0TIM=G2NpVnNls!y^G07P+KaKwK54>=vQ7mLJOsR;RpE4j_wsXEEh`8T z>|R=(GjRZn>bz<`NJ|09062Cr9ji)BSTg8$ysjD%;IL~;ok_J` z&Pel-#GmU7)eu;k2k;54>9*t)fEM_6*`Lvkbe@)ZR(~DBZ5UNd)eyVawCeOVItpiq zSf?Vr!6M^1Ip?%0gfXF$u={y-DMn>xn7>IYVHJ2rEGDZ}NkieBVn8rTo4Sl+k=Z-dm8L8I;5jP%28%lLlcGiod;H#^lk(s35e&pyjuhB)vU)YA*#;y}Icw z$tAPLvU(r59;ob+2)KcVR7Ek%OgR6e;-(;2&n&VfWn=3Ub6FB$BH(YYFrVbp3<|ib zAbH*cy`;*{Q+2H3soNEaR>6a+khN;MG6uR?D`xCQrds(It@Aa}SNkS5BHax~8yIvv zw(k*G{Mr11b3cAoqfV5QfeRfU`L3(coIr3^bgNnV# z>KQ4<=JvE^#p08qfE8s40M+3CyUFkv?9?zAnc}Avt;{ZI9jlsB->2^iNNd=Q2<@CS z=sEkpM2#9rL^=k`tZb@p)**i^OHxNKis{=b zJs}%WmXCFvYM|-ow*$3%Nv?L&6Wj4^e5R5ey}D}RYjWL7{s|L86N15PsxY6 zWhi&HEZQO~iy!1jL(noVnSzG=z^QeX-!JR|H*k8Rqg20vknd@Jo~=vvk;LsG;p}#D zOAh)*$b39)d71Ld6$I+GE9Q>iq0~+?2&?)mm4HOB_KlO#xc&51yK#=KHO)Q6!R4NRk9v8C)8 zR?G9^VqFVj8m5xKvNrBQW7SM5_$xN;AC5U8r1$~3us6jN^RcAt1Gy8koIG!&idwj! zM06Rl8dbQ6{aniJ-2zTSia?KTJK*3>&=A%AH#vx#yOC8TPyxEjr2;to} z*?>W8NH4^dPBho>9@&KuYAgi)QF7r&$%P*!7v%Z>c5>ln?a!Zsq6^jb()UM4o=(*G zQ=^N;H*Gt}l0YCJx=k&imP5f%84uqzV`bC(rj5z8T-Rq8OK<{4;wi;;}7ACM0v zl2qu_6TemFs85{RXK4Jn`QV%q`@A81GwnY+sU?q8Kguk9NM`AW>*YSl$^0Ede&M0s zQehoCfpwFugr?O?F<+i&-mJ#Hk+GaEXCE>W>tFav1^hOxu;kn3vmeqpT;u`QWs*(b zZYh_2$*$109~UBgsTKJC1#2X3+s9i;qT@^>rt$E1f98BRFZ6gAg%#zF0H z3d0ZM23=0|Q6%nWPoYPlTlgRR`bS5AWZccr4fz^g$g^AU(c<^VoPJf8x8xVt`LA9* z57xtP%@^Mw#>D0Cfw6>hq|o18r(5F}r*EwLeMfy;I}}6xAMTJuF&a@mp=hjqkKws6 zSQYG40g+x>*EO*bd0cQ2FfbZ!{w|-c`$6%~;`pFJe*(CjlE-o_0(HCbaa&OgkOa~e zG?Q0zS^ZFdlp>OzOM3Ir`11`~N(^zqxzyYANWqch5kpv_7{q^UvhxAo@fJGc#;JID zi>ctni`!BD^BmTo#_+|z@#OxBmN&NFE@_Fzq$1hxVZSk(PV-fN#j>l|ZXsO!`DIqF z^9a*>DBMyZ#UKqZK-~B4t3IPC`orHiSb*Z!IPNdtIxN6!J*#)~gx+FpirlTdKF_B8 zSn-?kBEKf0x8uVzgTB=Qv%D;jow~Km&cODY+GAET2)%$1>dQ=E5`=ZCDc=9vKDW$f4VH$_7iA zSoeovq@Rsz_1UcK7ZbdOVtzNm?`e#V?KM`UYE#e zo7J@L8pwC&vbG4m@H&aPUc;SyQO$BP|3Bc4)EqMnY|;#r>FN^Bp&`M+N z4pBOez&y;jnx*@k*JTmn@LCm_Ac_wcdA9TxXl*ahnVXn{W(|{f0jsHjWp%q%`N(I- z(52`3RhrFa1pra7SFQAy^E|_vqMyvBX8G(<2X0xAAJ$&4$h=L~glIq1M7(x%+|run zTsUbZjL69V4VfJU-k&pGQ_NRP$)UlgFUZi++&#X_y~Z$kLZSM4Wy1JkNqsHY4*)vL z{E9vlWA*-+a4O*`CBvs6;$}3?h&z__o0m_RFlG(hSSAHa&HH0Pk^%|AS2EUS5RlfffN9=58Ki*opc>jv|JPnb&!nUAVx5DVdSU zx~idzB>vDv7%cW1DtDL^IV6i_wS@Ml5O9Sq0%SEK+uk%8>AXTBP1yep#OMsjCygXQ zJLJLgD$^zCTKx#G6XUIsBNujorgN;%QZB`2T1jcWYx|h%ax_!N0K@_uy903_`Znfc zAm4XGUZyWc5FElg$2xh(tBe5XzDaTs;((C>Op}3tIXONBNjH;-+~p-^%P0CK7U8L) zWpVgMaG5KH;9O_;8sI>{T3J&^gToWyZT-4|HRz`8BD)!c>{u>^trri5z< zRz79-gx}10@pn;O3MsP`^HSB2<)v^sQ3*fLg}!l{A$=p}_&8liVAu15jZO23L<$@l z`)=#0xPltd_%QFydPM`fCHhgjHn@CDBbrzB(TigGwn|SjB2)SJu6`JA`Z)#I=~JMW zFK=ji+^mZ9+Z1PAWo33l+o#p~f(#f<6xp%#O-13;4R4&zu842b*NdW!w7fBCc}sQl z<1oOtOkJK)98hE>1u2dC%f*sb?hxSivwOEU1yiEStyj8kpWA$zpJ(f`g`RB4^~E@E z$6sF~LwrkOzs}pA_%20P_^{b}ecg~qkI%jwzaeY*T{t%NZ8Q3>&3fZ6S{J!`MYZaJ zbUQbToJP$ppsJ=&}%GHrQ(;x^2XSuzlGKRUty6m_gy=WTzn z;F}`7{4%_la$CalG^OIJmi~goZ7J^4K>_GeKd2$==|l|ia}j~TW%=Mmly8&Q#KAg~ zL2R~lm0)dSG*d>H&hzQpt_OdPB|G@DV2m^;{~i2yEuQ%nzXCfBSLzOeE$-2N-cSs` zoZacblz5#3ANHaJS-aB11`z7;qYsSN@VZ41IMTnKR23zlmbXD-2S39d6&Fm#t}{dcbS|6%0`-e*n7A(zCJuRn6N5j;OeoOs0(Bm zP=!7qVGjaBxm1qIl((xe-}N<=s_%1g>`K!@3puG>Y;xH$acAkv5Dun}opA1(W~@7S z^0nQXB;(tt`u`y^^5=Q`f^^Q8tcDDSgj{`FHvSx|hBRQa7$vGrBXNTI!HmMGMGJ0l zQfVrd4ZqOE0ECopZ^a33A|N0IK^oK|1w7q^cEsWvlU(%Q2%)8aMX z=myOY(*oZh`A^mI;B%W*ct5H?Sre&2ax5&Hl|bMj%j=fBl=W+;bK^T&GP2;W$~7S1 z?-01o-iMHxIBWiMN@jfaC3&4^=UA(GqKhggSW2O$x1_S<&xE&~A4_g6Tu{w=PZcCJ zVO?j}Z|Fl^ujO^HdVL#$epACYEQS%h*I*@CXziDElHiILya2)rTZK4e-^6OlEvUku z-#(7{f5}MT9GugO)fKvhZ%m8w9qd_rC7C}Vk2>#97KQ$cBkNUvUGwtzF2jkzF1}$V zk9Tz!Bkg_oLw02yV?3*?#g|J~Rq+7r{nYW(Di_b`s;b}e(#m?VGFtazosW;jg0b^M zn9qv~a;QQ$YVP=}2AS}+Svw{hN~9*z5TLAdwotsiysKN@^q^qHTLN&2qOfGjP_`Jp zG_qb;2#wyo;0P2i6DB(nt(#dN29uHrYRo$w6wj6hp()AeD7_-;Ws*yMyR5DvgkbN0 za9Pz@>-ky09=}el}nteTw?<6ay>yq^}=!LFcLbcm00u-}4^t?b@ z_G8Rj(a?h`2#c|7)A4Le!&U{*oNdyZK%3##&E=b5O*j?vYJ)+Sq z+xdu^UU%djx?oxT0TLP>0LncO?bl%NDZjR?S|3=Cmw)#B zgsy9MI|+4qoQaevv@jV|2}opUZYi6$_j@@b3HzAUtx?C(1%6%tJCo5#(x2D$XL*@j z1J%h-6U94oCM1DPZ%E`R2xpG}CfsI|L|xEAN{97m`lnzuB_EAVa7(juaYo=yEzgS! zC=TGZswppAw*@f~ty^^XZbDWCgdeA0kxD4P8RW6{At(aButP-_v%(%6InDVwYn!Hp zL_!dF)XM6dE$@&Z?j*;eo^xJC(s>^w3$iPVY9={lmgp{Xe*;9}LAlAxF0!I;&u=-d z*Le&2v26Ll8+jq+dIpUM?RJ*~IWK-$Vr7j-KT>a(E!C)_F6qPBnsCI3oa+O;o3BBN zAnYbOkWo?0Nh^ds^CW4Ywp_E0LfjzU->qo%v#0<~_T)|BQvL6_WCajB6B2GvoYmZ6 zBWowC%`Pr@`H#Q*I<5*{J!`Pi_R$fiyvdiuI*(dC_Gjs{i7*E8*o~n%OyFv81?l!W z_XCIdiXxddmNf3Ffiv;fWwgB%|1!Ul(LzH~1L|+9o!8a+VxGRv&U3RE*{AZ)0b_kr zLH8?@@WjA-YiJbUb0i>A7;V#5+Tv^Rp6TES@gZb4SWrZ#U^-o|+Zc!_9!D=|7CEMe z1I!`RhqLE5N2Bzt>k^brrR)BTF^@k-J_t4_t1og*4M3xkZ;`{bBhf4M2PVpuc~{rrzs9Trh$NHVnCaoD6CHlIs0-p|et>He z$JKUTKrg^ET95_f2spErg!K^H7s0O^esQdkA-UZ+W>Z_63%vZ2-sY@e!I2?3xgiV= z?il!p5~eMhkpd+TPQyqB^K-2xj4K5Dd`lKOTdYdXkEz~euaxs*`+ zoZ&N_=X86UW*NTwEPvOs`>X$Gd1gO2^~zC^er&2EEPgen|)f@l(y>!4hL(?m3v9nHubXp^wuqC>nsAfbYn@=XD|i{R>}%-<89<5^4W3VJWe^y&m$ws=EWsR_PTD7r6+08tkKu)N+vGO zN35-W(V9X$>iP$HUFkHo-6UK{Bl!EvDWlA}v}L6nF7t23^Rt3+z;3shI=7~VXKF)z@^6Vk+>q3ePv0CZR886DorBs92{;Df_{u^GAyF|C5UIHp240 zLj5B(^Z|I91hl68h&SIqg%SjVwFeO7$uXGcM7-1~AfF zx5#YNW|;DJd%a?`*&&uyA6oSX<6TwtTcl1PJvW88Ar;J!nG7Ca3L)r6USE|m|R^##dM2sJY+cGQ3tWLlz6%8PT; zk{DP*en1J=X2gxEWmr8*_VNE_iS|+!zi&;qaLs(2KDj32c%H4xmMyJaOgEYM3a0m? z@ijf$UwpAWn|;JKI0U<(^%EgVp=;lW`+lgj=q-4?2SrF}z%!DCHTXK`3PW^9u(&eG zS)JDfHC*;&odoL&iJpnG>f}OY%jP^M0L)mFDq*Do3WYCk*#&j1q88KV6%P_2!fjTO zzByVhjUVtHG=wM++KZKl3F)n7PTrE5uY6i9D8P190Y*REF;!Q$9L={WY-y~uBgt1w z*PpPTU5q^+<5qa{EO?Fx3uLwI`u9JpIFl=nPu?S^$Qnr$kd0GWY&b+E(c9hm;>izr z2%Tu;_9LkoV}w^>m^86U_J=u=etdb$k$jtcghjTz<~f+Dfiro6c}BUjNlr4p$jFw` zQrUU-LzRm#&cEf5z-C4$n7tTEI{(E>t}&7s7Nms0{m{qo9@^?QW4PrS$Tv5Jp0{wz!Te-a zVo`NDqiBeITC&_NGU8Y;E3dNahI8W@wKedEAUZ$Pv4wfkTMf%JPgiwyS$oC)R5KHwV9ENe3{q6kgTbJTPNekE~c3|_+@aK zZ>c-@^GmRPguL&KSBOdoa3f+d3?A3{;+Bb-H`!aHHjx8C$7~0TjB*&0W>_Vsb$-M% zq?Nk!WYd>#?4(1NKhqef9=|TI)De6}Y0KU?Zk@FuD;z?as3JI zP6Uc#**i1oLrQf`jxfcK?@o?PLKoWqqOR5}4ASvWr;EwavTEhEIr58b)?XF= z;VY;248;ev5{Kf-B_!VKmQp!(AvZ&IRZ?3lA0bRt3z9YSd7%x3@|)6Ck~LV8#cPd< zx&_W5nj!S}LHYxAS!g6>#kL@ry!23g4Y~P3sN$&}@(HG-t|JPdV9QaXOJpkH@yv>I z%3D(Jg}6QJV&w1y(l+B|t*pyfo?D^ohiA+7(|z1{Q z{pr9uF+L4JHS6>9;vFfpkAANwAC1zFzIgHxX7r=a>1TuRTnS@%mludvwE7F*KSBix z49LjyvQ-XL;7!ol2I@kmN>ntIv><1xF)H_K>3v`4JCm{`otiOa;qP@cYRI9Ae`rwI^?TgpgIfMpg#1}l zksVL*YidXndGe%vjZ86rKBUt&0{@0}(3vFnXyzzYiIGipecb3yiG!{XuZb_OtDhi8 zPYunBi+Qi*t!6y(nOk_KfaZ$kS)6MYC16x*H%+?r{sPbs7=B^d9;Q2YMj;Z#m|`M= zINk*@7FEM*l|-Nse|q1L=ssy>u@$2Qt&*B$jYGL(z<@UwJ>7WXuNQms~1Q&3!o z;e`F!v7z00QPTj`<{=&&9HoAXq4u?SL8;Uwx-&~c6p4MK17kxzTTi=zs?8HkX`J7TYsPGT7I3m0`xI zeO+Hlrx{#Nzn?B#(8sz{Tb1|`+!4JHrspy1`DMPm5wZTOw~PIUqCk#r7PMsJXBCY# zYb5CFr&Nu34FN9JB#h@-gUm@LGhhXt#Ph0Je%xw60y7Gcf@{wW72@xDo3VTy$#rW< zw^gLKlvy^BpouXmG`4kD_YI2O?YaGy{d`mO`nrbac0|K#>Qz_B+mk^t!6!xH`E(6I z{l-ant6n?O^xd4^q1+8A4SC5~oWQ{L)|AY${w=LhY{n@EDSIvHiE6SgJ6n_r%0ngF+Y)M{cF?-)hVB55k`!lKSTY`)_CE`P1zB>)_sA6;oKxS$3UnEs7a_LXXj} zOUh-ocYZF$!?W=<2gDO$M)Pw#gzx70+pj%_D|-3o4D&ClWjp`cs4wvLH-P&sE#DcO zkvGMy(;FOc@-o_aHs!qA8cGyPI_uSnd=tRC3xG)Ea?q_yR_wU?OYpbBFP4paFVpyQ zj_+6KZdDhATtVG&+K0?<+G43=T9S2!ZLZQ)x#sn_MU$78SW#KZ+G~D|EJX-YQD+da zTX$i{n;xOQhAqBja?Eng_(gSfOV0V+@v$SARnBKdM^~e zDfj1gj5U5LX|neeSA8ojurR)$@d$g9ll|VT?WqdROlMfkYS;BL%+uX+I&UP)Ejh76 zmaoN+6F1qDug#AUAm1QA-U7v+MSgs}XjfLl-Hy7isWCZ2X}-P4iV|6GgcZ#ypBCrE z)TULDFKyFmN~3E=X?wk*G^qNWf+-r7Gmx+s@PNNshU6Inn^lhEmmK zamh>51%d`LCOW)X4&o5jAuvpxEC7T87vb$E>+|!xroPN4uixfn-cl}0zTpfA$(`ho z#=x^X51ZsUm_Y*bHqTecpp}yRCNtCyg8Kk$JM<%}6>WD)r`OYxIAX#tj>TXLdc>Ah zeN9^C7p-Y6b-^G=>tx8~HM9sYp=?!2put|qT!nC(7HM&vG9W>Q|9o8{zg6;L4DlF6 zzHR=ly_GCc#F&FaNkpa@ry0AVaJ(j3E?WZ}p+IBvf0XCQYpgE6tm>8nZKi&9N&Lej z(Kz&r*Xj7h>6>(y7S?N8NA8O{7Rjk4t<0R~87W}#A1IHPGf8IYb+t~Hxp+DGvY{5D zuJJiKUUOVeYg4p3Al9JIwmRj=9*}ZiHpzH(Zn7@Oo@5tUK}mxi#^;oW&9AEZEsx&s zHSB^$wls9126Zqi8z_-}x#Z;r&T^8^l(q2Ll#?4`#iF~+xL#&%T8Jj(C^gxI&@3}^ zQWmt}!3a^`D@@Sd{d9}d0%Bk8@JcDUUG!Zf8w}pKg>vaIhz~NI0Ds3Uo8`|J=Wz%% zSl;a>lkowl&j{AdMl3Vm~OM-teY2ej~h2Js_PpUc} zKNmZH3N!z`@87v4@c>PO2iRelcg_9>J^|LDohPaKyT@|_WCmpxIy&(}K4O2p-9BRnZ@{Z3wPvwh{QC>{o#L&(d(N}su|@50dPXUrEq^RdP?}0 z>ltVN@g4g58nn1cqr9nZIcko4$iDD0Da`bum{w)A+$Q}{ED9J**lb=)r;uV*AdFBB z$!0V1iJC}4WMdQ;et5jG&l`LCz`$>F@9#0YVmcZmKi%3gi!&F0RDg} zeDl7rKXB6CyT2dScR z3wq>OVu_YUG~!o6fIhIYqLfkK?`o3&XM<<{UoeUv77sqJBw#wDWszI*;g^%9qBPKL zy^}cUztTWuFvpZWE8Y=XlG{H+N{M``tjoWH(Z=m(+l<9UKR;I!(TVSGHx*#kMKxmq zS2^#*!B>kxQ@6xB5tNGcW3a1V^HzMl>lB<4? z1csNk=^*$4d7G#}bzKFIG9N|@omC$BcZ=n$x@rJyh9;CTO3x)3Y?j|bEZR9`%4egr zIL87YWqT=Ujtt`{)wf8uP2s0rAyqy>W>~Vu!N_{L^@pYS?DXAU<*oIVfm!obq1M|<}l-<=*wTSk4FVU?9|r|F;0v*m^1YO^j| zEkj^K!}>X6nYyUzqP@N)+w>A7D}6tn_qiqC#PSJWx?GYc%x@lP?*F^_Wc&s7#Q)eq zkPeVQrAN;XOj*3%Jl-a~$d`GY>H2d!FPiZE%+Nbr`7^+}k;JA!Qq)i{va-M2d+XIr zO06Iupjb{lYv5~9g!-&=X8OFYtD48%;bM*_C|PrrEm_@~#Zo(F<-cfMP@4I9M&r7@0`+NDD+pR*@y7kacC4T!>KRy@-Y6WTd}zrshx++oX8z_; z|E6Z@&3oJGTh7)`O8UYCc^~9u4Cb-k&nm{W42)AJyM*k^&)#y>*Km$FX>mKMzv$-5 zZl>7J2FBvf-411L+rj$7CfaBhk}n%2!Hf2z4T#lxwJOOe{yCadWJhjCp|fS1Ux=xD z-^u0A<5Z#;Lkw&*H$#h}esV_hF>pjo;$?Fd>1&a3KpDL(rf=7)r$uc(y(QgVQ)8O= zG-n5ioy5$IJE1aFZR+V_clU|X}v83PaxX|c*m(^~sjp3MZfkHG|l3Y8% z+B~AcRWAMJb@2mEU{otsc))XzV7Hchg7-GhR~o+p+cIl9;o~=hc88EezM}2wg6Z|N zBvmru7g^XEMUV6vq*-0P1%n`-%jlB~xopJTC4q)sf?5dSHZ2kyI(I;V?AZCbgcOv< zO(8*P^LJm{Gvv>qz^nS`1?l`UeVUc|_2awx*-*>r+bTWD2(>cO^hOQ;#VzM~{NvDu zx771bHMk>+G~}}5&2L;a-J*|M68@W`5$v1r?3Q`sgwkQO{LP$u3da53_wU@2ihw3o zfH?~ct7_L}LO)Tv~3Jn&zes7RCNq{e2FEf4!ej*(O&uu=jFc4>Cr z<`US3{)$Gb1vy#s?6PC;CV37Iu^p#hk^fSDQ|J>`iex_vrsx)Izlg=x1mwI}Qro5l zk031KaZ`%dtfJm7n;y?{WlNi<8zc;}U=(AElZyaictPSr$YK^hls4H#R`lb_AG%DR zR7*1H?VIY^x-4H(qQ@4k*|#(Sce z89Kq9N`J!|xn0-GhF^&y0isHiudQEn$eI)eUM^H}qYvNdU;z%bZ<9>aq;iOFaztre z$!W8)cO zqdn&wKygW4E7o2hULDeXtt`{6L#8*?Ee8>-oKQHPFN$eZR?BU&G{vGoIt7bS&{s5J z#i~Hat3E(Bn^6L(xqXluOAsG#?DNK+J}~F}fxUlIyn5?-eMaK-b!HY48IHzSphf_H zzzn{5U)UcwXYbwL4}F$iui2ycx)asN>%@j`vGMDL5<}DVHG234Ce8MG`(A(OQ|EF` zUvu(|Gr$Q={=}pL>C@ZJ+wJN4p8ZPz(#)%MIfLKF>_!v{fpVgg5;1UeQ(idEHQ9Nq z6z30p(q4Zp``shm*U3$GyC$ESspe*&l4;>LH@H3TDZxLdxPG86_-a`~X$K3tA2JB% z;?fdB-cN^zy${Ybhuj_TFYD^EK)0IOGJk7G`HR++d8B@I0XOVuz&Dhre5R?gNlqbf zQE|#%eMhlm;kzMZ6FdgXPCxfzXqFUpY5sOn_|32SZ~+# z8m&Yp@ZwRHwv5vDIq3z;+Fhqt87)`p3S7n{nNo^rg6z(+Ani);b%gs8BT3(!yu5q% zQinXfWl)=6xb+PbC=@8}R@~hwQi^Ml;u55IA-EHYdvSNCSg;lk?ykYz-5v7sKj%E} z%>I;*nYm|QdtGa--;_zBaa*lUg_U&>iuPXuMj2TJ>MK(R^6N?+`(KMPmUdc88<|l6 zE!Xlzr!%8wq_Pj;Q~18lds_F))!bL!J4g>AAXwMv2&BDB#3$gG*Wd)C#I(cLg4*z7 zdDQXh^W~2kH&;o?BMh=EE?0&Iyi*sJaBpF*wp0QWH?Y5vp9HpEV70R`IXkm483z}C zQ$$T4{WCvA*Gnq*i1lmASUU&3&#r1zmK9el3-BX0LTNu48gj>Gk1*vQ!viZwa_ud+ z*vmxDG&HI<%usv^)-_feh)QLxpBLLN#{}HHo=f;>;JPbv9J)DAE84~~3_`S;4V-gm zZM3ff`uc5{%N*ZN{Mt9b|A7+si6QU!{Kk$!s2RPw=aGypd4|ak!;)kGx^PK7u{2I` zptp|Jb#=UR;B;G?FVGLbQ{1wddS2NLKF;!_k}CSN^|3^E+CbcW`)U1rrs>VWk%L4j z;uo5V_PC@fG3aXms34@}15_<>i~~$azA0{>JgCk92U7&bW~1YUL8Hmbf*B1NWxzeU2aX>swIK;KZ?Wx# z;B0))weJIVC|M=&T@ml%*0$a0cyNA5RjX5WsXa5UIQE5O46@+BCA4#n_1DF z+y_%tS2P)^?79A}m{WeJYZ&sY8^=|ZLAYkqM0gW9S6A(PvpG;H8r{y%{2IpkZ3X%6I!+iD0_U*AZr`G=n;lU$ga?*_}WubaCwj zcae-NP8ojYrWNnYlvb~$gJMXS>Q}gg&0wf5M|fSdQ(%Q}G-@(bT-a%%PWOjXyW?Y9 ze$Sctt0YaH%U&r8%jK$zkGSyM@(!kdVqy*+Q_bxLk<78?YAl+sK0=nNf`1B@aIwJE z%sJ1mw{TCh_5?W z*9qTHW)*yscOTGn&L(dJq(?I(^J3H2#z^p6?*;(vgW=HBtPej_d*2L#(S@MOPH#*c z*=}+|OyAKlNcblOo&u;Ay-z(Ou^ROYktxB~g90I(7z%7XMH6@APQypG?I$esAIsOB zr9asI3?|)}%MA+MnLXF_8l4fhAz7RzkGN8Ekuj?7u}qa66YCW0Win~`{Jw11u3!2F z69^sdoxZ8no8SU_6$^ok1MSsDBS=mB+uWH*Sa9q!*n9Ne5tYgr?MFHj{Ij z^4Taps4AK}uF$K{?r-)3={}RTAZMjCw6r!3BXQrju{Y-fp_M>cR7+1QogFO<^;2Ez zXhg05Ezi5j;4CbcNbOK760__9%M$K5A|@AhZnvX8R+_kB{-BH0*{)>9;JD|;cWdm3 z?E_1m(m%QpxyF4)o}KerQ33YS-F;sFSf2+GBB|(-7Lw8}jp0+=^@8 zU6u2~L4OTL{ z*wy*Kn5>+^W?jX5;1noJG9Q6*Bd+5sK8p{Sax0XdBU*xHZ34sU`B|70eYSWWJoTZc z8T6k0#Rm8%WE5%odswVMAub41=dg>tKJ)qG?3aHk!q&c26n@nl4?Bf_hFW)0U-m%7 zJA|KS846ST#s>x8@|txXOA8i(w7cbr(B8QftwE6T9b>8trd^s+B)sp<2JT&*Xb;e4 zEN6vxFLJG2hxJld;&*SI)5-`?sMm70=$Z@|cNfRT*YCdphHq&_)>Yb8fay1|;4p++ zwIHwxaUmn`$#!5xOklPm(|_Gt_Fr=9J=v@OOdo&!M)^T`K+RL$5Zp0yjS`djuR$@h z|JZZ5PeV)A>8=0uDGFP$2HDvRJ3fud9$rBxwSp)8VDgPEo~bCM&bh}cF?#wV+2}id zCDEAf(jqZ)9Gl30Smhv9GgIQm4u}2bZn(&4T3#}mdZvP~R_5UBEO||lF1f-ntB?$R zuIDetJQ_!gRa`i7>-N|Ex695O%8dxoMC;X8;eYO+`$4EH(q-OS3ODA$>U8KSbO z26xyJSn##mhy9{+-uCJocI(+y6|<}PL~zfE?%7@xsa9qTKjV~cj5Fx)?kZlL3K;h{H0p6@hu)E@>{`A?HhfQ)!K! z`4UQ~Y}gMZqAOg<5MGadZz|7YBdfDnOX2!eDr=V`QGf3U{c{bojhDf0dzmvbEcbO{r+>DXDbSACc6^r9EJ58#>hN-(WGavb?#k^*=5 z9{_vD*h$$76Q-bdwtFhv=Id~H278YODau?Pm}Dnw4le+l2dzW|2BOP9xfb6iqti{Q zY7hIqd+CL1e;)|{9uVxuDYiD_(vPnr@b$h))99so{h#Sg9Zqv^(%fzp#5&lVAdU92 zB`)CI&>$K*anF--*Eq?yTP%-wH3C%-KqLNiuDmPv4ZAhM&P%uLsI=DQu3_w%I_Dtz zIU>5B=+=}V{%=&o8#$(5y(-68!NNU;j;;p=8j`L%!dY%mLC12;uU`p zl&ETE4Wkc2kHqWbGxS~Y&loW(VE2*yC_K=%-U~5_mQpOS1UUVBTH^hsu2mUHXI?PQ z1PJ@ikQW|SP!eyISEQFxTlL*RDu4UJ>ypnATyk+y&&JMl!Is0n?jbnQsm3kR)bEK)yc_?+7p!9c4=6njBYavF<)d;tN*>zmM%M&L6SK?$-kv|o z5?&aB>W^fs66Ky@HB-`jfwSdQ4CQ*sRpuzX>;*iT!q3fhFUlj44_p6U3&aIdQBS^T zFZN;%9G7Y3GPZk)iUvh7^8_ZAj=^7(FV|{WK4Ob9ecR#Zf$=2cAB7ht7uja-qmumBQWzxCACTzrJ+<=;GGue!yI> zi-zm}cE!)4K+;c_oK;=~S|V+~U95+i``uja1(-E>X?R$Go`l&QgECg01!dhPwpY4j z`OYG8Y)*I`r$}DadZV^<&Gx|YhBiYza;Md8A zijA-FI=j7I$ZH}jQaqI6Q>if6Txv$6_w{J`ESS#ZtSAw5OLrVv-me@Zz8CaTJYT<8 z{6zK$QFQ6qY_hj!b{C8Su!ex;60D6Xutw&ff z?sbh+M#hs?$^Q*?;_clqtH>#8*VgycYKmOTcZ52=eWKd~MZ~+GG}TpPM!NhyOZydz z{fev3lEd<GhRb7nw#m&** zRr7Q8ub3w5w?GmpJKZL;ub901pPII3?WNQwm$9za<${=2TLwVKU)ic zYRp5%5a(0M@rSi+*9TXs6y-jXU~}ES6KIo0?Z~q6p;cvx7r3VrkaCGrtN*wH0U}7c z24>WVPe0Y|bGuh)VgYczcBdNq)N5tOv756M=H8liBL;nj)Q02;y)D95u9_NN+4qag zT6%ZsJEMuMSgBN6uUp^yN+VrH#&lryXV+bo>D()`2#Po!up`R?;Ez=bq-I6^hAowX zj-Hc?8T@k20%p72KpvK6Ijie~C!5KotDdbvHOud+yqeWEM7ns_+K4T-9d9NWubG$| zvgsJ^v9I~ZF7WL+FF~>Fg%scF4whA|RczWnA(vGpQwd%rH{>q5T4xoN<=TtBlT@g$ zEU!H%Uz!NlKEO7hHC&gU9A?Lq4if_T_nP3)8oD)|aw0Wy^-%9m3j`y3K7XVnQ?vnK zGTbd>9N|}^aiMVi{1YxQ#FL$*z(4aN%M7WDvp#Qb!4s$}mP+v$_`UJ$o3X@s+j}#V zWh7|E(nrkHBI%;S+&5CQMYc&L*Y=41LH>Xxc~y^-S+FK_kp3eQ8^OX~JJgcqZiec> z9`)`I+sV!G;_g&XOqT6K>-B-{S5_O7m?XbjzKiJQGcCP}&oIiu=`M;jK&X#l+wRjE z3_N8AU}01T)JR@sE7WHq6?r6(Na-E4h1wO<^c22-3Y^L9=WbBr6IT!ZS8^9!Xv#Cv zRHDx;C9a!MH2gdyt&-8`8%Rw*7r%Z(3XT4@BAh%J>$`IBgp6tzP!DCRwQ0c6B424Y zsde984ACIck}6npihn*QgeiplfZKh~ASbd}?b9-&!kJz*_T1Hp7N@*b!xDu_JuOq&by6Qalx2bzu1d5?xZ9sVtTb*-nga-}m?!*vuQ! z?OhGO1Q#L!a%D%h$u{I(oj4udB&=i-^i{4h$Vx)S(D|8)#xGB#gpxS@fjmXVF2lDw z{)OIee=o6L_;nb%&A&B&zpB;Ga6xdXvGJ_#hY;gnlh569?Ozv0bjep&o&g3^{t z>)@NM3~ay?r{(F>AWa1jGlugRw4UF5)Qq)D?mLcQA9y6-H3rOB)hB|sl#Vd+cMXQB z-`~!ms~qPp^scchw&#>AIiHWV<`D9YX6Z|n3YL7_)PDAzKf#n(^sq)Ei=B9e_^%k>>KSKlNX~SR~w9rx~+8S{YS}&O>D-F z;L5-g^(t0ejB=<;JRkcoZouH%tI@cFqokVSdU~+IE}RQQz>Os?(A8aTu=>mM56cny zV{2}bnIr7nb(z?Vu4*G2Gq$p?-^~A>3zFZvu$s>NPF9@g`mGJpd91;NqF28==a!?+LC*cRr|_341>xFqMP5wRY`xnO@$ZOWURA*jY43f28o$AiMJ? zfCIPm@+y6wPl&fy9fXCMw{s=GJf>H_KirFdN~(DakBQSrI{y;^Ly)yYy?B32fzJZ& zX>l08sFenxS`H8Fa&PsXp*Z_^bZza0T!gA`_?jxHXK?o?T5;&msjfC8eVcs^H6Gw# zyo!QUCjVaODF_qBzADRf6&W+}k7~w0du-n;Q zjq8|*ZEqAas;qt%7+c#pJiEAGIQl@vR_^5=%rgG15QZIlwwth8K74(DGkg&_EdYA@ z+>rn6mAzY7I!J0yQ&&qnmd9@EJ&|E(vG_T5vDH9BgtDo>)DZp)cVF zR+b6$7=C_ji*d19`r2WqdRp+dfuEN6Ef`knf)*!~Fi3Ta<`Gju45;8POfFY74rhCJ z!4%n$es?@-62;SoN^5?lmM$>;GihAxDU4g^B}%=6DT~AJ*m2it`sFtyb9AcV;l@%e ze~_BTuSD{UZRCY$=MH%zu%|n{E`$YDs{&4p-&iVvH*Wc(Tm za;Dt90Tt932zs030JL@5JF%omU<0sIrpX+ZKQOPUSDN-EG4acml`ER|j2y~`74bJ5 z*^-XkxXJzE*u%KEduI?T+-<>^jXe?7`(1+&7{_~*{^14pIyYh1!jMm$=Dz@81;SYz z?wLl8jRK{;!oh==F{$ZA$1KS&rndijg+$Om*yy4(0V+$Y0oRpMhH$WfEKJ#Z7^%A$ zH#>m}NlGn^i6vp1ZwB6n;OE}Wc&Ml(rhV2Oo`mg} zno}#5KzdYF4Zkx&I#Qstq$xsl2O~!t^%!N2()k4_rrYGI8D~YYzlW)9-)i;a?LLn| zv^KTI(mmL+ydoqXImxB11UK1gZB701nFlYLsjzn)BGm&z7Dwy#c34ve*z&AV##^=7 zN)qGq7X*N-5q2~=zP)OOzqa3xIiSEI)VpW(@R;lI6IsiXN7a|$k7$da{)lA_)2foD z8I`Cq|JSpg@H07uj;?jP+hcnCs#!T_PI`5FSZ?}`5IXh?24krbj}LCkw%}uBtw+T+m9d4X`@Tj=JV7?deJq+>HQN^)#|4jDmMFb+{}$j z9IFofLFx=koDKo0MqY985~^P#!)2QM zt*;>t>U6ht?3uLuXMY;m_yHMyLL%sbbF4qV9>tvu&!s=Xuv%n)RZXa|@=OknFGnEo z_BZH4eXHW=LdTD-6E$y=z3XZjR5Zd8{=QU2DySyLN#>)B#wKHKm!p6>~W-Hhb>tMjkv9H2SwRG2VT?kSP^V*pW@mtDei z5)*#>!xSc8?Pp=yR7ORUYQYN_5?z06Nvhk+`*3VoYp&DFfRV2EjX;YUu7J0```P6vRf4HFnBSIlOO{&nyuu5p={nn< zjya0t(?W(AGyt;O15%u9(m$lQpq^CTOrTh3vK#%uxjVv6))}L|udA@kj(Z7;dF-AN z2>J@qsc9L+Htm<-9Ye{_R!?~)s)6}2$LGuvw~f~O;+D6PudGc2NeQba%)TWp+jxm5 z-irR3(n;3iq79@7zU);uH45J;qH^BD1S+(bMZyRNt&%}EhsU-`i!jO`m$&c@KFnmU zEJJ?T4H#3H7$Ajb?cII8%CYyG2ie4AsYrVC0Qaph0RT9ZsPxVuG}eM|(UkVeaKK7n z%RgN5I^>===>D~;PiKyS=(zGSuKqFAQWIm_@FE}5AKZ~ zXy~n*qWrKp?z&%@6Qg&sBDx&Y z=Bmsg1urFhIz}yGM!drqm}ksqC>=Ip&u$syCAysa_q`FHqyOLuLlIx@532r9oS&oe znqx#}vu=oQLa*(IAhp*pPJ^Mm|5A}Ab2R>r)Zw7~Z9%`381e}tl^}hZDQ_bsMx!Q* z@u8`|u;%ZNaVp-JJ+#puC*)4c+UBm&E+2@LX`}%g8XR?pHcX{eNKlWXIyfV!B+%;VvwM+!lt1Z*D9h&-@}~w z@Rg7mTCS3=!*8r%~oj1a^}jY1xN?t0g5aX?r|f!_=a#T-rTcZB29ts}a~f)LGLuF_r)B2uSTW5J&D31XOnVOtvO%}9)~ibYQLAFp@r+{x5Y*iv&s;BB3+11K zD4%NjkqI|6d(R8%+l-pTf#Z!dJbf`!_Us4!a?Ze>of^nu_hc;FHj~mmQf=!5U0c;= zHTnlf(~Tuvz;?@YMGmapIQ-4B>;dkD{NG06Q)p!E2-pLgzo6HH=2M30Q%0P>qNmo~QGt6ZZ(V7}K7cACPw(!%8V^CC3StaS%Bw&*Cj6+#aZzVkPVFq+Y z=84zV@`A9D{hl9p{xith-+hH%D{i&fltn&`n(zwk^gyBoGm+|G=~>;*>g=>|4H8EE zf66uDlv)J-zS`LJGoy1j*P1^$>?2P=3I1s#169<$ zg%8b}AdJcU0WC#7X{?@lyD6RrJ3R|AoSh$1Eqc#4wp3|8(v-CHh%Co3>-FJol)PazU2x7ld(L4Evdra!rdKUn~JsNMGWX*TgJgfHi8~1#_ zyNXar90krf>9Fs87dH+WKA_I%=&Q{kaonqh2gX?HSjuI<%1%Lm{(#4cfni%)S0gc%s{x zuvJK${>sXh5TS5xd4pCUK*zN%qfn;+f7F_O)BVBrRouk|U^x`C)&K?fVz;?AQOH)` zw%`jOmOJvRa#LOXdN0CxQS+ChJOBvy;D2P%aI%}6@HndE?;%0SiE%9O!aCAxw+_<4 zb;^K#n_*l0uFL^r=lcy2W=-$*Sei%_#sF_ZszRD~$ybhZgNNIfDz2mSyNEQ5!E9?bt zkWDB}yxp*QQ>OSVdXv5w_UJemj@tfd3cY?W>OI9h8}U*M9lCK%nU>J!Y4#PI1}s^S z!}p86&;x_-DjfVr;rDU??W*poO%~OL?UWoO`s!9YqK&s{!lrh0za-L(ZNpTC^raxPj|*pc|~ zi?^>vC%fe>hV!Ds2>WNd+8%*1$U{%+eqQdw-$uDlIZ8`P+9ISUo$S%NO7G7}2$E{5 z^6k09*Ag>*J{7(7kvqb;tGc{s$X&ReC^nx0UXfczU;xHp(v|QfP|Fk!?HVK*86#icynhc}`*_$!gAKe0H6e*3fqPP$D z;cTSJDzRq&$*0xuKg3Z#{qIqg-jy9BfM`)Z9zhItOL z+$~uNJJuQrJdMojCLE6#u@c_>`XL)$~x;>*wooj_bSl5(8L= zk4DC>rFRw3j9+FAPtqrMvg?T5sqZ*gl<6Sf?O=}V#<@?l!8j2Nrtr!Iv3sg492^f{ z@YDuc4qqMGo~xG{e4V?0ghYI!_D8@AR!DW=U;a5-r`v-NC?qE0|4@ucxKg`N)Jv-% zg+KDTbzSi$nJ}Sr#@4Cs68lEpkn;3yT1bgTdTNddf83}h@`(j=u^JFDXiXju9rWZt zQ_V;Me*an;8r+k#aP_+Gy}7UnE;@C5W!Gki?H}J2397F+l-5EXqj`z>Sd{zn0H>c1gd?kNu z==}S%Z{xE&znB$0KMBk1+wFY%6lg82P5{=r@mm)y z3NOZ=e!XTSa77)-`nQ7a3%RkN3cjp9ogWQs#2`EX=Y5~OCSNf} z?Vi&I1Axo6&z@QC`({%a33umVuYSqEMvOi0nnkFJ!t;dGDU2^JeJ~PkKGZ@6MC%R9 z8GFkSSguL$Z=2tVeL9#NKdafY?lntfFQXG|a0F0ir>a{yNu0UUdkN7Ph00q|^Jryu zd+ri$ppA#+PV?tC*;5%K+{->h0+pzd`^>w5<_KM5h!R}WMHP>nRE=LgxdlfE~rn zIE6O`z1TQA+Gg2@&d(U`dKSu8uA!GvaBL{r5w&A+=j)T7Qmd*EPDn37@8v&q!Z$~& znJ1baQ^4DEw5sK`dApS7$;^E4Q}J+!-y;1_Lb6`zQ-`(FXDw+4n*cKKw@x%oP;TDg zZwZ`wKFjsL{_pXV=oh2eDBxIA>{a)EhJ7#GvbE7ARPgcg12&wJP$Uf5MSnzV! z*7nf0vQmo;*V_C^V>NX7xl7%$i_}s9CtX!NWI;}QZpfzrWL6A6vr7J;*!t15UPgvl zMux;iPD{3$4qsCBO3@0BAB@h0=$wRa*Ikt+TWJYMVdw*vhT5!vBxG8wQmd}vG49Fc z9FkLd&5iDq$YnZokhj)*hkklyWrL5BQ=Ea~Sv5k(SWM-%Uy+B^YZng&Fyg;_CM5qW z3Bc}@2Xy*jHJcM|Yrp(d2lE_wrd6hc#!fP(kk;^a8>Z3M2XsN%ap#2#`Fdv7_Xb2E ze9{t>IT~8wrDCIzib~<)!Bm{)T;WVgL7N9@`lV^4gU;TT1&Y~FJFSLi)Vy0G_5ozj9X;qEMA5B$`^ z$++DnacXrm1k{c^G0zphr}rA}$V&Rt6UY?0eqZq~1m(=C)!a1g{HkEO+qLZ=#%l2* zWjN}a^z}Wt+tPS^wA4S!QuE5qUGB$>HB?A>z;BXxGiQ~|X~Yz_tU9xD4qeQ2z+(7z z#`&zgtsGn1K5{B-bE~gW-j?ZhJT|cOaRB@y))$+E-juo-QxkiY# zQ|bAUBiom`ifaD$#sp^G*YLBaNzpW{JDkv$bIfJ_Voc`Q=fyY)>K0N<3CF4DLcDlE z#K@fyPrVT$HnuPpG_i9gh_B^U%lagRg_r^Rc5zcq))D%k*A9b`Yrw+(z}m-V0PN<; z7ODJd<5YxeTCnVSpPXS#9qyp|bPZ;w_-XAU{7V1jp{(ukcPEQe8IwTO;!5XABMl2Y&^%lJM}9T}mO=4DggzPlZ@$^mUNjPUF5iuEEVtQskMc+9 z%_-c1uTg8Qw5305PjR32{Nk;BlL5RHO(7+St*|d&z3|RMNM1REAOl(~r6KaGM*a*U z;+W384+Y@5TasIKE{-*Y*L=Kz>Hn4tf4CJMN3cGxke?OSMY!M~;bhu^50m>Q=A_5u ziJT_GE{0UF4C0L#tu^D)mFLPPZRCe4Qp_*3zRK&Jc`!5Oh=tc6;B@`uQjP|lI1H_s zN18Ih#UlE)JFv{5dMVD?qiy*n@08*5;OYTw=yEiT5g!-T;OLrW!mXX{eKrLz>S~K*_ulAyqjn%SaMl5MgQ}xS?Dl(F_39dA= zYf|_WA|2gV0#~#R`;&WFj$HYU)2)7(UKZ^S1r*18wNjR0u}aZxdR@?ue{BA+?;5#( z+~)eRza9`t4EgQl_;F+H|SgCr9nu7@0S>}i`7UYg`D+I z*VOHd$J32rMwX%1mulk>J7~{ zUGAYKPo$M)BeZvd8!Pd>K(pnR{ikGSxt54ic*~HO6J&mdB*jNAX{!n4~;pd>ZoSOY5CaCZuO#IJB ziAl;@Zr-YMi7wc9;EP)KnT)Pf z?SA0G8qsG8Z(m6k;63>0^({Mj{VH5I=*5 z(&+mx%cqKTAiq&y6 z>6kKj$CmYOp=y;hlmmK_vInl+k$#m(oj1S7G;g1mg9w?lx3#!`CjW8{f!uMoUf=M2 z4^_-DC15lcZjmniiFkUH3&Uu9>ydI79QplDh;>IT0n}B>I|-~0GZVqZ4Km~vT5piZ zL~Pz8mY#Jhs@dXM71nlN?lGn9ol~|wiWB}x_(m*Cf7W}(Fr-eSIN-Ijt+RuoZ)`v{ z4aA4@Z$TT4aaG`U)@we*!AY(tsCQpVftzl4OK_?03zyHkfZL5AbluwFe`0~FBk2bz zL5ls2p;*y>1hRLUJJk(kCs)&Pd+CTx`$!2+#>Pa4JZb)Vh4N54h-LoS(Uhyr1$=HA z%~`W*1|EsI2tL|AVysM1&GC#+M7M<&J}vM+NY?q8tsb}u+c170G9o)6&d_Hp($~Lh zq(2J9&Lem-LBz`M5+?bM^h~PiDBc1=bib%OQY_6UCZHTYU?69?RP;HF9YvWMk~K_F{=nHvseNI_df|?2g@P zEgc_X;3iMY&49L~-;j4;H@kyY2Zym~fQ7ch7l+uI$Ztl!B(lqw=Wd^(VH{*lX_s=z_(D##k!xtvwT@&oey16 z|0D41X*@j+*vcv@V>En#r&JAzfBP2r?#{qrr}oFtCIseY^D@yj@QX~@LK_Z!@dBCKjv&r z0tv2)?KrzgJNZ)z2(&%bI`P#DhB&FZD)X$R_{wMazE}u_^ZTuhI#8i@agIyj@{%i^ z=G`L|M!)RJB~MMtHpXIL`893EPMG8M|68$kIqbb{SV)M?t~j{&WJvir9$-Z zE7vrvv>Cgr3Hb&ta~0~=7r@?F3OQH-Qs%bbU)_yjxkz3K5?Waxb~DxO^lECp84FMj z5OSZ4m;yiY|8E)zd*JzK{RebZEb0td=6n>@i`OBFwP8i;Rp|V_+1k9^*zn&F`x|lk z??&NB)K`}fKE%Z9fNaL{!xOKYzcmzNxNBNMF8B-3&aOu~IVu;^q-uc_P-^_|Pll?7 zyRL>K7Tf=nmAY<(Ys1b+y@=#6i_FY?{pDpb)4)-p6e>*%*3Cu5#Gl^SZxxpVc(WqI zA`1z!)Kb=EK zN;bZ=2-et_BgJ8!F8pBaT^C46qzWOXrexkOAFI;ggTb6nYkc%!iys4}P7iTQhP zUaBFsNg`S266uqk$M7yCq)DisH{}4TOEyDPXPT2^?T$OdvJE-0C~-JH+vC3X*wr^f zo0<*Rg7jV&Z}aya)0onmgq#>dvxGr5a~ixmcmkO+6E{bUtxKV;awsey^1^j>S)J_n zj4lN4!rfMX;0?cl)Z)nY*<4%S-gYT9FJHKVR#S?W`oj(BE>|VYIFzCWSCl_K+HJNk zb^To^vMP0tyjbPM6#wwdc#ih8FYOQbe2TX5k>lg?Z!m;@aKP|7i`JGEILpMgfV*J< z-4y3FRHNhDm*B6*Uy(c%6E!NPt(>9qLlQ>>41dTf3`6;fG85P^P^G)c^-I?gq=L4o zs4RtBaM_}Agg>0oTPoSLRr@ChkFttMSi`Qq_M=HOJnmRo>m$XxKD?+MQT(3D)Gf=k zn-@RXidVii)hllzXOTZ;+~dh-d-?na-uI<#O;2$#k9CIyeb~;rSZ}POoJ~`vGWrJO zo;F98^Mw(mSWU`NSy}K^GI{@jnm*W>_We17UY*{E7K>7zc+Qx|^T5?>+};b#_-6~J zKJm*|zim(0|NH3)W}fZN8V$pEm=qL{hi9@sh>j+0n=ZHW}{_ChG9`En1+Ij%qK=yLP)`7GK2Hhxg#V)iK z{{O!XR3eh=n(6OwPkH_DUyvyX+-Z!4Z_!!e%VE&ncDDYYQTUjTZ)`SxM*D^&Ks?>&{5}`Di1tf8{5= z&e^FEhz}Il<2*Ga+8>l&eH`I0yk)E`mG;%Nl8I=CSLCW3tIKbl4TCU&S!7Bv9O>(h zFskO)5r1mm+=hS!5SO|Z00nC~J7IUj=Guc{G@PH?Xw`wf33><8vtNrzcED(+FJynX zQybq({*=E@?Db?PEaTQ-PH8!=OdV|n-VCz*DEm>Ey&=+eQt>k#ms9OG08*9c>pUVU z^YGKtNVH(Ps2FHp^PTDT^zK@8Xzl7BYmd>FPzgb0bb-2Z=p!*fg29up$d6V0k4{I4 zA%3;sI5Z#eBStlanpXWv{ZX4(zI5#!Rt22V0e7gKELs1wfxwlGGMHayD6pU~nN7#{ z)1TZsXHYQx$;)}t%=jnB>sQr%AuHC4?v7{QXl3ng{i=JC&KCiOPzz!z97r$X1;4_} zKOF0p)4`&OUwDO-hrt!1Z_T#Usgpp}kJbl8qY-q?&%$WzCZVfd!?Ufq=&2RWoTnDi zvY~|{hkY*~ZXD;#6Xq#_-uebdP5a@2wN~3}SFdN?4#vp)?sys(ChG0E z&=I{g1ywFvkT}{@x0aH0X<)B+h{L3u13k%Fl$oIM6SgG`OHjY=9Spes6O|bzKC;jO zlYM@UzPb{?WnB3!-o!@l9De^@C8@sYKm_KiH>FmSN#n`XkUM-1Ld6uINRh{7$7p|&a^znxGk zj&mQmU&f|YL^WdM{fF3DtvR_MkE_EGYT({%CDQio@?(PW?JmqPu$hkLd~YHB%gp}) zjRq||b;Tg%l#uu1BBblY3InPXm8oI{WURfI4L|a>t`WfIMVynP3AZ;FPxglO4^Jlj z9Fon7QykaA)FKLu6>}%!^!ejMt~`F?Qj>bAmt-6zd)Is8^bri^v#ktl_WoA{IOy8*Wm?OaD-`0_LH8*npzg`zZ3qI=KK3d;x#}uaGzv;b|nk2Jc@JjN#Igx+e z`ck@%;xDT(!DuZsZj;8UN5NFgX4!D??Q-zY=3n;iig{lS2F

iwJn>nkgB2wF9lu z7WcMza3iBP3}<0PM~Zm-Gx!sM$!$%eM=-&fsiI|4pJ6Aw1b&Kp&hB9ZlZ}wpe?gkv zvFO#m<8L~_aj_Bp$#R}chOwpz(&i)`od~fT78t8(?C8yP0ct1p;mfKz^70^N-Jg0W z2Z|hyLi*(FIReGsUwJCRKP?ajFI_$>dg&7m2O)-ZFYo(7F3(PgPh4Lm(KucK-HtFn zv+5i`-O5d9HvSpPU+srCU;-_6L*`-~-RQh0e-huk&6{{OFj@bVEp~wX{qoY-;mKZy z>*xx8;lC1Mg3bGHO8;`ru&nWL>sIw$y1pt0)-ULz(xsbPKra@b4Q;h@d0fAWpOOSK zN)n~G`dIjR>kWeS+h*`h`qRqpl&Ph}p4jmWIVpQhHFwce=&291bS^t%elmJWJK=OO zCU@Qs78%5O%RuYQ-F%P6hi&4M7%mlnO*7s*=FdqNic4r=aJJ+pd!w1^E_HW@ z3?4;GF`PCri2BNm2Osr-Q;Z?Lvbm?riPj%>qHwrQcwC<8#x;SoT}b=@;n5-P_{Fv& zmGyDp-ppF5*m1QzU&WF&t`}-@Zkhh?BMzpiK$^Y)Syq-~A6x0Esv~pfpoMBIYx9!P zL;oBi!KJn3U zPuE?yRuNna%wcrAn4-$pu`!_+iBN1v4%3Z7%}Ys}3T=O6J42q6k0&P2dmfvQCk4&j zZ0#FQq#&qCW_3pX=NSJVPv;mNclW*hG`5Y#X>2!*+1OTNPQ%8wIkDN;w%XXnq_M3D zpSgekwVt)ktFva_e$T%4-q+`PL_O^v$BBhq^Bj~L*&#*Yypyu34}#jyF37BR(?D!3 zbi?J?AzMUf;0~gtbh20PbYF^LSPsdS-M7|Qq!uqOpix1bCH}syCQilSYGgHJdlW?% z&_UJG*zLBh*-$)~+furrYwCMW5h>D}GjNmTH?NEMPtV$W_fL1b(SE`F1L-Y*^y{pb z@mDId&s_W)=jxob{{)n480OK!i!Y+DST-y(vX>oreP4?8*sK;_ZG=nq zaO)YQ>EG`rd{SEOGMs`J*dy&`M=^F@;8o@$gWw(pFs0*&OVLo^D+RZmv;M~KD`4&# zlL_zKqqs@FY{DCHyRz$bLg%lG)?;5|k&w1#vQbELzuUCu*0)fcQx4gjq7rqa;g%Oe zxJf#n{e6CU6-Re_uwk}fVCZ|yhWqX@FIWkpwT~;EUTy63%;Xr9@FaoWz!xoit~^Qx zhjub`dBd1i!K8qzZjgjDO8s7Rg-vx=4d!`JLqUk-J|8SNa85yD2g}+o_RuW}CV6u1 zr}sOhAP*TY(kfzyzb^+tB)@Nnw#D|4p(Z2X zhpYnRSR0*l9yJ!KDMpNZ^V*TU>TmBQN*^kHG1J=OJHjzmV= zq2{zfdhz363E&rOcI6w-Kp&{E8dr|rS^7%H-f~_E-zfvHT@+FpoB!6=-_6N_>Qem8 zobIdV{>`!YrOB>{MIpoL3mWb$Q#t~!d4zelyK>X?TUmCg^J!shfuKS`enk1`O? zQu=$eJx)%%d@vE_mhHN4D4|HCrBDFoAnOIZ96O3L$FXMwe`xdMJRIA0T3Y@+;JCk{ z6%mQ2wbMFiTfq?qy_fz5ps2O2E}L(UaGp-%CkuHi(-E=x`TtpN-Ak`MPdeQO90Zeu zugZmO2u+Y9z^uIfrIQ5Ya8T-&6%XL@8r@@;A@_c^u@~~^a(Z$xc6q^hYEHG&DD$iP z{zi#)oRyUO*ZI-1<;2wU>lSzo8#kv!zhS}~ya7U_646J0f@mT}Gg~?8!PZXN6I^iS3Dh<-9D!|Wh9qId6DbYJ_BqN=POVfTXXCm3jXK@zuO;}S01iaad*H{G62Ct7M`;IsCbpe97BfPJt2 z(>x=8!^cnOe?*X|t*hrIsNHhXiY*XzRuna-b;9IKo3+_ZI1y4PJ1S7oA>)}e8`1Z} zCHfFD3!c)frX1a(N&ndn3ODTNMMpU**@gyG3d}W(%TCj_n$@PCon>+d z+6zh~;PB#1U4jtj$$GFNiumcfLkx`@gx76^zn+;9pZ5#V_2;V*|28 zp_mdA6d0IXDZ5aojB*JG?C_VDuCOfZwT;u}s@`FdD_ck`ULc_ZV`rJ##sV@x%SPRP zVGJZUF}d|Dila*LZZWFO3YS?s+-sz7G`c>T1P=1A61hKyLE5M8Qj)YDyLY3_8Fj)i z6R;hK0fDg~F0kR>5Wq{LxtfQru8JMjWld&k>OBJwIFM!@GHAItRRW#bnx^Gx7fUa+ zclAe!e-i3YjJFVb*YWPAauLx@v)FP+dyW6bifHsWNbaow?zScf}eb9zrZJTwXa z^Xo0GV{;?+{ua&kJtiq(f7lyC9$!pNG z+Ea0nw9Csu$^LQ_Q8!w@F;@?IJ*UqhAaJ>*#bsnzg;&}v{NbOZb~lpIIhje&YJNJ* zQBKU-!bjKJujmLPU!59^pI-Zuw66K?tCss0_OCyJE$if1wcI{ey1hf41iLg?$vb1T zNjwoi9EAIpi_V**;wAG*;;iTr;@kEM3YkldGiTYiRk58_*NSj`#?iC>Lu(>CWsm>L z_)@PXSyrX7B@=lr1CYd^zJeO+s#3CQ?3SQ5ryL8d;^~7uGj!mYb+ml}2EFj^AQh@9 z3=~I_`&X6r!#e`i>7 zw|>#J#lEBoxwzTb-oVu+iRSsyQ#3v<;G)oE1fC=!u#m$rKHc2hSZe=>AA$%F9Z{Dp zI*tysc+VfNLz(};NUIi}UI$oBz7}Whx0=&Yvk^6*y6gmBoJ_}`LxC}U#yu-<3JW!cd}i4J6ZCUu>=8OoJSe)?ynG2nJJptV@RNI2 z8mXRNH7({^TgCs8m@(oF@GT-#Fd5Qn#6vL!7sUqN`Z$09G*?Fad@%f*@Lk6}K^YG@+DN|)yj%E)^D46F$P zj0+Yi=9wymoj!di@L?t5KTi}G-80XCxr-=Lz{D+TRo%VSq`l%}%fhZ=9C>kwDI5Pb zJ80DrRi1;t8l5dJJ(wJ{5AtStrGG=|{}+ba_tPIH66)f~bL*;Ni1SU%NV~QFK(Vjm zjDs&W08@)R5HSf8@x`7g2`<=b+wQDMp_VlsH{&AcfXK|HeG!(2QG0k$)t>dNR1#&8LcRD@|^VUj(C9B^UN3A~R_F4F7};R=6An!*B<>Mmw`N z>p%fTZew|Iv7xLOVAJ#Df>4W-O1ezYgxP7YtQZ^*Uv}5RN~YLwJ~g;|nlWp8|56#! zMfrK_q?Pbqq@z04?Q_DBvl+waYJ28kdVJr?me5Vj{yCya%buJcTSB*PZ>S9`z$z1v z2-jYc=+B0;85z{Ep~ct=m(r;#3G=Ctb&5e{PuL6g)dcOIL1U#YeP&mQJ!DQB0I_@& zi}Dj}%gptWgOrF#SN&*^2M_*@XL3n?fBKrG$B_b-`iI=qO^Lq8y zG|J|EO|0`#G>uG#gfuXGfRb>5@rB**1<{Bjufj1KXxwgwrn#y?(FC7t(qT~iK&0as ze_C60ox4l8yZpbjV&h`USr!okiRI-+pNAVl>zDmMXQnq=yni6fX5bw*9fe9|)aEgK zBwj^a@$2P6`WhjvSbfuc*Q&5Ry8TGf_eMLW1fjijw`P-jUFBKp%=TV(Vy$~#qJSHl z=B`B@NB9p3UF`wVS8Io3i6x-pgPob)UY1c;`#JVJX3NK=u}z0&-5Z+eM`LsG?V!fd z^bh2>@!MN{Tbm;&n-|RW#@Cle}+Q0<5 zj3Kz{Z)aAqgtbJqfCOCRt8T>WMxHix*Bi7r#qHrRd}}Bm7;ZJVg=Vqon>5T5yxj2iR75-O1mFM(JFukaIp+GWf?2lAW&KjR1`=NL?SG z1cc-_MPkQ5$nDLmxsh_kLDn8Q%=HH!%|Hwv$h@ft>cd|mfA=N}H6YHDtVo%7#rnp* zdRLs)bRIVa{fTbmp7SJU7LvWPa_GrK2%YVLn?2l>GvAlz(!eiXt1lYU{oFQ1(5g_? zjd62uzdh)uZ5+RyJ>+K`wSHd;h}&!Z1Xi4V<@J55!hZYTWB+{0{-R*ijRxvEMD0S@ z1K3h+6^#RIg@26ef6>%E$nNggwD$ZSyMsoQw?rk zYfp*@hVL9wb7zQE|E~@8XWPuK)bVOpJ7wk7S=UGgsBBoNUz>TuiQs&CH*Via)po3@ z*pgUBNg|&&ujh);!W_kBF?-k2gtVl9;(^xCqHT)INkc~z3>6rIEquCv_KkoO0h3qM zLaNbe_dGTq<4L0I>`&QwwTrpcIP_}v4uTL9B_7u zfd-?#{L@RcK=<}m*Uah$o7soRYaWBJbxbpPEmnHZ*{$_XmPWtbVvYrCEpQV*+e)Jk z!0YNz*gNZ2XVH&5i^&iw*W08e+p4lLC3rMz*)`%|qDX}8nNk02*#Ma+*%~EtRUemArHj<-PeU-Z+-Fe8Dg_(>gxa zpRPPac;8UI7@-3+M6WAda@2Z2s2j=zbI?sozPfmgO?t~qTl3k8>Rr;)ISk!+sp~OG z*B~KUrHaM-tdrn{MI=kbDgof&iI^k2?p#!oTw~Bd*FRhc(3(WRI{2nt3@loLSmge* z&8@W|s(oNO53Y2B9j~Z%xABd1VmxA_u&PvZ3#GB<@a0$IYtHPig%c{khp|vb_h(O& zxm}E#j5}S1p_qxH=YzlC$8*jn{>D*Rt3V(Pp+;p(2MLDmjKQ2q>4!Rx*7(E#2j% zcChNOyQmE=>y#bUEP-o-xxPdd0gk=bF;22 zEzgz6l&&C~m^>_vGz;>%)d}&93C6W@a|JUBCzxx75iFibJNg8)AB9Z5f~_&f;^ z6ELruT$4&XPRWpCDQJ`$f{tA_?2wvO&Yf(@Iuq)3iJrYV++e9yq5zRR>=V6B=D-pC zFp8%L!~P2*brM_C*1R{Wk{D1?^vi^5Q%SVH@4!+&N3%{CYt7#cM?Z^cnqD6Jdxa_Y zL_$s5dS&6qpK#l3TLi!1r7*~gJ zKfauN^kQ`T_!3+rhnE)z1Y)viQ71)kqCT79jwQJNs% zZ#~TlwpsqFG0Mk&khSE1@JHx9h}|!-x3l_QIM>j!NvH$~mTi~m!BZ}wYk1?ab@kQL zXEdh`L41(8C}@{5fHuc+a%uofyk$j~zP19AIj?KHP|DX#Dy%CQ)6yN>l1rCbVQ&c( zL)Dva+@}pHW78h{PNLoUI)OmhT5h?+ZGKpNQig6*YJXw*jky=t{rtS~!1#sCNnWdQ zH6mdW`MF64-$AVOzb>B_VdA5#?pt=&xY|iL`@dM&w$W`=oNY;L%T}5|w8qj*s~26e zMYO0}MRzCpCQ!l;1-9tY^pvIqMPQ6?4G&Soy}6!vLgrOy?ZUOTmA|Goi`)0SL|tpy zqcX`3fJwl#BkA_j@0BHe^gA7&5CBy3I-AKRI+tB>=8t;D4-lY02n*~q@xa$0?oMYL zl&#$6@^>A7yfjqvs-eEd%1OE}ua%J9|03M*{I00T5B45yZeIqdC;IVM?Zf`(@-)Wy z>xZel53>60XZ&rCjDv&Jltz08Lj!|7w_pQxAeFN0xOvleE$G)to!dh2gR(B*_4RXqp5)EAIuIm67}yS$H6=I>Y`_aNhdo4J}%+R z`YWJPTrBo-tME1P3>)5J&d+3B}O#TU_!KT2Q z0FrVAU^7fKHYlInSAzOIQTEMWqj)Qtw>7ze>nTdI<>H6NaX+@>*f%Z)mp5-8G*#s7 zn=$g>fe^(*$S6G@Q*L`us6D?q))shT<%i1G5Qq;G+ZGL!zzo78xWzb#bNX`j(y$nc ziOlJP>%h!UIPA76CGwtV{@yFj35Z@iA94&PYA;c7BbdADLP8R-C!(+VQJP_S3LgP` zwpVvth<$o1WB>AD+Y)=-N3ePVwExbct@4=M)jf7=@tw%=6=}vsnyB)S(=a)&G-QAU z{P1w*tbW+K?b=@@VNg$rob8u$NE4)pj=Gkex%I(L{-yxen$?j$2so~ zX9mEm%(b?#&K+!{!wbf?DI0%1of7hYZzMFuxo2phtXHnaahYv@pQLa%V*iu zXO>fD<&tg>6rYw|y`>ODu?4}F^eEMeteby@eB`)MJ~Hu^{~ql9M+Dhg8$=g46Vv zeqJk=q_4#9uN0NHac>*!?{tfsC9+pJ)BL2nQ{k88YOX1Eg2ji89r`ZOt=2(zSv9$pq+HWI2ihpkLKV0*E|VUw zpjGZvWQxp1)O#g=Nu41Pr0*)ug$#5hV;G~jZ)_~lrEq+IC%%hr-AVHhW-yp_5!?Y{ zc!XUwKnn(L0u7m#4yr8Ez{5orDoYv~<1UF% zj%evmtjOn#x#y|ogkJ!z*jcCUW&W7t2BYcm zo_h3}hYOzqkILhF=qit>03%AG@HG@H*b}%o2K(b*Ktbv5(C?W^_CNut^%V2Ia8m>d znRoP&pnRMZ5FU;n%I_RY`L6HZ7Ce!{e|7KR8{Rq6)=0FMt?%DK>;mdS3BuJVI`IIi zw@adi>*!tmwT4S^Z@`ROuGj7;Ot97F{>MkwC zZn;&=ehGsa62PkM)oi^kz9E>N$3-;n;SNPkdhO;zbqfaO0V`vDlU{)yq{eo>k9&z7 z4ooHIVv|xA9tw|(0N*or%Xb}`Jp_gtMFyeLLmnf9(SwEuVi{r~QB6W4s> zg~;Qfb=e7E?t_;x(jg8t(fA3f44=6`{%=2+I9s&LC$vIxDo=c>%-y%v@fUb{d|?IJ zgMXe|nJobdmoa=*K)7c2U0u=9UGG%-mISR@9kq!xxm1b4X=-u13CR_S**{kE%SVb6 z6Q695k)i0te#+BzzG?WHrFTJ?+@-bxhSHU0M@JP?T1*eFgsF6!V}A&C+q@OI`Cxm! zUB8?KiW};gbu-hyq$-xR@3qYK*A@BExkT)jKkB*?D)=IC$U$c^=4i_*Y|VTyNvxbM zr-X~wAsBFX5imAut|ZrdchSODPeEv;W|)x#pw7u(`ad!wr$k1E|jLJ z#ceeDnfMJm+_# z#TYN)XRa5utMVC=XW`qW7LV818nJh2aB){YS znqS%C^f+>Fmd*T#L<(C}2e4y!t*X2KRU;w@O?3g72z-_qc4mi*!Qz&IJUr|+&|tgq zG_=fKd@AWEA?KAn=aqQDEpd&L5@l`Zv_*nbIJwJ@Q$mRC2|XTdY`e_{@rUP|-^RL+ zOY*zvncYmY z^U3mkwd@Ha6l?Slutui=EW%L95yx~D+NG5;x0?Rfbg(fSUY}YwA0XT{nI!U#N3qEr zw=)(=8j2k2f+HVB4pRp$Si3Y%^rf7h-LNL{cY$bg0#8(cP$OemTbUZNRE~FR%q5b1 z9+z-J(KOZH(W(-C;_M;J_Fw?L&v6KU6gr$D4F)bcR(KX}W*^BtH@@(p86)>g8hblCCglwxW6iU?#`*;V1p8IM%d)4FohzDY zGe1Y>S1U}&`d*V4M;!5LRk3HLVP*aPVrhg(A82f#7S@E@9=j;g?1$b3m!)fnz;vy_ zdZC$8D34?7GXeN)v>Ay?MvH8c@xhw^E$^DqJHz-OjM>o-Wr)EK~-KKiRmA*6aJqg zJ*~??|GjTx_otqktuBpgrzQVLp%)g>$Uv0vuk6PkCi+`*>2R{zqE94a_;V9RlPHEl z(yx;Zb~>3UF?jVKY~@IuRQZM(r2c&M+wpKIS9MSR2&ay9Dj(!~W>&+ZSL=H9LzYRCPy7xcOn}j-*0K|%(3`p=7Us_ah_|+Mq~d`#$vKDn zJby~(8>k#Z*|Cn0mztR+L|1K7*{q14vt9%0$FbK6$LK)us^D8ynIsRfOqWvcqPCKHxDq=wh%%1v+jfxCK~`xg;1@ zjaRv&We-Xus~Wn!HQ9O^8C2PoewSbjoh!~}Lo2vCb;wdY6gS?ja!;VbA7kY#=4W)r z3~UW`VzPa!k}KDjfAu<^k2~_}885wmSRcDP-=rDj9`t(o__|h5Mnt7?z9tecXb#6$ z{;?jp6My#ya+Vj!$rEfp+EwU4_9Ocr0NW9gdh;7Y9C4CjN}W@@*{Em40*56v;F-vr z)_>=8?L4;WP0 zOdu|yM3VHs)7X(&ZkSbjt)^j%*`y?SY0Winiq@;AaV0V)GZK%z$l9mT5sB zM9keXu(@ww)AwgMUs>+*uZXNSrIbpFR#M4|E3BC93F9m#m^|#S<$@v~vZb`F(jpIL zBEN#}K3RT9=f3=tU0l9}g_!U~lDf&`&T_8SW+7;N((C()T8TgmnOe;NMSE!z4HORSQ&}(kgzttT=BaRu^t@w z!RYGWY`?YdNHxo;r#9gVDD_eqQh@|hbbvN2*iAPeQfk-;=k-b1^!AY}R2*ua7~vlL zNt$YOg1T|LtU%v&R*p3gzp4n>hLgZax5Lv_=r*_?Zky{eRESrJMGr2;u4QO|p>_{D zG~e>;5h>f??C+VJo~#2V9YH#jA1z2fqKTdCX7?YaIB%=rNma>SJskxvX4lJ6!iiDB zagI$xK7*P~dQCO=)3;?#PCkZDPGmB7Am>m=eJDG#w(xB`o`iq4~1} zw!Qg)M!sqzFUJ`mg{VPdz6D0FX=b_K$tCLPBP$d9ffu)jp%|zadq=GZeivShZ`zL~ zdzaPs;(Ym#Z~#+FxsgcS52|St$Pkct1C_>386WLl=Ak#&!&7#Yc>)Mc2e&_!m_XjI+Y9hNG~PCMx8ORg*BFX5xA-dHqKO^0^T zT~#j6u`fQBcQ{8K`5<9D{y4!Oriz!!2W}F~J`n1xqd>FOIB#v5uH5PUc~>S8SKZht zFs#{rUjCC@mA6s%V{s{3nW|_rl#;!ku>F-W>#)s>t*+MUgzSCV1pJ6zp3z)D+-dZ| z5?xj)vD&xkG{b#=+nCjB+megIcqk8cnP11As)v&-#|K$+bjDLR&qYPKv&Rpo%r?PK z$))Ez_`uAVTW3RH@W^4y+;wc?krpQo_^h+kDiAK&h+rFa#pzkclg@#Vz{g+z>$O*p zqg8Pr;w(v`Sxm1@;JY)pp{CSxK6|d|J-e=H`6HhH`5S{PQ!e;}OhRNmMD+IMtMQQ= zx_@N_V6@drekb@p#lnR(5!G?2%G8%7a62N_wZV;eXx(*)xspg>)zv@k$e*8&88taK zdjGRZ>@PiCy$vbm;CPk6VGai9^~?nG^yFJH0I{-~o>AzVRU%Qlw<|)D=?M0NQ)gm7 zUXn@Z;P-x-pSOZ0yYySzzqi^`Y0xo|6EQd(2wzaq%5-bBXzQjJiVIpfce9<^$f3Uk z4es)Mn!+#HPVCdhEDS$um9%m`xgkcj-Gus~O)7NHP3qY1A9_Ix#jAcTc1PJo{|dPM zRXvSN3M8tb8cWr@ckhPgp^3_R4!l`Dd&vmfI5dx+`_Dvw%*81O*3|4JL;KBkbbUOl z4lbOY{f{byK4_$1GEJ7P5skOcY#z&E+N*EH6!i@P zN^_O3_OiT@A*$W6Ub78uK@mD@FfnJzeFWjGosqwVFI77NRQ$tEI;;`-*bFu}c+#BO88;U-~^y zSD!YL5FE3s%X<%|mv$ccLfRG=o)&^orscFoM@0W!@yiW@gvj}Re0H1jnaJzK*gDG& zyeYU!?3#+EMa>np%#mjX%W1Ri__<@0uPzt%QWT z;3V7~XKJgUsPWl%$l>t7W3DF_?wWL>%V7bDetglB$zP@sd=bd%V3Xxi8}b+*g&DMn zKq}+>PC~&7I|0cF=DYXc`tnvs54Kbq4PN!GKxn;-OY_$%CvX>=#V8R(F;b+hL6=Q4 zvS6i@eKSB%z3Y~e$u=(diZGGTc>YT zqi#dz!Z+7-Ozb$A1}Jxtc)z9>5=Q|lD#OBskd4`*TRore#@XVgjb3}KW9dY+n}o9{ z7i?;Kk@N_VPqPk}VmFnRQ>YE85`qtC=W5HZn{*Px2#1csrMBiFq6yC20=Bi7vnkIq zaaUprZ3U1$XWV;AjxXoNaqFJ4@t6OPd;2xXm)+&F$8aeLJ)@EsdHK=5`g7MFyiDw{ z9&`3D4to9;V!peQLP|U*b8a|e*pz7ft4UQ3TsJkG(b`WHgUHvxQd;wv+s;w^VJdl6 zY3=%dJhO~%zvG$a3lL60zg0~dehKi`>hjitbO&+w+UPhdc^K}qGCjt#Ja*!MtnvV}WWZ zR;&Gc7Mb^EC!cA=qOWpO8NFn=uV6H;J2(N%6slKB=ZaXEtz_h-b*1%J!!OI=*r_>h z?+|o_vjImU?eh)h#|YE3`L{Us%j>HIuG@&@U@95$TrpZ4E}mvon}JGyk!Cgx8Mn}(ZUT+~MLc4En_QoBMZt`gNGbK(%2v5CG(9fH#^4l|S_ zrJB`A8b);IJA$l6Y?0qriJC=nCRv(X{#HFKMIgD3&PWvI)&!U6yXN@u<;&bJ`JFUM zZ2<=IEp3u&M?1jx_*~1o+^mx0<*DS`!`AVtCqRWixh zJ)b%uZS@wK_&`i>KgN>e(h14m8`!-M_r)gmXtsm^fI3;h)u_IMcc5EWq92s|g({t(eYui~QlXOlW*9;5;)yvB?zoV~7 zoNZ)E&;RFa@b&&CJjmpEE=+Wc(m-KqjCECPBR{__Kjo0sTV?EV2$cM)kFUZ$jA5cO zXW_T6&_Ud$ug}RbK&GjyjS@CjrCr%T;fplc^jB{45$!!deh5HcK-+nhxrDhT9B3vs znRl?j76H5F=L*Z3o)OObj3ON zxA0VRjz<5~8_UnCO-UI^N%2QN5@(92$zF7 ztShcEnfJ>7Y76cKIpPm&s>-&m+~|SKxqBcn2Nw7%g@@q@}gHM z1l(wX1OMp<=Kw%4;?2bpLC~PnQ71GL&X9d9{_Z3E$Y15Eh+092lsN7P`D^&6tyZm0 zQiFN}uG|W9`iA{unQ>ahUXX|)Z*@y;S%h$8MFW)ak|(c3VXg*7@axZSEF8i%Xcwse z2=ECj{LPY+8%YwGAYei#{O#8=FRGajo+Q?7J88f=+R8J6RiOCe+vw{98u zhsSQsrN{45r-fl#8ETmF7ntpNLh?zBwz9uipOudCu~9{+wcDApv+kx2J=Zl!^kHm+ zOP3H8Qnhd-a}jR_FM4z1*h_=&hnC5}B!kH)f0E+@kp%q_WVjp-Ai$F2i7O9D48vqk z=F;1QS+g6CzxNYY6Gz$ac7K|>2I>-IRW1II?n_!jZPw{4jRep(YIaHk`=4k37YVW- zq&XtMrM(qkCr2;2;wUlw0a*eg*R6pZz{vPV;=Sx{2pDYtO^{h^tP`uWhQDBLgIBAF z118HQh9tOqxMJBUGT`Szsu@il$sCOUrkGx~J=EU;G0hz6vm~h)l?T^?P(&YHbJed! z(oAR588Wb?@|m<=&A_Sb{tfE@N2%95GWFZrQRi1#<9Au(o7?-gTbbt@ndiB-gW4r| z=7u=q7jdk2H;5dWupJP+1xo%BgVd+vK>P*j6W)piXnJ8TU$h(@OyEv3y!e&h;NBhW zAq(S>{h6E{39QD%a$z&z-=b0|;bp8wcsl-r z5)7DJYV;jmg5__=8$!`-w)6C%xj)Y?8gVX z%-`>8^K0Z<1IR=A#RlDqO7oW8r%#`aPWC~$uLH* z1{o$dFczt~-})XKRYf{W`7wO>)A+qGUhudo=yaY0JI=Ej&zg30s+VY&URRcUSmZA< zG}1&+enerkHf_Y?{Wz^;r4KMglGID{Gv#2_gB5#P$(YjTxEJmHoCtFHr_B@EueLa9 z&$2p>mN{_m(zWxq_H*7UC|B#|^k>K=g8Y#NZg`2F%rs90Kfg0w{BO!0Tsvk8N2$&{ zxX_vC8OJYedGae#UNsf#_G*l~I#XTE^6vVxRW4ChKt*E;Knx#?5*?GNsIP;7fF;|V zyH4FQL(mUuv>hn9QS;y~&uAwiwkNG@h=#NoMsHp|R@r#rto#?q#S#5$FAbAtn z2ME}aXZHI=cYFPRC83KlD}hvC>)y0BXMFDG*K|K(mAlSZ?+{6oL@`DI3~zN4+wAk_ zX#4xmF=X0PfGwCy0O>qN3qkxB8Dpi)isGuxbeGmvS9igA#XJ)9iAEx#2Dx~UA9^~b z&RYc12WUFvgRS@-BUr!l)8M&I>Xx(a$SqY`QoKeSea1L9AoVCTCVX0~W~_?Y4h zc(qCT92LLxMvCzY9>1Srg7&NKbwzQ&WoZ7dW#-eGTGN?MUhZ+U^y{%hs@Z;-*Tjg2 z2J{PQF$(0CQ8S$_h{^BGIOS&Nl5NYR(^z;2;16H^I6~t&V^Lvw2Bx7=m!J5F^i1og zby+_I43`PBAY1moCWqJrL&Bgb)L8y41ZSg+T~hyv&s_mDadCI|q|QhSe+8RN1kzR) z%;B2utTTpun5J-y)_%d$-M1et5L()e*)g*sjJD4SREnQ!Y#1d6ENFwASm%M=;^-WvW?oyuO>1JFQ22*fE#$*W?(t;&2YDq0q3Lv>O32d&KU z9x^39!*q>Xn`;gb_{qw|j>43RtSBt>@jyNNajSPN0sQzVcomTQGa#z-CnR=}1r|%- zqJuH?Q+3Qe`vI5;0eS~kZQhPEyuh`>HSCJ@#=;24D&S?Z0(alBwvwmXo}+e&U5F<= zEI~>-RPB-=>{EMQob1G{U9hxMeU&Tpy%Z9nqeL9~f+$fe?K?ZWZcTCRzks4?n(4~l zhS@48v)cGHdabZB{q}D`Bf(gNoW6#of$!as-^H=*g1cb}T%eH@tZL3T#43>pHsQPT z9D)g(d_d;ZK{yKS#6y;;$|%n{x;2ByWF)3u4X6Z8PL3A*w3|nilyq0YEZb>1uotoN zF2HXG>=GRERrO$Bx;`JS;>Z~ntaVTK$i=nShVmt}d*RX1@*#?xdMs$vC_ompoDuQ; zpHo_%_w>83MQ<(xhBTi6%av&zJN8{HqmvuJ->}li_r2RsoB9LjK$u?m&aTPYP~9Vf z$w=>+$OzhBeiG_zHG+&?lnFem ztN&TeN-ZNFJylyd6nu?RA*v(RXmO9{+eyA&60OquDW0kmFfTdPGImq!{m*BdQp1k7 zmH2OT|BOi6Gwg&6AdVC^@7fv8+a^|i+J%<}i6Z?>L<{+oWV|-3Iyt_^;00G4MMzur zvuZ(`CZ0k+(-yX!)LJ3+PwtRTl98(?#~8J&QG|6h^@01~-+U&;Aoe?)f6;{P>Cifh zSaGHZ^-STAe+Ly)TBilvD)?fj%kGC^A9rK~>|+Ledc{2QRMo=4j>@C;@|&6gh$)K& z>l^_U2xn%lL-F=^7f)>9em#@q|J&_Mc-;yYLA4VH`^Hu^MKh_xc{e02sYi z5rJ5Rc;IfT-NtNa?M6lh)?rA zdX|{Ge0zo62;k{u^Ivn2k^A?^pI05JK8i0Pfcp9x^^=-<__9xodv4el$66ev!xlb* zT>SMQ>-?ynAn)4?%a3FWa?m93g5G1lDA^-$BUIqI;{#h=wVd~%Yd4_Kz? z9yh!4;0*QFEw&%?^S$L{t<~JJPtl0}Sp^r1oJtDtA*HV;!$xD!991KEgVrOX;>pq3 zzNkb{TPE}fb!QUHw~zMx)H7!%xY-F;Xtm+ZIW(>|$)&$^mOsfk?z0?_-=?s8Af(_o zLCY7&PePuYbXFGbybZj=d#562H0D6ysuut`W>C<+snmfC3{8pu4(rYQyu~K0yOfMv z`7i9$G09PI8b~lwIpxW2tvnXs)p1mI-aF!Bk9<4|yL3)6Rt<8dq8Chn6{#IEFkKu$ zF`q<6Z|icT-ryGXoPtA}>0a0EZ;y}d9_mAzxR^;okQHyzt9Wv{n@e-j?Lwb|DFg86A|_@D~Xg4%`(> z;zYMZ&S=A&yB4^H(kYtxm`Z1w@omWlsB8^7twh&+EFsgQ$SIdh0j(3ONcPBkt|y>n znBD2!8*pRDAj0>{Y1TkL!ZQ=M>6eBOwjI!s5a{z2g3=a-)V<&QZK#Or`Q5iKsCB*_ z2ZZQ0itmP``vCLz9(NIP{v2{)6@-PCE0Vn4ckyR$CG+1D5vnYxe{w+O%zm=kkRKfR zeUCN(H(6x3zDdCT3zNUO^x6DD=D)eunmHX9V=oi_YpM55ZdZubN`2-fs0TgaRC-oc zLE|SWEy!7O_9*soo8?l`895snT6XLZ5)a-OjwSAun&v4zyKHW#lJ8d8?>9g35=!&` zXnU)uIJj+DIJjGaYtWEj!JQ879^46TjT4*z!QI_0xVr>*cXxNEvHm;x_TFdTbMNav z#v0uZ3|<&TtvPGWS*6wv3BMQ}da5oP9l2Oesw8-p*G=8|u8?#@w7HCNbPPjqpNe03 zZQf=q{ZJdk%H1vy+qShl$uUiA}~xv^A45EzW52 zTPj%^8@aOnSZ#fZ-7TKUoP;;?W2E4Sj8PQh9GZxT1ilbL`?>@^d2KOwqn@g>XSQ(e z=R{vlo~!me)G`Ho-&$;;9EpjCZcNqG;Agk3qnH>yKks!deL!UcP|65^7`}{R-H>|! zZkaTOjHc1+&Q;wJs1AZSpp?W$>FVGFgWxg@q(gGu=o*yMF0 zdaqzQ2YODM%kNN~4$tA0!-9(wYcNaMJGv}L zzahOjHLZvY-JYxnvRmEt6PRMKHWF-LN=De8+G905(Pu7R(S9$3(M_74f|3B3t|^Qm z#4u2QRtHZ_^-%8yRB>E^XEk1bYrGbNF0jLs5w>Q$3JxK;jK6mmJ^A?EE_YLJ9zH~l zXOID0y&fS!fddTn{=eriH?LAy7mlg-`}PQywZk1W`UY&Lj=J*c(f!*3H#j0LVQ{*T z7`WK*S6s}qV{nJYOlFh?1>hB*L>^b0S^MZOecIwNdmF~L;8*E>;EO*cFrsjOs})jH z+rf!B?q0Isrk1vaW3Oj4ZJr9U$+f(FZ>EhXo~B#m&?P5h5+H*%NAEv~Obv@mT`ox{ zN2j?o9%R{Ku_G-+>mfXcVH&oJ^Q~#57f^m}EftK7Cw=On6($BNN-#Q4y$tbmWqIvs zwDRMSXB?-i;EgWRyf9Qllp*G0LZP&wc*477FZ2>OSB7&KA1+4WMIryK5zjdssrC5L zOUk{?aBTkPTm`S0l#(Bmqeesl&Kk@8I$tx|K=pe(;zo}D;}#Zny^wJUBz=ry`v# zCdlXIjePLlZcBG>aldy70!nb1aH3O&93i0nKFY5Eg!o;Ky%r*12$*5B2sdmh*gjDd z>Q8^HH0f=I3X?Ckk2l%Pp%7SEH|VsO8mx;B4Kmi>1%~xm2ODoo#4JG%m6UkCk6F|@ zaz~k2>=Rj+1W1#GVcebbHv$oz=pYmKB*LuK_f7<*HWAH05iAOks-dB^thMQ%3Y0s` zR~4(boW_fKdYnBqN6Nw-L%?slVTrg${P%85aSU&z~Q*&Fcn2?sY%$=$7q> zYI@QRP$bT;%m%V_TX%YGh;-b4_QHR6spKdV&DoF^w!K*DGnC(JG^iD2n1;LGJ5xjl zeM|oCs&2!3V}v;Mr;5EK%N0nK&h9?ybYv-E#w|sowo8pf2~#MPE_W@gQ+H>hQ4F&4 zDXL<8!_i^l!dinQKsr~pU^o!8$Q~$!`vA*im)CSJDHn}}7GbqqTJ%fVu&@5e;%zF0 ziR&OE2CCh#g7ps^e4zOZr(nuhHkklw=VfQQA@>%&i31rTssT zL`v}OYf85t36^=|Vv*btjDbi=u(R(%CG7VTSoJB`*3DB)cj!mRa zSF&EdigwDB^!h9JrF^`i5?`Ru5>T%&VM~ZX{(eoFQUufx;>g%(?S~$5n%C9=^Hr@rlb&Ok85&-8?h0R8Bcue&>Gi${0R?Y?Sklw3(H`fa z^8Pwo{@$lV(K;I`nF=hQF^}|1WGsD!oVt&+&3>9M-`n!~$YP6ksvydFmGoLFw?OX0 zLxQq9Zom{9)}%3%Q4INz8vBTh?6na2q$@{T9iGFJxq;%j$O8@hqJN6$M_BQ@?N249 zRtN9~pEudG(A6DMn0my%8^lC2q$R{@G|i%-hf7$qvp7}L_Txw6>F5NTWa}NeKZa=* zvvp?@zrgg|19u_ zvB&k=t9PfOWw}2QRB-s?I$?i#Ub`nK$Oa&m9n+EEAwkI9bY{>~hl$xP%^$U(1U&S{rJi=jzWLG@z zwiXisEhC;{bP%8YhRdsQLd)R=Zvi`w0g!H3INmE@aDJWN>vqdDvEq*}LB;6&caUj# zh4Bd>^MP>3gQ>j_1)RBaJgrvI?r~c)yin+*Gpmt>&Y~{#pwZ%*_ev-sJk)>eC~*8S^rkWf``l@#cY&D zU2ZIphY^xuFB}?%8(z>_I%t`c;*qX&cS5m`&+jiC8o1xvo1#2@ipdS+-GpcF7oI0! zS>*}s&NQ`r8}N7_%Iv8%iM&M5G~DlU`^Qw&9Cx}5rAVJuoc(P2*$Afeth}u#Wy-%z1BHWSOy)r_*BQ0ktyiw` z=BO`}8dfJDNoBfDR@Qk>T6N04l*352_u!p6WSyl{GHRJ4S>T2idSzekCqjkh&WFhqdsEn1 z(s0|nkjc|&y3k3cdf!b#5<+mWEy;_L#;1z3J$KA=tu5{+)4MUhJmA$uX^)8aXW+W8 znm8@Hzq6+P2#T&mzWiXv?5QtiFKpVgtF>YfMcDF=<&0s&FsQ`V*Jn(?I+2_tIwv#gwT?-1JZ@;7;V?yGr7OTlrwo%EkZ^ASJ z!hxgj!0!^`(0!_H)6I3_zBD_whLfmJp5(nIdiPFP!&B+>W0VkrgHr+pgDtb5-ovx~GfHPU74PE*rFw-ENSHK_iHYIOkt#Ce*Nt#=0jop?@9QbHQPii*CjXYI{E1X3 z`8jL`wTlmh!0CEiyn3aDWH9#=h$#8R1kF6ISu{u)Y6qTiL2I<8q7C0hAvh)DUdWVE z2JaKg2wI8Ox(|PF)_u3yJsb11JzDgkbkI0SgE3%Ih@|Q#igElD#{BOG1^ZCi?kew3 zLD9Kz=4&*VDHt4j71z3XZmfY^mx8o)S==Ig@i=dZ(j6Gj>a!;}slNi|SsYtXcVshC zCeSA{2>UBO3g`{1Swh32@_N6g&=W3(4UCM4P$tingxQ!U+hM1ci95_Q2x--GK;a%f z3Ju6&R8GbSIX^ye!)y#1jpPn~-&&1RcU%lP{^2og?bA*6D}i~~p(dvJ=PqY*c_vE#4)}%VhF?26 z6Jg1!f8GQzrTniG>UQLLGZR@m_h#jORx{njWqp5@%$)E3Sz`M|Vw)h%OO>yN?63no zf7mhB;(mU87U@{%?v=;uoyUtNM^?%^zB8Wanxq%X&v02R{h*8&A2Xe-tcwyJl7~~Ck@YOy5P@_u{0{2SN=I-K1vGQ zV|d)?VyLN}P{03Y`{W5n=+nk5xiGgF_O(y`M&bfRX*Pm^H>IJv2r1pOS)4+J(o?Sr zn`}QPW-|ifU6Hb_2HjW^qBIh}L4nY3L?DxqXie(6s=(2p8XS#26&<6~$}`VzfgjSI zKIz5$%*#Klxd0L}gxBEI3Y*OgvW=TsSr=$%6g&VPDt9iWiw-g|8H6=1dpkMU0L7=#V5H{@ z=T?u1%6knk-R+2;1%9rCal!kN3zA5P__n1*I}hQ8jFfA#&KUglGCF=gcMf#ULI%}8LtM-SR2(YVb808Y=q zr0~xUYbYLL0jR(^UBb`>6TwAUnNGQb_app zNowD=<-lyD?;IIi85n@53Cu0@G9y1K3j={$>JHp_h`?Y~qw_ldE7@N~WWQ+7LEyrW z=AWt$+%pKl=!OzX~G`^>t#S47u{_2_Ta=!*a z?=M*hdaYk2tXag!iaGubQ2SW&6>A57FmOH@QUM(&A!K=?YiKoqD z4XG*u3}d0cJ~()>fN&qrOclMswB|+HkCfI=4q4VCvP_*~ zCzy^uOI6aOf;brAp}@TAiw@!XHgvYY5<#H9Tw)$5yWJc z)(SC6V%lxQQw1~F%p^fZLG=@srw7q*h+TUgg(+q^spbT?m@(SE5Tt|#lQ7FvdUJU@4^BzTUi-*LDd z1>z2`4UK_2v_jhh$*#cOqIbHXp8!gVXQ1eiM}@KrhoYL-_3|9Ayvi-xbu|O0HO~r_ z4YH5C5EL%HNGvjo0iK4=#EY5G?*o55@|>Twjkf@lQX#*+^c=lp6ed&`9JwZMoiUin zbbM5u6;CVNxV(o5UN2`=<6)d*WsW!wBTK)`QLWJ}8}i*TXl7h?N(XY5cxa~KDa-FY z8(lHntd8frzA8>#h%e3Y0X(dqz@K*AP-em1Q}uu9V;vKiCDf!EoaBYSg!Q?GAyh`R+W#Tc`u`%-osxeMDg%!p zgiwz(9{&((o)L-EzX;WcZWgp$3UIYnTT9CDir*5Gr{n z?fvqbj8ZL@ubs^Tski~@pv)Sa#eoyfl7S*<)8(fcpqx$U*wf;>fX5mm1&V`J&2{f@ zN4hUqhRf*UUB_3A+w~_OG>a(BE9F!_zSyFL{U5m8vxd$F>0gUxT%nC=%D%UT~x$TYvZ z^ZJ3o&N`2zjDzDa)_1y=43O&_f~br~{m~1DUyZNp6@^}Tb?_VQ6>~?ePr7tHfT{10 zpZ7gQ_px%lV6v@6-mJe_AuD)2Zf&_2IG+PdrQd;~&z_^t*tk3^&-h{idULbJf^;$g z&JD7}uN}H}<&OHLR)$vdPRMKEFvKTV5UCdbRtPa&t1%rL&8P7B*GsSbO@xY0e2)~59M9y|(l(Nst!986{ zul!8*G7l0J^i_m8oDG3u&zT~w5>il@rf<03GDKIZe$DOpn=oOi1o~Se&l;L$4nzDn1+xxB$|AQpxng zWQ>Zr+b;{YW%3&o0i^G!eAh7aR!hW%M%FhiA9P3~R}+Fo6S>uW;>n9Di%;v}_fj_r z$fRtrjJfXQ;h61f-@mNF=G=F-bAX088%-4>yAd~=f}wlZX?l-;ekP+zIj8%lH2$(h zBY)a0yaN1f`eb5wTCv~$LfekB^-9~myAQ^=JS~fx#b9V}OYa1Gw=jBQB<}40;Bc>? zP9!`02w_Ee&q|Yrrmx!I^La=astE&OP0K&5`E%=Em1l6&pYl`Tf1~tO!lij%y!l$Z zd3xifv-w)))k8xq5w1*`U}=@Z?g8x9+cfo~syetzC-BWd*gPc7*FpuC3j6;mJ(K@e z>B+6o1U{dtZ20^J;Qpxr;Rqtk>)|UjOlN+$_IOM%3rv3RMec(Ko9Q(Shst_yee>b| zW$p2rg>K&UzWZ+=LBjIr_f^6Vdy^)x6Z>p<&@DLzvudKT_fg@7w*peg#pZ2kS1~3~ zV^-I@VNrcoH0Bj)qQNtJhIKX?`KHt_v$a%Mt>>paoOPt(PV!6L#BXE{U;KVInZPi4|d9@CIgOxIC zzr~vNDJ&_gnBFC{dZK-yeW7BQ;tka4fx5-@fAK`*RuVtf92AG8oEEll;x{G=mY?Mb z3#)fRGh@thJM{agXq!BELf_4pv|OMe{O0JHqQo?biS|UN53o58o9Gx(Vy&3lmHBXtO9IT`d0Sgn zT_|$qAMRyG_!_=%IR;_^rO^NO)Q%qS4AYFGPOU>%o^Y(njDD9ISb?ze<(o-#vp%@k zuB)%PSE`TerMjQ0$t==Qj+p%|!!F7@;cwAmGW0`rM==ZVTccTds zq%Y{=OcNi-Eo!?T+131dkA^f@wA1#g9*9;u;xYau(kTb|4q@Ok9-cH;?P5%yM9H;7 z^|S%!PP^j%+6F7DQ6qi$Q1{unjYmNJdt=pF678ms9~Z5b%4@1yP0nhIHrjB)DJm=} zRHt36m;Up#4Ub2bR*YCt_BF zA9JA#*y59YrI>1(^(Tx4Gl*+v1BYLW85t)_oE4{czDf(ZDyj5jLzU!ZGD`}-f|`$> z(IgDZ#<2I0;A2p+!Ln=*@bOw)5nwzzjthw_-nb73mKpJo=h8)?FPglBy_E~K{vXEX zK2kP(OY@oyl86oV`u#9v78{E%auAb)(TY>;vOsbkMm0|GNQ3iFpuH?^g1LGQQt(o(LXXuHlFk+i+ zf*uNw2i+8qRoVJyVmPIPN3gM7oZz7;Q<#uP*GEdG(Rk>R`wIiN7jKfaUIjpy6VxWr z_KJiHXY{7U`b86=HGn3g~)5cS=4#+On$p z)DIBIXB$?%z-gvfYdWR42_F2Ul-D#;L2DgdraDs=4Wlz2&-N-x)!5d1RNV@ioFrmG zEo&^iM5rkC`uy5}O44zL+BOtDpbxS-5osGzQ&FCn(MdhD&s=fd@~SS1rezz>8>Y z(L{n(QZh*vo3E}2ab`3zce}Z{8C1)x5%Xr6-j>f6!V5leq&6SHz?1Pt1Gg4ct+5-q zzX<;P5_X$QPgHG5z!a)+76Wq5qL1fUxHS(jF2M{&t5|Tt981S(wG~H!D%-<_x%vr_ zqT)tG0!r*cd0e;#fe8<0`n^}xZkBzbLnY<3$E+|L^kwS znX@0AQjY4nY})Z-zj0R{B%h8B=dKu37icSck4Rl47>R$AUnF-p;1~y`S0V}Q&5j<| z-KP-KleSGuOG{NSOK7My8wyS5plQajIVXBpfo}jxV0KrU(Z0GenPV^2ihSs{vw-O^ z*cW>Q9UO4s)EbnV`zAcxBDm`0o2=!L5301|UnzSwYIsg!&KQ5%mal0Z+eqm75z1Ee zBi>6uUE7miIA9>!VUz~)H|Sgm2Yen=Y2ggGa8yVqh10p%5#$h|C(K1lv80&cy-u9c z<$faoE0DfZE2I9^X+iixDm24}QX2+)h7?G%Auas-Z>~WvhDf>moN-IJLuuTEJyJz4 zqt;7hBF2PbdEAKA0`>bgnja7+w~e>Z1wX1TJUwkubS}_FFXkcfpb;i2YfCFQV%BN)jZDp}lzoSoc#Z#RajZ#r1r_GHc#ynM zo<9Bi(2>1P)SX8z!kR-kgu|@r;tw!(MYgFNk^c`D`wf6tIN6P z+Do+P!+#DueV4l&2uwHnBN|pUyDIq<_3iaAUBReZ-6xc-mR|!~^#dBrw>JSD7j`Hr zuQg^VUU6Aqa3eV=y81dJ)5#dYa#{4UZDu~8Zo39=y#4ue`t7Y6#3svxq(A*X>J_W6 zYr%O@A_@iN%U<|L|7fNfqy+B|3LGd$JrXVSDQe_Y(zzLN&a?>`PKx+m!ixA%7ctm0 zwQI(@!fm%^cn~eX$(g>4^Y1*WgvYAl2+SL zVqWinGA|04=0}!Yy{|K3I7IdZh2gM)9E?N2xnQ0S+MsWi@7pw)v&5)YCqKc$o%W&} z{i$oEsx`CzRo71W|EI3im=pfO_Y5)74js;ElN%pCu`FrskIg+N?QpZZ^F@8yq4iX( zyHMDineqr4YSZ}WR9WH=KQyKWhZVMGKDc9?9AZ}Sx2~P)>A_gMv0j>6WW!q>{G$qN zo4F)EiCHhsi}Vd>v@Q&F_C0rqYl+!DgZ&)R|8i zU_6m{PRoN#mq$=rf~;4btM}g%UivI??G>AHFYfkm=hk?A=FXr8mI(Zxb8>t^W`475 zxr;G*@Gpr~NM2wbN4);lvz z@cOBrVdh~xN8?dZ=rxsv0w6B7Bc3wG4>(Ra`y)o>Jm?NtcC%dmQI{S*#~b5KYsr_d z5KjlSLj^lMJL}HKrpiIAv>0R&O_JMliD*=I>edvLV6n*wOloKl@h^^GnRilkPcSzMpN_8i>t~+Cf zXxOGprQ(YE@blH=SXYN6saaZC7Ku=c?_?(hv{=4%H9SC9vG_N|v>tj-r!@wAN$HUK5Q&Dz6 zD*yd%OxNS};p`v4$!?B80N2%~L5*ep`6x+>T!7MTl8qs`nO+fV7AKHbqap9RaHVXj z?0SK9x~#)wDk{%4fD_$0u?{#B=gDq_nkE{`KzuR`cK>P&+n-6Y3L-C_c9Ddh96^??x*d7mMUIZNgCJkzL`*#Q(EntoL{Fg}^6P0J6Im z_8qG71vs&(rv10qDbnjw-V0b>#5Gp4_c~lO4vE`ky z#)$L$HjdJFneA@3yCoRPntI;cFP{E$RV%KFoYp+)`_m0lg#|?SloiWZg7ol`aQ~$zmF5j*(*3)K z*Vg){ho?A=P@m8s=h79-g!t1(#i+o%#Q(`}*Nf$VB}T1`seojUSnsyMnEj9L`LuL& zcInUXv=}-LnHTe$F~oPnw`B7|W)1?oZ5LAq?R(glptDk496H|6FSeyw9# zO`A+Nm}{9%YuA488+#s?oys3x;XE1+VqtL}+v*KKH`xP=60-X4jK?6qWLqdensSiu zU%g%8l)>FM&&Gohr2q1~_SJsC-)Eus^5Lf5{(T$-afT4YIT_EI?O`95sk2=Xfb1G> z*m6u(5QmyBU3!-(Z}?1KR2xNm0s$Xd)w8`wR@%uWQ9bv_bouVk9yo*rCn9~b$lwIQ zfYCfrkvq$A$W06(Jm?W36}k*Cr$`c~ zpLWRPx&07uZW}Olbe^3I5Giq4TXoNL@ixNp`uAyv3cbiseg#W8=u`brF|#t^_1n3X zr%(Ea^v(+?LYFB_A*4t2+SSkS6*Qh>{;25t3f>Ob5g!_J_nM1ettlNH`h&U-j#5$p zub0E~b9e3Byq=La*)JzPm;aF6D3VD^d#)~HP}EH-pa@gq57|Lwd|9V2!lS&Xw$=R! zDQVq&m-02-=0pv<=|XxCvl8>zvmY6+33Ktr5w#o?aah~e2siPe$IJcUiRb0qSuEI z%SD`?whWWFqIevlwo42`0s#M|wv#~rM{S2*hhqDmXCY5(&-?H8H>=xfO#elAw#u7} z5W-t)(_sBec!uP1|0X;YEHvD|gy;QVgr}JKm+;!16Ptivldz19P}6%u8Awh><|mQ> zTK{kCp)t1nZ|wE|Ke0Ejg1$4bIyD=VVn<24-?xe55;<|*daJdGYsdBA&=rbvG~anj z6w@O+>yLM+7C5Qu|-IIafN*GuB%;D zxkilq-r^NSCR*vBpKm{vt&0FpbA0A7~B2HVkw?e9wtE`2Wkafx)ZvAfGW?LA>c^EvWhF%(D4H84b zy1mt35on${aqG4*4WNx!kGK$5 zHNmZZ`t(x!n-av!M~GW9sk0*6TL0V5*V05~M5HMC1cnC>_+9mw;2{m>7;Ej)IfhUr z)hRt$>1Rye6rAudNTz%M5>;wcH1h8aoBRrj%xH3{REy3UG23K(io@a_@x$3P+t%_q zh_m?}c+#3DMK$kAdI~Yq)A4Fs=QYQsZ^T=RjM?e?-qItFPI+f@Ww zNS)&I%|rdyW-kFTQOrpNFSY5u%xM^3Zb@-@ws5s%oeh@SZVlFB9LVg?ew?TBw9r-U z&tFLK-E--@1~qzV0p8xLhtJe{4$e)HbXPRVl%dr|)Jw_06mkwY*Hjl`s(z%TGl%G0 zl<>qd|6lNmKky6n?j9)c;yX((*rEr#pHDOf z{`4XqV6H1a>zvcO{Rt{1b!?Mto9*0{_%FfRqD+0pCS&WyH}ID-3mBJ4NcUFs*G`K; zfDdWGJhSdwFR~X~E;VkTn*Pwg6I%N|c-9SoEm5&^qD@hMa{w>jcg=Z~mzsY6!U|na z(9ymRicSX@px-S(^a}R5Hn_Bn*Y=pw*UBowGBu1T1jv&%XKi%?YbiximIL3 zVF?_BC^{JH!YTF%atp3-wn({HFZ0Pg*{$VYN}w1-7iS%9cj?@yAi8r^8x zS??HuUrUG&zd%pe+Ot?+J;n&dn9xVV{zQ*!OgM`s)>U{4U?H{sz?!DGjxB{vH}vyj zsh`jCKvd`|r{KVE{vD)=8DaWu9wRtO%1}(!W3`y_P$%G~D6_75D9JHAe08bwa>1`& z5_@tg)BP|K-jSNoPBQQMMr4eKeqnG{26 zr*T=KsIa6CA}t%@)d@k4Xog--7kML3N9o#?QdK|A1Pe|462TEIPF=J1x8efvB+br! z%VF8b=5XghI*p{?H;c`Ch$Q}1X%gW_y2!2R^Vp23X`|K6zVGQ-TG*ywY!XIz$vMVh zHz^jI>>gK}OfZ3h4l!t&JSU9>YwphEBkqv?@9L?Uw8vN5zP+=X*WUu(0QyD$<{j0; z#~%|Rg!;52KsY<00Ah2~5fHbPtk2;*4m}}!a}<<^4vAgv2C)94v-!QV(rW>4OM|a0 z47>E`071HG(xaB&rRWWZG}bfdRP-1hwW~zD2YSGB+846$LauJ4$~#kpLqS<VQ2f$Af=R*i!-On-IZv>(9CTEjZHzi6!3 zSya^!@D&J2&h9aO*T844s??4i-V)2f>M7!5Gk24~Ef}Nq%G5^^zQn00|D12p!hnQPXx}O5sN>m}jQL0* zJi|>eeD`>Kh2G?@AxTJdwn$y!i)AMXH7s%!5)^}u?2TBnU0)VD*u49lvnwqbv^K${ zJdS+~>kq|{$4Dc>y)9!fNm3$WbaZ$=M(ZZ=vKD$Ja;i9|ik=*4L;xFmgt>7WEUg7-p;@-`ib3(QSL9-J8@5^bki7Rki1DJzRd2 zePCerG+)K=JD;KdK#?hurk;=&!;j;7&Gm4-%qvG0(ZxV;keYK|hJAfHz?3!M;XF++ zAZ#Rq7?Z4Zf$n{V(6%=l8Sy)8k7=8YKz8NuZtpV}s&?UC9R|9LXYj`;&mRR*aw0EM z7{a6%@TR+}M>GlIU%eZ!ku1`fu1CMycKvMhBsP9pD)&d#pMq%IuV-TEm=o zksE|PdJpRXS@}}h&aF5_Mlc9@gji0f_GeWE4N$-_) zQGPUq@4j)VR$HH zju)Qs?P4)$Y;DVew34Z;@r7oMA_%sv;W{jx%nYqe#X|i_7PYIU(Np9E;}!-yOpGsK zfaVM?Fe0yQn&PXRy4$x(KliuwG3<)h997ynr6xNxN;pLC|{hLI& zKZ@;jsg5c=vx-|ct?}pQcNQ@=%870tPQM>Hyt53TY;JpEF;ki97eP@ezG z{R=YOG3a4{-fnV=r%as5_1AAgBy;By?l6zLv@nXFRV6+lwb(imtyMX7M>(3Dh(9;T z%v6KKR#{(Z3g|RjKACMmO}!0W(|O=57d`&i6@<1|PZnKFqYA||=(u%ui3EKS=$qU$JBQn))Y#tSi`QKWuH z2hNE85A!^4W`anFLs&hUz1ZWIb zQ{mWW^cQZ}y3eo9zp?dJV=Qhc`mzHi5Z=3XnXH+_vh253%8|DtPNUN>Ovle7>Hy3< zE-MdIw_BN=a~z%9t@QPQAsp?Sf&_CO9hYf}(CsuTdu;xSm^C)l4G;aK3#4 zamqV$-cQLU+DEO4k;m?`pqv;ux=`vH|6Dd9?1(tEBLPs~d8^LW(u-LE1TxrEnryB) zdnqv5o2bd8o(hgfiqfG)zU&#xYm%ptdfuD@0h;ur?4t+I&(FF2E`=}T-nMSfcU(Ac z!!oZ?>~7SVcg|UQ2qW|DX&TO}D~+2#ssiWY*SX&oee&;GI1LGe>JIrd4Sxkxbr{%I=?Pb z?3_NVAEbPS>UMk~BtGZu@wqH``>;iny7<<~iKtMM=7w^#f5Sy`9~yol5#edv?~C`AI|Og1i4Ffx}@VRjYc+k{rD-g(YMz>;hR!r_gSr z(!khRwnVG;*{zzU!%r8-+aLS)_Tc1Y?7W@;_-OQSyCrscVJQ=?c%x!__r&xkZ9p$P z;@kXz>FrEui!}Dx&O+W60No6i`wO*x2ZGB1(K?h)Q{#x zK2=ehgUz(24f8Wwzk&)(WC=B$a)(1EWIdViZk>;`!tEAb7~&u{k6t#h^j(PW$U8Yp zX7nr#dBopVY9_MAHj5eUUD^H6>hweDgx#i;GwzLKFEZ~;_P-r6d!qRekYPQLrH3W` z{%853a!S7FY%O+8G%&!(|IO!M0ilxY(i~ShSe1Qx)?V(4Py=eZOsE}Eu^1LD*7C4- z(JSxoYK-*+MAX|AKkVJ*VD*WE&!a*!tv~FS45Um2%B;@MIgHg6UM6EZuR~&4E6YQ4 z#0Ll|scN6Ud_?g04MMI$B~OE+q^*!_*M$wmMLn{(1jAb>(0mYaO_AMiqV)yiW$n+o zdxYZ{p3Kab&B$o$6be5+?q?v9oTg$mbm|)kHlGUHw&YVhYsi$fb)YOfzq08u2zV<; zYq#xzI`YfCmc}%G|lV($$ZpM!gGfT(46T~>Cz9c1F3Vk`p`wlLR(B0Vt zZ^PnC;S)xq2(<00=f7Cn*QRi0j7~ANKTxz4d^n{x2a-~Gd%352yWezS+ap}beh(bn zeI4e_EMO`gcD�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 diff --git a/packages/repositories.config b/packages/repositories.config deleted file mode 100644 index dd2652f..0000000 --- a/packages/repositories.config +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file

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 a|M&3!&k_jmjltYCrw=Co{rCS}3H%S*XXNMr diff --git a/tools/psake/psake.ps1 b/tools/psake/psake.ps1 deleted file mode 100644 index f0d6152..0000000 --- a/tools/psake/psake.ps1 +++ /dev/null @@ -1,46 +0,0 @@ -# Helper script for those who want to run psake without importing the module. -# Example: -# .\psake.ps1 "default.ps1" "BuildHelloWord" "4.0" - -# Must match parameter definitions for psake.psm1/invoke-psake -# otherwise named parameter binding fails -param( - [Parameter(Position=0,Mandatory=0)] - [string]$buildFile = 'default.ps1', - [Parameter(Position=1,Mandatory=0)] - [string[]]$taskList = @(), - [Parameter(Position=2,Mandatory=0)] - [string]$framework, - [Parameter(Position=3,Mandatory=0)] - [switch]$docs = $false, - [Parameter(Position=4,Mandatory=0)] - [System.Collections.Hashtable]$parameters = @{}, - [Parameter(Position=5, Mandatory=0)] - [System.Collections.Hashtable]$properties = @{}, - [Parameter(Position=6, Mandatory=0)] - [alias("init")] - [scriptblock]$initialization = {}, - [Parameter(Position=7, Mandatory=0)] - [switch]$nologo = $false, - [Parameter(Position=8, Mandatory=0)] - [switch]$help = $false, - [Parameter(Position=9, Mandatory=0)] - [string]$scriptPath = $(Split-Path -parent $MyInvocation.MyCommand.path) -) - -# '[p]sake' is the same as 'psake' but $Error is not polluted -remove-module [p]sake -import-module (join-path $scriptPath psake.psm1) -if ($help) { - Get-Help Invoke-psake -full - return -} - -if (-not(test-path $buildFile)) { - $absoluteBuildFile = (join-path $scriptPath $buildFile) - if (test-path $absoluteBuildFile) { - $buildFile = $absoluteBuildFile - } -} - -invoke-psake $buildFile $taskList $framework $docs $parameters $properties $initialization $nologo diff --git a/tools/psake/psake.psm1 b/tools/psake/psake.psm1 deleted file mode 100644 index 96d3efc..0000000 --- a/tools/psake/psake.psm1 +++ /dev/null @@ -1,702 +0,0 @@ -# psake -# Copyright (c) 2012 James Kovacs -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -# THE SOFTWARE. - -#Requires -Version 2.0 - -#-- Public Module Functions --# - -# .ExternalHelp psake.psm1-help.xml -function Invoke-Task -{ - [CmdletBinding()] - param( - [Parameter(Position=0,Mandatory=1)] [string]$taskName - ) - - Assert $taskName ($msgs.error_invalid_task_name) - - $taskKey = $taskName.ToLower() - - if ($currentContext.aliases.Contains($taskKey)) { - $taskName = $currentContext.aliases.$taskKey.Name - $taskKey = $taskName.ToLower() - } - - $currentContext = $psake.context.Peek() - - Assert ($currentContext.tasks.Contains($taskKey)) ($msgs.error_task_name_does_not_exist -f $taskName) - - if ($currentContext.executedTasks.Contains($taskKey)) { return } - - Assert (!$currentContext.callStack.Contains($taskKey)) ($msgs.error_circular_reference -f $taskName) - - $currentContext.callStack.Push($taskKey) - - $task = $currentContext.tasks.$taskKey - - $precondition_is_valid = & $task.Precondition - - if (!$precondition_is_valid) { - Write-ColoredOutput ($msgs.precondition_was_false -f $taskName) -foregroundcolor Cyan - } else { - if ($taskKey -ne 'default') { - - if ($task.PreAction -or $task.PostAction) { - Assert ($task.Action -ne $null) ($msgs.error_missing_action_parameter -f $taskName) - } - - if ($task.Action) { - try { - foreach($childTask in $task.DependsOn) { - Invoke-Task $childTask - } - - $stopwatch = [System.Diagnostics.Stopwatch]::StartNew() - $currentContext.currentTaskName = $taskName - - & $currentContext.taskSetupScriptBlock - - if ($task.PreAction) { - & $task.PreAction - } - - if ($currentContext.config.taskNameFormat -is [ScriptBlock]) { - & $currentContext.config.taskNameFormat $taskName - } else { - Write-ColoredOutput ($currentContext.config.taskNameFormat -f $taskName) -foregroundcolor Cyan - } - - foreach ($variable in $task.requiredVariables) { - Assert ((test-path "variable:$variable") -and ((get-variable $variable).Value -ne $null)) ($msgs.required_variable_not_set -f $variable, $taskName) - } - - & $task.Action - - if ($task.PostAction) { - & $task.PostAction - } - - & $currentContext.taskTearDownScriptBlock - $task.Duration = $stopwatch.Elapsed - } catch { - if ($task.ContinueOnError) { - "-"*70 - Write-ColoredOutput ($msgs.continue_on_error -f $taskName,$_) -foregroundcolor Yellow - "-"*70 - $task.Duration = $stopwatch.Elapsed - } else { - throw $_ - } - } - } else { - # no action was specified but we still execute all the dependencies - foreach($childTask in $task.DependsOn) { - Invoke-Task $childTask - } - } - } else { - foreach($childTask in $task.DependsOn) { - Invoke-Task $childTask - } - } - - Assert (& $task.Postcondition) ($msgs.postcondition_failed -f $taskName) - } - - $poppedTaskKey = $currentContext.callStack.Pop() - Assert ($poppedTaskKey -eq $taskKey) ($msgs.error_corrupt_callstack -f $taskKey,$poppedTaskKey) - - $currentContext.executedTasks.Push($taskKey) -} - -# .ExternalHelp psake.psm1-help.xml -function Exec -{ - [CmdletBinding()] - param( - [Parameter(Position=0,Mandatory=1)][scriptblock]$cmd, - [Parameter(Position=1,Mandatory=0)][string]$errorMessage = ($msgs.error_bad_command -f $cmd) - ) - & $cmd - if ($lastexitcode -ne 0) { - throw ("Exec: " + $errorMessage) - } -} - -# .ExternalHelp psake.psm1-help.xml -function Assert -{ - [CmdletBinding()] - param( - [Parameter(Position=0,Mandatory=1)]$conditionToCheck, - [Parameter(Position=1,Mandatory=1)]$failureMessage - ) - if (!$conditionToCheck) { - throw ("Assert: " + $failureMessage) - } -} - -# .ExternalHelp psake.psm1-help.xml -function Task -{ - [CmdletBinding()] - param( - [Parameter(Position=0,Mandatory=1)][string]$name = $null, - [Parameter(Position=1,Mandatory=0)][scriptblock]$action = $null, - [Parameter(Position=2,Mandatory=0)][scriptblock]$preaction = $null, - [Parameter(Position=3,Mandatory=0)][scriptblock]$postaction = $null, - [Parameter(Position=4,Mandatory=0)][scriptblock]$precondition = {$true}, - [Parameter(Position=5,Mandatory=0)][scriptblock]$postcondition = {$true}, - [Parameter(Position=6,Mandatory=0)][switch]$continueOnError = $false, - [Parameter(Position=7,Mandatory=0)][string[]]$depends = @(), - [Parameter(Position=8,Mandatory=0)][string[]]$requiredVariables = @(), - [Parameter(Position=9,Mandatory=0)][string]$description = $null, - [Parameter(Position=10,Mandatory=0)][string]$alias = $null - ) - if ($name -eq 'default') { - Assert (!$action) ($msgs.error_default_task_cannot_have_action) - } - - $newTask = @{ - Name = $name - DependsOn = $depends - PreAction = $preaction - Action = $action - PostAction = $postaction - Precondition = $precondition - Postcondition = $postcondition - ContinueOnError = $continueOnError - Description = $description - Duration = [System.TimeSpan]::Zero - RequiredVariables = $requiredVariables - Alias = $alias - } - - $taskKey = $name.ToLower() - - $currentContext = $psake.context.Peek() - - Assert (!$currentContext.tasks.ContainsKey($taskKey)) ($msgs.error_duplicate_task_name -f $name) - - $currentContext.tasks.$taskKey = $newTask - - if($alias) - { - $aliasKey = $alias.ToLower() - - Assert (!$currentContext.aliases.ContainsKey($aliasKey)) ($msgs.error_duplicate_alias_name -f $alias) - - $currentContext.aliases.$aliasKey = $newTask - } -} - -# .ExternalHelp psake.psm1-help.xml -function Properties { - [CmdletBinding()] - param( - [Parameter(Position=0,Mandatory=1)][scriptblock]$properties - ) - $psake.context.Peek().properties += $properties -} - -# .ExternalHelp psake.psm1-help.xml -function Include { - [CmdletBinding()] - param( - [Parameter(Position=0,Mandatory=1)][string]$fileNamePathToInclude - ) - Assert (test-path $fileNamePathToInclude -pathType Leaf) ($msgs.error_invalid_include_path -f $fileNamePathToInclude) - $psake.context.Peek().includes.Enqueue((Resolve-Path $fileNamePathToInclude)); -} - -# .ExternalHelp psake.psm1-help.xml -function FormatTaskName { - [CmdletBinding()] - param( - [Parameter(Position=0,Mandatory=1)]$format - ) - $psake.context.Peek().config.taskNameFormat = $format -} - -# .ExternalHelp psake.psm1-help.xml -function TaskSetup { - [CmdletBinding()] - param( - [Parameter(Position=0,Mandatory=1)][scriptblock]$setup - ) - $psake.context.Peek().taskSetupScriptBlock = $setup -} - -# .ExternalHelp psake.psm1-help.xml -function TaskTearDown { - [CmdletBinding()] - param( - [Parameter(Position=0,Mandatory=1)][scriptblock]$teardown - ) - $psake.context.Peek().taskTearDownScriptBlock = $teardown -} - -# .ExternalHelp psake.psm1-help.xml -function Framework { - [CmdletBinding()] - param( - [Parameter(Position=0,Mandatory=1)][string]$framework - ) - $psake.context.Peek().config.framework = $framework -} - -# .ExternalHelp psake.psm1-help.xml -function Invoke-psake { - [CmdletBinding()] - param( - [Parameter(Position = 0, Mandatory = 0)][string] $buildFile, - [Parameter(Position = 1, Mandatory = 0)][string[]] $taskList = @(), - [Parameter(Position = 2, Mandatory = 0)][string] $framework, - [Parameter(Position = 3, Mandatory = 0)][switch] $docs = $false, - [Parameter(Position = 4, Mandatory = 0)][hashtable] $parameters = @{}, - [Parameter(Position = 5, Mandatory = 0)][hashtable] $properties = @{}, - [Parameter(Position = 6, Mandatory = 0)][alias("init")][scriptblock] $initialization = {}, - [Parameter(Position = 7, Mandatory = 0)][switch] $nologo = $false - ) - try { - if (-not $nologo) { - "psake version {0}`nCopyright (c) 2010 James Kovacs`n" -f $psake.version - } - - # If the default.ps1 file exists and the given "buildfile" isn 't found assume that the given - # $buildFile is actually the target Tasks to execute in the default.ps1 script. - if ($buildFile -and !(test-path $buildFile -pathType Leaf) -and (test-path $psake.config_default.buildFileName -pathType Leaf)) { - $taskList = $buildFile.Split(', ') - $buildFile = $psake.config_default.buildFileName - } - - # Execute the build file to set up the tasks and defaults - Assert (test-path $buildFile -pathType Leaf) ($msgs.error_build_file_not_found -f $buildFile) - - $psake.build_script_file = get-item $buildFile - $psake.build_script_dir = $psake.build_script_file.DirectoryName - $psake.build_success = $false - - $psake.context.push(@{ - "taskSetupScriptBlock" = {}; - "taskTearDownScriptBlock" = {}; - "executedTasks" = new-object System.Collections.Stack; - "callStack" = new-object System.Collections.Stack; - "originalEnvPath" = $env:path; - "originalDirectory" = get-location; - "originalErrorActionPreference" = $global:ErrorActionPreference; - "tasks" = @{}; - "aliases" = @{}; - "properties" = @(); - "includes" = new-object System.Collections.Queue; - "config" = Create-ConfigurationForNewContext $buildFile $framework - }) - - Load-Configuration $psake.build_script_dir - - Load-Modules - - $stopwatch = [System.Diagnostics.Stopwatch]::StartNew() - - set-location $psake.build_script_dir - - $frameworkOldValue = $framework - . $psake.build_script_file.FullName - - $currentContext = $psake.context.Peek() - - if ($framework -ne $frameworkOldValue) { - write-coloredoutput $msgs.warning_deprecated_framework_variable -foregroundcolor Yellow - $currentContext.config.framework = $framework - } - - if ($docs) { - Write-Documentation - Cleanup-Environment - return - } - - Configure-BuildEnvironment - - while ($currentContext.includes.Count -gt 0) { - $includeFilename = $currentContext.includes.Dequeue() - . $includeFilename - } - - foreach ($key in $parameters.keys) { - if (test-path "variable:\$key") { - set-item -path "variable:\$key" -value $parameters.$key | out-null - } else { - new-item -path "variable:\$key" -value $parameters.$key | out-null - } - } - - # The initial dot (.) indicates that variables initialized/modified in the propertyBlock are available in the parent scope. - foreach ($propertyBlock in $currentContext.properties) { - . $propertyBlock - } - - foreach ($key in $properties.keys) { - if (test-path "variable:\$key") { - set-item -path "variable:\$key" -value $properties.$key | out-null - } - } - - # Simple dot sourcing will not work. We have to force the script block into our - # module's scope in order to initialize variables properly. - . $MyInvocation.MyCommand.Module $initialization - - # Execute the list of tasks or the default task - if ($taskList) { - foreach ($task in $taskList) { - invoke-task $task - } - } elseif ($currentContext.tasks.default) { - invoke-task default - } else { - throw $msgs.error_no_default_task - } - - Write-ColoredOutput ("`n" + $msgs.build_success + "`n") -foregroundcolor Green - - Write-TaskTimeSummary $stopwatch.Elapsed - - $psake.build_success = $true - } catch { - $currentConfig = Get-CurrentConfigurationOrDefault - if ($currentConfig.verboseError) { - $error_message = "{0}: An Error Occurred. See Error Details Below: `n" -f (Get-Date) - $error_message += ("-" * 70) + "`n" - $error_message += Resolve-Error $_ - $error_message += ("-" * 70) + "`n" - $error_message += "Script Variables" + "`n" - $error_message += ("-" * 70) + "`n" - $error_message += get-variable -scope script | format-table | out-string - } else { - # ($_ | Out-String) gets error messages with source information included. - $error_message = "{0}: An Error Occurred: `n{1}" -f (Get-Date), ($_ | Out-String) - } - - $psake.build_success = $false - - if (!$psake.run_by_psake_build_tester) { - # if we are running in a nested scope (i.e. running a psake script from a psake script) then we need to re-throw the exception - # so that the parent script will fail otherwise the parent script will report a successful build - $inNestedScope = ($psake.context.count -gt 1) - if ( $inNestedScope ) { - throw $_ - } else { - Write-ColoredOutput $error_message -foregroundcolor Red - } - - } - } finally { - Cleanup-Environment - } -} - -#-- Private Module Functions --# -function Write-ColoredOutput { - param( - [string] $message, - [System.ConsoleColor] $foregroundcolor - ) - - $currentConfig = Get-CurrentConfigurationOrDefault - if ($currentConfig.coloredOutput -eq $true) { - if (($Host.UI -ne $null) -and ($Host.UI.RawUI -ne $null)) { - $previousColor = $Host.UI.RawUI.ForegroundColor - $Host.UI.RawUI.ForegroundColor = $foregroundcolor - } - } - - $message - - if ($previousColor -ne $null) { - $Host.UI.RawUI.ForegroundColor = $previousColor - } -} - -function Load-Modules { - $currentConfig = $psake.context.peek().config - if ($currentConfig.modules) { - $currentConfig.modules | foreach { - resolve-path $_ | foreach { - "Loading module: $_" - $module = import-module $_ -passthru - if (!$module) { - throw ($msgs.error_loading_module -f $_.Name) - } - } - } - "" - } -} - -function Load-Configuration { - param( - [string] $configdir = $PSScriptRoot - ) - - $psakeConfigFilePath = (join-path $configdir "psake-config.ps1") - - if (test-path $psakeConfigFilePath -pathType Leaf) { - try { - $config = Get-CurrentConfigurationOrDefault - . $psakeConfigFilePath - } catch { - throw "Error Loading Configuration from psake-config.ps1: " + $_ - } - } -} - -function Get-CurrentConfigurationOrDefault() { - if ($psake.context.count -gt 0) { - return $psake.context.peek().config - } else { - return $psake.config_default - } -} - -function Create-ConfigurationForNewContext { - param( - [string] $buildFile, - [string] $framework - ) - - $previousConfig = Get-CurrentConfigurationOrDefault - - $config = new-object psobject -property @{ - buildFileName = $previousConfig.buildFileName; - framework = $previousConfig.framework; - taskNameFormat = $previousConfig.taskNameFormat; - verboseError = $previousConfig.verboseError; - coloredOutput = $previousConfig.coloredOutput; - modules = $previousConfig.modules - } - - if ($framework) { - $config.framework = $framework; - } - - if ($buildFile) { - $config.buildFileName = $buildFile; - } - - return $config -} - -function Configure-BuildEnvironment { - $framework = $psake.context.peek().config.framework - if ($framework.Length -ne 3 -and $framework.Length -ne 6) { - throw ($msgs.error_invalid_framework -f $framework) - } - $versionPart = $framework.Substring(0, 3) - $bitnessPart = $framework.Substring(3) - $versions = $null - switch ($versionPart) { - '1.0' { - $versions = @('v1.0.3705') - } - '1.1' { - $versions = @('v1.1.4322') - } - '2.0' { - $versions = @('v2.0.50727') - } - '3.0' { - $versions = @('v2.0.50727') - } - '3.5' { - $versions = @('v3.5', 'v2.0.50727') - } - '4.0' { - $versions = @('v4.0.30319') - } - default { - throw ($msgs.error_unknown_framework -f $versionPart, $framework) - } - } - - $bitness = 'Framework' - if ($versionPart -ne '1.0' -and $versionPart -ne '1.1') { - switch ($bitnessPart) { - 'x86' { - $bitness = 'Framework' - } - 'x64' { - $bitness = 'Framework64' - } - { [string]::IsNullOrEmpty($_) } { - $ptrSize = [System.IntPtr]::Size - switch ($ptrSize) { - 4 { - $bitness = 'Framework' - } - 8 { - $bitness = 'Framework64' - } - default { - throw ($msgs.error_unknown_pointersize -f $ptrSize) - } - } - } - default { - throw ($msgs.error_unknown_bitnesspart -f $bitnessPart, $framework) - } - } - } - $frameworkDirs = $versions | foreach { "$env:windir\Microsoft.NET\$bitness\$_\" } - - $frameworkDirs | foreach { Assert (test-path $_ -pathType Container) ($msgs.error_no_framework_install_dir_found -f $_)} - - $env:path = ($frameworkDirs -join ";") + ";$env:path" - # if any error occurs in a PS function then "stop" processing immediately - # this does not effect any external programs that return a non-zero exit code - $global:ErrorActionPreference = "Stop" -} - -function Cleanup-Environment { - if ($psake.context.Count -gt 0) { - $currentContext = $psake.context.Peek() - $env:path = $currentContext.originalEnvPath - Set-Location $currentContext.originalDirectory - $global:ErrorActionPreference = $currentContext.originalErrorActionPreference - [void] $psake.context.Pop() - } -} - -# borrowed from Jeffrey Snover http://blogs.msdn.com/powershell/archive/2006/12/07/resolve-error.aspx -function Resolve-Error($ErrorRecord = $Error[0]) { - $error_message = "`nErrorRecord:{0}ErrorRecord.InvocationInfo:{1}Exception:{2}" - $formatted_errorRecord = $ErrorRecord | format-list * -force | out-string - $formatted_invocationInfo = $ErrorRecord.InvocationInfo | format-list * -force | out-string - $formatted_exception = "" - $Exception = $ErrorRecord.Exception - for ($i = 0; $Exception; $i++, ($Exception = $Exception.InnerException)) { - $formatted_exception += ("$i" * 70) + "`n" - $formatted_exception += $Exception | format-list * -force | out-string - $formatted_exception += "`n" - } - - return $error_message -f $formatted_errorRecord, $formatted_invocationInfo, $formatted_exception -} - -function Write-Documentation { - $currentContext = $psake.context.Peek() - - if ($currentContext.tasks.default) { - $defaultTaskDependencies = $currentContext.tasks.default.DependsOn - } else { - $defaultTaskDependencies = @() - } - - $currentContext.tasks.Keys | foreach-object { - if ($_ -eq "default") { - return - } - - $task = $currentContext.tasks.$_ - new-object PSObject -property @{ - Name = $task.Name; - Description = $task.Description; - "Depends On" = $task.DependsOn -join ", " - Default = if ($defaultTaskDependencies -contains $task.Name) { $true } - } - } | sort 'Name' | format-table -autoSize -property Name,Description,"Depends On",Default -} - -function Write-TaskTimeSummary($invokePsakeDuration) { - "-" * 70 - "Build Time Report" - "-" * 70 - $list = @() - $currentContext = $psake.context.Peek() - while ($currentContext.executedTasks.Count -gt 0) { - $taskKey = $currentContext.executedTasks.Pop() - $task = $currentContext.tasks.$taskKey - if ($taskKey -eq "default") { - continue - } - $list += new-object PSObject -property @{ - Name = $task.Name; - Duration = $task.Duration - } - } - [Array]::Reverse($list) - $list += new-object PSObject -property @{ - Name = "Total:"; - Duration = $invokePsakeDuration - } - # using "out-string | where-object" to filter out the blank line that format-table prepends - $list | format-table -autoSize -property Name,Duration | out-string -stream | where-object { $_ } -} - -DATA msgs { -convertfrom-stringdata @' - error_invalid_task_name = Task name should not be null or empty string. - error_task_name_does_not_exist = Task {0} does not exist. - error_circular_reference = Circular reference found for task {0}. - error_missing_action_parameter = Action parameter must be specified when using PreAction or PostAction parameters for task {0}. - error_corrupt_callstack = Call stack was corrupt. Expected {0}, but got {1}. - error_invalid_framework = Invalid .NET Framework version, {0} specified. - error_unknown_framework = Unknown .NET Framework version, {0} specified in {1}. - error_unknown_pointersize = Unknown pointer size ({0}) returned from System.IntPtr. - error_unknown_bitnesspart = Unknown .NET Framework bitness, {0}, specified in {1}. - error_no_framework_install_dir_found = No .NET Framework installation directory found at {0}. - error_bad_command = Error executing command {0}. - error_default_task_cannot_have_action = 'default' task cannot specify an action. - error_duplicate_task_name = Task {0} has already been defined. - error_duplicate_alias_name = Alias {0} has already been defined. - error_invalid_include_path = Unable to include {0}. File not found. - error_build_file_not_found = Could not find the build file {0}. - error_no_default_task = 'default' task required. - error_loading_module = Error loading module {0}. - warning_deprecated_framework_variable = Warning: Using global variable $framework to set .NET framework version used is deprecated. Instead use Framework function or configuration file psake-config.ps1. - required_variable_not_set = Variable {0} must be set to run task {1}. - postcondition_failed = Postcondition failed for task {0}. - precondition_was_false = Precondition was false, not executing task {0}. - continue_on_error = Error in task {0}. {1} - build_success = Build Succeeded! -'@ -} - -import-localizeddata -bindingvariable msgs -erroraction silentlycontinue - -$script:psake = @{} -$psake.version = "4.2.0" # contains the current version of psake -$psake.context = new-object system.collections.stack # holds onto the current state of all variables -$psake.run_by_psake_build_tester = $false # indicates that build is being run by psake-BuildTester -$psake.config_default = new-object psobject -property @{ - buildFileName = "default.ps1"; - framework = "4.0"; - taskNameFormat = "Executing {0}"; - verboseError = $false; - coloredOutput = $true; - modules = $null; -} # contains default configuration, can be overriden in psake-config.ps1 in directory with psake.psm1 or in directory with current build script - -$psake.build_success = $false # indicates that the current build was successful -$psake.build_script_file = $null # contains a System.IO.FileInfo for the current build script -$psake.build_script_dir = "" # contains a string with fully-qualified path to current build script - -Load-Configuration - -export-modulemember -function invoke-psake, invoke-task, task, properties, include, formattaskname, tasksetup, taskteardown, framework, assert, exec -variable psake From de7729debb37fa69a3419f17de39373a9c50c6da Mon Sep 17 00:00:00 2001 From: Olavo Rocha Date: Sat, 21 Oct 2017 22:08:08 -0300 Subject: [PATCH 4/6] Readme fix --- ReadMe.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/ReadMe.md b/ReadMe.md index aff4c10..eced8af 100644 --- a/ReadMe.md +++ b/ReadMe.md @@ -73,7 +73,7 @@ DTD validation errors are written to this log file. The command line executable version has the following options: - donet sgmlreader.dll [InputUri] [OutputFile] + dotnet sgmlreader.dll [InputUri] [OutputFile] * -e "file" : Specifies a file to write error output to. The default is to generate no errors. The special name "$stderr" redirects errors to stderr @@ -97,17 +97,17 @@ the default being ".xml". Converts all .htm files to corresponding .xml files using the built in HTML DTD. - donet sgmlreader.dll -html *.htm *.xml + dotnet sgmlreader.dll -html *.htm *.xml Converts all the MSN home page to XML storing the result in the local file "msn.xml". - donet sgmlreader.dll -html http://www.msn.com -proxy myproxy:80 msn.xml + dotnet sgmlreader.dll -html http://www.msn.com -proxy myproxy:80 msn.xml Converts the given OFX file to XML using the SGML DTD "ofx160.dtd" specified in the test.ofx file. - donet sgmlreader.dll -dtd ofx160.dtd test.ofx ofx.xml + dotnet sgmlreader.dll -dtd ofx160.dtd test.ofx ofx.xml ## Community If you have questions, please post them on From 26d21bc836195d176467058bfe36f340bf2998b5 Mon Sep 17 00:00:00 2001 From: Olavo Rocha Date: Sun, 22 Oct 2017 00:57:46 -0300 Subject: [PATCH 5/6] Ignore packages and delete them from source --- .gitignore | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 9e743e9..0b7d264 100644 --- a/.gitignore +++ b/.gitignore @@ -2,6 +2,7 @@ bin/ **/bin/ */Properties/ dist/ +packages/ *resharper.user [Dd]ebug/ [Rr]elease/ @@ -24,5 +25,5 @@ test-results/*.xml build/ .vs .vscode -packages/ + From 8ba3cafc1da02b5ef28c190f701b3c10d6a91fd9 Mon Sep 17 00:00:00 2001 From: Olavo Rocha Date: Sun, 22 Oct 2017 00:58:30 -0300 Subject: [PATCH 6/6] Adjustments to package ignore --- packages/NUnit.2.5.10.11092/Logo.ico | Bin 1078 -> 0 bytes .../NUnit.2.5.10.11092.nupkg | Bin 824211 -> 0 bytes .../NUnit.2.5.10.11092/NUnitFitTests.html | 277 - packages/NUnit.2.5.10.11092/fit-license.txt | 342 - .../lib/nunit.framework.dll | Bin 139264 -> 0 bytes .../lib/nunit.framework.xml | 10407 ------ .../NUnit.2.5.10.11092/lib/nunit.mocks.dll | Bin 20480 -> 0 bytes .../lib/pnunit.framework.dll | Bin 6656 -> 0 bytes packages/NUnit.2.5.10.11092/license.txt | 15 - .../tools/NUnitTests.VisualState.xml | 124 - .../tools/NUnitTests.config | 85 - .../NUnit.2.5.10.11092/tools/NUnitTests.nunit | 14 - .../NUnit.2.5.10.11092/tools/TestResult.xml | 5971 ---- packages/NUnit.2.5.10.11092/tools/agent.conf | 4 - .../NUnit.2.5.10.11092/tools/agent.log.conf | 18 - .../tools/launcher.log.conf | 18 - .../NUnit.2.5.10.11092/tools/lib/Failure.png | Bin 1445 -> 0 bytes .../NUnit.2.5.10.11092/tools/lib/Ignored.png | Bin 1444 -> 0 bytes .../tools/lib/Inconclusive.png | Bin 1436 -> 0 bytes .../NUnit.2.5.10.11092/tools/lib/Skipped.png | Bin 1405 -> 0 bytes .../NUnit.2.5.10.11092/tools/lib/Success.png | Bin 1439 -> 0 bytes packages/NUnit.2.5.10.11092/tools/lib/fit.dll | Bin 49152 -> 0 bytes .../NUnit.2.5.10.11092/tools/lib/log4net.dll | Bin 258048 -> 0 bytes .../tools/lib/nunit-console-runner.dll | Bin 36864 -> 0 bytes .../tools/lib/nunit-gui-runner.dll | Bin 188416 -> 0 bytes .../tools/lib/nunit.core.dll | Bin 139264 -> 0 bytes .../tools/lib/nunit.core.interfaces.dll | Bin 57344 -> 0 bytes .../tools/lib/nunit.fixtures.dll | Bin 9728 -> 0 bytes .../tools/lib/nunit.uiexception.dll | Bin 90112 -> 0 bytes .../tools/lib/nunit.uikit.dll | Bin 258048 -> 0 bytes .../tools/lib/nunit.util.dll | Bin 126976 -> 0 bytes .../tools/nunit-agent-x86.exe | Bin 7680 -> 0 bytes .../tools/nunit-agent-x86.exe.config | 69 - .../NUnit.2.5.10.11092/tools/nunit-agent.exe | Bin 7680 -> 0 bytes .../tools/nunit-agent.exe.config | 69 - .../tools/nunit-console-x86.exe | Bin 4608 -> 0 bytes .../tools/nunit-console-x86.exe.config | 69 - .../tools/nunit-console.exe | Bin 4608 -> 0 bytes .../tools/nunit-console.exe.config | 69 - .../NUnit.2.5.10.11092/tools/nunit-x86.exe | Bin 5632 -> 0 bytes .../tools/nunit-x86.exe.config | 83 - packages/NUnit.2.5.10.11092/tools/nunit.exe | Bin 5632 -> 0 bytes .../NUnit.2.5.10.11092/tools/nunit.exe.config | 83 - .../tools/nunit.framework.dll | Bin 139264 -> 0 bytes .../NUnit.2.5.10.11092/tools/pnunit-agent.exe | Bin 13824 -> 0 bytes .../tools/pnunit-agent.exe.config | 77 - .../tools/pnunit-launcher.exe | Bin 24576 -> 0 bytes .../tools/pnunit-launcher.exe.config | 77 - .../tools/pnunit.framework.dll | Bin 6656 -> 0 bytes .../NUnit.2.5.10.11092/tools/pnunit.tests.dll | Bin 4608 -> 0 bytes packages/NUnit.2.5.10.11092/tools/runFile.exe | Bin 3072 -> 0 bytes .../tools/runFile.exe.config | 43 - .../NUnit.2.5.10.11092/tools/runpnunit.bat | 2 - packages/NUnit.2.5.10.11092/tools/test.conf | 24 - packages/log4net.1.2.10/lib/1.0/log4net.dll | Bin 266240 -> 0 bytes packages/log4net.1.2.10/lib/1.0/log4net.xml | 28655 ---------------- packages/log4net.1.2.10/lib/1.1/log4net.dll | Bin 266240 -> 0 bytes packages/log4net.1.2.10/lib/1.1/log4net.xml | 28655 ---------------- packages/log4net.1.2.10/lib/2.0/log4net.dll | Bin 270336 -> 0 bytes packages/log4net.1.2.10/lib/2.0/log4net.xml | 28655 ---------------- packages/log4net.1.2.10/log4net.1.2.10.nupkg | Bin 963871 -> 0 bytes packages/repositories.config | 4 - 62 files changed, 103909 deletions(-) delete mode 100644 packages/NUnit.2.5.10.11092/Logo.ico delete mode 100644 packages/NUnit.2.5.10.11092/NUnit.2.5.10.11092.nupkg delete mode 100644 packages/NUnit.2.5.10.11092/NUnitFitTests.html delete mode 100644 packages/NUnit.2.5.10.11092/fit-license.txt delete mode 100644 packages/NUnit.2.5.10.11092/lib/nunit.framework.dll delete mode 100644 packages/NUnit.2.5.10.11092/lib/nunit.framework.xml delete mode 100644 packages/NUnit.2.5.10.11092/lib/nunit.mocks.dll delete mode 100644 packages/NUnit.2.5.10.11092/lib/pnunit.framework.dll delete mode 100644 packages/NUnit.2.5.10.11092/license.txt delete mode 100644 packages/NUnit.2.5.10.11092/tools/NUnitTests.VisualState.xml delete mode 100644 packages/NUnit.2.5.10.11092/tools/NUnitTests.config delete mode 100644 packages/NUnit.2.5.10.11092/tools/NUnitTests.nunit delete mode 100644 packages/NUnit.2.5.10.11092/tools/TestResult.xml delete mode 100644 packages/NUnit.2.5.10.11092/tools/agent.conf delete mode 100644 packages/NUnit.2.5.10.11092/tools/agent.log.conf delete mode 100644 packages/NUnit.2.5.10.11092/tools/launcher.log.conf delete mode 100644 packages/NUnit.2.5.10.11092/tools/lib/Failure.png delete mode 100644 packages/NUnit.2.5.10.11092/tools/lib/Ignored.png delete mode 100644 packages/NUnit.2.5.10.11092/tools/lib/Inconclusive.png delete mode 100644 packages/NUnit.2.5.10.11092/tools/lib/Skipped.png delete mode 100644 packages/NUnit.2.5.10.11092/tools/lib/Success.png delete mode 100644 packages/NUnit.2.5.10.11092/tools/lib/fit.dll delete mode 100644 packages/NUnit.2.5.10.11092/tools/lib/log4net.dll delete mode 100644 packages/NUnit.2.5.10.11092/tools/lib/nunit-console-runner.dll delete mode 100644 packages/NUnit.2.5.10.11092/tools/lib/nunit-gui-runner.dll delete mode 100644 packages/NUnit.2.5.10.11092/tools/lib/nunit.core.dll delete mode 100644 packages/NUnit.2.5.10.11092/tools/lib/nunit.core.interfaces.dll delete mode 100644 packages/NUnit.2.5.10.11092/tools/lib/nunit.fixtures.dll delete mode 100644 packages/NUnit.2.5.10.11092/tools/lib/nunit.uiexception.dll delete mode 100644 packages/NUnit.2.5.10.11092/tools/lib/nunit.uikit.dll delete mode 100644 packages/NUnit.2.5.10.11092/tools/lib/nunit.util.dll delete mode 100644 packages/NUnit.2.5.10.11092/tools/nunit-agent-x86.exe delete mode 100644 packages/NUnit.2.5.10.11092/tools/nunit-agent-x86.exe.config delete mode 100644 packages/NUnit.2.5.10.11092/tools/nunit-agent.exe delete mode 100644 packages/NUnit.2.5.10.11092/tools/nunit-agent.exe.config delete mode 100644 packages/NUnit.2.5.10.11092/tools/nunit-console-x86.exe delete mode 100644 packages/NUnit.2.5.10.11092/tools/nunit-console-x86.exe.config delete mode 100644 packages/NUnit.2.5.10.11092/tools/nunit-console.exe delete mode 100644 packages/NUnit.2.5.10.11092/tools/nunit-console.exe.config delete mode 100644 packages/NUnit.2.5.10.11092/tools/nunit-x86.exe delete mode 100644 packages/NUnit.2.5.10.11092/tools/nunit-x86.exe.config delete mode 100644 packages/NUnit.2.5.10.11092/tools/nunit.exe delete mode 100644 packages/NUnit.2.5.10.11092/tools/nunit.exe.config delete mode 100644 packages/NUnit.2.5.10.11092/tools/nunit.framework.dll delete mode 100644 packages/NUnit.2.5.10.11092/tools/pnunit-agent.exe delete mode 100644 packages/NUnit.2.5.10.11092/tools/pnunit-agent.exe.config delete mode 100644 packages/NUnit.2.5.10.11092/tools/pnunit-launcher.exe delete mode 100644 packages/NUnit.2.5.10.11092/tools/pnunit-launcher.exe.config delete mode 100644 packages/NUnit.2.5.10.11092/tools/pnunit.framework.dll delete mode 100644 packages/NUnit.2.5.10.11092/tools/pnunit.tests.dll delete mode 100644 packages/NUnit.2.5.10.11092/tools/runFile.exe delete mode 100644 packages/NUnit.2.5.10.11092/tools/runFile.exe.config delete mode 100644 packages/NUnit.2.5.10.11092/tools/runpnunit.bat delete mode 100644 packages/NUnit.2.5.10.11092/tools/test.conf delete mode 100644 packages/log4net.1.2.10/lib/1.0/log4net.dll delete mode 100644 packages/log4net.1.2.10/lib/1.0/log4net.xml delete mode 100644 packages/log4net.1.2.10/lib/1.1/log4net.dll delete mode 100644 packages/log4net.1.2.10/lib/1.1/log4net.xml delete mode 100644 packages/log4net.1.2.10/lib/2.0/log4net.dll delete mode 100644 packages/log4net.1.2.10/lib/2.0/log4net.xml delete mode 100644 packages/log4net.1.2.10/log4net.1.2.10.nupkg delete mode 100644 packages/repositories.config diff --git a/packages/NUnit.2.5.10.11092/Logo.ico b/packages/NUnit.2.5.10.11092/Logo.ico deleted file mode 100644 index 13c4ff9d5b03bd16bf4ebb2a909b5be799125457..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1078 zcmcJNy^(`35QP`t#U4r^^05(PUpuq&kJ**jfczny{h|T28&q986dB8F<0uc|!I|e7t4J=dHVQG+;5uQ=t0e9PU_K2N&g@xa|%o|87K zEwdlm8y?v(yDacX`<|Br@AA)_6F%}}X|G!A$*WrT@XSl_4fW-*cr33u*BlSXHs>S$ uhEL7;twDPw+#(|wa^m+bdD&TCd90TIH-#xAtk%$|)SGWtJo4>4@7jM=Ne>tR diff --git a/packages/NUnit.2.5.10.11092/NUnit.2.5.10.11092.nupkg b/packages/NUnit.2.5.10.11092/NUnit.2.5.10.11092.nupkg deleted file mode 100644 index 7e9a7773f57137ed34e6999503a26b5a520526e3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 824211 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�>1e5yE=dmoC^F@ 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