From 74ac3bb599c1cab422881aa10522fefb729b77f5 Mon Sep 17 00:00:00 2001 From: "kay.one" Date: Wed, 22 Sep 2010 20:19:47 -0700 Subject: [PATCH] Initial Commit --- .gitignore | 9 + NzbDrone.Core.Test/NzbDrone.Core.Test.csproj | 66 + NzbDrone.Core.Test/Properties/AssemblyInfo.cs | 36 + NzbDrone.Core.Test/TvDbControllerTest.cs | 27 + .../Controllers/DbConfigController.cs | 68 + NzbDrone.Core/Controllers/DiskController.cs | 35 + .../Controllers/FileConfigController.cs | 65 + .../Controllers/IConfigController.cs | 9 + NzbDrone.Core/Controllers/IDiskController.cs | 12 + .../Controllers/ISeriesController.cs | 11 + NzbDrone.Core/Controllers/ITvDbController.cs | 11 + NzbDrone.Core/Controllers/SeriesController.cs | 67 + NzbDrone.Core/Controllers/TvDbController.cs | 33 + NzbDrone.Core/Libraries/CassiniDev-lib.dll | Bin 0 -> 118784 bytes NzbDrone.Core/Libraries/NLog.dll | Bin 0 -> 300544 bytes NzbDrone.Core/Libraries/NLog.pdb | Bin 0 -> 736768 bytes NzbDrone.Core/Libraries/NLog.xml | 11108 ++++++ NzbDrone.Core/Libraries/Ninject.Web.Mvc.dll | Bin 0 -> 9728 bytes NzbDrone.Core/Libraries/Ninject.Web.Mvc.pdb | Bin 0 -> 17920 bytes NzbDrone.Core/Libraries/Ninject.dll | Bin 0 -> 96256 bytes NzbDrone.Core/Libraries/Ninject.xml | 4026 +++ NzbDrone.Core/Libraries/ObjectListView.dll | Bin 0 -> 291840 bytes NzbDrone.Core/Libraries/RSS.NET.XML | 1388 + NzbDrone.Core/Libraries/RSS.NET.dll | Bin 0 -> 57344 bytes NzbDrone.Core/Libraries/SubSonic.Core.XML | 4569 +++ NzbDrone.Core/Libraries/SubSonic.Core.dll | Bin 0 -> 285184 bytes .../Libraries/System.Data.SQLite.Linq.dll | Bin 0 -> 174080 bytes .../Libraries/System.Data.SQLite.XML | 3634 ++ .../Libraries/System.Data.SQLite.dll | Bin 0 -> 904704 bytes NzbDrone.Core/Libraries/TvdbLib.XML | 8138 +++++ NzbDrone.Core/Libraries/TvdbLib.dll | Bin 0 -> 207360 bytes NzbDrone.Core/Libraries/TvdbLib.pdb | Bin 0 -> 529920 bytes NzbDrone.Core/Libraries/log4net.dll | Bin 0 -> 270336 bytes NzbDrone.Core/Libraries/log4net.xml | 28655 ++++++++++++++++ NzbDrone.Core/Main.cs | 34 + NzbDrone.Core/NzbDrone.Core.csproj | 205 + NzbDrone.Core/Properties/AssemblyInfo.cs | 57 + NzbDrone.Core/Repository/Config.cs | 22 + NzbDrone.Core/Repository/Series.cs | 55 + NzbDrone.Core/app.config | 3 + NzbDrone.Web.Test/App.config | 14 + .../Controllers/AccountControllerTest.cs | 402 + .../Controllers/HomeControllerTest.cs | 42 + NzbDrone.Web.Test/NzbDrone.Web.Tests.csproj | 78 + NzbDrone.Web.Test/Properties/AssemblyInfo.cs | 35 + NzbDrone.Web/Bin/NLog.dll | Bin 0 -> 300544 bytes NzbDrone.Web/Bin/NLog.pdb | Bin 0 -> 736768 bytes NzbDrone.Web/Bin/NLog.xml | 11108 ++++++ NzbDrone.Web/Bin/Ninject.Web.Mvc.dll | Bin 0 -> 9728 bytes NzbDrone.Web/Bin/Ninject.Web.Mvc.pdb | Bin 0 -> 17920 bytes NzbDrone.Web/Bin/Ninject.dll | Bin 0 -> 96256 bytes NzbDrone.Web/Bin/Ninject.xml | 4026 +++ NzbDrone.Web/Bin/NzbDrone.Core.dll | Bin 0 -> 13312 bytes NzbDrone.Web/Bin/NzbDrone.Core.pdb | Bin 0 -> 28160 bytes NzbDrone.Web/Bin/NzbDrone.Web.dll | Bin 0 -> 20992 bytes NzbDrone.Web/Bin/NzbDrone.Web.pdb | Bin 0 -> 30208 bytes NzbDrone.Web/Bin/SubSonic.Core.dll | Bin 0 -> 285184 bytes NzbDrone.Web/Bin/SubSonic.Core.xml | 4569 +++ NzbDrone.Web/Bin/TvdbLib.dll | Bin 0 -> 207360 bytes NzbDrone.Web/Bin/TvdbLib.pdb | Bin 0 -> 529920 bytes NzbDrone.Web/Bin/TvdbLib.xml | 8138 +++++ NzbDrone.Web/Bin/log4net.dll | Bin 0 -> 270336 bytes NzbDrone.Web/Content/Site.css | 349 + NzbDrone.Web/Controllers/AccountController.cs | 153 + NzbDrone.Web/Controllers/HomeController.cs | 24 + NzbDrone.Web/Controllers/SeriesController.cs | 121 + .../Controllers/SettingsController.cs | 20 + NzbDrone.Web/Global.asax | 1 + NzbDrone.Web/Global.asax.cs | 48 + NzbDrone.Web/Models/AccountModels.cs | 283 + NzbDrone.Web/Models/SettingsModels.cs | 75 + NzbDrone.Web/NzbDrone.Web.csproj | 155 + NzbDrone.Web/Properties/AssemblyInfo.cs | 35 + NzbDrone.Web/Scripts/MicrosoftAjax.debug.js | 7117 ++++ NzbDrone.Web/Scripts/MicrosoftAjax.js | 6 + .../Scripts/MicrosoftMvcAjax.debug.js | 408 + NzbDrone.Web/Scripts/MicrosoftMvcAjax.js | 25 + .../Scripts/MicrosoftMvcValidation.debug.js | 881 + .../Scripts/MicrosoftMvcValidation.js | 55 + NzbDrone.Web/Scripts/jquery-1.4.1-vsdoc.js | 8061 +++++ NzbDrone.Web/Scripts/jquery-1.4.1.js | 6111 ++++ NzbDrone.Web/Scripts/jquery-1.4.1.min.js | 167 + NzbDrone.Web/Scripts/jquery.validate-vsdoc.js | 1292 + NzbDrone.Web/Scripts/jquery.validate.js | 1155 + NzbDrone.Web/Scripts/jquery.validate.min.js | 31 + .../Views/Account/ChangePassword.aspx | 52 + .../Views/Account/ChangePasswordSuccess.aspx | 12 + NzbDrone.Web/Views/Account/LogOn.aspx | 46 + NzbDrone.Web/Views/Account/Register.aspx | 57 + NzbDrone.Web/Views/Home/About.aspx | 12 + NzbDrone.Web/Views/Home/Index.aspx | 12 + NzbDrone.Web/Views/Series/SeriesView.aspx | 77 + NzbDrone.Web/Views/Shared/Error.aspx | 11 + .../Views/Shared/LogOnUserControl.ascx | 14 + NzbDrone.Web/Views/Shared/Site.Master | 40 + NzbDrone.Web/Views/Web.config | 35 + NzbDrone.Web/Web.Debug.config | 30 + NzbDrone.Web/Web.Release.config | 31 + NzbDrone.Web/Web.config | 78 + NzbDrone.sln | 100 + NzbDrone/CassiniDev-lib.dll | Bin 0 -> 118784 bytes NzbDrone/NzbDrone.csproj | 76 + NzbDrone/Program.cs | 21 + NzbDrone/Properties/AssemblyInfo.cs | 35 + NzbDrone/app.config | 9 + SABSync.5.1.ReSharper | 3 + 106 files changed, 118079 insertions(+) create mode 100644 .gitignore create mode 100644 NzbDrone.Core.Test/NzbDrone.Core.Test.csproj create mode 100644 NzbDrone.Core.Test/Properties/AssemblyInfo.cs create mode 100644 NzbDrone.Core.Test/TvDbControllerTest.cs create mode 100644 NzbDrone.Core/Controllers/DbConfigController.cs create mode 100644 NzbDrone.Core/Controllers/DiskController.cs create mode 100644 NzbDrone.Core/Controllers/FileConfigController.cs create mode 100644 NzbDrone.Core/Controllers/IConfigController.cs create mode 100644 NzbDrone.Core/Controllers/IDiskController.cs create mode 100644 NzbDrone.Core/Controllers/ISeriesController.cs create mode 100644 NzbDrone.Core/Controllers/ITvDbController.cs create mode 100644 NzbDrone.Core/Controllers/SeriesController.cs create mode 100644 NzbDrone.Core/Controllers/TvDbController.cs create mode 100644 NzbDrone.Core/Libraries/CassiniDev-lib.dll create mode 100644 NzbDrone.Core/Libraries/NLog.dll create mode 100644 NzbDrone.Core/Libraries/NLog.pdb create mode 100644 NzbDrone.Core/Libraries/NLog.xml create mode 100644 NzbDrone.Core/Libraries/Ninject.Web.Mvc.dll create mode 100644 NzbDrone.Core/Libraries/Ninject.Web.Mvc.pdb create mode 100644 NzbDrone.Core/Libraries/Ninject.dll create mode 100644 NzbDrone.Core/Libraries/Ninject.xml create mode 100644 NzbDrone.Core/Libraries/ObjectListView.dll create mode 100644 NzbDrone.Core/Libraries/RSS.NET.XML create mode 100644 NzbDrone.Core/Libraries/RSS.NET.dll create mode 100644 NzbDrone.Core/Libraries/SubSonic.Core.XML create mode 100644 NzbDrone.Core/Libraries/SubSonic.Core.dll create mode 100644 NzbDrone.Core/Libraries/System.Data.SQLite.Linq.dll create mode 100644 NzbDrone.Core/Libraries/System.Data.SQLite.XML create mode 100644 NzbDrone.Core/Libraries/System.Data.SQLite.dll create mode 100644 NzbDrone.Core/Libraries/TvdbLib.XML create mode 100644 NzbDrone.Core/Libraries/TvdbLib.dll create mode 100644 NzbDrone.Core/Libraries/TvdbLib.pdb create mode 100644 NzbDrone.Core/Libraries/log4net.dll create mode 100644 NzbDrone.Core/Libraries/log4net.xml create mode 100644 NzbDrone.Core/Main.cs create mode 100644 NzbDrone.Core/NzbDrone.Core.csproj create mode 100644 NzbDrone.Core/Properties/AssemblyInfo.cs create mode 100644 NzbDrone.Core/Repository/Config.cs create mode 100644 NzbDrone.Core/Repository/Series.cs create mode 100644 NzbDrone.Core/app.config create mode 100644 NzbDrone.Web.Test/App.config create mode 100644 NzbDrone.Web.Test/Controllers/AccountControllerTest.cs create mode 100644 NzbDrone.Web.Test/Controllers/HomeControllerTest.cs create mode 100644 NzbDrone.Web.Test/NzbDrone.Web.Tests.csproj create mode 100644 NzbDrone.Web.Test/Properties/AssemblyInfo.cs create mode 100644 NzbDrone.Web/Bin/NLog.dll create mode 100644 NzbDrone.Web/Bin/NLog.pdb create mode 100644 NzbDrone.Web/Bin/NLog.xml create mode 100644 NzbDrone.Web/Bin/Ninject.Web.Mvc.dll create mode 100644 NzbDrone.Web/Bin/Ninject.Web.Mvc.pdb create mode 100644 NzbDrone.Web/Bin/Ninject.dll create mode 100644 NzbDrone.Web/Bin/Ninject.xml create mode 100644 NzbDrone.Web/Bin/NzbDrone.Core.dll create mode 100644 NzbDrone.Web/Bin/NzbDrone.Core.pdb create mode 100644 NzbDrone.Web/Bin/NzbDrone.Web.dll create mode 100644 NzbDrone.Web/Bin/NzbDrone.Web.pdb create mode 100644 NzbDrone.Web/Bin/SubSonic.Core.dll create mode 100644 NzbDrone.Web/Bin/SubSonic.Core.xml create mode 100644 NzbDrone.Web/Bin/TvdbLib.dll create mode 100644 NzbDrone.Web/Bin/TvdbLib.pdb create mode 100644 NzbDrone.Web/Bin/TvdbLib.xml create mode 100644 NzbDrone.Web/Bin/log4net.dll create mode 100644 NzbDrone.Web/Content/Site.css create mode 100644 NzbDrone.Web/Controllers/AccountController.cs create mode 100644 NzbDrone.Web/Controllers/HomeController.cs create mode 100644 NzbDrone.Web/Controllers/SeriesController.cs create mode 100644 NzbDrone.Web/Controllers/SettingsController.cs create mode 100644 NzbDrone.Web/Global.asax create mode 100644 NzbDrone.Web/Global.asax.cs create mode 100644 NzbDrone.Web/Models/AccountModels.cs create mode 100644 NzbDrone.Web/Models/SettingsModels.cs create mode 100644 NzbDrone.Web/NzbDrone.Web.csproj create mode 100644 NzbDrone.Web/Properties/AssemblyInfo.cs create mode 100644 NzbDrone.Web/Scripts/MicrosoftAjax.debug.js create mode 100644 NzbDrone.Web/Scripts/MicrosoftAjax.js create mode 100644 NzbDrone.Web/Scripts/MicrosoftMvcAjax.debug.js create mode 100644 NzbDrone.Web/Scripts/MicrosoftMvcAjax.js create mode 100644 NzbDrone.Web/Scripts/MicrosoftMvcValidation.debug.js create mode 100644 NzbDrone.Web/Scripts/MicrosoftMvcValidation.js create mode 100644 NzbDrone.Web/Scripts/jquery-1.4.1-vsdoc.js create mode 100644 NzbDrone.Web/Scripts/jquery-1.4.1.js create mode 100644 NzbDrone.Web/Scripts/jquery-1.4.1.min.js create mode 100644 NzbDrone.Web/Scripts/jquery.validate-vsdoc.js create mode 100644 NzbDrone.Web/Scripts/jquery.validate.js create mode 100644 NzbDrone.Web/Scripts/jquery.validate.min.js create mode 100644 NzbDrone.Web/Views/Account/ChangePassword.aspx create mode 100644 NzbDrone.Web/Views/Account/ChangePasswordSuccess.aspx create mode 100644 NzbDrone.Web/Views/Account/LogOn.aspx create mode 100644 NzbDrone.Web/Views/Account/Register.aspx create mode 100644 NzbDrone.Web/Views/Home/About.aspx create mode 100644 NzbDrone.Web/Views/Home/Index.aspx create mode 100644 NzbDrone.Web/Views/Series/SeriesView.aspx create mode 100644 NzbDrone.Web/Views/Shared/Error.aspx create mode 100644 NzbDrone.Web/Views/Shared/LogOnUserControl.ascx create mode 100644 NzbDrone.Web/Views/Shared/Site.Master create mode 100644 NzbDrone.Web/Views/Web.config create mode 100644 NzbDrone.Web/Web.Debug.config create mode 100644 NzbDrone.Web/Web.Release.config create mode 100644 NzbDrone.Web/Web.config create mode 100644 NzbDrone.sln create mode 100644 NzbDrone/CassiniDev-lib.dll create mode 100644 NzbDrone/NzbDrone.csproj create mode 100644 NzbDrone/Program.cs create mode 100644 NzbDrone/Properties/AssemblyInfo.cs create mode 100644 NzbDrone/app.config create mode 100644 SABSync.5.1.ReSharper diff --git a/.gitignore b/.gitignore new file mode 100644 index 000000000..6410f9064 --- /dev/null +++ b/.gitignore @@ -0,0 +1,9 @@ +_ReSharper.* +bin +obj +build +dist +*.suo +*resharper* +*.user +*.cache \ No newline at end of file diff --git a/NzbDrone.Core.Test/NzbDrone.Core.Test.csproj b/NzbDrone.Core.Test/NzbDrone.Core.Test.csproj new file mode 100644 index 000000000..f791c3257 --- /dev/null +++ b/NzbDrone.Core.Test/NzbDrone.Core.Test.csproj @@ -0,0 +1,66 @@ + + + + Debug + AnyCPU + 8.0.30703 + 2.0 + {193ADD3B-792B-4173-8E4C-5A3F8F0237F0} + Library + Properties + NzbDrone.Core.Test + NzbDrone.Core.Test + v4.0 + 512 + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + ..\NzbDrone.Core\Libraries\TvdbLib.dll + + + + + + + + + {FF5EE3B6-913B-47CE-9CEB-11C51B4E1205} + NzbDrone.Core + + + + + \ No newline at end of file diff --git a/NzbDrone.Core.Test/Properties/AssemblyInfo.cs b/NzbDrone.Core.Test/Properties/AssemblyInfo.cs new file mode 100644 index 000000000..b6cea33f9 --- /dev/null +++ b/NzbDrone.Core.Test/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// 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("NzbDrone.Core.Test")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("Microsoft")] +[assembly: AssemblyProduct("NzbDrone.Core.Test")] +[assembly: AssemblyCopyright("Copyright © Microsoft 2010")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("699aed1b-015e-4f0d-9c81-d5557b05d260")] + +// 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 Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/NzbDrone.Core.Test/TvDbControllerTest.cs b/NzbDrone.Core.Test/TvDbControllerTest.cs new file mode 100644 index 000000000..3e2194f69 --- /dev/null +++ b/NzbDrone.Core.Test/TvDbControllerTest.cs @@ -0,0 +1,27 @@ +using System; +using System.Collections.Generic; +using System.Text; +using Gallio.Framework; +using MbUnit.Framework; +using MbUnit.Framework.ContractVerifiers; +using NzbDrone.Core.Controllers; + +namespace NzbDrone.Core.Test +{ + [TestFixture] + public class TvDbControllerTest + { + [Test] + [Row("The Simpsons")] + [Row("Family Guy")] + [Row("South Park")] + public void TestSearch(string title) + { + var tvCont =new TvDbController(); + var result = tvCont.SearchSeries(title); + + Assert.AreNotEqual(0, result.Count); + Assert.AreEqual(title, result[0].SeriesName, StringComparison.InvariantCultureIgnoreCase); + } + } +} diff --git a/NzbDrone.Core/Controllers/DbConfigController.cs b/NzbDrone.Core/Controllers/DbConfigController.cs new file mode 100644 index 000000000..e12e8ab98 --- /dev/null +++ b/NzbDrone.Core/Controllers/DbConfigController.cs @@ -0,0 +1,68 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using log4net; +using NzbDrone.Core.Repository; +using SubSonic.Repository; + +namespace NzbDrone.Core.Controllers +{ + public class DbConfigController : IConfigController + { + private readonly IDiskController _diskController; + private readonly ILog _logger; + private readonly IRepository _sonicRepo; + + + public DbConfigController(ILog logger, IDiskController diskController, IRepository dataRepository) + { + _logger = logger; + _diskController = diskController; + _sonicRepo = dataRepository; + } + + #region IConfigController Members + + public List GetTvRoots() + { + return (GetValue("tvRoot").Trim(';').Split(';').Where(path => _diskController.Exists(path))).ToList(); + } + + #endregion + + private string GetValue(string key) + { + return GetValue(key, String.Empty, false); + } + + private string GetValue(string key, object defaultValue, bool makePermanent) + { + string value; + + var dbValue = _sonicRepo.Single(key); + + if (dbValue != null && !String.IsNullOrEmpty(dbValue.Value)) + { + return dbValue.Value; + } + + + _logger.WarnFormat("Unable to find config key '{0}' defaultValue:'{1}'", key, defaultValue); + if (makePermanent) + { + SetValue(key, defaultValue.ToString()); + } + value = defaultValue.ToString(); + + + return value; + } + + private void SetValue(string key, string value) + { + _logger.DebugFormat("Writing Setting to file. Key:'{0}' Value:'{1}'", key, value); + + _sonicRepo.Add(new Config {Key = key, Value = value}); + } + } +} \ No newline at end of file diff --git a/NzbDrone.Core/Controllers/DiskController.cs b/NzbDrone.Core/Controllers/DiskController.cs new file mode 100644 index 000000000..ed1622231 --- /dev/null +++ b/NzbDrone.Core/Controllers/DiskController.cs @@ -0,0 +1,35 @@ +using System; +using System.IO; + +namespace NzbDrone.Core.Controllers +{ + public class DiskController : IDiskController + { + #region IDiskController Members + + public bool Exists(string path) + { + return Directory.Exists(path); + } + + public string[] GetDirectories(string path) + { + return Directory.GetDirectories(path); + } + + public String CreateDirectory(string path) + { + return Directory.CreateDirectory(path).FullName; + } + + + public string CleanPath(string path) + { + if (string.IsNullOrEmpty(path)) throw new ArgumentException("Path can not be null or empty"); + + return path.ToLower().Trim('/', '\\', ' '); + } + + #endregion + } +} \ No newline at end of file diff --git a/NzbDrone.Core/Controllers/FileConfigController.cs b/NzbDrone.Core/Controllers/FileConfigController.cs new file mode 100644 index 000000000..a1c8a26ea --- /dev/null +++ b/NzbDrone.Core/Controllers/FileConfigController.cs @@ -0,0 +1,65 @@ +using System; +using System.Collections.Generic; +using System.Configuration; +using System.IO; +using System.Linq; +using log4net; + +namespace NzbDrone.Core.Controllers +{ + public class FileConfigController : IConfigController + { + private readonly Configuration _config = ConfigurationManager.OpenExeConfiguration(Path.Combine(Main.AppPath, @"NzbDrone.exe")); + private readonly IDiskController _diskController; + private readonly ILog _logger; + + public FileConfigController(ILog logger, IDiskController diskController) + { + _logger = logger; + _diskController = diskController; + } + + #region IConfigController Members + + public List GetTvRoots() + { + return (GetValue("tvRoot").Trim(';').Split(';').Where(path => _diskController.Exists(path))).ToList(); + } + + #endregion + + private string GetValue(string key) + { + return GetValue(key, String.Empty, false); + } + + private string GetValue(string key, object defaultValue, bool makePermanent) + { + string value; + + if (_config.AppSettings.Settings[key] != null) + { + value = _config.AppSettings.Settings[key].Value; + } + else + { + _logger.WarnFormat("Unable to find config key '{0}' defaultValue:'{1}'", key, defaultValue); + if (makePermanent) + { + SetValue(key, defaultValue.ToString()); + } + value = defaultValue.ToString(); + } + + return value; + } + + private void SetValue(string key, object value) + { + _logger.DebugFormat("Writing Setting to file. Key:'{0}' Value:'{1}'", key, value); + _config.AppSettings.Settings.Remove(key); + _config.AppSettings.Settings.Add(key, value.ToString()); + _config.Save(); + } + } +} \ No newline at end of file diff --git a/NzbDrone.Core/Controllers/IConfigController.cs b/NzbDrone.Core/Controllers/IConfigController.cs new file mode 100644 index 000000000..7480bd074 --- /dev/null +++ b/NzbDrone.Core/Controllers/IConfigController.cs @@ -0,0 +1,9 @@ +using System.Collections.Generic; + +namespace NzbDrone.Core.Controllers +{ + public interface IConfigController + { + List GetTvRoots(); + } +} \ No newline at end of file diff --git a/NzbDrone.Core/Controllers/IDiskController.cs b/NzbDrone.Core/Controllers/IDiskController.cs new file mode 100644 index 000000000..2040545e5 --- /dev/null +++ b/NzbDrone.Core/Controllers/IDiskController.cs @@ -0,0 +1,12 @@ +using System; + +namespace NzbDrone.Core.Controllers +{ + public interface IDiskController + { + bool Exists(string path); + string[] GetDirectories(string path); + String CreateDirectory(string path); + string CleanPath(string path); + } +} \ No newline at end of file diff --git a/NzbDrone.Core/Controllers/ISeriesController.cs b/NzbDrone.Core/Controllers/ISeriesController.cs new file mode 100644 index 000000000..25c620d05 --- /dev/null +++ b/NzbDrone.Core/Controllers/ISeriesController.cs @@ -0,0 +1,11 @@ +using System.Linq; +using NzbDrone.Core.Repository; + +namespace NzbDrone.Core.Controllers +{ + public interface ISeriesController + { + IQueryable GetSeries(); + void SyncSeriesWithDisk(); + } +} \ No newline at end of file diff --git a/NzbDrone.Core/Controllers/ITvDbController.cs b/NzbDrone.Core/Controllers/ITvDbController.cs new file mode 100644 index 000000000..922f47064 --- /dev/null +++ b/NzbDrone.Core/Controllers/ITvDbController.cs @@ -0,0 +1,11 @@ +using System.Collections.Generic; +using TvdbLib.Data; + +namespace NzbDrone.Core.Controllers +{ + public interface ITvDbController + { + List SearchSeries(string name); + TvdbSeries GetSeries(int id, TvdbLanguage language); + } +} \ No newline at end of file diff --git a/NzbDrone.Core/Controllers/SeriesController.cs b/NzbDrone.Core/Controllers/SeriesController.cs new file mode 100644 index 000000000..ca464a110 --- /dev/null +++ b/NzbDrone.Core/Controllers/SeriesController.cs @@ -0,0 +1,67 @@ +using System.Collections.Generic; +using System.IO; +using System.Linq; +using log4net; +using NzbDrone.Core.Repository; +using SubSonic.Repository; +using TvdbLib.Data; + +namespace NzbDrone.Core.Controllers +{ + public class SeriesController : ISeriesController + { + private readonly IConfigController _config; + private readonly IDiskController _diskController; + private readonly ILog _logger; + private readonly IRepository _sonioRepo; + private readonly ITvDbController _tvDb; + + public SeriesController(ILog logger, IDiskController diskController, IConfigController configController, IRepository dataRepository, ITvDbController tvDbController) + { + _logger = logger; + _diskController = diskController; + _config = configController; + _sonioRepo = dataRepository; + _tvDb = tvDbController; + } + + #region ISeriesController Members + + public IQueryable GetSeries() + { + return _sonioRepo.All(); + } + + public void SyncSeriesWithDisk() + { + foreach (string root in _config.GetTvRoots()) + { + foreach (string seriesFolder in _diskController.GetDirectories(root)) + { + var dirInfo = new DirectoryInfo(seriesFolder); + if (!_sonioRepo.Exists(s => s.Path == _diskController.CleanPath(dirInfo.FullName))) + { + _logger.InfoFormat("Folder '{0} isn't mapped to a series in the database. Trying to map it.'", seriesFolder); + AddShow(seriesFolder); + } + } + } + } + + #endregion + + private void AddShow(string path) + { + List searchResults = _tvDb.SearchSeries(new DirectoryInfo(path).Name); + if (searchResults.Count != 0) + { + AddShow(path, _tvDb.GetSeries(searchResults[0].Id, searchResults[0].Language)); + } + } + + private void AddShow(string path, TvdbSeries series) + { + _sonioRepo.Add(new Series {Id = series.Id, SeriesName = series.SeriesName, AirTimes = series.AirsTime, AirsDayOfWeek = series.AirsDayOfWeek, Overview = series.Overview, Status = series.Status, Language = series.Language.Name, Path = path}); + } + } +} \ No newline at end of file diff --git a/NzbDrone.Core/Controllers/TvDbController.cs b/NzbDrone.Core/Controllers/TvDbController.cs new file mode 100644 index 000000000..c53fcf1de --- /dev/null +++ b/NzbDrone.Core/Controllers/TvDbController.cs @@ -0,0 +1,33 @@ +using System.Collections.Generic; +using System.IO; +using TvdbLib; +using TvdbLib.Cache; +using TvdbLib.Data; + +namespace NzbDrone.Core.Controllers +{ + public class TvDbController : ITvDbController + { + private const string TvDbApiKey = "5D2D188E86E07F4F"; + private readonly TvdbHandler _handler; + + public TvDbController() + { + _handler = new TvdbHandler(new XmlCacheProvider(Path.Combine(Main.AppPath, @"\tvdbcache.xml")), TvDbApiKey); + } + + #region ITvDbController Members + + public List SearchSeries(string name) + { + return _handler.SearchSeries(name); + } + + public TvdbSeries GetSeries(int id, TvdbLanguage language) + { + return _handler.GetSeries(id, language, true, false, false); + } + + #endregion + } +} \ No newline at end of file diff --git a/NzbDrone.Core/Libraries/CassiniDev-lib.dll b/NzbDrone.Core/Libraries/CassiniDev-lib.dll new file mode 100644 index 0000000000000000000000000000000000000000..da133923201c3f9cd809bd52471bc1673bf0da5e GIT binary patch literal 118784 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 z%0A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 >P^I=P*I$TqcR3HTS#ncZ$#TDtvT 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 literal 0 HcmV?d00001 diff --git a/NzbDrone.Core/Libraries/NLog.pdb b/NzbDrone.Core/Libraries/NLog.pdb new file mode 100644 index 0000000000000000000000000000000000000000..ebfc192d50a34898a1a26c8384e0ca67ab5183b8 GIT binary patch literal 736768 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 z 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%0ADXzsy0NsX{T8P17s*)D>UO=Yt9C)338Vrn~l- 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 literal 0 HcmV?d00001 diff --git a/NzbDrone.Core/Libraries/NLog.xml b/NzbDrone.Core/Libraries/NLog.xml new file mode 100644 index 000000000..4f7c291c9 --- /dev/null +++ b/NzbDrone.Core/Libraries/NLog.xml @@ -0,0 +1,11108 @@ + + + + NLog + + + +

+ Asynchronous continuation delegate - function invoked at the end of asynchronous + processing. + + Exception during asynchronous processing or null if no exception + was thrown. + + + + Helpers for asynchronous operations. + + + + + Iterates over all items in the given collection and runs the specified action + in sequence (each action executes only after the preceding one has completed without an error). + + Type of each item. + The items to iterate. + The asynchronous continuation to invoke once all items + have been iterated. + The action to invoke for each item. + + + + Repeats the specified asynchronous action multiple times and invokes asynchronous continuation at the end. + + The repeat count. + The asynchronous continuation to invoke at the end. + The action to invoke. + + + + Modifies the continuation by pre-pending given action to execute just before it. + + The async continuation. + The action to pre-pend. + Continuation which will execute the given action before forwarding to the actual continuation. + + + + Attaches a timeout to a continuation which will invoke the continuation when the specified + timeout has elapsed. + + The asynchronous continuation. + The timeout. + Wrapped continuation. + + + + Iterates over all items in the given collection and runs the specified action + in parallel (each action executes on a thread from thread pool). + + Type of each item. + The items to iterate. + The asynchronous continuation to invoke once all items + have been iterated. + The action to invoke for each item. + + + + Runs the specified asynchronous action synchronously (blocks until the continuation has + been invoked). + + The action. + + Using this method is not recommended because it will block the calling thread. + + + + + Wraps the continuation with a guard which will only make sure that the continuation function + is invoked only once. + + The asynchronous continuation. + Wrapped asynchronous continuation. + + + + Gets the combined exception from all exceptions in the list. + + The exceptions. + Combined exception or null if no exception was thrown. + + + + Asynchronous action. + + Continuation to be invoked at the end of action. + + + + Asynchronous action with one argument. + + Type of the argument. + Argument to the action. + Continuation to be invoked at the end of action. + + + + Represents the logging event with asynchronous continuation. + + + + + Initializes a new instance of the struct. + + The log event. + The continuation. + + + + Implements the operator ==. + + The event info1. + The event info2. + The result of the operator. + + + + Implements the operator ==. + + The event info1. + The event info2. + The result of the operator. + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + + A value of true if the specified is equal to this instance; otherwise, false. + + + + + Returns a hash code for this instance. + + + A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. + + + + + Gets the log event. + + + + + Gets the continuation. + + + + + NLog internal logger. + + + + + Initializes static members of the InternalLogger class. + + + + + Logs the specified message at the specified level. + + Log level. + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message at the specified level. + + Log level. + Log message. + + + + Logs the specified message at the Trace level. + + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message at the Trace level. + + Log message. + + + + Logs the specified message at the Debug level. + + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message at the Debug level. + + Log message. + + + + Logs the specified message at the Info level. + + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message at the Info level. + + Log message. + + + + Logs the specified message at the Warn level. + + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message at the Warn level. + + Log message. + + + + Logs the specified message at the Error level. + + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message at the Error level. + + Log message. + + + + Logs the specified message at the Fatal level. + + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message at the Fatal level. + + Log message. + + + + Gets or sets the internal log level. + + + + + Gets or sets a value indicating whether internal messages should be written to the console output stream. + + + + + Gets or sets a value indicating whether internal messages should be written to the console error stream. + + + + + Gets or sets the name of the internal log file. + + A value of value disables internal logging to a file. + + + + Gets or sets the text writer that will receive internal logs. + + + + + Gets or sets a value indicating whether timestamp should be included in internal log output. + + + + + Gets a value indicating whether internal log includes Trace messages. + + + + + Gets a value indicating whether internal log includes Debug messages. + + + + + Gets a value indicating whether internal log includes Info messages. + + + + + Gets a value indicating whether internal log includes Warn messages. + + + + + Gets a value indicating whether internal log includes Error messages. + + + + + Gets a value indicating whether internal log includes Fatal messages. + + + + + A cyclic buffer of object. + + + + + Initializes a new instance of the class. + + Buffer size. + Whether buffer should grow as it becomes full. + The maximum number of items that the buffer can grow to. + + + + Adds the specified log event to the buffer. + + Log event. + The number of items in the buffer. + + + + Gets the array of events accumulated in the buffer and clears the buffer as one atomic operation. + + Events in the buffer. + + + + Gets the number of items in the array. + + + + + Condition and expression. + + + + + Base class for representing nodes in condition expression trees. + + + + + Converts condition text to a condition expression tree. + + Condition text to be converted. + Condition expression tree. + + + + Evaluates the expression. + + Evaluation context. + Expression result. + + + + Returns a string representation of the expression. + + + A that represents the condition expression. + + + + + Evaluates the expression. + + Evaluation context. + Expression result. + + + + Initializes a new instance of the class. + + Left hand side of the AND expression. + Right hand side of the AND expression. + + + + Returns a string representation of this expression. + + A concatenated '(Left) and (Right)' string. + + + + Evaluates the expression by evaluating and recursively. + + Evaluation context. + The value of the conjunction operator. + + + + Gets the left hand side of the AND expression. + + + + + Gets the right hand side of the AND expression. + + + + + Exception during evaluation of condition expression. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The message. + + + + Initializes a new instance of the class. + + The message. + The inner exception. + + + + Condition layout expression (represented by a string literal + with embedded ${}). + + + + + Initializes a new instance of the class. + + The layout. + + + + Returns a string representation of this expression. + + String literal in single quotes. + + + + Evaluates the expression by calculating the value + of the layout in the specified evaluation context. + + Evaluation context. + The value of the layout. + + + + Gets the layout. + + The layout. + + + + Condition level expression (represented by the level keyword). + + + + + Returns a string representation of the expression. + + The 'level' string. + + + + Evaluates to the current log level. + + Evaluation context. Ignored. + The object representing current log level. + + + + Condition literal expression (numeric, LogLevel.XXX, true or false). + + + + + Initializes a new instance of the class. + + Literal value. + + + + Returns a string representation of the expression. + + The literal value. + + + + Evaluates the expression. + + Evaluation context. + The literal value as passed in the constructor. + + + + Gets the literal value. + + The literal value. + + + + Condition logger name expression (represented by the logger keyword). + + + + + Returns a string representation of this expression. + + A logger string. + + + + Evaluates to the logger name. + + Evaluation context. + The logger name. + + + + Condition message expression (represented by the message keyword). + + + + + Returns a string representation of this expression. + + The 'message' string. + + + + Evaluates to the logger message. + + Evaluation context. + The logger message. + + + + Marks class as a log event Condition and assigns a name to it. + + + + + Attaches a simple name to an item (such as , + , , etc.). + + + + + Initializes a new instance of the class. + + The name of the item. + + + + Gets the name of the item. + + The name of the item. + + + + Initializes a new instance of the class. + + Condition method name. + + + + Condition method invocation expression (represented by method(p1,p2,p3) syntax). + + + + + Initializes a new instance of the class. + + Name of the condition method. + of the condition method. + The method parameters. + + + + Returns a string representation of the expression. + + + A that represents the condition expression. + + + + + Evaluates the expression. + + Evaluation context. + Expression result. + + + + Gets the method info. + + + + + Gets the method parameters. + + The method parameters. + + + + A bunch of utility methods (mostly predicates) which can be used in + condition expressions. Parially inspired by XPath 1.0. + + + + + Compares two values for equality. + + The first value. + The second value. + true when two objects are equal, false otherwise. + + + + Gets or sets a value indicating whether the second string is a substring of the first one. + + The first string. + The second string. + true when the second string is a substring of the first string, false otherwise. + + + + Gets or sets a value indicating whether the second string is a prefix of the first one. + + The first string. + The second string. + true when the second string is a prefix of the first string, false otherwise. + + + + Gets or sets a value indicating whether the second string is a suffix of the first one. + + The first string. + The second string. + true when the second string is a prefix of the first string, false otherwise. + + + + Returns the length of a string. + + A string whose lengths is to be evaluated. + The length of the string. + + + + Marks the class as containing condition methods. + + + + + Condition not expression. + + + + + Initializes a new instance of the class. + + The expression. + + + + Returns a string representation of the expression. + + + A that represents the condition expression. + + + + + Evaluates the expression. + + Evaluation context. + Expression result. + + + + Gets the expression to be negated. + + The expression. + + + + Condition or expression. + + + + + Initializes a new instance of the class. + + Left hand side of the OR expression. + Right hand side of the OR expression. + + + + Returns a string representation of the expression. + + + A that represents the condition expression. + + + + + Evaluates the expression by evaluating and recursively. + + Evaluation context. + The value of the alternative operator. + + + + Gets the left expression. + + The left expression. + + + + Gets the right expression. + + The right expression. + + + + Exception during parsing of condition expression. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The message. + + + + Initializes a new instance of the class. + + The message. + The inner exception. + + + + Condition parser. Turns a string representation of condition expression + into an expression tree. + + + + + Initializes a new instance of the class. + + The expression text. + Instance of used to resolve references to condition methods and layout renderers. + + + + Parses the specified condition string and turns it into + tree. + + The expression to be parsed. + The root of the expression syntax tree which can be used to get the value of the condition in a specified context. + + + + Parses the specified condition string and turns it into + tree. + + The expression to be parsed. + Instance of used to resolve references to condition methods and layout renderers. + The root of the expression syntax tree which can be used to get the value of the condition in a specified context. + + + + Condition relational (==, !=, <, <=, + > or >=) expression. + + + + + Initializes a new instance of the class. + + The left expression. + The right expression. + The relational operator. + + + + Returns a string representation of the expression. + + + A that represents the condition expression. + + + + + Evaluates the expression. + + Evaluation context. + Expression result. + + + + Compares the specified values using specified relational operator. + + The first value. + The second value. + The relational operator. + Result of the given relational operator. + + + + Gets the left expression. + + The left expression. + + + + Gets the right expression. + + The right expression. + + + + Gets the relational operator. + + The operator. + + + + Relational operators used in conditions. + + + + + Equality (==). + + + + + Inequality (!=). + + + + + Less than (<). + + + + + Greater than (>). + + + + + Less than or equal (<=). + + + + + Greater than or equal (>=). + + + + + Hand-written tokenizer for conditions. + + + + + Initializes a new instance of the class. + + The expression text. + + + + Asserts current token type and advances to the next token. + + Expected token type. + If token type doesn't match, an exception is thrown. + + + + Asserts that current token is a keyword and returns its value and advances to the next token. + + Keyword value. + + + + Gets or sets a value indicating whether current keyword is equal to the specified value. + + The keyword. + + A value of true if current keyword is equal to the specified value; otherwise, false. + + + + + Gets or sets a value indicating whether the tokenizer has reached the end of the token stream. + + + A value of true if the tokenizer has reached the end of the token stream; otherwise, false. + + + + + Gets or sets a value indicating whether current token is a number. + + + A value of true if current token is a number; otherwise, false. + + + + + Gets or sets a value indicating whether the specified token is of specified type. + + The token type. + + A value of true if current token is of specified type; otherwise, false. + + + + + Gets the next token and sets and properties. + + + + + Gets the token position. + + The token position. + + + + Gets the type of the token. + + The type of the token. + + + + Gets the token value. + + The token value. + + + + Gets the value of a string token. + + The string token value. + + + + Mapping between characters and token types for punctuations. + + + + + Initializes a new instance of the CharToTokenType struct. + + The character. + Type of the token. + + + + Token types for condition expressions. + + + + + Marks the class or a member as advanced. Advanced classes and members are hidden by + default in generated documentation. + + + + + Initializes a new instance of the class. + + + + + Identifies that the output of layout or layout render does not change for the lifetime of the current appdomain. + + + + + Used to mark configurable parameters which are arrays. + Specifies the mapping between XML elements and .NET types. + + + + + Initializes a new instance of the class. + + The type of the array item. + The XML element name that represents the item. + + + + Gets the .NET type of the array item. + + + + + Gets the XML element name. + + + + + Provides registration information for named items (targets, layouts, layout renderers, etc.) managed by NLog. + + + + + Initializes static members of the class. + + + + + Initializes a new instance of the class. + + The assemblies to scan for named items. + + + + Registers named items from the assembly. + + The assembly. + + + + Registers named items from the assembly. + + The assembly. + Item name prefix. + + + + Clears the contents of all factories. + + + + + Registers the type. + + The type to register. + The item name prefix. + + + + Gets or sets default singleton instance of . + + + + + Gets the factory. + + The target factory. + + + + Gets the factory. + + The filter factory. + + + + Gets the factory. + + The layout renderer factory. + + + + Gets the factory. + + The layout factory. + + + + Gets the ambient property factory. + + The ambient property factory. + + + + Gets the condition method factory. + + The condition method factory. + + + + Attribute used to mark the default parameters for layout renderers. + + + + + Initializes a new instance of the class. + + + + + Factory for class-based items. + + The base type of each item. + The type of the attribute used to annotate itemss. + + + + Represents a factory of named items (such as targets, layouts, layout renderers, etc.). + + Base type for each item instance. + Item definition type (typically or ). + + + + Registers new item definition. + + Name of the item. + Item definition. + + + + Tries to get registed item definition. + + Name of the item. + Reference to a variable which will store the item definition. + Item definition. + + + + Creates item instance. + + Name of the item. + Newly created item instance. + + + + Tries to create an item instance. + + Name of the item. + The result. + True if instance was created successfully, false otherwise. + + + + Gets a collection of all registered items in the factory. + + Sequence of key/value pairs where each key represents the name + of the item and value is the of + the item. + + + + Provides means to populate factories of named items (such as targets, layouts, layout renderers, etc.). + + + + + Scans the assembly. + + The assembly. + The prefix. + + + + Registers the type. + + The type to register. + The item name prefix. + + + + Clears the contents of the factory. + + + + + Registers a single type definition. + + The item name. + The type of the item. + + + + Tries to get registed item definition. + + Name of the item. + Reference to a variable which will store the item definition. + Item definition. + + + + Tries to create an item instance. + + Name of the item. + The result. + True if instance was created successfully, false otherwise. + + + + Creates an item instance. + + The name of the item. + Created item. + + + + Gets a collection of all registered items in the factory. + + Sequence of key/value pairs where each key represents the name + of the item and value is the of + the item. + + + + Implemented by objects which support installation and uninstallation. + + + + + Performs installation which requires administrative permissions. + + The installation context. + + + + Performs uninstallation which requires administrative permissions. + + The installation context. + + + + Determines whether the item is installed. + + The installation context. + + Value indicating whether the item is installed or null if it is not possible to determine. + + + + + Provides context for install/uninstall operations. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The log output. + + + + Logs the specified trace message. + + The message. + The arguments. + + + + Logs the specified debug message. + + The message. + The arguments. + + + + Logs the specified informational message. + + The message. + The arguments. + + + + Logs the specified warning message. + + The message. + The arguments. + + + + Logs the specified error message. + + The message. + The arguments. + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Creates the log event which can be used to render layouts during installation/uninstallations. + + Log event info object. + + + + Gets or sets the installation log level. + + + + + Gets or sets a value indicating whether to ignore failures during installation. + + + + + Gets the installation parameters. + + + + + Gets or sets the log output. + + + + + Keeps logging configuration and provides simple API + to modify it. + + + + + Initializes a new instance of the class. + + + + + Registers the specified target object under a given name. + + + Name of the target. + + + The target object. + + + + + Finds the target with the specified name. + + + The name of the target to be found. + + + Found target or when the target is not found. + + + + + Called by LogManager when one of the log configuration files changes. + + + A new instance of that represents the updated configuration. + + + + + Removes the specified named target. + + + Name of the target. + + + + + Installs target-specific objects on current system. + + The installation context. + + Installation typically runs with administrative permissions. + + + + + Uninstalls target-specific objects from current system. + + The installation context. + + Uninstallation typically runs with administrative permissions. + + + + + Closes all targets and releases any unmanaged resources. + + + + + Flushes any pending log messages on all appenders. + + The asynchronous continuation. + + + + Validates the configuration. + + + + + Gets a collection of named targets specified in the configuration. + + + A list of named targets. + + + Unnamed targets (such as those wrapped by other targets) are not returned. + + + + + Gets the collection of file names which should be watched for changes by NLog. + + + + + Gets the collection of logging rules. + + + + + Gets all targets. + + + + + Arguments for events. + + + + + Initializes a new instance of the class. + + The old configuration. + The new configuration. + + + + Gets the old configuration. + + The old configuration. + + + + Gets the new configuration. + + The new configuration. + + + + Represents a logging rule. An equivalent of <logger /> configuration element. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Logger name pattern. It may include the '*' wildcard at the beginning, at the end or at both ends. + Minimum log level needed to trigger this rule. + Target to be written to when the rule matches. + + + + Initializes a new instance of the class. + + Logger name pattern. It may include the '*' wildcard at the beginning, at the end or at both ends. + Target to be written to when the rule matches. + By default no logging levels are defined. You should call and to set them. + + + + Enables logging for a particular level. + + Level to be enabled. + + + + Disables logging for a particular level. + + Level to be disabled. + + + + Returns a string representation of . Used for debugging. + + + A that represents the current . + + + + + Checks whether te particular log level is enabled for this rule. + + Level to be checked. + A value of when the log level is enabled, otherwise. + + + + Checks whether given name matches the logger name pattern. + + String to be matched. + A value of when the name matches, otherwise. + + + + Gets a collection of targets that should be written to when this rule matches. + + + + + Gets a collection of child rules to be evaluated when this rule matches. + + + + + Gets a collection of filters to be checked before writing to targets. + + + + + Gets or sets a value indicating whether to quit processing any further rule when this one matches. + + + + + Gets or sets logger name pattern. + + + Logger name pattern. It may include the '*' wildcard at the beginning, at the end or at both ends but not anywhere else. + + + + + Gets the collection of log levels enabled by this rule. + + + + + Factory for locating methods. + + The type of the class marker attribute. + The type of the method marker attribute. + + + + Scans the assembly for classes marked with + and methods marked with and adds them + to the factory. + + The assembly. + The prefix to use for names. + + + + Registers the type. + + The type to register. + The item name prefix. + + + + Clears contents of the factory. + + + + + Registers the definition of a single method. + + The method name. + The method info. + + + + Tries to retrieve method by name. + + The method name. + The result. + A value of true if the method was found, false otherwise. + + + + Retrieves method by name. + + Method name. + MethodInfo object. + + + + Tries to get method definition. + + The method . + The result. + A value of true if the method was found, false otherwise. + + + + Gets a collection of all registered items in the factory. + + + Sequence of key/value pairs where each key represents the name + of the item and value is the of + the item. + + + + + Marks the object as configuration item for NLog. + + + + + Initializes a new instance of the class. + + + + + Represents simple XML element with case-insensitive attribute semantics. + + + + + Initializes a new instance of the class. + + The input URI. + + + + Initializes a new instance of the class. + + The reader to initialize element from. + + + + Prevents a default instance of the class from being created. + + + + + Returns children elements with the specified element name. + + Name of the element. + Children elements with the specified element name. + + + + Gets the required attribute. + + Name of the attribute. + Attribute value. + Throws if the attribute is not specified. + + + + Gets the optional boolean attribute value. + + Name of the attribute. + Default value to return if the attribute is not found. + Boolean attribute value or default. + + + + Gets the optional attribute value. + + Name of the attribute. + The default value. + Value of the attribute or default value. + + + + Asserts that the name of the element is among specified element names. + + The allowed names. + + + + Gets the element name. + + + + + Gets the dictionary of attribute values. + + + + + Gets the collection of child elements. + + + + + Gets the value of the element. + + + + + Attribute used to mark the required parameters for targets, + layout targets and filters. + + + + + Supported operating systems. + + + If you add anything here, make sure to add the appropriate detection + code to + + + + + Any operating system. + + + + + Unix/Linux operating systems. + + + + + Windows CE. + + + + + Desktop versions of Windows (95,98,ME). + + + + + Windows NT, 2000, 2003 and future versions based on NT technology. + + + + + Unknown operating system. + + + + + Provides simple programmatic configuration API used for trivial logging cases. + + + + + Configures NLog for to log to the specified target so that all messages + above and including the level are output. + + The target to log all messages to. + + + + Configures NLog for to log to the specified target so that all messages + above and including the specified level are output. + + The target to log all messages to. + The minimal logging level. + + + + Configures NLog for file logging so that all messages above and including + the level are written to the specified file. + + Log file name. + + + + Configures NLog for file logging so that all messages above and including + the specified level are written to the specified file. + + Log file name. + The minimal logging level. + + + + Value indicating how stack trace should be captured when processing the log event. + + + + + Stack trace should not be captured. + + + + + Stack trace should be captured without source-level information. + + + + + Stack trace should be captured including source-level information such as line numbers. + + + + + Capture maximum amount of the stack trace information supported on the plaform. + + + + + Marks the layout or layout renderer as producing correct results regardless of the thread + it's running on. + + + + + A class for configuring NLog through an XML configuration file + (App.config style or App.nlog style). + + + + + Initializes a new instance of the class. + + Configuration file to be read. + + + + Initializes a new instance of the class. + + Configuration file to be read. + Ignore any errors during configuration. + + + + Initializes a new instance of the class. + + containing the configuration section. + Name of the file that contains the element (to be used as a base for including other files). + + + + Initializes a new instance of the class. + + containing the configuration section. + Name of the file that contains the element (to be used as a base for including other files). + Ignore any errors during configuration. + + + + Initializes a new instance of the class. + + The XML element. + Name of the XML file. + + + + Initializes a new instance of the class. + + The XML element. + Name of the XML file. + If set to true errors will be ignored during file processing. + + + + Re-reads the original configuration file and returns the new object. + + The new object. + + + + Initializes the configuration. + + containing the configuration section. + Name of the file that contains the element (to be used as a base for including other files). + Ignore any errors during configuration. + + + + Gets or sets a value indicating whether the configuration files + should be watched for changes and reloaded automatically when changed. + + + + + Gets the collection of file names which should be watched for changes by NLog. + This is the list of configuration files processed. + If the autoReload attribute is not set it returns empty collection. + + + + + Matches when the specified condition is met. + + + Conditions are expressed using a simple language + described here. + + + + + An abstract filter class. Provides a way to eliminate log messages + based on properties other than logger name and log level. + + + + + Initializes a new instance of the class. + + + + + Gets the result of evaluating filter against given log event. + + The log event. + Filter result. + + + + Checks whether log event should be logged or not. + + Log event. + + - if the log event should be ignored
+ - if the filter doesn't want to decide
+ - if the log event should be logged
+ .
+
+ + + Gets or sets the action to be taken when filter matches. + + + + + + Checks whether log event should be logged or not. + + Log event. + + - if the log event should be ignored
+ - if the filter doesn't want to decide
+ - if the log event should be logged
+ .
+
+ + + Gets or sets the condition expression. + + + + + + Marks class as a layout renderer and assigns a name to it. + + + + + Initializes a new instance of the class. + + Name of the filter. + + + + Filter result. + + + + + The filter doesn't want to decide whether to log or discard the message. + + + + + The message should be logged. + + + + + The message should not be logged. + + + + + The message should be logged and processing should be finished. + + + + + The message should not be logged and processing should be finished. + + + + + A base class for filters that are based on comparing a value to a layout. + + + + + Initializes a new instance of the class. + + + + + Gets or sets the layout to be used to filter log messages. + + The layout. + + + + + Matches when the calculated layout contains the specified substring. + This filter is deprecated in favour of <when /> which is based on contitions. + + + + + Checks whether log event should be logged or not. + + Log event. + + - if the log event should be ignored
+ - if the filter doesn't want to decide
+ - if the log event should be logged
+ .
+
+ + + Gets or sets a value indicating whether to ignore case when comparing strings. + + + + + + Gets or sets the substring to be matched. + + + + + + Matches when the calculated layout is equal to the specified substring. + This filter is deprecated in favour of <when /> which is based on contitions. + + + + + Checks whether log event should be logged or not. + + Log event. + + - if the log event should be ignored
+ - if the filter doesn't want to decide
+ - if the log event should be logged
+ .
+
+ + + Gets or sets a value indicating whether to ignore case when comparing strings. + + + + + + Gets or sets a string to compare the layout to. + + + + + + Matches when the calculated layout does NOT contain the specified substring. + This filter is deprecated in favour of <when /> which is based on contitions. + + + + + Checks whether log event should be logged or not. + + Log event. + + - if the log event should be ignored
+ - if the filter doesn't want to decide
+ - if the log event should be logged
+ .
+
+ + + Gets or sets the substring to be matched. + + + + + + Gets or sets a value indicating whether to ignore case when comparing strings. + + + + + + Matches when the calculated layout is NOT equal to the specified substring. + This filter is deprecated in favour of <when /> which is based on contitions. + + + + + Initializes a new instance of the class. + + + + + Checks whether log event should be logged or not. + + Log event. + + - if the log event should be ignored
+ - if the filter doesn't want to decide
+ - if the log event should be logged
+ .
+
+ + + Gets or sets a string to compare the layout to. + + + + + + Gets or sets a value indicating whether to ignore case when comparing strings. + + + + + + Global Diagnostics Context - used for log4net compatibility. + + + + + Sets the Global Diagnostics Context item to the specified value. + + Item name. + Item value. + + + + Gets the Global Diagnostics Context named item. + + Item name. + The item value of String.Empty if the value is not present. + + + + Checks whether the specified item exists in the Global Diagnostics Context. + + Item name. + A boolean indicating whether the specified item exists in current thread GDC. + + + + Removes the specified item from the Global Diagnostics Context. + + Item name. + + + + Clears the content of the GDC. + + + + + Global Diagnostics Context - a dictionary structure to hold per-application-instance values. + + + + + Sets the Global Diagnostics Context item to the specified value. + + Item name. + Item value. + + + + Gets the Global Diagnostics Context named item. + + Item name. + The item value of String.Empty if the value is not present. + + + + Checks whether the specified item exists in the Global Diagnostics Context. + + Item name. + A boolean indicating whether the specified item exists in current thread GDC. + + + + Removes the specified item from the Global Diagnostics Context. + + Item name. + + + + Clears the content of the GDC. + + + + + Helpers for .NET Compact Framework. + + + + + Optimized methods to get current time. + + + + + Gets the current time in an optimized fashion. + + Current time. + + + + Provides untyped IDictionary interface on top of generic IDictionary. + + The type of the key. + The type of the value. + + + + Initializes a new instance of the DictionaryAdapter class. + + The implementation. + + + + Adds an element with the provided key and value to the object. + + The to use as the key of the element to add. + The to use as the value of the element to add. + + + + Removes all elements from the object. + + + + + Determines whether the object contains an element with the specified key. + + The key to locate in the object. + + True if the contains an element with the key; otherwise, false. + + + + + Returns an object for the object. + + + An object for the object. + + + + + Removes the element with the specified key from the object. + + The key of the element to remove. + + + + Copies the elements of the to an , starting at a particular index. + + The one-dimensional that is the destination of the elements copied from . The must have zero-based indexing. + The zero-based index in at which copying begins. + + + + Returns an enumerator that iterates through a collection. + + + An object that can be used to iterate through the collection. + + + + + Gets an object containing the values in the object. + + + + An object containing the values in the object. + + + + + Gets the number of elements contained in the . + + + + The number of elements contained in the . + + + + + Gets a value indicating whether access to the is synchronized (thread safe). + + + true if access to the is synchronized (thread safe); otherwise, false. + + + + + Gets an object that can be used to synchronize access to the . + + + + An object that can be used to synchronize access to the . + + + + + Gets a value indicating whether the object has a fixed size. + + + true if the object has a fixed size; otherwise, false. + + + + + Gets a value indicating whether the object is read-only. + + + true if the object is read-only; otherwise, false. + + + + + Gets an object containing the keys of the object. + + + + An object containing the keys of the object. + + + + + Gets or sets the with the specified key. + + Dictionary key. + Value corresponding to key or null if not found + + + + Wrapper IDictionaryEnumerator. + + + + + Initializes a new instance of the class. + + The wrapped. + + + + Advances the enumerator to the next element of the collection. + + + True if the enumerator was successfully advanced to the next element; false if the enumerator has passed the end of the collection. + + + + + Sets the enumerator to its initial position, which is before the first element in the collection. + + + + + Gets both the key and the value of the current dictionary entry. + + + + A containing both the key and the value of the current dictionary entry. + + + + + Gets the key of the current dictionary entry. + + + + The key of the current element of the enumeration. + + + + + Gets the value of the current dictionary entry. + + + + The value of the current element of the enumeration. + + + + + Gets the current element in the collection. + + + + The current element in the collection. + + + + + LINQ-like helpers (cannot use LINQ because we must work with .NET 2.0 profile). + + + + + Filters the given enumerable to return only items of the specified type. + + + Type of the item. + + + The enumerable. + + + Items of specified type. + + + + + Reverses the specified enumerable. + + + Type of enumerable item. + + + The enumerable. + + + Reversed enumerable. + + + + + Determines is the given predicate is met by any element of the enumerable. + + Element type. + The enumerable. + The predicate. + True if predicate returns true for any element of the collection, false otherwise. + + + + Converts the enumerable to list. + + Type of the list element. + The enumerable. + List of elements. + + + + Helper class for dealing with exceptions. + + + + + Determines whether the exception must be rethrown. + + The exception. + True if the exception must be rethrown, false otherwise. + + + + Object construction helper. + + + + + Base class for optimized file appenders. + + + + + Initializes a new instance of the class. + + Name of the file. + The create parameters. + + + + Writes the specified bytes. + + The bytes. + + + + Flushes this instance. + + + + + Closes this instance. + + + + + Gets the file info. + + The last write time. + Length of the file. + True if the operation succeeded, false otherwise. + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Releases unmanaged and - optionally - managed resources. + + True to release both managed and unmanaged resources; false to release only unmanaged resources. + + + + Records the last write time for a file. + + + + + Records the last write time for a file to be specific date. + + Date and time when the last write occurred. + + + + Creates the file stream. + + If set to true allow concurrent writes. + A object which can be used to write to the file. + + + + Gets the name of the file. + + The name of the file. + + + + Gets the last write time. + + The last write time. + + + + Gets the open time of the file. + + The open time. + + + + Gets the file creation parameters. + + The file creation parameters. + + + + Implementation of which caches + file information. + + + + + Initializes a new instance of the class. + + Name of the file. + The parameters. + + + + Closes this instance of the appender. + + + + + Flushes this current appender. + + + + + Gets the file info. + + The last write time. + Length of the file. + True if the operation succeeded, false otherwise. + + + + Writes the specified bytes to a file. + + The bytes to be written. + + + + Factory class which creates objects. + + + + + Interface implemented by all factories capable of creating file appenders. + + + + + Opens the appender for given file name and parameters. + + Name of the file. + Creation parameters. + Instance of which can be used to write to the file. + + + + Opens the appender for given file name and parameters. + + Name of the file. + Creation parameters. + + Instance of which can be used to write to the file. + + + + + Interface that provides parameters for create file function. + + + + + Multi-process and multi-host file appender which attempts + to get exclusive write access and retries if it's not available. + + + + + Initializes a new instance of the class. + + Name of the file. + The parameters. + + + + Writes the specified bytes. + + The bytes. + + + + Flushes this instance. + + + + + Closes this instance. + + + + + Gets the file info. + + The last write time. + Length of the file. + + True if the operation succeeded, false otherwise. + + + + + Factory class. + + + + + Opens the appender for given file name and parameters. + + Name of the file. + Creation parameters. + + Instance of which can be used to write to the file. + + + + + Optimized single-process file appender which keeps the file open for exclusive write. + + + + + Initializes a new instance of the class. + + Name of the file. + The parameters. + + + + Writes the specified bytes. + + The bytes. + + + + Flushes this instance. + + + + + Closes this instance. + + + + + Gets the file info. + + The last write time. + Length of the file. + + True if the operation succeeded, false otherwise. + + + + + Factory class. + + + + + Opens the appender for given file name and parameters. + + Name of the file. + Creation parameters. + + Instance of which can be used to write to the file. + + + + + Optimized routines to get the size and last write time of the specified file. + + + + + Initializes static members of the FileInfoHelper class. + + + + + Gets the information about a file. + + Name of the file. + The file handle. + The last write time of the file. + Length of the file. + A value of true if file information was retrieved successfully, false otherwise. + + + + Interface implemented by layouts and layout renderers. + + + + + Renders the the value of layout or layout renderer in the context of the specified log event. + + The log event. + String representation of a layout. + + + + Supports object initialization and termination. + + + + + Initializes this instance. + + The configuration. + + + + Closes this instance. + + + + + Allows components to request stack trace information to be provided in the . + + + + + Gets the level of stack trace information required by the implementing class. + + + + + Define Localizable attribute for platforms that don't have it. + + + + + Initializes a new instance of the class. + + Determines whether the target is localizable. + + + + Gets or sets a value indicating whether the target is localizable. + + + + + Logger configuration. + + + + + Initializes a new instance of the class. + + The targets by level. + + + + Gets targets for the specified level. + + The level. + Chain of targets with attached filters. + + + + Determines whether the specified level is enabled. + + The level. + + A value of true if the specified level is enabled; otherwise, false. + + + + + Creates instances of objects for given URLs. + + + + + Creates a new instance of the network sender based on a network URL. + + + URL that determines the network sender to be created. + + + A newly created network sender. + + + + + Interface for mocking socket calls. + + + + + A base class for all network senders. Supports one-way sending of messages + over various protocols. + + + + + Initializes a new instance of the class. + + The network URL. + + + + Finalizes an instance of the NetworkSender class. + + + + + Initializes this network sender. + + + + + Closes the sender and releases any unmanaged resources. + + The continuation. + + + + Flushes any pending messages and invokes a continuation. + + The continuation. + + + + Send the given text over the specified protocol. + + Bytes to be sent. + Offset in buffer. + Number of bytes to send. + The asynchronous continuation. + + + + Closes the sender and releases any unmanaged resources. + + + + + Performs sender-specific initialization. + + + + + Performs sender-specific close operation. + + The continuation. + + + + Performs sender-specific flush. + + The continuation. + + + + Actually sends the given text over the specified protocol. + + The bytes to be sent. + Offset in buffer. + Number of bytes to send. + The async continuation to be invoked after the buffer has been sent. + To be overridden in inheriting classes. + + + + Parses the URI into an endpoint address. + + The URI to parse. + The address family. + Parsed endpoint. + + + + Gets the address of the network endpoint. + + + + + Gets the last send time. + + + + + Default implementation of . + + + + + Creates a new instance of the network sender based on a network URL:. + + + URL that determines the network sender to be created. + + + A newly created network sender. + + + + + Emulate missing functionality from .NET Compact Framework + + + + + Emulate missing functionality from .NET Compact Framework + + + + + Socket proxy for mocking Socket code. + + + + + Initializes a new instance of the class. + + The address family. + Type of the socket. + Type of the protocol. + + + + Closes the wrapped socket. + + + + + Invokes ConnectAsync method on the wrapped socket. + + The instance containing the event data. + Result of original method. + + + + Invokes SendAsync method on the wrapped socket. + + The instance containing the event data. + Result of original method. + + + + Invokes SendToAsync method on the wrapped socket. + + The instance containing the event data. + Result of original method. + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Sends messages over a TCP network connection. + + + + + Initializes a new instance of the class. + + URL. Must start with tcp://. + The address family. + + + + Creates the socket with given parameters. + + The address family. + Type of the socket. + Type of the protocol. + Instance of which represents the socket. + + + + Performs sender-specific initialization. + + + + + Closes the socket. + + The continuation. + + + + Performs sender-specific flush. + + The continuation. + + + + Sends the specified text over the connected socket. + + The bytes to be sent. + Offset in buffer. + Number of bytes to send. + The async continuation to be invoked after the buffer has been sent. + To be overridden in inheriting classes. + + + + Facilitates mocking of class. + + + + + Raises the Completed event. + + + + + Sends messages over the network as UDP datagrams. + + + + + Initializes a new instance of the class. + + URL. Must start with udp://. + The address family. + + + + Creates the socket. + + The address family. + Type of the socket. + Type of the protocol. + Implementation of to use. + + + + Performs sender-specific initialization. + + + + + Closes the socket. + + The continuation. + + + + Sends the specified text as a UDP datagram. + + The bytes to be sent. + Offset in buffer. + Number of bytes to send. + The async continuation to be invoked after the buffer has been sent. + To be overridden in inheriting classes. + + + + Scans (breadth-first) the object graph following all the edges whose are + instances have attached and returns + all objects implementing a specified interfaces. + + + + + Finds the objects which have attached which are reachable + from any of the given root objects when traversing the object graph over public properties. + + Type of the objects to return. + The root objects. + Ordered list of objects implementing T. + + + + Parameter validation utilities. + + + + + Asserts that the value is not null and throws otherwise. + + The value to check. + Name of the parameter. + + + + Detects the platform the NLog is running on. + + + + + Portable implementation of . + + + + + Gets the information about a file. + + Name of the file. + The file handle. + The last write time of the file. + Length of the file. + + A value of true if file information was retrieved successfully, false otherwise. + + + + + Reflection helpers for accessing properties. + + + + + Implements a single-call guard around given continuation function. + + + + + Initializes a new instance of the class. + + The asynchronous continuation. + + + + Continuation function which implements the single-call guard. + + The exception. + + + + Provides helpers to sort log events and associated continuations. + + + + + Performs bucket sort (group by) on an array of items and returns a dictionary for easy traversal of the result set. + + The type of the value. + The type of the key. + The inputs. + The key selector function. + + Dictonary where keys are unique input keys, and values are lists of . + + + + + Key selector delegate. + + The type of the value. + The type of the key. + Value to extract key information from. + Key selected from log event. + + + + Utilities for dealing with values. + + + + + Represents target with a chain of filters which determine + whether logging should happen. + + + + + Initializes a new instance of the class. + + The target. + The filter chain. + + + + Gets the stack trace usage. + + A value that determines stack trace handling. + + + + Gets the target. + + The target. + + + + Gets the filter chain. + + The filter chain. + + + + Gets or sets the next item in the chain. + + The next item in the chain. + + + + Returns details about current process and thread in a portable manner. + + + + + Initializes static members of the ThreadIDHelper class. + + + + + Gets the singleton instance of PortableThreadIDHelper or + Win32ThreadIDHelper depending on runtime environment. + + The instance. + + + + Gets current thread ID. + + + + + Gets current process ID. + + + + + Gets current process name. + + + + + Gets current process name (excluding filename extension, if any). + + + + + Wraps with a timeout. + + + + + Initializes a new instance of the class. + + The asynchronous continuation. + The timeout. + + + + Continuation function which implements the timeout logic. + + The exception. + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + URL Encoding helper. + + + + + Win32-optimized implementation of . + + + + + Initializes a new instance of the class. + + + + + Gets current thread ID. + + + + + + Gets current process ID. + + + + + + Gets current process name. + + + + + + Gets current process name (excluding filename extension, if any). + + + + + + Designates a property of the class as an ambient property. + + + + + Initializes a new instance of the class. + + Ambient property name. + + + + The current application domain's base directory. + + + + + Render environmental information related to logging events. + + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Renders the the value of layout renderer in the context of the specified log event. + + The log event. + String representation of a layout renderer. + + + + Initializes this instance. + + The configuration. + + + + Closes this instance. + + + + + Initializes this instance. + + The configuration. + + + + Closes this instance. + + + + + Renders the specified environmental information and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Initializes the layout renderer. + + + + + Closes the layout renderer. + + + + + Releases unmanaged and - optionally - managed resources. + + True to release both managed and unmanaged resources; false to release only unmanaged resources. + + + + Gets the logging configuration this target is part of. + + + + + Initializes a new instance of the class. + + + + + Renders the application base directory and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Gets or sets the name of the file to be Path.Combine()'d with with the base directory. + + + + + + Gets or sets the name of the directory to be Path.Combine()'d with with the base directory. + + + + + + A counter value (increases on each layout rendering). + + + + + Initializes a new instance of the class. + + + + + Renders the specified counter value and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Gets or sets the initial value of the counter. + + + + + + Gets or sets the value to be added to the counter after each layout rendering. + + + + + + Gets or sets the name of the sequence. Different named sequences can have individual values. + + + + + + Current date and time. + + + + + Initializes a new instance of the class. + + + + + Renders the current date and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Gets or sets the culture used for rendering. + + + + + + Gets or sets the date format. Can be any argument accepted by DateTime.ToString(format). + + + + + + Log event context data. + + + + + Renders the specified log event context item and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Gets or sets the name of the item. + + + + + + Exception information provided through + a call to one of the Logger.*Exception() methods. + + + + + Initializes a new instance of the class. + + + + + Renders the specified exception information and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Gets or sets the format of the output. Must be a comma-separated list of exception + properties: Message, Type, ShortType, ToString, Method, StackTrace. + This parameter value is case-insensitive. + + + + + + Gets or sets the separator used to concatenate parts specified in the Format. + + + + + + Renders contents of the specified file. + + + + + Initializes a new instance of the class. + + + + + Renders the contents of the specified file and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Gets or sets the name of the file. + + + + + + Gets or sets the encoding used in the file. + + The encoding. + + + + + Gets or sets the property of System.GC to retrieve. + + + + + Total memory allocated. + + + + + Total memory allocated (perform full garbage collection first). + + + + + Gets the number of Gen0 collections. + + + + + Gets the number of Gen1 collections. + + + + + Gets the number of Gen2 collections. + + + + + Maximum generation number supported by GC. + + + + + Global Diagnostics Context item. Provided for compatibility with log4net. + + + + + Renders the specified Global Diagnostics Context item and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Gets or sets the name of the item. + + + + + + Globally-unique identifier (GUID). + + + + + Initializes a new instance of the class. + + + + + Renders a newly generated GUID string and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Gets or sets the GUID format as accepted by Guid.ToString() method. + + + + + + Installation parameter (passed to InstallNLogConfig). + + + + + Renders the specified installation parameter and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Gets or sets the name of the parameter. + + + + + + Marks class as a layout renderer and assigns a format string to it. + + + + + Initializes a new instance of the class. + + Name of the layout renderer. + + + + The log level. + + + + + Renders the current log level and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + A string literal. + + + This is used to escape '${' sequence + as ;${literal:text=${}' + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The literal text value. + This is used by the layout compiler. + + + + Renders the specified string literal and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Gets or sets the literal text. + + + + + + XML event description compatible with log4j, Chainsaw and NLogViewer. + + + + + Initializes a new instance of the class. + + + + + Renders the XML logging event and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Gets or sets a value indicating whether to include NLog-specific extensions to log4j schema. + + + + + + Gets or sets a value indicating whether the XML should use spaces for indentation. + + + + + + Gets or sets the AppInfo field. By default it's the friendly name of the current AppDomain. + + + + + + Gets or sets a value indicating whether to include contents of the dictionary. + + + + + + Gets or sets a value indicating whether to include contents of the stack. + + + + + + Gets the level of stack trace information required by the implementing class. + + + + + The logger name. + + + + + Renders the logger name and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Gets or sets a value indicating whether to render short logger name (the part after the trailing dot character). + + + + + + The date and time in a long, sortable format yyyy-MM-dd HH:mm:ss.mmm. + + + + + Renders the date in the long format (yyyy-MM-dd HH:mm:ss.mmm) and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Mapped Diagnostic Context item. Provided for compatibility with log4net. + + + + + Renders the specified MDC item and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Gets or sets the name of the item. + + + + + + The formatted log message. + + + + + Renders the log message including any positional parameters and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Nested Diagnostic Context item. Provided for compatibility with log4net. + + + + + Initializes a new instance of the class. + + + + + Renders the specified Nested Diagnostics Context item and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Gets or sets the number of top stack frames to be rendered. + + + + + + Gets or sets the number of bottom stack frames to be rendered. + + + + + + Gets or sets the separator to be used for concatenating nested diagnostics context output. + + + + + + A newline literal. + + + + + Renders the specified string literal and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + The directory where NLog.dll is located. + + + + + Initializes static members of the NLogDirLayoutRenderer class. + + + + + Renders the directory where NLog is located and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Gets or sets the name of the file to be Path.Combine()'d with the directory name. + + + + + + Gets or sets the name of the directory to be Path.Combine()'d with the directory name. + + + + + + The identifier of the current process. + + + + + Renders the current process ID. + + The to append the rendered data to. + Logging event. + + + + The name of the current process. + + + + + Renders the current process name (optionally with a full path). + + The to append the rendered data to. + Logging event. + + + + Gets or sets a value indicating whether to write the full path to the process executable. + + + + + + The process time in format HH:mm:ss.mmm. + + + + + Renders the current process running time and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + High precision timer, based on the value returned from QueryPerformanceCounter() optionally converted to seconds. + + + + + Initializes a new instance of the class. + + + + + Initializes the layout renderer. + + + + + Renders the ticks value of current time and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Gets or sets a value indicating whether to normalize the result by subtracting + it from the result of the first call (so that it's effectively zero-based). + + + + + + Gets or sets a value indicating whether to output the difference between the result + of QueryPerformanceCounter and the previous one. + + + + + + Gets or sets a value indicating whether to convert the result to seconds by dividing + by the result of QueryPerformanceFrequency(). + + + + + + Gets or sets the number of decimal digits to be included in output. + + + + + + Gets or sets a value indicating whether to align decimal point (emit non-significant zeros). + + + + + + A value from the Registry. + + + + + Reads the specified registry key and value and appends it to + the passed . + + The to append the rendered data to. + Logging event. Ignored. + + + + Gets or sets the registry value name. + + + + + + Gets or sets the value to be output when the specified registry key or value is not found. + + + + + + Gets or sets the registry key. + + + Must have one of the forms: +
    +
  • HKLM\Key\Full\Name
  • +
  • HKEY_LOCAL_MACHINE\Key\Full\Name
  • +
  • HKCU\Key\Full\Name
  • +
  • HKEY_CURRENT_USER\Key\Full\Name
  • +
+
+ +
+ + + The short date in a sortable format yyyy-MM-dd. + + + + + Renders the current short date string (yyyy-MM-dd) and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Specifies application information to display in ${sl-appinfo} renderer. + + + + + URI of the current application XAP file. + + + + + Whether application is running out-of-browser. + + + + + Installed state of an application. + + + + + Whether application is running with elevated permissions. + + + + + A temporary directory. + + + + + Renders the directory where NLog is located and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Gets or sets the name of the file to be Path.Combine()'d with the directory name. + + + + + + Gets or sets the name of the directory to be Path.Combine()'d with the directory name. + + + + + + The identifier of the current thread. + + + + + Renders the current thread identifier and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + The name of the current thread. + + + + + Renders the current thread name and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + The Ticks value of current date and time. + + + + + Renders the ticks value of current time and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Applies caching to another layout output. + + + The value of the inner layout will be rendered only once and reused subsequently. + + + + + Decodes text "encrypted" with ROT-13. + + + See http://en.wikipedia.org/wiki/ROT13. + + + + + Renders the inner message, processes it and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Transforms the output of another layout. + + Output to be transform. + Transformed text. + + + + Renders the inner layout contents. + + The log event. + Contents of inner layout. + + + + Gets or sets the wrapped layout. + + + + + + Initializes a new instance of the class. + + + + + Initializes the layout renderer. + + + + + Closes the layout renderer. + + + + + Transforms the output of another layout. + + Output to be transform. + Transformed text. + + + + Renders the inner layout contents. + + The log event. + Contents of inner layout. + + + + Gets or sets a value indicating whether this is enabled. + + + + + + Converts the result of another layout output to lower case. + + + + + Initializes a new instance of the class. + + + + + Post-processes the rendered message. + + The text to be post-processed. + Padded and trimmed string. + + + + Gets or sets a value indicating whether lower case conversion should be applied. + + A value of true if lower case conversion should be applied; otherwise, false. + + + + + Gets or sets the culture used for rendering. + + + + + + Applies padding to another layout output. + + + + + Initializes a new instance of the class. + + + + + Transforms the output of another layout. + + Output to be transform. + Transformed text. + + + + Gets or sets the number of characters to pad the output to. + + + Positive padding values cause left padding, negative values + cause right padding to the desired width. + + + + + + Gets or sets the padding character. + + + + + + Gets or sets a value indicating whether to trim the + rendered text to the absolute value of the padding length. + + + + + + Replaces a string in the output of another layout with another string. + + + + + Initializes the layout renderer. + + + + + Post-processes the rendered message. + + The text to be post-processed. + Post-processed text. + + + + Gets or sets the text to search for. + + The text search for. + + + + + Gets or sets a value indicating whether regular expressions should be used. + + A value of true if regular expressions should be used otherwise, false. + + + + + Gets or sets the replacement string. + + The replacement string. + + + + + Gets or sets a value indicating whether to ignore case. + + A value of true if case should be ignored when searching; otherwise, false. + + + + + Gets or sets a value indicating whether to search for whole words. + + A value of true if whole words should be searched for; otherwise, false. + + + + + Decodes text "encrypted" with ROT-13. + + + See http://en.wikipedia.org/wiki/ROT13. + + + + + Encodes/Decodes ROT-13-encoded string. + + The string to be encoded/decoded. + Encoded/Decoded text. + + + + Transforms the output of another layout. + + Output to be transform. + Transformed text. + + + + Gets or sets the layout to be wrapped. + + The layout to be wrapped. + This variable is for backwards compatibility + + + + + Trims the whitespace from the result of another layout renderer. + + + + + Initializes a new instance of the class. + + + + + Post-processes the rendered message. + + The text to be post-processed. + Trimmed string. + + + + Gets or sets a value indicating whether lower case conversion should be applied. + + A value of true if lower case conversion should be applied; otherwise, false. + + + + + Converts the result of another layout output to upper case. + + + + + Initializes a new instance of the class. + + + + + Post-processes the rendered message. + + The text to be post-processed. + Padded and trimmed string. + + + + Gets or sets a value indicating whether upper case conversion should be applied. + + A value of true if upper case conversion should be applied otherwise, false. + + + + + Gets or sets the culture used for rendering. + + + + + + Encodes the result of another layout output for use with URLs. + + + + + Initializes a new instance of the class. + + + + + Transforms the output of another layout. + + Output to be transform. + Transformed text. + + + + Gets or sets a value indicating whether spaces should be translated to '+' or '%20'. + + A value of true if space should be translated to '+'; otherwise, false. + + + + + A column in the CSV. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The name of the column. + The layout of the column. + + + + Gets or sets the name of the column. + + + + + + Gets or sets the layout of the column. + + + + + + Specifies allowed column delimiters. + + + + + Automatically detect from regional settings. + + + + + Comma (ASCII 44). + + + + + Semicolon (ASCII 59). + + + + + Tab character (ASCII 9). + + + + + Pipe character (ASCII 124). + + + + + Space character (ASCII 32). + + + + + Custom string, specified by the CustomDelimiter. + + + + + A specialized layout that renders CSV-formatted events. + + + + + A specialized layout that supports header and footer. + + + + + Abstract interface that layouts must implement. + + + + + Converts a given text to a . + + Text to be converted. + object represented by the text. + + + + Implicitly converts the specified string to a . + + The layout string. + Instance of . + + + + Implicitly converts the specified string to a . + + The layout string. + The NLog factories to use when resolving layout renderers. + Instance of . + + + + Precalculates the layout for the specified log event and stores the result + in per-log event cache. + + The log event. + + Calling this method enables you to store the log event in a buffer + and/or potentially evaluate it in another thread even though the + layout may contain thread-dependent renderer. + + + + + Renders the event info in layout. + + The event info. + String representing log event. + + + + Initializes this instance. + + The configuration. + + + + Closes this instance. + + + + + Initializes this instance. + + The configuration. + + + + Closes this instance. + + + + + Initializes the layout. + + + + + Closes the layout. + + + + + Renders the layout for the specified logging event by invoking layout renderers. + + The logging event. + The rendered layout. + + + + Gets the logging configuration this target is part of. + + + + + Precalculates the layout for the specified log event and stores the result + in per-log event cache. + + The log event. + + Calling this method enables you to store the log event in a buffer + and/or potentially evaluate it in another thread even though the + layout may contain thread-dependent renderer. + + + + + Renders the layout for the specified logging event by invoking layout renderers. + + The logging event. + The rendered layout. + + + + Gets or sets the body layout (can be repeated multiple times). + + + + + + Gets or sets the header layout. + + + + + + Gets or sets the footer layout. + + + + + + Initializes a new instance of the class. + + + + + Initializes the layout. + + + + + Formats the log event for write. + + The log event to be formatted. + A string representation of the log event. + + + + Gets the array of parameters to be passed. + + + + + + Gets or sets a value indicating whether CVS should include header. + + A value of true if CVS should include header; otherwise, false. + + + + + Gets or sets the column delimiter. + + + + + + Gets or sets the quoting mode. + + + + + + Gets or sets the quote Character. + + + + + + Gets or sets the custom column delimiter value (valid when ColumnDelimiter is set to 'Custom'). + + + + + + Header for CSV layout. + + + + + Initializes a new instance of the class. + + The parent. + + + + Renders the layout for the specified logging event by invoking layout renderers. + + The logging event. + The rendered layout. + + + + Specifies allowes CSV quoting modes. + + + + + Quote all column. + + + + + Quote nothing. + + + + + Quote only whose values contain the quote symbol or + the separator. + + + + + Marks class as a layout renderer and assigns a format string to it. + + + + + Initializes a new instance of the class. + + Layout name. + + + + Parses layout strings. + + + + + Simple character tokenizer. + + + + + Initializes a new instance of the class. + + The text to be tokenized. + + + + A specialized layout that renders Log4j-compatible XML events. + + + This layout is not meant to be used explicitly. Instead you can use ${log4jxmlevent} layout renderer. + + + + + Initializes a new instance of the class. + + + + + Renders the layout for the specified logging event by invoking layout renderers. + + The logging event. + The rendered layout. + + + + Gets the instance that renders log events. + + + + + Represents a string with embedded placeholders that can render contextual information. + + + This layout is not meant to be used explicitly. Instead you can just use a string containing layout + renderers everywhere the layout is required. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The layout string to parse. + + + + Initializes a new instance of the class. + + The layout string to parse. + The NLog factories to use when creating references to layout renderers. + + + + Converts a text to a simple layout. + + Text to be converted. + A object. + + + + Escapes the passed text so that it can + be used literally in all places where + layout is normally expected without being + treated as layout. + + The text to be escaped. + The escaped text. + + Escaping is done by replacing all occurences of + '${' with '${literal:text=${}' + + + + + Evaluates the specified text by expadinging all layout renderers. + + The text to be evaluated. + Log event to be used for evaluation. + The input text with all occurences of ${} replaced with + values provided by the appropriate layout renderers. + + + + Evaluates the specified text by expadinging all layout renderers + in new context. + + The text to be evaluated. + The input text with all occurences of ${} replaced with + values provided by the appropriate layout renderers. + + + + Returns a that represents the current object. + + + A that represents the current object. + + + + + Renders the layout for the specified logging event by invoking layout renderers + that make up the event. + + The logging event. + The rendered layout. + + + + Gets or sets the layout text. + + + + + + Gets a collection of objects that make up this layout. + + + + + Represents the logging event. + + + + + Gets the date of the first log event created. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Log level. + Logger name. + Log message including parameter placeholders. + + + + Initializes a new instance of the class. + + Log level. + Logger name. + An IFormatProvider that supplies culture-specific formatting information. + Log message including parameter placeholders. + Parameter array. + + + + Initializes a new instance of the class. + + Log level. + Logger name. + An IFormatProvider that supplies culture-specific formatting information. + Log message including parameter placeholders. + Parameter array. + Exception information. + + + + Creates the null event. + + Null log event. + + + + Creates the log event. + + The log level. + Name of the logger. + The message. + Instance of . + + + + Creates the log event. + + The log level. + Name of the logger. + The format provider. + The message. + The parameters. + Instance of . + + + + Creates the log event. + + The log level. + Name of the logger. + The format provider. + The message. + Instance of . + + + + Creates the log event. + + The log level. + Name of the logger. + The message. + The exception. + Instance of . + + + + Creates from this by attaching the specified asynchronous continuation. + + The asynchronous continuation. + Instance of with attached continuation. + + + + Returns a string representation of this log event. + + String representation of the log event. + + + + Gets the unique identifier of log event which is automatically generated + and monotonously increasing. + + + + + Gets or sets the timestamp of the logging event. + + + + + Gets or sets the level of the logging event. + + + + + Gets or sets the exception information. + + + + + Gets or sets the logger name. + + + + + Gets the logger short name. + + + + + Gets or sets the log message including any parameter placeholders. + + + + + Gets or sets the parameter values or null if no parameters have been specified. + + + + + Gets or sets the format provider that was provided while logging or + when no formatProvider was specified. + + + + + Gets the formatted message. + + + + + Gets the dictionary of per-event context properties. + + + + + Gets the dictionary of per-event context properties. + + + + + Creates and manages instances of objects. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The config. + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Creates a logger that discards all log messages. + + Null logger instance. + + + + Gets the specified named logger. + + Name of the logger. + The logger reference. Multiple calls to GetLogger with the same argument aren't guaranteed to return the same logger reference. + + + + Gets the specified named logger. + + Name of the logger. + The type of the logger to create. The type must inherit from NLog.Logger. + The logger reference. Multiple calls to GetLogger with the + same argument aren't guaranteed to return the same logger reference. + + + + Loops through all loggers previously returned by GetLogger + and recalculates their target and filter list. Useful after modifying the configuration programmatically + to ensure that all loggers have been properly configured. + + + + + Flush any pending log messages (in case of asynchronous targets). + + + + + Flush any pending log messages (in case of asynchronous targets). + + Maximum time to allow for the flush. Any messages after that time will be discarded. + + + + Flush any pending log messages (in case of asynchronous targets). + + Maximum time to allow for the flush. Any messages after that time will be discarded. + + + + Flush any pending log messages (in case of asynchronous targets). + + The asynchronous continuation. + + + + Flush any pending log messages (in case of asynchronous targets). + + The asynchronous continuation. + Maximum time to allow for the flush. Any messages after that time will be discarded. + + + + Flush any pending log messages (in case of asynchronous targets). + + The asynchronous continuation. + Maximum time to allow for the flush. Any messages after that time will be discarded. + + + Decreases the log enable counter and if it reaches -1 + the logs are disabled. + Logging is enabled if the number of calls is greater + than or equal to calls. + An object that iplements IDisposable whose Dispose() method + reenables logging. To be used with C# using () statement. + + + Increases the log enable counter and if it reaches 0 the logs are disabled. + Logging is enabled if the number of calls is greater + than or equal to calls. + + + + Returns if logging is currently enabled. + + A value of if logging is currently enabled, + otherwise. + Logging is enabled if the number of calls is greater + than or equal to calls. + + + + Releases unmanaged and - optionally - managed resources. + + True to release both managed and unmanaged resources; false to release only unmanaged resources. + + + + Occurs when logging changes. + + + + + Gets or sets a value indicating whether exceptions should be thrown. + + A value of true if exceptiosn should be thrown; otherwise, false. + By default exceptions + are not thrown under any circumstances. + + + + + Gets or sets the current logging configuration. + + + + + Gets or sets the global log threshold. Log events below this threshold are not logged. + + + + + Logger cache key. + + + + + Serves as a hash function for a particular type. + + + A hash code for the current . + + + + + Determines if two objects are equal in value. + + Other object to compare to. + True if objects are equal, false otherwise. + + + + Enables logging in implementation. + + + + + Initializes a new instance of the class. + + The factory. + + + + Enables logging. + + + + + Specialized LogFactory that can return instances of custom logger types. + + The type of the logger to be returned. Must inherit from . + + + + Gets the logger. + + The logger name. + An instance of . + + + + Provides logging interface and utility functions. + + + Auto-generated Logger members for binary compatibility with NLog 1.0. + + + + + Initializes a new instance of the class. + + + + + Gets a value indicating whether logging is enabled for the specified level. + + Log level to be checked. + A value of if logging is enabled for the specified level, otherwise it returns . + + + + Writes the specified diagnostic message. + + Log event. + + + + Writes the specified diagnostic message. + + The name of the type that wraps Logger. + Log event. + + + + Writes the diagnostic message at the specified level using the specified format provider and format parameters. + + + Writes the diagnostic message at the specified level. + + Type of the value. + The log level. + The value to be written. + + + + Writes the diagnostic message at the specified level. + + Type of the value. + The log level. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the specified level. + + The log level. + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the specified level. + + The log level. + A to be written. + An exception to be logged. + + + + Writes the diagnostic message at the specified level using the specified parameters and formatting them with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the specified level. + + The log level. + Log message. + + + + Writes the diagnostic message at the specified level using the specified parameters. + + The log level. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the specified level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified parameter. + + The type of the argument. + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the specified level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The log level. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the specified level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the specified level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + The log level. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Trace level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Trace level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Trace level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Trace level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Trace level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message at the Trace level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Trace level. + + Log message. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Trace level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Trace level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Debug level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Debug level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Debug level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Debug level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Debug level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message at the Debug level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Debug level. + + Log message. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Debug level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Debug level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Info level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Info level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Info level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Info level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Info level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message at the Info level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Info level. + + Log message. + + + + Writes the diagnostic message at the Info level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Info level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Info level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Info level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Info level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Warn level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Warn level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Warn level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Warn level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Warn level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message at the Warn level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Warn level. + + Log message. + + + + Writes the diagnostic message at the Warn level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Warn level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Warn level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Warn level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Warn level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Error level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Error level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Error level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Error level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Error level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message at the Error level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Error level. + + Log message. + + + + Writes the diagnostic message at the Error level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Error level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Error level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Error level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Error level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Fatal level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Fatal level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Fatal level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Fatal level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message at the Fatal level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Fatal level. + + Log message. + + + + Writes the diagnostic message at the Fatal level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Fatal level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the specified level. + + The log level. + A to be written. + + + + Writes the diagnostic message at the specified level. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the specified level using the specified parameters. + + The log level. + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the specified level using the specified parameters. + + The log level. + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level. + + A to be written. + + + + Writes the diagnostic message at the Trace level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level. + + A to be written. + + + + Writes the diagnostic message at the Debug level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level. + + A to be written. + + + + Writes the diagnostic message at the Info level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the Info level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the Info level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level. + + A to be written. + + + + Writes the diagnostic message at the Warn level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the Warn level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the Warn level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level. + + A to be written. + + + + Writes the diagnostic message at the Error level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the Error level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the Error level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level. + + A to be written. + + + + Writes the diagnostic message at the Fatal level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the Fatal level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Occurs when logger configuration changes. + + + + + Gets the name of the logger. + + + + + Gets the factory that created this logger. + + + + + Gets a value indicating whether logging is enabled for the Trace level. + + A value of if logging is enabled for the Trace level, otherwise it returns . + + + + Gets a value indicating whether logging is enabled for the Debug level. + + A value of if logging is enabled for the Debug level, otherwise it returns . + + + + Gets a value indicating whether logging is enabled for the Info level. + + A value of if logging is enabled for the Info level, otherwise it returns . + + + + Gets a value indicating whether logging is enabled for the Warn level. + + A value of if logging is enabled for the Warn level, otherwise it returns . + + + + Gets a value indicating whether logging is enabled for the Error level. + + A value of if logging is enabled for the Error level, otherwise it returns . + + + + Gets a value indicating whether logging is enabled for the Fatal level. + + A value of if logging is enabled for the Fatal level, otherwise it returns . + + + + Implementation of logging engine. + + + + + Gets the filter result. + + The filter chain. + The log event. + The result of the filter. + + + + Defines available log levels. + + + + + Trace log level. + + + + + Debug log level. + + + + + Info log level. + + + + + Warn log level. + + + + + Error log level. + + + + + Fatal log level. + + + + + Off log level. + + + + + Compares two objects + and returns a value indicating whether + the first one is equal to the second one. + + The first level. + The second level. + The value of level1.Ordinal == level2.Ordinal. + + + + Compares two objects + and returns a value indicating whether + the first one is not equal to the second one. + + The first level. + The second level. + The value of level1.Ordinal != level2.Ordinal. + + + + Compares two objects + and returns a value indicating whether + the first one is greater than the second one. + + The first level. + The second level. + The value of level1.Ordinal > level2.Ordinal. + + + + Compares two objects + and returns a value indicating whether + the first one is greater than or equal to the second one. + + The first level. + The second level. + The value of level1.Ordinal >= level2.Ordinal. + + + + Compares two objects + and returns a value indicating whether + the first one is less than the second one. + + The first level. + The second level. + The value of level1.Ordinal < level2.Ordinal. + + + + Compares two objects + and returns a value indicating whether + the first one is less than or equal to the second one. + + The first level. + The second level. + The value of level1.Ordinal <= level2.Ordinal. + + + + Gets the that corresponds to the specified ordinal. + + The ordinal. + The instance. For 0 it returns , 1 gives and so on. + + + + Returns the that corresponds to the supplied . + + The texual representation of the log level. + The enumeration value. + + + + Returns a string representation of the log level. + + Log level name. + + + + Returns a hash code for this instance. + + + A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. + + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + + Value of true if the specified is equal to this instance; otherwise, false. + + + The parameter is null. + + + + + Compares the level to the other object. + + + The object object. + + + A value less than zero when this logger's is + less than the other logger's ordinal, 0 when they are equal and + greater than zero when this ordinal is greater than the + other ordinal. + + + + + Gets the name of the log level. + + + + + Gets the ordinal of the log level. + + + + + Creates and manages instances of objects. + + + + + Prevents a default instance of the LogManager class from being created. + + + + + Creates a logger that discards all log messages. + + Null logger which discards all log messages. + + + + Gets the specified named logger. + + Name of the logger. + The logger reference. Multiple calls to GetLogger with the same argument aren't guaranteed to return the same logger reference. + + + + Gets the specified named logger. + + Name of the logger. + The logger class. The class must inherit from . + The logger reference. Multiple calls to GetLogger with the same argument aren't guaranteed to return the same logger reference. + + + + Loops through all loggers previously returned by GetLogger. + and recalculates their target and filter list. Useful after modifying the configuration programmatically + to ensure that all loggers have been properly configured. + + + + + Flush any pending log messages (in case of asynchronous targets). + + + + + Flush any pending log messages (in case of asynchronous targets). + + Maximum time to allow for the flush. Any messages after that time will be discarded. + + + + Flush any pending log messages (in case of asynchronous targets). + + Maximum time to allow for the flush. Any messages after that time will be discarded. + + + + Flush any pending log messages (in case of asynchronous targets). + + The asynchronous continuation. + + + + Flush any pending log messages (in case of asynchronous targets). + + The asynchronous continuation. + Maximum time to allow for the flush. Any messages after that time will be discarded. + + + + Flush any pending log messages (in case of asynchronous targets). + + The asynchronous continuation. + Maximum time to allow for the flush. Any messages after that time will be discarded. + + + Decreases the log enable counter and if it reaches -1 + the logs are disabled. + Logging is enabled if the number of calls is greater + than or equal to calls. + An object that iplements IDisposable whose Dispose() method + reenables logging. To be used with C# using () statement. + + + Increases the log enable counter and if it reaches 0 the logs are disabled. + Logging is enabled if the number of calls is greater + than or equal to calls. + + + + Returns if logging is currently enabled. + + A value of if logging is currently enabled, + otherwise. + Logging is enabled if the number of calls is greater + than or equal to calls. + + + + Occurs when logging changes. + + + + + Gets or sets a value indicating whether NLog should throw exceptions. + By default exceptions are not thrown under any circumstances. + + + + + Gets or sets the current logging configuration. + + + + + Gets or sets the global log threshold. Log events below this threshold are not logged. + + + + + Returns a log message. Used to defer calculation of + the log message until it's actually needed. + + Log message. + + + + Service contract for Log Receiver client. + + + + + Begins processing of log messages. + + The events. + The callback. + Asynchronous state. + + IAsyncResult value which can be passed to . + + + + + Ends asynchronous processing of log messages. + + The result. + + + + Internal configuration of Log Receiver Service contracts. + + + + + Wire format for NLog Event. + + + + + Initializes a new instance of the class. + + + + + Converts the to . + + The object this is part of.. + The logger name prefix to prepend in front of the logger name. + Converted . + + + + Gets or sets the client-generated identifier of the event. + + + + + Gets or sets the ordinal of the log level. + + + + + Gets or sets the logger ordinal (index into . + + The logger ordinal. + + + + Gets or sets the time delta (in ticks) between the time of the event and base time. + + + + + Gets or sets the message string index. + + + + + Gets or sets the collection of layout values. + + + + + Gets the collection of indexes into array for each layout value. + + + + + Wire format for NLog event package. + + + + + Converts the events to sequence of objects suitable for routing through NLog. + + The logger name prefix to prepend in front of each logger name. + + Sequence of objects. + + + + + Converts the events to sequence of objects suitable for routing through NLog. + + + Sequence of objects. + + + + + Gets or sets the name of the client. + + The name of the client. + + + + Gets or sets the base time (UTC ticks) for all events in the package. + + The base time UTC. + + + + Gets or sets the collection of layout names which are shared among all events. + + The layout names. + + + + Gets or sets the collection of logger names. + + The logger names. + + + + Gets or sets the list of events. + + The events. + + + + Log Receiver Client using legacy SOAP client. + + + + + Initializes a new instance of the class. + + The service URL. + + + + Processes the log messages. + + The events. + + + + Begins processing of log messages. + + The events. + The callback. + Asynchronous state. + + IAsyncResult value which can be passed to . + + + + + Ends asynchronous processing of log messages. + + The result. + + + + List of strings annotated for more terse serialization. + + + + + Initializes a new instance of the class. + + + + + Mapped Diagnostics Context - a thread-local structure that keeps a dictionary + of strings and provides methods to output them in layouts. + Mostly for compatibility with log4net. + + + + + Sets the current thread MDC item to the specified value. + + Item name. + Item value. + + + + Gets the current thread MDC named item. + + Item name. + The item value of String.Empty if the value is not present. + + + + Checks whether the specified item exists in current thread MDC. + + Item name. + A boolean indicating whether the specified item exists in current thread MDC. + + + + Removes the specified item from current thread MDC. + + Item name. + + + + Clears the content of current thread MDC. + + + + + Mapped Diagnostics Context - used for log4net compatibility. + + + + + Sets the current thread MDC item to the specified value. + + Item name. + Item value. + + + + Gets the current thread MDC named item. + + Item name. + The item value of String.Empty if the value is not present. + + + + Checks whether the specified item exists in current thread MDC. + + Item name. + A boolean indicating whether the specified item exists in current thread MDC. + + + + Removes the specified item from current thread MDC. + + Item name. + + + + Clears the content of current thread MDC. + + + + + Nested Diagnostics Context - for log4net compatibility. + + + + + Pushes the specified text on current thread NDC. + + The text to be pushed. + An instance of the object that implements IDisposable that returns the stack to the previous level when IDisposable.Dispose() is called. To be used with C# using() statement. + + + + Pops the top message off the NDC stack. + + The top message which is no longer on the stack. + + + + Clears current thread NDC stack. + + + + + Gets all messages on the stack. + + Array of strings on the stack. + + + + Gets the top NDC message but doesn't remove it. + + The top message. . + + + + Nested Diagnostics Context - a thread-local structure that keeps a stack + of strings and provides methods to output them in layouts + Mostly for compatibility with log4net. + + + + + Pushes the specified text on current thread NDC. + + The text to be pushed. + An instance of the object that implements IDisposable that returns the stack to the previous level when IDisposable.Dispose() is called. To be used with C# using() statement. + + + + Pops the top message off the NDC stack. + + The top message which is no longer on the stack. + + + + Clears current thread NDC stack. + + + + + Gets all messages on the stack. + + Array of strings on the stack. + + + + Gets the top NDC message but doesn't remove it. + + The top message. . + + + + Resets the stack to the original count during . + + + + + Initializes a new instance of the class. + + The stack. + The previous count. + + + + Reverts the stack to original item count. + + + + + Exception thrown during NLog configuration. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The message. + + + + Initializes a new instance of the class. + + The message. + The inner exception. + + + + Exception thrown during log event processing. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The message. + + + + Initializes a new instance of the class. + + The message. + The inner exception. + + + + TraceListener which routes all messages through NLog. + + + + + Initializes a new instance of the class. + + + + + When overridden in a derived class, writes the specified message to the listener you create in the derived class. + + A message to write. + + + + When overridden in a derived class, writes a message to the listener you create in the derived class, followed by a line terminator. + + A message to write. + + + + When overridden in a derived class, closes the output stream so it no longer receives tracing or debugging output. + + + + + Emits an error message. + + A message to emit. + + + + Emits an error message and a detailed error message. + + A message to emit. + A detailed message to emit. + + + + Flushes the output buffer. + + + + + Gets or sets the log factory to use when outputting messages (null - use LogManager). + + + + + Gets or sets the default log level. + + + + + Gets or sets the log which should be always used regardless of source level. + + + + + Specifies the way archive numbering is performed. + + + + + Sequence style numbering. The most recent archive has the highest number. + + + + + Rolling style numbering (the most recent is always #0 then #1, ..., #N. + + + + + Sends log messages to the remote instance of Chainsaw application from log4j. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +

+ NOTE: If your receiver application is ever likely to be off-line, don't use TCP protocol + or you'll get TCP timeouts and your application will crawl. + Either switch to UDP transport or use AsyncWrapper target + so that your application threads will not be blocked by the timing-out connection attempts. +

+
+
+ + + Sends log messages to the remote instance of NLog Viewer. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +

+ NOTE: If your receiver application is ever likely to be off-line, don't use TCP protocol + or you'll get TCP timeouts and your application will crawl. + Either switch to UDP transport or use AsyncWrapper target + so that your application threads will not be blocked by the timing-out connection attempts. +

+
+
+ + + Sends log messages over the network. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +

+ To print the results, use any application that's able to receive messages over + TCP or UDP. NetCat is + a simple but very powerful command-line tool that can be used for that. This image + demonstrates the NetCat tool receiving log messages from Network target. +

+ +

+ NOTE: If your receiver application is ever likely to be off-line, don't use TCP protocol + or you'll get TCP timeouts and your application will crawl. + Either switch to UDP transport or use AsyncWrapper target + so that your application threads will not be blocked by the timing-out connection attempts. +

+

+ There are two specialized versions of the Network target: Chainsaw + and NLogViewer which write to instances of Chainsaw log4j viewer + or NLogViewer application respectively. +

+
+
+ + + Represents target that supports string formatting using layouts. + + + + + Represents logging target. + + + + + Initializes this instance. + + The configuration. + + + + Closes this instance. + + + + + Closes the target. + + + + + Flush any pending log messages (in case of asynchronous targets). + + The asynchronous continuation. + + + + Calls the on each volatile layout + used by this target. + + + The log event. + + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Writes the log to the target. + + Log event to write. + + + + Writes the array of log events. + + The log events. + + + + Initializes this instance. + + The configuration. + + + + Closes this instance. + + + + + Releases unmanaged and - optionally - managed resources. + + True to release both managed and unmanaged resources; false to release only unmanaged resources. + + + + Initializes the target. Can be used by inheriting classes + to initialize logging. + + + + + Closes the target and releases any unmanaged resources. + + + + + Flush any pending log messages asynchronously (in case of asynchronous targets). + + The asynchronous continuation. + + + + Writes logging event to the log target. + classes. + + + Logging event to be written out. + + + + + Writes log event to the log target. Must be overridden in inheriting + classes. + + Log event to be written out. + + + + Writes an array of logging events to the log target. By default it iterates on all + events and passes them to "Write" method. Inheriting classes can use this method to + optimize batch writes. + + Logging events to be written out. + + + + Gets or sets the name of the target. + + + + + + Gets the object which can be used to synchronize asynchronous operations that must rely on the . + + + + + Gets the logging configuration this target is part of. + + + + + Gets a value indicating whether the target has been initialized. + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Gets or sets the layout used to format log messages. + + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Flush any pending log messages asynchronously (in case of asynchronous targets). + + The asynchronous continuation. + + + + Closes the target. + + + + + Sends the + rendered logging event over the network optionally concatenating it with a newline character. + + The logging event. + + + + Gets the bytes to be written. + + Log event. + Byte array. + + + + Gets or sets the network address. + + + The network address can be: +
    +
  • tcp://host:port - TCP (auto select IPv4/IPv6)
  • +
  • tcp4://host:port - force TCP/IPv4
  • +
  • tcp6://host:port - force TCP/IPv6
  • +
  • udp://host:port - UDP (auto select IPv4/IPv6, not supported on Silverlight)
  • +
  • udp4://host:port - force UDP/IPv4 (not supported on Silverlight)
  • +
  • udp6://host:port - force UDP/IPv6 (not supported on Silverlight)
  • +
+ For HTTP Support use WebService target. +
+ +
+ + + Gets or sets a value indicating whether to keep connection open whenever possible. + + + + + + Gets or sets a value indicating whether to append newline at the end of log message. + + + + + + Gets or sets the maximum message size in bytes. + + + + + + Gets or sets the size of the connection cache (number of connections which are kept alive). + + + + + + Gets or sets the action that should be taken if the message is larger than + maxMessageSize. + + + + + + Gets or sets the encoding to be used. + + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Gets or sets a value indicating whether to include NLog-specific extensions to log4j schema. + + + + + + Gets or sets the AppInfo field. By default it's the friendly name of the current AppDomain. + + + + + + Gets or sets a value indicating whether to include dictionary contents. + + + + + + Gets or sets a value indicating whether to include stack contents. + + + + + + Gets the collection of parameters. Each parameter contains a mapping + between NLog layout and a named parameter. + + + + + + Gets the layout renderer which produces Log4j-compatible XML events. + + + + + Gets or sets the instance of that is used to format log messages. + + + + + Initializes a new instance of the class. + + + + + Writes log messages to the console. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +
+
+ + + Represents target that supports string formatting using layouts. + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Gets or sets the text to be rendered. + + + + + + Gets or sets the footer. + + + + + + Gets or sets the header. + + + + + + Gets or sets the layout with header and footer. + + The layout with header and footer. + + + + Initializes the target. + + + + + Closes the target and releases any unmanaged resources. + + + + + Writes the specified logging event to the Console.Out or + Console.Error depending on the value of the Error flag. + + The logging event. + + Note that the Error option is not supported on .NET Compact Framework. + + + + + Information about database command + parameters. + + + + + Initializes a new instance of the class. + + + + + Gets or sets the type of the command. + + The type of the command. + + + + + Gets or sets the connection string to run the command against. If not provided, connection string from the target is used. + + + + + + Gets or sets the command text. + + + + + + Gets or sets a value indicating whether to ignore failures. + + + + + + Gets the collection of parameters. Each parameter contains a mapping + between NLog layout and a database named or positional parameter. + + + + + + Represents a parameter to a Database target. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the parameter. + The parameter layout. + + + + Gets or sets the database parameter name. + + + + + + Gets or sets the layout that should be use to calcuate the value for the parameter. + + + + + + Gets or sets the database parameter size. + + + + + + Gets or sets the database parameter precision. + + + + + + Gets or sets the database parameter scale. + + + + + + Writes log messages to the database using an ADO.NET provider. + + Documentation on NLog Wiki + + + The configuration is dependent on the database type, because + there are differnet methods of specifying connection string, SQL + command and command parameters. + + MS SQL Server using System.Data.SqlClient: + + Oracle using System.Data.OracleClient: + + Oracle using System.Data.OleDBClient: + + To set up the log target programmatically use code like this (an equivalent of MSSQL configuration): + + + + + + Initializes a new instance of the class. + + + + + Performs installation which requires administrative permissions. + + The installation context. + + + + Performs uninstallation which requires administrative permissions. + + The installation context. + + + + Determines whether the item is installed. + + The installation context. + + Value indicating whether the item is installed or null if it is not possible to determine. + + + + + Initializes the target. Can be used by inheriting classes + to initialize logging. + + + + + Closes the target and releases any unmanaged resources. + + + + + Writes the specified logging event to the database. It creates + a new database command, prepares parameters for it by calculating + layouts and executes the command. + + The logging event. + + + + Writes an array of logging events to the log target. By default it iterates on all + events and passes them to "Write" method. Inheriting classes can use this method to + optimize batch writes. + + Logging events to be written out. + + + + Gets or sets the name of the database provider. + + + + The parameter name should be a provider invariant name as registered in machine.config or app.config. Common values are: + +
    +
  • System.Data.SqlClient - SQL Sever Client
  • +
  • System.Data.SqlServerCe.3.5 - SQL Sever Compact 3.5
  • +
  • System.Data.OracleClient - Oracle Client from Microsoft (deprecated in .NET Framework 4)
  • +
  • Oracle.DataAccess.Client - ODP.NET provider from Oracle
  • +
  • System.Data.SQLite - System.Data.SQLite driver for SQLite
  • +
  • Npgsql - Npgsql driver for PostgreSQL
  • +
  • MySql.Data.MySqlClient - MySQL Connector/Net
  • +
+ (Note that provider invariant names are not supported on .NET Compact Framework). + + Alternatively the parameter value can be be a fully qualified name of the provider + connection type (class implementing ) or one of the following tokens: + +
    +
  • sqlserver, mssql, microsoft or msde - SQL Server Data Provider
  • +
  • oledb - OLEDB Data Provider
  • +
  • odbc - ODBC Data Provider
  • +
+
+ +
+ + + Gets or sets the connection string. When provided, it overrides the values + specified in DBHost, DBUserName, DBPassword, DBDatabase. + + + + + + Gets or sets the connection string using for installation and uninstallation. If not provided, regular ConnectionString is being used. + + + + + + Gets the installation DDL commands. + + + + + + Gets the uninstallation DDL commands. + + + + + + Gets or sets a value indicating whether to keep the + database connection open between the log events. + + + + + + Gets or sets a value indicating whether to use database transactions. + Some data providers require this. + + + + + + Gets or sets the database host name. If the ConnectionString is not provided + this value will be used to construct the "Server=" part of the + connection string. + + + + + + Gets or sets the database user name. If the ConnectionString is not provided + this value will be used to construct the "User ID=" part of the + connection string. + + + + + + Gets or sets the database password. If the ConnectionString is not provided + this value will be used to construct the "Password=" part of the + connection string. + + + + + + Gets or sets the database name. If the ConnectionString is not provided + this value will be used to construct the "Database=" part of the + connection string. + + + + + + Gets or sets the text of the SQL command to be run on each log level. + + + Typically this is a SQL INSERT statement or a stored procedure call. + It should use the database-specific parameters (marked as @parameter + for SQL server or :parameter for Oracle, other data providers + have their own notation) and not the layout renderers, + because the latter is prone to SQL injection attacks. + The layout renderers should be specified as <parameter /> elements instead. + + + + + + Gets the collection of parameters. Each parameter contains a mapping + between NLog layout and a database named or positional parameter. + + + + + + Mock target - useful for testing. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +
+
+ + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Increases the number of messages. + + The logging event. + + + + Gets the number of times this target has been called. + + + + + + Gets the last message rendered by this target. + + + + + + Modes of archiving files based on time. + + + + + Don't archive based on time. + + + + + Archive every year. + + + + + Archive every month. + + + + + Archive daily. + + + + + Archive every hour. + + + + + Archive every minute. + + + + + Writes log messages to one or more files. + + Documentation on NLog Wiki + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Removes records of initialized files that have not been + accessed in the last two days. + + + Files are marked 'initialized' for the purpose of writing footers when the logging finishes. + + + + + Removes records of initialized files that have not been + accessed after the specified date. + + The cleanup threshold. + + Files are marked 'initialized' for the purpose of writing footers when the logging finishes. + + + + + Flushes all pending file operations. + + The asynchronous continuation. + + The timeout parameter is ignored, because file APIs don't provide + the needed functionality. + + + + + Initializes file logging by creating data structures that + enable efficient multi-file logging. + + + + + Closes the file(s) opened for writing. + + + + + Writes the specified logging event to a file specified in the FileName + parameter. + + The logging event. + + + + Writes the specified array of logging events to a file specified in the FileName + parameter. + + An array of objects. + + This function makes use of the fact that the events are batched by sorting + the requests by filename. This optimizes the number of open/close calls + and can help improve performance. + + + + + Formats the log event for write. + + The log event to be formatted. + A string representation of the log event. + + + + Gets the bytes to be written to the file. + + Log event. + Array of bytes that are ready to be written. + + + + Modifies the specified byte array before it gets sent to a file. + + The byte array. + The modified byte array. The function can do the modification in-place. + + + + Gets or sets the name of the file to write to. + + + This FileName string is a layout which may include instances of layout renderers. + This lets you use a single target to write to multiple files. + + + The following value makes NLog write logging events to files based on the log level in the directory where + the application runs. + ${basedir}/${level}.log + All Debug messages will go to Debug.log, all Info messages will go to Info.log and so on. + You can combine as many of the layout renderers as you want to produce an arbitrary log file name. + + + + + + Gets or sets a value indicating whether to create directories if they don't exist. + + + Setting this to false may improve performance a bit, but you'll receive an error + when attempting to write to a directory that's not present. + + + + + + Gets or sets a value indicating whether to delete old log file on startup. + + + This option works only when the "FileName" parameter denotes a single file. + + + + + + Gets or sets a value indicating whether to replace file contents on each write instead of appending log message at the end. + + + + + + Gets or sets a value indicating whether to keep log file open instead of opening and closing it on each logging event. + + + Setting this property to True helps improve performance. + + + + + + Gets or sets a value indicating whether to enable log file(s) to be deleted. + + + + + + Gets or sets the line ending mode. + + + + + + Gets or sets a value indicating whether to automatically flush the file buffers after each log message. + + + + + + Gets or sets the number of files to be kept open. Setting this to a higher value may improve performance + in a situation where a single File target is writing to many files + (such as splitting by level or by logger). + + + The files are managed on a LRU (least recently used) basis, which flushes + the files that have not been used for the longest period of time should the + cache become full. As a rule of thumb, you shouldn't set this parameter to + a very high value. A number like 10-15 shouldn't be exceeded, because you'd + be keeping a large number of files open which consumes system resources. + + + + + + Gets or sets the maximum number of seconds that files are kept open. If this number is negative the files are + not automatically closed after a period of inactivity. + + + + + + Gets or sets the log file buffer size in bytes. + + + + + + Gets or sets the file encoding. + + + + + + Gets or sets a value indicating whether concurrent writes to the log file by multiple processes on the same host. + + + This makes multi-process logging possible. NLog uses a special technique + that lets it keep the files open for writing. + + + + + + Gets or sets a value indicating whether concurrent writes to the log file by multiple processes on different network hosts. + + + This effectively prevents files from being kept open. + + + + + + Gets or sets the number of times the write is appended on the file before NLog + discards the log message. + + + + + + Gets or sets the delay in milliseconds to wait before attempting to write to the file again. + + + The actual delay is a random value between 0 and the value specified + in this parameter. On each failed attempt the delay base is doubled + up to times. + + + Assuming that ConcurrentWriteAttemptDelay is 10 the time to wait will be:

+ a random value between 0 and 10 milliseconds - 1st attempt
+ a random value between 0 and 20 milliseconds - 2nd attempt
+ a random value between 0 and 40 milliseconds - 3rd attempt
+ a random value between 0 and 80 milliseconds - 4th attempt
+ ...

+ and so on. + + + + +

+ Gets or sets the size in bytes above which log files will be automatically archived. + + + Caution: Enabling this option can considerably slow down your file + logging in multi-process scenarios. If only one process is going to + be writing to the file, consider setting ConcurrentWrites + to false for maximum performance. + + +
+ + + Gets or sets a value indicating whether to automatically archive log files every time the specified time passes. + + + Files are moved to the archive as part of the write operation if the current period of time changes. For example + if the current hour changes from 10 to 11, the first write that will occur + on or after 11:00 will trigger the archiving. +

+ Caution: Enabling this option can considerably slow down your file + logging in multi-process scenarios. If only one process is going to + be writing to the file, consider setting ConcurrentWrites + to false for maximum performance. +

+
+ +
+ + + Gets or sets the name of the file to be used for an archive. + + + It may contain a special placeholder {#####} + that will be replaced with a sequence of numbers depending on + the archiving strategy. The number of hash characters used determines + the number of numerical digits to be used for numbering files. + + + + + + Gets or sets the maximum number of archive files that should be kept. + + + + + + Gets or sets the way file archives are numbered. + + + + + + Gets the characters that are appended after each line. + + + + + Line ending mode. + + + + + Insert platform-dependent end-of-line sequence after each line. + + + + + Insert CR LF sequence (ASCII 13, ASCII 10) after each line. + + + + + Insert CR character (ASCII 13) after each line. + + + + + Insert LF character (ASCII 10) after each line. + + + + + Don't insert any line ending. + + + + + Sends log messages to a NLog Receiver Service (using WCF or Web Services). + + Documentation on NLog Wiki + + + + Initializes a new instance of the class. + + + + + Writes logging event to the log target. Must be overridden in inheriting + classes. + + Logging event to be written out. + + + + Writes an array of logging events to the log target. By default it iterates on all + events and passes them to "Append" method. Inheriting classes can use this method to + optimize batch writes. + + Logging events to be written out. + + + + Gets or sets the endpoint address. + + The endpoint address. + + + + + Gets or sets the client ID. + + The client ID. + + + + + Gets the list of parameters. + + The parameters. + + + + + Writes log messages to an ArrayList in memory for programmatic retrieval. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +
+
+ + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Renders the logging event message and adds it to the internal ArrayList of log messages. + + The logging event. + + + + Gets the list of logs gathered in the . + + + + + Pops up log messages as message boxes. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ The result is a message box: +

+ +

+ To set up the log target programmatically use code like this: +

+ +
+
+ + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Displays the message box with the log message and caption specified in the Caption + parameter. + + The logging event. + + + + Displays the message box with the array of rendered logs messages and caption specified in the Caption + parameter. + + The array of logging events. + + + + Gets or sets the message box title. + + + + + + A parameter to MethodCall. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The layout to use for parameter value. + + + + Initializes a new instance of the class. + + Name of the parameter. + The layout. + + + + Initializes a new instance of the class. + + The name of the parameter. + The layout. + The type of the parameter. + + + + Gets or sets the name of the parameter. + + + + + + Gets or sets the type of the parameter. + + + + + + Gets or sets the layout that should be use to calcuate the value for the parameter. + + + + + + Calls the specified static method on each log message and passes contextual parameters to it. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +
+
+ + + The base class for all targets which call methods (local or remote). + Manages parameters and type coercion. + + + + + Initializes a new instance of the class. + + + + + Prepares an array of parameters to be passed based on the logging event and calls DoInvoke(). + + + The logging event. + + + + + Calls the target method. Must be implemented in concrete classes. + + Method call parameters. + + + + Gets the array of parameters to be passed. + + + + + + Initializes the target. + + + + + Calls the specified Method. + + Method parameters. + + + + Gets or sets the class name. + + + + + + Gets or sets the method name. The method must be public and static. + + + + + + Action that should be taken if the message overflows. + + + + + Report an error. + + + + + Split the message into smaller pieces. + + + + + Discard the entire message. + + + + + Represents a parameter to a NLogViewer target. + + + + + Initializes a new instance of the class. + + + + + Gets or sets viewer parameter name. + + + + + + Gets or sets the layout that should be use to calcuate the value for the parameter. + + + + + + Discards log messages. Used mainly for debugging and benchmarking. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +
+
+ + + Does nothing. Optionally it calculates the layout text but + discards the results. + + The logging event. + + + + Gets or sets a value indicating whether to perform layout calculation. + + + + + + Marks class as a logging target and assigns a name to it. + + + + + Initializes a new instance of the class. + + Name of the target. + + + + Gets or sets a value indicating whether to the target is a wrapper target (used to generate the target summary documentation page). + + + + + Gets or sets a value indicating whether to the target is a compound target (used to generate the target summary documentation page). + + + + + Web service protocol. + + + + + Use SOAP 1.1 Protocol. + + + + + Use SOAP 1.2 Protocol. + + + + + Use HTTP POST Protocol. + + + + + Use HTTP GET Protocol. + + + + + Calls the specified web service on each log message. + + Documentation on NLog Wiki + + The web service must implement a method that accepts a number of string parameters. + + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +

The example web service that works with this example is shown below

+ +
+
+ + + Initializes a new instance of the class. + + + + + Invokes the web service method. + + Parameters to be passed. + + + + Gets or sets the web service URL. + + + + + + Gets or sets the Web service method name. + + + + + + Gets or sets the Web service namespace. + + + + + + Gets or sets the protocol to be used when calling web service. + + + + + + Asynchronous request queue. + + + + + Initializes a new instance of the AsyncRequestQueue class. + + Request limit. + The overflow action. + + + + Enqueues another item. If the queue is overflown the appropriate + action is taken as specified by . + + The log event info. + + + + Dequeues a maximum of count items from the queue + and adds returns the list containing them. + + Maximum number of items to be dequeued. + The array of log events. + + + + Clears the queue. + + + + + Gets or sets the request limit. + + + + + Gets or sets the action to be taken when there's no more room in + the queue and another request is enqueued. + + + + + Gets the number of requests currently in the queue. + + + + + Provides asynchronous, buffered execution of target writes. + + Documentation on NLog Wiki + +

+ Asynchronous target wrapper allows the logger code to execute more quickly, by queueing + messages and processing them in a separate thread. You should wrap targets + that spend a non-trivial amount of time in their Write() method with asynchronous + target to speed up logging. +

+

+ Because asynchronous logging is quite a common scenario, NLog supports a + shorthand notation for wrapping all targets with AsyncWrapper. Just add async="true" to + the <targets/> element in the configuration file. +

+ + + ... your targets go here ... + + ]]> +
+ +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +

+ +
+
+ + + Base class for targets wrap other (single) targets. + + + + + Returns the text representation of the object. Used for diagnostics. + + A string that describes the target. + + + + Flush any pending log messages (in case of asynchronous targets). + + The asynchronous continuation. + + + + Writes logging event to the log target. Must be overridden in inheriting + classes. + + Logging event to be written out. + + + + Gets or sets the target that is wrapped by this target. + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The wrapped target. + + + + Initializes a new instance of the class. + + The wrapped target. + Maximum number of requests in the queue. + The action to be taken when the queue overflows. + + + + Waits for the lazy writer thread to finish writing messages. + + The asynchronous continuation. + + + + Initializes the target by starting the lazy writer timer. + + + + + Shuts down the lazy writer timer. + + + + + Starts the lazy writer thread which periodically writes + queued log messages. + + + + + Starts the lazy writer thread. + + + + + Adds the log event to asynchronous queue to be processed by + the lazy writer thread. + + The log event. + + The is called + to ensure that the log event can be processed in another thread. + + + + + Gets or sets the number of log events that should be processed in a batch + by the lazy writer thread. + + + + + + Gets or sets the time in milliseconds to sleep between batches. + + + + + + Gets or sets the action to be taken when the lazy writer thread request queue count + exceeds the set limit. + + + + + + Gets or sets the limit on the number of requests in the lazy writer thread request queue. + + + + + + Gets the queue of lazy writer thread requests. + + + + + The action to be taken when the queue overflows. + + + + + Grow the queue. + + + + + Discard the overflowing item. + + + + + Causes a flush after each write on a wrapped target. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +

+ +
+
+ + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Initializes a new instance of the class. + + The wrapped target. + + + + Forwards the call to the .Write() + and calls on it. + + Logging event to be written out. + + + + A target that buffers log events and sends them in batches to the wrapped target. + + Documentation on NLog Wiki + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The wrapped target. + + + + Initializes a new instance of the class. + + The wrapped target. + Size of the buffer. + + + + Initializes a new instance of the class. + + The wrapped target. + Size of the buffer. + The flush timeout. + + + + Flushes pending events in the buffer (if any). + + The asynchronous continuation. + + + + Initializes the target. + + + + + Closes the target by flushing pending events in the buffer (if any). + + + + + Adds the specified log event to the buffer and flushes + the buffer in case the buffer gets full. + + The log event. + + + + Gets or sets the number of log events to be buffered. + + + + + + Gets or sets the timeout (in milliseconds) after which the contents of buffer will be flushed + if there's no write in the specified period of time. Use -1 to disable timed flushes. + + + + + + Gets or sets a value indicating whether to use sliding timeout. + + + This value determines how the inactivity period is determined. If sliding timeout is enabled, + the inactivity timer is reset after each write, if it is disabled - inactivity timer will + count from the first event written to the buffer. + + + + + + A base class for targets which wrap other (multiple) targets + and provide various forms of target routing. + + + + + Initializes a new instance of the class. + + The targets. + + + + Returns the text representation of the object. Used for diagnostics. + + A string that describes the target. + + + + Writes logging event to the log target. + + Logging event to be written out. + + + + Flush any pending log messages for all wrapped targets. + + The asynchronous continuation. + + + + Gets the collection of targets managed by this compound target. + + + + + Provides fallback-on-error. + + Documentation on NLog Wiki + +

This example causes the messages to be written to server1, + and if it fails, messages go to server2.

+

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +

+ +
+
+ + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The targets. + + + + Forwards the log event to the sub-targets until one of them succeeds. + + The log event. + + The method remembers the last-known-successful target + and starts the iteration from it. + If is set, the method + resets the target to the first target + stored in . + + + + + Gets or sets a value indicating whether to return to the first target after any successful write. + + + + + + Filtering rule for . + + + + + Initializes a new instance of the FilteringRule class. + + + + + Initializes a new instance of the FilteringRule class. + + Condition to be tested against all events. + Filter to apply to all log events when the first condition matches any of them. + + + + Gets or sets the condition to be tested. + + + + + + Gets or sets the resulting filter to be applied when the condition matches. + + + + + + Filters log entries based on a condition. + + Documentation on NLog Wiki + +

This example causes the messages not contains the string '1' to be ignored.

+

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +

+ +
+
+ + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The wrapped target. + The condition. + + + + Checks the condition against the passed log event. + If the condition is met, the log event is forwarded to + the wrapped target. + + Log event. + + + + Gets or sets the condition expression. Log events who meet this condition will be forwarded + to the wrapped target. + + + + + + Logon provider. + + + + + Use the standard logon provider for the system. + + + The default security provider is negotiate, unless you pass NULL for the domain name and the user name + is not in UPN format. In this case, the default provider is NTLM. + NOTE: Windows 2000/NT: The default security provider is NTLM. + + + + + Filters buffered log entries based on a set of conditions that are evaluated on a group of events. + + Documentation on NLog Wiki + + PostFilteringWrapper must be used with some type of buffering target or wrapper, such as + AsyncTargetWrapper, BufferingWrapper or ASPNetBufferingWrapper. + + +

+ This example works like this. If there are no Warn,Error or Fatal messages in the buffer + only Info messages are written to the file, but if there are any warnings or errors, + the output includes detailed trace (levels >= Debug). You can plug in a different type + of buffering wrapper (such as ASPNetBufferingWrapper) to achieve different + functionality. +

+

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +

+ +
+
+ + + Initializes a new instance of the class. + + + + + Evaluates all filtering rules to find the first one that matches. + The matching rule determines the filtering condition to be applied + to all items in a buffer. If no condition matches, default filter + is applied to the array of log events. + + Array of log events to be post-filtered. + + + + Gets or sets the default filter to be applied when no specific rule matches. + + + + + + Gets the collection of filtering rules. The rules are processed top-down + and the first rule that matches determines the filtering condition to + be applied to log events. + + + + + + Sends log messages to a randomly selected target. + + Documentation on NLog Wiki + +

This example causes the messages to be written to either file1.txt or file2.txt + chosen randomly on a per-message basis. +

+

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +

+ +
+
+ + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The targets. + + + + Forwards the log event to one of the sub-targets. + The sub-target is randomly chosen. + + The log event. + + + + Repeats each log event the specified number of times. + + Documentation on NLog Wiki + +

This example causes each log message to be repeated 3 times.

+

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +

+ +
+
+ + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The wrapped target. + The repeat count. + + + + Forwards the log message to the by calling the method times. + + The log event. + + + + Gets or sets the number of times to repeat each log message. + + + + + + Retries in case of write error. + + Documentation on NLog Wiki + +

This example causes each write attempt to be repeated 3 times, + sleeping 1 second between attempts if first one fails.

+

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +

+ +
+
+ + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The wrapped target. + The retry count. + The retry delay milliseconds. + + + + Writes the specified log event to the wrapped target, retrying and pausing in case of an error. + + The log event. + + + + Gets or sets the number of retries that should be attempted on the wrapped target in case of a failure. + + + + + + Gets or sets the time to wait between retries in milliseconds. + + + + + + Distributes log events to targets in a round-robin fashion. + + Documentation on NLog Wiki + +

This example causes the messages to be written to either file1.txt or file2.txt. + Each odd message is written to file2.txt, each even message goes to file1.txt. +

+

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +

+ +
+
+ + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The targets. + + + + Forwards the write to one of the targets from + the collection. + + The log event. + + The writes are routed in a round-robin fashion. + The first log event goes to the first target, the second + one goes to the second target and so on looping to the + first target when there are no more targets available. + In general request N goes to Targets[N % Targets.Count]. + + + + + Impersonation level. + + + + + Anonymous Level. + + + + + Identification Level. + + + + + Impersonation Level. + + + + + Delegation Level. + + + + + Logon type. + + + + + Interactive Logon. + + + This logon type is intended for users who will be interactively using the computer, such as a user being logged on + by a terminal server, remote shell, or similar process. + This logon type has the additional expense of caching logon information for disconnected operations; + therefore, it is inappropriate for some client/server applications, + such as a mail server. + + + + + Network Logon. + + + This logon type is intended for high performance servers to authenticate plaintext passwords. + The LogonUser function does not cache credentials for this logon type. + + + + + Batch Logon. + + + This logon type is intended for batch servers, where processes may be executing on behalf of a user without + their direct intervention. This type is also for higher performance servers that process many plaintext + authentication attempts at a time, such as mail or Web servers. + The LogonUser function does not cache credentials for this logon type. + + + + + Logon as a Service. + + + Indicates a service-type logon. The account provided must have the service privilege enabled. + + + + + Network Clear Text Logon. + + + This logon type preserves the name and password in the authentication package, which allows the server to make + connections to other network servers while impersonating the client. A server can accept plaintext credentials + from a client, call LogonUser, verify that the user can access the system across the network, and still + communicate with other servers. + NOTE: Windows NT: This value is not supported. + + + + + New Network Credentials. + + + This logon type allows the caller to clone its current token and specify new credentials for outbound connections. + The new logon session has the same local identifier but uses different credentials for other network connections. + NOTE: This logon type is supported only by the LOGON32_PROVIDER_WINNT50 logon provider. + NOTE: Windows NT: This value is not supported. + + + + + Writes log events to all targets. + + Documentation on NLog Wiki + +

This example causes the messages to be written to both file1.txt or file2.txt +

+

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +

+ +
+
+ + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The targets. + + + + Forwards the specified log event to all sub-targets. + + The log event. + + + + Writes an array of logging events to the log target. By default it iterates on all + events and passes them to "Write" method. Inheriting classes can use this method to + optimize batch writes. + + Logging events to be written out. + + + diff --git a/NzbDrone.Core/Libraries/Ninject.Web.Mvc.dll b/NzbDrone.Core/Libraries/Ninject.Web.Mvc.dll new file mode 100644 index 0000000000000000000000000000000000000000..3cb775640bb8175fc52c5a51d69d3e72b6cdb1d2 GIT binary patch literal 9728 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 C4=vRI literal 0 HcmV?d00001 diff --git a/NzbDrone.Core/Libraries/Ninject.Web.Mvc.pdb b/NzbDrone.Core/Libraries/Ninject.Web.Mvc.pdb new file mode 100644 index 0000000000000000000000000000000000000000..f704e894abd1478cf2feb87b941d0f37b7a5ba36 GIT binary patch literal 17920 zcmeHO3v86f5#BqW5A!g!DG6X6HN>P4z&=ATE+OC-4iJb#Ou|EM;C%jpE9TDJ{Sc6- zbX24-nTo236cCX>qzzS@iYkywEvT+UX`zWK6@-XXHBm+SQUxT6+6bl4@7u@Sf9E^< zY=Z>$O_-a1cV>2WXLo1kU;kMZ3`D}w@MgQTzM_8CtkPA@jin39eZImGB@N92;FkZy zBX~T+GGLk_x!*zHfv!6_7|I@~#v1-?C_7+?kA39DN*C9FDAEWrM%=mM0nLlyCkKPt z19^jbbh*Lx=7CqrD_vK*4zF}UaPluMuPFTBLgVqj{5f>teDz+VOCB)?gU zXZ&ZGBTuD+&l^K;M4z>;UUGierQ(ClqO0k+``EdqPapc{-~Lp5aEU69eEpjniZ@>> zKKmH*#De8#H~lD7^T)PttbFHY-Q|6eHxDswARJvk-+gP?=_~(Td0<@0^|o)R+T8E` z?t!~C|COgdzq(>|^`h?;o!tAovxmFx_i^X?r#x`C=6|%c>&=4GtNfP^Ty(Ga-+z9V z^Y4S>0p@nN<`aAu;JKd<^a6(g3xLCcBY-1;qkx4##{FX87~mIyqk&%ljs-phd>A+m zn1cty16BG((9j2?*STH})C0F~+`hs6-@%`Tg)L1TRwx?Y83|Y|Ypkf<@=P%FH7j73 zueDmsSM3Uza(y^tN5bvxR;1A%u)~o(<$vb0+RB+n^}Vh*zK z0MGk!@feSC(ZwGC&vFBpUrw*O|0(BI=h>cDOuhX;Bg=UhA<218 zy5jS}JaRXXFh}ahHe(#~Je12o=YxJ3v_jsS;KnZnC!m&KG zIpUAnk(~j1XT*~G9JAbWjKDtOc$_hUWsf^~jo0b%Zq*a*9PbzmhjT1hiyS$|#%9|e zu@|>)+$gs}U-lN-m;2e+{ZQLA=ReHx9m*T(*={A}`eS#Y9&ac7L*N-~06B$s4+^qN z-G-}T<25kXL6>?)*2G3s>)7ZK_045-%X|RHF@6oCuhk4VfC@$AFZQOl3Vlh_*Kh|U z7{?EC4M3NAM)qFy)y(Hf-B-pj19)HdTBffmJ|~U@oikImKRz<&T^ScQK>9;H@*Ul~ z!`N*KIc8L@U#ksr1F`v98k-omH7(oZH=z!?`?E}n~@H)^k@ zm&JOBtreT%vTC2DmwgdL-2ot8|>rK{lsg^sS%K`xpRT;sRhL5TY|oDHU&ql3=_a&P++`}34sKj|+H&Dv2idhN9)bZ1}_x)mF`MvfFDf3K~sZ)}`5zo8!1=KQi8>2pgH4fB3YLCZ7d$tA*D zSkL@JLBu@BvA%#3^OaO^iHQ6=9p9q~E)i7^^4V(H3Yy@pwG7iG>_`X&{B1!3%lZ** z1fqLTFn?2`uMO~-_tSV!m5|EgJ+kR%DsKlWOr4=@gwOH6HRv+y3FPrE()dg-yEtzj zcm=Y=IF$hE@h%_}kM9zhczoB-#5)F_xzBRibHjQecH389(bUq z|No13C>6NK-zKjwD?+f)UvIjv|#_TS(I(tZCYo9=5% zX};#`S3BLl&SNCxU-`I7cj=wU*CG=k8Stk8d1FkueBdb{Z|vHECMw|ZK87*q8{cbN zF-*Khh~xSkJBc#iS=Tvm6P{-P`L}rwhCLR@`!ePTU7(Cqr9gUUGH?nI_qH;|^Uju@ zqF3l4dW`1@V>R-QZr_uSMIG;+m~V^&vX9I=CIU-Vyop>353mRR4}$uY AkpKVy literal 0 HcmV?d00001 diff --git a/NzbDrone.Core/Libraries/Ninject.dll b/NzbDrone.Core/Libraries/Ninject.dll new file mode 100644 index 0000000000000000000000000000000000000000..35fdfc41b1451c298d22aac9dfb25c9be134ee25 GIT binary patch literal 96256 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 literal 0 HcmV?d00001 diff --git a/NzbDrone.Core/Libraries/Ninject.xml b/NzbDrone.Core/Libraries/Ninject.xml new file mode 100644 index 000000000..d9cf2f22a --- /dev/null +++ b/NzbDrone.Core/Libraries/Ninject.xml @@ -0,0 +1,4026 @@ + + + + Ninject + + + + + A block used for deterministic disposal of activated instances. When the block is + disposed, all instances activated via it will be deactivated. + + + + + An object that notifies when it is disposed. + + + + + An object that can report whether or not it is disposed. + + + + + Gets a value indicating whether this instance is disposed. + + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Releases resources held by the object. + + + + + Releases resources before the object is reclaimed by garbage collection. + + + + + Gets a value indicating whether this instance is disposed. + + + + + A block used for deterministic disposal of activated instances. When the block is + disposed, all instances activated via it will be deactivated. + + + + + Provides a path to resolve instances. + + + + + Determines whether the specified request can be resolved. + + The request. + True if the request can be resolved; otherwise, false. + + + + Resolves instances for the specified request. The instances are not actually resolved + until a consumer iterates over the enumerator. + + The request to resolve. + An enumerator of instances that match the request. + + + + Creates a request for the specified service. + + The service that is being requested. + The constraint to apply to the bindings to determine if they match the request. + The parameters to pass to the resolution. + True if the request is optional; otherwise, false. + True if the request should return a unique result; otherwise, false. + The created request. + + + + An object that fires an event when it is disposed. + + + + + Occurs when the object is disposed. + + + + + Initializes a new instance of the class. + + The parent resolution root. + + + + Releases resources held by the object. + + + + + Determines whether the specified request can be resolved. + + The request. + True if the request can be resolved; otherwise, false. + + + + Resolves instances for the specified request. The instances are not actually resolved + until a consumer iterates over the enumerator. + + The request to resolve. + An enumerator of instances that match the request. + + + + Creates a request for the specified service. + + The service that is being requested. + The constraint to apply to the bindings to determine if they match the request. + The parameters to pass to the resolution. + True if the request is optional; otherwise, false. + True if the request should return a unique result; otherwise, false. + The created request. + + + + Gets or sets the parent resolution root (usually the kernel). + + + + + Occurs when the object is disposed. + + + + + Tracks instances for re-use in certain scopes. + + + + + A component that contributes to the internals of Ninject. + + + + + A component that contributes to the internals of Ninject. + + + + + Gets or sets the settings. + + + + + Gets or sets the settings. + + + + + Tracks instances for re-use in certain scopes. + + + + + Stores the specified instance in the cache. + + The context to store. + The instance reference. + + + + Tries to retrieve an instance to re-use in the specified context. + + The context that is being activated. + The instance for re-use, or if none has been stored. + + + + Deactivates and releases the specified instance from the cache. + + The instance to release. + if the instance was found and released; otherwise . + + + + Removes instances from the cache which should no longer be re-used. + + + + + Immediately deactivates and removes all instances in the cache that are owned by + the specified scope. + + The scope whose instances should be deactivated. + + + + Immediately deactivates and removes all instances in the cache, regardless of scope. + + + + + Gets the number of entries currently stored in the cache. + + + + + Initializes a new instance of the class. + + The pipeline component. + The cache pruner component. + + + + Releases resources held by the object. + + + + + Stores the specified context in the cache. + + The context to store. + The instance reference. + + + + Tries to retrieve an instance to re-use in the specified context. + + The context that is being activated. + The instance for re-use, or if none has been stored. + + + + Deactivates and releases the specified instance from the cache. + + The instance to release. + if the instance was found and released; otherwise . + + + + Removes instances from the cache which should no longer be re-used. + + + + + Immediately deactivates and removes all instances in the cache that are owned by + the specified scope. + + The scope whose instances should be deactivated. + + + + Immediately deactivates and removes all instances in the cache, regardless of scope. + + + + + Gets or sets the pipeline component. + + + + + Gets the number of entries currently stored in the cache. + + + + + Uses a and some magic to poll + the garbage collector to see if it has run. + + + + + Prunes instances from an based on environmental information. + + + + + Starts pruning the specified cache based on the rules of the pruner. + + The cache that will be pruned. + + + + Stops pruning. + + + + + Releases resources held by the object. + + + + + Starts pruning the specified cache based on the rules of the pruner. + + The cache that will be pruned. + + + + Stops pruning. + + + + + Gets the cache that is being pruned. + + + + + A provider that delegates to a callback method to create instances. + + The type of instances the provider creates. + + + + A simple abstract provider for instances of a specific type. + + The type of instances the provider creates. + + + + Creates instances of services. + + + + + Creates an instance within the specified context. + + The context. + The created instance. + + + + Gets the type (or prototype) of instances the provider creates. + + + + + Creates an instance within the specified context. + + The context. + The created instance. + + + + Creates an instance within the specified context. + + The context. + The created instance. + + + + Gets the type (or prototype) of instances the provider creates. + + + + + Initializes a new instance of the CallbackProvider<T> class. + + The callback method that will be called to create instances. + + + + Invokes the callback method to create an instance. + + The context. + The created instance. + + + + Gets the callback method used by the provider. + + + + + A provider that always returns the same constant value. + + The type of value that is returned. + + + + Initializes a new instance of the ConstantProvider<T> class. + + The value that the provider should return. + + + + Creates an instance within the specified context. + + The context. + The constant value this provider returns. + + + + Gets the value that the provider will return. + + + + + The standard provider for types, which activates instances via a . + + + + + Initializes a new instance of the class. + + The type (or prototype) of instances the provider creates. + The planner component. + The selector component. + + + + Creates an instance within the specified context. + + The context. + The created instance. + + + + Gets the value to inject into the specified target. + + The context. + The target. + The value to inject into the specified target. + + + + Gets the implementation type that the provider will activate an instance of + for the specified service. + + The service in question. + The implementation type that will be activated. + + + + Gets a callback that creates an instance of the + for the specified type. + + The prototype the provider instance will create. + The created callback. + + + + Gets the type (or prototype) of instances the provider creates. + + + + + Gets or sets the planner component. + + + + + Gets or sets the selector component. + + + + + Contributes to a , and is called during the activation + and deactivation of an instance. + + + + + Contributes to a , and is called during the activation + and deactivation of an instance. + + + + + Contributes to the activation of the instance in the specified context. + + The context. + A reference to the instance being activated. + + + + Contributes to the deactivation of the instance in the specified context. + + The context. + A reference to the instance being deactivated. + + + + Contributes to the activation of the instance in the specified context. + + The context. + A reference to the instance being activated. + + + + Contributes to the deactivation of the instance in the specified context. + + The context. + A reference to the instance being deactivated. + + + + Executes actions defined on the binding during activation and deactivation. + + + + + Calls the activation actions defined on the binding. + + The context. + A reference to the instance being activated. + + + + Calls the deactivation actions defined on the binding. + + The context. + A reference to the instance being deactivated. + + + + During deactivation, disposes instances that implement . + + + + + Disposes the specified instance. + + The context. + A reference to the instance being deactivated. + + + + During activation, initializes instances that implement . + + + + + Initializes the specified instance. + + The context. + A reference to the instance being activated. + + + + Injects methods on an instance during activation. + + + + + Injects values into the properties as described by s + contained in the plan. + + The context. + A reference to the instance being activated. + + + + Injects properties on an instance during activation. + + + + + Initializes a new instance of the class. + + The injector factory component. + + + + Injects values into the properties as described by s + contained in the plan. + + The context. + A reference to the instance being activated. + + + + Applies user supplied override values to instance properties. + + The context. + A reference to the instance being activated. + The parameter ovverride value accessors. + + + + Gets the value to inject into the specified target. + + The context. + The target. + The value to inject into the specified target. + + + + Gets the injector factory component. + + + + + Starts instances that implement during activation, + and stops them during deactivation. + + + + + Starts the specified instance. + + The context. + A reference to the instance being activated. + + + + Stops the specified instance. + + The context. + A reference to the instance being deactivated. + + + + Contains information about the activation of a single instance. + + + + + Contains information about the activation of a single instance. + + + + + Gets the provider that should be used to create the instance for this context. + + The provider that should be used. + + + + Gets the scope for the context that "owns" the instance activated therein. + + The object that acts as the scope. + + + + Resolves this instance for this context. + + The resolved instance. + + + + Gets the kernel that is driving the activation. + + + + + Gets the request. + + + + + Gets the binding. + + + + + Gets or sets the activation plan. + + + + + Gets the parameters that were passed to manipulate the activation process. + + + + + Gets the generic arguments for the request, if any. + + + + + Gets a value indicating whether the request involves inferred generic arguments. + + + + + Initializes a new instance of the class. + + The kernel managing the resolution. + The context's request. + The context's binding. + The cache component. + The planner component. + The pipeline component. + + + + Gets the scope for the context that "owns" the instance activated therein. + + The object that acts as the scope. + + + + Gets the provider that should be used to create the instance for this context. + + The provider that should be used. + + + + Resolves the instance associated with this hook. + + The resolved instance. + + + + Gets the kernel that is driving the activation. + + + + + Gets the request. + + + + + Gets the binding. + + + + + Gets or sets the activation plan. + + + + + Gets the parameters that were passed to manipulate the activation process. + + + + + Gets the generic arguments for the request, if any. + + + + + Gets a value indicating whether the request involves inferred generic arguments. + + + + + Gets or sets the cache component. + + + + + Gets or sets the planner component. + + + + + Gets or sets the pipeline component. + + + + + Holds an instance during activation or after it has been cached. + + + + + Returns a value indicating whether the instance is of the specified type. + + The type in question. + if the instance is of the specified type, otherwise . + + + + Returns the instance as the specified type. + + The requested type. + The instance. + + + + Executes the specified action if the instance if of the specified type. + + The type in question. + The action to execute. + + + + Gets or sets the instance. + + + + + Drives the activation (injection, etc.) of an instance. + + + + + Activates the instance in the specified context. + + The context. + The instance reference. + + + + Deactivates the instance in the specified context. + + The context. + The instance reference. + + + + Gets the strategies that contribute to the activation and deactivation processes. + + + + + Describes the request for a service resolution. + + + + + Determines whether the specified binding satisfies the constraint defined on this request. + + The binding. + True if the binding satisfies the constraint; otherwise false. + + + + Gets the scope if one was specified in the request. + + The object that acts as the scope. + + + + Creates a child request. + + The service that is being requested. + The context in which the request was made. + The target that will receive the injection. + The child request. + + + + Gets the service that was requested. + + + + + Gets the parent request. + + + + + Gets the parent context. + + + + + Gets the target that will receive the injection, if any. + + + + + Gets the constraint that will be applied to filter the bindings used for the request. + + + + + Gets the parameters that affect the resolution. + + + + + Gets the stack of bindings which have been activated by either this request or its ancestors. + + + + + Gets the recursive depth at which this request occurs. + + + + + Gets or sets value indicating whether the request is optional. + + + + + Gets or sets value indicating whether the request should return a unique result. + + + + + Drives the activation (injection, etc.) of an instance. + + + + + Initializes a new instance of the class. + + The strategies to execute during activation and deactivation. + + + + Activates the instance in the specified context. + + The context. + The instance reference. + + + + Deactivates the instance in the specified context. + + The context. + The instance reference. + + + + Gets the strategies that contribute to the activation and deactivation processes. + + + + + Describes the request for a service resolution. + + + + + Initializes a new instance of the class. + + The service that was requested. + The constraint that will be applied to filter the bindings used for the request. + The parameters that affect the resolution. + The scope callback, if an external scope was specified. + True if the request is optional; otherwise, false. + True if the request should return a unique result; otherwise, false. + + + + Initializes a new instance of the class. + + The parent context. + The service that was requested. + The target that will receive the injection. + The scope callback, if an external scope was specified. + + + + Determines whether the specified binding satisfies the constraints defined on this request. + + The binding. + True if the binding satisfies the constraints; otherwise false. + + + + Gets the scope if one was specified in the request. + + The object that acts as the scope. + + + + Creates a child request. + + The service that is being requested. + The context in which the request was made. + The target that will receive the injection. + The child request. + + + + Gets the service that was requested. + + + + + Gets the parent request. + + + + + Gets the parent context. + + + + + Gets the target that will receive the injection, if any. + + + + + Gets the constraint that will be applied to filter the bindings used for the request. + + + + + Gets the parameters that affect the resolution. + + + + + Gets the stack of bindings which have been activated by either this request or its ancestors. + + + + + Gets the recursive depth at which this request occurs. + + + + + Gets or sets value indicating whether the request is optional. + + + + + Gets or sets value indicating whether the request is for a single service. + + + + + Gets the callback that resolves the scope for the request, if an external scope was provided. + + + + + Defines a constraint on the decorated member. + + + + + Determines whether the specified binding metadata matches the constraint. + + The metadata in question. + True if the metadata matches; otherwise false. + + + + Indicates that the decorated member should be injected. + + + + + Indicates that the decorated member should only be injected using binding(s) registered + with the specified name. + + + + + Initializes a new instance of the class. + + The name of the binding(s) to use. + + + + Determines whether the specified binding metadata matches the constraint. + + The metadata in question. + True if the metadata matches; otherwise false. + + + + Gets the binding name. + + + + + Indicates that the decorated member represents an optional dependency. + + + + + An internal container that manages and resolves components that contribute to Ninject. + + + + + An internal container that manages and resolves components that contribute to Ninject. + + + + + Registers a component in the container. + + The component type. + The component's implementation type. + + + + Removes all registrations for the specified component. + + The component type. + + + + Removes all registrations for the specified component. + + The component's type. + + + + Gets one instance of the specified component. + + The component type. + The instance of the component. + + + + Gets all available instances of the specified component. + + The component type. + A series of instances of the specified component. + + + + Gets one instance of the specified component. + + The component type. + The instance of the component. + + + + Gets all available instances of the specified component. + + The component type. + A series of instances of the specified component. + + + + Gets or sets the kernel that owns the component container. + + + + + Releases resources held by the object. + + + + + Registers a component in the container. + + The component type. + The component's implementation type. + + + + Removes all registrations for the specified component. + + The component type. + + + + Removes all registrations for the specified component. + + The component type. + + + + Gets one instance of the specified component. + + The component type. + The instance of the component. + + + + Gets all available instances of the specified component. + + The component type. + A series of instances of the specified component. + + + + Gets one instance of the specified component. + + The component type. + The instance of the component. + + + + Gets all available instances of the specified component. + + The component type. + A series of instances of the specified component. + + + + Gets or sets the kernel that owns the component container. + + + + + Represents a future value. + + The type of value. + + + + Initializes a new instance of the Future<T> class. + + The callback that will be triggered to read the value. + + + + Gets the value from the future. + + The future. + The future value. + + + + Gets the value, resolving it if necessary. + + + + + Gets the callback that will be called to resolve the value. + + + + + Indicates the object has a reference to a . + + + + + Gets the binding. + + + + + Indicates that the object has a reference to an . + + + + + Gets the kernel. + + + + + A data structure that contains multiple values for a each key. + + The type of key. + The type of value. + + + + Adds the specified value for the specified key. + + The key. + The value. + + + + Removes the specified value for the specified key. + + The key. + The value. + True if such a value existed and was removed; otherwise false. + + + + Removes all values for the specified key. + + The key. + True if any such values existed; otherwise false. + + + + Removes all values. + + + + + Determines whether the multimap contains any values for the specified key. + + The key. + True if the multimap has one or more values for the specified key; otherwise, false. + + + + Determines whether the multimap contains the specified value for the specified key. + + The key. + The value. + True if the multimap contains such a value; otherwise, false. + + + + Returns an enumerator that iterates through a the multimap. + + An object that can be used to iterate through the multimap. + + + + Gets the collection of values stored under the specified key. + + The key. + + + + Gets the collection of keys. + + + + + Gets the collection of collections of values. + + + + + Defines the style of request (single or multi-injection, whether it is optional, etc.) + + + + + Indicates a request for a single instance of a service. + + + + + Indicates a request for multiple instances of a service. + + + + + Indicates that null should be returned (instead of throwing) if the service cannot be resolved. + + + + + Scope callbacks for standard scopes. + + + + + Gets the callback for transient scope. + + + + + Gets the callback for singleton scope. + + + + + Gets the callback for thread scope. + + + + + Gets the callback for request scope. + + + + + A delegate that can inject values into a constructor. + + + + + Creates injectors for members via s. + + + + + Creates injectors from members. + + + + + Gets or creates an injector for the specified constructor. + + The constructor. + The created injector. + + + + Gets or creates an injector for the specified property. + + The property. + The created injector. + + + + Gets or creates an injector for the specified method. + + The method. + The created injector. + + + + Gets or creates an injector for the specified constructor. + + The constructor. + The created injector. + + + + Gets or creates an injector for the specified property. + + The property. + The created injector. + + + + Gets or creates an injector for the specified method. + + The method. + The created injector. + + + + A delegate that can inject values into a method. + + + + + A delegate that can inject values into a property. + + + + + Creates injectors from members via reflective invocation. + + + + + Gets or creates an injector for the specified constructor. + + The constructor. + The created injector. + + + + Gets or creates an injector for the specified property. + + The property. + The created injector. + + + + Gets or creates an injector for the specified method. + + The method. + The created injector. + + + + Loads modules from compiled assemblies. + + + + + Loads modules at runtime by searching external files. + + + + + Loads modules from the specified files. + + The names of the files to load modules from. + + + + Gets the file extensions that the plugin understands how to load. + + + + + Initializes a new instance of the class. + + The kernel into which modules will be loaded. + + + + Loads modules from the specified files. + + The names of the files to load modules from. + + + + Gets or sets the kernel into which modules will be loaded. + + + + + Gets the file extensions that the plugin understands how to load. + + + + + Finds modules defined in external files. + + + + + Loads any modules found in the files that match the specified patterns. + + The patterns to search. + + + + A pluggable unit that can be loaded into an . + + + + + Called when the module is loaded into a kernel. + + The kernel that is loading the module. + + + + Called when the module is unloaded from a kernel. + + The kernel that is unloading the module. + + + + Gets the module's name. + + + + + Automatically finds and loads modules from assemblies. + + + + + Initializes a new instance of the class. + + The kernel into which modules will be loaded. + + + + Loads any modules found in the files that match the specified patterns. + + The patterns to search. + + + + Gets or sets the kernel into which modules will be loaded. + + + + + A loadable unit that defines bindings for your application. + + + + + Provides a path to register bindings. + + + + + Provides a path to register bindings. + + + + + Declares a binding for the specified service. + + The service to bind. + + + + Declares a binding from the service to itself. + + The service to bind. + + + + Unregisters all bindings for the specified service. + + The service to unbind. + + + + Unregisters all bindings for the specified service. + + The service to unbind. + + + + Removes any existing bindings for the specified service, and declares a new one. + + The service to re-bind. + + + + Removes any existing bindings for the specified service, and declares a new one. + + The service to re-bind. + + + + Registers the specified binding. + + The binding to add. + + + + Unregisters the specified binding. + + The binding to remove. + + + + Declares a binding for the specified service. + + The service to bind. + + + + Declares a binding for the specified service. + + The service to bind. + + + + Unregisters all bindings for the specified service. + + The service to unbind. + + + + Unregisters all bindings for the specified service. + + The service to unbind. + + + + Removes any existing bindings for the specified service, and declares a new one. + + The service to re-bind. + + + + Removes any existing bindings for the specified service, and declares a new one. + + The service to re-bind. + + + + Registers the specified binding. + + The binding to add. + + + + Unregisters the specified binding. + + The binding to remove. + + + + Creates a new builder for the specified binding. + + The type restriction to apply to the binding builder. + The binding that will be built. + The created builder. + + + + Initializes a new instance of the class. + + + + + Called when the module is loaded into a kernel. + + The kernel that is loading the module. + + + + Called when the module is unloaded from a kernel. + + The kernel that is unloading the module. + + + + Loads the module into the kernel. + + + + + Unloads the module from the kernel. + + + + + Unregisters all bindings for the specified service. + + The service to unbind. + + + + Registers the specified binding. + + The binding to add. + + + + Unregisters the specified binding. + + The binding to remove. + + + + Creates a new builder for the specified binding. + + The type restriction to apply to the binding builder. + The binding that will be built. + The created builder. + + + + Gets the kernel that the module is loaded into. + + + + + Gets the module's name. Only a single module with a given name can be loaded at one time. + + + + + Gets the bindings that were registered by the module. + + + + + Overrides the injected value of a constructor argument. + + + + + Modifies an activation process in some way. + + + + + Modifies an activation process in some way. + + + + + Gets the value for the parameter within the specified context. + + The context. + The value for the parameter. + + + + Gets the name of the parameter. + + + + + Gets a value indicating whether the parameter should be inherited into child requests. + + + + + Initializes a new instance of the class. + + The name of the parameter. + The value of the parameter. + Whether the parameter should be inherited into child requests. + + + + Initializes a new instance of the class. + + The name of the parameter. + The callback that will be triggered to get the parameter's value. + Whether the parameter should be inherited into child requests. + + + + Gets the value for the parameter within the specified context. + + The context. + The value for the parameter. + + + + Determines whether the object equals the specified object. + + An object to compare with this object. + True if the objects are equal; otherwise false + + + + Serves as a hash function for a particular type. + + A hash code for the object. + + + + Indicates whether the current object is equal to another object of the same type. + + An object to compare with this object. + True if the objects are equal; otherwise false + + + + Gets the name of the parameter. + + + + + Gets a value indicating whether the parameter should be inherited into child requests. + + + + + Gets or sets the callback that will be triggered to get the parameter's value. + + + + + Initializes a new instance of the class. + + The name of the argument to override. + The value to inject into the property. + + + + Initializes a new instance of the class. + + The name of the argument to override. + The callback to invoke to get the value that should be injected. + + + + Overrides the injected value of a property. + + + + + Initializes a new instance of the class. + + The name of the property to override. + The value to inject into the property. + + + + Initializes a new instance of the class. + + The name of the property to override. + The callback to invoke to get the value that should be injected. + + + + Contains logic about which bindings to use for a given service request. + + + + + Returns any bindings from the specified collection that match the specified service. + + The multimap of all registered bindings. + The service in question. + The series of matching bindings. + + + + Resolves bindings for open generic types. + + + + + Returns any bindings from the specified collection that match the specified service. + + The multimap of all registered bindings. + The service in question. + The series of matching bindings. + + + + Resolves bindings that have been registered directly for the service. + + + + + Returns any bindings from the specified collection that match the specified service. + + The multimap of all registered bindings. + The service in question. + The series of matching bindings. + + + + Contains information about a service registration. + + + + + Contains information about a service registration. + + + + + Gets the provider for the binding. + + The context. + The provider to use. + + + + Gets the scope for the binding, if any. + + The context. + The object that will act as the scope, or if the service is transient. + + + + Determines whether the specified request satisfies the condition defined on the binding, + if one was defined. + + The request. + True if the request satisfies the condition; otherwise false. + + + + Gets the service type that is controlled by the binding. + + + + + Gets the binding's metadata. + + + + + Gets or sets the type of target for the binding. + + + + + Gets or sets a value indicating whether the binding was implicitly registered. + + + + + Gets a value indicating whether the binding has a condition associated with it. + + + + + Gets or sets the condition defined for the binding. + + + + + Gets or sets the callback that returns the provider that should be used by the binding. + + + + + Gets or sets the callback that returns the object that will act as the binding's scope. + + + + + Gets the parameters defined for the binding. + + + + + Gets the actions that should be called after instances are activated via the binding. + + + + + Gets the actions that should be called before instances are deactivated via the binding. + + + + + Initializes a new instance of the class. + + The service that is controlled by the binding. + + + + Initializes a new instance of the class. + + The service that is controlled by the binding. + The binding's metadata container. + + + + Gets the provider for the binding. + + The context. + The provider to use. + + + + Gets the scope for the binding, if any. + + The context. + The object that will act as the scope, or if the service is transient. + + + + Determines whether the specified request satisfies the conditions defined on this binding. + + The request. + True if the request satisfies the conditions; otherwise false. + + + + Gets the service type that is controlled by the binding. + + + + + Gets the binding's metadata. + + + + + Gets or sets a value indicating whether the binding was implicitly registered. + + + + + Gets a value indicating whether the binding has a condition associated with it. + + + + + Gets or sets the type of target for the binding. + + + + + Gets or sets the condition defined for the binding. + + + + + Gets or sets the callback that returns the provider that should be used by the binding. + + + + + Gets or sets the callback that returns the object that will act as the binding's scope. + + + + + Gets the parameters defined for the binding. + + + + + Gets the actions that should be called after instances are activated via the binding. + + + + + Gets the actions that should be called before instances are deactivated via the binding. + + + + + Provides a root for the fluent syntax associated with an . + + + + + Used to define the target of a binding. + + The service being bound. + + + + Used to define a basic binding syntax builder. + + + + + A hack to hide methods defined on for IntelliSense + on fluent interfaces. Credit to Daniel Cazzulino. + + + + + + + + + + + + + + + + + Indicates that the service should be self-bound. + + + + + Indicates that the service should be bound to the specified implementation type. + + The implementation type. + + + + Indicates that the service should be bound to the specified implementation type. + + The implementation type. + + + + Indicates that the service should be bound to an instance of the specified provider type. + The instance will be activated via the kernel when an instance of the service is activated. + + The type of provider to activate. + + + + Indicates that the service should be bound to an instance of the specified provider type. + The instance will be activated via the kernel when an instance of the service is activated. + + The type of provider to activate. + + + + Indicates that the service should be bound to the specified provider. + + The provider. + + + + Indicates that the service should be bound to the specified callback method. + + The method. + + + + Indicates that the service should be bound to the specified constant value. + + The constant value. + + + + Used to set the condition, scope, name, or add additional information or actions to a binding. + + The service being bound. + + + + Used to define the conditions under which a binding should be used. + + The service being bound. + + + + Indicates that the binding should be used only for requests that support the specified condition. + + The condition. + + + + Indicates that the binding should be used only for injections on the specified type. + + The type. + + + + Indicates that the binding should be used only for injections on the specified type. + + The type. + + + + Indicates that the binding should be used only when the class being injected has + an attribute of the specified type. + + The type of attribute. + + + + Indicates that the binding should be used only when the member being injected has + an attribute of the specified type. + + The type of attribute. + + + + Indicates that the binding should be used only when the target being injected has + an attribute of the specified type. + + The type of attribute. + + + + Indicates that the binding should be used only when the class being injected has + an attribute of the specified type. + + The type of attribute. + + + + Indicates that the binding should be used only when the member being injected has + an attribute of the specified type. + + The type of attribute. + + + + Indicates that the binding should be used only when the target being injected has + an attribute of the specified type. + + The type of attribute. + + + + Indicates that the binding should be used only when the service is being requested + by a service bound with the specified name. + + The name to expect. + + + + Used to define the scope in which instances activated via a binding should be re-used. + + The service being bound. + + + + Indicates that only a single instance of the binding should be created, and then + should be re-used for all subsequent requests. + + + + + Indicates that instances activated via the binding should not be re-used, nor have + their lifecycle managed by Ninject. + + + + + Indicates that instances activated via the binding should be re-used within the same thread. + + + + + Indicates that instances activated via the binding should be re-used within the same + HTTP request. + + + + + Indicates that instances activated via the binding should be re-used as long as the object + returned by the provided callback remains alive (that is, has not been garbage collected). + + The callback that returns the scope. + + + + Used to define the name of a binding. + + The service being bound. + + + + Indicates that the binding should be registered with the specified name. Names are not + necessarily unique; multiple bindings for a given service may be registered with the same name. + + The name to give the binding. + + + + Used to add additional information to a binding. + + The service being bound. + + + + Indicates that the specified constructor argument should be overridden with the specified value. + + The name of the argument to override. + The value for the argument. + + + + Indicates that the specified constructor argument should be overridden with the specified value. + + The name of the argument to override. + The callback to invoke to get the value for the argument. + + + + Indicates that the specified property should be injected with the specified value. + + The name of the property to override. + The value for the property. + + + + Indicates that the specified property should be injected with the specified value. + + The name of the property to override. + The callback to invoke to get the value for the property. + + + + Adds a custom parameter to the binding. + + The parameter. + + + + Sets the value of a piece of metadata on the binding. + + The metadata key. + The metadata value. + + + + Used to add additional actions to be performed during activation or deactivation of instances via a binding. + + The service being bound. + + + + Indicates that the specified callback should be invoked when instances are activated. + + The action callback. + + + + Indicates that the specified callback should be invoked when instances are deactivated. + + The action callback. + + + + Used to set the scope, name, or add additional information or actions to a binding. + + The service being bound. + + + + Used to set the name, or add additional information or actions to a binding. + + The service being bound. + + + + Used to add additional information or actions to a binding. + + The service being bound. + + + + Initializes a new instance of the BindingBuilder<T> class. + + The binding to build. + The kernel. + + + + Indicates that the service should be self-bound. + + + + + Indicates that the service should be bound to the specified implementation type. + + The implementation type. + + + + Indicates that the service should be bound to the specified implementation type. + + The implementation type. + + + + Indicates that the service should be bound to an instance of the specified provider type. + The instance will be activated via the kernel when an instance of the service is activated. + + The type of provider to activate. + + + + Indicates that the service should be bound to an instance of the specified provider type. + The instance will be activated via the kernel when an instance of the service is activated. + + The type of provider to activate. + + + + Indicates that the service should be bound to the specified provider. + + The provider. + + + + Indicates that the service should be bound to the specified callback method. + + The method. + + + + Indicates that the service should be bound to the specified constant value. + + The constant value. + + + + Indicates that the binding should be used only for requests that support the specified condition. + + The condition. + + + + Indicates that the binding should be used only for injections on the specified type. + + The type. + + + + Indicates that the binding should be used only for injections on the specified type. + + The type. + + + + Indicates that the binding should be used only when the class being injected has + an attribute of the specified type. + + The type of attribute. + + + + Indicates that the binding should be used only when the member being injected has + an attribute of the specified type. + + The type of attribute. + + + + Indicates that the binding should be used only when the target being injected has + an attribute of the specified type. + + The type of attribute. + + + + Indicates that the binding should be used only when the class being injected has + an attribute of the specified type. + + The type of attribute. + + + + Indicates that the binding should be used only when the member being injected has + an attribute of the specified type. + + The type of attribute. + + + + Indicates that the binding should be used only when the target being injected has + an attribute of the specified type. + + The type of attribute. + + + + Indicates that the binding should be used only when the service is being requested + by a service bound with the specified name. + + The name to expect. + + + + Indicates that the binding should be registered with the specified name. Names are not + necessarily unique; multiple bindings for a given service may be registered with the same name. + + The name to give the binding. + + + + Indicates that only a single instance of the binding should be created, and then + should be re-used for all subsequent requests. + + + + + Indicates that instances activated via the binding should not be re-used, nor have + their lifecycle managed by Ninject. + + + + + Indicates that instances activated via the binding should be re-used within the same thread. + + + + + Indicates that instances activated via the binding should be re-used within the same + HTTP request. + + + + + Indicates that instances activated via the binding should be re-used as long as the object + returned by the provided callback remains alive (that is, has not been garbage collected). + + The callback that returns the scope. + + + + Indicates that the specified constructor argument should be overridden with the specified value. + + The name of the argument to override. + The value for the argument. + + + + Indicates that the specified constructor argument should be overridden with the specified value. + + The name of the argument to override. + The callback to invoke to get the value for the argument. + + + + Indicates that the specified property should be injected with the specified value. + + The name of the property to override. + The value for the property. + + + + Indicates that the specified property should be injected with the specified value. + + The name of the property to override. + The callback to invoke to get the value for the property. + + + + Adds a custom parameter to the binding. + + The parameter. + + + + Sets the value of a piece of metadata on the binding. + + The metadata key. + The metadata value. + + + + Indicates that the specified callback should be invoked when instances are activated. + + The action callback. + + + + Indicates that the specified callback should be invoked when instances are deactivated. + + The action callback. + + + + Provides a root for the fluent syntax associated with an . + + + + + Gets the binding being built. + + + + + Gets the kernel. + + + + + Additional information available about a binding, which can be used in constraints + to select bindings to use in activation. + + + + + Additional information available about a binding, which can be used in constraints + to select bindings to use in activation. + + + + + Determines whether a piece of metadata with the specified key has been defined. + + The metadata key. + True if such a piece of metadata exists; otherwise, false. + + + + Gets the value of metadata defined with the specified key, cast to the specified type. + + The type of value to expect. + The metadata key. + The metadata value. + + + + Gets the value of metadata defined with the specified key. + + The metadata key. + The value to return if the binding has no metadata set with the specified key. + The metadata value, or the default value if none was set. + + + + Sets the value of a piece of metadata. + + The metadata key. + The metadata value. + + + + Gets or sets the binding's name. + + + + + Determines whether a piece of metadata with the specified key has been defined. + + The metadata key. + True if such a piece of metadata exists; otherwise, false. + + + + Gets the value of metadata defined with the specified key, cast to the specified type. + + The type of value to expect. + The metadata key. + The metadata value. + + + + Gets the value of metadata defined with the specified key. + + The metadata key. + The value to return if the binding has no metadata set with the specified key. + The metadata value, or the default value if none was set. + + + + Sets the value of a piece of metadata. + + The metadata key. + The metadata value. + + + + Gets or sets the binding's name. + + + + + Describes the target of a binding. + + + + + Indicates that the binding is from a type to itself. + + + + + Indicates that the binding is from one type to another. + + + + + Indicates that the binding is from a type to a provider. + + + + + Indicates that the binding is from a type to a callback method. + + + + + Indicates that the binding is from a type to a constant value. + + + + + Describes the injection of a constructor. + + + + + Describes the injection of a method or constructor. + + + + + A piece of information used in an . (Just a marker.) + + + + + Initializes a new instance of the MethodInjectionDirectiveBase<TMethod, TInjector> class. + + The method this directive represents. + The injector that will be triggered. + + + + Creates targets for the parameters of the method. + + The method. + The targets for the method's parameters. + + + + Gets or sets the injector that will be triggered. + + + + + Gets or sets the targets for the directive. + + + + + Initializes a new instance of the class. + + The constructor described by the directive. + The injector that will be triggered. + + + + The base .ctor definition. + + + + + Describes the injection of a method. + + + + + Initializes a new instance of the class. + + The method described by the directive. + The injector that will be triggered. + + + + Describes the injection of a property. + + + + + Initializes a new instance of the class. + + The member the directive describes. + The injector that will be triggered. + + + + Creates a target for the property. + + The property. + The target for the property. + + + + Gets or sets the injector that will be triggered. + + + + + Gets or sets the injection target for the directive. + + + + + Adds a directive to plans indicating which constructor should be injected during activation. + + + + + Contributes to the generation of a . + + + + + Contributes to the specified plan. + + The plan that is being generated. + + + + Initializes a new instance of the class. + + The selector component. + The injector factory component. + + + + Adds a to the plan for the constructor + that should be injected. + + The plan that is being generated. + + + + Gets the selector component. + + + + + Gets the injector factory component. + + + + + Adds directives to plans indicating which methods should be injected during activation. + + + + + Initializes a new instance of the class. + + The selector component. + The injector factory component. + + + + Adds a to the plan for each method + that should be injected. + + The plan that is being generated. + + + + Gets the selector component. + + + + + Gets the injector factory component. + + + + + Adds directives to plans indicating which properties should be injected during activation. + + + + + Initializes a new instance of the class. + + The selector component. + The injector factory component. + + + + Adds a to the plan for each property + that should be injected. + + The plan that is being generated. + + + + Gets the selector component. + + + + + Gets the injector factory component. + + + + + Represents a site on a type where a value will be injected. + + + + + Resolves a value for the target within the specified parent context. + + The parent context. + The resolved value. + + + + Gets the type of the target. + + + + + Gets the name of the target. + + + + + Gets the member that contains the target. + + + + + Gets the constraint defined on the target. + + + + + Gets a value indicating whether the target represents an optional dependency. + + + + + Represents an injection target for a . + + + + + Represents a site on a type where a value can be injected. + + The type of site this represents. + + + + Initializes a new instance of the Target<T> class. + + The member that contains the target. + The site represented by the target. + + + + Returns an array of custom attributes of a specified type defined on the target. + + The type of attribute to search for. + Whether to look up the hierarchy chain for inherited custom attributes. + An array of custom attributes of the specified type. + + + + Returns an array of custom attributes defined on the target. + + Whether to look up the hierarchy chain for inherited custom attributes. + An array of custom attributes. + + + + Returns a value indicating whether an attribute of the specified type is defined on the target. + + The type of attribute to search for. + Whether to look up the hierarchy chain for inherited custom attributes. + True if such an attribute is defined; otherwise false. + + + + Resolves a value for the target within the specified parent context. + + The parent context. + The resolved value. + + + + Gets the value(s) that should be injected into the target. + + The service that the target is requesting. + The parent context in which the target is being injected. + A series of values that are available for injection. + + + + Reads whether the target represents an optional dependency. + + if it is optional; otherwise . + + + + Reads the resolution constraint from target. + + The resolution constraint. + + + + Gets the member that contains the target. + + + + + Gets or sets the site (property, parameter, etc.) represented by the target. + + + + + Gets the name of the target. + + + + + Gets the type of the target. + + + + + Gets the constraint defined on the target. + + + + + Gets a value indicating whether the target represents an optional dependency. + + + + + Initializes a new instance of the class. + + The method that defines the parameter. + The parameter that this target represents. + + + + Gets the name of the target. + + + + + Gets the type of the target. + + + + + Represents an injection target for a . + + + + + Initializes a new instance of the class. + + The property that this target represents. + + + + Gets the name of the target. + + + + + Gets the type of the target. + + + + + Describes the means by which a type should be activated. + + + + + Adds the specified directive to the plan. + + The directive. + + + + Determines whether the plan contains one or more directives of the specified type. + + The type of directive. + True if the plan has one or more directives of the type; otherwise, false. + + + + Gets the first directive of the specified type from the plan. + + The type of directive. + The first directive, or if no matching directives exist. + + + + Gets all directives of the specified type that exist in the plan. + + The type of directive. + A series of directives of the specified type. + + + + Gets the type that the plan describes. + + + + + Generates plans for how to activate instances. + + + + + Gets or creates an activation plan for the specified type. + + The type for which a plan should be created. + The type's activation plan. + + + + Gets the strategies that contribute to the planning process. + + + + + Describes the means by which a type should be activated. + + + + + Initializes a new instance of the class. + + The type the plan describes. + + + + Adds the specified directive to the plan. + + The directive. + + + + Determines whether the plan contains one or more directives of the specified type. + + The type of directive. + True if the plan has one or more directives of the type; otherwise, false. + + + + Gets the first directive of the specified type from the plan. + + The type of directive. + The first directive, or if no matching directives exist. + + + + Gets all directives of the specified type that exist in the plan. + + The type of directive. + A series of directives of the specified type. + + + + Gets the type that the plan describes. + + + + + Gets the directives defined in the plan. + + + + + Generates plans for how to activate instances. + + + + + Initializes a new instance of the class. + + The strategies to execute during planning. + + + + Gets or creates an activation plan for the specified type. + + The type for which a plan should be created. + The type's activation plan. + + + + Creates an empty plan for the specified type. + + The type for which a plan should be created. + The created plan. + + + + Gets the strategies that contribute to the planning process. + + + + + Generates scores for constructors, to determine which is the best one to call during activation. + + + + + Gets the score for the specified constructor. + + The injection context. + The constructor. + The constructor's score. + + + + Determines whether members should be injected during activation. + + + + + Returns a value indicating whether the specified member should be injected. + + The member in question. + True if the member should be injected; otherwise false. + + + + Scores constructors by either looking for the existence of an injection marker + attribute, or by counting the number of parameters. + + + + + Gets the score for the specified constructor. + + The injection context. + The constructor. + The constructor's score. + + + + Determines whether members should be injected during activation by checking + if they are decorated with an injection marker attribute. + + + + + Returns a value indicating whether the specified member should be injected. + + The member in question. + True if the member should be injected; otherwise false. + + + + Selects members for injection. + + + + + Selects the constructor to call on the specified type, by using the constructor scorer. + + The type. + The selected constructor, or if none were available. + + + + Selects properties that should be injected. + + The type. + A series of the selected properties. + + + + Selects methods that should be injected. + + The type. + A series of the selected methods. + + + + Gets or sets the constructor scorer. + + + + + Gets the heuristics used to determine which members should be injected. + + + + + Selects members for injection. + + + + + Initializes a new instance of the class. + + The constructor scorer. + The injection heuristics. + + + + Selects the constructor to call on the specified type, by using the constructor scorer. + + The type. + The selected constructor, or if none were available. + + + + Selects properties that should be injected. + + The type. + A series of the selected properties. + + + + Selects methods that should be injected. + + The type. + A series of the selected methods. + + + + Gets or sets the constructor scorer. + + + + + Gets the property injection heuristics. + + + + + Extension methods that enhance module loading. + + + + + Creates a new instance of the module and loads it into the kernel. + + The type of the module. + The kernel. + + + + Loads the module(s) into the kernel. + + The kernel. + The modules to load. + + + + Loads modules from the files that match the specified pattern(s). + + The kernel. + The file patterns (i.e. "*.dll", "modules/*.rb") to match. + + + + Loads modules defined in the specified assemblies. + + The kernel. + The assemblies to search. + + + + Extensions that enhance resolution of services. + + + + + Gets an instance of the specified service. + + The service to resolve. + The resolution root. + The parameters to pass to the request. + An instance of the service. + + + + Gets an instance of the specified service by using the first binding with the specified name. + + The service to resolve. + The resolution root. + The name of the binding. + The parameters to pass to the request. + An instance of the service. + + + + Gets an instance of the specified service by using the first binding that matches the specified constraint. + + The service to resolve. + The resolution root. + The constraint to apply to the binding. + The parameters to pass to the request. + An instance of the service. + + + + Tries to get an instance of the specified service. + + The service to resolve. + The resolution root. + The parameters to pass to the request. + An instance of the service, or if no implementation was available. + + + + Tries to get an instance of the specified service by using the first binding with the specified name. + + The service to resolve. + The resolution root. + The name of the binding. + The parameters to pass to the request. + An instance of the service, or if no implementation was available. + + + + Tries to get an instance of the specified service by using the first binding that matches the specified constraint. + + The service to resolve. + The resolution root. + The constraint to apply to the binding. + The parameters to pass to the request. + An instance of the service, or if no implementation was available. + + + + Gets all available instances of the specified service. + + The service to resolve. + The resolution root. + The parameters to pass to the request. + A series of instances of the service. + + + + Gets all instances of the specified service using bindings registered with the specified name. + + The service to resolve. + The resolution root. + The name of the binding. + The parameters to pass to the request. + A series of instances of the service. + + + + Gets all instances of the specified service by using the bindings that match the specified constraint. + + The service to resolve. + The resolution root. + The constraint to apply to the bindings. + The parameters to pass to the request. + A series of instances of the service. + + + + Gets an instance of the specified service. + + The resolution root. + The service to resolve. + The parameters to pass to the request. + An instance of the service. + + + + Gets an instance of the specified service by using the first binding with the specified name. + + The resolution root. + The service to resolve. + The name of the binding. + The parameters to pass to the request. + An instance of the service. + + + + Gets an instance of the specified service by using the first binding that matches the specified constraint. + + The resolution root. + The service to resolve. + The constraint to apply to the binding. + The parameters to pass to the request. + An instance of the service. + + + + Tries to get an instance of the specified service. + + The resolution root. + The service to resolve. + The parameters to pass to the request. + An instance of the service, or if no implementation was available. + + + + Tries to get an instance of the specified service by using the first binding with the specified name. + + The resolution root. + The service to resolve. + The name of the binding. + The parameters to pass to the request. + An instance of the service, or if no implementation was available. + + + + Tries to get an instance of the specified service by using the first binding that matches the specified constraint. + + The resolution root. + The service to resolve. + The constraint to apply to the binding. + The parameters to pass to the request. + An instance of the service, or if no implementation was available. + + + + Gets all available instances of the specified service. + + The resolution root. + The service to resolve. + The parameters to pass to the request. + A series of instances of the service. + + + + Gets all instances of the specified service using bindings registered with the specified name. + + The resolution root. + The service to resolve. + The name of the binding. + The parameters to pass to the request. + A series of instances of the service. + + + + Gets all instances of the specified service by using the bindings that match the specified constraint. + + The resolution root. + The service to resolve. + The constraint to apply to the bindings. + The parameters to pass to the request. + A series of instances of the service. + + + + Indicates that an error occured during activation of an instance. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The exception message. + + + + Initializes a new instance of the class. + + The exception message. + The inner exception. + + + + Initializes a new instance of the class. + + The serialized object data. + The serialization context. + + + + A service that requires initialization after it is activated. + + + + + Initializes the instance. Called during activation. + + + + + A super-factory that can create objects of all kinds, following hints provided by s. + + + + + Gets the modules that have been loaded into the kernel. + + A series of loaded modules. + + + + Determines whether a module with the specified name has been loaded in the kernel. + + The name of the module. + True if the specified module has been loaded; otherwise, false. + + + + Loads the module(s) into the kernel. + + The modules to load. + + + + Loads modules from the files that match the specified pattern(s). + + The file patterns (i.e. "*.dll", "modules/*.rb") to match. + + + + Loads modules defined in the specified assemblies. + + The assemblies to search. + + + + Unloads the plugin with the specified name. + + The plugin's name. + + + + Injects the specified existing instance, without managing its lifecycle. + + The instance to inject. + The parameters to pass to the request. + + + + Deactivates and releases the specified instance if it is currently managed by Ninject. + + The instance to release. + if the instance was found and released; otherwise . + + + + Gets the bindings registered for the specified service. + + The service in question. + A series of bindings that are registered for the service. + + + + Begins a new activation block, which can be used to deterministically dispose resolved instances. + + The new activation block. + + + + Gets the kernel settings. + + + + + Gets the component container, which holds components that contribute to Ninject. + + + + + Contains configuration options for Ninject. + + + + + Gets the value for the specified key. + + The type of value to return. + The setting's key. + The value to return if no setting is available. + The value, or the default value if none was found. + + + + Sets the value for the specified key. + + The setting's key. + The setting's value. + + + + Gets the attribute that indicates that a member should be injected. + + + + + Gets the interval at which the cache should be pruned. + + + + + Gets a value indicating whether the kernel should automatically load extensions at startup. + + + + + Gets the path that should be searched for extensions. + + + + + Gets a value indicating whether Ninject should use reflection-based injection instead of + the (usually faster) lightweight code generation system. + + + + + Gets a value indicating whether Ninject should inject non public members. + + + + + A service that is started when activated, and stopped when deactivated. + + + + + Starts this instance. Called during activation. + + + + + Stops this instance. Called during deactivation. + + + + + The base implementation of an . + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The modules to load into the kernel. + + + + Initializes a new instance of the class. + + The configuration to use. + The modules to load into the kernel. + + + + Initializes a new instance of the class. + + The component container to use. + The configuration to use. + The modules to load into the kernel. + + + + Releases resources held by the object. + + + + + Unregisters all bindings for the specified service. + + The service to unbind. + + + + Registers the specified binding. + + The binding to add. + + + + Unregisters the specified binding. + + The binding to remove. + + + + Determines whether a module with the specified name has been loaded in the kernel. + + The name of the module. + True if the specified module has been loaded; otherwise, false. + + + + Gets the modules that have been loaded into the kernel. + + A series of loaded modules. + + + + Loads the module(s) into the kernel. + + The modules to load. + + + + Loads modules from the files that match the specified pattern(s). + + The file patterns (i.e. "*.dll", "modules/*.rb") to match. + + + + Loads modules defined in the specified assemblies. + + The assemblies to search. + + + + Unloads the plugin with the specified name. + + The plugin's name. + + + + Injects the specified existing instance, without managing its lifecycle. + + The instance to inject. + The parameters to pass to the request. + + + + Deactivates and releases the specified instance if it is currently managed by Ninject. + + The instance to release. + if the instance was found and released; otherwise . + + + + Determines whether the specified request can be resolved. + + The request. + True if the request can be resolved; otherwise, false. + + + + Resolves instances for the specified request. The instances are not actually resolved + until a consumer iterates over the enumerator. + + The request to resolve. + An enumerator of instances that match the request. + + + + Creates a request for the specified service. + + The service that is being requested. + The constraint to apply to the bindings to determine if they match the request. + The parameters to pass to the resolution. + True if the request is optional; otherwise, false. + True if the request should return a unique result; otherwise, false. + The created request. + + + + Gets the bindings registered for the specified service. + + The service in question. + A series of bindings that are registered for the service. + + + + Begins a new activation block, which can be used to deterministically dispose resolved instances. + + The new activation block. + + + + Creates a new builder for the specified binding. + + The type restriction to apply to the binding builder. + The binding that will be built. + The created builder. + + + + Adds components to the kernel during startup. + + + + + Attempts to handle a missing binding for a service. + + The service. + True if the missing binding can be handled; otherwise false. + + + + Returns a value indicating whether the specified service is self-bindable. + + The service. + if the type is self-bindable; otherwise . + + + + Creates a context for the specified request and binding. + + The request. + The binding. + The created context. + + + + Gets the kernel settings. + + + + + Gets the component container, which holds components that contribute to Ninject. + + + + + Contains configuration options for Ninject. + + + + + Gets the value for the specified key. + + The type of value to return. + The setting's key. + The value to return if no setting is available. + The value, or the default value if none was found. + + + + Sets the value for the specified key. + + The setting's key. + The setting's value. + + + + Gets or sets the attribute that indicates that a member should be injected. + + + + + Gets or sets the interval at which the GC should be polled. + + + + + Gets or sets a value indicating whether the kernel should automatically load extensions at startup. + + + + + Gets or sets the path that should be searched for extensions. + + + + + Gets a value indicating whether Ninject should use reflection-based injection instead of + the (usually faster) lightweight code generation system. + + + + + Gets a value indicating whether Ninject should inject non public members. + + + + + Provides callbacks to more aggressively collect objects scoped to HTTP requests. + + + + + Initializes the module. + + The whose instances will be managed. + + + + Start managing instances for the specified kernel. + + The kernel. + + + + Stops managing instances for the specified kernel. + + The kernel. + + + + Deactivates instances owned by the current . + + + + + The standard implementation of a kernel. + + + + + Initializes a new instance of the class. + + The modules to load into the kernel. + + + + Initializes a new instance of the class. + + The configuration to use. + The modules to load into the kernel. + + + + Adds components to the kernel during startup. + + + + diff --git a/NzbDrone.Core/Libraries/ObjectListView.dll b/NzbDrone.Core/Libraries/ObjectListView.dll new file mode 100644 index 0000000000000000000000000000000000000000..7efdabbb853969e59d56d191991092f7dd833236 GIT binary patch literal 291840 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 z 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�|Pq9Y))+6-K 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 A*Z=?k literal 0 HcmV?d00001 diff --git a/NzbDrone.Core/Libraries/RSS.NET.XML b/NzbDrone.Core/Libraries/RSS.NET.XML new file mode 100644 index 000000000..e60b7797a --- /dev/null +++ b/NzbDrone.Core/Libraries/RSS.NET.XML @@ -0,0 +1,1388 @@ + + + + RSS.NET + + + + The contents of a RssFeed + + + Initialize a new instance of the RssFeed class. + + + Initialize a new instance of the RssFeed class with a specified encoding. + + + Returns a string representation of the current Object. + The Url of the feed + + + Reads the specified RSS feed + The url or filename of the RSS feed + The contents of the feed + + + Reads the specified RSS feed + The specified way to connect to the web server + The contents of the feed + + + Reads the specified RSS feed + The cached version of the feed + The current contents of the feed + Will not download the feed if it has not been modified + + + Reads the specified RSS feed + The specified way to connect to the web server + The cached version of the feed + The current contents of the feed + Will not download the feed if it has not been modified + + + Writes the RSS feed to the specified stream. + specified Stream + The Stream cannot be written to. + Feed must contain at least one channel. + Channel must contain at least one item. + + + Writes the RSS feed to the specified file. + The encoding is ISO-8859-1. + The filename is empty, contains only white space, or contains one or more invalid characters. + Access is denied. + The filename is a (null c#, Nothing vb) reference. + The directory to write to is not found. + The filename includes an incorrect or invalid syntax for file name, directory name, or volume label syntax. + The caller does not have the required permission. + specified file (including path) If the file exists, it will be truncated with the new content. + Feed must contain at least one channel. + Channel must contain at least one item. + + + The channels that are contained in the feed. + + + The modules that the feed adhears to. + + + A collection of all exceptions encountered during the reading of the feed. + + + The Version of the feed. + + + The server generated hash of the feed. + + + The server generated last modfified date and time of the feed. + + + Indicates this feed has not been changed on the server, and the local copy was returned. + + + Location of the feed + + + Encoding of the feed + + + Provide information regarding the location of the subject matter of the channel in a taxonomy + + + Base class for all RSS elements + + + Initialize a new instance of the RssElement class + + + Initialize a new instance of the RssCategory class + + + Actual categorization given for this item, within the chosen taxonomy + + + URL of external taxonomy + + + A strongly typed collection of objects + + + Adds a specified channel to this collection. + The channel to add. + The zero-based index of the added channel. + + + Determines whether the RssChannelCollection contains a specific element. + The RssChannel to locate in the RssChannelCollection. + true if the RssChannelCollection contains the specified value; otherwise, false. + + + Copies the entire RssChannelCollection to a compatible one-dimensional , starting at the specified index of the target array. + The one-dimensional RssChannel Array that is the destination of the elements copied from RssChannelCollection. The Array must have zero-based indexing. + The zero-based index in array at which copying begins. + array is a null reference (Nothing in Visual Basic). + index is less than zero. + array is multidimensional. -or- index is equal to or greater than the length of array.-or-The number of elements in the source RssChannelCollection is greater than the available space from index to the end of the destination array. + + + Searches for the specified RssChannel and returns the zero-based index of the first occurrence within the entire RssChannelCollection. + The RssChannel to locate in the RssChannelCollection. + The zero-based index of the first occurrence of RssChannel within the entire RssChannelCollection, if found; otherwise, -1. + + + Inserts a channel into this collection at a specified index. + The zero-based index of the collection at which to insert the channel. + The channel to insert into this collection. + + + Removes a specified channel from this collection. + The channel to remove. + + + Gets or sets the channel at a specified index.In C#, this property is the indexer for the class. + The index of the collection to access. + A channel at each valid index. + This method is an indexer that can be used to access the collection. + index is not a valid index. + + + A reference to an attachment to the item + + + Initialize a new instance of the RssEnclosure class. + + + Where the enclosure is located + + + The size of the enclosure, in bytes + -1 represents a null. + + + A standard Multipurpose Internet Mail Extensions (MIME) type + + + Grouping of related content items on a site + + + Initialize a new instance of the RssChannel class. + + + Returns a string representation of the current Object. + The channel's title, description, or "RssChannel" if the title and description are blank. + + + The name of the channel + Maximum length is 100 characters (For RSS 0.91) + + + URL of the website named in the title + Maximum length is 500 characters (For RSS 0.91) + + + Description of the channel + Maximum length is 500 characters (For RSS 0.91) + + + Language the channel is written in + + + A link and description for a graphic icon that represent a channel + + + Copyright notice for content in the channel + Maximum length is 100 (For RSS 0.91) + + + The email address of the managing editor of the channel, the person to contact for editorial inquiries + + Maximum length is 100 (For RSS 0.91) + The suggested format for email addresses in RSS elements is + bull@mancuso.com (Bull Mancuso) + + + + The email address of the webmaster for the channel + + Person to contact if there are technical problems + Maximum length is 100 (For RSS 0.91) + The suggested format for email addresses in RSS elements is + bull@mancuso.com (Bull Mancuso) + + + + The PICS rating for the channel + Maximum length is 500 (For RSS 0.91) + + + The publication date for the content in the channel, expressed as the coordinated universal time (UTC) + + + The date-time the last time the content of the channel changed, expressed as the coordinated universal time (UTC) + + + One or more categories the channel belongs to. + + + A string indicating the program used to generate the channel + + + A URL, points to the documentation for the format used in the RSS file + Maximum length is 500 (For RSS 0.91). + + + Provides information about an HTTP GET feature, typically for a search or subscription + + + Readers should not read the channel during days listed. (UTC) + Days are listed in the array in the following order: + Monday + Tuesday + Wednesday + Thursday + Friday + Saturday + Sunday + Monday + + + + Readers should not read the channel during hours listed (UTC) + Represents a time in UTC - 1. + + + Allow processes to register with a cloud to be notified of updates to the channel + + + The number of minutes that a channel can be cached. + + + All items within the channel + + + People in a photo + + + A strongly typed collection of objects + + + Adds a specified item to this collection. + The item to add. + The zero-based index of the added item. + + + Determines whether the RssModuleItemCollection contains a specific element. + The RssModuleItem to locate in the RssModuleItemCollection. + true if the RssModuleItemCollection contains the specified value; otherwise, false. + + + Copies the entire RssModuleItemCollection to a compatible one-dimensional , starting at the specified index of the target array. + The one-dimensional RssModuleItem Array that is the destination of the elements copied from RssModuleItemCollection. The Array must have zero-based indexing. + The zero-based index in array at which copying begins. + array is a null reference (Nothing in Visual Basic). + index is less than zero. + array is multidimensional. -or- index is equal to or greater than the length of array.-or-The number of elements in the source RssModuleItemCollection is greater than the available space from index to the end of the destination array. + + + Searches for the specified RssModuleItem and returns the zero-based index of the first occurrence within the entire RssModuleItemCollection. + The RssModuleItem to locate in the RssModuleItemCollection. + The zero-based index of the first occurrence of RssModuleItem within the entire RssModuleItemCollection, if found; otherwise, -1. + + + Inserts an item into this collection at a specified index. + The zero-based index of the collection at which to insert the item. + The item to insert into this collection. + + + Removes a specified item from this collection. + The item to remove. + + + Bind a particular item to this module + Hash code of the item + + + Check if a particular item is bound to this module + Hash code of the item + true if this item is bound to this module, otherwise false + + + Gets or sets the item at a specified index.In C#, this property is the indexer for the class. + The index of the collection to access. + An item at each valid index. + This method is an indexer that can be used to access the collection. + index is not a valid index. + + + Initialize a new instance of the RssPhotoAlbumItemPhotoPeople class + + + Initialize a new instance of the RssPhotoAlbumItemPhotoPeople class + Name of person + + + Add a person to the photo + Name of person + The zero-based index of the added item + + + A collection of photos in a category + + + A strongly typed collection of objects + + + Adds a specified item to this collection. + The item to add. + The zero-based index of the added item. + + + Determines whether the RssModuleItemCollectionCollection contains a specific element. + The RssModuleItemCollection to locate in the RssModuleItemCollectionCollection. + true if the RssModuleItemCollectionCollection contains the specified value; otherwise, false. + + + Copies the entire RssModuleItemCollectionCollection to a compatible one-dimensional , starting at the specified index of the target array. + The one-dimensional RssModuleItemCollection Array that is the destination of the elements copied from RssModuleItemCollectionCollection. The Array must have zero-based indexing. + The zero-based index in array at which copying begins. + array is a null reference (Nothing in Visual Basic). + index is less than zero. + array is multidimensional. -or- index is equal to or greater than the length of array.-or-The number of elements in the source RssModuleItemCollectionCollection is greater than the available space from index to the end of the destination array. + + + Searches for the specified RssModuleItemCollection and returns the zero-based index of the first occurrence within the entire RssModuleItemCollectionCollection. + The RssModuleItemCollection to locate in the RssModuleItemCollectionCollection. + The zero-based index of the first occurrence of RssModuleItemCollection within the entire RssModuleItemCollectionCollection, if found; otherwise, -1. + + + Inserts an item into this collection at a specified index. + The zero-based index of the collection at which to insert the item. + The item to insert into this collection. + + + Removes a specified item from this collection. + The item to remove. + + + Gets or sets the item at a specified index.In C#, this property is the indexer for the class. + The index of the collection to access. + An item at each valid index. + This method is an indexer that can be used to access the collection. + index is not a valid index. + + + Initialize a new instance of the RssPhotoAlbumItemPhoto class + + + Adds a sepecified photo to this collection. + The photo to add. + The zero-based index of the added item. + + + A photo in the category + + + Initialize a new instance of the RssPhotoAlbumItemPhoto class + Date of the Photo + Description of the photo. + Direct link of the photo. + + + Initialize a new instance of the RssPhotoAlbumItemPhoto class + Date of the Photo + Description of the photo. + People to add to the photo. + Direct link of the photo. + + + Adds a specified item to this collection. + Date of the Photo + Description of the photo. + People to add to the photo. + Direct link of the photo. + The zero-based index of the added item. + + + Adds a specified item to this collection. + Date of the Photo + Description of the photo. + Direct link of the photo. + The zero-based index of the added item. + + + Initialize a new instance of the RssPhotoAlbumItemPhoto class + Date of the Photo + Description of the photo. + Direct link of the photo. + + + Initialize a new instance of the RssPhotoAlbumItemPhoto class + Date of the Photo + Description of the photo. + People to add to the photo. + Direct link of the photo. + + + Adds a specified item to this collection. + Date of the Photo + Description of the photo. + People to add to the photo. + Direct link of the photo. + The zero-based index of the added item. + + + Adds a specified item to this collection. + Date of the Photo + Description of the photo. + Direct link of the photo. + The zero-based index of the added item. + + + A collection of categories in a photo album + + + Initialize a new instance of the RssPhotoAlbumItemPhoto class + + + Adds a sepecified category to this collection. + The category to add. + The zero-based index of the added item. + + + A Photo Album category + + + Initialize a new instance of the RssPhotoAlbumItem class + Name of the category. + Description of the category. + From date of the category. + To date of the category. + Photos of the category. + + + Adds a specified category to this collection. + Name of the category. + Description of the category. + From date of the category. + To date of the category. + Photos of the category. + The zero-based index of the added item. + + + Initialize a new instance of the RssPhotoAlbumItem class + Name of the category. + Description of the category. + From date of the category. + To date of the category. + Photos of the category. + + + Adds a specified category to this collection. + Name of the category. + Description of the category. + From date of the category. + To date of the category. + Photos of the category. + The zero-based index of the added item. + + + Initialize a new instance of the RssPhotoAlbumItem class + Name of the category. + Description of the category. + From date of the category. + To date of the category. + Photos of the category. + + + Adds a specified category to this collection. + Name of the category. + Description of the category. + From date of the category. + To date of the category. + Photos of the category. + The zero-based index of the added item. + + + Initialize a new instance of the RssPhotoAlbumItem class + Name of the category. + Description of the category. + From date of the category. + To date of the category. + Photos of the category. + + + Adds a specified category to this collection. + Name of the category. + Description of the category. + From date of the category. + To date of the category. + Photos of the category. + The zero-based index of the added item. + + + RSS syndication for Robert A. Wlodarczyk's Photo Album application (to be sold by Inno Thinx LLC) + + + Base class for all RSS modules + + + Initialize a new instance of the RssModule class + + + Bind a particular channel to this module + Hash code of the channel + + + Check if a particular channel is bound to this module + Hash code of the channel + true if this channel is bound to this module, otherwise false + + + Collection of RSSModuleItem that are to be placed in the channel + + + Collection of RSSModuleItemCollection that are to be placed in the channel item + + + Prefix for the given module namespace + + + URL for the given module namespace + + + Initialize a new instance of the RssPhotoAlbum class + Link to the Photo Album + The category of the Photo Album to add + + + Initialize a new instance of the RssPhotoAlbum class + Link to the Photo Album + A collection of categories in the Photo Album to add + + + Link element for channel + + + Contains default values and methods for maintaining data consistency + + + Default value for a string in all RSS classes + empty string + If an element in the RSS class library has the value of RssDefault.String, consider the element as "not entered", "null", or empty. + + + Default value for an int in all RSS classes + -1 + If an element in the RSS class library has the value of RssDefault.Int, consider the element as "not entered", "null", or empty. + + + Default value for a DateTime in all RSS classes + DateTime.MinValue + If an element in the RSS class library has the value of RssDefault.DateTime, consider the element as "not entered", "null", or empty. + + + Default value for a Uri in all RSS classes + gopher://rss-net.sf.net + If an element in the RSS class library has the value of RssDefault.Uri, consider the element as "not entered", "null", or empty. + + + Verifies the string passed is not null + string to verify + RssDefault.String if input is null, otherwise input + Method is used in properties to prevent a null value + + + Verifies the int passed is greater than or equal to -1 + int to verify + RssDefault.Int if int is less than -1, else input + Method is used in properties to prevent values less than -1 + + + Verifies the Uri passed is not null + Uri to verify + RssDefault.Uri if input is null, otherwise input + Method is used in all properties to prevent a null value + + + Represents Null, False, and True + Source: Microsoft c# example + + + A DBBool containing 'Null'. + One of three possible DBBool values. + + + A DBBool containing 'False'. + One of three possible DBBool values. + + + A DBBool containing 'True'. + One of three possible DBBool values. + + + Private field that stores –1, 0, 1 for False, Null, True. + + + Private instance constructor. The value parameter must be –1, 0, or 1. + + + Implicit conversion from bool to DBBool. Maps true to DBBool.True and false to DBBool.False. + a DBBool + + + Explicit conversion from DBBool to bool. + The given DBBool is Null + a DBBool + true or false + + + Equality operator. + a DBBool + a DBBool + Returns Null if either operand is Null, otherwise returns True or False. + + + Inequality operator. + a DBBool + a DBBool + Returns Null if either operand is Null, otherwise returns True or False. + + + Logical negation operator. + a DBBool + Returns True if the operand is False, Null if the operand is Null, or False if the operand is True. + + + Logical AND operator. + a DBBool + a DBBool + Returns False if either operand is False, otherwise Null if either operand is Null, otherwise True. + + + Logical OR operator. + a DBBool + a DBBool + Returns True if either operand is True, otherwise Null if either operand is Null, otherwise False. + + + Definitely true operator. + a DBBool + Returns true if the operand is True, false otherwise. + + + Definitely false operator. + a DBBool + Returns true if the operand is False, false otherwise. + + + Determines whether two DBBool instances are equal. + The object to check. + True if the two DBBools are equal. + + + Serves as a hash function for a particular type, suitable for use in hashing algorithms and data structures like a hash table. + A hash code for the current DBBool. + + + Returns a string representation of the current Object. + Object has not been initialized. + A string containing DBBool.False, DBBool.Null, or DBBool.True + + + Properties to examine the value of a DBBool. + Return true if this DBBool has the given value, false otherwise. + + + Properties to examine the value of a DBBool. + Return true if this DBBool has the given value, false otherwise. + + + Properties to examine the value of a DBBool. + Return true if this DBBool has the given value, false otherwise. + + + A strongly typed collection of objects + + + Adds a specified item to this collection. + The item to add. + The zero-based index of the added item. + + + Determines whether the RssModuleCollection contains a specific element. + The RssModule to locate in the RssModuleCollection. + true if the RssModuleCollection contains the specified value; otherwise, false. + + + Copies the entire RssModuleCollection to a compatible one-dimensional , starting at the specified index of the target array. + The one-dimensional RssModule Array that is the destination of the elements copied from RssModuleCollection. The Array must have zero-based indexing. + The zero-based index in array at which copying begins. + array is a null reference (Nothing in Visual Basic). + index is less than zero. + array is multidimensional. -or- index is equal to or greater than the length of array.-or-The number of elements in the source RssModuleCollection is greater than the available space from index to the end of the destination array. + + + Searches for the specified RssModule and returns the zero-based index of the first occurrence within the entire RssModuleCollection. + The RssModule to locate in the RssModuleCollection. + The zero-based index of the first occurrence of RssModule within the entire RssModuleCollection, if found; otherwise, -1. + + + Inserts an item into this collection at a specified index. + The zero-based index of the collection at which to insert the item. + The item to insert into this collection. + + + Removes a specified item from this collection. + The item to remove. + + + Gets or sets the item at a specified index.In C#, this property is the indexer for the class. + The index of the collection to access. + An item at each valid index. + This method is an indexer that can be used to access the collection. + index is not a valid index. + + + A strongly typed collection of objects + + + Adds a specified item to this collection. + The item to add. + The zero-based index of the added item. + + + Determines whether the RssItemCollection contains a specific element. + The RssItem to locate in the RssItemCollection. + true if the RssItemCollection contains the specified value; otherwise, false. + + + Copies the entire RssItemCollection to a compatible one-dimensional , starting at the specified index of the target array. + The one-dimensional RssItem Array that is the destination of the elements copied from RssItemCollection. The Array must have zero-based indexing. + The zero-based index in array at which copying begins. + array is a null reference (Nothing in Visual Basic). + index is less than zero. + array is multidimensional. -or- index is equal to or greater than the length of array.-or-The number of elements in the source RssItemCollection is greater than the available space from index to the end of the destination array. + + + Searches for the specified RssItem and returns the zero-based index of the first occurrence within the entire RssItemCollection. + The RssItem to locate in the RssItemCollection. + The zero-based index of the first occurrence of RssItem within the entire RssItemCollection, if found; otherwise, -1. + + + Inserts an item into this collection at a specified index. + The zero-based index of the collection at which to insert the item. + The item to insert into this collection. + + + Removes a specified item from this collection. + The item to remove. + + + The latest pubDate in the items collection + The latest pubDate -or- RssDefault.DateTime if all item pubDates are not defined + + + The oldest pubDate in the items collection + The oldest pubDate -or- RssDefault.DateTime if all item pubDates are not defined + + + Calculates the oldest and latest pubdates + + + Gets or sets the item at a specified index.In C#, this property is the indexer for the class. + The index of the collection to access. + An item at each valid index. + This method is an indexer that can be used to access the collection. + index is not a valid index. + + + Allow processes to register with a cloud to be notified of updates to the channel. + + + Initialize a new instance of the RssCloud class. + + + Domain name or IP address of the cloud + + + TCP port that the cloud is running on + + + Location of its responder + + + Name of the procedure to call to request notification + + + Protocol used + + + A strongly typed collection of objects + + + Adds a specified feed to this collection. + The feed to add. + The zero-based index of the added feed. + + + Determines whether the RssFeedCollection contains a specific element. + The RssFeed to locate in the RssFeedCollection. + true if the RssFeedCollection contains the specified value; otherwise, false. + + + Copies the entire RssFeedCollection to a compatible one-dimensional , starting at the specified index of the target array. + The one-dimensional RssFeed Array that is the destination of the elements copied from RssFeedCollection. The Array must have zero-based indexing. + The zero-based index in array at which copying begins. + array is a null reference (Nothing in Visual Basic). + index is less than zero. + array is multidimensional. -or- index is equal to or greater than the length of array.-or-The number of elements in the source RssFeedCollection is greater than the available space from index to the end of the destination array. + + + Searches for the specified RssFeed and returns the zero-based index of the first occurrence within the entire RssFeedCollection. + The RssFeed to locate in the RssFeedCollection. + The zero-based index of the first occurrence of RssFeed within the entire RssFeedCollection, if found; otherwise, -1. + + + Inserts a feed into this collection at a specified index. + The zero-based index of the collection at which to insert the feed. + The feed to insert into this collection. + + + Removes a specified category from this collection. + The category to remove. + + + Gets or sets the feed at a specified index.In C#, this property is the indexer for the class. + The index of the collection to access. + A feed at each valid index. + This method is an indexer that can be used to access the collection. + index is not a valid index. + + + Gets or sets the feed with the given name.In C#, this property is the indexer for the class. + The url of the feed to access. + A feed at each valid url. If the feed does not exist, null. + This method is an indexer that can be used to access the collection. + + + A RSS module that adds elements at the channel level that are common to weblogs. + + + Initialize a new instance of the + The URL of an OPML file containing the blogroll for the site. + The URL of an OPML file containing the author's RSS subscriptions. + + The URL of a weblog that the author of the weblog is promoting per Mark Pilgrim's description. + "http://diveintomark.org/archives/2002/09/17.html#blink_and_youll_miss_it" + + + The URL of a changes.xml file. When the feed that contains this element updates, it pings a server that updates this file. The presence of this element says to aggregators that they only have to read the changes file to see if this feed has updated. If several feeds point to the same changes file, the aggregator has to do less polling, resulting in better use of server bandwidth, and the Internet as a whole; and resulting in faster scans. Everyone wins. For more technical information, see the howto on the XML-RPC site. + "http://www.xmlrpc.com/weblogsComForRss" + + + + All valid Rss Cloud protocols, including Null + + + Not defined + + + Protocol is not supported + + + xml-rpc + + + soap + + + http-post + + + All RSS versions + + + Not defined + + + Version is not directly supported + + + RDF Site Summary (RSS) 0.9 + + + Rich Site Summary (RSS) 0.91 + + + Rich Site Summary (RSS) 0.92 + + + RDF Site Summary (RSS) 1.0 + + + Really Simple Syndication (RSS) 2.0 + + + Writes an RSS XML file. + Represents a writer that provides a fast, non-cached, forward-only way of generating streams or files containing RSS XML data that conforms to the W3C Extensible Markup Language (XML) 1.0 and the Namespaces in XML recommendations. + + + Creates an instance of the RssWriter class using the specified TextWriter. + specified TextWriter + + + Creates an instance of the RssWriter class using the specified Stream and Encoding. + The encoding is not supported or the stream cannot be written to. + Stream to output to + The encoding to use. If encoding is (null c#, Nothing vb) it writes out the stream as UTF-8. + + + Creates an instance of the RssWriter class using the specified Stream. + The encoding is ISO-8859-1. + The Stream cannot be written to. + specified Stream + + + Creates an instance of the RssWriter class using the specified file and Encoding. + The encoding is not supported; the filename is empty, contains only white space, or contains one or more invalid characters. + Access is denied. + The filename is a (null c#, Nothing vb) reference. + The directory to write to is not found. + The filename includes an incorrect or invalid syntax for file name, directory name, or volume label syntax. + The caller does not have the required permission. + specified file (including path) If the file exists, it will be truncated with the new content. + specified Encoding + + + Creates an instance of the RssWriter class using the specified file. + The encoding is ISO-8859-1. + The filename is empty, contains only white space, or contains one or more invalid characters. + Access is denied. + The filename is a (null c#, Nothing vb) reference. + The directory to write to is not found. + The filename includes an incorrect or invalid syntax for file name, directory name, or volume label syntax. + The caller does not have the required permission. + specified file (including path) If the file exists, it will be truncated with the new content. + + + Writes the begining data to the RSS file + This routine is called from the WriteChannel and WriteItem subs + RDF Site Summary (RSS) 1.0 is not currently supported. + + + Closes instance of RssWriter. + Writes end elements, and releases connections + Occurs if the RssWriter is already closed or the caller is attempting to close before writing a channel. + + + Writes an RSS channel + RssWriter has been closed, and can not be written to. + Channel must be instanciated with data, before calling Write. + RSS channel to write + + + Writes an RSS item + Either the RssWriter has already been closed, or the caller is attempting to write an RSS item before an RSS channel. + Item must be instanciated with data, before calling Write. + RSS item to write + + + Writes an element with the specified local name and value + the localname of the element + the value of the element + boolean that determines if input cannot be null + + + Writes an element with the specified local name and value + the localname of the element + the value of the element + boolean that determines if input cannot be null + + + Writes an element with the specified local name and value + the localname of the element + the value of the element + boolean that determines if input cannot be null + + + Writes an element with the specified local name and value + the localname of the element + the value of the element + boolean that determines if input cannot be null + + + Writes an element with the specified local name and value + the localname of the element + the value of the element + boolean that determines if input cannot be null + + + Writes an attribute with the specified local name and value + the localname of the element + the value of the element + boolean that determines if input cannot be null + + + Writes an attribute with the specified local name and value + the localname of the element + the value of the element + boolean that determines if input cannot be null + + + Writes an attribute with the specified local name and value + the localname of the element + the value of the element + boolean that determines if input cannot be null + + + Writes an attribute with the specified local name and value + the localname of the element + the value of the element + boolean that determines if input cannot be null + + + Writes an attribute with the specified local name and value + the localname of the element + the value of the element + boolean that determines if input cannot be null + + + Gets or sets the RSS version to write. + Can't change version number after data has been written. + + + Gets or sets the of the XML output. + Can't change XML formatting after data has been written. + + + Gets or sets how indentation to write for each level in the hierarchy when XmlFormat is set to + Can't change XML formatting after data has been written. + Setting this property to a negative value. + + + RSS modules + + + Reads an RSS file. + Provides fast, non-cached, forward-only access to RSS data. + + + Initializes a new instance of the RssReader class with the specified URL or filename. + The URL or filename for the file containing the RSS data. + Occures when unable to retrieve file containing the RSS data. + + + Creates an instance of the RssReader class using the specified TextReader. + specified TextReader + Occures when unable to retrieve file containing the RSS data. + + + Creates an instance of the RssReader class using the specified Stream. + Occures when unable to retrieve file containing the RSS data. + Stream to read from + + + Reads the next RssElement from the stream. + An RSS Element + RssReader has been closed, and can not be read. + RSS file not found. + Invalid XML syntax in RSS file. + Unable to read an RssElement. Reached the end of the stream. + + + Closes connection to file. + This method also releases any resources held while reading. + + + A collection of all exceptions the RssReader class has encountered. + + + Gets the RSS version of the stream. + One of the values. + + + Globally unique identifier + + + Initialize a new instance of the RssGuid class. + + + If true, a url that can be opened in a web browser that points to the item + + + Globally unique identifier value + + + A link and description for a graphic that represent a channel + + + Initialize a new instance of the RssImage class. + + + The URL of a GIF, JPEG or PNG image that represents the channel. + Maximum length is 500 (For RSS 0.91). + + + Describes the image, it's used in the ALT attribute of the HTML img tag when the channel is rendered in HTML. + Maximum length is 100 (For RSS 0.91). + + + The URL of the site, when the channel is rendered, the image is a link to the site. + Maximum length is 500 (For RSS 0.91). + + + Contains text that is included in the TITLE attribute of the link formed around the image in the HTML rendering. + + + Width of image in pixels + Maximum value for height is 400 (For RSS 0.91) + + + Height of image in pixels + Maximum value for width is 144 (For RSS 0.91) + + + A module may contain any number of items (either channel-based or item-based). + + + Initialize a new instance of the RssModuleItem class + + + Initialize a new instance of the RssModuleItem class + The name of this RssModuleItem. + + + Initialize a new instance of the RssModuleItem class + The name of this RssModuleItem. + Is text required for this RssModuleItem? + + + Initialize a new instance of the RssModuleItem class + The name of this RssModuleItem. + The text contained within this RssModuleItem. + + + Initialize a new instance of the RssModuleItem class + The name of this RssModuleItem. + Is text required for this RssModuleItem? + The text contained within this RssModuleItem. + + + Initialize a new instance of the RssModuleItem class + The name of this RssModuleItem. + The text contained within this RssModuleItem. + The sub-elements of this RssModuleItem (if any exist). + + + Initialize a new instance of the RssModuleItem class + The name of this RssModuleItem. + Is text required for this RssModuleItem? + The text contained within this RssModuleItem. + The sub-elements of this RssModuleItem (if any exist). + + + Returns a string representation of the current Object. + The item's title, description, or "RssModuleItem" if the title and description are blank. + + + + The name of this RssModuleItem. + + + + + The text contained within this RssModuleItem. + + + + + The sub-elements of this RssModuleItem (if any exist). + + + + + Is text for this element required? + + + + Describes an items source + + + Initialize a new instance of the RssSource class + + + Name of the RSS channel that the item came from + + + URL of the original RSS feed from which the item was republished + + + A strongly typed collection of objects + + + Adds a specified exception to this collection. + The exception to add. + The zero-based index of the added exception -or- -1 if the exception already exists. + + + Determines whether the ExceptionCollection contains a specific element. + The Exception to locate in the ExceptionCollection. + true if the ExceptionCollection contains the specified value; otherwise, false. + + + Copies the entire ExceptionCollection to a compatible one-dimensional , starting at the specified index of the target array. + The one-dimensional Exception Array that is the destination of the elements copied from ExceptionCollection. The Array must have zero-based indexing. + The zero-based index in array at which copying begins. + array is a null reference (Nothing in Visual Basic). + index is less than zero. + array is multidimensional. -or- index is equal to or greater than the length of array.-or-The number of elements in the source ExceptionCollection is greater than the available space from index to the end of the destination array. + + + Searches for the specified Exception and returns the zero-based index of the first occurrence within the entire ExceptionCollection. + The Exception to locate in the ExceptionCollection. + The zero-based index of the first occurrence of RssChannel within the entire ExceptionCollection, if found; otherwise, -1. + + + Inserts an Exception into this collection at a specified index. + The zero-based index of the collection at which to insert the Exception. + The Exception to insert into this collection. + + + Removes a specified Exception from this collection. + The Exception to remove. + + + Gets or sets the exception at a specified index.In C#, this property is the indexer for the class. + The index of the collection to access. + A exception at each valid index. + This method is an indexer that can be used to access the collection. + + + Returns the last exception added through the Add method. + The last exception -or- null if no exceptions exist + + + A strongly typed collection of objects + + + Adds a specified category to this collection. + The category to add. + The zero-based index of the added category. + + + Determines whether the RssCategoryCollection contains a specific element. + The RssCategory to locate in the RssCategoryCollection. + true if the RssCategoryCollection contains the specified value; otherwise, false. + + + Copies the entire RssCategoryCollection to a compatible one-dimensional , starting at the specified index of the target array. + The one-dimensional RssCategory Array that is the destination of the elements copied from RssCategoryCollection. The Array must have zero-based indexing. + The zero-based index in array at which copying begins. + array is a null reference (Nothing in Visual Basic). + index is less than zero. + array is multidimensional. -or- index is equal to or greater than the length of array.-or-The number of elements in the source RssCategoryCollection is greater than the available space from index to the end of the destination array. + + + Searches for the specified RssCategory and returns the zero-based index of the first occurrence within the entire RssCategoryCollection. + The RssCategory to locate in the RssCategoryCollection. + The zero-based index of the first occurrence of RssCategory within the entire RssCategoryCollection, if found; otherwise, -1. + + + Inserts an category into this collection at a specified index. + The zero-based index of the collection at which to insert the category. + The category to insert into this collection. + + + Removes a specified category from this collection. + The category to remove. + + + Gets or sets the category at a specified index.In C#, this property is the indexer for the class. + The index of the collection to access. + A category at each valid index. + This method is an indexer that can be used to access the collection. + index is not a valid index. + + + A RSS module that adds elements at the channel or item level that specifies which Creative Commons license applies. + + + Initialize a new instance of the + + If present as a sub-element of channel, indicates that the content of the RSS file is available under a license, indicated by a URL, which is the value of the license element. A list of some licenses that may be used in this context is on the Creative Commons website on this page, however the license element may point to licenses not authored by Creative Commons. + You may also use the license element as a sub-element of item. When used this way it applies only to the content of that item. If an item has a license, and the channel does too, the license on the item applies, i.e. the inner license overrides the outer one. + Multiple license elements are allowed, in either context, indicating that the content is available under multiple licenses. + "http://www.creativecommons.org/licenses/" + + If present as a sub-element of channel then true, otherwise false + + + A channel may contain any number of items, each of which links to more information about the item, with an optional description + + + Initialize a new instance of the RssItem class + + + Returns a string representation of the current Object. + The item's title, description, or "RssItem" if the title and description are blank. + + + Title of the item + Maximum length is 100 (For RSS 0.91) + + + URL of the item + Maximum length is 500 (For RSS 0.91) + + + Item synopsis + Maximum length is 500 (For RSS 0.91) + + + Email address of the author of the item + + + Provide information regarding the location of the subject matter of the channel in a taxonomy + + + URL of a page for comments relating to the item + + + Describes an items source + + + A reference to an attachment to the item + + + A string that uniquely identifies the item + + + Indicates when the item was published + + + Multi-purpose channel element for the purpose of allowing users to submit queries back to the publisher's site + Typically for a search or subscription + + + Initialize a new instance of the RssTextInput class + + + The label of the submit button in the text input area + Maximum length is 100 (For RSS 0.91) + + + Explains the text input area + Maximum length is 500 (For RSS 0.91) + + + The name of the text object in the text input area + Maximum length is 20 (For RSS 0.91). + + + The URL of the script that processes text input requests + Maximum length is 500 (For RSS 0.91) + + + diff --git a/NzbDrone.Core/Libraries/RSS.NET.dll b/NzbDrone.Core/Libraries/RSS.NET.dll new file mode 100644 index 0000000000000000000000000000000000000000..10dd1f774ff9661dbc935473257d1278e0d219bf GIT binary patch literal 57344 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 y{!-2VtDP9Ld&~o49vJh$m + + + SubSonic.Core + + + + + Removes column declarations in SelectExpression's that are not referenced + + + + + An extended expression visitor including custom DbExpression nodes + + + + + returns the list of SelectExpressions accessible from the source expression + + + + + Determines if a SelectExpression contains any aggregate expressions + + + + + A simple query mapping that attempts to infer mapping from naming conventionss + + + + + Defines mapping information and rules for the query provider + + + + + Determines if a give CLR type is mapped as a database entity + + + + + + + Deterimines is a property is mapped onto a column or relationship + + + + + + + Determines if a property is mapped onto a column + + + + + + + Determines if a property represents or is part of the entities unique identity (often primary key) + + + + + + + Determines if a property is mapped as a relationship + + + + + + + The type of the entity on the other side of the relationship + + + + + + + The name of the corresponding database table + + + + + + + The name of the corresponding table column + + + + + + + A sequence of all the mapped members + + + + + + + Determines if a relationship property refers to a single optional entity (as opposed to a collection.) + + + + + + + Get a query expression that selects all entities from a table + + + + + + + Gets an expression that constructs an entity instance relative to a root. + The root is most often a TableExpression, but may be any other experssion such as + a ConstantExpression. + + + + + + + + Get the members for the key properities to be joined in an association relationship + + + + + + + + Get an expression for a mapped property relative to a root expression. + The root is either a TableExpression or an expression defining an entity instance. + + + + + + + + Get a function that coerces an a sequence of one type into another type. + This is primarily used for aggregators stored in ProjectionExpression's, which are used to represent the + final transformation of the entire result set of a query. + + The expected type. + The actual type. + + + + + Apply mapping translations to this expression + + + + + + + The language related to the mapping + + + + + Builds an execution plan for a query expression + + + + + columns referencing the outer alias are turned into special named-value parameters + + + + + + Returns an Object with the specified Type and whose value is equivalent to the specified object. + + An Object that implements the IConvertible interface. + + An object whose Type is conversionType (or conversionType's underlying type if conversionType + is Nullable<>) and whose value is equivalent to value. -or- a null reference, if value is a null + reference and conversionType is not a value type. + + + This method exists as a workaround to System.Convert.ChangeType(Object, Type) which does not handle + nullables as of version 2.0 (2.0.50727.42) of the .NET Framework. The idea is that this method will + be deleted once Convert.ChangeType is updated in a future version of the .NET Framework to handle + nullable types, so we want this to behave as closely to Convert.ChangeType as possible. + This method was written by Peter Johnson at: + http://aspalliance.com/author.aspx?uId=1026. + + + + + + + + + + + Equals to. + + The value. + + + + + Determines whether the specified is equal to the current . + + The to compare with the current . + + true if the specified is equal to the current ; otherwise, false. + + The parameter is null. + + + + Serves as a hash function for a particular type. + + + A hash code for the current . + + + + + Returns a that represents the current . + + + A that represents the current . + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The table. + + + + Sets the specified column name. + + Name of the column. + + + + + Sets the expression. + + The column. + + + + + Executes this instance. + + + + + + + + + + + Initializes a new instance of the class. + + The provider. + + + + Sets the specified columns. + + The columns. + + + + + Summary for the RegexPattern class + + + + + + + + + + Initializes a new instance of the class. + + From. + To. + Type of the join. + + + + Gets the join type value. + + The j. + + + + + Gets or sets the type. + + The type. + + + + Gets or sets from column. + + From column. + + + + Gets or sets to column. + + To column. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The provider. + + + + Builds the SQL statement. + + + + + + Adds the specified columns into a new Insert object. + + + The columns. + + + + + Adds the specified columns into a new Insert object. + + + The TBL. + + + + + Inits this instance. + + + + + + Values the specified column. + + The column. + The column value. + + + + + Values the specified column. + + The column. + The column value. + Type of the db. + + + + + Valueses the specified values. + + The values. + + + + + Values the expression. + + The values. + + + + + Returns a that represents the current . + + + A that represents the current . + + + + + Executes this instance. + + + + + + Removes duplicate column declarations that refer to the same underlying column + + + + + Converts LINQ query operators to into custom DbExpression's + + + + + Initializes the class. + + + + + Strips the last specified chars from a string. + + The source string. + The remove from end. + + + + + Strips the last specified chars from a string. + + The source string. + The back down to. + + + + + Plurals to singular. + + The source string. + + + + + Singulars to plural. + + The source string. + + + + + Make plural when count is not one + + The number of things + The source string. + + + + + Removes the specified chars from the beginning of a string. + + The source string. + The remove from beginning. + + + + + Removes chars from the beginning of a string, up to the specified string + + The source string. + The remove up to. + + + + + Strips the last char from a a string. + + The source string. + + + + + Strips the last char from a a string. + + The source string. + + + + + Fasts the replace. + + The original. + The pattern. + The replacement. + + + + + Fasts the replace. + + The original. + The pattern. + The replacement. + Type of the comparison. + + + + + Returns text that is located between the startText and endText tags. + + The source string. + The text from which to start the crop + The endpoint of the crop + + + + + Removes excess white space in a string. + + The source string. + + + + + Removes all non-alpha numeric characters in a string + + The source string. + + + + + Creates a string array based on the words in a sentence + + The source string. + + + + + Strips all HTML tags from a string + + The HTML string. + + + + + Strips all HTML tags from a string and replaces the tags with the specified replacement + + The HTML string. + The HTML place holder. + + + + + Converts a generic List collection to a single comma-delimitted string. + + The list. + + + + + Converts a generic List collection to a single string using the specified delimitter. + + The list. + The delimiter. + + + + + Strips the specified input. + + The source string. + The strip value. + + + + + Converts ASCII encoding to Unicode + + The ASCII code. + + + + + Converts Text to HTML-encoded string + + The text string. + + + + + Converts HTML-encoded bits to Text + + The entity text. + + + + + Formats the args using String.Format with the target string as a format string. + + The format string passed to String.Format + The args passed to String.Format + + + + + Strings to enum. + + + The value. + + + + + Fills the entities. + + + + + Converts US State Name to it's two-character abbreviation. Returns null if the state name was not found. + + US State Name (ie Texas) + + + + + Converts a two-character US State Abbreviation to it's official Name Returns null if the abbreviation was not found. + + US State Name (ie Texas) + + + + + Fills the US States. + + + + + + + + + + + + + + + Generates the command line. + + + + + + Generates the constraints. + + + + + + Generates from list. + + + + + + Generates the order by. + + + + + + Generates the group by. + + + + + + Generates the joins. + + + + + + Gets the paging SQL wrapper. + + + + + + Gets the select columns. + + + + + + Finds the column. + + Name of the column. + + + + + Builds the select statement. + + + + + + Builds the paged select statement. + + + + + + Builds the update statement. + + + + + + Builds the insert statement. + + + + + + Builds the delete statement. + + + + + + Sets the insert query. + + The q. + + + + SqlFragment. Field values may change depending on the inheriting Generator. + + + + + Initializes a new instance of the class. + + The q. + + + + Sets the insert query. + + The q. + + + + Finds the column. + + Name of the column. + + + + + Generates the group by. + + + + + + Generates the command line. + + + + + + Generates the joins. + + + + + + Generates from list. + + + + + + Generates the constraints. + + + + + + Generates the order by. + + + + + + Gets the select columns. + + + + + + Gets the paging SQL wrapper. + + + + + + Builds the paged select statement. + + + + + + Builds the select statement. + + + + + + Builds the update statement. + + + + + + Builds the insert statement. + + + + + + Builds the delete statement. + + + + + + Qualifies the name of the table. + + The TBL. + + + + + Gets the qualified select. + + The table. + + + + + Generates the select column list. + + + + + + Builds the aggregate commands. + + + + + + Generates the 'SELECT' part of an + + The aggregate to include in the SELECT clause + The portion of the SELECT clause represented by this + + The ToString() logic moved from , rather than + including it in the Aggregate class itself... + + + + + Initializes a new instance of the class. + + The query. + + + + Builds the paged select statement. + + + + + + Builds the insert statement. + + + + + + A schema generator for your DB + + + + + Builds a CREATE TABLE statement. + + + + + + + Builds a DROP TABLE statement. + + Name of the table. + + + + + Adds the column. + + Name of the table. + The column. + + + + Alters the column. + + The column. + + + + Removes the column. + + Name of the table. + Name of the column. + + + + + Gets the type of the native. + + Type of the db. + + + + + Generates the columns. + + Table containing the columns. + + SQL fragment representing the supplied columns. + + + + + Sets the column attributes. + + The column. + + + + + Builds a CREATE TABLE statement. + + + + + + + Builds a DROP TABLE statement. + + Name of the table. + + + + + Adds the column. + + Name of the table. + The column. + + + + + Alters the column. + + The column. + + + + Removes the column. + + Name of the table. + Name of the column. + + + + + Gets the type of the native. + + Type of the db. + + + + + Generates the columns. + + Table containing the columns. + + SQL fragment representing the supplied columns. + + + + + Sets the column attributes. + + The column. + + + + + Gets an ITable from the DB based on name + + + + + Creates a list of table names + + + + + + + + + Removes one or more SelectExpression's by rewriting the expression tree to not include them, promoting + their from clause expressions and rewriting any column expressions that may have referenced them to now + reference the underlying data directly. + + + + + Attempts to rewrite cross-apply and outer-apply joins as inner and left-outer joins + + + + + rewrites nested projections into client-side joins + + + + + Formats a query expression into TSQL language syntax + + + + + Formats a query expression into TSQL language syntax + + + + + Extended node types for custom expressions + + + + + A custom expression node that represents a table reference in a SQL query + + + + + A custom expression node that represents a reference to a column in a SQL query + + + + + A declaration of a column in a SQL SELECT expression + + + + + An SQL OrderBy order type + + + + + A pairing of an expression and an order type for use in a SQL Order By clause + + + + + A custom expression node used to represent a SQL SELECT expression + + + + + A kind of SQL join + + + + + A custom expression node representing a SQL join clause + + + + + Allows is-null tests against value-types like int and float + + + + + A custom expression representing the construction of one or more result objects from a + SQL select expression + + + + + Holds list of tables, views, stored procedures, etc. + + + + + Initializes the shared connection. + + + + + + Initializes the shared connection. + + The shared connection string. + + + + + Resets the shared connection. + + + + + Adds the params. + + The CMD. + The qry. + + + + Gets a value indicating whether [current connection string is default]. + + + true if [current connection string is default]; otherwise, false. + + + + + Gets or sets the current shared connection. + + The current shared connection. + + + + For Jeff Atwood + http://www.codinghorror.com/blog/archives/000989.html + + + A class which wraps an inline SQL call + + + + + Initializes a new instance of the class. + Warning: This method assumes the default provider is intended. + Call InlineQuery(string providerName) if this is not the case. + + The SQL. + + + + Initializes a new instance of the class. + + The SQL. + The values. + + + + Initializes a new instance of the class. + + The provider. + + + + Gets the command. + + + + + + Executes the specified SQL. + + + + + Executes the scalar. + + The type of the result. + + + + + Executes the typed list. + + + + + + + Executes the reader. + + + + + + TSQL specific QueryLanguage + + + + + Defines the language rules for the query provider + + + + + Determines whether the CLR type corresponds to a scalar data type in the query language + + + + + + + Determines whether the given expression can be represented as a column in a select expressionss + + + + + + + Provides language specific query translation. Use this to apply language specific rewrites or + to make assertions/validations about the query. + + + + + + + Converts the query expression into text of this query language + + + + + + + Determine which sub-expressions must be parameters + + + + + + + Rewrites nested singleton projection into server-side joins + + + + + Gets a value indicating whether this instance is numeric. + + + true if this instance is numeric; otherwise, false. + + + + + Gets a value indicating whether this instance is date time. + + + true if this instance is date time; otherwise, false. + + + + + Gets a value indicating whether this instance is string. + + true if this instance is string; otherwise, false. + + + + Gets a value indicating whether this instance is numeric. + + + true if this instance is numeric; otherwise, false. + + + + + Gets a value indicating whether this instance is date time. + + + true if this instance is date time; otherwise, false. + + + + + Gets a value indicating whether this instance is string. + + true if this instance is string; otherwise, false. + + + + Summary for the ReservedColumnName class + + + + + Returns Schema instance with empty lists. + + + + + Where, And, Or + + + + + WHERE operator + + + + + AND operator + + + + + OR Operator + + + + + SQL Comparison Operators + + + + + Summary for the SqlComparison class + + + + + A Class for handling SQL Constraint generation + + + + + The query that this constraint is operating on + + + + + Initializes a new instance of the class. + + The condition. + Name of the constraint column. + + + + Initializes a new instance of the class. + + The condition. + Name of the constraint column. + Name of the constraint qualified column. + + + + Initializes a new instance of the class. + + The condition. + Name of the constraint column. + Name of the constraint qualified column. + The constraint construction fragment. + + + + Initializes a new instance of the class. + + The condition. + Name of the constraint column. + The SQL query. + + + + Initializes a new instance of the class. + + The condition. + Name of the constraint column. + Name of the constraint qualified column. + The constraint construction fragment. + The SQL query. + + + + Wheres the specified column name. + + Name of the column. + + + + + Ands the specified column name. + + Name of the column. + + + + + Ors the specified column name. + + Name of the column. + + + + + Gets or sets the name of the table. + + The name of the table. + + + + Gets the comparison operator. + + The comp. + + + + + Determines whether the specified is equal to the current . + + The to compare with the current . + + true if the specified is equal to the current ; otherwise, false. + + The parameter is null. + + + + Serves as a hash function for a particular type. + + + A hash code for the current . + + + + + Creates a LIKE statement. + + The val. + + + + + Creates a LIKE statement and appends a wildcard to the end of the passed-in value. + + The val. + + + + + Creates a LIKE statement and appends a wildcard to the end of the passed-in value. + + The val. + The wild card. + + + + + Creates a LIKE statement and appends a wildcard to the end of the passed-in value. + + The val. + + + + + Creates a NOT LIKE statement + + The val. + + + + + Determines whether [is greater than] [the specified val]. + + The val. + + + + + Determines whether [is greater than] [the specified val]. + + The val. + + + + + Specifies a SQL IN statement using a nested Select statement + + The select query. + + + + + Specifies a SQL IN statement + + Value array + + + + + Specifies a SQL IN statement + + Value array + + + + + Specifies a SQL IN statement using a nested Select statement + + The select query. + + + + + Specifies a SQL Not IN statement + + Value array + + + + + Specifies a SQL NOT IN statement + + Value array + + + + + Determines whether [is less than] [the specified val]. + + The val. + + + + + Determines whether [is less than] [the specified val]. + + The val. + + + + + Determines whether [is not null] [the specified val]. + + + + + + Determines whether the specified val is null. + + + + + + Determines whether [is between and] [the specified val1]. + + The val1. + The val2. + + + + + Determines whether [is equal to] [the specified val]. + + The val. + + + + + Determines whether [is not equal to] [the specified val]. + + The val. + + + + + Gets or sets the condition. + + The condition. + + + + Gets or sets the name of the column. + + The name of the column. + + + + Gets or sets the fully qualified name of the column. + + The name of the column. + + + + Gets or sets the string fragment used when assembling the text of query. + + The construction fragment. + + + + Gets or sets the comparison. + + The comparison. + + + + Gets or sets the parameter value. + + The parameter value. + + + + Gets or sets the start value. + + The start value. + + + + Gets or sets the end value. + + The end value. + + + + Gets or sets the in values. + + The in values. + + + + Gets or sets the in select. + + The in select. + + + + Gets or sets the name of the parameter. + + The name of the parameter. + + + + Gets or sets the type of the db. + + The type of the db. + + + + Gets or sets a value indicating whether this constraint is an Aggregate. + + + true if this instance is aggregate; otherwise, false. + + + + + Removes joins expressions that are identical to joins that already exist + + + + + Moves order-bys to the outermost select if possible + + + + + Add a sequence of order expressions to an accumulated list, prepending so as + to give precedence to the new expressions over any previous expressions + + + + + + Rebind order expressions to reference a new alias and add to column declarations if necessary + + + + + Writes out an expression tree (including DbExpression nodes) in a C#-ish syntax + + + + + Writes out an expression tree in a C#-ish syntax + + + + + Summary for the Numbers class + + + + + Determines whether a number is a natural number (positive, non-decimal) + + The s item. + + true if [is natural number] [the specified s item]; otherwise, false. + + + + + Determines whether [is whole number] [the specified s item]. + + The s item. + + true if [is whole number] [the specified s item]; otherwise, false. + + + + + Determines whether the specified s item is integer. + + The s item. + + true if the specified s item is integer; otherwise, false. + + + + + Determines whether the specified s item is number. + + The s item. + + true if the specified s item is number; otherwise, false. + + + + + Determines whether the specified value is an even number. + + The value. + + true if the specified value is even; otherwise, false. + + + + + Determines whether the specified value is an odd number. + + The value. + + true if the specified value is odd; otherwise, false. + + + + + Generates a random number with an upper bound + + The high. + + + + + Generates a random number between the specified bounds + + The low. + The high. + + + + + Generates a random double + + + + + + This set of classes abstracts out commands and their parameters so that + the DataProviders can work their magic regardless of the client type. The + System.Data.Common class was supposed to do this, but sort of fell flat + when it came to MySQL and other DB Providers that don't implement the Data + Factory pattern. Abstracts out the assignment of parameters, etc + + + + + Gets or sets the size. + + The size. + + + + Gets or sets the mode. + + The mode. + + + + Gets or sets the name of the parameter. + + The name of the parameter. + + + + Gets or sets the parameter value. + + The parameter value. + + + + Gets or sets the type of the data. + + The type of the data. + + + + Summary for the QueryParameterCollection class + + + + + Checks to see if specified parameter exists in the current collection + + + + + + + returns the specified QueryParameter, if it exists in this collection + + + + + + + Adds the specified parameter name. + + Name of the parameter. + The value. + + + + Adds the specified parameter name. + + Name of the parameter. + The value. + Type of the data. + + + + Adds the specified parameter name. + + Name of the parameter. + The value. + Type of the data. + The mode. + + + + Summary for the QueryCommandCollection class + + + + + Summary for the QueryCommand class + + + + + + + + + + Initializes a new instance of the class. + + The SQL. + The provider. + + + + Determines whether [has output params]. + + + true if [has output params]; otherwise, false. + + + + + Adds the parameter. The public AddParameter methods should call this one. + + Name of the parameter. + The parameter value. + Size of the max. + Type of the db. + The direction. + + + + Adds the parameter. + + Name of the parameter. + The parameter value. + Type of the data. + The parameter direction. + + + + Adds the parameter. + + Name of the parameter. + The parameter value. + Type of the data. + + + + Adds the parameter. + + Name of the parameter. + The parameter value. + + + + Adds the output parameter. + + Name of the parameter. + Size of the max. + Type of the db. + + + + Adds the output parameter. + + Name of the parameter. + Size of the max. + + + + Adds the output parameter. + + Name of the parameter. + + + + Adds the output parameter. + + Name of the parameter. + Type of the db. + + + + Adds a return parameter (RETURN_VALUE) to the command. + + + + + + Suggested by feroalien@hotmail.com + Issue 11 fix + + + + + + Gets or sets the command timeout (in seconds). + + The command timeout. + + + + Gets or sets the type of the command. + + The type of the command. + + + + Gets or sets the command SQL. + + The command SQL. + + + + Gets or sets the parameters. + + The parameters. + + + + Common interface for controlling defer-loadable types + + + + + A list implementation that is loaded the first the contents are examined + + + + + + Rewrites take and skip expressions into uses of TSQL row_number function + + + + + Adds relationship to query results depending on policy + + + + + Converts user arguments into named-value parameters + + + + + Result from calling ColumnProjector.ProjectColumns + + + + + Splits an expression into two parts + 1) a list of column declarations for sub-expressions that must be evaluated on the server + 2) a expression that describes how to combine/project the columns back together into the correct result + + + + + Nominator is a class that walks an expression tree bottom up, determining the set of + candidate expressions that are possible columns of a select expression + + + + + Summary for the Files class + + + + + Read a text file and obtain it's contents. + + The complete file path to write to. + String containing the content of the file. + + + + Creates or opens a file for writing and writes text to it. + + The complete file path to write to. + A String containing text to be written to the file. + + + + Update text within a file by replacing a substring within the file. + + The complete file path to write to. + A String to be replaced. + A String to replace all occurrences of lookFor. + + + + Writes out a string to a file. + + The complete file path to write to. + A String containing text to be written to the file. + + + + Fetches a web page + + The URL. + + + + + A holder for 1 or more queries to be executed together + + + + + Builds the SQL statement. + + + + + + Executes this instance. + + + + + + Executes the queries in and returns a multiple result set reader. + + + + + + Gets a command containing all the queued queries. + + + + + + Queues the specified query. + + The query. + + + + Queues the specified query. + + + The query. + + + + Queues a query for use in a transaction. + + The qry. + + + + Queues a query for use in a transaction. + + The CMD. + + + + Queues a query for use in a transaction. + + The SQL. + The parameters. + + + + Executes the transaction. + + + + + Enum for General SQL Functions + + + + + + + + + + Counts the specified col. + + The col. + + + + + Counts the specified col. + + The col. + The alias. + + + + + Counts the specified column name. + + Name of the column. + + + + + Counts the specified column name. + + Name of the column. + The alias. + + + + + Sums the specified col. + + The col. + + + + + Sums the specified column name. + + Name of the column. + + + + + Sums the specified col. + + The col. + The alias. + + + + + Sums the specified column name. + + Name of the column. + The alias. + + + + + Groups the by. + + The col. + + + + + Groups the by. + + Name of the column. + + + + + Groups the by. + + The col. + The alias. + + + + + Groups the by. + + Name of the column. + The alias. + + + + + Avgs the specified col. + + The col. + + + + + Avgs the specified column name. + + Name of the column. + + + + + Avgs the specified col. + + The col. + The alias. + + + + + Avgs the specified column name. + + Name of the column. + The alias. + + + + + Maxes the specified col. + + The col. + + + + + Maxes the specified column name. + + Name of the column. + + + + + Maxes the specified col. + + The col. + The alias. + + + + + Maxes the specified column name. + + Name of the column. + The alias. + + + + + Mins the specified col. + + The col. + + + + + Mins the specified column name. + + Name of the column. + + + + + Mins the specified col. + + The col. + The alias. + + + + + Mins the specified column name. + + Name of the column. + The alias. + + + + + Variances the specified col. + + The col. + + + + + Variances the specified column name. + + Name of the column. + + + + + Variances the specified col. + + The col. + The alias. + + + + + Variances the specified column name. + + Name of the column. + The alias. + + + + + Standards the deviation. + + The col. + + + + + Standards the deviation. + + Name of the column. + + + + + Standards the deviation. + + The col. + The alias. + + + + + Standards the deviation. + + Name of the column. + The alias. + + + + + Initializes a new instance of the class. + + Name of the column. + Type of the aggregate. + + + + Initializes a new instance of the class. + + Name of the column. + The alias. + Type of the aggregate. + + + + Initializes a new instance of the class. + + The column. + Type of the aggregate. + + + + Initializes a new instance of the class. + + The column. + The alias. + Type of the aggregate. + + + + Gets the type of the function. + + The agg. + + + + + Gets the SQL function call without an alias. Example: AVG(UnitPrice). + + + + + + Overrides ToString() to return the SQL Function call + + + + + + Gets or sets the type of the aggregate. + + The type of the aggregate. + + + + Gets or sets the name of the column. + + The name of the column. + + + + Gets or sets the alias. + + The alias. + + + + returns the set of all aliases produced by a query source + + + + + Translates accesses to relationship members into projections or joins + + + + + Defines query execution and materialization policies. + + + + + Determines if a relationship property is to be included in the results of the query + + + + + + + Determines if a relationship property is included, but the query for the related data is + deferred until the property is first accessed. + + + + + + + Provides policy specific query translations. This is where choices about inclusion of related objects and how + heirarchies are materialized affect the definition of the queries. + + + + + + + Converts a query into an execution plan. The plan is an function that executes the query and builds the + resulting objects. + + + + + + + + The mapping related to the policy. + + + + + Determines if two expressions are equivalent. Supports DbExpression nodes. + + + + + Compare two expressions to determine if they are equivalent + + + + + Returns the SqlDbType for a give DbType + + + + + + Takes the properties of an object and turns them into SubSonic.Query.Constraint + + + + + + + Coerces an IDataReader to try and load an object using name/property matching + + + + + Loads a single primitive value type + + + + + + Toes the type of the enumerable value. + + + The IDataReader to read from. + + + + + Determines whether [is core system type] [the specified type]. + + The type. + + true if [is core system type] [the specified type]; otherwise, false. + + + + + Coerces an IDataReader to load an enumerable of T + + + + + + + Creates a typed list from an IDataReader + + + + + Builds a SubSonic UPDATE query from the passed-in object + + + + + Builds a SubSonic INSERT query from the passed-in object + + + + + Builds a SubSonic DELETE query from the passed-in object + + + + + Gets the type of the native. + + Type of the db. + + + + + Generates the columns. + + Table containing the columns. + + SQL fragment representing the supplied columns. + + + + + Builds a CREATE TABLE statement. + + + + + + + Sets the column attributes. + + The column. + + + + + Gets the type of the db. + + Type of my SQL. + + + + + Simple implementation of the IGrouping<TKey, TElement> interface + + + + + + + Rewrite aggregate expressions, moving them into same select expression that has the group-by clause + + + + + Replaces references to one specific instance of an expression node with another node. + Supports DbExpression nodes + + + + + Parses the object value. + + The expression. + + + + + Parses the passed-in Expression into exclusive (WHERE x=y) constraints. + + The exp. + + + + + Parses the passed-in Expression into exclusive (WHERE x=y) constraint. + + The expression. + + + + + Determines whether the specified exp is constraint. + + The exp. + + true if the specified exp is constraint; otherwise, false. + + + + + Gets the constant value. + + The exp. + + + + + Indicates that a per-thread shared DbConnection object should be used the default DataProvider + (or alternativley a specific DataProvider if one is given) when communicating with the database. + This class is designed to be used within a using () {} block and in conjunction with a TransactionScope object. + It's purpose is to force a common DbConnection object to be used which has the effect of avoiding promotion + of a System.Transaction ambient Transaction to the DTC where possible. + When this class is created, it indicates to the underlying DataProvider that is should use a shared DbConnection + for subsequent operations. When the class is disposed (ie the using() {} block ends) it will indicate to the + underlying provider that it should no longer it's current shared connection and should Dispose() it. + + + + + Used to support nesting. By keeping a stack of all instances of the class that are created on this thread + thread we know when it is safe to Reset the underlying shared connection. + + + + + Indicates to the default DataProvider that it should use a per-thread shared connection. + + + + + Indicates to the default DataProvider that it should use a per-thread shared connection using the given connection string. + + The connection string. + Name of the provider. + + + + Indicates to the specified DataProvider that it should use a per-thread shared connection. + + The data provider. + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Releases unmanaged and - optionally - managed resources + + true to release both managed and unmanaged resources; false to release only unmanaged resources. + + + + Provides access to underlying connection that is shared per thread + + The current connection. + + + + Used within SubSonic to automatically manage a SqlConnection. If a shared connection is available + for the specified provider on the current thread, that shared connection will be used. + Otherwise, a new connection will be created. + Note that if a shared connection is used, it will NOT be automatically disposed - that is up to the caller. + Lifetime management of the shared connection is taken care of by using a + If a new connection is created, it will be automatically disposed when this AutomaticConnectionScope object + is disposed. + + + + + Initializes a new instance of the class. + + The provider. + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Releases unmanaged and - optionally - managed resources + + true to release both managed and unmanaged resources; false to release only unmanaged resources. + + + + Gets the connection. + + + + + + + Gets the connection. + + The connection. + + + + Gets a value indicating whether this instance is using shared connection. + + + true if this instance is using shared connection; otherwise, false. + + + + + A basic abstract LINQ query provider + + + + + Optional interface for IQueryProvider to implement Query<T>'s QueryText property. + + + + + A LINQ IQueryable query provider that executes database queries over a DbConnection + + + + + DbQueryProvider constrcutor that allows for external control of policy + to allow for new types of databases. + + + + + Converts the query expression into text that corresponds to the command that would be executed. + Useful for debugging. + + + + + + + Execute the query expression (does translation, etc.) + + + + + + + Convert the query expression into an execution plan + + + + + + + Do all query translations execpt building the execution plan + + + + + + + Determines whether a given expression can be executed locally. + (It contains no parts that should be translated to the target environment.) + + + + + + + Execute an actual query specified in the target language using the sADO connection + + + + + + + + + Converts a data reader into a sequence of objects using a projector function on each row + + + The reader. + The fn projector. + + + + + Get an IEnumerable that will execute the specified query when enumerated + + + + + + + + + Get an ADO command object initialized with the command-text and parameters + + + + + + + + + Write a command to the log + + + + + + Summary for the SqlFragment class + + + + + + + + + + Initializes a new instance of the class. + + The provider. + + + + Validates the query. + + + + + Finds the column. + + Name of the column. + + + + + Wheres the specified column name. + + Name of the column. + + + + + Wheres the specified column. + + The column. + + + + + Wheres the specified agg. + + The agg. + + + + + Ors the specified column name. + + Name of the column. + + + + + Ors the specified column. + + The column. + + + + + Ors the specified agg. + + The agg. + + + + + Ors the expression. + + Name of the column. + + + + + Opens the expression. + + + + + + Closes the expression. + + + + + + Ands the specified column name. + + Name of the column. + + + + + Ands the specified column. + + The column. + + + + + Ands the specified agg. + + The agg. + + + + + Ands the expression. + + Name of the column. + + + + + Returns the currently set SQL statement for this query object + + + + + + Builds the SQL statement. + + + + + + Froms the specified TBL. + + The TBL. + + + + + Froms the specified TBL. + + Name of the table. + + + + + Froms the specified TBL. + + + + + + + Creates an inner join based on the passed-in column names + + + + + + + + + Creates an Inner Join, guessing based on Primary Key matching + + + + + + + Inners the join. + + From column. + To column. + + + + + Outers the join. + + From column. + To column. + + + + + Crosses the join. + + From column. + To column. + + + + + Lefts the inner join. + + From column. + To column. + + + + + Rights the inner join. + + From column. + To column. + + + + + Lefts the outer join. + + From column. + To column. + + + + + Rights the outer join. + + From column. + To column. + + + + + Nots the equal join. + + From column. + To column. + + + + + Orders the asc. + + The columns. + + + + + Orders the desc. + + The columns. + + + + + Pageds the specified current page. + + The current page. + Size of the page. + + + + + Pageds the specified current page. + + The current page. + Size of the page. + The id column. + + + + + Executes this instance. + + + + + + Executes the reader. + + + + + + Executes the scalar. + + + + + + Executes the scalar. + + The type of the result. + + + + + Gets the record count. + + + + + + Executes the typed list. + + + + + + + Executes the typed list. + + + + + + + Executes the query and returns the result as a single item of T + + The type of item to return + + + + Executes the transaction. + + The queries. + + + + Executes the transaction. + + The queries. + Name of the connection string. + + + + Gets or sets the open paren count. + + The open paren count. + + + + Gets or sets the closed paren count. + + The closed paren count. + + + + + + + + + Initializes a new instance of the class. + + The query. + + + + Builds the paged select statement. + + + + + + Builds the insert statement. + + + + + + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The table. + The provider. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A default implementation of IQueryable for use with QueryProvider + + + + + Duplicate the query expression by making a copy with new table aliases + + + + + Summary for the Validation class + + + + + Determines whether the specified eval string contains only alpha characters. + + The eval string. + + true if the specified eval string is alpha; otherwise, false. + + + + + Determines whether the specified eval string contains only alphanumeric characters + + The eval string. + + true if the string is alphanumeric; otherwise, false. + + + + + Determines whether the specified eval string contains only alphanumeric characters + + The eval string. + if set to true [allow spaces]. + + true if the string is alphanumeric; otherwise, false. + + + + + Determines whether the specified eval string contains only numeric characters + + The eval string. + + true if the string is numeric; otherwise, false. + + + + + Determines whether the specified email address string is valid based on regular expression evaluation. + + The email address string. + + true if the specified email address is valid; otherwise, false. + + + + + Determines whether the specified string is lower case. + + The input string. + + true if the specified string is lower case; otherwise, false. + + + + + Determines whether the specified string is upper case. + + The input string. + + true if the specified string is upper case; otherwise, false. + + + + + Determines whether the specified string is a valid GUID. + + The GUID. + + true if the specified string is a valid GUID; otherwise, false. + + + + + Determines whether the specified string is a valid US Zip Code, using either 5 or 5+4 format. + + The zip code. + + true if it is a valid zip code; otherwise, false. + + + + + Determines whether the specified string is a valid US Zip Code, using the 5 digit format. + + The zip code. + + true if it is a valid zip code; otherwise, false. + + + + + Determines whether the specified string is a valid US Zip Code, using the 5+4 format. + + The zip code. + + true if it is a valid zip code; otherwise, false. + + + + + Determines whether the specified string is a valid Social Security number. Dashes are optional. + + The Social Security Number + + true if it is a valid Social Security number; otherwise, false. + + + + + Determines whether the specified string is a valid IP address. + + The ip address. + + true if valid; otherwise, false. + + + + + Determines whether the specified string is a valid US phone number using the referenced regex string. + + The telephone number. + + true if valid; otherwise, false. + + + + + Determines whether the specified string is a valid currency string using the referenced regex string. + + The currency string. + + true if valid; otherwise, false. + + + + + Determines whether the specified string is a valid URL string using the referenced regex string. + + The URL string. + + true if valid; otherwise, false. + + + + + Determines whether the specified string is consider a strong password based on the supplied string. + + The password. + + true if strong; otherwise, false. + + + + + Determines whether the specified string is a valid credit, based on matching any one of the eight credit card strings + + The credit card. + + true if valid; otherwise, false. + + + + + Determines whether the specified string is an American Express, Discover, MasterCard, or Visa + + The credit card. + + true if valid; otherwise, false. + + + + + Determines whether the specified string is an American Express card + + The credit card. + + true if valid; otherwise, false. + + + + + Determines whether the specified string is an Carte Blanche card + + The credit card. + + true if valid; otherwise, false. + + + + + Determines whether the specified string is an Diner's Club card + + The credit card. + + true if valid; otherwise, false. + + + + + Determines whether the specified string is a Discover card + + The credit card. + + true if valid; otherwise, false. + + + + + Determines whether the specified string is an En Route card + + The credit card. + + true if valid; otherwise, false. + + + + + Determines whether the specified string is an JCB card + + The credit card. + + true if valid; otherwise, false. + + + + + Determines whether the specified string is a Master Card credit card + + The credit card. + + true if valid; otherwise, false. + + + + + Determines whether the specified string is Visa card. + + The credit card. + + true if valid; otherwise, false. + + + + + Cleans the credit card number, returning just the numeric values. + + The credit card. + + + + + Determines whether the credit card number, once cleaned, passes the Luhn algorith. + See: http://en.wikipedia.org/wiki/Luhn_algorithm + + The credit card number. + + + + + Determines whether the specified int array passes the Luhn algorith + + The int array to evaluate + + true if it validates; otherwise, false. + + + + + Determine whether the passed string is numeric, by attempting to parse it to a double + + The string to evaluated for numeric conversion + + true if the string can be converted to a number; otherwise, false. + + + + + Executes the specified SQL. + + + + + Executes the scalar. + + The type of the result. + + + + + Executes the typed list. + + + + + + + Executes the reader. + + + + + + Type related helper methods + + + + + + + + + + Initializes a new instance of the class. + + The provider. + The columns. + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The aggregates. + + + + Initializes a new instance of the class. + + The provider. + The aggregates. + + + + Initializes a new instance of the class. + + The columns. + + + + Initializes a new instance of the class. + WARNING: This overload should only be used with applications that use a single provider! + + The columns. + + + + Alls the columns from. + + + + + + + Expressions the specified SQL expression. + + The SQL expression. + + + + + Tops the specified top. + + The top. + + + + + Removes the column. + + + + + + + + Sets the column attributes. + + The column. + + + + + Gets the type of the db. + + Type of the SQL. + + + + + Type related helper methods + + + + + Replaces references to one specific instance of an expression node with another node + + + + + TSQL specific QueryLanguage + + + + + returns the set of all aliases produced by a query source + + + + + Creates a set of SQL commands for synchronizing your database with your object set + + + + + Builds the delete query. + + The item. + + + + + Builds the insert query. + + The item. + + + + + Builds the update query. + + The item. + + + + + Creates a reusable, parameterized representation of a query that caches the execution plan + + + + + Summary for the Dates class + + + + + Returns a date in the past by days. + + The days. + + + + + Returns a date in the future by days. + + The days. + + + + + Returns a date in the past by hours. + + The hours. + + + + + Returns a date in the future by hours. + + The hours. + + + + + Returns a date in the past by minutes + + The minutes. + + + + + Returns a date in the future by minutes. + + The minutes. + + + + + Gets a date in the past according to seconds + + The seconds. + + + + + Gets a date in the future by seconds. + + The seconds. + + + + + Diffs the specified date. + + The date one. + The date two. + + + + + Returns a double indicating the number of days between two dates (past is negative) + + The date one. + The date two. + + + + + Returns a double indicating the number of days between two dates (past is negative) + + The date one. + The date two. + + + + + Returns a double indicating the number of days between two dates (past is negative) + + The date one. + The date two. + + + + + Returns a double indicating the number of days between two dates (past is negative) + + The date one. + The date two. + + + + + Returns a double indicating the number of days between two dates (past is negative) + + The date one. + The date two. + + + + + Returns a double indicating the number of days between two dates (past is negative) + + The date one. + The date two. + + + + + Displays the difference in time between the two dates. Return example is "12 years 4 months 24 days 8 hours 33 minutes 5 seconds" + + The start time. + The end time. + + + + + Counts the number of weekdays between two dates. + + The start time. + The end time. + + + + + Counts the number of weekends between two dates. + + The start time. + The end time. + + + + + Verifies if the object is a date + + The dt. + + true if the specified dt is date; otherwise, false. + + + + + Checks to see if the date is a week day (Mon - Fri) + + The dt. + + true if [is week day] [the specified dt]; otherwise, false. + + + + + Checks to see if the date is Saturday or Sunday + + The dt. + + true if [is week end] [the specified dt]; otherwise, false. + + + + + Displays the difference in time between the two dates. Return example is "12 years 4 months 24 days 8 hours 33 minutes 5 seconds" + + The start time. + The end time. + + + + + Given a datetime object, returns the formatted month and day, i.e. "April 15th" + + The date to extract the string from + + + + + Given a datetime object, returns the formatted day, "15th" + + The date to extract the string from + + + + + Remove leading strings with zeros and adjust for singular/plural + + The STR. + The previous STR. + The t. + + + + + An enumeration value for no options configured. + + + + + The default set of options (right now the same as none). + + + + + Use this flag to let the repository run migrations. + + + + + + + + + + + + + + + + + + + + Removes select expressions that don't add any additional semantic value + + + + + Rewrite all column references to one or more aliases to a new single alias + + + + + Summary for the Inflector class + + + + + Initializes the class. + + + + + Adds the irregular rule. + + The singular. + The plural. + + + + Adds the unknown count rule. + + The word. + + + + Adds the plural rule. + + The rule. + The replacement. + + + + Adds the singular rule. + + The rule. + The replacement. + + + + Makes the plural. + + The word. + + + + + Makes the singular. + + The word. + + + + + Applies the rules. + + The rules. + The word. + + + + + Converts the string to title case. + + The word. + + + + + Converts the string to human case. + + The lowercase and underscored word. + + + + + Convert string to proper case + + The source string. + + + + + Converts the string to pascal case. + + The lowercase and underscored word. + + + + + Converts text to pascal case... + + The text. + if set to true [remove underscores]. + + + + + Converts the string to camel case. + + The lowercase and underscored word. + + + + + Adds the underscores. + + The pascal cased word. + + + + + Makes the initial caps. + + The word. + + + + + Makes the initial lower case. + + The word. + + + + + Adds the ordinal suffix. + + The number. + + + + + Converts the underscores to dashes. + + The underscored word. + + + + + Summary for the InflectorRule class + + + + + + + + + + + + + + + Initializes a new instance of the class. + + The regex pattern. + The replacement text. + + + + Applies the specified word. + + The word. + + + + + Process the passed-in LINQ expression + + + + + + Sets the column attributes. + + The column. + + + + + Gets the type of the db. + + Type of the SQL. + + + + + A Repository class which wraps the a Database by type + + + + + Loads a T object + + + The item. + The column. + The value. + + + + + Loads a T object + + + The item. + The expression. + + + + + Returns all T items + + + + + Returns a single record + + + + + Returns a server-side Paged List + + + + + Returns a server-side Paged List + + + + + Returns a server-side Paged List + + + + + Returns an IQueryable based on the passed-in Expression Chinook Database + + + + + Returns an IQueryable based on the passed-in Expression Chinook Database + + + + + Adds a T item to the db + + + + + Adds a T item to the db + + + + + Adds a bunch of T items + + + + + Adds a bunch of T items + + + + + Updates the passed-in T + + + + + Updates the passed-in T + + + + + Updates the passed-in T + + + + + Updates the passed-in T + + + + + Deletes the passed-in T items + + + + + Deletes the passed-in T items + + + + + Deletes the passed-in T item + + + + + Deletes the passed-in T item + + + + + Deletes the T item by Primary Key + + + + + Deletes the T item by Primary Key + + + + + Deletes 0 to n T items from the Database based on the passed-in Expression + + + + + Deletes 0 to n T items from the Database based on the passed-in Expression + + + + + Singles the specified expression. + + + The expression. + + + + + Singles the specified key. + + + The key. + + + + + Retrieves subset of records from the database matching the expression + + + + + Gets the paged. + + + Index of the page. + Size of the page. + + + + + Gets the paged. + + + The sort by. + Index of the page. + Size of the page. + + + + + Adds the specified item, setting the key if available. + + + The item. + + + + + Adds a lot of the items using a transaction. + + + The items. + + + + Updates the specified item. + + + The item. + + + + + Updates lots of items using a transaction. + + + The items. + + + + + Deletes the specified key. + + + The key. + + + + + Deletes 1 or more items. + + + The expression. + + + + + Deletes 1 or more items. + + + The items. + + + + + Migrates this instance. + + + + + + Rewrites an expression tree so that locally isolatable sub-expressions are evaluated and converted into ConstantExpression nodes. + + + + + Performs evaluation and replacement of independent sub-trees + + The root of the expression tree. + A function that decides whether a given expression node can be part of the local function. + A new tree with sub-trees evaluated and replaced. + + + + Performs evaluation and replacement of independent sub-trees + + The root of the expression tree. + A new tree with sub-trees evaluated and replaced. + + + + Evaluates and replaces sub-trees when first candidate is reached (top-down) + + + + + Performs bottom-up analysis to determine which nodes can possibly + be part of an evaluated sub-tree. + + + + + Formats a query expression into TSQL language syntax + + + + + TSQL specific QueryLanguage + + + + + + + + + + Initializes a new instance of the class. + + The query. + + + + Gets the type of the native. + + Type of the db. + + + + + Generates SQL for all the columns in table + + Table containing the columns. + + SQL fragment representing the supplied columns. + + + + + Generates from list. + + + + + + Sets the column attributes. + + The column. + + + + + Builds the paged select statement. + + + + + + Finds the first sub-expression that accesses a Query<T> object + + + + + Removes column declarations in SelectExpression's that are not referenced + + + + diff --git a/NzbDrone.Core/Libraries/SubSonic.Core.dll b/NzbDrone.Core/Libraries/SubSonic.Core.dll new file mode 100644 index 0000000000000000000000000000000000000000..065bba65d0c13741e3aeb6db4d1fd04812495da5 GIT binary patch literal 285184 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
;_^7dqy0$61&gz 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

fA_cOold)>dBI?BiAtBay0rF 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�Iy4Y8(rQ$wK(_`N@ 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

;L8i5@0k7iC*#hfw*GVPP!G}svPnQ?b> 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 wweEw^eGs-stj;l3QMZG|cHU-$CHt0a=9k3;+NC literal 0 HcmV?d00001 diff --git a/NzbDrone.Core/Libraries/System.Data.SQLite.Linq.dll b/NzbDrone.Core/Libraries/System.Data.SQLite.Linq.dll new file mode 100644 index 0000000000000000000000000000000000000000..48653d1da909235756674d51c827f65e5d69726a GIT binary patch literal 174080 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 literal 0 HcmV?d00001 diff --git a/NzbDrone.Core/Libraries/System.Data.SQLite.XML b/NzbDrone.Core/Libraries/System.Data.SQLite.XML new file mode 100644 index 000000000..6a2b4e1b1 --- /dev/null +++ b/NzbDrone.Core/Libraries/System.Data.SQLite.XML @@ -0,0 +1,3634 @@ + + + + +

+ MetaDataCollections specific to SQLite + + + + + Returns a list of databases attached to the connection + + + + + Returns column information for the specified table + + + + + Returns index information for the optionally-specified table + + + + + Returns base columns for the given index + + + + + Returns the tables in the given catalog + + + + + Returns user-defined views in the given catalog + + + + + Returns underlying column information on the given view + + + + + Returns foreign key information for the given catalog + + + + + Returns the triggers on the database + + + + + SQLite implementation of DbConnectionStringBuilder. + + + + + Properties of this class + + + + + Constructs a new instance of the class + + + Default constructor + + + + + Constructs a new instance of the class using the specified connection string. + + The connection string to parse + + + + Private initializer, which assigns the connection string and resets the builder + + The connection string to assign + + + + Helper function for retrieving values from the connectionstring + + The keyword to retrieve settings for + The resulting parameter value + Returns true if the value was found and returned + + + + Fallback method for MONO, which doesn't implement DbConnectionStringBuilder.GetProperties() + + The hashtable to fill with property descriptors + + + + Gets/Sets the default version of the SQLite engine to instantiate. Currently the only valid value is 3, indicating version 3 of the sqlite library. + + + + + Gets/Sets the synchronization mode (file flushing) of the connection string. Default is "Normal". + + + + + Gets/Sets the encoding for the connection string. The default is "False" which indicates UTF-8 encoding. + + + + + Gets/Sets whether or not to use connection pooling. The default is "False" + + + + + Gets/Sets whethor not to store GUID's in binary format. The default is True + which saves space in the database. + + + + + Gets/Sets the filename to open on the connection string. + + + + + An alternate to the data source property + + + + + Gets/sets the default command timeout for newly-created commands. This is especially useful for + commands used internally such as inside a SQLiteTransaction, where setting the timeout is not possible. + + + + + Determines whether or not the connection will automatically participate + in the current distributed transaction (if one exists) + + + + + If set to true, will throw an exception if the database specified in the connection + string does not exist. If false, the database will be created automatically. + + + + + If enabled, uses the legacy 3.xx format for maximum compatibility, but results in larger + database sizes. + + + + + When enabled, the database will be opened for read-only access and writing will be disabled. + + + + + Gets/sets the database encryption password + + + + + Gets/Sets the page size for the connection. + + + + + Gets/Sets the maximum number of pages the database may hold + + + + + Gets/Sets the cache size for the connection. + + + + + Gets/Sets the datetime format for the connection. + + + + + Determines how SQLite handles the transaction journal file. + + + + + Sets the default isolation level for transactions on the connection. + + + + + SQLite implementation of DbCommandBuilder. + + + + + Default constructor + + + + + Initializes the command builder and associates it with the specified data adapter. + + + + + + Minimal amount of parameter processing. Primarily sets the DbType for the parameter equal to the provider type in the schema + + The parameter to use in applying custom behaviors to a row + The row to apply the parameter to + The type of statement + Whether the application of the parameter is part of a WHERE clause + + + + Returns a valid named parameter + + The name of the parameter + Error + + + + Returns a named parameter for the given ordinal + + The i of the parameter + Error + + + + Returns a placeholder character for the specified parameter i. + + The index of the parameter to provide a placeholder for + Returns a named parameter + + + + Sets the handler for receiving row updating events. Used by the DbCommandBuilder to autogenerate SQL + statements that may not have previously been generated. + + A data adapter to receive events on. + + + + Returns the automatically-generated SQLite command to delete rows from the database + + + + + + Returns the automatically-generated SQLite command to delete rows from the database + + + + + + + Returns the automatically-generated SQLite command to update rows in the database + + + + + + Returns the automatically-generated SQLite command to update rows in the database + + + + + + + Returns the automatically-generated SQLite command to insert rows into the database + + + + + + Returns the automatically-generated SQLite command to insert rows into the database + + + + + + + Places brackets around an identifier + + The identifier to quote + The bracketed identifier + + + + Removes brackets around an identifier + + The quoted (bracketed) identifier + The undecorated identifier + + + + Override helper, which can help the base command builder choose the right keys for the given query + + + + + + + Gets/sets the DataAdapter for this CommandBuilder + + + + + Overridden to hide its property from the designer + + + + + Overridden to hide its property from the designer + + + + + Overridden to hide its property from the designer + + + + + Overridden to hide its property from the designer + + + + + Overridden to hide its property from the designer + + + + + A strongly-typed resource class, for looking up localized strings, etc. + + + + + Returns the cached ResourceManager instance used by this class. + + + + + Overrides the current thread's CurrentUICulture property for all + resource lookups using this strongly typed resource class. + + + + + Looks up a localized string similar to <?xml version="1.0" standalone="yes"?> + <DocumentElement> + <DataTypes> + <TypeName>smallint</TypeName> + <ProviderDbType>10</ProviderDbType> + <ColumnSize>5</ColumnSize> + <DataType>System.Int16</DataType> + <CreateFormat>smallint</CreateFormat> + <IsAutoIncrementable>false</IsAutoIncrementable> + <IsCaseSensitive>false</IsCaseSensitive> + <IsFixedLength>true</IsFixedLength> + <IsFixedPrecisionScale>true</IsFixedPrecisionScale> + <IsLong>false</IsLong> + <IsNullable>true</ [rest of string was truncated]";. + + + + + Looks up a localized string similar to ALL,ALTER,AND,AS,AUTOINCREMENT,BETWEEN,BY,CASE,CHECK,COLLATE,COMMIT,CONSTRAINT,CREATE,CROSS,DEFAULT,DEFERRABLE,DELETE,DISTINCT,DROP,ELSE,ESCAPE,EXCEPT,FOREIGN,FROM,FULL,GROUP,HAVING,IN,INDEX,INNER,INSERT,INTERSECT,INTO,IS,ISNULL,JOIN,LEFT,LIMIT,NATURAL,NOT,NOTNULL,NULL,ON,OR,ORDER,OUTER,PRIMARY,REFERENCES,RIGHT,ROLLBACK,SELECT,SET,TABLE,THEN,TO,TRANSACTION,UNION,UNIQUE,UPDATE,USING,VALUES,WHEN,WHERE. + + + + + Looks up a localized string similar to <?xml version="1.0" encoding="utf-8" ?> + <DocumentElement> + <MetaDataCollections> + <CollectionName>MetaDataCollections</CollectionName> + <NumberOfRestrictions>0</NumberOfRestrictions> + <NumberOfIdentifierParts>0</NumberOfIdentifierParts> + </MetaDataCollections> + <MetaDataCollections> + <CollectionName>DataSourceInformation</CollectionName> + <NumberOfRestrictions>0</NumberOfRestrictions> + <NumberOfIdentifierParts>0</NumberOfIdentifierParts> + </MetaDataCollections> + <MetaDataC [rest of string was truncated]";. + + + + + The connection pool object + + + + + The default version number new pools will get + + + + + Attempt to pull a pooled connection out of the queue for active duty + + The filename for a desired connection + The maximum size the connection pool for the filename can be + The pool version the returned connection will belong to + Returns NULL if no connections were available. Even if none are, the poolversion will still be a valid pool version + + + + Clears out all pooled connections and rev's up the default pool version to force all old active objects + not in the pool to get discarded rather than returned to their pools. + + + + + Clear a given pool for a given filename. Discards anything in the pool for the given file, and revs the pool + version so current active objects on the old version of the pool will get discarded rather than be returned to the pool. + + The filename of the pool to clear + + + + Return a connection to the pool for someone else to use. + + The filename of the pool to use + The connection handle to pool + The pool version the handle was created under + + If the version numbers don't match between the connection and the pool, then the handle is discarded. + + + + + We don't have to thread-lock anything in this function, because it's only called by other functions above + which already have a thread-safe lock. + + The queue to resize + If a function intends to add to the pool, this is true, which forces the resize + to take one more than it needs from the pool + + + + Keeps track of connections made on a specified file. The PoolVersion dictates whether old objects get + returned to the pool or discarded when no longer in use. + + + + + SQLite implentation of DbConnection. + + + The ConnectionString property of the SQLiteConnection class can contain the following parameter(s), delimited with a semi-colon: + + + Parameter + Values + Required + Default + + + Data Source + {filename} + Y + + + + Version + 3 + N + 3 + + + UseUTF16Encoding + True
False
+ N + False +
+ + DateTimeFormat + Ticks - Use DateTime.Ticks
ISO8601 - Use ISO8601 DateTime format
+ N + ISO8601 +
+ + BinaryGUID + True - Store GUID columns in binary form
False - Store GUID columns as text
+ N + True +
+ + Cache Size + {size in bytes} + N + 2000 + + + Synchronous + Normal - Normal file flushing behavior
Full - Full flushing after all writes
Off - Underlying OS flushes I/O's
+ N + Normal +
+ + Page Size + {size in bytes} + N + 1024 + + + Password + {password} + N + + + + Enlist + Y - Automatically enlist in distributed transactions
N - No automatic enlistment
+ N + Y +
+ + Pooling + True - Use connection pooling
False - Do not use connection pooling
+ N + False +
+ + FailIfMissing + True - Don't create the database if it does not exist, throw an error instead
False - Automatically create the database if it does not exist
+ N + False +
+ + Max Page Count + {size in pages} - Limits the maximum number of pages (limits the size) of the database + N + 0 + + + Legacy Format + True - Use the more compatible legacy 3.x database format
False - Use the newer 3.3x database format which compresses numbers more effectively
+ N + False +
+ + Default Timeout + {time in seconds}
The default command timeout
+ N + 30 +
+ + Journal Mode + Delete - Delete the journal file after a commit
Persist - Zero out and leave the journal file on disk after a commit
Off - Disable the rollback journal entirely
+ N + Delete +
+ + Read Only + True - Open the database for read only access
False - Open the database for normal read/write access
+ N + False +
+ + Max Pool Size + The maximum number of connections for the given connection string that can be in the connection pool + N + 100 + + + Default IsolationLevel + The default transaciton isolation level + N + Serializable + +
+
+
+ + + State of the current connection + + + + + The connection string + + + + + Nesting level of the transactions open on the connection + + + + + The default isolation level for new transactions + + + + + Whether or not the connection is enlisted in a distrubuted transaction + + + + + The base SQLite object to interop with + + + + + The database filename minus path and extension + + + + + Temporary password storage, emptied after the database has been opened + + + + + Default command timeout + + + + + Constructs a new SQLiteConnection object + + + Default constructor + + + + + Initializes the connection with the specified connection string + + The connection string to use on the connection + + + + Clones the settings and connection string from an existing connection. If the existing connection is already open, this + function will open its own connection, enumerate any attached databases of the original connection, and automatically + attach to them. + + + + + + Creates a clone of the connection. All attached databases and user-defined functions are cloned. If the existing connection is open, the cloned connection + will also be opened. + + + + + + Disposes of the SQLiteConnection, closing it if it is active. + + True if the connection is being explicitly closed. + + + + Creates a database file. This just creates a zero-byte file which SQLite + will turn into a database when the file is opened properly. + + The file to create + + + + Raises the state change event when the state of the connection changes + + The new state. If it is different from the previous state, an event is raised. + + + + OBSOLETE. Creates a new SQLiteTransaction if one isn't already active on the connection. + + This parameter is ignored. + When TRUE, SQLite defers obtaining a write lock until a write operation is requested. + When FALSE, a writelock is obtained immediately. The default is TRUE, but in a multi-threaded multi-writer + environment, one may instead choose to lock the database immediately to avoid any possible writer deadlock. + Returns a SQLiteTransaction object. + + + + OBSOLETE. Creates a new SQLiteTransaction if one isn't already active on the connection. + + When TRUE, SQLite defers obtaining a write lock until a write operation is requested. + When FALSE, a writelock is obtained immediately. The default is false, but in a multi-threaded multi-writer + environment, one may instead choose to lock the database immediately to avoid any possible writer deadlock. + Returns a SQLiteTransaction object. + + + + Creates a new SQLiteTransaction if one isn't already active on the connection. + + Supported isolation levels are Serializable, ReadCommitted and Unspecified. + + Unspecified will use the default isolation level specified in the connection string. If no isolation level is specified in the + connection string, Serializable is used. + Serializable transactions are the default. In this mode, the engine gets an immediate lock on the database, and no other threads + may begin a transaction. Other threads may read from the database, but not write. + With a ReadCommitted isolation level, locks are deferred and elevated as needed. It is possible for multiple threads to start + a transaction in ReadCommitted mode, but if a thread attempts to commit a transaction while another thread + has a ReadCommitted lock, it may timeout or cause a deadlock on both threads until both threads' CommandTimeout's are reached. + + Returns a SQLiteTransaction object. + + + + Creates a new SQLiteTransaction if one isn't already active on the connection. + + Returns a SQLiteTransaction object. + + + + Forwards to the local BeginTransaction() function + + Supported isolation levels are Unspecified, Serializable, and ReadCommitted + + + + + Not implemented + + + + + + When the database connection is closed, all commands linked to this connection are automatically reset. + + + + + Clears the connection pool associated with the connection. Any other active connections using the same database file + will be discarded instead of returned to the pool when they are closed. + + + + + + Clears all connection pools. Any active connections will be discarded instead of sent to the pool when they are closed. + + + + + Create a new SQLiteCommand and associate it with this connection. + + Returns an instantiated SQLiteCommand object already assigned to this connection. + + + + Forwards to the local CreateCommand() function + + + + + + Parses the connection string into component parts + + The connection string to parse + An array of key-value pairs representing each parameter of the connection string + + + + Manual distributed transaction enlistment support + + The distributed transaction to enlist in + + + + Looks for a key in the array of key/values of the parameter string. If not found, return the specified default value + + The list to look in + The key to find + The default value to return if the key is not found + The value corresponding to the specified key, or the default value if not found. + + + + Opens the connection using the parameters found in the ConnectionString + + + + + Change the password (or assign a password) to an open database. + + + No readers or writers may be active for this process. The database must already be open + and if it already was password protected, the existing password must already have been supplied. + + The new password to assign to the database + + + + Change the password (or assign a password) to an open database. + + + No readers or writers may be active for this process. The database must already be open + and if it already was password protected, the existing password must already have been supplied. + + The new password to assign to the database + + + + Sets the password for a password-protected database. A password-protected database is + unusable for any operation until the password has been set. + + The password for the database + + + + Sets the password for a password-protected database. A password-protected database is + unusable for any operation until the password has been set. + + The password for the database + + + + Expand the filename of the data source, resolving the |DataDirectory| macro as appropriate. + + The database filename to expand + The expanded path and filename of the filename + + + + The following commands are used to extract schema information out of the database. Valid schema types are: + + + MetaDataCollections + + + DataSourceInformation + + + Catalogs + + + Columns + + + ForeignKeys + + + Indexes + + + IndexColumns + + + Tables + + + Views + + + ViewColumns + + + + + Returns the MetaDataCollections schema + + A DataTable of the MetaDataCollections schema + + + + Returns schema information of the specified collection + + The schema collection to retrieve + A DataTable of the specified collection + + + + Retrieves schema information using the specified constraint(s) for the specified collection + + The collection to retrieve + The restrictions to impose + A DataTable of the specified collection + + + + Builds a MetaDataCollections schema datatable + + DataTable + + + + Builds a DataSourceInformation datatable + + DataTable + + + + Build a Columns schema + + The catalog (attached database) to query, can be null + The table to retrieve schema information for, must not be null + The column to retrieve schema information for, can be null + DataTable + + + + Returns index information for the given database and catalog + + The catalog (attached database) to query, can be null + The name of the index to retrieve information for, can be null + The table to retrieve index information for, can be null + DataTable + + + + Retrieves table schema information for the database and catalog + + The catalog (attached database) to retrieve tables on + The table to retrieve, can be null + The table type, can be null + DataTable + + + + Retrieves view schema information for the database + + The catalog (attached database) to retrieve views on + The view name, can be null + DataTable + + + + Retrieves catalog (attached databases) schema information for the database + + The catalog to retrieve, can be null + DataTable + + + + Returns the base column information for indexes in a database + + The catalog to retrieve indexes for (can be null) + The table to restrict index information by (can be null) + The index to restrict index information by (can be null) + The source column to restrict index information by (can be null) + A DataTable containing the results + + + + Returns detailed column information for a specified view + + The catalog to retrieve columns for (can be null) + The view to restrict column information by (can be null) + The source column to restrict column information by (can be null) + A DataTable containing the results + + + + Retrieves foreign key information from the specified set of filters + + An optional catalog to restrict results on + An optional table to restrict results on + An optional foreign key name to restrict results on + A DataTable with the results of the query + + + + Returns a SQLiteProviderFactory object. + + + + + This event is raised whenever the database is opened or closed. + + + + + The connection string containing the parameters for the connection + + + + + Parameter + Values + Required + Default + + + Data Source + {filename} + Y + + + + Version + 3 + N + 3 + + + UseUTF16Encoding + True
False
+ N + False +
+ + DateTimeFormat + Ticks - Use DateTime.Ticks
ISO8601 - Use ISO8601 DateTime format
JulianDay - Use JulianDay format
+ N + ISO8601 +
+ + BinaryGUID + Yes/On/1 - Store GUID columns in binary form
No/Off/0 - Store GUID columns as text
+ N + On +
+ + Cache Size + {size in bytes} + N + 2000 + + + Synchronous + Normal - Normal file flushing behavior
Full - Full flushing after all writes
Off - Underlying OS flushes I/O's
+ N + Normal +
+ + Page Size + {size in bytes} + N + 1024 + + + Password + {password} + N + + + + Enlist + Y - Automatically enlist in distributed transactions
N - No automatic enlistment
+ N + Y +
+ + Pooling + True - Use connection pooling
False - Do not use connection pooling
+ N + False +
+ + FailIfMissing + True - Don't create the database if it does not exist, throw an error instead
False - Automatically create the database if it does not exist
+ N + False +
+ + Max Page Count + {size in pages} - Limits the maximum number of pages (limits the size) of the database + N + 0 + + + Legacy Format + True - Use the more compatible legacy 3.x database format
False - Use the newer 3.3x database format which compresses numbers more effectively
+ N + False +
+ + Default Timeout + {time in seconds}
The default command timeout
+ N + 30 +
+ + Journal Mode + Delete - Delete the journal file after a commit
Persist - Zero out and leave the journal file on disk after a commit
Off - Disable the rollback journal entirely
+ N + Delete +
+ + Read Only + True - Open the database for read only access
False - Open the database for normal read/write access
+ N + False +
+ + Max Pool Size + The maximum number of connections for the given connection string that can be in the connection pool + N + 100 + + + Default IsolationLevel + The default transaciton isolation level + N + Serializable + +
+
+
+ + + Returns the filename without extension or path + + + + + Returns an empty string + + + + + Gets/sets the default command timeout for newly-created commands. This is especially useful for + commands used internally such as inside a SQLiteTransaction, where setting the timeout is not possible. + This can also be set in the ConnectionString with "Default Timeout" + + + + + Returns the version of the underlying SQLite database engine + + + + + Returns the version of the underlying SQLite database engine + + + + + Returns the state of the connection. + + + + + This event is raised whenever SQLite makes an update/delete/insert into the database on + this connection. It only applies to the given connection. + + + + + This event is raised whenever SQLite is committing a transaction. + Return non-zero to trigger a rollback + + + + + This event is raised whenever SQLite is committing a transaction. + Return non-zero to trigger a rollback + + + + + The I/O file cache flushing behavior for the connection + + + + + Normal file flushing at critical sections of the code + + + + + Full file flushing after every write operation + + + + + Use the default operating system's file flushing, SQLite does not explicitly flush the file buffers after writing + + + + + Raised when a transaction is about to be committed. To roll back a transaction, set the + rollbackTrans boolean value to true. + + The connection committing the transaction + Event arguments on the transaction + + + + Raised when data is inserted, updated and deleted on a given connection + + The connection committing the transaction + The event parameters which triggered the event + + + + Whenever an update event is triggered on a connection, this enum will indicate + exactly what type of operation is being performed. + + + + + A row is being deleted from the given database and table + + + + + A row is being inserted into the table. + + + + + A row is being updated in the table. + + + + + Passed during an Update callback, these event arguments detail the type of update operation being performed + on the given connection. + + + + + The name of the database being updated (usually "main" but can be any attached or temporary database) + + + + + The name of the table being updated + + + + + The type of update being performed (insert/update/delete) + + + + + The RowId affected by this update. + + + + + Event arguments raised when a transaction is being committed + + + + + Set to true to abort the transaction and trigger a rollback + + + + + This abstract class is designed to handle user-defined functions easily. An instance of the derived class is made for each + connection to the database. + + + Although there is one instance of a class derived from SQLiteFunction per database connection, the derived class has no access + to the underlying connection. This is necessary to deter implementers from thinking it would be a good idea to make database + calls during processing. + + It is important to distinguish between a per-connection instance, and a per-SQL statement context. One instance of this class + services all SQL statements being stepped through on that connection, and there can be many. One should never store per-statement + information in member variables of user-defined function classes. + + For aggregate functions, always create and store your per-statement data in the contextData object on the 1st step. This data will + be automatically freed for you (and Dispose() called if the item supports IDisposable) when the statement completes. + + + + + The base connection this function is attached to + + + + + Internal array used to keep track of aggregate function context data + + + + + Holds a reference to the callback function for user functions + + + + + Holds a reference to the callbakc function for stepping in an aggregate function + + + + + Holds a reference to the callback function for finalizing an aggregate function + + + + + Holds a reference to the callback function for collation sequences + + + + + Current context of the current callback. Only valid during a callback + + + + + This static list contains all the user-defined functions declared using the proper attributes. + + + + + Internal constructor, initializes the function's internal variables. + + + + + Scalar functions override this method to do their magic. + + + Parameters passed to functions have only an affinity for a certain data type, there is no underlying schema available + to force them into a certain type. Therefore the only types you will ever see as parameters are + DBNull.Value, Int64, Double, String or byte[] array. + + The arguments for the command to process + You may return most simple types as a return value, null or DBNull.Value to return null, DateTime, or + you may return an Exception-derived class if you wish to return an error to SQLite. Do not actually throw the error, + just return it! + + + + Aggregate functions override this method to do their magic. + + + Typically you'll be updating whatever you've placed in the contextData field and returning as quickly as possible. + + The arguments for the command to process + The 1-based step number. This is incrememted each time the step method is called. + A placeholder for implementers to store contextual data pertaining to the current context. + + + + Aggregate functions override this method to finish their aggregate processing. + + + If you implemented your aggregate function properly, + you've been recording and keeping track of your data in the contextData object provided, and now at this stage you should have + all the information you need in there to figure out what to return. + NOTE: It is possible to arrive here without receiving a previous call to Step(), in which case the contextData will + be null. This can happen when no rows were returned. You can either return null, or 0 or some other custom return value + if that is the case. + + Your own assigned contextData, provided for you so you can return your final results. + You may return most simple types as a return value, null or DBNull.Value to return null, DateTime, or + you may return an Exception-derived class if you wish to return an error to SQLite. Do not actually throw the error, + just return it! + + + + + User-defined collation sequences override this method to provide a custom string sorting algorithm. + + The first string to compare + The second strnig to compare + 1 if param1 is greater than param2, 0 if they are equal, or -1 if param1 is less than param2 + + + + Converts an IntPtr array of context arguments to an object array containing the resolved parameters the pointers point to. + + + Parameters passed to functions have only an affinity for a certain data type, there is no underlying schema available + to force them into a certain type. Therefore the only types you will ever see as parameters are + DBNull.Value, Int64, Double, String or byte[] array. + + The number of arguments + A pointer to the array of arguments + An object array of the arguments once they've been converted to .NET values + + + + Takes the return value from Invoke() and Final() and figures out how to return it to SQLite's context. + + The context the return value applies to + The parameter to return to SQLite + + + + Internal scalar callback function, which wraps the raw context pointer and calls the virtual Invoke() method. + + A raw context pointer + Number of arguments passed in + A pointer to the array of arguments + + + + Internal collation sequence function, which wraps up the raw string pointers and executes the Compare() virtual function. + + Not used + Length of the string pv1 + Pointer to the first string to compare + Length of the string pv2 + Pointer to the second string to compare + Returns -1 if the first string is less than the second. 0 if they are equal, or 1 if the first string is greater + than the second. + + + + The internal aggregate Step function callback, which wraps the raw context pointer and calls the virtual Step() method. + + + This function takes care of doing the lookups and getting the important information put together to call the Step() function. + That includes pulling out the user's contextData and updating it after the call is made. We use a sorted list for this so + binary searches can be done to find the data. + + A raw context pointer + Number of arguments passed in + A pointer to the array of arguments + + + + An internal aggregate Final function callback, which wraps the context pointer and calls the virtual Final() method. + + A raw context pointer + + + + Placeholder for a user-defined disposal routine + + True if the object is being disposed explicitly + + + + Disposes of any active contextData variables that were not automatically cleaned up. Sometimes this can happen if + someone closes the connection while a DataReader is open. + + + + + Using reflection, enumerate all assemblies in the current appdomain looking for classes that + have a SQLiteFunctionAttribute attribute, and registering them accordingly. + + + + + Manual method of registering a function. The type must still have the SQLiteFunctionAttributes in order to work + properly, but this is a workaround for the Compact Framework where enumerating assemblies is not currently supported. + + The type of the function to register + + + + Called by SQLiteBase derived classes, this function binds all user-defined functions to a connection. + It is done this way so that all user-defined functions will access the database using the same encoding scheme + as the connection (UTF-8 or UTF-16). + + + The wrapper functions that interop with SQLite will create a unique cookie value, which internally is a pointer to + all the wrapped callback functions. The interop function uses it to map CDecl callbacks to StdCall callbacks. + + The base object on which the functions are to bind + Returns an array of functions which the connection object should retain until the connection is closed. + + + + Returns a reference to the underlying connection's SQLiteConvert class, which can be used to convert + strings and DateTime's into the current connection's encoding schema. + + + + + Extends SQLiteFunction and allows an inherited class to obtain the collating sequence associated with a function call. + + + User-defined functions can call the GetCollationSequence() method in this class and use it to compare strings and char arrays. + + + + + Obtains the collating sequence in effect for the given function. + + + + + + The type of user-defined function to declare + + + + + Scalar functions are designed to be called and return a result immediately. Examples include ABS(), Upper(), Lower(), etc. + + + + + Aggregate functions are designed to accumulate data until the end of a call and then return a result gleaned from the accumulated data. + Examples include SUM(), COUNT(), AVG(), etc. + + + + + Collation sequences are used to sort textual data in a custom manner, and appear in an ORDER BY clause. Typically text in an ORDER BY is + sorted using a straight case-insensitive comparison function. Custom collating sequences can be used to alter the behavior of text sorting + in a user-defined manner. + + + + + An internal callback delegate declaration. + + Raw context pointer for the user function + Count of arguments to the function + A pointer to the array of argument pointers + + + + An internal final callback delegate declaration. + + Raw context pointer for the user function + + + + Internal callback delegate for implementing collation sequences + + Not used + Length of the string pv1 + Pointer to the first string to compare + Length of the string pv2 + Pointer to the second string to compare + Returns -1 if the first string is less than the second. 0 if they are equal, or 1 if the first string is greater + than the second. + + + + The type of collating sequence + + + + + The built-in BINARY collating sequence + + + + + The built-in NOCASE collating sequence + + + + + The built-in REVERSE collating sequence + + + + + A custom user-defined collating sequence + + + + + The encoding type the collation sequence uses + + + + + The collation sequence is UTF8 + + + + + The collation sequence is UTF16 little-endian + + + + + The collation sequence is UTF16 big-endian + + + + + A struct describing the collating sequence a function is executing in + + + + + The name of the collating sequence + + + + + The type of collating sequence + + + + + The text encoding of the collation sequence + + + + + Context of the function that requested the collating sequence + + + + + Calls the base collating sequence to compare two strings + + The first string to compare + The second string to compare + -1 if s1 is less than s2, 0 if s1 is equal to s2, and 1 if s1 is greater than s2 + + + + Calls the base collating sequence to compare two character arrays + + The first array to compare + The second array to compare + -1 if c1 is less than c2, 0 if c1 is equal to c2, and 1 if c1 is greater than c2 + + + + SQLite implementation of DbProviderFactory. + + + SQLite implementation of DbProviderFactory. + + + + + Static instance member which returns an instanced SQLiteFactory class. + + + + + Returns a new SQLiteCommand object. + + A SQLiteCommand object. + + + + Returns a new SQLiteCommandBuilder object. + + A SQLiteCommandBuilder object. + + + + Creates a new SQLiteConnection. + + A SQLiteConnection object. + + + + Creates a new SQLiteConnectionStringBuilder. + + A SQLiteConnectionStringBuilder object. + + + + Creates a new SQLiteDataAdapter. + + A SQLiteDataAdapter object. + + + + Creates a new SQLiteParameter. + + A SQLiteParameter object. + + + + Will provide a DbProviderServices object in .NET 3.5 + + The class or interface type to query for + + + + + SQLite exception class. + + + + + Public constructor for generating a SQLite error given the base error code + + The SQLite error code to report + Extra text to go along with the error message text + + + + Various public constructors that just pass along to the base Exception + + Passed verbatim to Exception + + + + Various public constructors that just pass along to the base Exception + + + + + Various public constructors that just pass along to the base Exception + Passed to Exception + Passed to Exception + + + + + Initializes the exception class with the SQLite error code. + + The SQLite error code + A detailed error message + An error message string + + + + Retrieves the underlying SQLite error code for this exception + + + + + SQLite error codes + + + + + Success + + + + + SQL error or missing database + + + + + Internal logic error in SQLite + + + + + Access permission denied + + + + + Callback routine requested an abort + + + + + The database file is locked + + + + + A table in the database is locked + + + + + malloc() failed + + + + + Attempt to write a read-only database + + + + + Operation terminated by sqlite3_interrupt() + + + + + Some kind of disk I/O error occurred + + + + + The database disk image is malformed + + + + + Table or record not found + + + + + Insertion failed because database is full + + + + + Unable to open the database file + + + + + Database lock protocol error + + + + + Database is empty + + + + + The database schema changed + + + + + Too much data for one row of a table + + + + + Abort due to constraint violation + + + + + Data type mismatch + + + + + Library used incorrectly + + + + + Uses OS features not supported on host + + + + + Authorization denied + + + + + Auxiliary database format error + + + + + 2nd parameter to sqlite3_bind out of range + + + + + File opened that is not a database file + + + + + sqlite3_step() has another row ready + + + + + sqlite3_step() has finished executing + + + + + This internal class provides the foundation of SQLite support. It defines all the abstract members needed to implement + a SQLite data provider, and inherits from SQLiteConvert which allows for simple translations of string to and from SQLite. + + + + + This base class provides datatype conversion services for the SQLite provider. + + + + + An array of ISO8601 datetime formats we support conversion from + + + + + An UTF-8 Encoding instance, so we can convert strings to and from UTF-8 + + + + + The default DateTime format for this instance + + + + + Initializes the conversion class + + The default date/time format to use for this instance + + + + Converts a string to a UTF-8 encoded byte array sized to include a null-terminating character. + + The string to convert to UTF-8 + A byte array containing the converted string plus an extra 0 terminating byte at the end of the array. + + + + Convert a DateTime to a UTF-8 encoded, zero-terminated byte array. + + + This function is a convenience function, which first calls ToString() on the DateTime, and then calls ToUTF8() with the + string result. + + The DateTime to convert. + The UTF-8 encoded string, including a 0 terminating byte at the end of the array. + + + + Converts a UTF-8 encoded IntPtr of the specified length into a .NET string + + The pointer to the memory where the UTF-8 string is encoded + The number of bytes to decode + A string containing the translated character(s) + + + + Converts a UTF-8 encoded IntPtr of the specified length into a .NET string + + The pointer to the memory where the UTF-8 string is encoded + The number of bytes to decode + A string containing the translated character(s) + + + + Converts a string into a DateTime, using the current DateTimeFormat specified for the connection when it was opened. + + + Acceptable ISO8601 DateTime formats are: + yyyy-MM-dd HH:mm:ss + yyyyMMddHHmmss + yyyyMMddTHHmmssfffffff + yyyy-MM-dd + yy-MM-dd + yyyyMMdd + HH:mm:ss + THHmmss + + The string containing either a Tick value, a JulianDay double, or an ISO8601-format string + A DateTime value + + + + Converts a julianday value into a DateTime + + The value to convert + A .NET DateTime + + + + Converts a DateTime struct to a JulianDay double + + The DateTime to convert + The JulianDay value the Datetime represents + + + + Converts a DateTime to a string value, using the current DateTimeFormat specified for the connection when it was opened. + + The DateTime value to convert + Either a string consisting of the tick count for DateTimeFormat.Ticks, a JulianDay double, or a date/time in ISO8601 format. + + + + Internal function to convert a UTF-8 encoded IntPtr of the specified length to a DateTime. + + + This is a convenience function, which first calls ToString() on the IntPtr to convert it to a string, then calls + ToDateTime() on the string to return a DateTime. + + A pointer to the UTF-8 encoded string + The length in bytes of the string + The parsed DateTime value + + + + Smart method of splitting a string. Skips quoted elements, removes the quotes. + + + This split function works somewhat like the String.Split() function in that it breaks apart a string into + pieces and returns the pieces as an array. The primary differences are: + + Only one character can be provided as a separator character + Quoted text inside the string is skipped over when searching for the separator, and the quotes are removed. + + Thus, if splitting the following string looking for a comma:
+ One,Two, "Three, Four", Five
+
+ The resulting array would contain
+ [0] One
+ [1] Two
+ [2] Three, Four
+ [3] Five
+
+ Note that the leading and trailing spaces were removed from each item during the split. +
+ Source string to split apart + Separator character + A string array of the split up elements +
+ + + Convert a value to true or false. + + A string or number representing true or false + + + + + Convert a string to true or false. + + A string representing true or false + + + "yes", "no", "y", "n", "0", "1", "on", "off" as well as Boolean.FalseString and Boolean.TrueString will all be + converted to a proper boolean value. + + + + + Determines the data type of a column in a statement + + The statement to retrieve information for + The column to retrieve type information on + The SQLiteType to receive the affinity for the given column + + + + Converts a SQLiteType to a .NET Type object + + The SQLiteType to convert + Returns a .NET Type object + + + + For a given intrinsic type, return a DbType + + The native type to convert + The corresponding (closest match) DbType + + + + Returns the ColumnSize for the given DbType + + The DbType to get the size of + + + + + Convert a DbType to a Type + + The DbType to convert from + The closest-match .NET type + + + + For a given type, return the closest-match SQLite TypeAffinity, which only understands a very limited subset of types. + + The type to evaluate + The SQLite type affinity for that type. + + + + For a given type name, return a closest-match .NET type + + The name of the type to match + The .NET DBType the text evaluates to. + + + + Opens a database. + + + Implementers should call SQLiteFunction.BindFunctions() and save the array after opening a connection + to bind all attributed user-defined functions and collating sequences to the new connection. + + The filename of the database to open. SQLite automatically creates it if it doesn't exist. + The open flags to use when creating the connection + The maximum size of the pool for the given filename + If true, the connection can be pulled from the connection pool + + + + Closes the currently-open database. + + + After the database has been closed implemeters should call SQLiteFunction.UnbindFunctions() to deallocate all interop allocated + memory associated with the user-defined functions and collating sequences tied to the closed connection. + + + + + Sets the busy timeout on the connection. SQLiteCommand will call this before executing any command. + + The number of milliseconds to wait before returning SQLITE_BUSY + + + + Returns the text of the last error issued by SQLite + + + + + + When pooling is enabled, force this connection to be disposed rather than returned to the pool + + + + + Prepares a SQL statement for execution. + + The source connection preparing the command. Can be null for any caller except LINQ + The SQL command text to prepare + The previous statement in a multi-statement command, or null if no previous statement exists + The timeout to wait before aborting the prepare + The remainder of the statement that was not processed. Each call to prepare parses the + SQL up to to either the end of the text or to the first semi-colon delimiter. The remaining text is returned + here for a subsequent call to Prepare() until all the text has been processed. + Returns an initialized SQLiteStatement. + + + + Steps through a prepared statement. + + The SQLiteStatement to step through + True if a row was returned, False if not. + + + + Resets a prepared statement so it can be executed again. If the error returned is SQLITE_SCHEMA, + transparently attempt to rebuild the SQL statement and throw an error if that was not possible. + + The statement to reset + Returns -1 if the schema changed while resetting, 0 if the reset was sucessful or 6 (SQLITE_LOCKED) if the reset failed due to a lock + + + + Returns a string representing the active version of SQLite + + + + + Returns the number of changes the last executing insert/update caused. + + + + + SQLite has very limited types, and is inherently text-based. The first 5 types below represent the sum of all types SQLite + understands. The DateTime extension to the spec is for internal use only. + + + + + Not used + + + + + All integers in SQLite default to Int64 + + + + + All floating point numbers in SQLite default to double + + + + + The default data type of SQLite is text + + + + + Typically blob types are only seen when returned from a function + + + + + Null types can be returned from functions + + + + + Used internally by this provider + + + + + Used internally + + + + + This implementation of SQLite for ADO.NET can process date/time fields in databases in only one of three formats. Ticks, ISO8601 + and JulianDay. + + + ISO8601 is more compatible, readable, fully-processable, but less accurate as it doesn't provide time down to fractions of a second. + JulianDay is the numeric format the SQLite uses internally and is arguably the most compatible with 3rd party tools. It is + not readable as text without post-processing. + Ticks less compatible with 3rd party tools that query the database, and renders the DateTime field unreadable as text without post-processing. + + The preferred order of choosing a datetime format is JulianDay, ISO8601, and then Ticks. Ticks is mainly present for legacy + code support. + + + + + Using ticks is not recommended and is not well supported with LINQ. + + + + + The default format for this provider. + + + + + JulianDay format, which is what SQLite uses internally + + + + + This enum determines how SQLite treats its journal file. + + + By default SQLite will create and delete the journal file when needed during a transaction. + However, for some computers running certain filesystem monitoring tools, the rapid + creation and deletion of the journal file can cause those programs to fail, or to interfere with SQLite. + + If a program or virus scanner is interfering with SQLite's journal file, you may receive errors like "unable to open database file" + when starting a transaction. If this is happening, you may want to change the default journal mode to Persist. + + + + + The default mode, this causes SQLite to create and destroy the journal file as-needed. + + + + + When this is set, SQLite will keep the journal file even after a transaction has completed. It's contents will be erased, + and the journal re-used as often as needed. If it is deleted, it will be recreated the next time it is needed. + + + + + This option disables the rollback journal entirely. Interrupted transactions or a program crash can cause database + corruption in this mode! + + + + + Struct used internally to determine the datatype of a column in a resultset + + + + + The DbType of the column, or DbType.Object if it cannot be determined + + + + + The affinity of a column, used for expressions or when Type is DbType.Object + + + + + Represents a single SQL statement in SQLite. + + + + + The underlying SQLite object this statement is bound to + + + + + The command text of this SQL statement + + + + + The actual statement pointer + + + + + An index from which unnamed parameters begin + + + + + Names of the parameters as SQLite understands them to be + + + + + Parameters for this statement + + + + + Command this statement belongs to (if any) + + + + + Initializes the statement and attempts to get all information about parameters in the statement + + The base SQLite object + The statement + The command text for this statement + The previous command in a multi-statement command + + + + Called by SQLiteParameterCollection, this function determines if the specified parameter name belongs to + this statement, and if so, keeps a reference to the parameter so it can be bound later. + + The parameter name to map + The parameter to assign it + + + + Disposes and finalizes the statement + + + + + Bind all parameters, making sure the caller didn't miss any + + + + + Perform the bind operation for an individual parameter + + The index of the parameter to bind + The parameter we're binding + + + + SQLite implementation of DbDataReader. + + + + + Underlying command this reader is attached to + + + + + Index of the current statement in the command being processed + + + + + Current statement being Read() + + + + + State of the current statement being processed. + -1 = First Step() executed, so the first Read() will be ignored + 0 = Actively reading + 1 = Finished reading + 2 = Non-row-returning statement, no records + + + + + Number of records affected by the insert/update statements executed on the command + + + + + Count of fields (columns) in the row-returning statement currently being processed + + + + + Datatypes of active fields (columns) in the current statement, used for type-restricting data + + + + + The behavior of the datareader + + + + + If set, then dispose of the command object when the reader is finished + + + + + An array of rowid's for the active statement if CommandBehavior.KeyInfo is specified + + + + + Internal constructor, initializes the datareader and sets up to begin executing statements + + The SQLiteCommand this data reader is for + The expected behavior of the data reader + + + + Closes the datareader, potentially closing the connection as well if CommandBehavior.CloseConnection was specified. + + + + + Throw an error if the datareader is closed + + + + + Throw an error if a row is not loaded + + + + + Enumerator support + + Returns a DbEnumerator object. + + + + SQLite is inherently un-typed. All datatypes in SQLite are natively strings. The definition of the columns of a table + and the affinity of returned types are all we have to go on to type-restrict data in the reader. + + This function attempts to verify that the type of data being requested of a column matches the datatype of the column. In + the case of columns that are not backed into a table definition, we attempt to match up the affinity of a column (int, double, string or blob) + to a set of known types that closely match that affinity. It's not an exact science, but its the best we can do. + + + This function throws an InvalidTypeCast() exception if the requested type doesn't match the column's definition or affinity. + + The index of the column to type-check + The type we want to get out of the column + + + + Retrieves the column as a boolean value + + The index of the column to retrieve + bool + + + + Retrieves the column as a single byte value + + The index of the column to retrieve + byte + + + + Retrieves a column as an array of bytes (blob) + + The index of the column to retrieve + The zero-based index of where to begin reading the data + The buffer to write the bytes into + The zero-based index of where to begin writing into the array + The number of bytes to retrieve + The actual number of bytes written into the array + + To determine the number of bytes in the column, pass a null value for the buffer. The total length will be returned. + + + + + Returns the column as a single character + + The index of the column to retrieve + char + + + + Retrieves a column as an array of chars (blob) + + The index of the column to retrieve + The zero-based index of where to begin reading the data + The buffer to write the characters into + The zero-based index of where to begin writing into the array + The number of bytes to retrieve + The actual number of characters written into the array + + To determine the number of characters in the column, pass a null value for the buffer. The total length will be returned. + + + + + Retrieves the name of the back-end datatype of the column + + The index of the column to retrieve + string + + + + Retrieve the column as a date/time value + + The index of the column to retrieve + DateTime + + + + Retrieve the column as a decimal value + + The index of the column to retrieve + decimal + + + + Returns the column as a double + + The index of the column to retrieve + double + + + + Returns the .NET type of a given column + + The index of the column to retrieve + Type + + + + Returns a column as a float value + + The index of the column to retrieve + float + + + + Returns the column as a Guid + + The index of the column to retrieve + Guid + + + + Returns the column as a short + + The index of the column to retrieve + Int16 + + + + Retrieves the column as an int + + The index of the column to retrieve + Int32 + + + + Retrieves the column as a long + + The index of the column to retrieve + Int64 + + + + Retrieves the name of the column + + The index of the column to retrieve + string + + + + Retrieves the i of a column, given its name + + The name of the column to retrieve + The int i of the column + + + + Schema information in SQLite is difficult to map into .NET conventions, so a lot of work must be done + to gather the necessary information so it can be represented in an ADO.NET manner. + + Returns a DataTable containing the schema information for the active SELECT statement being processed. + + + + Retrieves the column as a string + + The index of the column to retrieve + string + + + + Retrieves the column as an object corresponding to the underlying datatype of the column + + The index of the column to retrieve + object + + + + Retreives the values of multiple columns, up to the size of the supplied array + + The array to fill with values from the columns in the current resultset + The number of columns retrieved + + + + Returns True if the specified column is null + + The index of the column to retrieve + True or False + + + + Moves to the next resultset in multiple row-returning SQL command. + + True if the command was successful and a new resultset is available, False otherwise. + + + + Retrieves the SQLiteType for a given column, and caches it to avoid repetetive interop calls. + + The index of the column to retrieve + A SQLiteType structure + + + + Reads the next row from the resultset + + True if a new row was successfully loaded and is ready for processing + + + + Not implemented. Returns 0 + + + + + Returns the number of columns in the current resultset + + + + + Returns the number of visible fielsd in the current resultset + + + + + Returns True if the resultset has rows that can be fetched + + + + + Returns True if the data reader is closed + + + + + Retrieve the count of records affected by an update/insert command. Only valid once the data reader is closed! + + + + + Indexer to retrieve data from a column given its name + + The name of the column to retrieve data for + The value contained in the column + + + + Indexer to retrieve data from a column given its i + + The index of the column to retrieve + The value contained in the column + + + + SQLite implementation of DbDataAdapter. + + + + + This class is just a shell around the DbDataAdapter. Nothing from DbDataAdapter is overridden here, just a few constructors are defined. + + + Default constructor. + + + + + Constructs a data adapter using the specified select command. + + The select command to associate with the adapter. + + + + Constructs a data adapter with the supplied select command text and associated with the specified connection. + + The select command text to associate with the data adapter. + The connection to associate with the select command. + + + + Constructs a data adapter with the specified select command text, and using the specified database connection string. + + The select command text to use to construct a select command. + A connection string suitable for passing to a new SQLiteConnection, which is associated with the select command. + + + + Raised by the underlying DbDataAdapter when a row is being updated + + The event's specifics + + + + Raised by DbDataAdapter after a row is updated + + The event's specifics + + + + Row updating event handler + + + + + Row updated event handler + + + + + Gets/sets the select command for this DataAdapter + + + + + Gets/sets the insert command for this DataAdapter + + + + + Gets/sets the update command for this DataAdapter + + + + + Gets/sets the delete command for this DataAdapter + + + + + SQLite implementation of DbTransaction. + + + + + The connection to which this transaction is bound + + + + + Constructs the transaction object, binding it to the supplied connection + + The connection to open a transaction on + TRUE to defer the writelock, or FALSE to lock immediately + + + + Commits the current transaction. + + + + + Disposes the transaction. If it is currently active, any changes are rolled back. + + + + + Rolls back the active transaction. + + + + + Returns the underlying connection to which this transaction applies. + + + + + Forwards to the local Connection property + + + + + Gets the isolation level of the transaction. SQLite only supports Serializable transactions. + + + + + SQLite implementation of DbParameterCollection. + + + + + The underlying command to which this collection belongs + + + + + The internal array of parameters in this collection + + + + + Determines whether or not all parameters have been bound to their statement(s) + + + + + Initializes the collection + + The command to which the collection belongs + + + + Retrieves an enumerator for the collection + + An enumerator for the underlying array + + + + Adds a parameter to the collection + + The parameter name + The data type + The size of the value + The source column + A SQLiteParameter object + + + + Adds a parameter to the collection + + The parameter name + The data type + The size of the value + A SQLiteParameter object + + + + Adds a parameter to the collection + + The parameter name + The data type + A SQLiteParameter object + + + + Adds a parameter to the collection + + The parameter to add + A zero-based index of where the parameter is located in the array + + + + Adds a parameter to the collection + + The parameter to add + A zero-based index of where the parameter is located in the array + + + + Adds a named/unnamed parameter and its value to the parameter collection. + + Name of the parameter, or null to indicate an unnamed parameter + The initial value of the parameter + Returns the SQLiteParameter object created during the call. + + + + Adds an array of parameters to the collection + + The array of parameters to add + + + + Adds an array of parameters to the collection + + The array of parameters to add + + + + Clears the array and resets the collection + + + + + Determines if the named parameter exists in the collection + + The name of the parameter to check + True if the parameter is in the collection + + + + Determines if the parameter exists in the collection + + The SQLiteParameter to check + True if the parameter is in the collection + + + + Not implemented + + + + + + + Retrieve a parameter by name from the collection + + The name of the parameter to fetch + A DbParameter object + + + + Retrieves a parameter by its index in the collection + + The index of the parameter to retrieve + A DbParameter object + + + + Returns the index of a parameter given its name + + The name of the parameter to find + -1 if not found, otherwise a zero-based index of the parameter + + + + Returns the index of a parameter + + The parameter to find + -1 if not found, otherwise a zero-based index of the parameter + + + + Inserts a parameter into the array at the specified location + + The zero-based index to insert the parameter at + The parameter to insert + + + + Removes a parameter from the collection + + The parameter to remove + + + + Removes a parameter from the collection given its name + + The name of the parameter to remove + + + + Removes a parameter from the collection given its index + + The zero-based parameter index to remove + + + + Re-assign the named parameter to a new parameter object + + The name of the parameter to replace + The new parameter + + + + Re-assign a parameter at the specified index + + The zero-based index of the parameter to replace + The new parameter + + + + Un-binds all parameters from their statements + + + + + This function attempts to map all parameters in the collection to all statements in a Command. + Since named parameters may span multiple statements, this function makes sure all statements are bound + to the same named parameter. Unnamed parameters are bound in sequence. + + + + + Returns true + + + + + Returns false + + + + + Returns false + + + + + Returns null + + + + + Returns a count of parameters in the collection + + + + + Overloaded to specialize the return value of the default indexer + + Name of the parameter to get/set + The specified named SQLite parameter + + + + Overloaded to specialize the return value of the default indexer + + The index of the parameter to get/set + The specified SQLite parameter + + + + This class provides key info for a given SQLite statement. + + Providing key information for a given statement is non-trivial :( + + + + + + This function does all the nasty work at determining what keys need to be returned for + a given statement. + + + + + + + + Make sure all the subqueries are open and ready and sync'd with the current rowid + of the table they're supporting + + + + + Release any readers on any subqueries + + + + + Append all the columns we've added to the original query to the schema + + + + + + How many additional columns of keyinfo we're holding + + + + + Used to support CommandBehavior.KeyInfo + + + + + A single sub-query for a given table/database. + + + + + SQLite implementation of DbCommand. + + + + + The command text this command is based on + + + + + The connection the command is associated with + + + + + The version of the connection the command is associated with + + + + + Indicates whether or not a DataReader is active on the command. + + + + + The timeout for the command, kludged because SQLite doesn't support per-command timeout values + + + + + Designer support + + + + + Used by DbDataAdapter to determine updating behavior + + + + + The collection of parameters for the command + + + + + The SQL command text, broken into individual SQL statements as they are executed + + + + + Unprocessed SQL text that has not been executed + + + + + Transaction associated with this command + + + + + Constructs a new SQLiteCommand + + + Default constructor + + + + + Initializes the command with the given command text + + The SQL command text + + + + Initializes the command with the given SQL command text and attach the command to the specified + connection. + + The SQL command text + The connection to associate with the command + + + + Initializes the command and associates it with the specified connection. + + The connection to associate with the command + + + + Initializes a command with the given SQL, connection and transaction + + The SQL command text + The connection to associate with the command + The transaction the command should be associated with + + + + Disposes of the command and clears all member variables + + Whether or not the class is being explicitly or implicitly disposed + + + + Clears and destroys all statements currently prepared + + + + + Builds an array of prepared statements for each complete SQL statement in the command text + + + + + Not implemented + + + + + Forwards to the local CreateParameter() function + + + + + + Create a new parameter + + + + + + This function ensures there are no active readers, that we have a valid connection, + that the connection is open, that all statements are prepared and all parameters are assigned + in preparation for allocating a data reader. + + + + + Creates a new SQLiteDataReader to execute/iterate the array of SQLite prepared statements + + The behavior the data reader should adopt + Returns a SQLiteDataReader object + + + + Overrides the default behavior to return a SQLiteDataReader specialization class + + The flags to be associated with the reader + A SQLiteDataReader + + + + Overrides the default behavior of DbDataReader to return a specialized SQLiteDataReader class + + A SQLiteDataReader + + + + Called by the SQLiteDataReader when the data reader is closed. + + + + + Execute the command and return the number of rows inserted/updated affected by it. + + + + + + Execute the command and return the first column of the first row of the resultset + (if present), or null if no resultset was returned. + + The first column of the first row of the first resultset from the query + + + + Does nothing. Commands are prepared as they are executed the first time, and kept in prepared state afterwards. + + + + + Clones a command, including all its parameters + + A new SQLiteCommand with the same commandtext, connection and parameters + + + + The SQL command text associated with the command + + + + + The amount of time to wait for the connection to become available before erroring out + + + + + The type of the command. SQLite only supports CommandType.Text + + + + + The connection associated with this command + + + + + Forwards to the local Connection property + + + + + Returns the SQLiteParameterCollection for the given command + + + + + Forwards to the local Parameters property + + + + + The transaction associated with this command. SQLite only supports one transaction per connection, so this property forwards to the + command's underlying connection. + + + + + Forwards to the local Transaction property + + + + + Sets the method the SQLiteCommandBuilder uses to determine how to update inserted or updated rows in a DataTable. + + + + + Determines if the command is visible at design time. Defaults to True. + + + + + A simple custom attribute to enable us to easily find user-defined functions in + the loaded assemblies and initialize them in SQLite as connections are made. + + + + + Default constructor, initializes the internal variables for the function. + + + + + The function's name as it will be used in SQLite command text. + + + + + The number of arguments this function expects. -1 if the number of arguments is variable. + + + + + The type of function this implementation will be. + + + + + This class implements SQLiteBase completely, and is the guts of the code that interop's SQLite with .NET + + + + + The opaque pointer returned to us by the sqlite provider + + + + + The user-defined functions registered on this connection + + + + + Helper function to retrieve a column of data from an active statement. + + The statement being step()'d through + The column index to retrieve + The type of data contained in the column. If Uninitialized, this function will retrieve the datatype information. + Returns the data in the column + + + + Alternate SQLite3 object, overriding many text behaviors to support UTF-16 (Unicode) + + + + + Overrides SQLiteConvert.ToString() to marshal UTF-16 strings instead of UTF-8 + + A pointer to a UTF-16 string + The length (IN BYTES) of the string + A .NET string + + + + SQLite implementation of DbParameter. + + + + + The data type of the parameter + + + + + The version information for mapping the parameter + + + + + The value of the data in the parameter + + + + + The source column for the parameter + + + + + The column name + + + + + The data size, unused by SQLite + + + + + Default constructor + + + + + Constructs a named parameter given the specified parameter name + + The parameter name + + + + Constructs a named parameter given the specified parameter name and initial value + + The parameter name + The initial value of the parameter + + + + Constructs a named parameter of the specified type + + The parameter name + The datatype of the parameter + + + + Constructs a named parameter of the specified type and source column reference + + The parameter name + The data type + The source column + + + + Constructs a named parameter of the specified type, source column and row version + + The parameter name + The data type + The source column + The row version information + + + + Constructs an unnamed parameter of the specified data type + + The datatype of the parameter + + + + Constructs an unnamed parameter of the specified data type and sets the initial value + + The datatype of the parameter + The initial value of the parameter + + + + Constructs an unnamed parameter of the specified data type and source column + + The datatype of the parameter + The source column + + + + Constructs an unnamed parameter of the specified data type, source column and row version + + The data type + The source column + The row version information + + + + Constructs a named parameter of the specified type and size + + The parameter name + The data type + The size of the parameter + + + + Constructs a named parameter of the specified type, size and source column + + The name of the parameter + The data type + The size of the parameter + The source column + + + + Constructs a named parameter of the specified type, size, source column and row version + + The name of the parameter + The data type + The size of the parameter + The source column + The row version information + + + + Constructs a named parameter of the specified type, size, source column and row version + + The name of the parameter + The data type + The size of the parameter + Only input parameters are supported in SQLite + Ignored + Ignored + Ignored + The source column + The row version information + The initial value to assign the parameter + + + + Constructs a named parameter, yet another flavor + + The name of the parameter + The data type + The size of the parameter + Only input parameters are supported in SQLite + Ignored + Ignored + The source column + The row version information + Whether or not this parameter is for comparing NULL's + The intial value to assign the parameter + + + + Constructs an unnamed parameter of the specified type and size + + The data type + The size of the parameter + + + + Constructs an unnamed parameter of the specified type, size, and source column + + The data type + The size of the parameter + The source column + + + + Constructs an unnamed parameter of the specified type, size, source column and row version + + The data type + The size of the parameter + The source column + The row version information + + + + Resets the DbType of the parameter so it can be inferred from the value + + + + + Clones a parameter + + A new, unassociated SQLiteParameter + + + + Whether or not the parameter can contain a null value + + + + + Returns the datatype of the parameter + + + + + Supports only input parameters + + + + + Returns the parameter name + + + + + Returns the size of the parameter + + + + + Gets/sets the source column + + + + + Used by DbCommandBuilder to determine the mapping for nullable fields + + + + + Gets and sets the row version + + + + + Gets and sets the parameter value. If no datatype was specified, the datatype will assume the type from the value given. + + + + diff --git a/NzbDrone.Core/Libraries/System.Data.SQLite.dll b/NzbDrone.Core/Libraries/System.Data.SQLite.dll new file mode 100644 index 0000000000000000000000000000000000000000..aa398bbec1a567de55f984959d200900b794372a GIT binary patch literal 904704 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 z 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�yOl>vBIc6u{BDv7a#y@@E^oBe+jRG5u?33=T^pN9k$dmk)8zSh=4{SDPucNwe z@DrkPj<>XNir_KaqlLr5gxlCVIlb5-)akT)QSrN;!BZ+8*33I(@l*>N2kaJ|ct1X9 zfi5Fl_qPiXZ@eRgaWe)Zvh_PWEZEt93qLzPw&?ynCMe=O9hMals;_xe{P6+ceahXU zW)3|R5E29T2ET$}&1U{XW3+;{AT}zV^soD)#}hGPVjeWaKhl`62?%e!K08Ui9IT5O zA)})!GQne8TF-e{+XxQJovQJgE#rmx3*3Kume297IyFmUV_$E1p>vs3hnX@2FfXpv ziwDd=T#B5-EYm=!LuMd8pv(#UQt%Fr2i&^FjLGtDZ%jCQnf|{Ylc7wFB^s0S2QxK} z^a^;`vMe(upGqluI62-}A*g@uonnxF{-=r30HJ91-3Pty2t91ph_Xd?V9eA)kxR%G zAppka%wSGb%ASGWDt;KiSRu-j%3Aj`a$+6Alxm)^AK1Q1Xi{M>waiL^n%-#mefoK`(0KrR=g6o zl+{$v#__(UF0?cqwl#)hz>a@>Ja7aDR)g+Y-Y0%~GGzMzF%|(n;=I^-@hNN(H{C-i zA1SGGfAgN%gsAm6g`98ekel?^&D=F+G1TVp<}Y6rB7=6_V?B$q?%grC?kSK5Cq||u zO)KFsGUFk<8iwLaHV3;a11cP6Ut5q^eh2I0DAN`VK`V)tEdjGSzt8g8{}E9LcH~*C z+*M_<@ai#>ZuVqiL6bi)uz`-+wROySLi^y_ zdch_`91Tr3LMcx=&^DxR$Yv)uxaIqsqC7dyyp~nZt=8NCx2a>S@aDyem>_)M)Nx0! zzf_=0jzAW98RIx+spaymtZV{%p5C`>=qXHQh!0<}Di$y!eZc*j87h&+!IQLdK76)a z>vkd|yvPW`N<)d+Rq}pb#=ik~+5y(<$9Q)~sYTdT_Nx~Z@eu;aJO!IQY1sOxx7-Qd zH@-$a0fWk+#odI%R)3pXsfNrA>4bAQ{d5r3=X#lcXV>H&^5a{baf!iHz7R|rlWSVa_8R~9ey%w3Ast;L3b~Ycvo2zt8rKrSI>U9_6 z+9oR5e@oe{Q3W`Npob~-xThIf zFeVjop6%FUp_*c#3U};C2Ox}Pe#WnX@Rz4r2;1zJbrfcF$t3o6UvfDdMy3s+Xfy$( zX7Cd1;}zIxo;vQ1)}h?5a@x4oMD#W8=W|wO>6=@bp;zwY6&^fqANaNY+mhegk~B)z z*pjzwNjfDfD2eYWrQ+MRFhJov``RH}GK!M(DIse7fpOrZ6-_3J`y%3TTU(Hp@aDG3 z?1QX+ui)jv%O=IfU^$iB|4js+>0EHGXhdvZr={*NeN|3v4$iR&`@~&#o1ttk53QFc z_Xwe+&kM&k7}s!wV6s??;QY@JOtyYT7GZhgOWJJADhteMWzdZd&_&Gs#AEBZH|F8$LHIeoBCIfH$=fIj88|5-NF zr#IjX)?RWTsZ5X9s<`jK1e4*WQFVmSz#az7(+Ld`4tNurGUyz|_t@elWj~QP)5$$( zsALLh$Ik1rvM7}y)-WpGG>a3E{$EaFHh&E1vlLZBAYv=KVC9<45*p2H{xi#w9{h}# znaSccQ8~y*tKBF5WG8bF%;u}oO1-lv(vPKM#oqv!J9F9q#Lng5BZG5!cBP2K z-N!3KlU#Fot1a z5Ok9?V#r-`dc73!e}glV6R=Rxr4gW>xj{~!du}xpFvh6y3!XKysZ5QHV{^f?5Vlbk zRVz-Sp=>+=t0SG&{?4VT9Yas?V>Y*Lb5-&0j=E(y8HQj&I2REj1WGVLoRg<(vbz61 zYlsqln=?cSW1Od;gFoI5ij+J><9lD6?pSRMRZB|giVY0a65jMSa%unT90c!(fM*8v z7AQ<(r_68~pI@W~^;i~WJ$QweQ-ex#IL8t{`%OlbV^U+^^fkS3*quF}pIf4w549+V zMY#QD${FTY2ibPDG`4r9hFW`qEMQ=vf2z+L=~sE9&Mdw9Up5vBODIw z$hG776X-<4Hiw>=$vL0ZQw0-wNwdy<6lJcRYC=EApJk?*x97hE*?Hu`InS2pT!VKs z+0Lf~kW1}^o2vY4~PG8NUV=KgWRDDR5N&Tcq~DY zs}+F3D2?|-itR{h1jCyOMOY6Kb#q6dC9GNqS#;E(Ax(2$!P#YlbcCBy6S~1nXQ)X7 z)X)H(gi(PsnCaZWbbitu(E9|xbZ*^3Bk?`i;?%U+zL@WL`6tAyTYzj0nnuf=UjnI6 zjB_3*<%Vc@Jjj>x)*neY#+9MqSsTwIg>%D~{|Vukoadj(mv4uud=}-5GjwH);4e?QCvcAtUDw!XiX=j3m{(St zdkN47`CeV)T63Sl{h!QzySX3D{R;-3(&VTubURxq@0MdMxp@q#E-gjz-O5bc;@SVT zNbkaHT@@!7iQ#FT}_>%a}vDG-RRgNln7RbwQp?|62*nt1&x{(86X1R4%8a@!(`+Y`F z{^>ycKvPpOAC0m$wXZncJ!@D$zIfu11CdWZu2#*V&Cj>i4qpMzM5!Yw(L}=@4ksr# zBjN0|YGvdM56+&WN{FAp?tl~jXepJ4;Osbm2;bW$9|>n6aQ3L?5S;Jb^uK~rOke~) z2h}IBIiifxLA8mYjJt3#x(nUOUG5S-w|x^68c5wgpEm^Ei6fv3nRfs$hxeOwxFiAg z&md7Vl%D3rEyE02DORS>L?z3Rl_!hw^Ep%w z-WLeBf2?R36V=Qk`UfAV*@j;}@MezagEkw1Q zuSPp(&x?QF7w-6p8uZkB)s1;{#(nK`s13JJzN6Bjr+Kx3CgMRLBYo+5qXphX!m+muHlhhS*5Dq zw^jY7YAm|retZ8nuqo1+t!A*=3O_snH#o-4`5^po)kS_zV$OGV?K+f^DCJ4nMr)qO^E#+B1hbs{+*w@J@P=)ipakCtNa)H=47i z?^d6lIiwu$OUN|&!rQiIvZ3YEk?FhjOis-;?(e*3KhZOteSbro`?>JLY4M#q;)l+< z>4fmsww!`M1bc%_epsYJHmu*Mhs2JtJ;Y!61`ZmoZG2q^0qM~EA4T)%_<}{vsRQq= zI`9^ORlDOe(|z5G{0z_V^YC&`$Scy!dHBhKMb1#>+}sp}RAi3G6U#RS`#<5+jc=zu zccYmupE`F~Ih{*0ala?+oP-TDj01{+qZ9oL(YK)8?f*8-YrYrk zbRKUjx(@F~cu=|f>M?fq|45HHPDjL=ZS|2$XpNQ%4%Rn{%@`6spf8}up}}n{#c0{u z6+ac5T;m=y$tdgzKSI%lF@sN2TdCd~sELh)q!qlHQCfvJKZKCTRW3YEJK`4R&?8v` zVi`Jbm`RO#=f!$+40F4x>ueuS+u>*X;)>d#v4T70ehvo+-l)x8DT7z#x+?-jvnufz zomD9_g|wzG(cCN72{MlOW!5zwkFKsIIXRsFbS~-qE3YUjSJU;pqNSQ$zkrSUYa927 zOaIn=WJ5Q(TG6fXi=)W)Rt`6g8aYVl3irBWQBuUvLhC|FTqs$27`^IR^{VZ z`g$wy5*us7jLqULMk7E!j-elaU&C!0+p<8@CEUKLTR#O_0RLprAXlm?Y_doC|1-9w zByFbq`C@xNLfbT4A0ojPS4tT6S9!vV@wFyHLP@xNH3c3yoW=({S3@~f-Dtljg6Q=K zA{Ab&1u`#bng->elW5&-4h(=&elL67i>Sxwa_2X0hG%>Cij!T%TRQlfthR4tNb%ze zw{M1lOChAam|2gY1gfLtsIPGc2wU#dV?h#~E%jl3(~PABkGfyBjfxH%%Qd6N(dzd_ zT2^E1nd@g0+71>u!wl8*!J$G0Fc=8beK^KIl|_CJxe&1CFjFNv8Q!j2>wo@jp4(Qt z%hGA=T+>+IU}GuqH|q|NbhD_#_!W{2)g1CPALCsBuP-?XiYO#}sen)U%>R!tVZ02Otz(M!wT|^pL#ws~ zndH>KyxJR78*uAJDUtFRjgD4?3&yvS#I4l~q5K!GzLw^!-OrJvP-5dzmWb>WRqP?N zp6Sqd}Cu`ZbZp0h2Y>@Me+_7@oeoE1+ZDV{AvdiQGkB zx+~IE_*w6y=^eR%R$!<*0tbdlx+^mNkK_4WI1AYRcxXHcCAM9+c0Aj}d8C^dUEN(V z+Dc~b0uA!q>@wCeC{&SQU=!hveqk0aWfDzkqITdSrg2g}42A2tzG>S<8Sy`^|xTBp*LAbAOb`j_tmj5P+Um}@AMp(uwmIR z#`iS#%$^>IRPeWuKVRCg|NO(Qy~~l$2VLpS1*sla=MZMRK#mm+&85a)r_I-VK7!b& zZTl~WkKYokZhW3Dx!L0le8e+2LH5ywOB)*BQ~4p(ESONiQ4&abh4oV|3*WhW#iiZR zuOkEa5_Q89c42SI2P4kX0REmFJOmM%$dOa!4>dgU5t93=Q`XHFD8$ff#yuU+ENv^& zny01!n>+;A`V?TdA7cPRV_PwWrN2ASVLm)(xXCAkf@6BPUFtIDGJ=Bht^2p}Mm9)PtVKY} ztR{$G#d=l1X}I1!X|EV`w67vY4Q)i)f2%fH*ZZ0;#P$_Cx#r1?cV=}x7QTM>FF~&( z)=ZVe;<4jNGfwhE85NAKMO(Z8LPl`0mE2#Ctl)$(>MEsQg^Q*%Pf4L{Vxt+y^+7v~ z7l-Ue9_1y{fwIRBbsKywBrl@;3lxDbkcR2(3+}y7$S9L@)E+WC_sER+sfyQ7P6&y28aRtsjga(_zd7>A%pWj~FTaKjDe`EN zEFd}2N{Se!=(a;ly`_l4CT&DHU0u$ZeqK|0E$_;IuyXY!)LTtHCpqIX!?`ZiY=46@!xRof(53>jMKCSjUSqP z(>N#4@!dPw?rAo)JZ<{7q`L9rZ!vA2F*7>YKMn}#lnJQ7V62A2z$*x8;G`{Wa9=(L ze%8kr#P<^QYE;XcbT8Yf%2c5LncXe?BIqV2FhWaNr>cF;r{$zKr#(QBFK@HRPB)X- zS4a!hCu*2bQs*TJEC}%qBs(j6P0KgK|JbIh#V3Pr3)A9^lD>M3E^NG_p|R|sF&n4_T8q3`p>;%mstWDHA>OMW|fmtH2^!x zM^yfFUSpf+chZ23Pc@j=__2Uy0K?ooj=ofL(&j#Jc);*1+>f1Cf33OXwli_)Fgt<( z9^3E4#(0wvA(}3fXBve13*MohtO?_UF3`034Z6eNI~TNV7~_jgiO&rUG-oPsUny&r zagg(Ti+bmd^~FCK9Sd&!#CSfNh+LPUzR>beGUN|4-2a1QHx;2>?wI%YH((T7AlG1K zU2jE;LM|x2e8?FnUJ+P7Umz;?%#t997UuhjYKr|>4pK<9TW;me`E-y0Y0xH5H=dRkw<^Xa}G$ zXQ%ct#8!^R3<)r`KkdKZjEC#bYH6O-O$sD7Y9bxOuQCQIN)r`$P`!u&@v%V@Q&7tR~gN=4S4@dTZ*^Mz0a7zhi~Ik$wh;7221^!@ts_jrtkVwaNOVY&)@aWfe{0} zIN;1W%0N4H0vh2XEmS-MVnKV*H#>l43j&Unx@-9yl-K8Oc*T;Yf?4#ryI%cxU_|Sm zK}IwkW!xeNKxN{8geyMCB4Z_uVXm46f!jCS=<8Su0I8w==j>k%V}BZxwe@4q5knaj<3f7w8q&t zi|Aqd(m;Y@d0wOpH{^vv@|)Q~?-!zS46*cO)z;Vb2FCkb1dXmE?*&qS z`~cWVGOb8D6(YZpWA2aTxv9*uz0_7zpJJo?$^rsEeoNpgqGpr<4J3Zcu{fmGxxZ&} zYaZVcn9z)N)OpR_p@=lg`Qxz=Yu~ANGB~JRj$G%xiu%(?XVfbWbTgfk*4|;w{?@otvXBDHKqLX>y zP3dsDwhb-5<|StBz;yH*8g&R@`b*Fxd*s*!PCnwG9BOmA7x>*TieyA)MA!={y7>NE zCApH;+{8b~>slI3Jg|+fc2+kUcC(D(ixq%80wiUav7h$o_zMq7`}mQu#{q>9N+da& z6c&jS2xlH+Bh$wR<%%DzH&Rcn+cibgD`d0DT|cGx!T0#&4aXlXi(GPYy?eVQBs(}JNcK`Bi6icivj!|J;FCGvBg~65Cn!V#9JeN93M$LpHWlY z&?i->&pqZUqcG{KFp~hazP}>Ue9os}yW9ABAMd~YEh;5UhC6vVJ@T=Et@u0IKhTx$ zjOa?bmk{qes+?qQZLzOwyyDv}^c}KCcV1$#JQG|``&3Kz!^a)jQpI3P3SnebEWwQ* z42yx%=bn0!VPhk?mA8OiwoL-+imAIUasGJeaCR+!Km?*}oK$W62KSQb<``f~ z=eeR{TM+0HND7DoF7O_TfZHz)N)>Gjh35bH-rr1;mX_yxzQ35x%x}5(+;h)8_uR7% zv8yYlm-C1lJ@m8oZ?7;urj6uW8m?bLGq8Uka37M6WD5N98`!SxAF?W(px`VVxsMp5 zQ)UBkEUL}Jn1m8zhe87&{SQ#A7>^o0`t#BlEPUJZ%EzGtwt_lIcJwIQrJN{zsSE5| z5!{f|XLZc29G}Uh$C;U2k*+%-o9CgnhV)1iW->P&czi{%Hhk_Ra4!`f^m;XeDCV5z zqh?qW`Eya0Jg5U0lgKE{j{FSzjxM;-Xgo0cXIKC|dL5Q*?Y3XyYvE98O8E2H<@5RM z^64|Ht#CALR@>)u%P01_S#3S*47>7QacI64;@_}j0@qM&F6j@F^G9mV*n^BTtz|5Y z$qH-88K^TOj85qib((T(CUk5k>J7TJzvm$Lkmd2?w?EH3IL~i5((}#MsjMaY_KVm= z>*-<0zWgn|F7m*CBb0!%RuIprn{A}>u+KGD0(QH3JjgOxC7!;hn5U1^y|xmba`P?u zNXham0BxW#Nms+Lw*Fd-Sk~a=8h0NcK&KgNt zfy>Q4fJ)@}&YCn^z4e3`ZGQIhXrd{-=sf#$y`>ye7j&Md%u+93X5Qk+RbQHXT!y}( zDc82A+GeHdU3Q`i@ui-6=h|R~>y;rz#>%CrkG~OS9D=6+WG=RsfiIWi-(+PCf#{kV08=Zw@yA~LvzzU0=XKD8tXNsd=3afgRSfOZrPa#r|Z zL#3yNA2w8aqGi%9r>0Ci9xh)oNd45khD`ac_Q=1>2uv=RW=} zq?MB0z!)ci8@B}j;X>3@Wq*D+bj>tO<8}G?m!0h0a;$Y?^M;*yTx0ovffWRPVOq_} zp~Bh?2P?VW^-PjZA|Tjj?M}XQTF>jJ#V@-jl4!Z7$lJR?^YB#9%YmLZ-0>S2YjMX8 zq*ME=C#ogaSco*schI|~_akT0;8a@TsJZSQn)H(?tx({4H#ULv%x4%(`L-S3MZ@tJ z8jhWOQKPD$RjO4{5sh`+rVeUM2mV7k5PsNhKI~~N+tEhm%Bb}*pLOEEG%)Wcd&Oz8 zM|ii)@@{!-zyy}hv9j^!m*&r_>wPToTkn?Rz=(H?x$E6xg3xC_9iMJoryuS50sFa5 zF%u_P%+XCc(>ChQ203~T`z>#aeLZ8*Zn9(Du|$7XgkS3#F{x?>8HbW!xl<|z7)a&k z(gBS%3BQ$o%cm&%H>~$se{HpXVGo}Gi7yQm)1+_(9@tQSVc)CE7jW_ZQl^1BKKn_C z#Vo~Houyie=~lC-0DP#h5o(_`T^nryVjI?I`SG|=n4qU(7=f$AUSbD;Wl@0Q&=M<${0maKk{E51G%&hz&5aFa6!-}E?vxtO6pl)fA# zg$^~VSRO2znB`H}UU`#(`pXQr744tNnvs%F+iFR27iE+AZHTY6Ifjk+GKVj7)yL!p z!q<7MKXu)s`DBiYO!~Phr|**m>SOU^tod&ec=oh;&rL=IB`s}m+O-N|_O`Q`M@)gK zDj`ZW*I86InzAD)z5@LXF7Kvpz7jqN4p4dp|3=6w7%H)+YlC$3gx-x$=uP%e013jW z$^~_Rq0Ws}H`y_sG^^X&`vpBGCDLJ;Xo zgaB&%>u03Pr_bJ*x^AvWI5kgoW9BuG35Cpb+)mAF7?|hOk3fAmFIzuicR!ibYX(f& zEc;aCAyyH=U$*~)%+aA9giZo*s|hKSUXg^(b=(KRAyp>v3EpffK%_B`<&`_p0~4yi z;S!9pIlVNT&)c}S+sDzFF>bpQzdRiuxl)>@*>WtFqZs<&wfxJ=IS=b!}Lr|n{=?Xh-?vZ>Uak_i)oj{uV5+h_NzKf%4`4Ajbt zt~B|sDr3HQ+k|ZN^(Ukj-x4@juL_o8RDl=@iLIA1G)}Crs&Kuk#xj&teFb%txms#9 zl!l-1_U;!=M#@P;b4-MFU!0jXROQakYz6FM9xIM^UdJ+R6uRXCfMFeOq8ZBFLiWde)y?GtNL=d&^$Qu zMVu$Fu@Bi>^m=_ct2f$tEx+sd-7NLA(R$vgyUHE!4=Zo0Dl3w=b-*o&ff6a&Qd*P= zwcBHI+>tS2lA>DMQd=0%HN~ zM9;yojlkL9{rnC#(HiZ=#fjq?m=`uC&RWh%=QOw@@f$&)q2jzmH2f)& z$_X{YYHOHBxe{>Tryiiem8;Ud`Us_m>cW5R`cmdBhEr6?nd@2mxJ%3~ zg|DfuO~Ni3B}d|$%Z%mA5gp3uQtVkHZfMpyW}l6pFT0M4i`V2Oj-P;zZ&?>zEkN2FB)P|4GQXmhNyjyEpk4WJ$Q z13NcO{^e?#)b#9WZ8A-A^o`g7HH-5c53*2&=kiumK=zeJqaa76U-I6_mz*}f;j|I3 zo>OgR`WSIu=Sb^mZgmn}4>i(a&Mj&}qHDMH8m;xK1>)T7^=fv$nr-rE_ZYYgn_hBg zlKqF1503Uv1}14ulnGr}EoTDS>?cfS5#Na4fhOoc6O>EVEMt(g-XdMm4;`3_p`E$n zGG-rU_TH*7I2GpxLrNJv+hE9J0DH9)cz)!_9DydhMC3Cx&3Rzt%UKx%h_o4$Hw#4< zW}&%RH)X#=rN`bkv;N>{<~lRKTg1}D5Tw9^?H!xCtYkwlcc7*{}NqbZ|9 zCOAiS&&6CmZ!o->F8+ci)#h$bt(Yt$8OG4qCA?jnLag_c?d@-KSsiFiyQ|WR#Bze0 zfiZxYxXC^~V8DmROyLC|N$}}8n93huV`_8vyJpr=qB{AgKm3~B>l(I5w|aQ8KR8_S zm13izo6C8FeBhu+yo;~Z!WOP!{KPPVOIm|ISfX@AAPJZK>@Boiiopg3rHG9pb;TZI zDst70NmT4FHS8}?XY!3n@pF=IOpCvpcXON3!UkURW#){P@2a`Oh+l+bn2h`lc*Hc3 zfS>U-#G*7)+Icnre)1ACL3AxEMdbp;0+y_w2@~Ak;B4oHyfenjJh!E%oFc_RM|eU$ zxLCV8+tkFZ9l4avRz+bXjnotL7l>CmTQT&1DR>#%iXXLq1QRe|3SqTHVabj|T>05xJ#@Wkq0)g`M zO#t51w6k_1ST0etL38+tY*Yjrm4||MRXWu*T9^3j-#LpnqJC1BIW=Z3^YverPjU8^ zyzS~1Hg@+2D@;!~`TKEIK9-*m!_Dk3stNEIbAFy4$?_No96pfEh~Frb;4uf5MlKi2 zl=>>pNeRXXqx#4^v+9tn_l<htV@0I?Ltq(k9>P;su zI%%Ynxu%nwolcDF#@K14(dlF;&z0=}LFUk9RueuDKPM~Aoz9tJA@bbEIO0zRv$-?H zUnJ9Y8JSK*%^PQD-#E>@VP23?eZmWmr@A&t2*jkw0zOVWGwr!uCK>$eI1wr@QSOlS zM2*3Z%G^1JtnvDI)JB?jWZaCkTYOl%T8;ZBNq(7@2v6wcLryQ*;}!sgaxp{a91%Ir zwo`2CbdAWCptI0O316t$Rl3CGdvBY|_s3S}FMBl3%Bwn4)ifjT!x>fgK#mwvrnt4n ze<+gXKwi1RYtyldUbY5$|3KX3L^)~a8kC;27B z|4X%;DRjzYd>uotDXN5ay&5TZI%gaVBh-d!$)7G3~kpPhV^C zPL||OE05-6X25I1MHfNqV$`N>=*ZU8kaI8g8wA!ix7-U|;)May&qsWU>+!(XBLWLM zsT9P~aj+nWXbj+RJ?o-~F4D5uVA&m*rX|alAsw9zIY^1?hc1yS`LzV|HzI_|-|bm} z*gJP{1)gyF%=tgmG~>N*RA(jR|HSuZZ>1_1YGYBA2s}{QIF-<62=mmalK1Hp;PM$f z9g4BJa)T@3PnB-U?FW#{wXm&1fOM*~t9G`^FQi=yfiobt-Rk0W`BS9)9Zz}sKBVih zl&7^dN_o04_<)o0^zruOW28J?=%hSt$Mzi_o@o2V@;$?$p9%R+!zxU=zS8(T{$jQ^ zd$e;L6&L!`^?0kJPryNE>B_>q2PDaJ*A#eHTGecR(?SROA7-Hku~6Nmg*&bJ#bQn6 zI~fe;stIHGD6;F=7&eeO;bPX+#W!awVX z#U)**zb@=7tBv2qp=E;GSn?H##lfC!@pmp6;$I4qI=M1U=^Pz-fL{aobMK71=YH1PcZcpFA5gKacYyES z?eFt$zbptd-`hRYx+IX?Ra7}mEPPi*cnB8GqiK)Bx_4WRk5e;Y-LckX7;D!}*=AVi zRIAFD_FrMSo{}h%m(WRHS*Cb1WL@sg%r?Khz1OjKam^nkA6c|xztk>!{wm9sr{l#7 z^L&|^)^fM`W^~XoJNX-9UBmxbnFhWJ3X+dVq%CJU0{;5&9P4l1jRzf-idIHRtNkKw z_F&1`I|GhMC23zv4PiS!K12UZ-c~fIWVs&mZ@~PUr+>$`(Bvy-%c3Kli_Yc**Ou=3 zNM7Nn{nhJz}L#h>4M)*}GOWSX; zchh8k^Gmrx%dPnyYgHvXNoCn<|tMVKX~ zD07lCX~*@vaWcNL4X#+mZDAU%nS<-QoQQFOy?l>BytQAJPs-3iZ)JbBhQn`B1z;5g zc4qcmOwEuioWllAC^pD66Nki(?%gDc%jJ6pkr*I8l4p4yA0Qf!RM7A8Zo%%jW1vUI zw>infQa~FM+*I$Do16sDx9Vf|Q;8K?Wc~gMK8hmIwvJ*Z%~WSAvA^-Ep(3naM{>G# zsw#L#4|BS0`A@y1+^*IErf_;~c$I9B3q_^zF%@T~ zM(s^blUSih1)3P7vB2Ak)i}`j4u7>d3ypSq#1nb9;RVNJ=Q$;goK;k$@>)jpD9Wy< zS0rCX@OSOGah56_K-xiX-^HSm9biVM+G75604e9MfCoUgZ4>kFWtw48^h@I7Rq&=xzt&#t5}S5id)O_z4l9!q(q~jc;V3GtDxIx z6Q}uaP0p%W;tdvy-PCailf2KOB$)OaXC2T;aQ2|HX4RoxtM267FuesO>DDWp?livc zH(+3XzX~I=Sn@SyZ{JMl&O!JDS8KzQvMOgk$-2pU^qlo*Cso_=ay}*xFUICJ((T)+ zh>?Dh>mw}JP0XKF&Ek(A>(nE8&iqR3yT6e;sgHW>Z!qx&wD!(Msi8V63~)wSlD@{5 zuJ^P!u3GJ>MMcB)IyF)H$H-ev_OD^FNad0|V0MIbEb>@Cv;Syxyzb$8Wjb+O*L`jF zXIT(+^LF&ojXkSEY~F=SO^zdH<9m|p zO7rA);_ZuwUY@mk<+HMmI+?xi<-%xvgLOkgiVDFijCT?fbs9Z<;r;aR994;RxR}Co zPA}UoaC%u#jIbU+h&*wYAXQY#x#Cx-i>KhiRb_zjz}Rs1tb_=IY(}Vf2JN$)I~goR z#r7QZh^?I`aQR-^1v4Sa>0QUqeDjn)xvm5#WysAzS*|a&C3fD}o7eMZD=~J1_9}fd zmK}lcuv)A}mlQOXo%uOkQo1|8O?J;fYiBEu-2x_^*WbengvF4RRIjhky&f`FC%tYG zkZMA*c8-|wHh@MhCErUqGZC*9jw_va|N8d{?{48;)6v-NXC~hMv~CN4vD-hGczdmG zJAh>yzir~}%eZabs2pGTX6U=ZoSXq$ywR?Y%=s z3OnE1`&ZVi`O?c3PT}zXx`I@7O{>NYos`>ml{0pf05p@Tt*~lC1Qtzpvr9x`WjmUh z!AGNbY?LnxWR_dZ-xB+dd8T8&8z284!{iA0Bt}-~yhKedD7IQkQnhp0)M|sN+Tv7g ziHT#?B-Ow+BGHy+_Nmn(X1ku|@KF{V+-838)G_LMW~Cz7HfTM`#Cy=~Si7w%xOZZoH5DhwX8SH`kI)!keIKxBeI;MN?hJZm6Td?( zEc9QBE!TurMO6)U*uJGq49?Gu_u!Hd<*8!T0UfqK$_-!=wmO9k3C_ixrFCt{eJ|@? z+@wu{rTcl2Cs#5iLvQ$4P&P~IgNhj3h00tYz<%Ln`b8g!cH~onNf{+nCUw|$skPfe zQotl1Dd+wg?rZu$@;Ti99VBm{P;t~@`xnknN9Sz#a;cOk9jS$yht}p)Yl;0*1mby2 zm}S~h3yM<=iH}9+j_)?MGoit>% z1i4fM#H-aJE-k49c=z`Hr}mdcp73t(rl065`3_t?sm7b!BT_PJ-trUv%9i4Ux3Z6OX&{Nlh{3>vQO{q=mt|5ut<;$9 z{TClXo##UPJ?mW8SuMpFT}jZ3A|DEjM)A@VD{U!(6!DM;Bk%;UVsE7Z>isdB@hrOR zm44>47X71f9gLPe-wO4Hpv=^=fIY>1aCAVnXxYMO5&~6gEP!RDsb%GJS&0ubk#i>{ zNZIbtsxO_jKabI?EVwJ#A!D}fq#XwN8b3nIu>B7q!ol~-<`(-*%z!{wLg`=8>$9ai z)}~PQa(Ek*i=UOW*yTo_2SlqyaxqA*$-erErMrT6?XjXf(AZ>tTC zO)o%b%1~aw_*)sLsNsl@Da;!}a2%?oER=KLfq#RCkBVtYqgh9Ia?t};F?=RN0_|CqpNHhp8F;r88dIOkd&^XK0;ayj370${>gNN;Q|yRH zS@s7Wp%%Ms;i9A-u&_cNeU!r83r$bV+fJ`-<+H7XXLIK@oTY7hMC7mjm{ z2-e`9T6;uS?aXf`a&lGCJ^gDYO#t4~JOkSrac@n6R zZ`{uEhfqi3ahI=g4RxljbN+7OcaA9}Us=oZU5;ARDwP}BgCTh^apqo%1(DMMM6uZZ zIUpM*KzV z&Ef^q@Me9v`(@yc&wb!LKH9@~yvWB5=UOI^8?$7{nlgIxxO&Di-@`X6K(xCxWj-?t zE8q1LD*%5sCh>Pfm!9Ay^{1P0ic)?K&`O9$-fFKsHPp!!v>G;R6Ye@;i_q zxOXp4cbW>-Ec<_*F@rxe`{?Wx9sW1$CJhW$eEyd3U(KZ!yt?Rtn7 z^ORxzUOquxyqzhINJ+%o0c)c(8&1iu=2R5{{8SX4;xe2<{*6*2UdwfFpG$Jx(oo6B zKH%*6~ylegYoQkSA3>I7YN1d6;&di7k zGVKi)qEKG%y+y95xtWqO{U|e)9j)!&dBnM5z{pujq91-OZsO?)IEB3A?3$6{8dU?1 zT!s?gmE3hKn5>Y0Plb2uagbq!|I(CygCWIq*LELmTy02^}ZYd(=wXR@FvlrcT{R~EA)QG^WY6D{B)-8Q=64F?+% z{c_m&8sCqC4LJTNDOZj_v~NcQXb8$2ZOaD`T~c~+Kk3wQgKC&8S*yu2&~yofC7(dZ z@@^V*9>PYE+$ljJ%4A7Q4Iq_B%W6^XN=@UZinH($99Uf7!Cj=^@2zJoAtY*z zMZFtO2m2#G#mdA?e4Ot&hzm#syQsoylQy-Slusg;^`63~X79$2I<-jN?TZ@Hv3%mS zxszJdK=;zVVjs@Bh%PlE%72}ab$Cz&S2hbb&LHyOtw1=DI|AO$h)xrIHRw`8GDNsQ zi<;_=BW8g+EU_}T>fTs??id}0j!uW&?O7UJK7q{SjgTX=^wHTPWOnC6|0J1NdjNQP z8}`?}GYoTNt63uE^cBrHV`63&ryFnfq!vPZb(5Whm;;xJ_6GZ@Tes;(9!$5&jiLgq zMu~69?k5pLzX#OLMngOJRN3EsB}Y4Fa%2-VYdxi; zG5x_Q^?2<;3*}H}wCj_(y;3I2`%E_-8}A`i&5B^^vJmM4sLX!j2)m^S4EOBIgUCa> z%p*}N5@@xTbCVkkH56?_-u=#>1faWeMX9&DVB7|Kc+=kOYQ++Zd~ zZy(Ks##htG=ion(=AF)mUlh8iRNzi7V{eZz828D! zzXPw=nsTIZcDf)3= z=q`qwT2Z1=>&y-hs$%Uh$HmEA1*z5szAgFwwEo*n{`8bnathWq4@)4dByNxC51C8Fw+^BWV{tR`^)VT0njm z_7G=tGfe3_dLQqX!T7thF2ntMxNzN!aR1-=Tr<_Xb@PjS$;irD(KLF(-`N^@4%c0m z_0+Z}5x(}lyz@`4REsY~cC-m85swzmz`}qTh)`tvDrfXprWsgMG}TZF$!nld`^xtM z)B@G&6@%QVIbXj95RYY0UJlGlS+#kYZATj3S9f4^*aLVh$d5P!J1Kl`c2M``2Gwr{ z<)JvY2Bg94b_VkjKt;0ylHZ)_h;ib}c^i&}!Wiy#m^WvwhrAa=2Ekm{ccfiY$*b(l z0BDDaOID0B6L!G_5Ig=iAkx7Yh=(!O(yS94M1PnQ95}C++kB06Ln&Ba3D!HL)?1uq zG;Prot7}EM{oD6|d~Gs3w}_l^xoH?OQ!q|f8kMP*R`^WeGfj30Te3q}HOy3EoTh4y zPE%+&5el+2)o^5*I=q@9>lx?>+b~mb*zWO;Q!oM8^$(9z$%p^tDaew2*3r>db<{bK zrve)T#2;wN^6kz&tq~RD(?%iFS0wH5?^s)teG=8Yl8-0}2$Cw=LgI#BIixan30ecg^iEoN@RLWilK|%S8`s*ndGW zXpWBDjEctiC1+l;jtu!>Tfl}NO@RDnNalaB0>&ZF(FjL*AlJF#=rn?xwx|Oz1-XOd zYbG#uhwgrLB*y;Z2gZPo|8JJ;+X05C1#p$aQI_PW@lbg*htLnb6DgEVfNkZ!gv=Zn z-~s87!BJeAj}F#^jpj4=kE85g11r0D0ZGz3qERkZ@zB+C6!JT4;S`L6Vq;d@7f zkYW!PEVA^s4oAN%Q!UN0A~VNt-?7ck3xMxPdOzGc4%V13@xKBqhe+R;2#f@6c>UW% zU`HtU??5|w0%-pl#&V#|bwC>@zeAZLQ_JpnZQ>ZsF$|_=L^(^@>IiShUeU>8$;b{7 zowHG>xXF1Zn2m3&DBq!5)lo&N@g2|XbQ%9)M-dpJVzZs2$dNbA2|L}loY%)4_y38( zijP9lj9HPUtG#_vvpHP#?L;$yG4%X!oH2|M&Hq419_OWpG6pFij=rn^Q#|YU_l<-0 zp?`^$9tzq!NDTiJTni?^^?!*nWkrY{O{N;-r|&qM-~Yil%Es2&|G{j|9badMv3VmC zE zjf3^C5nT>jS-FB;^2+Qc`F7_1Pl0yf1knC9aV!Vg%CQYxYxT$*_&>KGzIgBd71|Et zA@9h_kB+tpgf{vA6KL%x6mTRTJFaaWYl)+QS@m% zzEY1YGsXu6LYo!`;dmf+joFU6HDrioW*|apfL@PJcnMi&Hl$X9A9tVSh1X^ z93SengFklSxA3}LMwAF{s#8t+Fl9~b3EycYe2Hb1YXXTS-mTTac0Bk!Lxopa_+Xp7 zik!A(J6Pww6Gti+=7*a|lGbLQ{Rhy9Zq0`ke414)|II>jgJKeV@9((t0t(;pCJ=N< zwZFjKMi9Myjg+^|9x_{Vt=3IM&oZvGTk{JZkb5yMiS1`RZtX%t(H`E7xtd717TzRs zNikK5#~1@`jSrpqzIavTMTkD0?#eO$|625qKC2Z=v}+EUP9;^|4~n>waw&OtFhV;x z*@q`11A4lCYO<(}XOVR9Ws)wQSN446tnS%P3MbT%hqU>Xu{QCNG40LjdUnOz(otsd zuaM?fJk4d#w6=vGCl9|?Pd*X3);bCV%U6uN!|}FC9~wD-_agrFkP-BAj5*KRNyG)j z<)JQ3Yg<#ZJzE{4KF(ToQmz>cDwN#mkDwn_Ziph_3CqjN-?fW=aR96GX{d+w;G+lp z$$1$M7%5_XmWQm1v1a=**}w3KFugQ^wuwCyaTOQQTn{_4J;;wFrP8_$O@z- zdwBaF{vWn)#r$UExOCws>1mavtBRQNX8Y8!D_FLIf;}zlpyQl}GeRkZc|Q50zzaFh zx@QwsAxxX0y3I&e=xJdOqjLp{N8t%_UjM7{fU8{mV|g=a5TRMC|4mI^-rfkgQfOJa zmq6nE^5E%qr-P4b&SpPX_`Lp0uJhrG5iYW7!b%WT0#4**;E#Kg>nLG$!q`$YKPR^* zFV0_|v7!XkP(>|1S+2y1=aXwo@)EyDc8BoRF;~~(9sX#0vNA8eeQ#uPe!|67va$2- zchzCyKZt{*t(OSCYYZJnGxU|XOl}pLBL0rmZv2hR`AxJH5)r|XM4h`lV9?wmG16Sp#J2J zV|f4oNJ-B+4phl}Ijt*WHHJ~pk?_*|cS6d{j6MA-Z2QcUa;m|xQ=83vRf%Su*>&R3 z#`r}Yo}AiL0@iYo2PGJztubbbA{D zCtuH(Yna;_kinDi%>wIj>(&6u!c?@udLgwzU!4F9XtXqQ;w4zci<}GG)+HBUmO7A= zMX!`CQw~DNf zDQjTBzWA%my<`M!>U-`#mYI3&s}EQ3L9X1Wy=PKk9(4dp_%p5_t3u`ZiS4`~|HqO6 zR*Qz#-&pW2tBm|g+91liFBLTKemz#WE4kK1g$hHu@mXzTfN18Qh40%jD96hDo{G;TUTe3a1@}t;X+PuX_VCm3m#qfUfySRtR^}&u zseN`@PvvJ5q@G;udceM%xR0OMw?A?KU&4gz-u&f*5B$!#wt;K=o;!I*=%A}$ES@O2 z){~dG)bf#WDp3vHh}9+L7(QHXHTd^do$fQPjEOS^%4uNPWi=I9O|HH33X9@11|kJ2 zEV@HAZTCHO#!iA?a*;}o#~Xfo$aOp7Ro0EF0y4*1?ME#0GfmIhdj3qmjmB28v$O*s+&K%Lv~&>*-0w;2q(ErN0fSKL+C7ntb@-d1o zYqdQEj^l-*yu7_~Faioc@trTzjIemdF5@KI+OZ!rq$ZOjpvZm}MHsau=<;i>NPWQztgcC}CPP$nPPa9z0x3sIVRB@eDf`QpDGr|_c7f-Y)RqwM8 zY|)xfeguN)GwMKkfQm_@~}< zC$$%77%4@O;6CcrM-+R~p{*!X@*nc{i+h<@W5oFnEvvYaTh!op_Bzll_HOdg!dSee zOwZV$Wt*BiFfb)uK2Y{N-8Y)<7kMa#8JE9g30?Z^b3qPmlyJ<#-N))Csay&;QeC(1 z;b%m-gh-l6<+i`4mb+5R-Kkk4n}~gaRji~vC91M6SDA-k#sh>wNJ0sBB2nl1g^O6XRICamE294C6r3CNbsWEMPGYlqKE80E(0YQH<8#LH<-KF@ zvHCu80J68wqD8F*z*)(%&}UTedN*Cm9eS3l*OgWb#aE=KYuAZ+*4$lb7pZGP4J;q$ z5w?NuW~4L7uaT!K_Ew$Xil0MPza8BQ3J)a*{nqq0yW;CPno7&}v5qvWVYX9BHOYJE z(xNtd%iU%dhi1~h;0YMb$wvx)Wok;z4pJ&e=|QrBUt4;5{&~gd-Y{odd&b5F1=_C7ck=n?>3y|Mw|J8@C1_I+!(;RjC>Qm%Y~xw?)Zrm zakF;Dr{Zs%jf>xDVu88sSGEUYP??GJjprH1xv9eS{bRVk^+j+Mmgn5}l$qY(dh+N7 z;X1WJS1j{Ayg?Z6{!q$%W|mFxoJ(^fhwS(fkPV_0W%GeMj)v-pPz{K22dTZAr$ zD7!zHCC4jrI4L_aPL^y_+xDfmkE11!^|a1-I!hhWVL(ga?;vOi+8V{r7+M5`Y=-UG z2fz@1%a4&^`}+3O{ILw%;>B}#=R~UOeC-)F5hxI;>~nlYxXaY?yPUo4J#@*hxaQtqa?%F$lOiN0uiA3RenNkS@ln0&c8lU`*ktjsN z8U*}QE@CAnll}F-0v;!USBdpF9Mn}dnmM6o4oA`|Xqf~Qk8e=;@5R>ZfH=qSa_f8& zFr}CFzhWNWn>mf_Jod8BX1Dv}X}htFvI0*8&4xeZx+pKTMm|AH5#7!aXU;kt&B{8l z&9pXa>QXaC`wgx4>sMxK%)TF%Ae3iWY9w4`+!DMSKdmT7Z4c}OK%d=cr$v%O6?mhu z(ZV4r$Q&gxo|r2g47wC=6!$fEcpgE>@?zp<@6H_4QKX-F=BGN+mRB4J7tqLJ@5cR# zPFu>3s&JOszXnycS{Wq-LOiD$$E5sJ4sU-r8ttB;E;`E9-1jg=1NWE~;Yi}H;-g~t zc)6O`KRox|ibLvm+wMo`Mc0eX_0!YvjJB9*#Q|u% zm1RyVDL&JsW(>@5{|ta zCBx_9lX8(r&ZqJ<(LSrm5JC|;<;y}!Vxk#gHeS?_#S(P*zr@E_+$NVnAR{?7M;ACd zGS{>Nb%YGgdjIa=%pBk{?;RtOP?ktE!$Wy-;q5Tf9(a4yU~U|5gGa>MORpaZZzno< zJ782@L0Aw5m#xl|(hZCH{5i~!qF>Pk4rZJLN#wUyiUy*{uQr+VOWUlU4NcCsL$7Mh zp^xq^Vxi^Egdpf^h&><(Inwf4*HUN&ycO%j8Q#Oe;8?4Hr5w1QxSM3S<|g+OPm13^?rO#9{QV^#;Il+%N~RHjayLJV`)F3iBSFwC$Q86 zNKB019Ham^p@`xCj9)B4CQ%vQnGHnri1@AibkI^w@!)<21oFUJwJ*FU;pU^iIzMw# zYK^LXznMXsv5nx5QTuQEoF|!`QpX`hAzbx}ix!n@slH_&XlQP1Zh<<-Y!!TVG|^3Ig-BF@azGlM#r}p}E@Z zJI8;7t1C#3UR{y8QCW$U%PQzZB_4|vfx5y7_jx9P=g;h$UNKE*IZLlMM&ul~mrMQh zR~_@o6qh4k@1_mB?1ZhAS{-j%c`a;&8~;KpyAj|Z*y8Y$@p|%duxUlC8$6Xa_|_j| ze{+vv`?Cd(Rc|uhkJok>%JUkuc1#H7U1SP7@VMgTN~@GSYN2?m(PnquJTy7a`kAu= zgCh@T-WolWKRNs7hF5+LtQZO1RMMu-rK1;O)+-=x^h(~|GCxAHNzipR-;y^*P|}>r zx19E!+z+=Bf6F3~V&N1PZD&a|-5ctq-Kc&2o&r4ieGI#&(sjcr){1~#{c{kp%>BT@ zQRMB@+9nUzn?;Y3s@XnE0#UunWJ=PdFCfthk9zygJU$0UkZ<0t^^~`_4)9FG zK4zP7bmrje?L9#8OO~497@^8)vPQ|}*)ZD>=!&8<3Gecz-CP{Y7MiYkT1;UHTNxkd z9oe-R0hnFVv)0d;f2?1FcHb_bPq_1M_A^pVm3QmMR0AWzlcAlj79{_e-$s=&o-SqCDP=v_8X`}2!8bpFLrQci7*pik-RaKm#9J-e8w8Y zVvt%weM?Lm^Ej^U5g1lv34<;QKSiA)N_Y2bLp}IyBeG_-j#(qKjJ&btCi^_*j$veF zDUQ9kuz9!Oq37=QA|-tPZY)*MR?!Ud3(lY1^U|aqOdIDK(YO>XbJQ+IM$VAC+0%HJogeZ~XYCR-o;$ivbA$kVSbyFi>@@m-hH6C`|WP zs(V^MN?lJ*pY=c>x4UQ?B5wrcdaJ$bUI@TRS4RA&7o12D)TKCrxp@X;>CnF3@m9cvMDg1V8WbRJkuZ9EcfkP!oShATcVe}ngvg+KX7$w(>fLe}S7r&xv7 z6&Mw|ed+nWvS->;Ga9f-V@rJvxp0wg97lCsYxK}t!p@}{86*jESCU~_bOs6(Fuis`~5ATl`T2msRu!Ie+BfZf)qeZq+ zuRIv)=fj?*NMy7Z>D$b^>=sS-G+pCZ$q%*%Puc;_9-Ioddoc9xyp{|4rm;Ku1+|5A zwY#!xbaOTu!}5Er%YE5*qxKeF2D`;fC-Q+W+-uqa1EH>;7!XmFJ83)LhY?Hs_k!tk zQ&&S5Jv1G`g`%#;9{mC&=mePZZUgZn8U^h^>(x5udsw7f(K_BI8=w;6!ft!7Yy*%pckLLF`Uqyp!aZaGX zT^O_&ZAzliZ0FTT;4bp1Z^-6T4=SJfZL9%9u5=X~uJQpVDlGDzM9f!Z%gCHUe-S$1 z#~Vhxj5uQX60JZ5&aIVO!)mhe^0Ab-K^RXLvHb2=5MWFc;VK^EUNMaCwalAR6*qFl z3Al5Nh%*Xz>BXsS=_rw_5H)$rQn!VA04KGu!F~wb07V!4qsh5xe?ynFC1~GQ4!X_) zn!nAty4ax%vKv9T=$%kVT>5P-4e^Q^Z6DWq7%1!%ws@lPOwh(6j?_Sxc_ZJ}{*jjr zA>@ufqFdS=_(1_Y{;fbYA7q+EsFVk*Ea)nzB427C`D%XRZ%jjlRaX(-ZFSED8Nv0( zr2UmhEUj}>bqdjC^lKHO%Pq!7+NB@;7AA?D&PLm6e`h~GL@G|S5yLCo-xljEXMjH# zF__@&y?$4`dIA{fSKa`)4E7VKbS2t1Z(2-ME;`RFl{6XCJJG#egnNI9=*<)0uFc8W`H7BqmS+>Z; zzb@bIW8&yNVEqmG06HjwlCIS?Xc^xOsKP8`?@G#%$k(9jHcXWcjC#jkM?2O;-x zgEm5N*NPPh zWeY~3k@O6ts?32sRpl<*F_iBesw&K*lpZx8`m6H$>!pV=nomS4KL>>%4gg|UKJUiY z1QxCa)*4Uc8Z2jARce|8_LkonmYfYexFAcQ9&@aM?eI?A2~P^=5qc;E-F!|-2 zs^f@qQHTEGpmsUUyDFEfeB43%ufH|)RZ6mJ6jo^u2Uvv(Ev11~WzQekmv{M9q>FzZ zrA=j>_+mL30}k5v55dX%dX6$L@1yh zG0&3mAY0okrP^kgpOLJ(Fwo8+9Fs?c*9kEH{be)w^O*edv0j{XObc00(h06ULa^%c zt5nY;zSzOQ_}VB388rqOpK}_%fre|wkWoH{3{Kidsu=-ZYr%UB`69l@f~?cQ7o+KU zfU%a+g(Bnr?Dkxw?fD;Kk!%F1z{JvXLwS8;Q=?LT2km1VXiD|0gVUvBqt!egZI%yf zX6Pk@Eg5x-#s-Dww-)<&xWQrS&D`vYP#oN>cbXB>aryM;&~4he$wB(!BO?7Ua4wht z&f%jP$}2pw^06*g>tj`}CP%AN>!aIK*{x%T&tUBN7s0H|0^+(*9{EYuyMYT}^g8V>sec=onJybl02w5qsg_q@>^&Bl?svCrXL)S`X>) zn&AD-)X-|OKYVMJ;42)0cPOC{h#1qMQ@AuYg$8FR9uHI4W^sn;Cg(}L&`J1|1v6?t zXdk+|oZ;W`8+GRG`=X>J(M*=bKrdo3)Kxn2B#o@r3uuLe1Gc0n8$_Pn@hkdJ44(vR zvtccBTQ}5L)9n{-e1=(})*qv;aw~dooHoxfn!gal+<^N8TE79bego3_ zoe7txA^f(ak>7$Y z1zQY*yJCa82mfnybl|z(=h0Z5D90rX9V-5$19+SLU21ta`)V-*;xvGpfRvMdJdAq| z~A$PxEAwxC9^ zQfj+VzKm$zvQ6AGGJc*;1c1%YOz89)M1;?`M_zCSXZL)IS2l)v7zmReW2noaHonrb z5|1wFbT>D(GSo&h)LUPZl;vxt6fyQVw^BmtzZe2U>n7;L5wC!#Bl$>$y#_^#=8WC! z`XYS#XVTzG1`|lToJv43&+I*^nL?}%;NUDk!AhDRL$OW`)3{#vwV3=_snh$FDh^GXp|XRwk#JbFw+wPY>VxcivcYvXgc( z@B_hYO*nJ1$5H$U!JLme{V?e}KiJ}dk7sZMZ0%02OIV5rC{ZlZPvO>ki@ zm>oBaWz~+3z7a)&5P{EeTjE&b|LBIy(w>Vmlkf_)UKfSexeK30d2~VARfQjJI@qVt zTE=VN-iyIW{2%}kn1s^yeGb?8Kt5*n!cGd!^$VpmE#}%vpvtgd1@d369f7u9AV{vBBZYKHCf?v8c^{H38zD6Jyf) zYVm zSfDf0I-~Y^Ko9Id;|@Q{a)mFOlxfRx*k8sP9&DEXVQDL?*572hoZI0Wbop>n*iz1V zlBA8uF9i5g(|QiL5=}tpOYQ)@ph#=B5^&=00lc7fY|PGE3%XEYWoLE9C)B?uB}278 zYQKDgL&$KhRK0)270V3_^x}`%L(aYMubpB@$zAAqba)WOT7$VqYeJz)P~Lq$FZl|U zw4YB-~+_4K{}t z)ZkisSqTerPODk}YutEThihvR@3LB4)^$#9S;ct}|Fedhuj~4ted(tTQZk_{PXq8I zKaM{;ijlZa#m1vG;aD&+$@C#(PeP{-f3zd?C~yp0uhCnn-AM!zl)^hF(1n~eN}BAx z+{Hu$#;&Z-L-tE#Xf#D@LZCu>jFGm(Ol<(%x!ZVwZH3sQH8TOShY0 zvUhoSnCLQZZwKO=xb&5LI@^%wc5S&k1nHd_fd35Yn0=yz5X^BO#FSG-pDc8<PdioDo-0 z(WGsYK(Yj~Kuo6sxBcC7g-4+D_O;UUw(_q6Bu`J;*1)%By5_0QFCxlfR#lq)t@5Ikp|`HhK2%S;)+1C{@pz!x?&p zInIMW+CCkgYsG2?Y6(L~wFRt}qE3mLO$T?j_Sd`n7frQqz)Od!99C@rX7pb_fEg`t z<6E61)ZqU8FvXFL7;vNZz1KPfSR0H&zSmt3`L2U0y6it*$JYglG4a5|F8L-6$V1zm zd_ZsKC8itI*pU4R5O$cvqk6a8EtM4$ACMpDg*Gd!;~^yGA5NMUXvEv6vr3NWwZTi& z2|Tppp*;%FItAZ@vOg2Xb{r=88pnt;%ivLge8oV09Pqw)EAd z;sPvRI2#Fr>VOX(c~vEU_lX{U^E9nMYlmK|8n(RLWMd z)@8}uDaC}{1|?Yg9dZH;hn(<`73qO=9|)Y=))d1-ehjc!hkFPjU+}(zqv)}(UwvS- z1vCF9OwcrnfhxYer86#OpUFAky#hB;fesR#g=xLoR<5Nva=(1-rXE`Ty z6k^H@jVj_QqZ8{eID6AXr+HF%1YUpq1I)E>u=Drq*~R$FypVh}WRD={#HjgGMd$=0Ih$Kk+xJO4<+daQZrz^}7Ac7r{b9M31EAW3H7g%xArTI{7(=Sw<8B z{bN(+I$P7Mc#xo%J@@P6Xa5!y)6Hy#f$DMGA0^e`Pc;Mxd6Nyeft*kA)LJ(doDVJ^ zWMV#YgU%ytbh&^Sit5~m$*b7`ELbz z1KJh;j%b2N$rhMKkKs8O35XIIf^i+$jyhcvp5M(?Ci zHN?SIfnv?BPO96GyKtyB@5A;tC95F1@<3;Pio-nu5@J$q(0-bAKY*1-uhs_oTk!uZvhydPQ-w{e{1B zmFQTR4m7$I9v;BxyvR2+e zYt+TOoC8H4wfI?9m~>9ZNZhwx?Q9R#M}IS0`|R*H+j4IbwcKh?1zPJyrp0YDiXnj@|O+Bw=fRZo>lf|`Kz{>GaIz% z?F)%1--xIeOxL+_KKgFES&f`LrjORKWw=IkB!EUst+lFyAi-y>@?PL5mG`i)xx$ZX z+wg9>39#65crE!>f%T7dg~`47Y*r@b|0g?NVh72$JJUu!Zou?KBjK{oRfAq>soafyqy#8f&j)MXi&9{UXOoO~^p z`z~t}5vijCo)2&Tq@@--nbX<3j1ZC8sn^X8X|zM7QM()XMZn0lF*c|5tYipdqQ9ct zia+KuV!Ud;`QKiQ5ax4jAUWhRL-JZr5P0{;&x{X9gW3AI?0UX}@vt?!$HVwY3jqG9 zVPSO;sSj(H-Nrpx=$wPR=a;O0z2Yol_Y@2*`WPhuZXd8Eo5IJ zagsd#j)Zse{j$s zetD*LiEBJm08y#4`*yQe*(!C$!SVo9)AtrT6D$wz;kvnihUkVMpxNy5z&_SgDhMpUiZZ~uw~mEDMi zz|2(Z34DJ3pzeX*>6`;R{l3Tad)8RLuAX!d7l-P6DO`WZ3&YhuiAX414`#gg>+3e8 z+EM#6+|vpT*{@caVU~@yNz?kMy$EcH2||9>Nzkflgv%@R>mV0O$$DA7R~aa>$>LN| z&G?13=Ztl0-Kn*n)LJ=BIQ2%xeJmFki0j87Hki7Dx;b~?XnBX74_rA^p{5e5GG~CC z)GayWZ0{UHP8KmwK4}nBbU(4|d6f+f>qxBJ;H(#q*^zZz(2=^Cven{C1zPR@&GI=H zI-g+{&UZK{!3q9h{Rv+1=QisXES`^Zz81IM5uZ==fw{C*NABn2VXW-o>HzfkguNIS z5Tu*r4$|Ed7*$2sG>Lcj>3A=Fi`K@F{VI_f8y0%$QkSdd{WqV1J zLMY@~Pjc9WfBuvxqSlswGZP0Uy>-eR@>+pR?J!Wucp5p8-yW1e!tiKoD;qKEbkWq zV?iol4VpMsHeJdb#<;E`!0LqBvG+%S#lGO*vU_c1XGGG#zM+CVV;rMELxFeuiI7@T ztd-@x(2UEYv%a-Ie!Nn4-}qsNMoksP%LcvMr;OF(ZB1iIS^Cqb?5`6z3XCbLyRcY3 z!>?4Kg*K!~r~IIWgrxK1d}}$XL6C`w&rK?QlMkYDMqKsU@x<@?JHw%HeL>gh+*g(J zpu5$66VScey=niG3Wdd z>G)%77w3qM>fAzgnwLuI!ie-WQM>Ge%-K2wGuMbo#%+S?o9zeherwdb<`-MT+1=_?N3F8~1Cq}E}qfJN*Y)pehU}X(e^1e%YVqZTbiS^zlbJPgM(JOh#G-#VhJQruh z`-{}-@lIEEy`WLCqad>6?hf5kFlF8#GB)-K_IYE-h|p&Ze+~RK@+algV*cdNt6~yY zvUF%9lG^kwI!j%YxZ9xn~Eic6C~WQVsQf zmb;ELuzeTP&vJy@p_S^AT=uNpi9Q!Xpe%*os$@^+wGy~R_8<)bjTc-DDKQd-n*{0zc7)fu#( zOL9ayQCA!hZAeP5D*K33>5OR#$I%Q8cB(wp_jl5=vA)A)sj(*RVWRUBVcx>o-M?Yi zS3q48V=lLUCpfgANI$`tY15Af)NqxNWVuleQd4dt%#xj?L17no5VzoJf`6Icy7^vB z5k6F#?$Z|}l;8fA25E)m+pt1A>Uff_+*wJV+4GwYZr073ekiekxQ!kWt}|M&>Z|l6 zCRH}LuyRJ^R>xV?hpRxV{cW~k_|5XMgj%`tstGMv<7p!Z=3Q2yop=~%_5dIRdyGRY zpM;7;DYZylC_LdjaHWq(USqq&hUe}58Y^J5y20ZA3y|PZ)5SWk2ATV}(-^gYBLwKU zjd7e8z@mpKs4_B8*x1NjJyzpQzI5;=No{t)qr6oU@~{BsE5>9xAN}(=;kq+3S-*&J zf6@18+sK_hYXAHZo+gVI`ZKR}{Jwb}U@1trzL%dVc;91iTaYr%x*pcHrN43Wt8Y6G z%igKM$1kzg6*_YK>ZS)mJ+T7}`4#1C2E4q(Ezifj8Nz z!~?T+1cHag`0CQK+uaO6mU%9n(1AeJx>2y%$A(3>N^fW@|7`Z1a_p57_>9q zzPrS{>Nu|FrGr;E*|7=-jUmvxB?=L_nq-D)@_4s2U4rG`{yi~Cz7y|)oaGHM5O%dp$76M3|!Yx>L&C60-9 z&P3c=1tGE)91+%?%YU-rl^+9e)1C|_`e5%a0{hlk=m zBflB9m`G80DDe-or>q66wP=GX-^Y`2{^Y&i1M>Ljbw2u?kB!d9X6NHJeJte-5+U*z zBw7lv`BovVj!7+2VFhQvspIxN$Qv4%O9NZsMBFv-aydKirhliQ@mJC$t7BubJ|=_) zpesH+mUkc@7V9A~$7%mvJ`Rc=9_QUMm4q=*eP9~lC%5Wj_EYg=k^2M4{XYQ2hK%CN zrN3_ouXY0)9dG3Yh`ocG0pMOMvV$;WIMwad_w`<^3<2@a) zh9BPZAJcp|uADmXGw+sTy<46c_@w%sV|q_a9f;;f>Uy6^{MOt=lr`7ATlx)fkH?#= zXCL05Yk{)Hw6J5K$F#6P|I)&|{CRb_Ogk-@i{35M#)s#7AnzOO&OfyuywPZDKF$aN z9G)1W1~4`@+)TjaN_M~^G!c%Cz^eDf(*El$&r@=Ws#Q_I6YXB=zrr^#Z^RcP<6|NL zCBv?JMQD7Lu?yeWimY#J(7SOG%xz?YaHPBI+!7MAlyIx7sbixQ`P&`iyXl=3VR$ZO zs-4Vlycdxu)`Q=%#1L}Uru273Bd&LhS>H%6|2_w?T*nFD{}ER|L3Qas{ukKYr@?s&^sT6+hR{FKV6H@blqqT^>Z?%&whn3$gi;6DEpgp z0(W6k@xka-{MxgI97R-{+S0j?*D0?k@wwF;+jUl59kLTcA>+Xf1@f2Bunxq(uBAY` z0o%g)->aB8V$9BCM2nnQL{lPplLO3(hh6{_$J9wg#{RGBBwm?x>LfP15DfHuoOgTx z6gR4W+iLtT0m;~$(tGIQ13jnFTe}{U6#n@KvOUQQtXoA7VWU~n=`G0oc_r#h$}bpZMN9PW&VuE_1gQ552kCia%@&|xsDe<@xcFl-`LxV$KHk`yTZen2Jap6RJb0>;~l1* zH%8xxH@bVw4Bx6W!XN$4Khp0HCIaYh7xFW11J6&`b>SMr8%qT)+r+}fqK2z)@YwZXnt8Ag|dm>Y~Ep*32* zwITa&zs$@nQ!zSv)D-Cra1{z6HTEIThcocSN&4tm7QuK?$T|^U(jnBD^U6LxD}GV* z4HVwBPHbH%if0tt3xn2M_Jv}V8G=wUxlAc8Ch-9e>=`}P(QLm(-8Ljf;{(hClk|W{ z0gFdw5W-Xp1jJ!cfHTcYSv6oB==qT#N$k*x_KYKwn+!AH7xc(FF^2sa+`nwxoJ>8( z%n}Nl-5nINhktP_s6Om;mFXrcg9#b`@k}=WfMKf`9Lv#lB>*OtLGc-*i=2V3I?}ZU zDhrrrv;=6Td6Eo7V^vK+@N3Om94~dqMSM zWzr6e%OqkJqy{|AP{lWXKGx5X2s2W#IOd8OAA}c-pCrR_Qsdi_K+k;f_-u0aB@(`) z3h;@aUfPj^8nVfH-ad(Z@RJaiN}feJEMMjiY*@xBr~WNMC!$SNiHf^Cowo=Ui9_kw z7u6@z;$?w}}hYXAmVS>s9y0@>+BF7CiJ#I1>N1pf=%X*0PZ{F#sl zkbNnB8Y%zuOvoI2>FAI#kr`TnWh4=t-awMrLA!!PI4~z%56+K%9I@pm;sXC>&fGw+ z2*Texxid7m-JA~S!ej2_?lKzjsnNTPMx3&eeJ{}CsK5FBg_4Ae?#5Ui$`Dd_aup1( zj>(DFIlj3YdzT0lQ@37##@od`ejSKc)o`0!9Hz5Y0kU>W~}G`o|KjmU&*+VqPk zIC8ISqlJI%>SO0!O-T=Nl9e58(OgYmhRVd+-NIi0NR3gIb2LuKR4G0h2nW_SU;`z0nM@`r|iY9&L^2~&lW%b6f2^W3v zTFMvD*}x1%#=rNirJ3-t*vynDEq3a0c~?y_>j~p60EZ_>!Akn&L`#j_Jj@7+AdUmPH{(qdEOP*ND3?BqvuJexJMx5|No!e$T zk6p}Q$$@gn>xQ?rQMXWw!8yL}V0KmI;a>z&ySX7E)bo^DjK|iaHY3v;$Bg{!(s9!Z z^dMe1WJnnMUo4=sh=0cd9z}(PkFc{jzjrYf!3vDUf;Wb-h>Wxd<_zg%8M0p@N=xX< z=~5HDj+137CnbkIoPE8}6qwPRSVXyeRy0eXtkc22_~4$7tW&nneo`x6q05Ef0a~U8 z`?L|AyM^K*OgaHbzE4W)|NNDa1UTzK3NRvmEJln2*)4S$kQIx58Nw;bEszy|FwSEc zIs!5oW5#g)2v)c!vMW^;GV%;M04&4wj{(cD$LL*nX(70+d6Q+`?lKNZ;>OG3lld1` z@0cUFbnW%yiPzECes}HInWQ6_S)J(?L7o+LiXhL-9Kk1LxcZSe%W}Mm$S{&e7}aB# zjUi8&yNxppyGymq0S3F?HCd^d7lo2lUy@R>%ngte!y0T-fSu1i{iu$+bI?%8UF%o{&rJk3P=oH93N{Gq2vl<4FZaDuW+I z#7E{InZT$2HxoEAcxa|Gcz4jpL}tTY#C>JUrpKq2f5&KVCbin1L^&t2hE3~WrMs18 zp;}37QVTZHRDMX680ekIH*{8_wS#Lvi4=3>^gS921DTm2?|kMTmv@ekpISH8e-Q>( zR}t3krZGW?Cmn|*RczrV@8F`VJF>`}f5rm{s1uozW0`y4&+MM%)YXt}a{?OZ(FqTF zc6>8xtXjpr+dEG*_O9-Y_h5PO#3m>o#NS|^ic7YyJN&{$o?zgC%flj?*&JSh-h%+; z;J^xGP)F-~aKKZb?}{QNLlU~+@93M<>4BcF@U^2db*G8M#%0xRC9vJNk*!QR*{&E? zYJKG2XvcA>ELHdMHTkW`ZUG_r*>rg!qD;rRtL_KaR~V4whnTGW1= zAcWEL4h&Srium=NpT3hmFh5*?=R?%~1-DjO&Ebt%7(!Og-nlZdgPKIm;i37nCTQrl z$p57>W7v;6)oP2QP7&Qg%j9RK{F#%jd7}(AW-V~6aYr%oX+V#LzawM+XgiMP-mSrF zO?lyGQ-TL~=WJsZ(J9`aPYEW?CDP}ZU$lFb^zo(#2c*+8$+;)G_qcrQ2>#FiYT1|H z{r_~?cUFABvJbESN0@NE(ciCqiZ`nsb`~P;4 zOEwSB4{6&c=NFhA&OU*r7boXORzeT`$>x0OnSjTqWr52%Bdh)dDS3Y6T7B#uxtfm# z`ialjz8cm*B@}E;}3YWGvFw324}gC;#Y(TUvam8z693hD#RPF?Z+a4 zp9o{#%av+a;y&%xWJ?%5Y^M1u>C2nfOd4fg+sV0o2(BRAU(|586X)s zg%onF_Raqckld0689)J~6OJlrpj3;uwJN?3ST6gspVQp1lT8 z7$bUE%PMEXj23`QQ(59SS}l1 zw&~AxSj{9N!&?>IBTC_nGL@cS+3CsQF)qLQm|kAK%a~@BJB&lxO=osQtsj~@t|Oyc zJ~rXp8UhB(7b#6}uU}l0Qhb0yGznTo^|HUt3iaZAO&Fo^~9n?r0$B<8i%gAz1uNvWfDi?pEpYj{7b!$+iZDy0745&Kd_dE$yPOn?)&AUzr?hu1Yy9 zld+TPa^4YOjiu@{5{xj#WCd%^Se=gP|F2&&{m(J|n?*l@HfLvg1#QMyQ_!YLZooLr ziu_3Pk#C=M3p=|LBIhJsc%>ZTUkm1YA^J~zmV4w~n4mT$@4~Omm3;e+o4L}aybFgf zVt3an@50@>XYww5m2YTD;JfFzc^788c^6JOUfu=wP-(NjU22Z8BZrI$w>)IkR+YSF zy?)WZPWjuzv56O5f7Z7eCL zICM>*_iA0$v=%1T6nSE&mu#mBM)CD0DUN7f6~mKTO{UyXbrE$1sy$pSuqxkoQ!hWs zp1WA!@NL}KPS8_UgPnD|aYeLt^NuFm9jygR6e40ah;QBD$v7m%PvpsoxCc&fo+akj z^PrNvkc(<`!p1b;W)CE*m+AZkvbc1<7u30=Y5&c9Kt=Fvdi<@djNo4c&B-%YYLoXmwm--+lZr)chng} z)Jdgw0?r6WYqZ!2nO7O7SH<_s<+ij{$wStV0e*LUR{KUc9qUby^xr@FcG?JbjMecm zEgUp1AQe_iCC6AqOx9adJe~=j?lq@o<0m6JYo){*i|TSjCm+@iYo3?p74m3Qw3sh& zf8!Jygg3sxtB9EQ4D-e(jQ_Rxk3jD{=~Sz|&_#vTbo%z^45S+NS;IV}qo__P=e17a>JsPm_uI5v&n(F<5 zd4yjR08fC=mkyexBr(f`O=hzxKY&zOuz|EKN+OU*3aYM1E~rd?RaiMx9nOMA!KQib z^WP+PZ!-xx2nvO??zQKVU68()TSEk@arl^h!}cVNwJKJQCzn+be+x1DB(Uf%1J|m% z*FftI&#~8`;!IzXS}@hVrkF7spSrtvub7|aRCN|v0+t7x?P0=iGNaUplT@u(!Vc*G|w38yu1YnO&qJG0U z1{b4$#DlJ87GY#KBrJK;O!UgpX<8*sjq&9>3KL=k%W7uDW;Q^!hwOzIi6K@z=`rV> z)rB{I)$Bu@%ahT$yOdf)Ekk7JQ38n|uedCJ63lPk52ZwCp%EA4$fJd#Qi-{1G{!br ze%vO8PG$Z{S2}T;ncql;3^=dchsvf>4CR}dH#;p7HU4y)b#c6!xG*&|3I7_>yR>K0 zXq+A}7X4Y#2llfp*Uz+Wlb$A-o4);JeVS^1%LiNSmLdbT<%8CuQXxqxl2s}3p=q+_ ze?Ayx@bMFpi%P8lH#In!tAAX`+9j_ICj0fpdJ-hwwd{TIm95sjx;@;jfAt@rj9K0C zp=7xJUu5;wT}{9>6Fbn{(w2B4okbO*Wx;=ZMp-{UGNV!Sqlr0YM%EknA^v3fRad$z z)@B`|66j2a=}4@tKm{ldUBXJsZ!GJoxx=chuy6{Oug5>6vI{w{tBKxN*7<97a>+6= z2Xu30^fq@5Zgbb*cC!XPcMZ&nEGMhP(`UPDkXd_uiXXC;mr-mlSzDI!_Iep?OM_nU zq`d-Mx3-nM##(de_@hq*djAi%qkFq*)WG{gV14`y3dhTXFr~p>#0Z3}bXXl7bqXT? zqkZHZ>4QP=bQv%xb@OYGXT!iCa=fHa!?k6M-jiHZA#&scB9ELkHlAZ|YF{N+eZ!md ze&Z^hFb@b`4BrWGq3kZ46a;`>2}@#s@-V#i!~4O)#MXRiw>I-GtF6k4dw%Wa@Hq{g zN6E9~@R`YGB8p%BCd%V8Us3#fOdg+b_o6d`t?pp#OB@Q?U@O}aRY(W^gi1hlp+Z*p zF3v_$A?orPobMXvaM9ZTbAe=69CUZN-mrT8^-2~*|rwPYV*o{;Qp~+;S zUqth-{0I2D2EXkNlh9EW!6+g|Y-ZdB#SNF{gxrnRyHO5R8a%*t%P=v_1k?!hFTNeu|30zHGG>!p#KuLP-|>`j9=Yrlz*szZ=l6g^e1y}dx1W3a+9}d(y80^tFgWEF^<#U z*)Lth=&px{^;u8AS_SPF;l&IOlz&WOE9>ibX((6f#0)kynuMTkdIf(r>A%$9AMGt8 zAOI{|Vr#gm#eVt2^u8Ra%?Eurm4pe2+c=4LD`CR3nTWT0l76jb_Z}nlY@KTs*q0v)xp2sE&-(CILqei(XJ&uzLeeGE=%l85zW+I1{P>bQ3 z=Qi6>M=EldXa67yLRYiH+`h=GG&e_})?-7Sn~j{^;FZFu#TuI1tn~f%o5rx=hI#o1 z$&AF(e^5%S=Ef9x{a#uka;ZblKU6&{D>DFVVzQ=T_%xm>Y!Ko=_m~(+Lf@0O z3P+Q-YD;7S<*YC18YL~KS;3_FE|z|snhdJI_?*Ax6eoY7pU#0oeiwrW6yvBXL!nzC zVWY@o3Mq2(URwVtkpb;jfyQI!8SSxr5oOr=rw2n^1i>Q0M;Jj9rd`a~a!LO}URA~I z)`+_-Al~=0-sJ7lp&>Mw2zUx~w<&vBSwmxUny@A)8~qj}4o!@oj^;ay9E7}veSHAe zbztSn@FK7IgS`Ed+|IY2;qd)13~I2g{a&_;eeHz|1y?m5Xl+hr+YdSqkF4j-4NijA z8mCDCOIp>`oXoPnN*lUBE)BLe+qbz-i2t`P5wWe;w`xyvqLUx7%b)nQQ3l3TN2}Os zB!XzCw&^qWXgNL6EpMmaQ;D`j8Y&pcQwKPsSk0wG5GHQ%Q%$r~Dn$V`u)*eEehHZ5 z5fVohLZ%`VO)tMs7oV~ltKL?muie(}c^uopDq@E>;XuIt1ps;dwYkKfMJozo7x2_; zfep$%W2HMLra~7twflI&zGJMlzrX6@i8Rln`NW#&o1MEyoA_9>pk#Yl{l&RFLV~-* zKyJ!=Ui8tmv#b$o%bdR&du4yv*OyDbjL9f9>)Wzcy#;OeaDqInfQ8`n9+WCFs2A48vCl zhu96n2?KcU87vr=pW;9@M_Zd!2E2oTo@X`vYB8UI^0GkB6qKM;#P2!LXltQSLwWv1w5ih;N){6T(jTz;) zwg(00)tI48T2*jBsl=3H%M!+;d1&-CHE4?!w6NU849a8QB=J$Gf#9WRsA=k|*+JBE z=!#yNTkJPZH{UY-(W|L$YHg4Ux;4=JjbCFW_Z)nitzVgu!P#Qy(m(!esVVm4T_NPz1h~p7fsRV;p#2as=MPF1!<)@_Cgf^)rDTaZgE( zvI&F&_d2T@I1KLHBD3pC>xGvPCsaO7R-1;u_Ha3tk zE)Q8*aNZm*wbqtePa!DGDL*eZ1zj*+)NeY^!Bb3i^5K?WzzVM=JUsrUeFq$mb3a3k zGx|R1RS`SM2EEj{mizGv883hSOgI}IjbGf{F#|E}2bB!>29XFnjm8OP?LTYD^0c?_ zL|-?ZuaTN6MF%#?FSn#nB&i0V(2O=19^TYDhmV0bVTC6rEkQrS?*_ zQ5GIoY)$-Hn*yopPy9=k>++vytF#6-z=6PXrmck8a-~0{M=*6d@~pg&{FA}6T>1xr zCG!5`^5J-iSMuQ}Pc^%tI%)>cdE0X5%_Rqj#wc-9!_09_!LyGs1^-H8PX0DA|r^1FtXUmCO*zz@ekf z?D6ihyW)SfDhs0nG228yzJv;eA2Zzi+)`$QjWUHNU$<8KtdEp0sEhrEKE&7-SXbmX z*fX`OI8IR0#r{PH+)1Ok&hvr$gZ=%A+3xchR{5_y6X9qI;R0C)?ZEQi*e3N0>7LNm zwvxi^rc=x=6erTG6IK|o!HNI$htjS%H*R4(FR@jtCuur>HTATQ}&4^QfI@#bBy-{#LeMuF5 zt6C>Red$|u#kERVxkHuW&y62M5tIo2J2K;gEixL8Y~o8cb?=V3<3~dE34VMB9s`-YO$^*)kblk@0ax1X85lI)zh*# ztQL3>1PYoZMEm-yr~NQUQTsLiHv3^mdgaCK4B#5q7Pr*3#VtObEpD{-hXt|u=IOO# zPoK@x@6Vv_=qx9u9i8Q-41=~i-+=P+#G{4C(J2y6hyxBSx8{Zu0|nr&^05~I=|WeH zQsAml@{gCMRDwExFb&?3E_!zMb>?3TQRTIvme#=fuM52baB`mu<99(aNc$d^G+B#+ zG=9>7Dq;v@lc^{9cB27O@^eHAFS`o;ASv#W3a!i8)zs2pzlw`Vs#eEO)Q(N&0JF?w zd=~v2h@HxyPjUx6)g3fZMH^n=-J^cjL7T<4wrzZZ5gvST;FSqV5lzDAHjOIf-$5O~ zWLu~o4dk-qNqvpek~f8h=PFZt+R)ZU$vj}AQ)NMa+~N1Q8>WhOZoY+DRcP|-PXAu=ZjrV8o82P zBmeqiuSe}k%Gu{ldtCB4mj8@;_fAHcc%B|}vA_G`yAUjIAP2V3rjQ6E&TI3r7#eK3aZpmuh3U^h~ezlN=6zeOu*4CqYW}##%N;VlWiF zxN|Q64(2W8_<`JT+jLLr+d+|1$j-HkUlBSEwL@{2fB&SNTZO!YKlK`z($TRxuFC=PwL< zQ(Qi)tBCJ}NJ%sAr>-2(C1`$Zev+#~^Od9xs37b_l=S23>srGJ(?=kV?D}&qLCUj z_BUyfM+@=Hd9-4A!g>1yfx1v*Tize+o7CVBz?-Y{I3N_ME_5NvAC@Z6OV~~ttv+@3yvLjiEGlXdUq8vFy~&0CiUnWr6)h;u_AcnlJvJLN^2MRL zc&;;g=EB!*cFJI??!Jv2P@ZRA2s~ieoD905-!$^KH7~U8nn)xaU`EKqH-{w@gL;yC zaAkwp0Iq|nOXYVc*Oy3nE%As(W+plFqVQ~NaJcLZ|fJ`nl zOcUjS6lgL4b@`80JgXCb$y$wqq1iqJ8G{z{`=)(IGLbn?BwkgnT}Oqsj~5nN9&Fvg z#ui>$*uX{|0+S2vM@<$?gfhwrv5*isaLu}z^uKondS3?*F{hqh`EI)66M^2B^ixlB z?KQ4}HhS(cF85bXsK_Ey+EpYwuE-AbKEO481bTj^XP_PBf%`vVi07(EXx+O#tVtZx z{^w>Zhx593d-b~lcoqg8SroQzeVnK4oBzcWww0Z6IprIhxPaxWMvzEs4Gn?-y3_jpJK!Cf6}8Erp84#)`0Iv%F`$Qf9znTu%lRgO z(yL@UOO$2DUsk!Zx)2+t{4Tc3pa|K@#7kK#CpBcRv@R`x@X*R@N|iUKVoD z%Y_$DGR2LPjhcGO1X$!8;$}VC==wDl95e!R0dhqf^E3levsDEBbsa(5@C} zPG7su7+}c!9(_L0Q-n&Yd(kvy+q1I85|YN1r#q?|kO-RL^pn@)Ywz&T&Ee$rzU1|O z`xUapVKQ(w*y`z=8?DXMzoRR6&%MTCgu8E+v&UnY6Xou59l1LF)-B!my(Xw@&P+ zCLcZolfN=MO%gUTeP~{zS*uT!JPDy|CI^V*73cCzuK~EQigm|7mFNn2NU6$f3c8k% zT!f=j#7uFG1=iHS{n=;@^25ta5>f=ts=~_33Nt5=wlHpdlv|4mJwHP{`w6q|3JCa|y zhEKGKoAF80p-tn8mC1P`@C|u%lmNG^MQ7*}nxeG2r@>dPJZ zvu0W)$1A!WFIvtCCxcju~FLcmC@T?;N!+~9WfecMJ!+XwwJk< zG;Rr&aSVyxZgZvUilq4*Z5&I#^<6F>Cx|Bn&YS*if9?mR-vWa$bEHYXr9vn&JJ0H% z9zdIY_%nv)L2rg8)~!so%^I#P0){%XOD#N~rb(@{K@!fLc1N#tb1nI>=at?XUM*0G*mIjIfCGNighf3*8Aq6?_WN((kK z@gkIe5tP57fNN0ywgO69aL9G!*aM{AfSSTSaFVq(+UIGEwTcW_lJW#XV|rHe01RIlE~ThD&Z}1Pu#x$k?mVxpK8qDYdbpvAOvb5hr}fN^2pkyAdOI zSX)*`w?W^?QUq(*Xn*N%%nuQo36haV2lfp}mZ#_{2fePIDuOr>(lb9y$|80nj46@5 zKHjGnH47H`txd`K`SyO3r^I)lCR>N3IY44_0*~BKpeFX$xI2l?@VpI%kzn8gZD0j zwp8Tp2=p2Xx6sD{@1$6W#80*w^OMcKz$2H2lb8GL-ES~ON!g^8?cGJLaJuQf&}AeO zxA;7rS8K!JG5O>?aYYmWA|Ly{*i^1OXBf&%l#f9av9H!HsTTvV6mH#n#*L_p4I?yYpNpuIS zCPE}*5tWMEL0_d#dd~<#v+H9X(h>XOk3FTo@HLYU7FSJ1oJ za|>QGfJ9$OYOl5i`(fGo*mID+v~~(QjZ~N{&%pP7I-nNTPN7M0Vzc224rxC{0_)G@ z5ChEFqi0l9kw_XN4NT7hOo@&59I;D~-j7R_s%7C;_i6!1CP-D(6QPv@XmOJwV{j%K zvRi>Mcp!3rmvD~Uz>G+-OV?544BD({t_J&VgB%837)M#WhML3H7NROp$qZ<;3#w;{w#&4L0z#HqpXI)NJ8xg~{`D?%-+sZ^+pluoKDORZUF8b}h3 zb1R$PFgegfVpfVRloK#!tqtsvGP{7BE&!s;&?k6E${xYO*ps-N;bm9}_~G6cS+s@* z$iufUJ`R-1CLFy+hputfNKiWeSSX#3RbV=L*z4I7*!x!T!AnMGbAFy|n78CD{*}G8 zI@h+XoOF3MNkEd#A^X0MWfpX@(yt($LTXL4i`dmV>Vff5nrtA=dp>bBh7^+3mqf>P z-iIm~{z_tN9LS^G^;*pZ8B&$xXuO>CDG_>97Kr*u&H0n&hcoI%{9rTXF7`>8ioKz0 zCaQ(hzeVWPgFdxwygv2dPJ=|DXyL(K)*sfCrego@$vKd7fYF)U>Rz1H!LbJWUzx`2 z;n~k{&{QXeLNJZW01}Fx)%jb;&Xm#2+LK`ZM}L4kXgI@+;n9@}9e&aLwq9bBUWWm0;~O5bh3sh2A@^>4XZ5}{emx^lX#NFDdag48&{lUU547_ z8>15`3if2WghCq&!qF$=pFj_@6%Pa$s8(9$2kxKeFBy&^adi2k04LC^{0kf*e1|HA z&~4_U1X!b*4zl`5us3-sD$u}Q37g7Rk{*lOBKo1xT=li4oTdfy%K>U&{Uivcrp=`) zlc_wcctd%lgm_~?=g9`Pz!-@;e^A4Ze%wov^tVQz=w3@WLIG2apThNGEnlVUI{!yB zljhwq3G_x>&mS*bvqpRDJ)8GV*!|+>xv?pG_wc_z?Az?hqckF&fcPHF3x_7s^yL-^#uhzZ#8*OTegX6PBy(%in;ZKjExMX{D5Yim! znl6--f9LtJ@(ez*>PAm0^TUnC{NQ~O_!RO$L3Cdr@hAG+L(=(tXMm#)5D-zm{$;Ot zHKUgv9oX}iJ=-1iXn8BFn>ir3DQrEsb9PO^!KY_0jLfbM&3;VUL9`@B)3i>qne`<} zW)PDg%nLZ~e+!cq=DLXL?&2{nV|tLWvrAu@wklewUe`@=nvZax@^N9AL$ z1CD!l6Wh9X565BM-re?xQPr?GOP;?{~u&_`}pLWZH-K680) zaQ7en_=3B-+ga6HAa0_P_w1nm@ZKwed$uPV3-(@-pPU;}6pSaB{5-W8 zgftTAw7k;ceQ_RpWAAR4k~steeWd!3XkO`PCJV9Li%_5n?xI9*KE-m%8xO^E4`i*2 zXU$Ix6e9G+UsD5sUh3Fha9${~&O?`V0HK(iZo=5?YRsl zpX$V5ouwqQGP9*(Zxw5dn9m!W7@bb$(EYF@*Ig8NAoT)MB1iT4)_=&Ph{O}IW~O^3 z)LG`=Xs^V%$6GoYjmafr6YN&Pp8i@F>eAtjxXjZ;;-<~Tj}w4Ghq>$GO#jo z-fPHtcx5^YpT{*4h>HnIpS%oaelZ2 z6S|)&nO&7QU#D*Jj_I4~4oUutUY;MHalo?(*S-y@vhc?V=LH_QGMrrcsE5ev{>791eTyIUV)aJ3+KH0cp=_bS zBdN1T#G#dJ9y!CIjD_uW-$k4FgyUh6p=O~${3E1-#bzMhhz$3oM7j;4XAd~xKy&Jc#I+|5oqS`SabXOoon?@l)I@weU*!HUOK{y+ zR1@S2)o~=qv!1Ss)DjYx5yW7ho9tK2p=T^_-{8#*nz|9Ebwv}KeR?za8Y&Mz-E|6v z4$>b$nvwRFZp)vvtiY<@7M`>)g3gq4~)XqiO zw!9#gyY2*DmZh505)l@_!$QV^s6V-kY_>j*hD_3~?G)iiY|SumE}xY7P${#-3$G+L zpPtN;N6@-g@1S33I1p&Iz7@GgQ<|S|%rlfrZ?k?A(IJ$aXadb}0rOL>6sLk@EsB)L z-sQpm%V${EmmYXJaQ{H!1;suRzp^cdHEdvGN&H_LeKU6I9$SRaIV!kUmVV0ID;>Fw z&O1tVDz!A(k6hvAXW_9<{;nZvj0NkyWu^qT23jrF9Vj?sYCd4Nudm`)U z3+o9vHvE|J$!%vcPcN>V7x3({$uGWY-22n}(u|{&vLGI8KlvD)UqhQv@@zTKgtImb z<0{yxRfz0ZuV^bjKlvnAT;n`b&-J>%hDZ6uTJ4sI&&h3tf5-xrT22O`Mr*yvB&6&V zWeu5&cBu&tlBcxS98hZ_59k=?mV+H`b>NVZwP;8 z`$b$_u!3~BV9`*NZzscux;qyrK&=8&k!JdQ$qB{CnZ(#ib z7RLbxRUr5$7ibZ*FV>6Gu##s0Nihw#(L&&Ao09`33wuE<;kx z_tVXHY9cMl$GyavZP1gMCr`|DX71c67`tPB7vOK@;P%mA;ME(|@8;Om2M0YKKUS5) z{MKmq?gk6n_wH^aV9QxwOlcWVv;vCH88re2W}xR`Jwq8Ar}I6w_T8TCAL45E6i-2R zR^D!*n2Gfb^e7#(tc51m;QGi<_3TZB*3;I!A}xm533D-WcAaZoAtF;r$>zhCteI(; zcKFpl-{$ok+<9=<>_exMvo0~{#gI{%72lKB$rf@Z8Lx7n(CrzW*WH!x3G_?{12Qw5 z$oF-R@mdq?G;#>OX^%a&Tk3`RBihfbK%IUFXBb(P<^PfObO!4xpJimdyVm4BH(@8# z#1Za44iKvLY_@{C2dpg&y@*D*K4ls`zsE3rH;)o}~!xSc5SRbI;!0qbI>%?%1o1*91g3dJ0m<@LX(F7<`oI*dLr3J~hNb=F(n zR#Rs8G%9q^@lrtVP)&*X&{9P=lS(t~;;Tpyj9NZ>?%%XPlbwPpSsWbrJb1D*JK4dm zHX*RkJcGR%gw~ErN?{4PAn1y>9+p5X$J;R72aneRb2=#H62_#;L+lO?rFJ;%(DY-fgkRmh*gu|1%!DA@Vi1S%+ED#(S@Z z3!P%6%W~oq7gf*iO|N}3klX=x5M!_}rffw23;~r4w=z|+|e%LLfHMTyB zkpT4|ugP!eK$mL=oLMAp0WZ~Gn%~$C((_9#{tpURx0G4u$!wmp*=~B{Ep94Ww4Dt> zC`2>Lpq+=3=Nc0%G@h}xbX3?6H5t&1&ZGmyzWd?US~|k^mm76m-aC;d7)>?rxYRD9 zHD4uzGUr*xOhMb~jp6yF2KNZ@8$Z8{{3r3YP(hjvLDw@yjC-}L6cITm$~|2i0Mp6Y zkuxA=L$bP#L=G`n0qBu^Ej3GsxHSH~xdP5;Wp~sQ%QN;sH{Nd0=zmjnvbNXRCko#c z3>M(sbq#3$dapMsLT4kRR9fIsH6R#vkb;YKYfqtNy-=GHJt%2}9qggOJHQ$#>4;76 zS>a!5paNut(SKEG6BO$(t<%Ar^(^zZxyyRzt8DZSoWornW@S11T3Z_J4e+woPF7iq z9{qiw=Zip2ggYxm!ah-$VeqZ77TxH#pQ_ae|4E(xRy9E}9?L{VP2El@` zQR01DEJ_{v2VTr=O~tYbs61E*gxXRSPjJsO=de|Os328!NDM?hR_H?me?1AQ{Lfmh zGQ;o6txy<8d>))gwNO^AfmlvCk-|ebyQoH>pAI zO;<1GW#nxs(|}WRv!h!Wo$MHOjIeO6Kj+Y#ok^Ovl##svXZ@SAa(3!YvZcJ+mp4-LmoAlqo?0bLzQ(HiI%raGr)r9zduW|pYx z4#|MhBI1N;`L}_VZ4E8F?;5-CGDE>>x->c*TLi&CnO}!TLV0bFi!0az)%6AkRqZ0G|;3JMQ(9y%Dm{)W>yNANtD*!&)YTw=}5C*hfsT5c)Jx`Oh>Z`-Gt z_hdq=rQ}?J=Y`3(Mw&AL3fqRF>#Hzv@KHGAS>r(LeQDOjj4c&CT-t26J7>lco~Yy8 z7@ikqjpa?Zp<9a$BS^c7#4ts(y^N)b0Se+(GU_#F(I{$ZGhm@WEZDJFG2! zLK|MBy`z6SP%|wTmt1~ZH3b%Wc;~s` z`82=u9wFbp{ps|mSgb0#QW3>x19uKIP?tVcKj~upUsyNV$tKJQi#@UB8nkt?Fey$I zV88V)tO@y28B+f#-ES|7<#)fmfQs6xd|QA$DOKfJ!2Bvkr{ar@wt?R1c_A2A!As@i z6SP+`2E82+;VCEWZoY=GrF+X<1D3wlvyuyok~PKg6U-pSxwNi>bZa5{YR(Sy{1nc` z!E~R-cU9e}|GjO2`*(uq*3z%$H(Rf_c2vN$Q9;pO0(_WMN4gb=^S4F#()urBI3wSL>3^?g^LJt9f>-dX-FRLpVE}xwj>$4})&BwXU*B(CRIA8ntILG;_Q@luD(S2obuF?6u zs*X>Nn+Sa`;ZG-1A)wV3FOJPTD0ORA?1b{0yj_zFE~uTZl1y70{vPfF^kQqk#dxz{ zrIvx9NTS%a(;#k<`UVW94?SPtp&qc%ugBRa>&Lnhrx}*EhLK2cyhA-;c;PkjmD;bakXbE}%^+MB3VeT%=Jm|?|JZO-PD%fCy_NR(O34Ne+ zk*RD)o&>)3hcBQ-ojq|np6yr1bNaj&^oK5BK6Q2v4{+ANOI~m_@RUbYq=xNhcG2kh zz+(v}D5y}*Q^-q5cZ2rltKUhd+OoiOp@bm7RD?=qe!NH`nz7%K2QZ>IUL6Haxz#0& zDZf^^DCND(s_*GE5CA?}tNLd9`*aOKVfb)(0LslDzzK{Wv%pm6&v~oOB|)rCDUFue z_sH!>uRSQT^{&0I!Tc`%Z{Rm;41O{{RWO1jjAPI~eU5=47$)qBAWnU_KYTGwitVAP z8310~AG%o6wCB^>0pP_~Yluy?WG5k0!JK^t&GF1NoGyidB_9cqiV!x~2j6@VVXfKk ztQOO4EtZ?3>s>2Mq5FclfuC=)s@7j~k#=e90$xzeW%QzK6rpfMv;BoCC<>m}vdzb& zxh;SuE`{r%z%-0O-{QW%9(zD5Yl=o@V1E#2kAi432dv2R z8WJ6g8t}K25M^kCJxEvlEH$oiei1V0k`8Gu7Q!*)B)f{>5-Dg51{ZUktRQlWn9~!v ziw^{FDw02{>vOiH{7+Q!g(p|oKVkX!QYkWiuGj2k@vMSHJ@WX<?jxc({hLvG)rEsnTtxN1lYS zTaop~_u|js_;INW5tR_TZ}Bz^B z$>!Q(_k$i_H5XUWO>0L-Vjvs;-XkOC5wSlwt8`?8syiyp{JPgp^cadJ`32W`JtOC;Phrx{evg$K%RNwuyda9O zxWm^71n*ib!WP6e-7CL&R^s*#Il~AhR%3uLVUb2A!1IW(4!nf(i9bRYIzPZ{*>$;GMs_o}HnKJjDmoxq-m%`ma1t3zE? zu0c{vKF&xBQGOPuXEVybJH|ZbJi=D-RaQqo zli&IM<<{k7EPZ^lwBO#VOkc<5*mTkaPEU`^v3bQ{vt8))HO}6@?$w_%1&qthSb(WR zj@7q{0<{lhtxO!M?8@(`Y+o$LfxF)}TSxwS#w-3nb$+)Awg_oYk4_9cvJ)yAvMzvR zh6eten;8CZ;?IXtcjF)Fu^xk)3EJ;GYsj@Mq5ft_lKtzb(TqCv#rM!6t#g;x@4lzKqwDzw><#!|bTE-|nyjjS?7 z9q`jn$;W?DL32~`M$)H-hHIU$q(zvuW#Z<wI?Za%Cw9ruC-Om_&np+t zN^$}Uy^hl97$rZ+} zqZxgE&AN|&BFJLNI6cxOTCHhE53>2kQpZ}QEok7@6$4;mt7t|w6pNdjp>T6enG)>l(# zRqd!?G00pL=vk$XK=aDPP-WCXdlOd^SdZ8x&Y}We$V68qr@wrWm`c!zrlh2|9<2Ki z1M`w(q$R{zmOIQ2@pvG0-q)=1; zRC6k09xuO6Hl!jlr5>^yO2z~6JOdFIjBcV-;D`6zkf$?a_ZTY`0|EW6n4e+Ol=Ovc~`<9{c zd==X`NGPw|N_UmDYiu~;b?k^h+n)s`UVwZY7Mfc zO4kK8)nqBK@GUzEdE)gI02Ig7Ne)~+qbHHo6ac?v4)ltRC|S}pK0%F_a>_8@zdg$= zKw%z+6b~LD#X{@#rA|#(xruCCo;>ktfif~mai%QL)?|`@h?$isKWxuJ%VyQ&E36lYQgwqh z=(`4@!6F_xl2VJGE*N+r*Lo8EB%j(y4SWVO{CsTz_F+Il0^|kzG6Lr!BXIUtAFk+) zU2CYJ?VFusf$s)AWW}BkYTsz60Q*3N&A91YH{ahTY?^)OvWYvn?s+U;RmW-?R zyC}q3O<{%lTi(JD*SC1xUk_IAMCpROI2j}WioxZuo~ZF+l&FkuQzhAMG~>y744|L$mwzrOJf7*!poke< z`w=sPbH?oJMX9QP_h4MtMj7(VJATDg(|_GD{WFBR#9wfE)?fm+-zY2+(V8pY$}kf? zn<<>6OHiju(VU7d_;;=(v5E;a>YPY1= zW*8~k#ws?kuiznZ&0ZDBFRL>v8w#WzHF2Mrbt$zPX@AVRl$I~aPhIDPZo!=dHhiCj zxC4iiLXomDW)Ds;g#47PBQVhWDcX?6GtevEiKQq#Q0XlQ^!_tTShgfLeyP-{(EYhC zCeO_W(S*a_D>9Hh%U$Jq;cvg-@69SFTY$E=I~DpO)F8TT z%{3r4i;sVQv?ds@@6WCX$4xAlbuG+5bhNA7`ht%QZ}`XPc{o2{_l`aaCjgj79mV)O zpH7;2-q9%)6_~CUhDeG#lwC_;ixx90{x1wuiNi__Q$0^$l+chLSg&|AsJASRVf!zr zoHMRV4nel2B^z+{cR9h+xUdwk`nk^G#5# zU}N__1`n*TS~r%tdJeJ7kSht%JJNl5M5K>J)-o-+30jvB$$VAXoPKVS|A;k@NO28d zftO@lCa*CqjawO0ijx4f%!!?zam@REclHOr@1MlGOmAzk8?u>pi+w2{n)dh*QBohg zFGTc9?=UuW2xe&jGDp~Qv8j#ToT<1GDJ+ys#~$eh;#66@ny~qWgvvz71Kc;${!^CT z;v253*XH|{AlKf7))@@nA#l%~S1GnjL3*7(Z-`+3*1W8A} zdM{tBNmdX6yLhK~Jyvwkz3`OBz(f~{o2`@VwEx}omCkK4_6|IzyOfz4WOOif_B}_M zms`d5>D%4~`PCPVUtT2P-88<*%T2Fy^Nx@5`WpV)`1=%pasF=Q@5}uC3x7Z5&*K~a zUse{svfV4rXAUj0bG+H!Y;NS__ukrzaRl2& zu1E@OW2Rc8)NsxHS7bvF`k#UO-Na^2pAfiz@X8E8(JOu|aj~cK>xXy7!c3Xzj&;N4)Wk>u?x9^!?a* zf%~7%*>ceo7WGD7S>F$Dq1e`iJ=u2?UxqbcQV9%~t$a%JZN7t6X1K#-R z+a?E>4Wd?_GmzLkfAy=~8};D)_@B60-HoDtth~?Tfk*t5iJKe*DROpjdx36eCI?Is zxoHcZ+b-YgLPx$f&~aurb!>LuM{$ro!OAuBYY$1P{L24*D?L;j%3_fT*^%q8`HwuU zX!&xfx7In)zMH3(k&=p-Y64|aRmJ|5$sjw>-`9|BO?CFFI5Fcu<&1gVt1=v+^SMVK zK5NEm#!FoSUyD|4RhIv|om?>V-f^-w37;-WAUtK`}tRYkTSwG`rII-lFe|_@1ivV!uI=`W3FQ`9?0(#Rc9*W76qz zFMdcDTfB||>00+?Y^2{la!SF$@JG!5rtHnR>2PP<7B2puLTUV~Hf+H+6^<{|4M1@7J zc#e&(lQ;7)+Hg{Aii0L|$XMief=qf0dW;#{0ufv7t z<5~6|6xd9z_c;ml@Uz{kJ3XYvoO%6U3=AY3i`WeyBBL1zSC3@nS05WjMlGnm3A>nq>lYim=3RG}nF<`k&l02uhQ z*YaN2&|arL9|ZllP9Bm-Yoq<_04EbF)+XG;|N76|0cJo67STu6LmiI@6N}6IIm3yY zt31S;QUl{2b@K(fVR{{Dqk2^d3p4D;b?;1u%`Z6%;MnDF=(rjk@pgOp7*t3x0uXyl z@OO-fNYt-twSR^&x)G{jPuOqNT27{^*dzsnj>tiU0fmRx3C;9hy0UOxonIDPM+I}X zT4?-b9)f}T1<-g7SZf96JZ=9C^Il@}6r|F*#UmcI)COU>n(Y(sX5KW*!=2&E?K;%* zN3;c~C_%d%#9h9}U!F6>I)_HKaVNFLiy7f_ck^%npKvrqnA4^^9Oqn6)MOZFyZ zJ+AqhIs8T}r$r8Li~rW?kd$fFK6Bwd_rkTA3;W#*OSD&;?d7Hu-{_^+O;Q8x8fNzQh6WuVsHq**X-YUhO9(i;LxUzIiSP#~HMoxU9ha{_1-Z=Z!Yi64|^hMNRu6_~gc!}Mo*d>x|u2lG=sH8rFbyvzg5_Md;E zrlAoX_n;TU{2on3jen}vao@q;&yMfUi+e}DWqy0v?jeOSkF0lo5By*GQH4BQ8@Y)~ zrk>%*=k(2|W>O1pnxtobSdqx`hW-T~m#YKTbBZ}3xT3!~~F8HlAJ!~iQa za;CY*m|xCJPe5>{`I%oj)690Cf6V?7pc#2Xs{IA~>5&-Of8$*EtvY<~$7Z71DV!2_ z{7k>RBg3@a^hu5BVZK2$gP$DvIo}NYBa|xFeGVJX$hY-vg1&LUIQ?@{c|hf=AE>Y3 z$St~Fy_I+J5?l*YEqC(rms1OV+iX{|Ed}N_(`G+d-e3wr`rK#nOhgeZ{OPNToCltl z3fK9o04hxl&5W#Kg8k4rdb8J>4k3bRz2#BEw2mMoP*v3HArQ3M+rMCcA0FO9n3t2d ztFv-1N#X{Hrt?fK&u~o({1}%veO@yfPy_ZlUANqchH^iEdl}=?Z~4BJ@ApY<`ELMm z&!FCjRb30*Gnq*;gdsD? zfCCH=HEJ|Lqd}W6LBk^tg}@{s2^Aro3rj4QPkf-ADs?{~Pb1oG8J_MFxMOs3$}sY1>#N&Ad>Wxi5CVM8QHpX!O^frz;T^ zv0oxYMtu{nu4hu_LN``i$8&qN{hn??#q#Mde-yi1J`fb&kK;F3n%6;&tpe9*`O_6N zX251B@IDZx3NJ1hRKbB?3|CT24Vkj=I>snSj|BhuR!raOcQg-_zh@Z)#Po`|FId=5ER(Y5JPKdiZoBv z^|F4QQI`UBl+qa2O8BU9rRpH$04Au&f1Be@41^%Pl{9`}ErncH{ zh(r&^x+Jb?f8Gvq&*_u3JI#x%Oz7Wu(j9cuxnuW79s6$ ztu1~!0d%{XZp?Q5FPF>0;fZC*_vKqTRoJ*IJcIZA|SC1qo^CpUn&#R0e6whcfR;RLSeiX;n6l_$xhn$u4;C$>c5nz&0v3lGZHeP8T4i4x)m%g|rHbzK5MY9zitB%%_$xv4w) zVwD{V?|Wz7z&mLRtp$-61_1u2|y0XA4i+4xBzptVO}ow1s4{eqi(eh z4`UojyUk2{L(;(Nyo1_NAriw-3jO#qh{PC)l_Kv3{tU6-zag_ zGWuECM98PtX6tTEvnqCLpJG>%pUh=aomp&ScTGi!nyxZxD(hWSwZw7NiW$DIGEsez zQ5@XQR!S{YO~|4N0*p9j?^+fOV(!ZVUY{?>byPnF-^$GK3MzNy2$R=ffvIXWAhPdM zg*beV{GS3YcFL74TS$oD=JDC){49G}@zyDPXzZ16 z;Ko$GT$PVxgeJC*lwT;w^a9H?ax-DSl!+iHBF33;iMB=mf#@EdO{%QN##Bg*Vocac z&L$-q@Jh5Ii#DP$Kg~!Gys`bFP;ZjGs}9rLrq{LYlsrp44$2}s~2cFRgy87&z^`li2iR>g{Zd5_lZ@RPOPY zv&^fxR7T#oE;TbZQDnk}8%O!FFNoB-^#dPcydUW~r`zo$1TGLcF1-fmHnL zCw(iHYmub({vW8NfIqB5kkYF`VR&X~Q{*GnCS)RXT3_@(YE={}B;$(XY8lsEdKI-K zz&uO~Szut{IYvh&${H6;D!q8`72_ZxR3)$CqXF{||!t1Qb@EO|CbxT1IO1u}C z_YC)G@Cj5&{H?ue+S*-6i4?-R@B{s!13fM2Nk2o<6WovNGk*RR+03c5LZ0`(EXj7}>_=n(vSOP*XD7tg-x7O< zC$8d$4&OLaJF5M_*r`$LT$ z^CRBOIvHk28rIHzq^Q)?58{%`vGGqsM2c| z$wc?W%2i5Y{bQ5Nc#JjE&Qob!Bh_9~t&c|fFf)Ciq{9OX@rK}+Z{^!#HyPy~fY%do zZ}ICkc=z)CTogzA!XksYUonwbq`&T$g~J)!sdBbzZGtKZu2?JH&W3j@9P-n$g>QN! z8oC3=yl?8Oe;{9FhMOJ}$ze0rOIRpTP>r=pF*wF#`=j22yl*&Fkf}kQM#|G1dCHZi z8lFTl&g$*q-4ZJ%f^Ff3t9g-09veeM-oe;tiHFaw$Q0r>Awx0d`y;%DK8(55NBbj1 zyzP%AsW;&Z>K7>HM+k!cjiCY&`w%v*eviQv#mu@Z;Ei=W27cOuJtBMZ9_fxU=oRF)6*jon$MlSS(2 zZ!kXk1sAK~p!~6t!t}Q3Ulj7h{*MTuX~L`LGabev$>$pj!WLBNsYR-FvHK-fArzQZ zSrG`->vs)sH+ZY`>N-JtU#wAmCr26prhdDm4z1FEV5ZI{RZ^H3p685tGMOj?|JA|8 zH_sZ;V~7?JGm_S~xg8SAlx*s_f|%_Ra}qI-WFd9z;NBP`-#KIdfcFqy2Ks~zW|@e8 zBc|68h=^SmD4WBM*e;ULRNko{TEZ;dY<$YAF0W6TCCQ|NJ!F5|VgTV@5~}no$RkVR zrbt-i)se8c(2g~crl|>~E%<`Sf;Td2yI5*Qo{yNVto(2QTdXAYyEPe5YVTP%Bt z<-CQ-?oz@m!VQEb!qUab?v?!BLwJO+hOmwBHsN!^NjD|Ccdkly|KPS{_t`ujZA^BL zXyTnvN%#>VNN6M6MfeS2Enyqs=4Q@s33~|p2}7vsbO|lV?(zIq5gJw|yMMy(4TM#M zpA#M-G_)qWSM&QP!drxI2u{AsCrltrAXiwFm3`_K6O z4Z(JEvik|%r}FzF!u5oQ33~{ZaI*V4!g9icgy#rv5qfdl6ga$%0;a0+L37ZIS55q?J=r~&kW09TP)?XjxS4PiT(Vd> z;9tFZb#h8dN@}WO_3D0U{Z~5&q`O?{?t!aUpESs${;eMD8FI46OGf?;9X52hZ}o_g zqcTo8^|W+Xdgke;pK)e#)>&t#r)TqedX8ioea^YL>DlLHpP!dK=7I}d=|9LX$R3;G zPbqYzr;kg&=;9)eXZ(bTlhTVzN>BHcxh}bMa(4RZo+;xfqkO6qLs{9UPh*`-&#sz| zbF~?HKfG*a`nbzy&90mCqaXeFCv)apapl~f)?d|dwfXOwYp=O>_I3X??`PNF5DbQH zOn1#scP&_W)1t4;%+uD{cTOMgQy65q%Uaj2{U9mE{YSpc) zSEpy+cDv_})py=?_dWOi{1?Bx&$Z9(diCS0 zpLpU4<2)W$jLi-h0jD7&(ckGv9NRnO*goMl*F3#PAK)VPKFyBr)pxk#UHFG|r4P{i z_#gjsUer(bNij`B@W3NSAC}G%JGtX?xd*VkB%O_J7CNMIq0@;?NjFy}+IONt@ydJg z_&7O?YCLD$W>%%9pCm^R@}m#+$@@Zl9ZQZLqcB(N68=ifJ0N#q%y*-3kRCpAMWahU zhm7&5Xq~8dD5l5M^@uFAN3L?rjaZleFey^u?3D-ZLpIM9w8lrrl_W`7!9?h#uSSu> zP;zjP$tgM_^j5$79Yw08?r=P*DP^6A+|bA9?^=sFG}qb|@pa%@d#n6l|JYt+do}O* zyv}={l?$hbj?}o;K3RV&Itw_I%X6*0tNu2O;{G}06V(o#=i215l_)&~^!FJo;Y#tu z=32W}H$GYTlB!PhKbC%Qdv9G28N}GtK%jdxUwpAj+e5p=rmr(P{!mSA_;ARz>|Bm? zXr=E#=zu+*+4l4U5RBuCm$an@}54Q z)Epl%qgMp2Iy-cJ`{bn79l`8%!rY)I6FzcwD5a&)dv1^+a*EMHdr{Zlu=?B68}%-zTV`$vAHK+po!lq3(2Skl zD^`6xO+`p|XC7B?8E`o9SEFEX&H?bVPT{`$<&09B(L8_z15 zxkWtJ{DWr|DHBQ}1-h-P1o=#$$stw(86Ypk79j?$w?7b~3oue$jfDs`uoUBiWKLI+QP;CYhCGtC#Sm z#Jk6^&vU}k1?QeDF+Oy)9$+}S?Q`|buljz6baAHP4kCPHmb6%*Y)TPtp)bR+S%=;l zzN0Sumz%h^dWftYG45T_&~li$0P`0{6>~udn;tULOU|>T;ML ztm>Pe1N&xpPwEkoy7?`KRYtwh5-T%n?vo|1wMSa-RzqSd=^7Y5k`?rZkBkjX%AaDh zhAsjNO!DyOuJf=ce{SME=s_DUL24Y~BWHy^D(Z5{udRq{bj22d3}S({r}*s+DscVG z&@7=uWD1j*AV{Y@Nik>QZF21nbHEeDB#PTV4X-{*HAasS}=J>Hk_d^KSYA(iiwA>nV| z2MkA`d@X(<{-%tK#UJi7Yj%;Hg`HAsz&t+QTo0VoKFD!iD9P z`+zQjq740vPiB_^``&? ziei=B*3ps=4{?MxOfVgmJdh_K@|eFmaDgc*?(K<=d$rG>?#lHHXn8niF~EyPBQ1S3f9+Hb%37U538) zbvdmYDJtiKmTNLF!Bko<;1GNA2mKwv3E{(62FDf5cSNT-LKmDa+BSWh26QBx1}KjK z+E-j!TysCL=C;035$Btw4hjlX#I|;)|9o)_d3&L?b zC%m6uZs%y9@*8o)wGZVtEN^l<=Sc&1TQ)lQ5RF3Z?)_4_{=yX^xDewW9_@j{Qgny@ z>(Rh(*>+yw{mwES(4S&DpdYHOFlxY9oArKG$x>B`GoY6nm5`z>+hcrwhWYtO^YbB^ zVHUyN=UW;$(EN7egM4TS8vY)&W%7o3`IYkfuNKvDkD8}pqo~kx;f-GDbnw(w+A?|4 z%CL{QQl9jkKT+K`b3l$6CM4b_X8!o3SMK6JJIjCiv=Tx4VEYrR<{{IoRE zwRZbK#if@7f6WCU>%kUTY)jN46m+q){lHpkW(a)|o$#md;qzR}b|~o<|5Yi~Gill(8L{0E*jYYv^hCROEsQRPn! z4X&-giOK+!VrF~L8AB(Hrc*4$;(SdMw;FJ_d_ma%4Tk4 zs*k9yIjh>IkFutDMg{waJCl~gEie4s-;DhS76xY$v$1B}2jeX6P`W<&BV4?3;u)Ep z*_EcJ^0qDs8#l71m1KY#+%LxVh*v7>C>fR1Q8Ln|zw*@A98lEg_wG9?)Dp@yAfQh{ z`Aw+X;jZM3Lhd=ZoLr-?{gC2I+$50eeE%9nLC^NDQ55u4ZMmXv>G9=?xUG>lty3)t zCLyTNued`|n7+|~bloQQ+=HS{%-sqm&KBNnI>6LDdM|j-wI|jHdhCt#@&@}MY)+2O zOYKUrj((5`vp&;}ku*=Iu7@Nq;7tqkYKrPrXkK{SEhJh(KW(_Y!BW5Ai2?4&Xo=BB zvpGTHpx^l^RC(MzDpP;G_CvF^qa&jwPG8z)M)U*k9i? zg9B;xQgDGZJ2?EIG5oM-JGB8hJXOSZQ*cBj7F-|$z*qmx&_vWr!38o}!GRAsjjxj8 zyCW(J@3;w+Nz7kys#P#TRXno(HT2@^>vyNQF&R7jzZGSRP8^(I{E8iA;lnQ1vb(_u zgfCY-k?f9)kl~Gt*u!59xrpKrI~9H@wCS6maQ0#O;^96YXd&mb!f$SL&|XZQBnrYn zvx?tvd_4I@U3sHUQN8jPjF5X}+IA+}k{VNhsvmp!CMy@CKo2ma1Cp3m*wO>eeBOv%pSl_+N=eLuIMZ z!hqhoQqi|?+`c#|FW$Dd3Fm*+ApXUi$orAzx!XPqo%2x6@0l8%sTi4JqJy5=F4ymO zR_LihUG#@?B~_8w0rA~k{m9h?vC8`lAH=JrmWW~m=SDVsz>EKH!LsP&xc>!hTjQvn z{l9jnG z0RfAOT`QWDm_9FJGZo=@cw%I7syt`S8kU7Kuc~g@1jcgAnF;hFFy#_e1_h?CeYv`o#-|gJ` z!ya?^nEi%NWm$5q#m-$)_O{S@;bYbt5%x?#3Url~h>Y;Dq#Ms9B8dpe;R+wK-8h5@ zn``YQw(QLeh+;lHwd!9&UN8maNjxUYWs!4X zJhX}V<5rzCe{%5Rad-dvtOtYn<5Cv-_XW?Z-~Y=rcl|p4Kx)@K@-+wii+X7914M)| z$jgmHBsSpYDm>wt=o)utPFDu(k*Y~h{LZWB-dy8pHl2r2DhZh8sQ?SVz-`> zx2|A)8NH8vBXe(@Pc(oN~~LPvDITL1wy!R#be^wVk%SE?mG++p71|3u7wt|Ehfz2Z4X`qwKU3^9R_ zY64-s0z$(->pC3XztnZ|eP`FrH0io@L9DV!r`ocmo9ji|pgkp>?NnW+*~0t$2U{iT z4oc<`UQR2RaPy53G%!NDC|KEdGX4AL;5{B45~w0L5n9n1zJ&(JKW)8-CmF`oysZ+W zL2{`<2HRl_wu#>(P5e#_ZD0KUr$GGoyKzFSzF4rjN)4%(wrfvG4?4s0SN{Fyhg4b- z2|M}w|KX4tib0)Ww+ROQ*55#7pV|&YMAimP6e@NNyHeLPQ+tJ#p+HA>? z=iiW3yGT&sHhIEk4-2l)gfOoSMTmFBN0PfEpHDB=|I7E#FzXmD0s z?&6kYYB$0ziE8cH;L~@C&5mE{-exZ(6Bt@opm3A;-BYxI}jkgc%2>&G-1njRdA zL08H?2?Ha>-oxBYca1-|IRpEeZ)#)pw=vh&b>6|vMQE>Hq(A=E(fGjia3 z=Hiy(S?fl$&QIGs7ly;wf{#q5hgx$cg`Xn;xdRCJ*O?@4ok`+WDLQ|$xvgHONZfV* zS?r^gczwpa%GAurR7~dpW@Ga|(%k$HInn07>#BkQvIdz;5TEth)c(IbS-;Ycl%fAy z<>;K4pS$pa|Ix1Z2_C97!&o@~|3g^1c^Q)*fw`g8d7}#-01pI2=GM7oy>RB1U{F&% z0K@--{ns2MR8!@yOUI-Fhh<{8)9s&aZ`|E5iBp+F zKZ(bC?XD>H5NsNhDtNlKRJccq8)%#dcNG2DicJ=_0|#K-R$OAp`j@UD6BA*@9>`f_ zg;=BjsR#RGq2&CjzK~P9>v1v|%UK#m^uC9!&VB^+j1{a@ELJF{QWaQCwqc(QFsziN|C zB9;LQ6{T{h?b+-t;Le#^I>)@H068q63=6=y2I8+MfnNx7Iu6#k_?CEyV~e=kebH!3 z$s`jYy>NWMlwF6~qW~aA4?35sa|ha`-8hMA(wNvLUiXr>e0O>53}v4udXk>V z3X7Dx)FFTGk|Tt!k)2B=PX2YOc;iVOFYx%SI!y@=Ej8d-E27!vvm#3ctXjz=e`jwZ z)Tuh+{v)ECwbGfc5#P!Z*`WHmL6RdIq_5P83EN)%W#r0xv=qXxg+xgPXFH@K=MK=SG8dcRo3 z9_v~gNW%B;`L2x|uZ6P18*d>W^55X_`die7Os{`H+U4lI`_k`lae^m2bhWd=T7`4k zTKyGuo1QX5&OQgP?Sf`<88iP~B~2`)0kw09_VT$+LnR;i>JTBq_k@>!Rs8d#!G44OEdJ7yiM_yiNHfBZET%3i@Y$M@zrm&_1;HpTU2_J%Xg{K7qX_vQ+r5 z$O;vAJTdD#sNXf78y@Uao?OR^tWa_PW_geFDeo~=o{IZ7%X_*{dFxbpD(>GbPZqo$ z_{sVhS)tk*qmSl>E+5(ZkC98$&&;({*k|k&hZ%-2ao|cSWm(W`0@alj`cKEg4D1VUMI?bK#U_hZ zXV*_Vw>nDGEa632l!*|MtFspU+VMx@by|lg z0vQBeVZT_*9{kWBITe=8{}%eLR&){Hm6~#|QbX=lWXQb=`pCW3-6|8$S^s8J5AA-0 zxQF&rA_+{2>w5}3ZYdTU!@)G|0#*A#?C36&9T=tw^;cdudhMXsqu5<_vmOI9d)tGm zvD&^+@`gsJvbJ~^)977BpWeN_ zO7(7Ce(*oh5NbSy-aAm*Cdcs`GH7~o*HvtEzy(~kmUShslVetd_?sG?t6B<2 zS%S%>{=>}&@?Pyec3twddG2~&Cv`wYjC0qOys2|nj#{ay=jc_~(vneDId+x(Ur%>O zyr#}xwS66>(CFg_MKG_|+9ntXxkBMBSf!0O5v|Y|iVKXPIH%80OjCyv&idiaJ&5Kv z;uMpxrDdTkby$-=ZMCiv9GtmKfr5|pozqHp7Wn(7=nnT}2>Q1Ub z=MsM@(h>eTZT=bbLY-r<{kpphf8>K|v@v%sX9D|QZcf6;*Oa@ovZ zT%uPJ?f)uxPIvX2y81U*yN~W8#gi}`?ylDVaDza`p7&X77GG!*-J7NCEcObQ-dQZS z#Q4dV6OL%~F=YrYz8ijsp9j)}#)O+OE+6w9=p>dAANnw2i$4eC2|7k-b{~<4Un&}z7O93`~vx4FvV=2g!N{g`w@x# zs{vMvYW~kC{ULRLtq!xRsAlzFRG~e%WUjvWI~21)uq+&JriOgg`Xk&f1ZZA`fGh)% zvu3IFeC8HV7p3TYIb9=zN2RGG#iPi4BN`JQ4JjNjHmO1DrBD--@l8x_etWO?&Q3-K z9DD2??2EwIOlOQxYr5)M=9Dx|R#_3^bJF*(t2K3YyE{nlquNxDNQe6d|Dt}=1)F-W zvuE=5{rXK`u=t<@Au3L5cP3PvvIH=-0sRWGS+z&R$9qFVF?@n+)Cm}2ywn=%-%)f) zQdjbNfdv~3w4c^(r1Jlp_R|(MA|~5ZqtE>>HEXp#(P|XFYd;~{#tc8?*CWOYCUN5l z0}nO&i|9Qw3s1C1wJOHz|F}o}?)t?dzmNJ697yeQlbVOj8vT;*ZbGwSF8(h~F!V#& zE9UL}_7>TrcF0Fqp_Ek+7WZj1p}S#nw_AXM&6NL9WW=lO`B%5buY=T}^mlBH*DAi{ zU+G6;Uyztm33!?tiyrxzY&4ybrGEsgI+t$Zul$Rw*vj8;$+CKhmHv5oovJ)l($Y=* ze1Cbs&+b}Vb)i=Q>f!>EQxMHx;9j%yeNB`lR0?->2(;Z54<* z*QNJKSN<*XK2zJKFEG6Sg{{@^_Z$_APToMRZmUPi z4;6B92sFljz}0p?^#Id+P!!jVwR+OItOYFn>W*UDXRg*?K)woQVQc?39$0vb^p$Is z*MyPUwGJ}eGE3q`1Q6h`=~_$F_d@LNMxl6gaOQmmN0Eh;@>K0-BBU(R(h(&;4ra*M z7Kb~${%bO`8b6|hEWhq*`#qnsL2&aUwT(f9t#6?Hq?dtdbS*_@lk(|MrrwxeczwjL zm6?{K(gJ2$hDw`mre#LlD2YqItP* z5Aau8`6+)R4(kIS%I`9Hi>;Idnu~_S3~`TngBuSsRm!9pUS{%kN3qP@2~l_sbB8Irv_+dFL7 zxkuuT{h5b=UfN)gM*%X1!zu&yYh)$=vp%&&*#|3A>+voqL_uknM5FoT-QgLW-$>pj2O`z$!Q3b9Dr-sTDT+QKx*OUC&}yL;@w&@fDxpVS_(j;*j_pK%lB z){|Oa4SkrmsVjN-rtlt_0FDwlVfm_Y8|SFrng03qra4^a*!(f)swtvSJ5_(u1@2F? zV|#u=zUE-hD&8;+kt-Kw#%GD5hm0n^i+V|A_+b1Aq%zbZT|%$Q>`g*!VbAQLMM8rs zKmkWpHRi?h_Cj{Thx@yh3Ac(V{kA{8ne2YH2#9Q$hhK_~dr+hO>e0E6K7vo4ZQ>ij zNR#M|lA%wU%Cmfg#FJC-OqNHnU;IA`MM&38{|XuO6N9@Ci#i_#M+S@5pYf4T8~r$Y z7q&sIkJ1h@$*WPj%m;MQkhK`^JX4DKEO((e!|1aCp#d2vQD_tFRTTl4;lG>iNzZ9acOk-4lsWVGjLV3l&MR{!N~b6K!^>oq)!x$Iejd(94}Ui7(7VGw3xBk* z`}26q8_Dip64ntq2u}jf5BNPw7{>G2gbN9a2zL-&U-)Uu-1uUxBfC=sPzil9j!UrXo45C1N{iTucgwA_=pt+I0v?>)e{!ZZ zo!y?2x!ARKQ`Nn-*v^_bFUewso(+U!;_8so^~llGlFgr_Qb1^zYi){=YXrHp?KXDg zXu%GWlP9cm*r~i2w+cna$y%iS;ZGe=dnV(|5u#W;6z19!85rJb^3-M&hY&TYf6_bY z*%w9qzYKjjdyCxUcC?pUT8_*Nx>~r~nAURSR0Nkt=7h!}3q3M3l=O#L`Nh_nXvi8o zgI!}%`;f7(gxvYA(8oKg7weFL_%cf9Tg$aRjH^ZGXRaR#2CmXl0(#aVrS%Z*u!p;>q0i9Benw;< z%_F({sI62&anBzrbt~CQWF=FnEPT(XqtpNB;k5RQGzYf)KX@Q6&Z!)15TM@lK5;xg z`vk}1|GtXZupS|_ab>7S)694mT$F#|i!C8>An&MwFLHyIzgx(>g)b7RucI?nb}fjZ zK~$0bV6UxGziQO6cugc#|I3esQhEEHP;rxmh1HEW9dVyF+gTf^sDF{gw<_9*<##9s zLf23~_DAY;3pIdm$)B)?piT5?sFqgL-@?bbKha-xdkRcA#lOhgL)NhxOYix3(S0OY2ABW?5i0$Caa7cZN<1c=b`oc$Xd-PWatj2bd7$hYKwQaHqoO^ zX5{O=uNoP=`X_)-tHN)u49^^i)?Zf;&1hNwkTf%RmQgOnT3(Z6jQYj93!0>&er0?i z>u24p?nRYXd#4C%j9cnkD#CtCr(N-Pp-VwC-1~AsS>H+#`hyr&R*TX;j9M|guyOC8 zabKZ-;sXP@wplml>v;Qg&N|WM;xKbLH`?sMq=>(6c6WW@PYriIIa;xuyCJpkpkgs} z48e^{`c>`jB3O|l*_(?*-iK@_8nCuIiduIN_k7WMk-KsiHkU+ibFI)XF+|&VpG7Qg z=F6e)7_4M^#Zu>OGm*W@VT-FxG0csbW3bWK*;AfS`t0YU)2&v~$erk?*v2)&*+W2c z(HK97GvDmP;m>W1-v}}nO7XcA@2L^H!RIH+4^2b7ovhH6)_9}8T(_H6+Bgj*c=WM5 zMcNW_Rp}NOM-zWSr;*idkR4ECjGzY0BTtYZ(Jq$-2!GTydiG|t<>(ei4w0!&wpaJd zSz&ak)FDR=@FJ0#jLxNUA}LI0=h8=bvRK@fXyG~v%aU!zM4GuH;*g{NhX1u%Y(RjLsg!jT)9hA;<4(E$$LYiWraBYR2IqX=xmLe|Ke?E&GJb=j4 z1&QyHO2dckLA%r-MPF-|o(md=uB(4hDycRm$l~uPymKgpYr1|hMRyk~4G(`~#~1ZA znYpU4Q#cp+6gi>PgQ!u=q2|{`WH#lP7*V793>fxC6Jy~p|B~4YaK$&8TjV)zL0Y#c z8UPApJo+LfG3=HPd{2I>KKWbu9q%UZ{tNd`-<^@g1P<@Q=S*atr+E>cVcyb>^InWM zSc2!ZEVL)#tg;(Rxd)mbF6Z;N(}^dj6=OM0@u+S}|b!8NQuw{i2k zd%6a{yGMKB-Q?|5#O{QuA~-icHfv^E9OG;Occ=YpRYsA!W71)}wMS7$-`OeCjgy8= zU1<%u`Ykhr!ize$BVuJ5rWmJS4Y>%H^j#>IK_Zl5lnFn@J~`Ry1oSUHgWsMHiv z;!?#~p?ldK=(pL>m?@#&-zs*^gF(7rHY#rwde+}*h;fk-_bUtfca)@9 z<>CV#Q~rcHDhn7o45)XB)29S~4MUF6{SqHb8NEJJ6&x`6Knnh`6fEWFJL#pOIl@9} zH5s@N`uMZbs@7T%~m2EnpMT+gTmblf){=li8R zw0F&~`=Doc`zBS@AQ9A#Fq1N(&QyM6j{2akWtFuejZmjV`b%G72I4R?H6Kc{NxcAP zR%H)<*}bmtg~nP*hxsj}^c z**NPxD0aEqb`+@izmT>r<^WA*AQu9|N94v+ia&`PPce1f39kHz+<4j%oX9rDwRTwc z7H&KpvEDdFu9CafUS=gCBYY(3#?y%4#?xgDzaO3GxZakT{o$&n5vGyoP zXSJJKVOfhk+}6mohN0ya1+km)F(+LY7f5ARLwO{ zMTtxt56M91*mlK!Caza)IT`^NB!?BoQ^U% zYG9wK@K+yZ5EjwG558eFtRBg}r z{_lmlT7JZ)m2u5}$(lx&Ja{lnjZCx8>=EUtViV$+bF~BQDHt+HFKOT2p3?G{miFCg zuY|so5=tOPr&noS?O66VwbfO6zjwe7L%=}GowoNQ-kEig^Vso4e!$Y-w}Rf~rytyW zEa)z2-`t*_+0y<>+U|qT9}Df1Dvqn+H+%o(8qED=D*MZWmSe#)qt48VfL?<^<8N;= z!zstYHTJlWgw7OL{Ke+QsP4@t5UH-o+aZGfJk5V^^uMgyOWK$1yA^m}Xjwi`z`J{V z|2GZrX1_FE+uV_AwH+1~aTeEOwav$MznflMq1JS{#EK(Ch;+V|Br}V7DmdzFw_!3u zR9Kz)R#$5sOiH0ObTX7+PDQlJTB)~*;o@LsJu|%vjdzSa+`0LZC7jkV$Y023?N&Y* z4Ed?A!~;Q%WS^8d??l-*`}c7`%9$|w!uVGs-IAr0p#^{?R6E`KoTirlRuBtUcejtOe zufDD{L%v4_pa1Q}X^j{uxWSHr=hp;zwa#p$*xHxFF`V<=*v{E?`17RUuTgC#<%(Ny zFWpmaW&MXjjc~}m&`pAGf+}YKEVg|5*)$8mjI0G^)J5|gVLd7Qmc_Pj&|6)p8wAFA zdr5Wj6&=Z>Lm3#rg?=h(AJBD72UCKFJON68>q?YxcpwBiCbvnX?!{A8ugVfFIEU{8 zwBRx0duhQ8zQ4TZds-m1Nv&N~W=pywYRonTvnXc<<%oe~vmJ9N=Zcv@LAiYxn{@~DOvY>id04{MssHQ9q)90qCX ztlCcP%dQktKKq@MWv5W>9{jPr1@_6YIv$#=~pcw;GHitf-VLEB{h0S7d1}FoI$^A`&2Sn zTQ0VSG6V%mIURbWSB}H-u@q$N4}~B0`8VT}*_gCo5*gIQEhu;3(wkc^9X9Jk?W=pW zc>8wOH#3)hit^zkriiSq;l0YgW6%9=|9iAH!*xq5Xtvny-*sa% zg3NnuorB(FR$mYPZ=ZjSc)4=5j-of=ChmdSwKrjbjxf_{qR10pMLRoN=KBl7Ax<*i zx2x4{(vv9%LsA1fk?uA$x@pz+8`J#nEgnm2 zcFh;=!Fe$0Snx_vu?*I581|G;IGc&g81z=m$@BmiiiZ5aoWURCA%kQYsTq`~W^gPi z{Ipz7>ub@9MB&JettDxN!7L}+GxrEOoSaHd(5n4ym`QsxPq z7}gj%GV!LV?I&KMr4pKfXBS45vg@VnFLhP+JRt6&6q&Om!!o5=N6!_Z-s~Fk zdErz&@ZTe=wR3Cm9|U%01VR_Gm3B|DhYdVutc^5Pgw!cJA8u#pj~}0dM!IREaExx_ zn?CSK?Dww8dsR+UGMKYt2>FCULJ?sSp^R%O;*K1W`xc{Nd(CzT@*`K#)p87rKUgdF zc1lIYNvJt0{)CpP$@B0 z7%29Bnb$j%9Ykl>Ks?&!Q;btzENz!gG2GYpS3691Or+rCC?bbjpCviyfaHpm2xX%& zY`h8^ZxlLt{XBX+iAERoYS=E)jpMKZ2RDL@;O;7?8;G92?C$0(4|Vh)W|EUTFhyOZIA5; zIVZ{Tj)=I;YAk2IY^D~jSgqZ+A4Qw)&vsxU8G(<|tfN1`rd~z~VdtdKYz6z?FxdOo z?}Nb;Jup~pWbT21O*mE6w%Af*dKlO^25juS{+#a4U84X|rC)0l&<%)Qo$C@lyHLii z7w-OvjiEVmB7snY;b!DcH_GwR*)lbHg2jo^6EJ-(xCzDi7MQ}Z6fvL6p!!aG0jiuU zaC?A~)%@pIVUIcGUoiS)PI-}GQ|1)VSooDP?S;OW4}oda`-^WLCIlV!8oVsWX6y)m zqVzv~P(C+h1VL+|@@0G@Q58*v$RSWOx{g`5I^;pYR|t^ljb zjGhHR9Q3d?Ay2O05K1X{ZH97ZLK!pkhm}Sl%tJ_I?Ym>@8N2pc0{VuONle<=ZMSkI??I0J037$43d#iKAnc9=rJ6-LM| zS9-X(3~V@Z!-Vg`h8q?D>3T5X5AP{Vm`C%23KJAzDimCRIOQ{c4P0=w@BF7&Fb^!a z(kN>IWi_4<3$8G*ASBfn>LY1k=KO z5Huz-Mfm2`W;<-}iuQ+3AG}6zMh?mL79l=AEJF8qsJ|&%REjqxj%stV<{%5+x?PFx zyUxmcwP1*hUM@h!9_~~-+HG)&4Hi*H*WWel^|CymUt+jRA`n_tar=dtcM;g0_#>yJ(fA6@9t;Jrg+#?v+ zx_C!=-B;bBpJLR6VP?y->Zp98 zm%Cb`45yuZ+U7{n zSHX)_kGP6&++E}@UX}hxQ~4zdv0W+V!pdv0?k9eRL}%wnF6YZz86#n4ZVdEfXV<=YR_o)2Gtpc zhQ8p$@Dt%gX-;@k*7qUAO-9}81R?bDTLlpzoP{7>;Gd80`2TaG`v)@%LuW&iM6|~p zcX9gRkps;Pu5+t@75dJp0_UulE!VyOGcHOyZKf=aO_G~o8nzV9F(${=e_Em?v_Q>aDP06Gz<)c1~4JtQ-0)!%n3r~xUbP{=F+Li1IU z)=f`ERnWHtqEyN(hXS4w(AV*mcDJa=LBF(R_wXPj-nlBiOd`!2#8sfxbw*{ZpFB`( z4*7~ugb=;gtj33laR>BEj7%rE?8$nAe;#fsS5@{)1HG3?!kU{alj^PYYBm%kCb#v&)IHFt|jQzHd(XcV24&E4on^Lx040g|IT zo&M)gr>Ck~SzCxYQ+V^$N?&qpU)BhaiuAR@DuQm977CtRtKaRXG}37hOs-W~v=yDZ ztjO5o59l~IGgKZ#x>DlH+bg=izY>5=^Z9oo!H~x~+2A67kUtgLG!Ht{Q_+;J@l*t~ zq(DPIVCVrvGB{`}wHRMl=x%9-%uqRlDHREkr!q1vLz^wdK~8FL){N5LNq7R}7PaQ6 zP$j(}oSGyZ)_09n1qcO#1IiM0q0YKl7Gn)(!Vg4ORd=>4J<~7 zz@=2sx^J7$@}h7E0%wY85(jydzC6r4Ez&UcBer16|->z!`LEfuOu{)m+KQF*Y z0~n#?=fn&!cJbteN$M5|9oCwZPUa;Zt)EsTB4BT=*5nrT-Asj^aI=b~MU4X=i#je- zrQs}XhxLP?dw8o*L}pw}z1T(H;#OVD{D9@vMi)5(P(sfh)Ry@5I$mcL zPv!cYHW}TO`(+wk?G(=LGgMxxot64z)QEvqK%XEF0=1wI>U<2CpTQV#4`e~G^3o+-`jx0n#Lc!A7KtW>*xpoQp8>45aBE66u zp9Pc9bdK4k@Q~*WSSCA!k=uOGSxDWY4)qqFMmho zxvApk*zzI`mHS#L34&+rKPs3m;RQa7@ze%SM%@X^J&}PRNn|_(DIt_!AZ?qhc;Jk@ z9g5TUo|voqKK|u5wW?1B|8mnZ04Ds)t$*gB*og*OWQJY*9LPC;Vt-`l?`tWnP9U_x zT+}!HM?x1fRYf9{Co_~aqytT)!+P~n%3?qnfQ;vaUyr0PYLTh-xse(y){j)WMydk; z;m~Zc5k1};{h4FEWEGN9Fr%#T0x?dcXWy&_9B7^+N>s9NIi6Gdv)P!xm%>I_m(L#A z4WJFXKklM%V zNM@x|o8Tzr+UXN}C}Nf~5Z>a@zi3x2?Yr&+1fl1`aVZ8Bg&TeO)r#3uC?NO{`{W9X z#oUz2#I6K?$Ay?Tc&B(W}k!S37Q)q9hL|I?pNbe|5u1NH7<&^t_iDUx+Ln zQDV`3)@fM-YjYy=bNydk|J!b0Ytyp)<&IFDR-5DB9hw1w<4ii<)KAt_HQvpBPDk=e$Vj5?WrwtfCxjoZMtGH>(oB(e%jG63(dzu z2=>Y4p74s5G9*Hme=J5UwGuCeAdA@ICD~F?@eEBlxcQ`Dj{egnN8`$jNS_@Wt0y?) z23!$$cmJf+d`eaELKk|HSko%%rwGmX>7@`rcrQn1=@=F?OLRVli$l4}l8M-ntbM4L zQOO3Ze9eUztuu^D?w%WdK@5u|cU^X38z%jGnK1DmMh9gv69q9<(qe^vAn57n@uPhb zsH)JT&nU48%EZr!e+ii^l#S7n8ef(E;Q4A1tDCJ((~PwwG2cCGSe)UbDK)hluc1pU z9qxI?uXBO%>t({rML~~?9=cXE^H*%77(LcXz2Q#99Q3llau8Lu^p*{+e2)#5692yD zFR`#N+v-{=Y%a6CRv*`FcEZ&rO6ssVRrQiTpl?}gwLB|*5IQoSsXxuvQA%%0N7@nu z5{4wjU@Ux<^-uGa{+?n$Xosuq4>ArDk1^`=ujJIJ-kBnoB=kne3yYClh0y02&u}SR zG7sn#YRm5+73*Ka8C(HNP& z<^*!8xeS+HtL;Rc{+@->D;7UB1aLi-dbPUXE*B_-2&30djZBPi6bFAZilxiJ)nTW)CRPGkm53?6$ zaa*Ohm-T3(I9J;xGCo2Hlk`vOjm22>?!}GNKQ&I(@Xulz3L2sZseheh>eH&(Myn+L`&!lP zR4np4#wufiDZzhNR4K^~E-lKP!5f%Xk!f7E{*Ec-YT0mDwKm1}1#^nPoLbzV=F?}K zhKH5d>M}K#Bx69I|J3)+rDBv<9h#iIIVdEPAHQBfDt>*tjrR+@-g zT-V8>K}wFGSG*wI_b|mhaP>qh0c^{LhroJE@LYo#uHwedyu_#aNIo$xRaJ4R<}r!a z(^N4gKO!~l>CXQ74zeqrT8eSMDcSc*9LEIg=Y;)Ctow;x2&^6Y8R^`J)pzF@^t^W- zW#8|x{^&i52%Xg6(HqW^#VPMI2G0L($f<-W#*ODK^|^Or&3_X0Doz>Jihz6_7@cMi1BKMR;Zhc@PDd0e;{-x zB?)fT>Z5yNU2Th4pvW&+RjUu`o$@0|vDORz)#^v6-7Lw~R!T~Ji<|b3o5xHBI2qL>;!lFU2V#|8gnKh2k#l=&oR_iAk+vG!BwKzNlx=H zb;nd<8CJgZ%9k5KQxX1zw*~Y&?^41QM|5^->|x@o^{O*L3*f14uSI91#zgdm$OnH? zSTpKO;qbx|Ey;)6DGR*_bU;*ODUk_w!EiS7kqVhY(K4^t_T-(^T#^`~O0B|)sLt|x zLrqx*4UA?x%-n1#betVZqp(PW$BOJnx`2^}fhw)h5g(1wC`ojPV2DJYHqEW<-HKA! zBxyliR>P1s{oq`2bj9tiZW(r@mY z#Vj?!AC2J?QBJPWaWP2J*O3_F1$ zs`W;4SMg=O3}C)!t4xvslw(I_F0_#7B0%R+7ga?Bn<Ct!uE5!VG<~(QRsD7(yaj zLj-W6Sq70LD1+QXX@=}I2Fh3d-b_A38@X>tF&zn=*df;` ztz~GbZiy8%6vmU$2%>RCYJI3QOud#Hg=M3+g>Qe?{mWIS_m z-Xivy1z!=pWy?Hc9Eb?$Bju%Bo;ztwUsWu+B$BBtnm3s4cq*dyAyp!M&()v#oz>Fi zl2UBDx#Lx%ALQ5^aOZ(wPG)F>HaTV zx4gomR`n0+<8mw%h9ufvr*T$OaLxC2XccYM{~?ByKYHkZE0z;oN8E~QQI;&I(B?n z*cd4CcQhW*wr7j9d-_>ca00?_VUJL64=iP`3%=SuPCDGp!&?f^8H+|D zSgu)XD0yzFOeaoTgXtV{dF-XA8TuMGb~$Nf7IW4cz5E<2#bp9RQAp0^)0~>h?43eN z#zZ~+`N_m^?ET!H3~%*VM<&|%qQ(ZriXoT09qa_T6vAc0gzGAW)Zv>PmYV4Gj^LPT zmVIO%2ot%?)lUx|sw5c?u_dCZrWp2@>gVm--3%%D^d)V*RRh8Ok2AmkcJC}5OMD}U~EOilv~ zQ_?IMSt4m?CrMt>Nh#6|dw(8(2cXI1YwQY5hPEKN16=4`hGxo|ywG6@mg_552&!;( zfefHaU=-+bSkQ$->Dej{+nf5mt=-FZXDS3R#`)J&v(Z51;Ai(AW1pGU=dkhMTzME+8=A6Z_pzfB%vs-(Q z>2_`2!Pp$?5HJit^LcI9&&4DQ_`}O@S(&_+pd)evhGiXHzn9_d`YmFHfX>~pZour8 zXA>}XrY=?2=tnd907e~sj${1_sbdSVclwwDkE``TeiN_*lpZiDn`T11Intt?vRZE? z56`kVod=VGJYDLPPL;~w;4f6(r^(<{=q*&uL#;mFc;K*Xv{u7MXG$hzKrf&Vm*=U* z2h)svHF}Bh0E5KYQIb@ikOR;zX(P?xK+@GZLjd$@Xh5RfG2y=ji=rh??d70zmF5U9 zfDh!F*B4^t(}u!XAQ#1JF!lLJ*`DXjvD=X<3T&%?+U#= zYj&hg-Hl|582%Zs_l;A%leCwk3$5(~$19@_;&;#E+Hg_SvrS;0_vcIUo-ZNSr*)^( z|HaY)aKpi7z}@YC5c@*1z=$c7kKiqt#C-^+)W^t+V#JPSZ%wUh!`SE;qx3_UhqTyboMS@(0?4-i_C^4N~mnOnN>l~R6*-npTZ(I7i*-+ z9hs&4;i*1~n8YpJM4HrD?2yu#49%0-7OBI~8ZMXP{mFY8b4r`iY1c+Zr+3;#V7VhW zCX%jQWsh8E=P$>TLn9&CzWO3Rvv-}}i{)W;mDrF&5{4rG<+F05zdyrUveDm=BW~}E zoUeTaC$tP^fYU815&WBA*e7x0&0|w=V#`>r%51l5h1=H~W3XPv00^ID^0U)u{s{2X zY<)F{)A84sx_mr9yO34tJ)`t3rbtDp3D`+Z(b6N1u4HXUq}HJfN2j2>$PCqLg@JYy z1fNHxzlgVeMVukGf7(X$NqO0UekOp=XYmxOst# zk@?J)Ps!TXPcSEerW6!l+<$bpBHe|2^%Oks#=~8r9lmH@U{2!X9qrCj=C3-tAPmRH zMo=|;UuC~P?f?D#J?{7PkTCqY+%x(fv2=ITBd_Lz<6D;;BGEw)RtM&tyg$(aiS;BX zy2Pv;t>-kI(hf?`hf~vGES!FGmwjgy-;1?+pg60O)ivAPvZYdWrLThuIlBFRftxwe zssLC41mLp*wX=MkCwaHE8(;o$GBh~L!iW`5sVcL!SKyy|6=B)A(}8`o$pXOVILl@i zWM=y^94jb=W`}BKd6J*xIEW-qHyE0Z@RaY4?l4Vk89o}VlA%Nr_*uXAO^eYmlmzB8 z9RYR=og)0t$ShwAdm!Yzo(=b59&)S>9O#Wq2f>P}w%OroIv+E8dTi&WVwiBpv9=YO z%tg7NnZTg-Sb;2bEg%3}oa*;RY)PKk^9X)0X1>d_xVhcFA^vYJjMPRCj@4cY!rcV7 zb`K&0OCK!kJhA&4h^hvUQi@|2pd*i^-fg$xVE`xGys>b69UE*NZxya{Qy7)^^>3U> zBgyB3TXzJvUO(2twS@)QnT2ZMK28U>g$Iso!S+9q?JCUkmvX{ywVfSpXp;S?yl?o7 zjm;x;g~MX_l*3y)PFYTlN|=jATXKz81iwwq!#_d|nVMknxApQb3vS&R+)iOW_W3v#Ilczj|wH`JZ?52QK8(yZ>o7WzX$Ssk$jG>khhw z|Lgy5{*D^0_Wd0rxiYjN(aSz)3U`d|#jz>8H8+L-$Lqa#w5j*^_rJH^qxd8_ej@*u z(>P$&YT8oo>sGMmavdCeP&bd@@gsmcQ^X=sv9y3`xz7s=~nhTCsJzpflJ)5n{TBbnoLaA@TBN#i@Qn* zP}vt9ST~jZ7p~b5uB~rCw)0nTbzs0(OJrYrqJhi@d^MnQ-C5+%Khm$k54`711UEee zGnjtw*kJlMT;Ocqk-cI%{ru=g-?YQJXFL08b#~^4#)@#mMbXDQ_aNz9RB61c#0`W%0%bmIk{nTpBw`tS@oDa}K5%)IFC{l%9o zwR*Mga|%+SyH~d~ZSc#WBz1u3d!OCft*Ux*RiV$Lwkcz^O>jTD;;@g-ucMkn(1I=vNq_$qa>$2SW!1_-aUH@U5VCc*(t3C=%_i%Dr-259>vKB1{ zdt|9`*X8qO0}iv1S*G4_o>RU1Bz{=FiKxU6+)-8(+Hwo^V{;oeU&^DB)JfxB-^y#V zCjTnfW395OCi;A^XP4&o>lAq4c6GA?Ii4r% zhhsN->sBU%b*qz8>aI;rw39mg5y-AuxovGr9%m}uf>TAkhX%Zt56cTL)E&Jhb&L(V zf+2kVj2ZA=5!^bwaO1d!R`S61JT+SM ztZ|JbRm-PFU!7=|U`r=YZ71xP*g$I%1zEwZ-t@MAN*|mWyoro40MLeCS^&!aPyp1E z|7^>Ke5)g)ySX>1{@Yz^A?6mf{6hY9>SEjHEnny9aGkAb%N@F|99QcPd0>0=qtVYk zvgIz7ny}>_{*2XbOQqdXZohMoe|+$!L$>3$ykk55mB;wg9bFmh{SO{zR~HiB&$=aQ zMS6Df%z19#!~E%vqMsVp#dU>W2=?B~)y7%gx=$zlb-ef&ZnLX>!+qV+tA>Bp9ldn; z-|YwT@Zf{b1bbz4oB!Yn9LjPZ+|nIQrdDp8Rap1wls~)LyRQ?{qV960!_L&QkFgtn znIHB~t?ZnhrOq1n`axcsuZ_MUC!{c={qnK=muubEE^@d$bxL+MmQq!C=2=XO|K))B zPn`9^DO1d|jGrb7o#)z3C|@KQV3JZ3Q30(?5vQepOl1IvQ&YYjCZjsz$p%6Lo&rUJ z3ihmF_N~3hoLL(@HaOIQ(Q_%9B7HDtl_q30GnfqailiFX^PTj3Ujxs&qyG@>ZPCSb zh0NP|Txps*_}~z@MUt*YLcb-*5T7!7p4%IiJtx@%ak*!++je&g5B~-#UIb@VklMzw`U< z8AYMT`R(IZ0t83-oy2v)6wj2xDO09+r%drpnNY;lME|78{F$7mR>t%jIs0Lxx^av& zyZq5Xq_LrOpNS5xI~g%VaI0?`dcsKhU}fi|?)xKO#Uv~>nQ&p0n-}QZD{0hpvOqXZ8t{;rGda&zAD*|A{_-9hG$iXGlqj)Q?~~|=R>RhhvvLuYwWr%P>8)Ynxt^B7ky5F+*Ggf zjakZGHu~-HIoD2^zeaL~vcVpicYcs<=QQB6d+W1+KIVMm%{%{@y&mFZzew0XG+_(wu zpIh;MTjchf$^Hbhs>p7P++NB<vo&9Pg^U~6;+bjpOXtLfSH8xa z&p>V<36p@Z<7~>^AGSe3Nj*YDzlp)C_=RBGEYeUWP$v+RbZ=CKt&Z7&n#HZ?hdvS8ITLwbDMx19= z!*C^L1mMIcyC1O4CTE~laqagvPV3pFSG)4BCNvBW*P~Pk_N?V7(OAoOEFmykzwk}} zE#IIMC-JN1m*7|6{hp_!T2Y{628 zhv%>GFAwaV9EzJ2)|AGAGd}+X8|V46P5z#TgBu>;F1YpK?k#psg1tZHKDJ!>V$1;~ z;b{3XXA0IOoZm0yVq6y!zJwp5#{-yIdTN0~!#pWJCea7EzV!WiVbogy%mMuBv zr8erZaX5g;FU;D5#>d%%PDI9?w%N>2AepqRMfEms54taH-@0dJUH9rx@ZN3RoqjS( z9wB>DO9}Jif3S0P%<>*)3jM-cc^ik+M0Xhdar;V2t$)AN%I8tS1w36Bp;O=>^^FH0 z1z7C57#e0{cv|<{-K!(Pdv`TNcMLS1qO9^=Lhr`WmKwQUjD%be_NS zk0QSKMzmUBT+zw-qN&4+_OCw%I*kv%|F;OWv&Iu@_;Y-Ij8F@kI|}R!v&jx4)F9BR z_VkW)RcbbY&471@=pKRbM&Ai_-E?F%YP8S$wbn9T-Qb%tEBburb9pK*1nt%#Yo$P@ zmi;=9D71vS@5Bk zFLeKw-0uD@z2E&?w%h$%@mKe6WoXEjudZ5kbZ7hDqmTQT*f9Gy< z|Hdlz*yjtDxqlbl;{ILqOZV@xgYMtUN}jdlmM?VwuIzFDuDZ+pn|#6jyEd>F!@QNH zVVpX9t(NWJ(Wx~~S0vkcexaGY!Y&LNl_`hb(pk!)oWLAxU=Cc3)Hw6ARs916=R5Nv z1C1^CA!uLJ&Wm&&^V168b;E*|kpW-J`3=!|k*?QRkr?xiF}!+ff>z-b8a`I1dK{{* zhdhQcb1*D82#`g3PijJT?Zn|Tfx*1PsS=-*nTI^G-^Quwp!qSINa{ytlkFXS&8*y9 z>fBx`gXgMk(cQ`Oq9%D%@YfyZWNs}L(ionY>9H61Dt;vDUamWyQ{VBWWAP5N;|GxA z!l2FoIP|$(#X{+1`9#mWY79IcYbD`JJau{u=n8?^~KI30|G$l$;Oc8_3yP@v-Y&221 zI^v8AK$1_9*j({JZm1=Yr#eg&StNMxsu?Dz7O<}Cy&6(RW{2vArYf-FDDzz_>pR>U zBu`(E^~SPFCjkLxnEO9xf$`Gi8j!j6AnOegj1goqmYr2LILm(-&+#rElx0`}F%Sr0 z<4^ZZiSFoX%vKkeweI&vXX8ZmkG?bdIaxs_#>@&Az+H=<@dsh{!m`Y2f967;bDhr{ zl}{@UX@eV|2>#?R6T69q9a1#xC+cl9>}4bCoeO>CgC4Kr-4Mn?2{mu#gq+Xq_!H9R zKXd%zOvA+5MiU|Bh5}%PqQ8O9!{+|VaP;ZaWQ=zjhcQ*FIzTYk?aq@YKE?aO5fAa* zS^HM=B*YFNDi4Nx7&XfpNi7{X(mi!jn9uhim8pvHIdAfxdx(dbk?i7 ztIna33Yw^No+@uGaRyIpC{1rKJm#TTo7>lqjn*Oeolxe=lFT)wM1kcRAg;C+Ws#^q zc~r*LDa*R^V#0~PKfDwAk}_+XT&-Z4oMKKwQMkjg6(g;2uyL6n04v5iYnv|?$}-24 zAP>iUWlvPF=wcb?S8F0|P8bwh4xF2q z+XXjSe@1NDWwQ5ItpMHuJl|}%&VKWLJ=yQPEuQd~T)RBsPq~8T++uBMCTx)*O{@)a z?ZUvE_{lpG(42L9wF1_*PeMPJ?i5=%Z3|%wM#|}Ox!;rhq27t$%ihJ6tRvfQvmV8B z^~XX4QU7FDYDiSBNXM0y0838is}lU=aZWImhc^kDL1EFhyzRXafzq>gY3VNb8x z*!MU~$Glntzu|1c)Uo^6dv3^<2`&-j9>#gwd^faPF@(3doRW$qlbLoh?!rQyW#dq% z-4@yierX?NP0iQ>8T$cfWsKU9 ze*S0M_$Yy$%XIN$)*t+)H`(*ZS3sYsSF^v++L->`*wzfD)q?)ZEBISsLM?!W;#-ku z6nF=s16^kmbhYv4HXK2~$_FHq3AbnGz1Ny>c9`XPgbjX3M4ABobiXh9TIZu!VF-{9 z+y5da64@{KwC6&x6-T3x`MQ+}>cCj4fHjSq6&XHo_k^0386<|9UUR_=BE57J@HaWx zGONtx#r-j1{tw+D9Ij7G6XfHz$4kQ8mjTZsW4N-C)r?>!HK&@vXD(3Kg2TJ>nDUG5 zHi|rI;}->DD+=jR(P)pZ1~U9{^LwHRQAOM=qH0a#w$vi+pFryhFXf-Il3sPA$u0l= zeEEve@)Zi}8faVLqx=s>%j<}w{#3sFI~#2M`Mg-m+=e(YVk;)_;XjOim}{sm|6#xT zA?0bvcC3i<=Z==oH5AB~|FT>D$c$!e3?DjT%(djg73}>TFu-cyvd>Jmtx(d@eQ&s| zn~m-E9leK&>M%bglom6ipaV-Kh$^UE8tLqyzEW|pqw$Ikk!Jj+uN=Z%EoOclW1Ze5 zHqL+X0BmUeLt0miwBeb149Xx8A%sy$$t<}fO)b7z(S?z&Uv!w?yFng!oMB^YUD;gz ze)6yD1!m5f+HsFXDYTjI=+*naa9&RT$3aFMPgEUnbJpRS)o*+Z(gIenS4d0VQNSd~ zMNs!I#5+rvK1EQ_}B+ zI+asp>%{^tVuDpX=?)+n2>s0gex3ReMZi6CC(frfyvCP zMpBuHmyH&0iePU0>zKJ+u?2PrF5bE#*ofpBa{|AhbBVge_ky%n< z-g0Q)TGIQygG)0_483NssSYTC+&z6E^mT1g0*V#QX9vhR7mV;szf^iV~hoOIZSO*&cYqE5i@b$UK zVO?bfWGQK?jG5}c*y$vmiF=VptFpZ%=brOW)yNdqE=9gw9J~%JvP*Gvc798%+42gf z(SGXXG@6uWqxx60$QbV{k)ZT9 z+tkt;16<4(Q&!xu?@ug6`WG9tBB?V*6A#wF@R{2uTHY#?)?1L}(Z8C=1+KlXa|AdK zfk^tDwCHT!ea=bW%2jRp7XBrU-} zWmkB3P?E-eoYYP;DR4z04}w_pD7Di}QajB#EVUEKkyF0%LsmGL>tJ3!69zfO6-!kq zaRU65X(Cd)n4|-;J#g;d#uV|WIC?19^E;m8`D7a~hCY{LciGW6Qyz6iO zcgJ(Q?BSKF3VZn6crJERRgI13VmDRQ-x^P99w&FP+`UrO=>bJhE;hkWu@-b+boc9Y zCL5Od5#r2&S98cG*t3TRQg5&*HjqxH?s|nR3_0f$d+kuLw_K}8t#nIObxm8o^CDEF z$TiJ=H0aIVaaegkkUCDgh$5nSOzHTfa}gAWqaHV@3TYG8PDoY&Nn<< z6=xI??dgxtx4RPAE;SUiv0K|?ZvLfAQ@ZsdseOs zvdAejm^MPvhFz8^|BU0^b?KbuY(D}4kHMErw!s{^=&~OWbahR|^#ga%+Ye&-Pdm!8 z{9A2wS%v8#x@_G1sabmyv|yvl28M~o5_!N?U&gKaQUGB7vgyzW9cr}^uuidwDQys} zzZ=?g?FaSd+kr6wgt@BDMuM?kLZ0$+LT?I4@%*YSBg6S8NSE7FuMvvSSHe@OJ z4Xt4d!6z)F=)Cefvq>(&Zeri|+(UQM>&bf5^JA`@*%b~ErgoM;0q#syN@naNDz7;S zl7>WhXE`G_72cWY!&2c5&(O;p{`tG9@=hRIp2a_Is=QBuPn*W4%KH@fv}t^*ybHjm zO^4yrC6@qVA7O-n;bVv+ohZhuPZE7X*Ofow^zm|nGqHSj!P3#=;4$V0^YPjS2#zEw z<6F1!UA&I(%D1P^avJKLczwIGq%q-K(-_?jZaqXSgQ9ZJ(o2@~M-O!d5qE6AdeYKM za+c8e1#97$p4lbuEz&BehUg*I#_R&#W3oCKSXFn9Pnznk|{nttRt6YLSDvS&?g zIe`VftHpTF6TI;|_OZ?!`78x{GxkMc@J1c9?%88~my$Yr*1YfR`5d9coJT*v(fS-M z$p75YTDX!K_m%G@H0UMyDUbH0JS`pB{=~q10Jig?TvGr@kSqVzd0(W@DB(sRTIZ#J5tdR4f z`jpFqc#FbABO<=>?i3lKjZnQsEIr;apWQ43RSdnA)&+cRj}5Hj8xzdt*3`wHW33Y1 zcZ&IwRSc@p^)eHoJr>`l88>YXK|hL&~4>=K>@|iBOvfd)h^`w%1x!TR0n5Hc`NlAFR_EY&AykLb7|GC z!wb;7PW_5(U7>UR?JS1(khhbxp9i~YLt=Ty@YU`z)LV*u`{pKvQhQzUgQ03 zN2{q=;VBqtBB^8AMh2?J#GoWOhoW`0U6FM&aOceypWohQ!hgz9zQG=Jw**~{h+kvQ zl(SXTc*wkXg+1BH%q-Ej7<7W=A|#|63cHet+fZ}4=gf(-MH7-9EHi_#@ng@tn5Qr- zf*yfT$0OVI2IXHlgpyo0qc|#54_(}Mw{6=nkwQw45nIb9)XQopYYYsn=9(9#zm9wT+FpL7trh(>Jv6vj+%9YznDvT?|jOP9Z5 z%Z1^woTsWrliZv1A1KyiFkxs;x@Rp>GxRtxVBt*RbMT*8>*9IxQfe^h+KheA4$5 z-^*O%b1p0?-@y!BsNvM3ubk`#OQN7W+mxZahJ&|)%z+onz=3!^$t7AUQO-AM^59;% zFKZ)s!X&kJVeVAN8l;tKy*pYH@iz0SHLg`q0qb{mi7!3iNk3gsf1B5k0)$#qKXz+P zeUiWGYdtmFiMNt(!Vb^lF70|MF~! z;6*o^pW)iY-d7lmwa<+)(1&S?6)zxew#@PrWX_hQ-M8(AdN5$FwjbM|#>8-~;d{D_ z+=G$)+PO)kI91RMv_g@un2d~X0{L+4vBDY5nZbG?U){OR;#^7iilt5qAuWI%cXqPd zF)SsQc+bC4VCRRA25br~Wzn@*K0;1ZK8!$kD zz~KdWz=DUebs^zJ?_1t=#8C)tzLSnA@S^Xes72Dj&EM1$Mv0#GV0xRU-Hy1@c_Nm6 zqM$9q(~JCwiOwuLZ=@3Q6 zKLLLcyNAR46Rs&@Zq0TwoyDx1GXzAH9P=Byd=)V*+`P)xb~1La1dc#R{7U(im|Lyj zJS_F1#G+PoFWU`ZP#SzTOEJk>2*?qK6e|+Bg_zRyHz*^n+Y+YJf)*2G-N5Za(fOrqjjc)Yo1>;uP{wJ5X(nkL*9P0mx za@>od5*Wgb(frhDP=5Q(pFt>$GMqUhVZ5s>%8-s+a}s z*bJ*#$oCu|ToE)sdUmwye{rWAjG0`U$F0F$33vXlI=l&W|7eGoR@iA@+sPl`l9ZNX z;s;QXn{DUsiXT2Ovr5VMwq7r{Z3W!6iZweWU&zf49m+3qetnTmx(m$qVu7cb^d6CU zoIxVWh0vaK=PDGvD7+428gi;P5(fgybZ2PFGs%iJ!l@_BQSb*GMVP9?ViYFKyM(~S zK4gs=<^=oJKiD1!<{I33lXv9=0i3N#;(f<@4|LYk12%lPZAHku^Gt5BQgKHih%9dd zYxO-Uj+?DltG;mD%yuiz)diLy>JG#3nO}~6F9jSW9s3E~&(Vi{l81LU{+LbqOQP@& zr!1bx)|KavK>$vlC!CIjOXpjP21kuXjG!9F9 z)2Cxoh$JKwhHypCC91Bon$t0=_5WF(0Dpla%BNp$r0NBPZ9~NJVj+t}HW02n9b8sG zkm|-qaux|}79n*l;aAB|%$o$Mb%GS`r#f3~+_Yw0X$s+mOg4&n(*e!8dz692Ee5u?h%P3XWc^|jSTC%J3jnZnt zUUWv`2c!Gfl{<^z?JMqU?=atTt@9NpIwVA^Z7-m-WS~++;lazKWVr$(o%7I^XIsw z{xX7sT@`VrN2djQ7pR1>a{U3cw7%5_>aSwsv~#8hdu#OWpy%ojVYz)y+!O5mn0-)q zbzoyd;W*;*?OWvdex!i^$#u00D^hEn7HQtgoY&Kb z^0J=4sZ$sqlO`vFAB#zo(1weE^hA@Ae%F&KrJJOF`4GA? zr&(d(%0$?&5|l23mWb_BXsRk~PosZk%IETn!5(WE)mzY&X5&f>KW!D2&a3wBXa-+J z-_6Xc>wH!~xBP{64B;Ol$-+s*KVsofZmzFGU??w4CsFS-H?s4TeY#Q1T^$fI*MtEt zX?v{22wy~BW!;OrL|iR$>VB#UILMm?V2xNB&Tk~WW=m??ih`Jt&=xpz0N1qp>_m z0z&d#p2+Blb-C+{BO~62vH?k>XuPuPqx7vL>zfs8V+1wkBTw6tL=>7w12v+PFk<50 zL>wGt?nV$mpJJATgevsgMm2gsH%62h0G%pp;%!-9dCY9T7^3hw5d46zykHh9BRC3; zPO#aIz0cU>_Wm;*S?`{%3JQr8wA^94kWW%edzs?a+*;bLp+2b4qEbd&uAPG=LvkWL zVSdFs+XgVFeWmLJS3gw!ZL^yclDSXLoE6>MIZUm~mhW%VDx2t7H*)*4cR4DzVH+^n z>JGs{P+^}=pS$zRN1?yC>^miQ9R(ws9G8nOK630|dFdSW!oMFCdULl|3i0SszB`W! zW$dG_qKv(x+{=`+HBcm1Ny)88q2pHYN{I!)%8mWGf;?ima^??>xfnfqpFd7U`N?WY zzpJ*%tS}Hg$Y?c5r5ZIq`CJvRTV{z`2wCo`W7t3}6U?HhmBy*}P1YP}tB|N9g6YA@ zAa1?1Rv^y^AgIfxPAMh~p|=loqT1Kbw81c~tewxvYlH=#8Zb9Nd8z`Ui3NLaQ|%Ow zCECp-Nbk{_yLn;mJI~64j^-G&hFI46YTxB*6vXd6;5`sGm;P4Z>7#1q9&gZ96ZbW$ z05FBfwAK7G{_w;)q`xD<+qXfHN$ir|hSh1mIqu1EElzc-jU*&N{iYjlJYF?ocDdAx zh~fs-3Q(6I|7VZ1CE7VmzVx5tDv{HxT^yKLU#!`Dg^%g0!pc!W@?ql1UoQHHGMJ3; z6mh{6>I!9i4^Xk}AtM9{?Y&<0tW(A!HaNdZO&z})M)A#ULNnR|Bp|!2NO|LG+FH^t z6cVh9A}y+0Nw0qdSE~6`E;8X8S%PDN%uKJ(%`^)P&e8e80&AO+?D3Gf+s$%JC&437 ziWN>XivQ>nuov@@*b-3hbX_0EWt;gAP$3ryb0W{UV8^i+u7>S*L9C){u_n!_yPlew zF){!?(9^irzR8mgZQt(@m zPgV9Uw-6mBTqAZ3`DT8A_nhO{W|||e9$(G)HXhc@{K{6dDBnzbt}0MXoB1r?^MPVu z{T=;csg>6N!l78z0U#&t41%gf8I+jFi<+AdY0r8G7^!r|u2H1jaB=5(b2Y>+JAt7P z=rWZcmW7(-wsLulmF1#L!_)(sD8mSePfJ=8YzP5)fqBTXs}}K5!F1NKxJ??K5;MGi zv}*2w0oG9l9IM$c@QaM9)qGCZ)46Oj#g<}$JZ*RP6W@f)(_*#|kPt)2{L|Aw6aCDQ zy0Q|(NOy#s;o+_ZUI>dvoWPcBMIlBY2R05_bKyt3H$)_F9IBu4Txz%*bK&xbn!P&- zgBtF9gs)06HtedrKT5!HL_y47IGG6`SAF30R{MXKkbX6gDOAp!*fH(rvITk9?>fO$HhZVMl zmkFwyDziG$`81#k_g6$L1*Tte^1lOL#g39G(R&FVRvc%WU-tND|G%&Pv%J{j*!~L3 zVEfBcNd%j1pA|E*!t4PP0bP~O?zVRG3H3>`Snc~Aa4b~^z!RC8+N&a6P3dhGn?ef| zud8L&OJb7z9QrJu>_ARczWs@VUVyP`*PCzheS~~rkUW@w0>?8CYUt6cBAtD1uRgl$ z?+nn*ryEMID=5$c1$(6cL|vY(>-LVAtuj6kG(aLSqzn6Pfb4GERC=8RhitX zude3oAq1ELOPsluom&8>GniMMm9N%FP(^KDZif^%bCv=Hv&U*2J$rRwbxiLML#Bb6&RC6McTQlw7{@-+KF8vyS>S49a$2 z6wmWUjLvrgp(RvPicpbNE{(+-khQ|-YndS_+EzrM)7l>$TV_%q-uei$sPl4+KC-DA zOJQQdR=4O3SXUiv&KF*(l?=3-KY!LPX}h_4F=J$tFh&vunr12+H<#lV*rFBiy)$I~ z@=<+leb}9Yt_S;b?jz2+(2-u~tn5URJhI{Y(+B;jnpiG-Llo;ciN+nSj(f<2vpwYxsx z)?3kwXutYtiFlL2-W!01T2_xBRs-fnb^oAVk#W#F$f;pZv0op5Xv9*7R%CBp*hwj< z600JMw>gi}yHfKhh_y5_7pETuEa!*0hLvY^@`+0#ym>%IP-dC?g6bpiheCAV89&_X zmw2l_ZRD>cN&RikbLKOcJXs9m_BeGRGQC=+EIG{)KU9{QMA&Z<)m9L`o-mgoP|f-3 z;MgEj5s4uo$B4LWewKUZQ+4^iHR&yCh=_(nZpH!g&fB(QK&d}p=)=IRWGrHH2+AOW zyEq;*KLy|!0w=cgx#3oG_n=*}F<0Aps2?4_T??h-q#D8^I+S7sokk)L!$Ul7E&xA{ z9W(9P3+NVPtGIj<7LqYDlzvwe3>bVmE)d-Ey5`qUF&wp45bu{x}KB7zBvW(g= z-t`ovx4-9s&Lm5m(5Mt|fI=WmZ0b6uLgI)b z(`tUf zJ+0JN+Z0KC+?fQK*HjYAqC6z4)|rm#2oE+zv{%IAIFB!}5pTw7%f)9VkOZQkl57*& z+RVJlLCRwiST9^&V9r@;m($Z!sUVrs_ZC@)kBG8<1X`D`T4PxW%NsJWReRWxiy&JT z!7eUh=U)pWE}+MLG<6~>koM)<^aWd!##G>93h4DP@&<7<9pZ#aFb9`obr^#_a=608 zx?0s7eHX&I$~vvgp=_~J6Fs!bg>xc7iX?|zJto>x&q(5FNQ z@UTDqTS&wsA07c;$X6j*q1D!e*PUCthS(h8;O6bjOVul`JfJz`EcGJ?Y4Nv;J2aQD z)Rtg-C=y*mEEen2!tna}_{J*nYy zRSu-8g|iGiqE=J>ML*m@cy@i}i{fGAa20aaguMELpe-BsV=74po?$w(#Mn*`fb;g6 zM>YLSHtrB55f0%{l(6-UkkRBL#{6788$aaq%hGr^vcfA|8v5bdYn3WlCqbBBB|j-g zYxvc1JeLJGpGh~lD{<#zW(Xp$#93wetmvD>fakTdFhptq??chu^jcsM31$t0vm-=e z_0_o7dVle@o~jy$Bct+6n%3~x#;*CmqvgNJf3-|sK`Kmje1mek8k(o1dRjSTG4Tc@pxsrs$iv zveQoi)YZ7a=QgJ)fxf26HU>e@)b0#T~jx&dR%;sVFLx6&j#3WC#h$^00 z<1=kQt{qv3;iR{{m$AT}Y4&HDLy86Is;Gbu*+T8d50kBi0e~xKkR-j4Ukksv{Lpdc z5km>Ll|l@!ScF*0z1?7w8y|B36PTNK~w|tS*;8htd!u zPgGbbkF|JeH(&l$o*-#KpE};;slHzr{>hJ64fJJ9=rYDm=WCRKy`FR@qxh?ZZi2m% z45PDj0oa>Gx1Fsp_gF1FOk4Ebu1^4vE$RM%{N-xPlgH)Y5iokZ-9qGLlRT4JeNE~9 z2%xl=bzKNJErxNaTlcTh)o%^|T`U?=(bhsw{ zp!_MrT}llvo1qfdzNi$NDDKLnmj<$BO)<}IZZ%~ZY(vR!Q=+BK{Os43z+I&pI9f8C z8sdkJ1gJd!>u0T5?7TSgy|j-J?0 zGQo2Ort~L*Jr@Y446v_W@KilKrH|DLr%r6nufuOmQ=7Nox^yV!yu^U=`)sS=&&^GCm(Z6=MrOB&u`V^NMFAKWXWlqc)v$G}|FSm`vB@JDH? zLXs)hwE{7&DOVW^uGs;Cqv+g2vV@6@JK5;!^&w8bji7Co!fy0x?<4d|BI-yj%e+pf z82OHJfKeurqL@dOO7G3n8k^RPsv}hW2raYoLv15FSymoQNRM2ex)~wi$mO!@W#pi! zu(AbEO})pDTJlNr(1!~(gvN{~(<;W+o&?39mh{VYkge@bL{gL%k~-5dB#z33sfpt! zSz{SFo!C5cK`@C~&LN&Oa@%5_gAbCU-gF3au!!>>Q&w$i!~ueRVPQV5z$=H$y_5^y zyKn|{?}>WZpEeWZ=#_o}21h_y2jA*%kC|WTtq``s?aYyuwW6&9i-ZQ9Nio`;t6^(Z zdTsU)9DLY6naNhqP{S??%ek@Iol9Ox9M+=wl*$F0zLv1ui9v=4x`Mqp9!O~wjxH*V zb#7-VDpISpNHp81Z1xMZ%$3eV<$bZNFUXtavTnN=0@+r<@>fs;6mPKibS|hMw!Vme z7hu371fMKj8N&kFd`;V$M)7D0_D&erXmHaU5DqgRqw+=B@W-Ri1hXQ?oN>qA74rdZ zMsPASE{Ic;Q?}cTj28N$dl|#ZE=B3LY(aUS_qVOYIsNchtEo6tF4{NYl4WgliPweW zUZ1T|^L=Ih+y4ZYc?$bfuid@yXD2X%rjbP7p9CE|uVnY?;s>J(NVpxi% zg#}588<)2+8>=)K8}n83v2<$HoMblRn;Smf0>c=EBCzy}_}e%YM)g47d&y(FU+mua zL=y=&Jk1-YZtR=9{fFtKxi2PNBO9%pQ)+$G?8C?Ox&0|zuDM+81O6c&__bj>xWv(e9R6^i(PlOQLrS6Kr>IzC|CN(4JJ0Tzu8T=n~LQCh~&pZr(H z=Ue}b!ZgHv&LhD)FA8Kk=M>@*u&e8YocoQl#6RdeL2Wmrw-eyT*ZGPw)g>kHyKOa{ zJz9DlI><#?**JV(*7tyR9W3W&V1T#ddP4l>_736@xY?Z$;-jhn)@qlOp+weBXp-k- zNt;VOs1k7#)%-+pR`R#ll%Z%)QUX{8I0|??2m ztt=a`Wm>^fYfiAVg^c7X5lIO@f`wR=k{IX}lauB3X^0GIU)mT!h577XG%v-uF6a~~ zb{bf9PqwkXFzdTs(Yeli$!;pmtbNbl%)GL}rc&*9CoVHa_36UeC8fzG+ORON{4Td4 z#F8{rV&1jV{7|kT$=dS`K_kw+-rq_?llHj{Eh$~-?$lVKx*)FfdYCkbZ?&&U1sQ=Ul=M5s`k5iaB$VFQL7eG-=(PA1-zCMDen_>w_bBWnOx zwQHaFMKE1Jp;Mx72RFZSu2H*O-{be-LL1qz~rQkHa*@Wx9e3r zIbyrkG64KPY?R5dts2b!lZ=6sfBem(~1g_(^R&%1*k+08npb zMJwt5Dt@Krqq4Gq0(ON;@%#}0onaAQnekD8*E-ncCHsQb#~b5cBH^EtZ6j;L{+93`7Glp>i8v(BxKE)nU=_iwNq zC0-hos;9q=w$E1%)90)G&HB{bgSo9J<(H3QSG-3^kz)vyLM;`lY@Uq6xATDAgipd^ zzA|Y($dSx4)lDCo5bVit6y!TwwFjuGZ!?eHZTY+qpd0NE_PkCJFc3)ch6`vwM6dZF zMF7g&=70{9kxPj)Uneh}hSF}g8HS}tmebbvoVfUv;*5?kn{L@!b-2EgJX)4Zx11DT zl13kBKMVHuF*};)ssq0O7p)iT^b0-0@D6Wrf;GTDr>}XZAlv#5$)h~w4fJ@O4@u5z zq-jn6*^~N%5QRMUoT38-@1=a1^M+5LkION(`rZX2Bc38^UxlcGz2s@~0euz0>_1Zc z?{<^r;d?BA#w8UN-SVK&;^nS4p)L!8J+p*98HiF1`ZdYatFB9;Q{tx8Ws2Rxz3YWT z!OOf4aojX$3QB{U{s?EV?{d*Vsx$QsiijdFD@T|mzZ5QG_y6mUe|+kjuRig%v%Sxp zgyOe#`8EXMSvT}r+lqQqi$p%#W5cthA1oFF!4WmrwArKGr^((YiIe&$52k$y^_)Y5 z>gQS{*ET1Q<;>m*0xEwF#VwsPemhze=i)a-x!JEYgo)I;(F2`%n&2#K8J_Tq9DLd1Wru z=S?v1Aa;f!K{bzVS1#_^{TPf#ALPjLz}&z2Nuu zNzxX)*B`t$=IMLU?|p;|d~EBz_J$eu=>lJ+@e(zAz;qpQ1!spmb)C0w zTT$TMVP72cHv9WC`B#PSdnHMR{mT2kR~7kJzW2SFmVY(jeXkDOm#eVoeXsW9Urpqd zcgHbrJAKa6V@cGUoqccnH#B%QOtVhl{ltaX+4oXp!!-Q~ZD{rAF9p0CS_`d@{P@XW z{%pJ|X)8j`K;OZL^LXD|CvBMMJk|GhNZ0-i3D1W4g?e`qf{CYi_V!6C(oC2n=c&6R z=E8b!!G>mnAaNHm=h{0W8*%41r*pStLvzuFr4wzkvrGCP16I5v^E;C%BEbFGJs;8?4fQmIi4>}0juALg&UOZveYv;oAIE~kriA*9Xi4*hNz;i8u z=;Oe2J=A7uc$~(G@recE$N;gQZ+HGpWf>(=MO$!FSwEsW(I-2nJdr#NBJ4wM3mjC} zmpL8^MF*0TvMt4q2Q#2IaXZUQ%ef=wW+m>d4y6Z5%w@;r&(0V`M)DKR ztWbJeNlbPDUpR^Y)|yjhH#-k0rRe3%d64)}Kwb~Jl7aEcC*UJz&!K6E#5*_#B{pyx zZyFtci$D4s0`J8F1m3I7jUTm#`m}Sp`jiUB%~$_rv_Gk{*qOzHVm1mavu2Gxn94`6 zbeN2FXKKR8tWYKbkTBK6Gqnnui~G@>$$bb69V3%aX2xKXjas2FGEFdEVd51zH&;`w ztk$361a`iryEgMulMsq^8!2;cvLy;QpDv^XdY*Ws6}(l1IEXUzfJ}Fx;VE%b`eRFS zkv~&4vHwO#H{)c3lEP-HzaAr+J+9gP2y{GRFe(%mqf@FUzyrn!5K{ZJP zHJ61~B3irfOBOr*3Z+JXw4BIfKL#3Ne#Pu3vcwB^iU7q$lKOOny}S6%d(g7}r>6(d zn7Z5iICq;Ta@)MwyCG2sN6_HimL^T*fG@hE^LI;^49>C}Nx~MVJ|gY$&fuL-w+HXN zxG=k5vQJ@M`u^zm4wXNDVern~?HqD#=AUolIMt|xQ(L?YD?4}ci1P&K2H@EcE8NiH z&23P&_2_@C?a&7eAq>-Rd-EFdpNht&l2wJ|qqfuYUsCqHxlX)z7%k{K0;gFKa%m}H zHPne;_$;)c#gpqa5l`P-x`e<6Zs0jgUTd4f!JdBwe4J)KM3M8e8rIqFpkOPObaAuW zvYVmd4_i<-Z(T%Oj%}%9n6vsu08Mthc@x|Vk>+53BiD36B(C%)&KI}@;^wD~y70vZ zn{5OZbEe`{BpAGJN+RIwPo0W}{1jzJY^fxXwiBy%pbbc(Z7!C;Y(csVAkboWrllCq zPtn-SJ%9+;MtzqTom@@6h9wrMy+*yaujD?m;Akczlc?C5Hc>BCfk(t4JD}(ng_w)f6Z*bu@ryD)lpGi)6$JPQxiaul8;&FY~D03v6 z{8s|d>)cuo7VKfU#Cz_YI%`2b)?b&zbIaQx3Wt|}?1=Is-DLpA=;y@8y-^P^Hn~Oc za-;AG`Il>ejm?5XR-x52>-MX4?roc?(d~`(?rqF`+!k)k7e2ujZpjy(VhhjB7k=k# z)f~$genq!mU63#Q9Jhi|llr~|fQ#MynI;avfHJumUfBqRbHu>N1Z6Y|wu_De7_ zAcb9Rs>s?caTEot^$6Bs;KxtDJCXq17u$;Ec|E}t2n_pWXfXy~acjG6{xf8cA3$0_ zLQpdxenrH5>pQkvY&ydN`Em1C%I9%T{!)(x5XtrB>&*2RZ}{_K=G)(+lk}@&vX~fbMoeaEE;b!ns?w=}G$KYHR(_2v6l)a(~lPCOADD;@1xj3!ghMMk@&l4sL>Z0_U+-{+#U9A+(}B8-u7$U zZr02rW7uQ26@~Whe)eMj^Di8Dup#vcYs58Nvv(->Xu`E8x{p4Ze{kK@eCcFS)q&xo z_U?8I`1bDJySq8vFB^TEeO#tsl8#pQ-*OABtjPV=@mD{lC;f7bM79SN8q^Ndd`^eP z7ho|FGZ0B^^Vc=ZUu$r(iDkwekCuI?vB!?BCo(pgC5-0&Zxn^{y}Nd~4fr!WH{bDV z6Yhg(?tv%OK^Mu8K*Q*s-+r zg0}VqQJ76NLkEyKm*RkMDG4%C4^pTiA7LWUkHyc)qPjRDydzDaj)XyDD=t_4vK5U~UV)9UqH zh~-0}4u;oiSNqp}lKxtFMzo92lQ1TG?P4>n!QLsJ0KN4{7bfY*Bd7|hPcCfxQ;F|5j8vAn01zf)wD=+J zG;uCvBd*}%%-2K^TlslbZfihVQTDz_HJP(jLtD# z_Bnor6}*#F3-vzEf6na5KJ!P!6&kVCIJ;+u0LHH8HW^idPl>cs4fKEs8=X1SKn&5C zC<{wid{-5u0uZMlYQlNFMlg>pGEw7zg2h9VKE3pMee7T9fhTS=-^M&S2jQsI6RycE=aOknxQe;*z zi^o@BZOCdg2Wtn#8o&dm1(w=N((!t6-;rB7pj<-5z=!!WP{3x%5YF7-!K z;m*e(93(HsI|G)oYFiFjS^pamPVzf*6>8uI_P{tE$L>EsmSZ6V1>4S~3Hhu$hZzYt zF`0^BZH!*>bRl$P;%O+FgW&t)!BPOulNycr5|Xvix!|}yo&v{GgOr2;gb6=&&3H2) zNEN?yeDNGG^T!egIGTLC>J{lbJMd;AzBf>c<12%xJ)L7S6x{q@+E|!1K%e`t4~%VW znLtXT9!07VOFp@Kt*Ss?;AR_N4U*a}Y_L!Z{Ef=-jzsZgnwyeA9*n)x}Nhb883W+vg-g1C1~F zJS=G}Fgxmwa??p1RIqcxBH&C>8>Ay%#k>^f@-)q}l6NfXuvkeYI70L4$FimXt71T!`>fFcUy%To7NT!lz%W4n$_Nn?@8PDFO3O!_vcxw8afXLV$ zI##vq*>mss!{m_r))GFqT>o8C|MJW5%kuk2ek1$}CU_=Hm{7=1|9Ra%qyPFw7rfPJ z2oGW0HB=0>({+aPkCy72Tk3Cl!eG%_5AL2g)ZiQP3{Tk8;M?PQZXZw6#&-b_Mv&1<@$cfr-s%NPcNGqVUQ9a1zDSItqDS!D>L!KeuYdjtab3&+H<6hLY31I+?HDcN8{Mm~FL=u#yfy|MmLoC8Oxe+9%4*8}G zdEC1R*G_jK1y81l(S~Au z<(@+R4djbpij;~B6%L=m-zlocE%^d94gY>m;qX+R!>I5vY}d_!-A@Q6CS3Q4=Uz=}S%+{@PLBLK;0X)dTeg|7uA6F@Gn_F&4L3yaGy3e|Fata}0UtbnnuC?!V9 z;6kgQ05)p!lqZ__%{Q~4&Lv@ddlp%nfe@aDu{ezDTJtrWafgiaIs=fhzaqc7El>tk z+g|@ZB~ekINkS0kYg!h-d{=5R?A=^`EyMmjT=8pRvx7DJn6Us=1v-bY4M+eAjplMV z#v#M`J_H{Cs{8*}TZGyookPqv-|oK5)~;t#oPTm$ufXrQj&;(pwYFoObZqVWJI2OQ zb^HP{Q>bThxULv_H3tDf=i_?Rw>QUNPUCIK?q@B=2=*Z6F37WLjZlA=8#B0gtig0DD3Zq4Y^JJsQy@e3#f$WtqkD~R= zodgufF^|Q>gODAy%R7G6eUalGL5Xrrz}6plmnV~EGzwfRgyQN33=MgosjMjfsz2_pBA>6+w}BCTgv>~C%E41%Ic6Ne!}|y`Nl;l z{Tua5Sm)M1e_Z{!r_^6->$msjB3r*J-lP7 zFz}p>StT-?)P$jW|FCyYz2ChK=o%D8&CJo=S>K#o(XoP5QIh_Z>O}W7RPTPl!$|bq z_~$ct zuCf*fsvfQEElvBB_S;>PBP2-IzkC<{YgD!HIO+ELYAOb&DTGuiuySnf_MHV?%g3rRKU_ax}VCLvFpVl1q!wu zyr9@f_K0Q9Bi=qtbu&fwj0zwhnws%lk5y3T0bZ6mJ*7L;nW=5Dj&{Vx|1M+*MGn53 zoqjMPg_!C5IZp<$?W16U(3ptNKWasrUA5Kvh_mDVI3fDp+?TWYDBn%F8qVc9=DKF+ z)hI^@7}L5?1#fP1p~2c?JJmO!X1dkw1wuj$9{OJNS@(f@XH)58>RjXIcd%@NkM(Y! z11qqQx?31}wO3Jm>hov&GLH3RX^WeA2Mb&G`7cXvp^DeP-*utTCptc7B4)^afAD$T zHnEJaST~iHv?i?_?UxM)nH1f{viFpVsxjAK=r{{Z%GVUH?)>G@t5w@L_d_r^)wxfd zjNlOv78S9Q-*S6cujH^^?jF_;?PiBF2_bv#6Z)5Xk%{`Lrg~<<0>;K%O`)Nlp4(}k zKaxiePu=6*^GEkb*7_UH>5y}etwU93-JxS1w9FY$JLc1Hyj;LW4H>#$LZhcSn?JbU zFx-4r(mBM3ZeP!JKa;%^L;i1eR1}Ja?{*ZaE4{Q8)A1O;5|I7D%<6-OWX6Cci_0(C`_g_BmJr-~+r~!Tp zDCE0=Qj(cd>WC6mue|;!2gzYM$jh$QuH%$}HzSVxkv)}OyQbTsJl3bTM;SG-O z$2mAt+tLrO9hI2>2{rea0(q>-=)rZTBxDZ#$O{Yyjq!XB#O&YF80X*}V-=*fF|!eo zEt}sL{fV7|;HDV3EpOR+&EK$W<+I5DJiyZ@$F$3?5I&FSHrdH$Ns9OVMdT&qOsg9n ziq3%%kq+dFjxv{Av|5HT4(gl?&hi)hYf)(UEL|<*3jBB~(;Di4#BAS7otS*cYw%cS zDsh7T(T1s!K*>AOjFks@R3ujhZo!VN?f6HdpAH|9K`k#2>{K8GGKom`zHoGLFcR3! ziORf!48!Kne-)NbPUS(wjp4L&0+4c{=kpI&x0>(tj$(d{S0=j!?o@&BCBj(SvjKZx z$VV}p-d2fE{NpddQ{o-*9Fb&UDc~2>3%~g)L!md;Z@0gaGcnxxU!tJfrM^$UR7l__ z42NQ7Gv8zLYk6Z2TQJisGP5`j&`75dc{TZiz5M{C$n;>ZO)_&`C_PwWO5EW<-436f zFn{QAHKg*{DswJGs8C`9XPinKwt;K{!CfGeh~R*kIh&?n0U&b&j$7L-+umd-7HFg_VN6UvLtxo+v@CrQ7fQQWr0ZEBRA8{Tt)`8hXhLxgc#yPq z%x1lwFpJ!0q3uO86@z~(+K4#|eEmhb3Lp+smte09dMF#HUFA>Bs9hCE9gntl{&SR| zw>I5*@Aq;=((C;NWEql9rcUM?*ah*iyxj-e~`%Z52So$B^wS?z?GmL6TuV9$%%f@6!?0V5~` zWoJy|O_XS1=ZDZ2%vTJ_o}cppdYyg$rVk0@%_eIO&@E;Hr1X6l9zL^rpqRWvD^cc@ zJWEmBGhHu(0dt20^o#xUOdJQ3)j)`H-Y#lmHeWw_T(7SY23>$MhMi$$%cDj(-bW-W z=wd)_ylw1$oq}fuqQ7%lE5oR}dpNh&0GTgbzE|$9*sjKV~th9JSrXn%d`VtIf6?ll- zt~soWoln^=%06Ru*vwGZSSlMc4pvSEylT&RdUVvQWO_8#_)mvF3bR{WKvV`;I>d7! z>VaDSowTxi=vJ0G+xC$u1~X=~4EaXxr4b^frFcfO&i;Kf7`;VJ*oo)hkk7Q@4n<{~ z(-I2yuGclt2Xilwv(`CK_{pPLxsSVbfufJrq5}7cJ#J?N)bKM-gWs7mX5&|@Re}K? zWA?Y_HG138=*<+LKeLzyH5+*9-Ui%qM1Y1;Ij!P9u!YnWZ6PaXkTO$phHufZW|N37 zX4f-goj6>bct2~9U4*2;D`*&`@rA{XH=0u?dPmiXC2qs?f^28UxHmFKuo8vbA%!6_ z=*JD*i#-#3Tgr!uKUG`AzSQ_{k|~RV`GQXrLilFgx0(ef<+Wz;_+QgA8GdetzmB&- z(U~45iPOp1jXAU6)2%0FesZkkkg-PzamXc1rw;Q6$xe)Xmkhg?j7etQ4vyL{5-SYz zK9YgBwwMX0-|UByNar?fwu3l^?TNu6&AS<(Ng)u_$Uo#BD}qL5)6Q(LSBbOSYMigh z#>eILFFlpP-DL008sOTw*|q<{%kE&@(hgYRQPz-WK{u3uMM^=S1Rap}z3LUwMCQ_6 z<77z@@0!SL6LTNEZY>Z9=aK%6HCO16NVd#u2Z}RpR&?h?mPQl_&7O&2J^8z*61E6-EKUF01AbFirRNLam)Kk0uILrm4mWJ3E zwe*ZWk(}!acgf~tsaToY%KGuTNFTK9TSxMe(6J|i{-I)41SX(9L9){D&hEw@vEr^`XhBaM@1!p(M6=b07YpcZXi-m1=VK@W zBb76wPpYTEO@zsVo>X8S>OTQp95G+Q&;Ea`eGfoXRrdc3Gr%B&Z`4uINHNEv@Y|AT zL8FPupsDBpF-Qv7t{G8Vrt|z${Idre&*!AOTidqVKUcSHzqOlNtx>rNQh;Xu$$qIR zYOQUT#tPG5RAPRgbKe_g2LDz2wRrE%yZ7CD&pqd!d+xdCoZEnP?!*k}$4~NaPQqB} zQ00AK)rnA@l3q%Uh=<<8a`)f>`gRghwYKqA-D*UuZiU}CS`mR(L>y_)z-MUT*n{Yh z0}E@?4!0iA9~@?%W-V{wjiQ4Y@58_nUxFH1)x*(A1JKREp5=SejKVCNoQ~op7U9IM z2MKF`K1vKKK{LRmfr*~ic_Y`M1CzK%h)RSADsY}I1C>~2!uQA%YeJ8b)@0%%0is#V zr*IIBXJQp5{l+hh*f38td}}{haXndp6q#|hN(;-{hi1L6OhHr|z6$#UIBPs-s*A64 z>RYDp9Z(z&2lE7+FNWyTkHK5ZzS1bv*5W~`u)^jJmNhgf3bijo3MDax>@8j;MJv%1 z7koiIDUe)g1K-TXUqwc|YG7Fmow*Z*H>M{1b%71*%^EYt!e4cX^th1-FqNcRe)w%A zEC_^}8oVrnJFRU#bzRvJWSL5?QVYSKxLsP#B3X?!jJn+#PeHBo{rgEio{9J|WY%*X z=KHJdbsZ>e$q0MhY223%QPz=KP#)l~J5KjH`sIzuVaL^h^kzT&25(%ToICaBJa*)L zGEy;mi~g!J!Utv;j=>=z0_GOnGt1aAH4*uB-bpVe!spM@vNj-wMau(K{AN+x3fJGu%9NM5Nm2AKT(_YKu7uV#5Qrn%sgH z@*wvck!M=vnKpT5;v#HppcXwM{$*q$%x$PSHG+oxgK$`nKQh!Yv+_h0Z!ZBySdrgB zc*~TUk~Gv^5k%c<_(VnBv-G5*?zeaZ>T0+$fz~81Ll=Qn3f@qE1A&}jI~U1oY~<1d zJQ7}jLm~?Kb^hIdfyOIwx(g7dqVaXxF_f)h(z@fvVbX>(dU`S0^+gCK`yu7hn1tVN zv->*um;7MrTeOll8@L<`#+4!)@ML}qB&U;?TIHoSd1<0N6J}6(Dke?JluT3+ipju6 zNiO?eNL=c6Nc(1WtUCEvrA-Trm-xU~y&YpUf#bXmVhk6Z2JLQt8r#!oEDhJU zKS3cFu4`-?@g{7bHP!`tH9#_}CR;2!9@>sR$q4`r{CudN>5(QU3`+ z_%NjWUn5*x9zZzh*b;sM!ioJ7N`phUF(G8=YH0lNLw5}ifI^r&35iq1B!x%_!z69* z0+ZwE_Oy*;8(@+Qbp8uW{(M;&CKFMbipj#}ABV|%J_*6(#N#2DoP(7AYfQc*1~BOa zCU5@V=Zn24nH>O=wGG@g(+KMT2M;Dx6KSS@RzianXM`fEy z)w-3Nm~jgkh;d1Rhn8YsB{n+QYKLO1BlRs;aE#9-O|2WJib0E4e}v>$(n--mqn2;s z;XEw}fN3r`R>q)hNQMVIWx)JAlPc%-vO?`-dZyKFY0o00m6 zT01}-L|y?)7%T;XI&P!|qKx-l&*YF$h&398jl@~z6((4&!A3ilPSSd)nW%|WVbIDz zWU{~pfAbD{2dxn|ji<>?PJtRu+0DwgQwoV|Q=u5LKbit!s~p4aGSn5_FefzIGJnrr zfkFfPL-KE0* z0?tza>UZs;PBZ5@K^d>&=pb~?0hZpX_9V)Gi@rKQOl}iBVdmxQ!AHrPi=QFKX2k=_ zwfr|*V8-*4s;8GVmwg(6pQxXFN!>VIx$*%Z+7hyM=VoH0QFB2}!ftI0x~4$K!hZg4 zZ}Y_oN&$~MGb5M9BH(|Z)DiwU3Gfi$H1wdldB8Ug0!uWmHUb^|4_Xk16ArjO0u6!- zXI6qsew4IIZ1@9EoAaF1)J}09GE;0d3YKy`JQJa!<0oB!*hk_g4NLUQZwSp5W>~G% z;R*3s`TAX)kG*%*+>_)q40w1tDO0=Igod-Um&=#&is9h=*OS;)>MQF(u#JPazfS9C zi)KM0)SRKO=U8DBY1l3`nd~Ra-}GiH1@M!Fxg~tR;PFgDh}5qZWeUpQ3d?yc{Q+5o zOr_iK0?|%0Umq*1eVGb_$pP}in;^o_VDBhzrq$~d6Oou`p<##KIo6Gtasx86|Gb0Z zo+CSdRFcRgVC586u{O455Fak-%F>B0_RYU|t+ZvEqu? zO2s-^Di3x;asM%-*V4Nj_KJ=x5|ysEvBjZdi>dcX=}DnKl_x1rE>pBT&|L_%vy+#k9`WDU?p&aqUF0~VH02;{2a6|f$+*joW` ze8r79TnC3ej)_gkOZu6t_$g2uaQ|R9@6xL}VqA%!2Te<1ZxtQVR$|DyifcnS@|8Tg zKf=HlsMRA~$E^I^3X9i{L};79me`#*HVG~FCSl72XS85=&VlYx)5Jo9KxRMK00KXZ z<|@ksK3WwF6Hb%hdk2&*X2*0=QVcgnHC`%+0+HRggTFG(rp!qMQ&;~lO*+!g@;1ep zVK>pv5%_Bo#>yyc`;fyh-07XHGUgd=XwnOFi5l)x$keiTr^wtA{(Hdbt0ohnup2P~(wG<^hSG-w{9Z{E9U29`0wl zs+knfM9j#Oggj%hs7pybr0zGt5rK@TCMptpCeD%%F=#lo7o9^J&sPARv;y>I0uGNW z!-0BV-Opo>D?V@JR_aO@d%p}_)db^Wqjb(zzKOa_g-@M;a=6NoOg{gP>?qEJa2@y$ zrRBh$IUcI6cqHi9Z`G2C_ezwr+=jzydZPFMp+QrM{gQwOPQxPmw3MasiV&Qe;F|uW5K(zha-Ohp90_C84ma}x{QDF6SHG;%oP~^aG8)C{}8e-}=L|}Rf=WesyyFFEEXdpl5 zRzzi}7+)aIwy>w~;mZM)rWBVg*I9au%G-$Yq-MB{xTv^h67FcX1pZE;ACSBO^K{ZH z+9Y2TIu9y8H6~HQF*qxr*6HfqdLQl;(R}sijhB4=E2HbN+Shr_W57eIS4K{kT6;2- z%o=PixkqU35+l(FjC2^rnq)oaf}m7u6Qm=Aq}9#?Hc>FdGs)ZX5h8SINT^y@@-|2s zw3p3Z{D^C!hj_O9tQe$M!0x_FB`KP2;y@n(FAQrFh{45P+`%bhqUW*s$SyT>dv3p0 zFS~52gkDuXWPdN&o{pLyQnPqMgq*Q_arOb?9$)gwlNIzJHN!1{9kMLzXm6qLS?BMhcoA@{h}F4XaL^20(C2!!bXHN(oEgCAZ^mF8=1@Zvp-m;;$5c_u+4`r^dDs z+43lwq?0wbqKi>+6dJ=;zJVdP%-ETgFc2}R%-<7Uc97sK6K9_X@_MI;;bmktYBZWyaOmO#K>(lP-*997LKObJR5VHOWm(Vo>J62oi^7E zG--~Xj4?BvYzl5CpXwE!Ew&d?6EklGo^Q96BXtGF;-2*g1+|8&pmIuelp(o-M}yje zMnXX!8k#xP4{xK%2Q#;=}l=2*ikIVGZ~6CsSF9!Iv9|PDL^JCce$PPzzA?PLIm@f?L9Y z{WeT@*i*Zyx^e{6{uE>o=(DJYs5}M14p;ymsi@aw09&mC7dFzOP2L56|JP^23lt)cw-5lbJUWA&1tkBhsH|H*s?IW3_j)tJ>XEIUI$df zwC)wW0uob&sbw0eoFM$g!?6Ypic~TXKdYX{&+0_nNMT*|JFVzBojWqi-ck9jy~9(i zueuRaZ~+^)iNGKu^{XLx=9N;uT(*Ug3Ju7lVYEDckvt8arX%(6HZ^F~h71-w(&SdU z_+vQs(;OF3dIF`m*bATcplsTLo8xqrEv~gfKq|4dQX?E*z=cLk zpzp{dawtAflgw(8K}`xDt%#q|;tJ9jEUY`&@ZFl-QiHc20_`3u;pBt~ZFh1P;@b|W zv-Y2YV7{Gd00th9Yn>Brc`nZq{}idmusqLi`{&M2q7V(|hQ?!2hUO_D4>5R?Y<$A` z`+gQfW3BOt1$cnxz@Al~>EIK->Z}erLd2TGnXo;p&h%g?i;;Xp7dOEc%!5K}@b@tO zw&9O@Qsp;f3!;OoBZ=#-0{6r0^ViP$+YpnM4ZjDhA1KDi6z~Y&261#7gcP>#G$L$+ zVtO5j$8F|hiJ2DCH2bU+WRb!S(G7tSop#(- z$#@LHGf0on_M!0n{GTDMVgprpVl{ZG7hM9LxnQ^$plVNq!E?**P!n1@BlEUt#8{j#%@DlLUhhjDio@YM@g=bUK<>A3t zFdl9_Jmy7k3AXiQgzhk2w7<|1p;P(Ph3HYJSwrJ#6&N7L;bwHc2J=gJB$&t380#(f zZnfMrHXG%J5$V4`2fCIB=dZY9*NroV$mj&3)2Ug z&apfHuJy<7fJd!A6g*OYq!N9Elslof+_3I=md~*oCt|aS9#Ysex}iI^+jTecKz|UP-w?7=m_j$eqq`J52STwP2G2X#gbm_u&pSUEp7&nT;5mziXz+Z4 z#~?gQzw86gz%Y2W5dbOdZMp%TloH%8CLfqC3eVRqq44N_Dm+!}yZ_bTxh@FLNDZEA zXsodf?JCWNjjvlkra>HiO+ciuFX#rC<`-WArtzWF8iu3cVK9xwu|Ge0d~ITv8()zD zcyC5yHT?Yyk3sy+Lm6SP=7NNSutun`o+B6m>*AtIz&bq?^I@=FkFDe&J!WjVJggTP zUlabS;jau0(%>ntXN|zZVM6;C;rTfs1pJR~z|Wp}mw@NRP|SwG^Vqwg@I3$4 zPlTt6Jpq?wF6-<-$7=9w#UsI^j<4>|FEGB20Iflo9wVfrut(_zn7Z${1WX@=VmAz? zx0*s>+WF??VG5nUE<%6*d_jZnOLVjb-%&gU@%7uj_=*UF?Nvfh3VVrefGzP-u=zqU z9R}MGC}@J?siXe#uw4Y6&;P8!Gdu{75C%`vSAFPj97r~ZtIr4ktpDf+c$|f}UyQ#e zT@;@FVelmWba(~_;F*C2Y519p#~^-6Ad{dkgX`I!gJgs73{>HX)!?a~dkJ{vhGI4h zKeu2bHHaVQ8<)oqm#5=?4}tOUgy(}|V=qan>6CJK0_EzfpSTcyg_=inkT3NcH5}gv zuAnH(+|f{(Q2ot6;Q0OX`uFC*K|=|q_7UU0o8XET%v0xg%U|v*NlcP zD%dp>HebGLcpqE>zEK-A_*`h22H#9PhQmjl7J!dnCHU?JwFKcCs={Z{;H!0A0=}Y9 zq6vd4o+YI>%1+;-+a-iP}f2cCL? z32V~XEul>^^Cn$dC)Ud>@SwJj>-$vtNCSO049c!)YW0FCyLtmxkgc3JNTbx&-!aWEFW5h&HH81 z{6Hh`fZ7kMV$1PjX(SG=#R)|Ll4I-{u8RhhfhNx*G<6?30ONV^1?az!0Gz_i01yL+ zM)?i5f(hn+s&;&Uw98Q!S9%Am3=nvcRMEEthDW|Bm+e2U0mC=JSv;T#9Uf^YgWG(A zH27dZvr$ZM8G*La{c`P{kFvG)u18bZpN@sMcjwbTpuN|Gx3`q~Gh{f|p^P8ZULQ`Z zgmFp)_=-@Q7J-o!7~4Y4we%B%*g%!g{v;0oidc7RX`GkCom!Aq;R%*Vm)kuU0G)O9 zJMm!3VfzQd+V?<_d=KI4CkYYQLlA2Jfp@TI$t$J&In2FBr+X`OAEBV{K7tbEWJivj z^*_a}eX!k=$PG~DA^0L$l+fNT(YAMh@XEPq1#HlCbz2Cp*-dI5#6bppRiP zkZgth7c6mLAX3wX@5w;(8-h2AT=?45nN!)n+Emvs<5oK74i;;N(%}(aeiP18gd_N} zpJ9IthewcGYGU$krNyupnavUWP&}zwFYVJI>_kHO!Kx@Ya>p;(3%QCsNmgEP1BS|~ zo;XD7z?13*4D2Alx&QGyt@Feiu!99ZW@{d{bM3n?+HvHUVOB|rK5(+hGx(NgJm?$e zapOmD&VYekE_*=D48OscJT_2G$L3p10gDXF95Ns#!aZYRjN6df(8M>yFDTD|{>+?( z<-LaO3c?hzsI<8w#7SYSayJz5LGJzO--vt9wuQTV%(m4PU#$&p!jN5^3$O<~>Oa`3 zY$X#A1hp8%jc1?zcj&-h9j%U}-pqrW+^5h*2OVi}%`eT*X-7omL!3oDVXJ z5#HI8%RbHlCBTdU9Tgz3x~SFBhEq6lu|D9c37go5OwCagP~`%9YUb*R{dMjr!zpa2 zomTNVgX8nl#{>AB3iMbteBS#3YUFlAWqW0LIb(f?T5|z%}ZBt96u6`xTqL7#L;#GCypPK0QM3E$z<`cW5Gu z57ce6KrPEYC$uNGuC~-!^%=BFNvsS# ze$gG?*y@QRH0JVMC^6pt8?BFV$X<}S93jgSSb2hHb7IWtON?JR!k7pdtpDLC?>>A6 zw*Em_dN@7u9rNhdBG0GC7U=ea^my>EKZG7rA%tSnb{f$myAiBXIm_{y2!&n8l)XpL4R>DVosI7N;GN)wY&oo7}&XwsK~X#mDp zWHW(zPov5u;g#)Env*}K^IZc|8Ok6(&3KQQthW+)_m!IIInz-yZktQ6?FGZc^b>ZYWTVLgXD@_6W=h^^yP640vWa%k#TShC^ z7#d~f^`*=_b>IcWK%z`t8>h@Xc2ihd$ZV#`ci@*cGLnQv#|7#08f-uW=`;N=KZHJi z3&AizpRm4(XTJegQ|PSEq!0>i_%A4Q1SB~=vD7`*OQHQpx(iZhf2__fZLLB4au@sE zot#3|0o2PgVNnI1*~9%^6r5CIBhO@&XHMW0*@seb2It=ns+7vj&BG~`3P|Xs)W;EL z1PqdRXHs&LXI2X6)OkyQcaqhK$~$)+;y4VTRpp)gV7AK%krQRrjhq^jmS0b{QaY~* zgqMhNVIv)Z?zV6O%`!A`R=U6ZQ%;{r%MKz-ymB!405MYoXQnu)JOKm^Vop>uSJ_ZB zTDY9YUe*X*OVbEF351TGAwoxZjj8dl*6t$|0M2r-;hVsQr`dg#-`Rbh<@zef1n|}W zV2y@4&W6p(OsfkrUcq~u4MPeEu;GVcX+zG8u(X*v!oU_`M2E<7MC^k;;T;7wjF1{x zVdnCj3Be+LUI@i8L8*v=Pe* z&WAqM@Dj)AKuF`Y69cFWPJ?>2g#lFVLTP4LSpNaxMGzg_?_NUlE81^WPO@6OL^o!^ z?P%!gEPa-(VPdtr6O?)%PY}QGCL{S8rFr#qeMa@C4b^9=-KP~_a!&!p>#*Yd?CG3W z7`ljTSLf-cR)5w|eU>u4&yutn#ovGg%#Z;fn>Pde3yO1es`mL3x+>8LN&tH#(FG** zr_*F31Qat;#h^wRWQ5C z^aThI;>XEfaHA8Aiq|`kf{+VOG;|%h;*j+32w2qmSI^N;3*eW_UoL%C0F^j?o6J0K z!IZWR_ZvC=VC-f9$i&q;PBY&C`b2UQW8-+Eh1xsFG&!Wnmy)d9Unn#1=S(1r;=njx`C1hoKw;J#82J3MHKD3H)2#~^RJ$T9V zD zH<=hV`KD%Lst&=CJWF7VhG`(oWKrX!BSSdp993d)G3ik%kS2~>JkxMcRu)#vtbYUN z0&kL{Ay2LZ6Qv_Mz(ljaL`T^}nP@KC`w?$a9y5g{gbl$fv2_p}fsg#8!hGC})+WjDQevLytF0KvM{9`oy1hp0CuTHKFE7i_Ry_}Zf3BJ}x z{H-uy-N&BUs3L<%lr5NWA!K~=Vd%&(oNJEODZA#drHGFN5=c`%4svKumKx8;zHP~1 zJahi2tBaljQND4GecRG+!Qk!uJF)drTBwVm?`JhZ^kEVq!4jd!-rNH8aUF@7%a-aQ zF=z+OT5k$R--^8)BASPC*h^uFs(#f6{zR^i%JP(YU7~6+Eslr9aJ-AXBw-w6S>NRE zF?^MwARBoIx?&JQc;KkDumjiNai`c}6VD$1@~mHYV_L#LB45_U$2w3E5HKSgtF7k&|ENq@O0z=&*`LN$|3fx)k3=VYa zp+&W`6U4E3Wf?B^%p+(0Z>e1Y+y7`e3SEQ#us6BQWf@?2zr@ZBexnDt(muU7P0T7Y z7qGih>AflSLpduA&RG_5m~44-!N6z>od5w`(xG+5DRS|6?@+mt?uf095&GsPHH+*t z=_@S*immCzDdKhM#pA^>e8jMS{pzg046g5VXioz3kK>e)0KLmd975wALFXz(ur#n{ z?5S9gksU@B?5V^nzP6D{R+=)Guivv`bU2V!8_q@YI%8j@KayCE{8{Jf+tU$T8~CCHa;C zIX1rE2z_Xq4zCU)I3ItD#`1)gDSX2yJa=!O^Y%8-e&BfnaxhzqvB=}m&^!vSN9sS2 z8XV*911>Qn?@}zT(qqxlP}TiA8fjT+AV#*r#2=lk{92+yqg0us7jKp-$HILQduTcW}O=8fdp=(T*xMgbLU<+e6-~O%AjdJFiPan8#rDZ;X@+wpFP4 z6E&OKE7UxRM^{T0-z8HlrO%tF=}Ez+lXDTWI$2|q)^s#?HgE29B`ZmpJr=m4Llq{{ zkx@9p2uC%kP~@=zDiplak6sTLj^1a>IC2J%6INk}|gY4R-P`(84}6viq~ z3!Gma4qNoaU~>-ut5WS(+lu4aQAm@0LI!H*VTYIZ#;S|-l~!Io9pZ!X)}CJ;TFyiE z_wD|L7cDYbapAZS@&_?M7C3Cj_H?F=VxgMRKQL$rRCX1w3>^`+#Sp;v1?lsf>Wjhg zKj4#aN5x8fbX6o=&X*-%TU9zhXG)}@`iZDI4H#h0G)3sV5eL5pSf1q^8|U~OsF~;n z_5&|6J|4Je{Yky`k5KC$dcpd`tF8{OniD*Rr7yL!da}-)z|YSRHXG?6(Q7z$Liml! zN;BRfwy!qcWaz=($DP7vY;Z8pH^yC^f$K|FM=lF@lA)$2g)a#mQpf?1VvW=+g46_q_!#KEvv`Zrn@i zW*P%0ora80z8^tTvq5!Wfun08f`*Z^D_>9wHLuZ-oT(Wcynr9Ha&kfh267VMZ%IF= zs6Ugy{%z8`I|dDj%rZ)9E1~0&RZMwI>Yo%b?W>8W=#hb z7APwxdKRPd-&LaWmZyNT3z=?&?x>R{Cm(0od81T+RAKX@-vOamTLu<-ZUH~U{`8Yf z1H4AkhzRdIdK%f3wHi&v_ zG;wEy%}-Ke5HnSH=Sga5ZgLaV_I+kIt&1_$#05$)R!=wJ+$i%ZzYo*8@CZ(3fT|;; zKfe0I59*H-$fm4ibbaMCU7zc~72N@DMcsix!lQnKcLzV`FCXU$=YmAh!1>T?O7A9K zs5}0Veev#)S}c-(f$&H+FjS%*q^2HB0r{*2B;9*Na~T}Z*^_)8<&4qEuDMF53m$0( z&ur-yFb71=o^C40@$XY^1Pajfhd`QmoR^WOmLab&wPf(^*_I4GpUY7g_Yi># zNCsv*Msdy&9Md=~3+G>>m71VKngzGbLI-`1BdH0x*LZ%ecWeQ~(Id!6;wWdnipzw! z+PP@bG6;Q$UM+qMnJ?IM&MQp&hkU4m1FeqF92%hcW*noIVRR|u zlw6~Iml$i`CdMErEe%KewyORR3wJFgmpT51?~bc;xXKAb`5_n15QM5tf3TtLOA`Gu zAL`eJ0~-(`6QyYqUp*S+cSrJ)0%KmPC)+F?VkA~?#2v@>g-wq;rAf|BaTr%o{Hvx? zp0>&}d zZ(NOqDncN@UtP6LL=2xOgn57)KU~q}`;GGbCh44CG$L`5^eJYypyVJdQcNyu0gKTD6J8(sED9OT#W-V}8XJKJaLGJ`i;fl^jR9N2 zVUb$~M_Z&yIsw=Rq)?nC*ruejEQVHj1z_paj!!WKip|;gpZCK*u;2Z&r zBHznYKM7&Tn&Vl4{xT!xh&7kjfZ}cFF9f61P@|P))VXh^RtL-3^aIK<_9=&eR$Hg| z|89-8Y(lTlJ@8Dw6Yy7xKf(e8u@<8ZAaFyS$LS6lT!Xtt>7wnTG!9HeV>l9~lsF=N zkJ09&sjJjjjc_ym!HZQ2Nmr~k?8X%2`Uh95Z?06#Hf1pXB-3WZH#wzxRD%o)sM}GD ze{eZHA(e_xZP3Vp+RI0j6_fcH?Eig2LJ0_fj(q0i56v)fq_ONO3~ux_*8G0)7p047 zfa-B3x55pTOnmsNp+ihfWUIu{NMeE!RH#G*_`oui4}hHS18>6ZE>0^1CEB=91?N?o zw~>~I)nennvEU!h3mJzz=pTqno#!|~qr>8~kjNCX#MD%30cuLCaZwIzU4R=qv7Jw1 z>hR+|3-|)<1iq9E;*s>fF3?1i+C*3kHXs;m6q$JdiyylCp+!+G5%e?2!>C6wc1#rP z#*+FWdzlY4V{ZnPAH%+di%c-AGUABlJY~4_Hs_1{C~hn5bGyxoL>v-bY~}~EK{5f^ zLknJEW-m~PZ1npGl%jP#8<@o*(>k6DXy7HZ<@s|WBuzb`b=mu@=`8OuDjvyUk)&zt zw`7ncij}@m8Fzj!zR(JWN;9P!Cxg6;^Ry858~|G}x6eC;By1rd9==dZFs*+X@)yEw zmm@PpYKo`rjRf}EUnw6q89@|`GMJpjFV7*vGk2yIZwLj(=P@rFD75o@#p_T+qKh&3 z$)N&lx^=pTQjnfzh&ML29x*nN!N%s|lc}K7m%M{ev_K7GRy`zAzDtKJX3m+2W3c%V zT(^hZcdAS_8e~VD7t3IIwuu;?cq1_)F-4J{2RJ~wS@|ttCfC0Qt-w?w5ty>{G`~L2 zuawTC4bi;EYol8EJl|UZBE@GJz0U-BH9c{D>|+1?9f@IxE)}VUE|cD=Ly6#q8*qid z%&b_;qA7^Z?iEUp;U)WUq}nTt;8lK4`LU_A=*=`dD5sR~abQqKzWjH3&$76OGKQOY z1OFI1Hm7R%x~OGpW@}T_X01N)Njd;JNo@?yRW06T)Tsr2N3lAIP~@kmMB=Ks%#ZmG zt=2Mfz|a^z{}5aj@MotB_8gEg38fZbCq}uE`4GmEI%}I*w=?T@6@?VKF zuvrUzfaqKps^-p&8Tw+;*qm`&1o34mBlI82Lo7Sji@agzuwhE8%k!Xq^#F>Ia0bmb zC+{kj`)xB32qtJ`=`o}Ld~c@lOznq&QI4aBIB&xHgdFzwG2i2aGYK1jI2;-V>u?fk$_MS1I(ONYL1OPqv)}rbgpzLg;prPQOVDQl3Kn?z3D^b1$1RC0B zf%RPA><+{k%{C#14jauiK7F&R^h(n6&FCAf0rcfJ2wSsmw)?8CWsBd(n46uUWWL#r zp1(qA4eNNT)<0&%$px-sRe*c^AT^Ma3mL5qRae>{A-= z@80qjP-!Tgj6c;;b3{^(b|t{pT3m0FF9D= zPibFZz5#)W&~sz%cxdZcKf7x&S81DI9rFo(L!*uJdn_ew@g(t|PY>MQB2Yj&6;Sg4 zaNEQ6=2rG3-jF^W?4YDrhBDqr(+@9(FRu{y24WM_AsZ<|(jMYnPM@>+cnAC4k*a~> zZ2@}>6cwMmtwh#SBsjI>add5o9HIU0rSH)4pMMACM>yGmmBI46@ebu*L*+-n-g}W^ zf?3TXC_2AW>)7ivpxler1N;)3G^TF%MkuCLD>!!)2jctTP+MKeS#D|r*rJo2rGqflR&7?A%GGYNE3eCBIRO+)DO9C@cj{9SfRH!c3At zj0ighRxCx!a8!;fpT$4N*X)>9DI(1c=?Kv8PUd!YWDm#Vdr{8hZBArP}AA8`+-l8L|c3~GekRi`lG)@I+!BglnBp4>4f9kS8yC)R3)k$H?SYu z%O5Yyc=`9hp|$t>Bz073--i!Qlo1%57h&K5{%3AO{Fy%PO~*jP82XػXFIX>| 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

0>b;h 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

R5s2dPd3yEPbAZ{ADkOvmf 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 F{{v-S + + + TvdbLib + + + +

+ An input buffer customised for use by + + + The buffer supports decryption of incoming data. + + + + + Initialise a new instance of with a default buffer size + + The stream to buffer. + + + + Initialise a new instance of + + The stream to buffer. + The size to use for the buffer + A minimum buffer size of 1KB is permitted. Lower sizes are treated as 1KB. + + + + Call passing the current clear text buffer contents. + + The inflater to set input for. + + + + Fill the buffer from the underlying input stream. + + + + + Read a buffer directly from the input stream + + The buffer to fill + Returns the number of bytes read. + + + + Read a buffer directly from the input stream + + The buffer to read into + The offset to start reading data into. + The number of bytes to read. + Returns the number of bytes read. + + + + Read clear text data from the input stream. + + The buffer to add data to. + The offset to start adding data at. + The number of bytes to read. + Returns the number of bytes actually read. + + + + Read a from the input stream. + + Returns the byte read. + + + + Read an in little endian byte order. + + The short value read case to an int. + + + + Read an in little endian byte order. + + The int value read. + + + + Read a in little endian byte order. + + The long value read. + + + + Get the length of bytes bytes in the + + + + + Get the contents of the raw data buffer. + + This may contain encrypted data. + + + + Get the number of useable bytes in + + + + + Get the contents of the clear text buffer. + + + + + Get/set the number of bytes available + + + + + Get/set the to apply to any data. + + Set this value to null to have no transform applied. + + + + This filter stream is used to decompress data compressed using the "deflate" + format. The "deflate" format is described in RFC 1951. + + This stream may form the basis for other decompression filters, such + as the GZipInputStream. + + Author of the original java version : John Leuner. + + + + + Create an InflaterInputStream with the default decompressor + and a default buffer size of 4KB. + + + The InputStream to read bytes from + + + + + Create an InflaterInputStream with the specified decompressor + and a default buffer size of 4KB. + + + The source of input data + + + The decompressor used to decompress data read from baseInputStream + + + + + Create an InflaterInputStream with the specified decompressor + and the specified buffer size. + + + The InputStream to read bytes from + + + The decompressor to use + + + Size of the buffer to use + + + + + Skip specified number of bytes of uncompressed data + + + Number of bytes to skip + + + The number of bytes skipped, zero if the end of + stream has been reached + + + The number of bytes to skip is less than or equal to zero. + + + + + Clear any cryptographic state. + + + + + Fills the buffer with more data to decompress. + + + Stream ends early + + + + + Flushes the baseInputStream + + + + + Sets the position within the current stream + Always throws a NotSupportedException + + The relative offset to seek to. + The defining where to seek from. + The new position in the stream. + Any access + + + + Set the length of the current stream + Always throws a NotSupportedException + + The new length value for the stream. + Any access + + + + Writes a sequence of bytes to stream and advances the current position + This method always throws a NotSupportedException + + Thew buffer containing data to write. + The offset of the first byte to write. + The number of bytes to write. + Any access + + + + Writes one byte to the current stream and advances the current position + Always throws a NotSupportedException + + The byte to write. + Any access + + + + Entry point to begin an asynchronous write. Always throws a NotSupportedException. + + The buffer to write data from + Offset of first byte to write + The maximum number of bytes to write + The method to be called when the asynchronous write operation is completed + A user-provided object that distinguishes this particular asynchronous write request from other requests + An IAsyncResult that references the asynchronous write + Any access + + + + Closes the input stream. When + is true the underlying stream is also closed. + + + + + Reads decompressed data into the provided buffer byte array + + + The array to read and decompress data into + + + The offset indicating where the data should be placed + + + The number of bytes to decompress + + The number of bytes read. Zero signals the end of stream + + Inflater needs a dictionary + + + + + Decompressor for this stream + + + + + Input buffer for this stream. + + + + + Base stream the inflater reads from. + + + + + The compressed size + + + + + Flag indicating wether this instance has been closed or not. + + + + + Flag indicating wether this instance is designated the stream owner. + When closing if this flag is true the underlying stream is closed. + + + + + Get/set flag indicating ownership of underlying stream. + When the flag is true will close the underlying stream also. + + + The default value is true. + + + + + Returns 0 once the end of the stream (EOF) has been reached. + Otherwise returns 1. + + + + + Gets a value indicating whether the current stream supports reading + + + + + Gets a value of false indicating seeking is not supported for this stream. + + + + + Gets a value of false indicating that this stream is not writeable. + + + + + A value representing the length of the stream in bytes. + + + + + The current position within the stream. + Throws a NotSupportedException when attempting to set the position + + Attempting to set the position + + + + Class representing the result of a tvdb name query -> for further information + visit http://thetvdb.com/wiki/index.php/API:GetSeries + + + + + TvdbSearchResult constructor + + + + + TvdbSearchResult constructor + + Id of series + + + + Id of the returned series + + + + + Name of the returned series + + + + + When was the returned series aired first + + + + + Language of the returned series + + + + + Overview of the returned series + + + + + Banner of the returned series + + + + + Imdb id of the returned series + + + + + A cache provider stores and loads the data that has been previously retrieved from http://thetvdb.com. + + + + + Initialises the cache, should do the following things + - initialise connections used for this cache provider (db connections, network shares,...) + - create folder structure / db tables / ... if they are not created already + - if this is the first time the cache has been initialised (built), mark last_updated with the + current date + + TvdbData object + + + + Closes the cache (e.g. close open connection, etc.) + + true if successful, false otherwise + + + + Completely refreshes the cache (all stored information is lost) + + true if the cache was cleared successfully, + false otherwise (e.g. no write rights,...) + + + + Remove a specific series from cache + + the id of the series + true if the series was removed from the cache successfully, + false otherwise (e.g. series not cached) + + + + Loads all cached series from cache -> can take a while + + The loaded TvdbData object + + + + Loads the available languages from cache + + A list of TvdbLanguage objects from cache or null + + + + Loads all series from cache + + A list of TvdbSeries objects from cache or null + + + + Load the give series from cache + + Id of the series to load + The TvdbSeries object from cache or null + + + + Load user info from cache + + Id of the user + TvdbUser object or null if the user couldn't be loaded + + + + Saves cache settings + + settings + + + + Save the language to cache + + List of languages that are available on http://thetvdb.com + + + + Saves the series to cache + + TvdbSeries object + + + + Saves the user data to cache + + TvdbUser object + + + + Save the given image to cache + + banner to save + id of series + filename (will be the same name used by LoadImageFromCache) + + + + Loads the specified image from the cache + + series id + filename of the image (same one as used by SaveToCache) + The loaded image or null if the image wasn't found + + + + Receives a list of all series that have been cached + + A list of series that have been already stored with this cache provider + + + + Check if the series is cached in the given configuration + + Id of the series + Language of the series + are episodes loaded + are banners loaded + are actors loaded + true if the series is cached, false otherwise + + + + Removes the specified image from cache (if it has been cached) + + id of series + name of image + true if image was removed successfully, false otherwise (e.g. image didn't exist) + + + + Is the cache provider initialised + + + + + Class representing an episode with all the information that can be retrieved from http://thetvdb.com.
+
+ Those are:
+ 332179
+
+
+
+
+ |Joseph McGinty Nichol|
+ Chuck Versus the World
+ 1
+ 2007-09-24
+ |Julia Ling|Vik Sahay|Mieko Hillman|
+
+ English
+ Chuck Bartowski is an average computer geek...
+
+ 9.0
+ 1
+ |Josh Schwartz|Chris Fedak|
+
+
+
+
+ episodes/80348-332179.jpg
+ 1201292806
+ 27985
+ 80348
+ + ]]> + Additionally the banner image is stored +
+
+ + + Default constructor for the TvdbEpisode class + + + + + Returns a short description of the episode (e.g. 1x20 Episodename) + + short description of the episode + + + + Updates all information of this episode from the given + episode... + + new episode + + + + if the episode is a special episode -> Before which season did + it air + + + + + if the episode is a special episode -> Before which episode did + it air + + + + + if the episode is a special episode -> After which season did + it air + + + + + Is the episode a special episode + + The fields airsafter_season, airsbefore_episode, and airsbefore_season will only be included when the episode is listed as a special. Specials are also listed as being in season 0, so they're easy to identify and sort. + + + + + Which DVD season is this episode + + + + + The Dvd Episode Number + + + + + The DVD Disc Id + + + + + The chapter of this episode on the dvd + + + + + unique tvdb Id of this episode + + + + + Id of series this episode belongs to + + + + + Id of season this episode belong to + + + + + When was the episode last updated + + + + + Path to the banner image on http://thetvdb.com + + + + + The absolute number of the episode + + + + + List of writers for this episode + + + + + Season number of this episode + + + + + Rating for this episode + + + + + Production code for this episode + + + + + Overview of this episode + + + + + Language of this episode + + + + + Imdb number of this episode + + + + + List of guest stars that appeared in this episode + + + + + When did the episode air first + + + + + Episode number + + + + + Name of the episode + + + + + List of directors for this episode + + + + + n/a + + + + + n/a + + + + + Formatted String of writers for this episode in the + format | writer1 | writer2 | writer3 | + + + + + Formatted String of guest stars that appeared during this episode in the + format | gueststar1 | gueststar2 | gueststar3 | + + + + + Formatted String of directors of this episode in the + format | director1 | director2 | director3 | + + + + + The episode image banner + + + + + While one would think that the episode number would be a simple affair there are several different ways that someone might choose to number the episodes on this site episodes are numbered in the order they aired on TV. That being said the site does provide two alternative numbering methods.

+ 1. Absolute Episode Order
+ 2. DVD Release Order
+
+ More information on the topic can be found at: http://thetvdb.com/wiki/index.php/Category:Episodes +
+
+ + + Default order used by thetvdb + + + + + As everyone knows series can air on tv in an order completely different than the one intended by the series creator. Firefly being the most often discussed example on this site. Therefore we have provided a method for entering this "Correct" order. See also http://thetvdb.com/wiki/index.php/DVD_Order + + + + + The standard for this site is the the primary episode number is representative of the shows aired order. But as any Anime fan will tell you Anime episodes are usually numbered without seasons and go from episode 1 to whatever the final episode is, often into the hundreds. Most western broadcasters however do break these shows into seasons, so in order to accommodate this alternate numbering scheme an additional field Absolute Number is available. While this system is primarily intended for Anime series that don't really have seasons, it will work for any program. To use this interface there is no alternate season number only the absolute episode number. Numbering continues on from season to season. So if season 1 ends with 25 then season 2 begins with 26. So for example Bleach is currently in it's "sixth season" but season 5 episode 14 Shock! The Father's True Character is actually episode 111. + + + + + Exception thrown when no user has been found + + + + + Base excpetion for tvdblib + + + + + TvdbException constructor + + Message + + + + TvdbException constructor + + + + + TvdbUserNotFoundException constructor + + Message + + + + A function has been called that needs an initialised cache but the InitCache function + hasn't been called yet + + + + + TvdbCacheNotInitialisedException constructor + + Message + + + + TvdbCacheNotInitialisedException constructor + + + + + Tvdb Handler for handling all features that are available on http://thetvdb.com/ + + http://thetvdb.com/ is an open database that can be modified by anybody. All content and images on the site have been contributed by our users. The database schema and website are open source under the GPL, and are available at Sourceforge. + The site also has a full XML API that allows other software and websites to use this information. The API is currently being used by the myTV add-in for Windows Media Center, XBMC (formerly XBox Media Center); the meeTVshows and TVNight plugins for Meedio; the MP-TVSeries plugin for MediaPortal; Boxee; and many more. + + + + + Creates a new Tvdb handler + The tvdb handler is used not only for downloading data from thetvdb but also to cache the downloaded data to a persistent storage, + handle user specific tasks and keep the downloaded data consistent with the online data (via the updates api) + + The api key used for downloading data from thetvdb -> see http://thetvdb.com/wiki/index.php/Programmers_API + + + + Creates a new Tvdb handler + + The cache provider used to store the information + Api key to use for this project + + + + Load previously stored information on (except series information) from cache + + true if cache could be loaded successfully, false otherwise + + + + Completely refreshes the cache (all stored information is lost) -> cache + must be initialised to call this method + + true if the cache was cleared successfully, + false otherwise (e.g. no write rights,...) + + + + Search for a seris on tvdb using the name of the series using the default language (english) + + Name of series + List of possible hits (containing only very basic information (id, name,....) + + + + Search for a seris on tvdb using the name of the series + + Name of series + Language to search in + List of possible hits (containing only very basic information (id, name,....) + + + + Searches for a series by the id of an external provider + + external provider + id of the series + The tvdb series that corresponds to the external id + + + + Gets the series with the given id either from cache (if it has already been loaded) or from + the selected tvdb mirror. + + To check if this series has already been cached, use the Method IsCached(TvdbSeries _series) + + Tvdb is not available + The given api key is not valid + id of series + language that should be retrieved + if true, the full series record will be loaded (series + all episodes), otherwise only the base record will be loaded which contains only series information + if true also loads the extended actor information + if true also loads the paths to the banners + Instance of TvdbSeries containing all gained information + + + + Gets the series with the given id either from cache (if it has already been loaded) or from + the selected tvdb mirror. If this series is not already cached and the series has to be + downloaded, the zipped version will be downloaded + + To check if this series has already been cached, use the Method IsCached(TvdbSeries _series) + + Tvdb is not available + The given api key is not valid + id of series + language that should be retrieved + Instance of TvdbSeries containing all gained information + + + + Gets the series with the given id either from cache (if it has already been loaded) or from + the selected tvdb mirror. If you use zip the request automatically downloads the episodes, the actors and the banners, so you should also select those features. + + To check if this series has already been cached, use the Method IsCached(TvdbSeries _series) + + Tvdb is not available + The given api key is not valid + id of series + language abbriviation of the series that should be retrieved + if true, the full series record will be loaded (series + all episodes), otherwise only the base record will be loaded which contains only series information + if true also loads the paths to the banners + if true also loads the extended actor information + If this series is not already cached and the series has to be downloaded, the zipped version will be downloaded + Instance of TvdbSeries containing all gained information + Exception is thrown when there was an error parsing the xml files. + Feel free to post a detailed description of this issue on http://code.google.com/p/tvdblib + or http://forums.thetvdb.com/ + The stored api key is invalid + The tvdb database is unavailable + + + + Gets the full series (including episode information and actors) with the given id either from cache + (if it has already been loaded) or from the selected tvdb mirror. + + To check if this series has already been cached, pleas use the Method IsCached(TvdbSeries _series) + + Tvdb is not available + The given api key is not valid + id of series + language that should be retrieved + if true also loads the paths to the banners + Instance of TvdbSeries containing all gained information + Exception is thrown when there was an error parsing the xml files. + Feel free to post a detailed description of this issue on http://code.google.com/p/tvdblib + or http://forums.thetvdb.com/ + The stored api key is invalid + The tvdb database is unavailable + + + + Gets the basic series (without episode information and actors) with the given id either from cache + (if it has already been loaded) or from the selected tvdb mirror. + + To check if this series has already been cached, please use the Method IsCached(TvdbSeries _series) + + Tvdb is not available + The given api key is not valid + id of series + language that should be retrieved + if true also loads the paths to the banners + Instance of TvdbSeries containing all gained information + Exception is thrown when there was an error parsing the xml files. + Feel free to post a detailed description of this issue on http://code.google.com/p/tvdblib + or http://forums.thetvdb.com/ + The stored api key is invalid + The tvdb database is unavailable + + + + Returns if the series is locally cached + + Id of the series + Language + Load Episodes + Load Actors + Load Banners + True if the series is cached in the given configuration + + + + Retrieve the episode with the given id in the given language. + + Note that the episode is always downloaded from thetvdb since it would + be practical to load each and every cached series to look for the + episode id + + id of the episode + languageof the episode + The retrieved episode + Exception is thrown when there was an error parsing the xml files. + Feel free to post a detailed description of this issue on http://code.google.com/p/tvdblib + or http://forums.thetvdb.com/ + The episode/series/banner couldn't be located on the tvdb server. + Exception is thrown when thetvdb isn't available. + + + + Retrieve the episode with the given parameters. This function will find + episodes that are already cached. + + id of the series + season number of the episode + number of the episode + language of the episode + The sorting order that should be user when downloading the episode + The retrieved episode + Exception is thrown when there was an error parsing the xml files. + Feel free to post a detailed description of this issue on http://code.google.com/p/tvdblib + or http://forums.thetvdb.com/ + The episode/series/banner couldn't be located on the tvdb server. + Exception is thrown when thetvdb isn't available. + + + + Retrieve the episode with the given parameters. + + id of the series + When did the episode air + language of the episode + The given api key is not valid + The retrieved episode + Exception is thrown when there was an error parsing the xml files. + Feel free to post a detailed description of this issue on http://code.google.com/p/tvdblib + or http://forums.thetvdb.com/ + The episode/series/banner couldn't be located on the tvdb server. + Exception is thrown when thetvdb isn't available. + + + + Get the series from cache + + Id of series + + + + + Update all the series (not using zip) with the updated information + + true if the update was successful, false otherwise + + + + Update all the series with the updated information + + download zipped file? + In order to update, the cache has to be initialised + true if the update was successful, false otherwise + Exception is thrown when there was an error parsing the xml files. + Feel free to post a detailed description of this issue on http://code.google.com/p/tvdblib + or http://forums.thetvdb.com/ + The stored api key is invalid + Exception is thrown when thetvdb isn't available. + + + + Update all the series with the updated information + + download zipped file? + Specifies the interval of the update (day, week, month) + true if the update was successful, false otherwise + Exception is thrown when there was an error parsing the xml files. + Feel free to post a detailed description of this issue on http://code.google.com/p/tvdblib + or http://forums.thetvdb.com/ + The stored api key is invalid + Exception is thrown when thetvdb isn't available. + In order to update, the cache has to be initialised + + + + Update all the series with the updated information + + download zipped file? + Specifies the interval of the update (day, week, month) + If yes, will reload all series that haven't been updated longer than the update period (which means + that only a reload can guarantee that the data is up to date. Should only be used when the data hasn't + been updated for over a month (otherwise use monthly updates) + true if the update was successful, false otherwise + Exception is thrown when there was an error parsing the xml files. + Feel free to post a detailed description of this issue on http://code.google.com/p/tvdblib + or http://forums.thetvdb.com/ + The stored api key is invalid + Exception is thrown when thetvdb isn't available. + In order to update, the cache has to be initialised + + + + Gets the date of the last (successfull) update from thetvdb + + Date of last update or null if no previous update or cache not initialised + + + + Aborts the currently running Update + + if true, all changes that have already been + made will be saved to cache, if not they will be discarded + + + + Make the update + + interval of update + zipped downloading yes/no + true if successful, false otherwise + + + + Update the series with the banner + + + + true, if the banner was updated successfully, false otherwise + + + + Update the series with the episode (Add it to the series if it doesn't already exist or update the episode if the current episode is older than the updated one) + + Series of the updating episode + Episode that is updated + Progress of the update run + Description of the current update + true if episode has been updated, false if not (e.g. timestamp of updated episode older than + timestamp of existing episode + + + + Download the new series and update the information + + Series to update + When was the last update made + The progress done until now + true if the series has been upated false if not + + + + Reloads all language definitions from tvdb + + true if successful, false otherwise + + + + Closes the cache provider (should be called before exiting the application) + + + + + Returns all series id's that are already cached in memory or locally via the cacheprovider + + List of loaded series + + + + Forces a complete reload of the series. All information that has already been loaded (including loaded images!) will be deleted and reloaded from tvdb -> if you only want to update the series, use the "MakeUpdate" method + + Series to reload + The new TvdbSeries object + + + + Forces a complete reload of the series. All information that has already been loaded will be deleted and reloaded from tvdb -> if you only want to update the series, use the "MakeUpdate" method + + Series to reload + If yes, also deletes previously loaded images + The new TvdbSeries object + + + + Forces a complete reload of the series. All information that has already been loaded (including loaded images!) will be deleted and reloaded from tvdb -> if you only want to update the series, use the "MakeUpdate" method + + Series to update + Should episodes be loaded as well + Should actors be loaded as well + Should banners be loaded as well + The new TvdbSeries object + + + + Forces a complete reload of the series. All information that has already been loaded will be deleted and reloaded from tvdb -> if you only want to update the series, use the "MakeUpdate" method + + Series to update + Should episodes be loaded as well + Should actors be loaded as well + Should banners be loaded as well + If yes, also deletes previously loaded images + The new TvdbSeries object + + + + Gets the preferred language of the user + + user information has to be set, otherwise TvdbUserNotFoundException is thrown + + preferred language of user + Exception is thrown when there was an error parsing the xml files. + Feel free to post a detailed description of this issue on http://code.google.com/p/tvdblib + or http://forums.thetvdb.com/ + The user doesn't exist + The tvdb database is unavailable + + + + Check if series is in the list of favorites + + + + + + + + Gets a list of IDs of the favorite series of the user + + id list of favorite series + Exception is thrown when there was an error parsing the xml files. + Feel free to post a detailed description of this issue on http://code.google.com/p/tvdblib + or http://forums.thetvdb.com/ + The user doesn't exist + The tvdb database is unavailable + + + + Get the favorite series of the user (only basic series information will be loaded) + + Which language should be used + List of favorite series + Exception is thrown when there was an error parsing the xml files. + Feel free to post a detailed description of this issue on http://code.google.com/p/tvdblib + or http://forums.thetvdb.com/ + The user doesn't exist + The tvdb database is unavailable + + + + Adds the series id to the users list of favorites and returns the new list of + favorites + + series to add to the favorites + new list with all favorites + Exception is thrown when there was an error parsing the xml files. + Feel free to post a detailed description of this issue on http://code.google.com/p/tvdblib + or http://forums.thetvdb.com/ + The user doesn't exist + The tvdb database is unavailable + + + + Adds the series to the users list of favorites and returns the new list of + favorites + + series to add to the favorites + new list with all favorites + Exception is thrown when there was an error parsing the xml files. + Feel free to post a detailed description of this issue on http://code.google.com/p/tvdblib + or http://forums.thetvdb.com/ + The user doesn't exist + The tvdb database is unavailable + + + + Removes the series id from the users list of favorites and returns the new list of + favorites + + series to remove from the favorites + new list with all favorites + Exception is thrown when there was an error parsing the xml files. + Feel free to post a detailed description of this issue on http://code.google.com/p/tvdblib + or http://forums.thetvdb.com/ + The user doesn't exist + The tvdb database is unavailable + + + + Removes the series from the users list of favorites and returns the new list of + favorites + + series to remove from the favorites + new list with all favorites + Exception is thrown when there was an error parsing the xml files. + Feel free to post a detailed description of this issue on http://code.google.com/p/tvdblib + or http://forums.thetvdb.com/ + The user doesn't exist + The tvdb database is unavailable + + + + Rate the given series + + series id + The rating we want to give for this series + Current rating of the series + Exception is thrown when there was an error parsing the xml files. + Feel free to post a detailed description of this issue on http://code.google.com/p/tvdblib + or http://forums.thetvdb.com/ + The user doesn't exist + Exception is thrown when thetvdb isn't available. + + + + Rate the given episode + + Episode Id + Rating we want to give for episode + Current rating of episode + Exception is thrown when there was an error parsing the xml files. + Feel free to post a detailed description of this issue on http://code.google.com/p/tvdblib + or http://forums.thetvdb.com/ + The user doesn't exist + Exception is thrown when thetvdb isn't available. + + + + Gets all series this user has already ratet + + Thrown when no user is set + A list of all rated series + Exception is thrown when there was an error parsing the xml files. + Feel free to post a detailed description of this issue on http://code.google.com/p/tvdblib + or http://forums.thetvdb.com/ + The user doesn't exist + Exception is thrown when thetvdb isn't available. + + + + Gets all series this user has already ratet + + Id of series + Thrown when no user is set + A list of all ratings for the series + Exception is thrown when there was an error parsing the xml files. + Feel free to post a detailed description of this issue on http://code.google.com/p/tvdblib + or http://forums.thetvdb.com/ + The user doesn't exist + Exception is thrown when thetvdb isn't available. + + + + Called whenever an running update makes any progress + + + + + Called when a running update finishes, UpdateFinishedEventArgs gives an overview + of the update + + + + + UserInfo for this tvdb handler + + + + + Unique id for every project that is using thetvdb + + More information on: http://thetvdb.com/wiki/index.php/Programmers_API + + + + + Is the handler using caching and is the cache initialised + + + + + Returns list of all available Languages on tvdb + + list of available languages + + + + Are the language definitions already cached + + + + + EventArgs used when a running update progresses, contains information on the + current stage and progress + + + + + Constructor for UpdateProgressEventArgs + + The current state of the updating progress + Description of the current update stage + Progress of the current stage + Overall progress of the update + + + + Current state of update progress + + + + + Description of the current update stage + + + + + Progress of the current stage + + + + + Overall progress of the update + + + + + The current state of the updating progress + + + + + we're currently downloading the update files from http://thetvdb.com + + + + + we're currently processing the updated series + + + + + we're currently processing the updated episodes + + + + + we're currently processing the updated banner + + + + + the updating itself has finished, do cleanup work + + + + + EventArgs used when an update has finished, contains start date, end date and + an overview of all updated content + + + + + Constructor for UpdateFinishedEventArgs + + When did the update start + When did the update finish + List of all series (ids) that were updated + List of all episode (ids)that were updated + List of all banners (ids) that were updated + + + + When did the update start + + + + + When did the update finish + + + + + List of all series (ids) that were updated + + + + + List of all episode (ids)that were updated + + + + + List of all banners (ids) that were updated + + + + + Delegate for UpdateProgressed Event + + EventArgs + + + + Delegate for UpdateFinished event + + EventArgs + + + + Holds data pertinent to a data descriptor. + + + + + Get /set the compressed size of data. + + + + + Get / set the uncompressed size of data + + + + + Get /set the crc value. + + + + + This class assists with writing/reading from Zip files. + + + + + Initialise an instance of this class. + + The name of the file to open. + + + + Initialise a new instance of . + + The stream to use. + + + + Close the stream. + + + The underlying stream is closed only if is true. + + + + + Locates a block with the desired . + + The signature to find. + Location, marking the end of block. + Minimum size of the block. + The maximum variable data. + Eeturns the offset of the first byte after the signature; -1 if not found + + + + Write Zip64 end of central directory records (File header and locator). + + The number of entries in the central directory. + The size of entries in the central directory. + The offset of the dentral directory. + + + + Write the required records to end the central directory. + + The number of entries in the directory. + The size of the entries in the directory. + The start of the central directory. + The archive comment. (This can be null). + + + + Read an unsigned short in little endian byte order. + + Returns the value read. + + An i/o error occurs. + + + The file ends prematurely + + + + + Read an int in little endian byte order. + + Returns the value read. + + An i/o error occurs. + + + The file ends prematurely + + + + + Read a long in little endian byte order. + + The value read. + + + + Write an unsigned short in little endian byte order. + + The value to write. + + + + Write a ushort in little endian byte order. + + The value to write. + + + + Write an int in little endian byte order. + + The value to write. + + + + Write a uint in little endian byte order. + + The value to write. + + + + Write a long in little endian byte order. + + The value to write. + + + + Write a ulong in little endian byte order. + + The value to write. + + + + Write a data descriptor. + + The entry to write a descriptor for. + Returns the number of descriptor bytes written. + + + + Read data descriptor at the end of compressed data. + + if set to true [zip64]. + The data to fill in. + Returns the number of bytes read in the descriptor. + + + + Get / set a value indicating wether the the underlying stream is owned or not. + + If the stream is owned it is closed when this instance is closed. + + + + SharpZipBaseException is the base exception class for the SharpZipLibrary. + All library exceptions are derived from this. + + NOTE: Not all exceptions thrown will be derived from this class. + A variety of other exceptions are possible for example + + + + Deserialization constructor + + for this constructor + for this constructor + + + + Initializes a new instance of the SharpZipBaseException class. + + + + + Initializes a new instance of the SharpZipBaseException class with a specified error message. + + A message describing the exception. + + + + Initializes a new instance of the SharpZipBaseException class with a specified + error message and a reference to the inner exception that is the cause of this exception. + + A message describing the exception. + The inner exception + + + + Writes tvdb data to xml files + + + + + TvdbXmlWriter constructor + + + + + Create the file contents + + List of languages to store + + + + + Write the list of languages to file + + List of languages to store + Path on disk + true if the file could be stored, false otherwise + + + + Create the file content for a list of mirrors + + List of mirrors to store + xml content + + + + Write the xml file for the mirrors to file + + List of mirrors to store + Path on disk + true if the file could be stored, false otherwise + + + + Create the file content for a list of actors + + List of actors to store + xml content + + + + Write the xml file for the actors to file + + List of actors to store + Path on disk + true if the file could be stored, false otherwise + + + + Create the series content + + Series to store + xml content + + + + Write the series content to file + + Series to store + Path on disk + true if the file could be stored, false otherwise + + + + Create the series banner content + + List of banners to store + xml content + + + + Write the series banner contents to xml file + + Bannerlist to store + Path on disk + true if the file could be stored, false otherwise + + + + Create the xml content to save a TvdbUser to file + + User to store + xml content + + + + Write the user data to file + + User to store + Path on disk + true if the file could be stored, false otherwise + + + + This class represents all fields that are available on http://thetvdb.com and + a list of episodefields. This is used for localised series information. + + These are as follows: + 73739 + |Malcolm David Kelley|Jorge Garcia|Maggie Grace|...| + Thursday + 9:00 PM + TV-14 + 2004-09-22 + |Action and Adventure|Drama|Science-Fiction| + tt0411008 + en + ABC + After Oceanic Air flight 815... + 8.9 + 60 + 24313 + Lost + Continuing + graphical/24313-g2.jpg + fanart/original/73739-1.jpg + 1205694666 + SH672362 + + + + + TvdbSeriesFields constructor + + + + + Returns a short description of the episode (e.g. 1x20 Episodename) + + short description of the episode + + + + Gets the episodes for the given season in the given order (aired or dvd). Absolute is also possible but makes no sense since + there are no seasons with absoulte ordering. Use GetEpisodesAbsoluteOrder() instead. + + For more information on episode ordering thetvdb wiki + + List of episodes + + + + Returns all episodes in the absolute order + + List of episodes + + + + Update all fields of the object with the given information + + the fields for the update + Should the episodes be replaced or kept + + + + List of episodes for this translation + + + + + Is the episode info loaded + + + + + Series Id + + + + + Series Name + + + + + Series network + + + + + The language of the series + + + + + Content-Rating of the series + + + + + Zap2it Id of the series + + + + + When was the series updated the last time + + + + + Path to the primary fanart banner + + + + + Path to primary banner + + + + + Path to the primary poster + + + + + Status of the show + + + + + Tv.com id of the series + + + + + Runtime of the show + + + + + Rating of the series + + + + + Overview of the series + + + + + Imdb Id of the series + + + + + List of the series' genres + + + + + The Date the series was first aired + + + + + At which time does the series air + + + + + At which day of the week does the series air + + + + + List of actors that appear in this series + + + + + Class for parsing the xml info from thetvdb + + + + + Base constructor for a TvdbXmlReader class + + + + + Extract a list of languages when the data has the format: + + + + Español + es + 16 + + + + ]]> + + + + + + + Extract a list of mirrors if the data has the format: + + + + 1 + http://thetvdb.com + 7 + + + ]]> + + + + + + + Extract a list of series in the format: + + + + 73739 + |Malcolm David Kelley|Jorge Garcia|Maggie Grace|...| + Thursday + 9:00 PM + TV-14 + 2004-09-22 + |Action and Adventure|Drama|Science-Fiction| + tt0411008 + en + ABC + After Oceanic Air flight 815... + 8.9 + 60 + 24313 + Lost + Continuing + graphical/24313-g2.jpg + fanart/original/73739-1.jpg + 1205694666 + SH672362 + + + ]]> + + + + + + + Extract all the series fields that are available on thetvdb + + + + 73739 + |Malcolm David Kelley|Jorge Garcia|Maggie Grace|...| + Thursday + 9:00 PM + TV-14 + 2004-09-22 + |Action and Adventure|Drama|Science-Fiction| + tt0411008 + en + ABC + After Oceanic Air flight 815... + 8.9 + 60 + 24313 + Lost + Continuing + graphical/24313-g2.jpg + fanart/original/73739-1.jpg + 1205694666 + SH672362 + + + + ]]> + + + + + + + Extract a list of episodes from the given data when the data has the following format: + + + 332179 + + + + + |Joseph McGinty Nichol| + Chuck Versus the World + 1 + 2007-09-24 + |Julia Ling|Vik Sahay|Mieko Hillman| + + English + Chuck Bartowski is an average computer geek... + + 9.0 + 1 + |Josh Schwartz|Chris Fedak| + + + + + episodes/80348-332179.jpg + 1201292806 + 27985 + 80348 + + ]]> + + + + + + + Extract list of updated series + + + + 71969 + + + + ]]> + + + + + + + Extract the results of a series search with format: + + + + 73739 + en + Lost + graphical/24313-g2.jpg + After Oceanic Air flight 815... + 2004-09-22 + tt0411008 + SH672362 + 73739 + + + ]]> + + + + + + + Exctract the series favorites + + + 73067 + 78957 + 75340 + 72218 + 73244 + 75397 + + ]]> + + + + + + + Extract a rating from the data in the format + + + + 7.5 + + + ]]> + + + + + + + Extract the updated episodes from the data in the format: + + + + + 326268 + + + + ]]> + + + + + + + Extract the data of updated banners + + + + + 1 + 79302 + standard + en + seasons/79302-1.jpg + season + + + ]]> + + + + + + + Extract the update time from data + + + + + + + Extract a list of banners from the data when the data has the format: + + + + 20106 + fanart/original/73739-1.jpg + fanart/vignette/73739-1.jpg + _cache/fanart/original/73739-1.jpg + fanart + 1920x1080 + |68,69,59|69,70,58|78,78,68| + en + + + 18953 + seasons/73739-2-2.jpg + season + season + es + 2 + + + 9529 + graphical/73739-g.jpg + series + graphical + en + + + ]]> + + + + + + + Extract a list of actors when the data has the format: + + + + 22017 + actors/22017.jpg + Zachary Levi + Chuck Bartowski + 0 + + + ]]> + + data + List of actors + + + + Extract user data from + + + + + + + Extract a list of series ratings + + The xml file is in the following format: + + + + 80344 + 7 + 8.3224 + + + 72227 + 8 + 8.3224 + + + ]]> + + The xml content + The item type for the ratings + + + + + Inflater is used to decompress data that has been compressed according + to the "deflate" standard described in rfc1951. + + By default Zlib (rfc1950) headers and footers are expected in the input. + You can use constructor public Inflater(bool noHeader) passing true + if there is no Zlib header information + + The usage is as following. First you have to set some input with + SetInput(), then Inflate() it. If inflate doesn't + inflate any bytes there may be three reasons: +
    +
  • IsNeedingInput() returns true because the input buffer is empty. + You have to provide more input with SetInput(). + NOTE: IsNeedingInput() also returns true when, the stream is finished. +
  • +
  • IsNeedingDictionary() returns true, you have to provide a preset + dictionary with SetDictionary().
  • +
  • IsFinished returns true, the inflater has finished.
  • +
+ Once the first output byte is produced, a dictionary will not be + needed at a later stage. + + author of the original java version : John Leuner, Jochen Hoenicke +
+
+ + + These are the possible states for an inflater + + + + + Copy lengths for literal codes 257..285 + + + + + Extra bits for literal codes 257..285 + + + + + Copy offsets for distance codes 0..29 + + + + + Extra bits for distance codes + + + + + This variable contains the current state. + + + + + The adler checksum of the dictionary or of the decompressed + stream, as it is written in the header resp. footer of the + compressed stream. + Only valid if mode is DECODE_DICT or DECODE_CHKSUM. + + + + + The number of bits needed to complete the current state. This + is valid, if mode is DECODE_DICT, DECODE_CHKSUM, + DECODE_HUFFMAN_LENBITS or DECODE_HUFFMAN_DISTBITS. + + + + + True, if the last block flag was set in the last block of the + inflated stream. This means that the stream ends after the + current block. + + + + + The total number of inflated bytes. + + + + + The total number of bytes set with setInput(). This is not the + value returned by the TotalIn property, since this also includes the + unprocessed input. + + + + + This variable stores the noHeader flag that was given to the constructor. + True means, that the inflated stream doesn't contain a Zlib header or + footer. + + + + + Creates a new inflater or RFC1951 decompressor + RFC1950/Zlib headers and footers will be expected in the input data + + + + + Creates a new inflater. + + + True if no RFC1950/Zlib header and footer fields are expected in the input data + + This is used for GZIPed/Zipped input. + + For compatibility with + Sun JDK you should provide one byte of input more than needed in + this case. + + + + + Resets the inflater so that a new stream can be decompressed. All + pending input and output will be discarded. + + + + + Decodes a zlib/RFC1950 header. + + + False if more input is needed. + + + The header is invalid. + + + + + Decodes the dictionary checksum after the deflate header. + + + False if more input is needed. + + + + + Decodes the huffman encoded symbols in the input stream. + + + false if more input is needed, true if output window is + full or the current block ends. + + + if deflated stream is invalid. + + + + + Decodes the adler checksum after the deflate stream. + + + false if more input is needed. + + + If checksum doesn't match. + + + + + Decodes the deflated stream. + + + false if more input is needed, or if finished. + + + if deflated stream is invalid. + + + + + Sets the preset dictionary. This should only be called, if + needsDictionary() returns true and it should set the same + dictionary, that was used for deflating. The getAdler() + function returns the checksum of the dictionary needed. + + + The dictionary. + + + + + Sets the preset dictionary. This should only be called, if + needsDictionary() returns true and it should set the same + dictionary, that was used for deflating. The getAdler() + function returns the checksum of the dictionary needed. + + + The dictionary. + + + The index into buffer where the dictionary starts. + + + The number of bytes in the dictionary. + + + No dictionary is needed. + + + The adler checksum for the buffer is invalid + + + + + Sets the input. This should only be called, if needsInput() + returns true. + + + the input. + + + + + Sets the input. This should only be called, if needsInput() + returns true. + + + The source of input data + + + The index into buffer where the input starts. + + + The number of bytes of input to use. + + + No input is needed. + + + The index and/or count are wrong. + + + + + Inflates the compressed stream to the output buffer. If this + returns 0, you should check, whether IsNeedingDictionary(), + IsNeedingInput() or IsFinished() returns true, to determine why no + further output is produced. + + + the output buffer. + + + The number of bytes written to the buffer, 0 if no further + output can be produced. + + + if buffer has length 0. + + + if deflated stream is invalid. + + + + + Inflates the compressed stream to the output buffer. If this + returns 0, you should check, whether needsDictionary(), + needsInput() or finished() returns true, to determine why no + further output is produced. + + + the output buffer. + + + the offset in buffer where storing starts. + + + the maximum number of bytes to output. + + + the number of bytes written to the buffer, 0 if no further output can be produced. + + + if count is less than 0. + + + if the index and / or count are wrong. + + + if deflated stream is invalid. + + + + + Returns true, if the input buffer is empty. + You should then call setInput(). + NOTE: This method also returns true when the stream is finished. + + + + + Returns true, if a preset dictionary is needed to inflate the input. + + + + + Returns true, if the inflater has finished. This means, that no + input is needed and no output can be produced. + + + + + Gets the adler checksum. This is either the checksum of all + uncompressed bytes returned by inflate(), or if needsDictionary() + returns true (and thus no output was yet produced) this is the + adler checksum of the expected dictionary. + + + the adler checksum. + + + + + Gets the total number of output bytes returned by Inflate(). + + + the total number of output bytes. + + + + + Gets the total number of processed compressed input bytes. + + + The total number of bytes of processed input bytes. + + + + + Gets the number of unprocessed input bytes. Useful, if the end of the + stream is reached and you want to further process the bytes after + the deflate stream. + + + The number of bytes of the input which have not been processed. + + + + + This is the Deflater class. The deflater class compresses input + with the deflate algorithm described in RFC 1951. It has several + compression levels and three different strategies described below. + + This class is not thread safe. This is inherent in the API, due + to the split of deflate and setInput. + + author of the original java version : Jochen Hoenicke + + + + + The best and slowest compression level. This tries to find very + long and distant string repetitions. + + + + + The worst but fastest compression level. + + + + + The default compression level. + + + + + This level won't compress at all but output uncompressed blocks. + + + + + The compression method. This is the only method supported so far. + There is no need to use this constant at all. + + + + + Creates a new deflater with default compression level. + + + + + Creates a new deflater with given compression level. + + + the compression level, a value between NO_COMPRESSION + and BEST_COMPRESSION, or DEFAULT_COMPRESSION. + + if lvl is out of range. + + + + Creates a new deflater with given compression level. + + + the compression level, a value between NO_COMPRESSION + and BEST_COMPRESSION. + + + true, if we should suppress the Zlib/RFC1950 header at the + beginning and the adler checksum at the end of the output. This is + useful for the GZIP/PKZIP formats. + + if lvl is out of range. + + + + Resets the deflater. The deflater acts afterwards as if it was + just created with the same compression level and strategy as it + had before. + + + + + Flushes the current input block. Further calls to deflate() will + produce enough output to inflate everything in the current input + block. This is not part of Sun's JDK so I have made it package + private. It is used by DeflaterOutputStream to implement + flush(). + + + + + Finishes the deflater with the current input block. It is an error + to give more input after this method was called. This method must + be called to force all bytes to be flushed. + + + + + Sets the data which should be compressed next. This should be only + called when needsInput indicates that more input is needed. + If you call setInput when needsInput() returns false, the + previous input that is still pending will be thrown away. + The given byte array should not be changed, before needsInput() returns + true again. + This call is equivalent to setInput(input, 0, input.length). + + + the buffer containing the input data. + + + if the buffer was finished() or ended(). + + + + + Sets the data which should be compressed next. This should be + only called when needsInput indicates that more input is needed. + The given byte array should not be changed, before needsInput() returns + true again. + + + the buffer containing the input data. + + + the start of the data. + + + the number of data bytes of input. + + + if the buffer was Finish()ed or if previous input is still pending. + + + + + Sets the compression level. There is no guarantee of the exact + position of the change, but if you call this when needsInput is + true the change of compression level will occur somewhere near + before the end of the so far given input. + + + the new compression level. + + + + + Get current compression level + + Returns the current compression level + + + + Sets the compression strategy. Strategy is one of + DEFAULT_STRATEGY, HUFFMAN_ONLY and FILTERED. For the exact + position where the strategy is changed, the same as for + SetLevel() applies. + + + The new compression strategy. + + + + + Deflates the current input block with to the given array. + + + The buffer where compressed data is stored + + + The number of compressed bytes added to the output, or 0 if either + IsNeedingInput() or IsFinished returns true or length is zero. + + + + + Deflates the current input block to the given array. + + + Buffer to store the compressed data. + + + Offset into the output array. + + + The maximum number of bytes that may be stored. + + + The number of compressed bytes added to the output, or 0 if either + needsInput() or finished() returns true or length is zero. + + + If Finish() was previously called. + + + If offset or length don't match the array length. + + + + + Sets the dictionary which should be used in the deflate process. + This call is equivalent to setDictionary(dict, 0, dict.Length). + + + the dictionary. + + + if SetInput () or Deflate () were already called or another dictionary was already set. + + + + + Sets the dictionary which should be used in the deflate process. + The dictionary is a byte array containing strings that are + likely to occur in the data which should be compressed. The + dictionary is not stored in the compressed output, only a + checksum. To decompress the output you need to supply the same + dictionary again. + + + The dictionary data + + + The index where dictionary information commences. + + + The number of bytes in the dictionary. + + + If SetInput () or Deflate() were already called or another dictionary was already set. + + + + + Compression level. + + + + + If true no Zlib/RFC1950 headers or footers are generated + + + + + The current state. + + + + + The total bytes of output written. + + + + + The pending output. + + + + + The deflater engine. + + + + + Gets the current adler checksum of the data that was processed so far. + + + + + Gets the number of input bytes processed so far. + + + + + Gets the number of output bytes so far. + + + + + Returns true if the stream was finished and no more output bytes + are available. + + + + + Returns true, if the input buffer is empty. + You should then call setInput(). + NOTE: This method can also return true when the stream + was finished. + + + + + Exception that is thrown when a nonexistent content is requested + + + + + TvdbInvalidAPIKeyException constructor + + Message + + + + TvdbInvalidAPIKeyException constructor + + + + + TvdbData contains a list of series, a list of languages and a list of mirror + + + + + TvdbData constructor + + + + + TvdbData constructor + + List of available languages + + + + When was the last time thetvdb has been checked + for updates + + + + + List of all available languages + + + + + XmlCacheProvider stores all the information that have been retrieved from http://thetvdb.com as human-readable xml files on the hard disk + + + + + Constructor for XmlCacheProvider + + This is the folder on the disk where all the information are stored + + + + Properly describe the CacheProvider for neat-reasons + + String describing the cache provider + + + + Initialises the cache, should do the following things + - initialise connections used for this cache provider (db connections, network shares,...) + - create folder structure / db tables / ... if they are not created already + - if this is the first time the cache has been initialised (built), mark last_updated with the + current date + + TvdbData object + + + + Closes the cache (e.g. close open connection, etc.) + + true if successful, false otherwise + + + + Saves cache settings + + settings + + + + Save the language to cache + + List of languages that are available on http://thetvdb.com + + + + Save the mirror info to cache + + Mirrors + + + + Saves the series to cache + + The series to save + + + + Loads the settings data from cache + + The loaded TvdbData object + + + + Loads the available languages from cache + + List of available languages + + + + Load the available mirrors from cache + + List of mirrors + + + + Loads all series from cache + + A list of TvdbSeries objects from cache or null + + + + Load the give series from cache + + Id of the series to load + Series that has been loaded or null if series doesn't exist + + + + Load user info from cache + + Id of the user + TvdbUser object or null if the user couldn't be loaded + + + + Saves the user data to cache + + TvdbUser object + + + + Receives a list of all series that have been cached + + A list of series that have been already stored with this cache provider + + + + Check if the series is cached in the given configuration + + Id of the series + Language of the series + are episodes loaded + are banners loaded + are actors loaded + true if the series is cached, false otherwise + + + + Completely refreshes the cache (all stored information is lost) + + true if the cache was cleared successfully, + false otherwise (e.g. no write rights,...) + + + + Remove a specific series from cache + + the id of the series + true if the series was removed from the cache successfully, + false otherwise (e.g. series not cached) + + + + Save the given image to cache + + banner to save + id of series + filename (will be the same name used by LoadImageFromCache) + + + + Loads the specified image from the cache + + series id + filename of the image (same one as used by SaveToCache) + The loaded image or null if the image wasn't found + + + + Removes the specified image from cache (if it has been cached) + + id of series + name of image + true if image was removed successfully, false otherwise (e.g. image didn't exist) + + + + Is the cache provider initialised + + + + + Description of TvdbInvalidXmlException. + + + + + TvdbInvalidXmlException constructor + + Message + + + + TvdbInvalidXmlException constructor + + + + + Bzip2 checksum algorithm + + + + + Interface to compute a data checksum used by checked input/output streams. + A data checksum can be updated by one byte or with a byte array. After each + update the value of the current checksum can be returned by calling + getValue. The complete checksum object can also be reset + so it can be used again with new data. + + + + + Resets the data checksum as if no update was ever called. + + + + + Adds one byte to the data checksum. + + + the data value to add. The high byte of the int is ignored. + + + + + Updates the data checksum with the bytes taken from the array. + + + buffer an array of bytes + + + + + Adds the byte array to the data checksum. + + + The buffer which contains the data + + + The offset in the buffer where the data starts + + + the number of data bytes to add. + + + + + Returns the data checksum computed so far. + + + + + Initialise a default instance of + + + + + Reset the state of Crc. + + + + + Update the Crc value. + + data update is based on + + + + Update Crc based on a block of data + + The buffer containing data to update the crc with. + + + + Update Crc based on a portion of a block of data + + block of data + index of first byte to use + number of bytes to use + + + + Get the current Crc value. + + + + + A special stream deflating or compressing the bytes that are + written to it. It uses a Deflater to perform actual deflating.
+ Authors of the original java version : Tom Tromey, Jochen Hoenicke +
+
+ + + Creates a new DeflaterOutputStream with a default Deflater and default buffer size. + + + the output stream where deflated output should be written. + + + + + Creates a new DeflaterOutputStream with the given Deflater and + default buffer size. + + + the output stream where deflated output should be written. + + + the underlying deflater. + + + + + Creates a new DeflaterOutputStream with the given Deflater and + buffer size. + + + The output stream where deflated output is written. + + + The underlying deflater to use + + + The buffer size to use when deflating + + + bufsize is less than or equal to zero. + + + baseOutputStream does not support writing + + + deflater instance is null + + + + + Finishes the stream by calling finish() on the deflater. + + + Not all input is deflated + + + + + Encrypt a block of data + + + Data to encrypt. NOTE the original contents of the buffer are lost + + + Offset of first byte in buffer to encrypt + + + Number of bytes in buffer to encrypt + + + + + Initializes encryption keys based on given . + + The password. + + + + Deflates everything in the input buffers. This will call + def.deflate() until all bytes from the input buffers + are processed. + + + + + Sets the current position of this stream to the given value. Not supported by this class! + + The offset relative to the to seek. + The to seek from. + The new position in the stream. + Any access + + + + Sets the length of this stream to the given value. Not supported by this class! + + The new stream length. + Any access + + + + Read a byte from stream advancing position by one + + The byte read cast to an int. THe value is -1 if at the end of the stream. + Any access + + + + Read a block of bytes from stream + + The buffer to store read data in. + The offset to start storing at. + The maximum number of bytes to read. + The actual number of bytes read. Zero if end of stream is detected. + Any access + + + + Asynchronous reads are not supported a NotSupportedException is always thrown + + The buffer to read into. + The offset to start storing data at. + The number of bytes to read + The async callback to use. + The state to use. + Returns an + Any access + + + + Asynchronous writes arent supported, a NotSupportedException is always thrown + + The buffer to write. + The offset to begin writing at. + The number of bytes to write. + The to use. + The state object. + Returns an IAsyncResult. + Any access + + + + Flushes the stream by calling Flush on the deflater and then + on the underlying stream. This ensures that all bytes are flushed. + + + + + Calls and closes the underlying + stream when is true. + + + + + Writes a single byte to the compressed output stream. + + + The byte value. + + + + + Writes bytes from an array to the compressed stream. + + + The byte array + + + The offset into the byte array where to start. + + + The number of bytes to write. + + + + + This buffer is used temporarily to retrieve the bytes from the + deflater and write them to the underlying output stream. + + + + + The deflater which is used to deflate the stream. + + + + + Base stream the deflater depends on. + + + + + Get/set flag indicating ownership of the underlying stream. + When the flag is true will close the underlying stream also. + + + + + Allows client to determine if an entry can be patched after its added + + + + + Get/set the password used for encryption. + + When set to null or if the password is empty no encryption is performed + + + + Gets value indicating stream can be read from + + + + + Gets a value indicating if seeking is supported for this stream + This property always returns false + + + + + Get value indicating if this stream supports writing + + + + + Get current length of stream + + + + + Gets the current position within the stream. + + Any attempt to set position + + + + This class stores the pending output of the Deflater. + + author of the original java version : Jochen Hoenicke + + + + + This class is general purpose class for writing data to a buffer. + + It allows you to write bits as well as bytes + Based on DeflaterPending.java + + author of the original java version : Jochen Hoenicke + + + + + Internal work buffer + + + + + construct instance using default buffer size of 4096 + + + + + construct instance using specified buffer size + + + size to use for internal buffer + + + + + Clear internal state/buffers + + + + + Write a byte to buffer + + + The value to write + + + + + Write a short value to buffer LSB first + + + The value to write. + + + + + write an integer LSB first + + The value to write. + + + + Write a block of data to buffer + + data to write + offset of first byte to write + number of bytes to write + + + + Align internal buffer on a byte boundary + + + + + Write bits to internal buffer + + source of bits + number of bits to write + + + + Write a short value to internal buffer most significant byte first + + value to write + + + + Flushes the pending buffer into the given output array. If the + output array is to small, only a partial flush is done. + + The output array. + The offset into output array. + The maximum number of bytes to store. + The number of bytes flushed. + + + + Convert internal buffer to byte array. + Buffer is empty on completion + + + The internal buffer contents converted to a byte array. + + + + + The number of bits written to the buffer + + + + + Indicates if buffer has been flushed + + + + + Construct instance with default buffer size + + + + + Baseclass for a tvdb mirror. A mirror is defined in the tvdb xml by: + + + + 1 + http://thetvdb.com + 7 + + + ]]> + + + + + TvdbMirror constructor + + + + + TvdbMirror constructor + + Id of the mirror + Url to the mirror + Typemask of the mirror, see property "TypeMask" + + + + Id of the mirror + + + + + The value of typemask is the sum of whichever file types that mirror holds: + 1 xml files + 2 banner files + 4 zip files + So, a mirror that has a typemask of 5 would hold XML and ZIP files, but no banner files. + + + + + Returns true if the mirror offers images for downloading, false otherwise + + + + + Returns true if the mirror offers xml files for downloading, false otherwise + + + + + Returns true if the mirror offers zipped downloads, false otherwise + + + + + Path to the mirror + + + + + Exception thrown when a request is made which requires a valid + api key but none is set + + + + + TvdbInvalidAPIKeyException constructor + + Message + + + + TvdbInvalidAPIKeyException constructor + + + + + Represents the episode banner, which is currently only one image + per episode (no language differentiation either) limited to a maximum + size of 400 x 300 + + further information on http://thetvdb.com/wiki/index.php/Episode_Images + + + + + This class extends the regular banner class with the ability to retrieve thumbnails of the actual images. + + These thumbnails are at the moment availabe for all banner types except actors + + + + + Tvdb Banners are the graphical element of tvdb. There are different types of banners which are + representet by sub-classes in this library. These subclasses are: + + + TvdbEpisodeBanner + Each episode may contain a small image that should be an non-spoiler action shot from the episode (http://thetvdb.com/wiki/index.php/Episode_Images) + + + TvdbFanartBanner + Fan Art is high quality artwork that is displayed in the background of HTPC menus (http://thetvdb.com/wiki/index.php/Fan_Art) + + + TvdbSeasonBanner + Banner for each season of a series, dvd-style (400 x 578) or banner style (758 x 140) (http://thetvdb.com/wiki/index.php/Wide_Season_Banners) + + + TvdbSeriesBanner + Wide banner for each series (758 x 140), comes in graphical, text or blank style. For further information see http://thetvdb.com/wiki/index.php/Series_Banners + + + TvdbPosterBanner + Newest addition to the tvdb graphical section (680px x 1000px) and not smaller than 500k (http://thetvdb.com/wiki/index.php/Posters) + + + + + + + Loads the actual image data of the banner + + true if the banner could be loaded successfully, false otherwise + + + + Loads the actual image data of the banner + + If true will replace an old image (if one exists already) + true if the banner could be loaded successfully, false otherwise + + + + Unloads the image and saves it to cache + + true if successful, false otherwise + + + + Unloads the image + + should the image kept in cache + true if successful, false otherwise + + + + Creates the name used to store images in cache + + Path of the image + Is the image a thumbnail + Name used for caching image + + + + Loads the banner with the given image + + Image object that should be used for this banner + True if successful, false otherwise + + + + Loads the image from the given path + + Path of image that should be used for this banner + True if successful, false otherwise + + + + Used to load/save images persistent if we're using a cache provider + (should keep memory usage much lower) + + on the other hand we have a back-ref to tvdb (from a data class), which sucks + + todo: think of a better way to handle this + + + + + Language of the banner + + + + + Id of the banner + + + + + Image data of the banner + + + + + True if the image data has been already loaded, false otherwise + + + + + Is the banner currently beeing loaded + + + + + Path to the location on the tvdb server where the image is located + + + + + When was the banner updated the last time + + + + + Id of the series this banner belongs to + + + + + Load the thumb from tvdb, if there isn't already a thumb loaded, + (an existing one will NOT be replaced) + + + true if the loading completed sccessfully, false otherwise + + + + Load the thumb from tvdb + + if true, an existing banner will be replaced, + if false the banner will only be loaded if there is no existing banner + true if the loading completed sccessfully, false otherwise + + + + Load thumbnail with given image + + the image to be used forthe banner + true if the loading completed sccessfully, false otherwise + + + + Unloads the image and saves it to cache + + true if successful, false otherwise + + + + Unloads the image + + should the image kept in cache + true if successful, false otherwise + + + + Is the thumbnail currently beeing loaded + + + + + Path to the fanart thumbnail + + + + + Image of the thumbnail + + + + + Is the Image of the thumb already loaded + + + + + TvdbEpisodeBanner constructor + + + + + TvdbEpisodeBanner constructor + + Path of banner + Id of episode banner + + + + Fan Art is high quality artwork that is displayed in the background of + HTPC menus. Since fan art is displayed behind other content in most cases, + we place more restrictions on the formatting of the image. + + The resolution is either 1920x1080 or 1280x720... + + More information: http://thetvdb.com/wiki/index.php/Fan_Art + + + + + TvdbFanartBanner constructor + + + + + TvdbFanartBanner constructor + + Id of fanart banner + Language for this banner + Path of image for this banner + + + + Load the vignette from tvdb + + True if successful, false otherwise + + + + Load the vignette from tvdb + + True if successful, false otherwise + + + + Load vignette with given image + + Image object that should be used for this banner + True if successful, false otherwise + + + + Unloads the image and saves it to cache + + true if successful, false otherwise + + + + Unloads the image + + should the image kept in cache + true if successful, false otherwise + + + + Is the vignette image already loaded + + + + + Is the vignette currently beeing loaded + + + + + Vignette Image + + + + + These are the colors selected by the artist that match the image. The format is 3 colors separated by a pipe "|". This field has leading and trailing pipes. Each color is comma separated RGB, with each color portion being an integer from 1 to 255. So the format looks like |r,g,b|r,g,b|r,g,b|. The first color is the light accent color. The second color is the dark accent color. The third color is the neutral mid-tone color. + + + + + Path to the fanart vignette + + + + + Does the image contain the series name + + + + + Color 3 (see Colors property) + + + + + Color 2 (see Colors property) + + + + + Color 1 (see Colors property) + + + + + Resolution of the fanart + + + + + ID's of external sites + + + + + Id for the popular movie/tv site www.imdb.com + + + + + Update interval + + + + + updated content since the last day + + + + + updated content since the last week + + + + + updated content since the last month + + + + + the interval is determined automatically + + + + + Parses an integer string and returns the number or -99 if the format + is invalid + + + + + + + Parses an double string and returns the number or -99 if the format + is invalid + + + + + + + Splits a tvdb string (having the format | item1 | item2 | item3 |) + + + + + + + Parse the short description of a tvdb language and returns the proper + object. If no such language exists yet (maybe the list of available + languages hasn't been downloaded yet), a placeholder is created + + + + + + + Converts a unix timestamp (used on tvdb) into a .net datetime object + + Timestamp to convert + .net DateTime object + + + + Converts a .net datetime object into a unix timestamp (used on tvdb) + + Date to convert + Unix timestamp + + + + returns a day of the week object parsed from the string + + String representation of this day of the week + .net DayOfWeek enum + + + + Returns a List of colors parsed from the _text + + + + + + + Returns a point objects parsed from _text + + + + + + + Parse a boolean value from thetvdb xml files + + Boolean value to parse + + + + + + + + + + + + Returns the fitting SeriesBanner type from parameter + + + + + + + Add the episode to the series + + + + + + + Parse a datetime value from thetvdb + + The date string that needs parsing + DateTime object of the parsed date + + + + Tries to find an episode by a given id from a list of episodes + + Id of the episode we're looking for + List of episodes + The first found TvdbEpisode object or null if nothing was found + + + + Tries to find a series by a given id from a list of series + + Id of the series we're looking for + List of series objects + The first found TvdbSeries object or null if nothing was found + + + + List of available languages -> needed for some methods + + + + + Type when handling user favorites + + + + + Baseclass for a tvdb language + + + + + The default language (which is English) + Id: 7 + Abbriviation: en + Name: English + + + + + + language valid for all available languages + Id: 7 + Abbriviation: en + Name: English + + + + + + TvdbLanguage constructor + + + + + TvdbLanguage constructor + + Id of language + Name of language (e.g. English) + Abbriviation of language (e.g. en) + + + + Returns String that describes the language in the format "Name (Abbriviation)" + + String representing this object (e.g. "English (en)") + + + + Overrides the equals Method to ensure a valid comparison of two language objects. The + comparison currently matches abbriviation only. + + object to compare with + True if the two language objects are the same, false otherwise + + + + Returns a hash code of the object + + Hash code + + + + Overrides the equality operator to ensure a valid comparison of two language objects. The + comparison currently matches abbriviation only. + + First language object + Second language object + True if the two language objects are the same, false otherwise + + + + Overrides the inequality operator to ensure a valid comparison of two language objects. The + comparison currently matches abbriviation only. + + First language object + Second language object + True if the two language objects are the same, false otherwise + + + + Id of the language + + + + + Abbriviation of the series + + + + + Name of the series + + + + + Contains the output from the Inflation process. + We need to have a window so that we can refer backwards into the output stream + to repeat stuff.
+ Author of the original java version : John Leuner +
+
+ + + Write a byte to this output window + + value to write + + if window is full + + + + + Append a byte pattern already in the window itself + + length of pattern to copy + distance from end of window pattern occurs + + If the repeated data overflows the window + + + + + Copy from input manipulator to internal window + + source of data + length of data to copy + the number of bytes copied + + + + Copy dictionary to window + + source dictionary + offset of start in source dictionary + length of dictionary + + If window isnt empty + + + + + Get remaining unfilled space in window + + Number of bytes left in window + + + + Get bytes available for output in window + + Number of bytes filled + + + + Copy contents of window to output + + buffer to copy to + offset to start at + number of bytes to count + The number of bytes copied + + If a window underflow occurs + + + + + Reset by clearing window so GetAvailable returns 0 + + + + + This class contains constants used for deflation. + + + + + Set to true to enable debugging + + + + + Written to Zip file to identify a stored block + + + + + Identifies static tree in Zip file + + + + + Identifies dynamic tree in Zip file + + + + + Header flag indicating a preset dictionary for deflation + + + + + Sets internal buffer sizes for Huffman encoding + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Generate a table for a byte-wise 32-bit CRC calculation on the polynomial: + x^32+x^26+x^23+x^22+x^16+x^12+x^11+x^10+x^8+x^7+x^5+x^4+x^2+x+1. + + Polynomials over GF(2) are represented in binary, one bit per coefficient, + with the lowest powers in the most significant bit. Then adding polynomials + is just exclusive-or, and multiplying a polynomial by x is a right shift by + one. If we call the above polynomial p, and represent a byte as the + polynomial q, also with the lowest power in the most significant bit (so the + byte 0xb1 is the polynomial x^7+x^3+x+1), then the CRC is (q*x^32) mod p, + where a mod b means the remainder after dividing a by b. + + This calculation is done using the shift-register method of multiplying and + taking the remainder. The register is initialized to zero, and for each + incoming bit, x^32 is added mod p to the register if the bit is a one (where + x^32 mod p is p+x^32 = x^26+...+1), and the register is multiplied mod p by + x (which is shifting right by one and adding x^32 mod p if the bit shifted + out is a one). We start with the highest power (least significant bit) of + q and repeat for all eight bits of q. + + The table is simply the CRC of all possible eight bit values. This is all + the information needed to generate CRC's on data a byte at a time for all + combinations of CRC register values and incoming bytes. + + + + + The crc data checksum so far. + + + + + Resets the CRC32 data checksum as if no update was ever called. + + + + + Updates the checksum with the int bval. + + + the byte is taken as the lower 8 bits of value + + + + + Updates the checksum with the bytes taken from the array. + + + buffer an array of bytes + + + + + Adds the byte array to the data checksum. + + + The buffer which contains the data + + + The offset in the buffer where the data starts + + + The number of data bytes to update the CRC with. + + + + + Returns the CRC32 data checksum computed so far. + + + + + Defines known values for the property. + + + + + Host system = MSDOS + + + + + Host system = Amiga + + + + + Host system = Open VMS + + + + + Host system = Unix + + + + + Host system = VMCms + + + + + Host system = Atari ST + + + + + Host system = OS2 + + + + + Host system = Macintosh + + + + + Host system = ZSystem + + + + + Host system = Cpm + + + + + Host system = Windows NT + + + + + Host system = MVS + + + + + Host system = VSE + + + + + Host system = Acorn RISC + + + + + Host system = VFAT + + + + + Host system = Alternate MVS + + + + + Host system = BEOS + + + + + Host system = Tandem + + + + + Host system = OS400 + + + + + Host system = OSX + + + + + Host system = WinZIP AES + + + + + This class represents an entry in a zip archive. This can be a file + or a directory + ZipFile and ZipInputStream will give you instances of this class as + information about the members in an archive. ZipOutputStream + uses an instance of this class when creating an entry in a Zip file. +
+
Author of the original java version : Jochen Hoenicke +
+
+ + + Creates a zip entry with the given name. + + + The name for this entry. Can include directory components. + The convention for names is 'unix' style paths with relative names only. + There are with no device names and path elements are separated by '/' characters. + + + The name passed is null + + + + + Creates a zip entry with the given name and version required to extract + + + The name for this entry. Can include directory components. + The convention for names is 'unix' style paths with no device names and + path elements separated by '/' characters. This is not enforced see CleanName + on how to ensure names are valid if this is desired. + + + The minimum 'feature version' required this entry + + + The name passed is null + + + + + Initializes an entry with the given name and made by information + + Name for this entry + Version and HostSystem Information + Minimum required zip feature version required to extract this entry + Compression method for this entry. + + The name passed is null + + + versionRequiredToExtract should be 0 (auto-calculate) or > 10 + + + This constructor is used by the ZipFile class when reading from the central header + It is not generally useful, use the constructor specifying the name only. + + + + + Creates a deep copy of the given zip entry. + + + The entry to copy. + + + + + Test the external attributes for this to + see if the external attributes are Dos based (including WINNT and variants) + and match the values + + The attributes to test. + Returns true if the external attributes are known to be DOS/Windows + based and have the same attributes set as the value passed. + + + + Force this entry to be recorded using Zip64 extensions. + + + + + Get a value indicating wether Zip64 extensions were forced. + + A value of true if Zip64 extensions have been forced on; false if not. + + + + Process extra data fields updating the entry based on the contents. + + True if the extra data fields should be handled + for a local header, rather than for a central header. + + + + + Test entry to see if data can be extracted. + + Returns true if data can be extracted for this entry; false otherwise. + + + + Creates a copy of this zip entry. + + An that is a copy of the current instance. + + + + Gets a string representation of this ZipEntry. + + A readable textual representation of this + + + + Test a compression method to see if this library + supports extracting data compressed with that method + + The compression method to test. + Returns true if the compression method is supported; false otherwise + + + + Cleans a name making it conform to Zip file conventions. + Devices names ('c:\') and UNC share names ('\\server\share') are removed + and forward slashes ('\') are converted to back slashes ('/'). + Names are made relative by trimming leading slashes which is compatible + with the ZIP naming convention. + + The name to clean + The 'cleaned' name. + + The Zip name transform class is more flexible. + + + + + Get a value indicating wether the entry has a CRC value available. + + + + + Get/Set flag indicating if entry is encrypted. + A simple helper routine to aid interpretation of flags + + This is an assistant that interprets the flags property. + + +
+ Get / set a flag indicating wether entry name and comment text are + encoded in unicode UTF8. + + This is an assistant that interprets the flags property. + + + + Value used during password checking for PKZIP 2.0 / 'classic' encryption. + + + + + Get/Set general purpose bit flag for entry + + + General purpose bit flag
+
+ Bit 0: If set, indicates the file is encrypted
+ Bit 1-2 Only used for compression type 6 Imploding, and 8, 9 deflating
+ Imploding:
+ Bit 1 if set indicates an 8K sliding dictionary was used. If clear a 4k dictionary was used
+ Bit 2 if set indicates 3 Shannon-Fanno trees were used to encode the sliding dictionary, 2 otherwise
+
+ Deflating:
+ Bit 2 Bit 1
+ 0 0 Normal compression was used
+ 0 1 Maximum compression was used
+ 1 0 Fast compression was used
+ 1 1 Super fast compression was used
+
+ Bit 3: If set, the fields crc-32, compressed size + and uncompressed size are were not able to be written during zip file creation + The correct values are held in a data descriptor immediately following the compressed data.
+ Bit 4: Reserved for use by PKZIP for enhanced deflating
+ Bit 5: If set indicates the file contains compressed patch data
+ Bit 6: If set indicates strong encryption was used.
+ Bit 7-10: Unused or reserved
+ Bit 11: If set the name and comments for this entry are in unicode.
+ Bit 12-15: Unused or reserved
+
+ + +
+ + + Get/Set index of this entry in Zip file + + This is only valid when the entry is part of a + + + + Get/set offset for use in central header + + + + + Get/Set external file attributes as an integer. + The values of this are operating system dependant see + HostSystem for details + + + + + Get the version made by for this entry or zero if unknown. + The value / 10 indicates the major version number, and + the value mod 10 is the minor version number + + + + + Get a value indicating this entry is for a DOS/Windows system. + + + + + Gets the compatability information for the external file attribute + If the external file attributes are compatible with MS-DOS and can be read + by PKZIP for DOS version 2.04g then this value will be zero. Otherwise the value + will be non-zero and identify the host system on which the attributes are compatible. + + + + The values for this as defined in the Zip File format and by others are shown below. The values are somewhat + misleading in some cases as they are not all used as shown. You should consult the relevant documentation + to obtain up to date and correct information. The modified appnote by the infozip group is + particularly helpful as it documents a lot of peculiarities. The document is however a little dated. + + 0 - MS-DOS and OS/2 (FAT / VFAT / FAT32 file systems) + 1 - Amiga + 2 - OpenVMS + 3 - Unix + 4 - VM/CMS + 5 - Atari ST + 6 - OS/2 HPFS + 7 - Macintosh + 8 - Z-System + 9 - CP/M + 10 - Windows NTFS + 11 - MVS (OS/390 - Z/OS) + 12 - VSE + 13 - Acorn Risc + 14 - VFAT + 15 - Alternate MVS + 16 - BeOS + 17 - Tandem + 18 - OS/400 + 19 - OS/X (Darwin) + 99 - WinZip AES + remainder - unused + + + + + + Get minimum Zip feature version required to extract this entry + + + Minimum features are defined as:
+ 1.0 - Default value
+ 1.1 - File is a volume label
+ 2.0 - File is a folder/directory
+ 2.0 - File is compressed using Deflate compression
+ 2.0 - File is encrypted using traditional encryption
+ 2.1 - File is compressed using Deflate64
+ 2.5 - File is compressed using PKWARE DCL Implode
+ 2.7 - File is a patch data set
+ 4.5 - File uses Zip64 format extensions
+ 4.6 - File is compressed using BZIP2 compression
+ 5.0 - File is encrypted using DES
+ 5.0 - File is encrypted using 3DES
+ 5.0 - File is encrypted using original RC2 encryption
+ 5.0 - File is encrypted using RC4 encryption
+ 5.1 - File is encrypted using AES encryption
+ 5.1 - File is encrypted using corrected RC2 encryption
+ 5.1 - File is encrypted using corrected RC2-64 encryption
+ 6.1 - File is encrypted using non-OAEP key wrapping
+ 6.2 - Central directory encryption (not confirmed yet)
+ 6.3 - File is compressed using LZMA
+ 6.3 - File is compressed using PPMD+
+ 6.3 - File is encrypted using Blowfish
+ 6.3 - File is encrypted using Twofish
+
+ +
+ + + Get a value indicating wether this entry can be decompressed by the library. + + This is based on the and + wether the compression method is supported. + + + + Gets a value indicating if the entry requires Zip64 extensions + to store the full entry values. + + A value of true if a local header requires Zip64 extensions; false if not. + + + + Get a value indicating wether the central directory entry requires Zip64 extensions to be stored. + + + + + Get/Set DosTime value. + + + The MS-DOS date format can only represent dates between 1/1/1980 and 12/31/2107. + + + + + Gets/Sets the time of last modification of the entry. + + + The property is updated to match this as far as possible. + + + + + Returns the entry name. + + + The unix naming convention is followed. + Path components in the entry should always separated by forward slashes ('/'). + Dos device names like C: should also be removed. + See the class, or + + + + + Gets/Sets the size of the uncompressed data. + + + The size or -1 if unknown. + + Setting the size before adding an entry to an archive can help + avoid compatability problems with some archivers which dont understand Zip64 extensions. + + + + Gets/Sets the size of the compressed data. + + + The compressed entry size or -1 if unknown. + + + + + Gets/Sets the crc of the uncompressed data. + + + Crc is not in the range 0..0xffffffffL + + + The crc value or -1 if unknown. + + + + + Gets/Sets the compression method. Only Deflated and Stored are supported. + + + The compression method for this entry + + + + + Gets/Sets the extra data. + + + Extra data is longer than 64KB (0xffff) bytes. + + + Extra data or null if not set. + + + + + Gets/Sets the entry comment. + + + If comment is longer than 0xffff. + + + The comment or null if not set. + + + A comment is only available for entries when read via the ZipFile class. + The class doesnt have the comment data available. + + + + + Gets a value indicating if the entry is a directory. + however. + + + A directory is determined by an entry name with a trailing slash '/'. + The external file attributes can also indicate an entry is for a directory. + Currently only dos/windows attributes are tested in this manner. + The trailing slash convention should always be followed. + + + + + Get a value of true if the entry appears to be a file; false otherwise + + + This only takes account of DOS/Windows attributes. Other operating systems are ignored. + For linux and others the result may be incorrect. + + + + + Huffman tree used for inflation + + + + + Literal length tree + + + + + Distance tree + + + + + Constructs a Huffman tree from the array of code lengths. + + + the array of code lengths + + + + + Reads the next symbol from input. The symbol is encoded using the + huffman tree. + + + input the input source. + + + the next symbol, or -1 if not enough input is available. + + + + + Graphical representation of a series, tpyes are text, graphical or blank + - Graphical Banners are defined as having a graphical/logo version of the series name + - Text Banners generally use Arial Bold font, 27pt as the text + - The main requirement for blank banners is they should be blank on the left side of the banner as + that is where the auto-generated text will be placed + + More information on http://thetvdb.com/wiki/index.php/Series_Banners + + + + + TvdbSeriesBanner constructor + + + + + TvdbSeriesBanner constructor + + Id of banner + Path of banner image + Language of this banner + Banner type (text, graphical, blank, none) + + + + Banner type of the series banner + + + + + Type of the series banner + + + + + Banners contains a text of the seriesname + + + + + Banner containing a graphical representation of the seriesname + + + + + Banner containing a free space on the left side to place your own series description + + + + + Nothing specified + + + + + ExtraData tagged value interface. + + + + + Set the contents of this instance from the data passed. + + The data to extract contents from. + The offset to begin extracting data from. + The number of bytes to extract. + + + + Get the data representing this instance. + + Returns the data for this instance. + + + + Get the ID for this tagged data value. + + + + + A raw binary tagged value + + + + + Initialise a new instance. + + The tag ID. + + + + Set the data from the raw values provided. + + The raw data to extract values from. + The index to start extracting values from. + The number of bytes available. + + + + Get the binary data representing this instance. + + The raw binary data representing this instance. + + + + The tag ID for this instance. + + + + + Get the ID for this tagged data value. + + + + + Get /set the binary data representing this instance. + + The raw binary data representing this instance. + + + + Class representing extended unix date time values. + + + + + Set the data from the raw values provided. + + The raw data to extract values from. + The index to start extracting values from. + The number of bytes available. + + + + Get the binary data representing this instance. + + The raw binary data representing this instance. + + + + Test a value to see if is valid and can be represented here. + + The value to test. + Returns true if the value is valid and can be represented; false if not. + The standard Unix time is a signed integer data type, directly encoding the Unix time number, + which is the number of seconds since 1970-01-01. + Being 32 bits means the values here cover a range of about 136 years. + The minimum representable time is 1901-12-13 20:45:52, + and the maximum representable time is 2038-01-19 03:14:07. + + + + + Get the ID + + + + + Get /set the Modification Time + + + + + + + Get / set the Access Time + + + + + + + Get / Set the Create Time + + + + + + + Get/set the values to include. + + + + + Flags indicate which values are included in this instance. + + + + + The modification time is included + + + + + The access time is included + + + + + The create time is included. + + + + + Class handling NT date time values. + + + + + Set the data from the raw values provided. + + The raw data to extract values from. + The index to start extracting values from. + The number of bytes available. + + + + Get the binary data representing this instance. + + The raw binary data representing this instance. + + + + Test a valuie to see if is valid and can be represented here. + + The value to test. + Returns true if the value is valid and can be represented; false if not. + + NTFS filetimes are 64-bit unsigned integers, stored in Intel + (least significant byte first) byte order. They determine the + number of 1.0E-07 seconds (1/10th microseconds!) past WinNT "epoch", + which is "01-Jan-1601 00:00:00 UTC". 28 May 60056 is the upper limit + + + + + Get the ID for this tagged data value. + + + + + Get/set the last modification time. + + + + + Get /set the create time + + + + + Get /set the last access time. + + + + + A factory that creates tagged data instances. + + + + + Get data for a specific tag value. + + The tag ID to find. + The data to search. + The offset to begin extracting data from. + The number of bytes to extract. + The located value found, or null if not found. + + + + + A class to handle the extra data field for Zip entries + + + Extra data contains 0 or more values each prefixed by a header tag and length. + They contain zero or more bytes of actual data. + The data is held internally using a copy on write strategy. This is more efficient but + means that for extra data created by passing in data can have the values modified by the caller + in some circumstances. + + + + + Initialise a default instance. + + + + + Initialise with known extra data. + + The extra data. + + + + Get the raw extra data value + + Returns the raw byte[] extra data this instance represents. + + + + Clear the stored data. + + + + + Get a read-only for the associated tag. + + The tag to locate data for. + Returns a containing tag data or null if no tag was found. + + + + Get the tagged data for a tag. + + The tag to search for. + Returns a tagged value or null if none found. + + + + Find an extra data value + + The identifier for the value to find. + Returns true if the value was found; false otherwise. + + + + Add a new entry to extra data. + + The value to add. + + + + Add a new entry to extra data + + The ID for this entry. + The data to add. + If the ID already exists its contents are replaced. + + + + Start adding a new entry. + + Add data using , , , or . + The new entry is completed and actually added by calling + + + + + Add entry data added since using the ID passed. + + The identifier to use for this entry. + + + + Add a byte of data to the pending new entry. + + The byte to add. + + + + + Add data to a pending new entry. + + The data to add. + + + + + Add a short value in little endian order to the pending new entry. + + The data to add. + + + + + Add an integer value in little endian order to the pending new entry. + + The data to add. + + + + + Add a long value in little endian order to the pending new entry. + + The data to add. + + + + + Delete an extra data field. + + The identifier of the field to delete. + Returns true if the field was found and deleted. + + + + Read a long in little endian form from the last found data value + + Returns the long value read. + + + + Read an integer in little endian form from the last found data value. + + Returns the integer read. + + + + Read a short value in little endian form from the last found data value. + + Returns the short value read. + + + + Read a byte from an extra data + + The byte value read or -1 if the end of data has been reached. + + + + Skip data during reading. + + The number of bytes to skip. + + + + Internal form of that reads data at any location. + + Returns the short value read. + + + + Dispose of this instance. + + + + + Gets the current extra data length. + + + + + Get the length of the last value found by + + This is only valid if has previously returned true. + + + + Get the index for the current read value. + + This is only valid if has previously returned true. + Initially the result will be the index of the first byte of actual data. The value is updated after calls to + , and . + + + + Get the number of bytes remaining to be read for the current value; + + + + + PkzipClassic embodies the classic or original encryption facilities used in Pkzip archives. + While it has been superceded by more recent and more powerful algorithms, its still in use and + is viable for preventing casual snooping + + + + + Generates new encryption keys based on given seed + + The seed value to initialise keys with. + A new key value. + + + + PkzipClassicCryptoBase provides the low level facilities for encryption + and decryption using the PkzipClassic algorithm. + + + + + Transform a single byte + + + The transformed value + + + + + Set the key schedule for encryption/decryption. + + The data use to set the keys from. + + + + Update encryption keys + + + + + Reset the internal state. + + + + + PkzipClassic CryptoTransform for encryption. + + + + + Initialise a new instance of + + The key block to use. + + + + Transforms the specified region of the specified byte array. + + The input for which to compute the transform. + The offset into the byte array from which to begin using data. + The number of bytes in the byte array to use as data. + The computed transform. + + + + Transforms the specified region of the input byte array and copies + the resulting transform to the specified region of the output byte array. + + The input for which to compute the transform. + The offset into the input byte array from which to begin using data. + The number of bytes in the input byte array to use as data. + The output to which to write the transform. + The offset into the output byte array from which to begin writing data. + The number of bytes written. + + + + Cleanup internal state. + + + + + Gets a value indicating whether the current transform can be reused. + + + + + Gets the size of the input data blocks in bytes. + + + + + Gets the size of the output data blocks in bytes. + + + + + Gets a value indicating whether multiple blocks can be transformed. + + + + + PkzipClassic CryptoTransform for decryption. + + + + + Initialise a new instance of . + + The key block to decrypt with. + + + + Transforms the specified region of the specified byte array. + + The input for which to compute the transform. + The offset into the byte array from which to begin using data. + The number of bytes in the byte array to use as data. + The computed transform. + + + + Transforms the specified region of the input byte array and copies + the resulting transform to the specified region of the output byte array. + + The input for which to compute the transform. + The offset into the input byte array from which to begin using data. + The number of bytes in the input byte array to use as data. + The output to which to write the transform. + The offset into the output byte array from which to begin writing data. + The number of bytes written. + + + + Cleanup internal state. + + + + + Gets a value indicating whether the current transform can be reused. + + + + + Gets the size of the input data blocks in bytes. + + + + + Gets the size of the output data blocks in bytes. + + + + + Gets a value indicating whether multiple blocks can be transformed. + + + + + Defines a wrapper object to access the Pkzip algorithm. + This class cannot be inherited. + + + + + Generate an initial vector. + + + + + Generate a new random key. + + + + + Create an encryptor. + + The key to use for this encryptor. + Initialisation vector for the new encryptor. + Returns a new PkzipClassic encryptor + + + + Create a decryptor. + + Keys to use for this new decryptor. + Initialisation vector for the new decryptor. + Returns a new decryptor. + + + + Get / set the applicable block size in bits. + + The only valid block size is 8. + + + + Get an array of legal key sizes. + + + + + Get an array of legal block sizes. + + + + + Get / set the key value applicable. + + + + + This is the DeflaterHuffman class. + + This class is not thread safe. This is inherent in the API, due + to the split of Deflate and SetInput. + + author of the original java version : Jochen Hoenicke + + + + + Pending buffer to use + + + + + Construct instance with pending buffer + + Pending buffer to use + + + + Reset internal state + + + + + Write all trees to pending buffer + + The number/rank of treecodes to send. + + + + Compress current buffer writing data to pending buffer + + + + + Flush block to output with no compression + + Data to write + Index of first byte to write + Count of bytes to write + True if this is the last block + + + + Flush block to output with compression + + Data to flush + Index of first byte to flush + Count of bytes to flush + True if this is the last block + + + + Get value indicating if internal buffer is full + + true if buffer is full + + + + Add literal to buffer + + Literal value to add to buffer. + Value indicating internal buffer is full + + + + Add distance code and length to literal and distance trees + + Distance code + Length + Value indicating if internal buffer is full + + + + Reverse the bits of a 16 bit value. + + Value to reverse bits + Value with bits reversed + + + + Resets the internal state of the tree + + + + + Check that all frequencies are zero + + + At least one frequency is non-zero + + + + + Set static codes and length + + new codes + length for new codes + + + + Build dynamic codes and lengths + + + + + Get encoded length + + Encoded length, the sum of frequencies * lengths + + + + Scan a literal or distance tree to determine the frequencies of the codes + in the bit length tree. + + + + + Write tree values + + Tree to write + + + + Series class holds all the info that can be retrieved from http://thetvdb.com.
+
+ Those are as follows:
+
+ - Base information:
+ + + 73739 + |Malcolm David Kelley|Jorge Garcia|Maggie Grace|...| + Thursday + 9:00 PM + TV-14 + 2004-09-22 + |Action and Adventure|Drama|Science-Fiction| + tt0411008 + en + ABC + After Oceanic Air flight 815... + 8.9 + 60 + 24313 + Lost + Continuing + graphical/24313-g2.jpg + fanart/original/73739-1.jpg + 1205694666 + SH672362 + + + - Banner information
+ - Episode information
+ - Extended actor information
+
+ Each of those can be downloaded seperately. If the information is downloaded as + zipped file, everything is downloaded at once +
+
+ + + Basic constructor for the TvdbSeries class + + + + + Create a series object with all the information contained in the TvdbSeriesFields object + + + + + + Add a new language to the series + + + + + + Set the language of the series to one of the languages that have + already been loaded + + The new language for this series + true if success, false otherwise + + + + Set the language of the series to one of the languages that have + already been loaded + + The new language abbriviation for this series + true if success, false otherwise + + + + Get all languages that have already been loaded for this series + + List of all translations that are loaded for this series + + + + Return a list of episodes for the given season + + Season for which episodes should be returned + List of episodes for the given season + + + + returns SeriesName (SeriesId) + + String representing this series + + + + Uptdate the info of the current series with the updated one + + TvdbSeries object + + + + Get all available Translations + + + + + Is the series a favorite + + + + + Returns the genre string in the format | genre1 | genre2 | genre3 | + + + + + Formatted String of actors that appear during this episode in the + format | actor1 | actor2 | actor3 | + + + + + returns a list of all banners for this series + + + + + Is the banner info loaded + + + + + returns a list of all series banners for this series + + + + + Returns a list of all season banners for this series + + + + + Returns a list of all season banners for this series + + + + + Returns a list of all fanart banners for this series + + + + + How many Season does the series have + + + + + List of loaded tvdb actors + + + + + Is the actor info loaded + + + + + Exception that is thrown if http://thetvdb.com seems to be unavailable + + + + + TvdbNotAvailableException constructor + + Message + + + + TvdbNotAvailableException constructor + + + + + TvdbDownloader allows simple downloading of all informations stored + on http://thetvdb.com. Unlike the class Tvdb TvdbDownloader doesn't + include any logic like caching. + + + + + TvdbDownloader constructor + + The api key used for downloading data from thetvdb -> see http://thetvdb.com/wiki/index.php/Programmers_API + + + + Download the episodes for the given series + + the id of the series + the language in which the episodes should be downloaded + An episode object or null if no episodes could be found + Exception is thrown when there was an error parsing the xml files. + Feel free to post a detailed description of this issue on http://code.google.com/p/tvdblib + or http://forums.thetvdb.com/ + The stored api key is invalid + The tvdb database is unavailable + + + + Download all available banners (only a list of available banners, not the actual images!)for the specified series. + You can load the actual images by calling LoadBanner() (or LoadThumb(), LoadVignette()) on the banner object + + Id of series + List of all banners for the given series + Exception is thrown when there was an error parsing the xml files. + Feel free to post a detailed description of this issue on http://code.google.com/p/tvdblib + or http://forums.thetvdb.com/ + The stored api key is invalid + The tvdb database is unavailable + + + + Download series from tvdb (specified by series id and language) + + id of series + language of series + load episodes + load actors + load banners + The series object or null if the series couldn't be found + Exception is thrown when there was an error parsing the xml files. + Feel free to post a detailed description of this issue on http://code.google.com/p/tvdblib + or http://forums.thetvdb.com/ + The stored api key is invalid + The tvdb database is unavailable + + + + Download the series in the given language + + id of series + language of series + Exception is thrown when there was an error parsing the xml files. + Feel free to post a detailed description of this issue on http://code.google.com/p/tvdblib + or http://forums.thetvdb.com/ + The stored api key is invalid + The tvdb database is unavailable + the series object + + + + Download a series search for the id of an external site + + The site that provides the external id + The id that identifies the series on the external site + Exception is thrown when there was an error parsing the xml files. + Feel free to post a detailed description of this issue on http://code.google.com/p/tvdblib + or http://forums.thetvdb.com/ + The stored api key is invalid + The tvdb database is unavailable + the series object that corresponds to the given site and id + + + + Download the given episode from tvdb + + Id of episode + Language in which the episode should be downloaded + The episode object + Exception is thrown when there was an error parsing the xml files. + Feel free to post a detailed description of this issue on http://code.google.com/p/tvdblib + or http://forums.thetvdb.com/ + The episode/series/banner couldn't be located on the tvdb server. + Exception is thrown when thetvdb isn't available. + + + + Download the episode (specified by series id, season number, episode number, language and episode order) from http://thetvdb.com. + It is possible to retrieve episodes by aired order (aka default order), DVD order and absolute order. For a detailled description of these + options see: http://thetvdb.com/wiki/index.php/Category:Episodes + + series id + season nr + episode nr + language + order + The episode object or null if the episode could't be found + Exception is thrown when there was an error parsing the xml files. + Feel free to post a detailed description of this issue on http://code.google.com/p/tvdblib + or http://forums.thetvdb.com/ + The episode/series/banner couldn't be located on the tvdb server. + Exception is thrown when thetvdb isn't available. + + + + Download the episode specified from http://thetvdb.com + + series id + when did the episode air + language + Episode + Exception is thrown when there was an error parsing the xml files. + Feel free to post a detailed description of this issue on http://code.google.com/p/tvdblib + or http://forums.thetvdb.com/ + The episode/series/banner couldn't be located on the tvdb server. + Exception is thrown when thetvdb isn't available. + + + + Download the preferred language of the user. + + Id of user + The preferred language for this user as set on http://thetvdb.com + Exception is thrown when there was an error parsing the xml files. + Feel free to post a detailed description of this issue on http://code.google.com/p/tvdblib + or http://forums.thetvdb.com/ + The user doesn't exist + The tvdb database is unavailable + + + + Download the user favorite list + + Id of user (register at http://thetvdb.com to get a user id) + Favorite list for specified user + Exception is thrown when there was an error parsing the xml files. + Feel free to post a detailed description of this issue on http://code.google.com/p/tvdblib + or http://forums.thetvdb.com/ + The user doesn't exist + The tvdb database is unavailable + + + + Download the user favorite list + + Id of user + Type of action + id of series + List of user favorites + Exception is thrown when there was an error parsing the xml files. + Feel free to post a detailed description of this issue on http://code.google.com/p/tvdblib + or http://forums.thetvdb.com/ + The user doesn't exist + The tvdb database is unavailable + + + + Download an Update + + updated series to return + updated episodes to return + updated banners to return + interval to download (0=day, 1=week, 2=month) + use zip + Time of the update + Exception is thrown when there was an error parsing the xml files. + Feel free to post a detailed description of this issue on http://code.google.com/p/tvdblib + or http://forums.thetvdb.com/ + The stored api key is invalid + Exception is thrown when thetvdb isn't available. + + + + Download an Update + + updated series to return + updated episodes to return + updated banners to return + interval to download + use zip + Time of the update + Exception is thrown when there was an error parsing the xml files. + Feel free to post a detailed description of this issue on http://code.google.com/p/tvdblib + or http://forums.thetvdb.com/ + The stored api key is invalid + Exception is thrown when thetvdb isn't available. + + + + Download list available languages. + + A list of TvdbLanguage objects + Exception is thrown when there was an error parsing the xml files. + Feel free to post a detailed description of this issue on http://code.google.com/p/tvdblib + or http://forums.thetvdb.com/ + The episode/series/banner couldn't be located on the tvdb server. + Exception is thrown when thetvdb isn't available. + + + + Download search results for a series search in the default language (english) + + name of the series + List of possible matches for the search + Exception is thrown when there was an error parsing the xml files. + Feel free to post a detailed description of this issue on http://code.google.com/p/tvdblib + or http://forums.thetvdb.com/ + The stored api key is invalid + Exception is thrown when thetvdb isn't available. + + + + Download search results for a series search + + name of the series + language of the search + List of possible matches for the search + Exception is thrown when there was an error parsing the xml files. + Feel free to post a detailed description of this issue on http://code.google.com/p/tvdblib + or http://forums.thetvdb.com/ + The stored api key is invalid + Exception is thrown when thetvdb isn't available. + + + + Make the request for rating a series + + The id of the user + The id of the series + The rating for this series + A double value with the current rating for this series + Exception is thrown when there was an error parsing the xml files. + Feel free to post a detailed description of this issue on http://code.google.com/p/tvdblib + or http://forums.thetvdb.com/ + The user doesn't exist + Exception is thrown when thetvdb isn't available. + + + + Make the request for rating an episode + + The id of the user + The id of the episode + The rating for this series + A double value with the current rating for this series + Exception is thrown when there was an error parsing the xml files. + Feel free to post a detailed description of this issue on http://code.google.com/p/tvdblib + or http://forums.thetvdb.com/ + The user doesn't exist + Exception is thrown when thetvdb isn't available. + + + + Download the series rating without rating the item. + + id of user + id of series + Current rating for the series + Exception is thrown when there was an error parsing the xml files. + Feel free to post a detailed description of this issue on http://code.google.com/p/tvdblib + or http://forums.thetvdb.com/ + The user doesn't exist + Exception is thrown when thetvdb isn't available. + + + + Download the episode rating without rating + + id of the user + id of the episode + Current rating of this episode + Exception is thrown when there was an error parsing the xml files. + Feel free to post a detailed description of this issue on http://code.google.com/p/tvdblib + or http://forums.thetvdb.com/ + The user doesn't exist + Exception is thrown when thetvdb isn't available. + + + + Download the list of actors + + Id of series + List of actors for the given series + + + + Gets all series this user has already ratet + + All series ratings the user has made so far + Exception is thrown when there was an error parsing the xml files. + Feel free to post a detailed description of this issue on http://code.google.com/p/tvdblib + or http://forums.thetvdb.com/ + The user doesn't exist + Exception is thrown when thetvdb isn't available. + + + + Download the user rating for the given series (episodes and series itself) + + Id of user + Id of series + Dictionary of all ratings + Exception is thrown when there was an error parsing the xml files. + Feel free to post a detailed description of this issue on http://code.google.com/p/tvdblib + or http://forums.thetvdb.com/ + The user doesn't exist + Exception is thrown when thetvdb isn't available. + + + + Newest addition to the graphical section. Like the name says it has poster + format (680px x 1000px) and is not smaller than 500 kb + + More information at http://thetvdb.com/wiki/index.php/Posters + + + + + TvdbPosterBanner constructor + + Id of fanart banner + Language for this banner + Path of image for this banner + + + + TvdbPosterBanner constructor + + + + + Resolution of the Poster banner + + + + + Information on server structure and mirrors of tvdb + + /api// + |---- mirrors.xml + |---- languages.xml + | + |---- series/ + | |---- / + | |---- .xml (Base Series Record) + | |---- banners.xml (All banners related to this series) + | | + | |---- all/ + | | |---- .xml (Full Series Record) + | | |---- .zip (Zipped version of Full Series Record and banners.xml) + | | + | |---- default/ (sorts using the default ordering method) + | | |---- // + | | |---- .xml (Base Episode Record) + | | + | |---- dvd/ (sorts using the dvd ordering method) + | | |---- // + | | |---- .xml (Base Episode Record) + | | + | |---- absolute/ (sorts using the absolute ordering method) + | |---- / + | |---- .xml (Base Episode Record) + | + |---- episodes + | |---- / (will return en.xml by default) + | |---- .xml (Base Episode Record) + | + |---- (updates) + |---- s.xml + |---- updates_.zip + ]]> + + + + + Base server where all operations start + + + + + Path of file where we get the available languages + + + + + Creates link which (depending on params) gets user favorites, adds a series to user + favorites or removes a series from the favorite lis + + + + + Link + + + + Creates link which only retrieves the user favourites + + + Link + + + + Create link to get actor info + + series id + api key + Link + + + + create a link to all series rated by the user + + api key + user identifier + Link + + + + create a link to all items rated by the user for this series + + api key + user identifier + id of the series + Link + + + + + Represents a rating entry from thetvdb + + + + + Which item type is this rating for + + + + + Community Rating is a double value from 0 to 10 and is the mean value of all user ratings for this item + + + + + The rating from this user + + + + + Enum with all items on thetvdb that can be rated + + + + + Item is a series + + + + + Item is an episode + + + + + Represents exception conditions specific to Zip archive handling + + + + + Deserialization constructor + + for this constructor + for this constructor + + + + Initializes a new instance of the ZipException class. + + + + + Initializes a new instance of the ZipException class with a specified error message. + + The error message that explains the reason for the exception. + + + + Initialise a new instance of ZipException. + + A message describing the error. + The exception that is the cause of the current exception. + + + + Computes Adler32 checksum for a stream of data. An Adler32 + checksum is not as reliable as a CRC32 checksum, but a lot faster to + compute. + + The specification for Adler32 may be found in RFC 1950. + ZLIB Compressed Data Format Specification version 3.3) + + + From that document: + + "ADLER32 (Adler-32 checksum) + This contains a checksum value of the uncompressed data + (excluding any dictionary data) computed according to Adler-32 + algorithm. This algorithm is a 32-bit extension and improvement + of the Fletcher algorithm, used in the ITU-T X.224 / ISO 8073 + standard. + + Adler-32 is composed of two sums accumulated per byte: s1 is + the sum of all bytes, s2 is the sum of all s1 values. Both sums + are done modulo 65521. s1 is initialized to 1, s2 to zero. The + Adler-32 checksum is stored as s2*65536 + s1 in most- + significant-byte first (network) order." + + "8.2. The Adler-32 algorithm + + The Adler-32 algorithm is much faster than the CRC32 algorithm yet + still provides an extremely low probability of undetected errors. + + The modulo on unsigned long accumulators can be delayed for 5552 + bytes, so the modulo operation time is negligible. If the bytes + are a, b, c, the second sum is 3a + 2b + c + 3, and so is position + and order sensitive, unlike the first sum, which is just a + checksum. That 65521 is prime is important to avoid a possible + large class of two-byte errors that leave the check unchanged. + (The Fletcher checksum uses 255, which is not prime and which also + makes the Fletcher check insensitive to single byte changes 0 - + 255.) + + The sum s1 is initialized to 1 instead of zero to make the length + of the sequence part of s2, so that the length does not have to be + checked separately. (Any sequence of zeroes has a Fletcher + checksum of zero.)" + + + + + largest prime smaller than 65536 + + + + + Creates a new instance of the Adler32 class. + The checksum starts off with a value of 1. + + + + + Resets the Adler32 checksum to the initial value. + + + + + Updates the checksum with a byte value. + + + The data value to add. The high byte of the int is ignored. + + + + + Updates the checksum with an array of bytes. + + + The source of the data to update with. + + + + + Updates the checksum with the bytes taken from the array. + + + an array of bytes + + + the start of the data used for this update + + + the number of bytes to use for this update + + + + + Returns the Adler32 data checksum computed so far. + + + + + Represents an tvdb actor -> for more information see http://thetvdb.com/wiki/index.php/API:actors.xml + + + + + This matches the First, Second, Third, and Don't Care options on the site, which determine if the actor is shown on the series page or not. First (SortOrder=0), Second (SortOrder=1), and Third (SortOrder=2) generally mean the actor plays a primary role in the series. Don't Care (SortOrder=3) generally means the actor plays a lesser role. In some series there are no primary actors, so all actors will have a SortOrder of 3. The actors are also listed in the report in SortOrder, followed by those with images, and then finally by Name. So using the order they show up in the file is a valid method. + + + + + The name of the actor's character in the series. This may include multiple roles in comma-separated format. + + + + + The actual name of the actor. + + + + + The image for the actor in this role. + + + + + A unique id per actor. At some point actors will be globally unique but for now they're just unique per series. + + + + + Binary cache provider saves all the cached info into + + broken at the moment -> use CacheProvider + + + + + BinaryCacheProvider constructor + + The root folder where the cached data should be stored + + + + Load the cached data + + TvdbData object + + + + Initialises the cache, should do the following things + - initialise connections used for this cache provider (db connections, network shares,...) + - create folder structure / db tables / ... if they are not created already + - if this is the first time the cache has been initialised (built), mark last_updated with the + current date + + Tvdb Data object + + + + Closes the cache (e.g. close open connection, etc.) + + true if successful, false otherwise + + + + Saves cache settings + + settings + + + + Saves the time of the last update to cache + + time of last update + + + + Save the language to cache + + List of languages + + + + Save the mirror info to cache + + list of mirrors + + + + Loads the available languages from cache + + List of available languages + + + + Load the available mirrors from cache + + List of available mirrors + + + + Load the give series from cache + + id of series to load + loaded series, or null if not successful + + + + Saves the series to cache + + Tvdb series + + + + Saves the user data to cache + + TvdbUser + + + + Loads all series from cache + + List that contains all series object that had been previously cached + + + + Load the userinfo from the cache + + Id of user + TvdbUser object + + + + Receives a list of all series that have been cached + + Ids of series that are already cached + + + + Check if the series is cached in the given configuration + + Id of the series + Language of the series + are episodes loaded + are banners loaded + are actors loaded + true if the series is cached, false otherwise + + + + Completely refreshes the cached (all stored information is lost). + + true if the cache was cleared successfully, + false otherwise (e.g. no write rights,...) + + + + Remove a specific series from cache + + the id of the series + true if the series was removed from the cache successfully, + false otherwise (e.g. series not cached) + + + + Save the given image to cache + + banner to save + id of series + filename (will be the same name used by LoadImageFromCache) + + + + Loads the specified image from the cache + + series id + filename of the image (same one as used by SaveToCache) + The loaded image or null if the image wasn't found + + + + Removes the specified image from cache (if it has been cached) + + id of series + name of image + true if image was removed successfully, false otherwise (e.g. image didn't exist) + + + + Load the time when the cache was updated last + + DateTime of lsat update + + + + Is the cache provider initialised + + + + + Class to store what parts of the cached series has been loaded + + + + + constructor + + Id of series + Are episodes loaded + Are banners loaded + Are actors loaded + + + + Are actors loaded + + + + + Are banners loaded + + + + + Are episodes loaded + + + + + Id of series + + + + + This is an InflaterInputStream that reads the files baseInputStream an zip archive + one after another. It has a special method to get the zip entry of + the next file. The zip entry contains information about the file name + size, compressed size, Crc, etc. + It includes support for Stored and Deflated entries. +
+
Author of the original java version : Jochen Hoenicke +
+ + This sample shows how to read a zip file + + using System; + using System.Text; + using System.IO; + + using ICSharpCode.SharpZipLib.Zip; + + class MainClass + { + public static void Main(string[] args) + { + using ( ZipInputStream s = new ZipInputStream(File.OpenRead(args[0]))) { + + ZipEntry theEntry; + while ((theEntry = s.GetNextEntry()) != null) { + int size = 2048; + byte[] data = new byte[2048]; + + Console.Write("Show contents (y/n) ?"); + if (Console.ReadLine() == "y") { + while (true) { + size = s.Read(data, 0, data.Length); + if (size > 0) { + Console.Write(new ASCIIEncoding().GetString(data, 0, size)); + } else { + break; + } + } + } + } + } + } + } + + +
+ + + The current reader this instance. + + + + + Creates a new Zip input stream, for reading a zip archive. + + The underlying providing data. + + + + Advances to the next entry in the archive + + + The next entry in the archive or null if there are no more entries. + + + If the previous entry is still open CloseEntry is called. + + + Input stream is closed + + + Password is not set, password is invalid, compression method is invalid, + version required to extract is not supported + + + + + Read data descriptor at the end of compressed data. + + + + + Complete cleanup as the final part of closing. + + True if the crc value should be tested + + + + Closes the current zip entry and moves to the next one. + + + The stream is closed + + + The Zip stream ends early + + + + + Reads a byte from the current zip entry. + + + The byte or -1 if end of stream is reached. + + + + + Handle attempts to read by throwing an . + + The destination array to store data in. + The offset at which data read should be stored. + The maximum number of bytes to read. + Returns the number of bytes actually read. + + + + Handle attempts to read from this entry by throwing an exception + + + + + Perform the initial read on an entry which may include + reading encryption headers and setting up inflation. + + The destination to fill with data read. + The offset to start reading at. + The maximum number of bytes to read. + The actual number of bytes read. + + + + Read a block of bytes from the stream. + + The destination for the bytes. + The index to start storing data. + The number of bytes to attempt to read. + Returns the number of bytes read. + Zero bytes read means end of stream. + + + + Reads a block of bytes from the current zip entry. + + + The number of bytes read (this may be less than the length requested, even before the end of stream), or 0 on end of stream. + + + An i/o error occured. + + + The deflated stream is corrupted. + + + The stream is not open. + + + + + Closes the zip input stream + + + + + Optional password used for encryption when non-null + + A password for all encrypted entries in this + + + + Gets a value indicating if there is a current entry and it can be decompressed + + + The entry can only be decompressed if the library supports the zip features required to extract it. + See the ZipEntry Version property for more details. + + + + + Returns 1 if there is an entry available + Otherwise returns 0. + + + + + Returns the current size that can be read from the current entry if available + + Thrown if the entry size is not known. + Thrown if no entry is currently available. + + + + Delegate for reading bytes from a stream. + + + + + Determines how entries are tested to see if they should use Zip64 extensions or not. + + + + + Zip64 will not be forced on entries during processing. + + An entry can have this overridden if required + + + + Zip64 should always be used. + + + + + #ZipLib will determine use based on entry values when added to archive. + + + + + The kind of compression used for an entry in an archive + + + + + A direct copy of the file contents is held in the archive + + + + + Common Zip compression method using a sliding dictionary + of up to 32KB and secondary compression from Huffman/Shannon-Fano trees + + + + + An extension to deflate with a 64KB window. Not supported by #Zip currently + + + + + BZip2 compression. Not supported by #Zip. + + + + + WinZip special for AES encryption, Not supported by #Zip. + + + + + Identifies the encryption algorithm used for an entry + + + + + No encryption has been used. + + + + + Encrypted using PKZIP 2.0 or 'classic' encryption. + + + + + DES encryption has been used. + + + + + RCS encryption has been used for encryption. + + + + + Triple DES encryption with 168 bit keys has been used for this entry. + + + + + Triple DES with 112 bit keys has been used for this entry. + + + + + AES 128 has been used for encryption. + + + + + AES 192 has been used for encryption. + + + + + AES 256 has been used for encryption. + + + + + RC2 corrected has been used for encryption. + + + + + Blowfish has been used for encryption. + + + + + Twofish has been used for encryption. + + + + + RC4 has been used for encryption. + + + + + An unknown algorithm has been used for encryption. + + + + + Defines the contents of the general bit flags field for an archive entry. + + + + + Bit 0 if set indicates that the file is encrypted + + + + + Bits 1 and 2 - Two bits defining the compression method (only for Method 6 Imploding and 8,9 Deflating) + + + + + Bit 3 if set indicates a trailing data desciptor is appended to the entry data + + + + + Bit 4 is reserved for use with method 8 for enhanced deflation + + + + + Bit 5 if set indicates the file contains Pkzip compressed patched data. + Requires version 2.7 or greater. + + + + + Bit 6 if set strong encryption has been used for this entry. + + + + + Bit 7 is currently unused + + + + + Bit 8 is currently unused + + + + + Bit 9 is currently unused + + + + + Bit 10 is currently unused + + + + + Bit 11 if set indicates the filename and + comment fields for this file must be encoded using UTF-8. + + + + + Bit 12 is documented as being reserved by PKware for enhanced compression. + + + + + Bit 13 if set indicates that values in the local header are masked to hide + their actual values, and the central directory is encrypted. + + + Used when encrypting the central directory contents. + + + + + Bit 14 is documented as being reserved for use by PKware + + + + + Bit 15 is documented as being reserved for use by PKware + + + + + This class contains constants used for Zip format files + + + + + The version made by field for entries in the central header when created by this library + + + This is also the Zip version for the library when comparing against the version required to extract + for an entry. + + + + + The version made by field for entries in the central header when created by this library + + + This is also the Zip version for the library when comparing against the version required to extract + for an entry. See ZipInputStream.CanDecompressEntry. + + + + + The minimum version required to support strong encryption + + + + + The minimum version required to support strong encryption + + + + + The version required for Zip64 extensions + + + + + Size of local entry header (excluding variable length fields at end) + + + + + Size of local entry header (excluding variable length fields at end) + + + + + Size of Zip64 data descriptor + + + + + Size of data descriptor + + + + + Size of data descriptor + + + + + Size of central header entry (excluding variable fields) + + + + + Size of central header entry + + + + + Size of end of central record (excluding variable fields) + + + + + Size of end of central record (excluding variable fields) + + + + + Size of 'classic' cryptographic header stored before any entry data + + + + + Size of cryptographic header stored before entry data + + + + + Signature for local entry header + + + + + Signature for local entry header + + + + + Signature for spanning entry + + + + + Signature for spanning entry + + + + + Signature for temporary spanning entry + + + + + Signature for temporary spanning entry + + + + + Signature for data descriptor + + + This is only used where the length, Crc, or compressed size isnt known when the + entry is created and the output stream doesnt support seeking. + The local entry cannot be 'patched' with the correct values in this case + so the values are recorded after the data prefixed by this header, as well as in the central directory. + + + + + Signature for data descriptor + + + This is only used where the length, Crc, or compressed size isnt known when the + entry is created and the output stream doesnt support seeking. + The local entry cannot be 'patched' with the correct values in this case + so the values are recorded after the data prefixed by this header, as well as in the central directory. + + + + + Signature for central header + + + + + Signature for central header + + + + + Signature for Zip64 central file header + + + + + Signature for Zip64 central file header + + + + + Signature for Zip64 central directory locator + + + + + Signature for archive extra data signature (were headers are encrypted). + + + + + Central header digitial signature + + + + + Central header digitial signature + + + + + End of central directory record signature + + + + + End of central directory record signature + + + + + Convert a portion of a byte array to a string. + + + Data to convert to string + + + Number of bytes to convert starting from index 0 + + + data[0]..data[length - 1] converted to a string + + + + + Convert a byte array to string + + + Byte array to convert + + + dataconverted to a string + + + + + Convert a byte array to string + + The applicable general purpose bits flags + + Byte array to convert + + The number of bytes to convert. + + dataconverted to a string + + + + + Convert a byte array to string + + + Byte array to convert + + The applicable general purpose bits flags + + dataconverted to a string + + + + + Convert a string to a byte array + + + String to convert to an array + + Converted array + + + + Convert a string to a byte array + + The applicable general purpose bits flags + + String to convert to an array + + Converted array + + + + Initialise default instance of ZipConstants + + + Private to prevent instances being created. + + + + + Default encoding used for string conversion. 0 gives the default system OEM code page. + Dont use unicode encodings if you want to be Zip compatible! + Using the default code page isnt the full solution neccessarily + there are many variable factors, codepage 850 is often a good choice for + European users, however be careful about compatability. + + + + + Strategies for deflater + + + + + The default strategy + + + + + This strategy will only allow longer string repetitions. It is + useful for random data with a small character set. + + + + + This strategy will not look for string repetitions at all. It + only encodes with Huffman trees (which means, that more common + characters get a smaller encoding. + + + + + Low level compression engine for deflate algorithm which uses a 32K sliding window + with secondary compression from Huffman/Shannon-Fano codes. + + + + + Construct instance with pending buffer + + + Pending buffer to use + > + + + + Deflate drives actual compression of data + + True to flush input buffers + Finish deflation with the current input. + Returns true if progress has been made. + + + + Sets input data to be deflated. Should only be called when NeedsInput() + returns true + + The buffer containing input data. + The offset of the first byte of data. + The number of bytes of data to use as input. + + + + Determines if more input is needed. + + Return true if input is needed via SetInput + + + + Set compression dictionary + + The buffer containing the dictionary data + The offset in the buffer for the first byte of data + The length of the dictionary data. + + + + Reset internal state + + + + + Reset Adler checksum + + + + + Set the deflate level (0-9) + + The value to set the level to. + + + + Fill the window + + + + + Inserts the current string in the head hash and returns the previous + value for this hash. + + The previous hash value + + + + Find the best (longest) string in the window matching the + string starting at strstart. + + Preconditions: + + strstart + MAX_MATCH <= window.length. + + + True if a match greater than the minimum length is found + + + + Hashtable, hashing three characters to an index for window, so + that window[index]..window[index+2] have this hash code. + Note that the array should really be unsigned short, so you need + to and the values with 0xffff. + + + + + prev[index & WMASK] points to the previous index that has the + same hash code as the string starting at index. This way + entries with the same hash code are in a linked list. + Note that the array should really be unsigned short, so you need + to and the values with 0xffff. + + + + + Points to the current character in the window. + + + + + lookahead is the number of characters starting at strstart in + window that are valid. + So window[strstart] until window[strstart+lookahead-1] are valid + characters. + + + + + This array contains the part of the uncompressed stream that + is of relevance. The current character is indexed by strstart. + + + + + The current compression function. + + + + + The input data for compression. + + + + + The total bytes of input read. + + + + + The offset into inputBuf, where input data starts. + + + + + The end offset of the input data. + + + + + The adler checksum + + + + + Get current value of Adler checksum + + + + + Total data processed + + + + + Get/set the deflate strategy + + + + + Logs internal messages + + + + + Logs the message at level Debug + + Message to log + + + + Logs the message at level Debug + + Message to log + Exception to log + + + + Logs the message at level info + + Message to log + + + + Logs the message at level info + + Message to log + Exception to log + + + + Logs the message at level Warn + + Message to log + + + + Logs the message at level Warn + + Message to log + Exception to log + + + + Logs the message at level Error + + Message to log + + + + Logs the message at level Error + + Message to log + Exception to log + + + + Logs the message at level Fatal + + Message to log + + + + Logs the message at level Fatal + + Message to log + Exception to log + + + + Logs the message at the given level + + Message to log + Level to log + + + + The loglevel that is currently used (default = warn) + + + + + Loglevel + + + + Logs debug messages + + + Logs info messages + + + Logs warn messages + + + Logs error messages + + + Logs fatal messages + + + + An actor poster + * Actor images must be 300px x 450px and must fill the entire image. Do not add black bars to the sides to get it to that size. + * Actor images must be smaller than 100kb + * Low quality images should not be scaled up to fit the resolution. Use only high quality art. + * Actor images should show the actor in that particular role, wearing the clothes/makeup they'd wear on the series. Unless it's a cartoon, in which case just a normal picture of the voice actor will do. + * Try to shy away from full body shots. Ideally include some upper body but don't go to far past the waist. + * No nudity, even if the actor is playing the role of a striper who is almost always nude, the images must be family safe. + + + + + Class that holds all user information + + + + + TvdbUser constructor + + Name of the user, can be choosen freely + User identifier from http://thetvdb.com + + + + TvdbUser constructor + + + + + Preferred language of the user + + + + + This is the unique identifier assigned to every user. They can access this value by visiting the account settings page on the site. This is a 16 character alphanumeric string, but you should program your applications to handle id strings up to 32 characters in length. + + + + + Username + + + + + List of user favorites + + + + + This class allows us to retrieve a specified number of bits from + the input buffer, as well as copy big byte blocks. + + It uses an int buffer to store up to 31 bits for direct + manipulation. This guarantees that we can get at least 16 bits, + but we only need at most 15, so this is all safe. + + There are some optimizations in this class, for example, you must + never peek more than 8 bits more than needed, and you must first + peek bits before you may drop them. This is not a general purpose + class but optimized for the behaviour of the Inflater. + + authors of the original java version : John Leuner, Jochen Hoenicke + + + + + Constructs a default StreamManipulator with all buffers empty + + + + + Get the next sequence of bits but don't increase input pointer. bitCount must be + less or equal 16 and if this call succeeds, you must drop + at least n - 8 bits in the next call. + + The number of bits to peek. + + the value of the bits, or -1 if not enough bits available. */ + + + + + Drops the next n bits from the input. You should have called PeekBits + with a bigger or equal n before, to make sure that enough bits are in + the bit buffer. + + The number of bits to drop. + + + + Gets the next n bits and increases input pointer. This is equivalent + to followed by , except for correct error handling. + + The number of bits to retrieve. + + the value of the bits, or -1 if not enough bits available. + + + + + Skips to the next byte boundary. + + + + + Copies bytes from input buffer to output buffer starting + at output[offset]. You have to make sure, that the buffer is + byte aligned. If not enough bytes are available, copies fewer + bytes. + + + The buffer to copy bytes to. + + + The offset in the buffer at which copying starts + + + The length to copy, 0 is allowed. + + + The number of bytes copied, 0 if no bytes were available. + + + Length is less than zero + + + Bit buffer isnt byte aligned + + + + + Resets state and empties internal buffers + + + + + Add more input for consumption. + Only call when IsNeedingInput returns true + + data to be input + offset of first byte of input + number of bytes of input to add. + + + + Gets the number of bits available in the bit buffer. This must be + only called when a previous PeekBits() returned -1. + + + the number of bits available. + + + + + Gets the number of bytes available. + + + The number of bytes available. + + + + + Returns true when SetInput can be called + + + + + Season bannners for each season of a series come in poster format (400 x 578) and wide format(758 x 140) + - Wide format: http://thetvdb.com/wiki/index.php/Wide_Season_Banners + - Poster format: http://thetvdb.com/wiki/index.php/Season_Banners + + + + + Season of the banner + + + + + Type of the banner + + + + + Type of the season banner + + + + + Season banner (poster format) + + + + + Wide season banner (banner format) + + + + + no format specified + + + + + Compare episodes according to their default episode numbers (aired) + + + + + Compare episodes according to their dvd episode number + + + + + Compare episodes according to their absolute episode number + + + + diff --git a/NzbDrone.Core/Libraries/TvdbLib.dll b/NzbDrone.Core/Libraries/TvdbLib.dll new file mode 100644 index 0000000000000000000000000000000000000000..d453dceae07896c65301fa4e96b74a9c25be14d0 GIT binary patch literal 207360 zcmc${34mNh)i!+RcK7XdCUd7J-LoXqlWlS{-IHw~%p@U%HDTW|VM~AzNC>%bo3Lc) zA*?Efu!8~-1VLFvMMM?_6#Nvyh=?d5BKo3&Ac}&oNcf-U)LkbX^nYK!|DU99Rh?7I zsZ*z_&Z(+fcmE@=&|;dV#qs;-BTahixXZUe)w**@l#+jR$3hf*vp*{%-h}lG^#ouPeF%5c=tAw*U_~|63SRW>4$Rt+>uUe-48b_*pF z@AUa94r$Z1g!b9X8?--ur9o>L8S&o?&(dSvWVwa97`-p*R*R-(^jHnNh{wB0{j{Vw z&AJ}HtY6a_YKR%v^&vVn;N!hr`Vfj2mq3O=q_`d)QW5VRk9@`Rq&`HqFrz1?4>5{L zprDJDV_(~#8G1n_(6s#Yq;?DHgn~>!S)L+c!-`CKH+_ioDu5!!u=A)$Hd&aSSAf28 z4icSKZAZ3i^+`f;a*+F%yMpS*JuoMkA-S@k}CHUgWZ4x~W?kr164! zp*N}gRsoT7;rc1~;+T=LiohAEMVVx3aTXOLXH$!X64d^SiQfNU`P;PBzgd1v`Vu%~ zdUflFRyFJNktcV@*f=6u9@|-+#aCwBiWODGjNaXJtBI_VXV>vdd-u|W0pR5lh;P&OwxRmP+E0p{b2oN2S z|A-v8f_-pUgd$Z@4DiHW$+6T?M60LQEo_^dd-u^})k`6~s=GpZjNaLLEFKERrpL9z zq-Ll|u?GIcb*l~15$nr3dyDXk%ptVG4Eg9ComirZsv9+krSxa! zDg9VHC@YULPlpSRnX$r38<# zHe1Za8p~tS1g2MHRFY&t_2pbTwQ_M|y0CIaJXM(faxA^Lca}ax!dh(%S_ULwh&0Q{aC$LmQH6tn?#{WrV5DMpmo~{h^sm|#k{}Um9yY9u=pbs^Is=f|17d`qA`C7@klyx(I#bY#>8v9fo zKZiP2vJM)@9nlit7Hc1i8}{`;X5-04&ANHla=! z05HV^hz9^NQ98GH0GR9n!~;N&2M`YclRSWU0GQ|j!~+1hsxlQ10N}O)hzEdi9zZ+* zu-SwT@c_V<6M%RCKrd7P@c_{70mK6UhCLNSJet-yUDwWn++e81EV~k(N~3aZP@3s8 zL@s)(s7EGaIL|;jY*aGS<3<7pGP&}Y7Tp4KGFc<3u;G}%fs>iOm$x*v=vxaILpp8n zIUbO?3YyO%mztnbs`?{FQ@+`<^MGOmn#3s^si9_`rTmNNU#$E`(EkbLAEy62Gyu zt{_&&Y`9n9*9vx?kKgz4EB{=Nb=s9UrvBX#UmxPLFbx_h6fyd{8xU)eAQ7<-5ix}^ zYd_r{l8#R=9sR{cH9B4zm9aiV*rM8ActZc7qg1W=1hl#Nb|`xGBy5OJFJJmQ7S-s) zIutFXyvkq~MlRI$rqeF@lm}w%k`d+&)(0V>euziYpsP#>rkcbqz_3YR8Euf2{$t{p(mf8ls9S%k<>J9QiZCz_d|Kn zhnQ!~{t>dDlr6opr1D@==uMW)nQ2ss>B>ziS)WmD!*sq@PnMb&*A|eNPAPtPXZnW- zxh5A&Nxh*$Nxf52@AUB8Aj+afm0ubb2^(QXkDG6_4oR;Luue$EP3cL+#f^pOFKtr^ z#e{)Re#oT?k;BPwQzD0yB55ROE@V-G^EiRZpb^F@+XYjan}%W%PNNbqAu-{EF{I%y ziy!|W{t`wXkUtE?8nhD)3W@xICiV|4jUPKk2EPP;OdrQDhadBUmL_>|07nndpaWqn zifJfc{@O1?cWRilXUem;~910hwB_xHh+KhAU(CVDC(7Bq~E0Ip=G zCPqBKpv%I#%%kinC>eCawmKNeGe$NUv!JSE&ft8L)6XR|m9#)^Ib$UIe}zeDyXj{B zo9VzGly^w9JX4iND9QuNw=HjEIw@~^=`ir`hrATMx`u(5?O{UoBv>EX2hYkv<;Ltu z7=&yHkdZMe{VJtlPa&|E!;@rX*b@kt7y?Wtz`}#t+rBLB24Cf65FMRPbro#W+WrKz z)>v@wJUwo0L~$TT!r-Z{VF;kCfHy+ij;)Yx`fRkc0X<&@<|r!Dx=}j-NZKm;5PcP~ zTME5Ly6Iu_`>7EL_JU*!ZPo`@yf_dk198~4y2vGD6?Bl~n0+p&&$#kJ*$?63HkL4m zq%08!+4j=K?b8)*9!$+dQ@klru)f4{ux=DD;!lM<^?U=?bB={DE9yEib^&k<0QPi@ zPj)W=y${ChPa}tIBD&CRV}A=2Y#UoaN5p2`liCb)SoBM?HJ@zFr&{yr>aJ+se8$Y^ zHBwjYhmdCsdj~jx#jN{4PmNg>vSvo;t;}vR2LA+JxM6!L=%2kM1XvELWzfAX~-wxP2Pnl6kp3fC?*Z*qI9DmeQxU_8Rt%Agh?|6yqkJHM0fh$24fnY%!)x z95dVIyrn?xhCK_>*JJK$K#UIOeFYa|#wwuNZq`ctE3G;jgq=q^hV?yEyxdT*KLJ7p z-o^kC_v$+f^|i37ZI_XEs%TH6QyJ^#ld=y&jA*9ixyr=L=geHe$;ZfrTrqCL>^0zPbM{rBc8@VR zRqr;`yS29|URmH(hpp8&=$wf7Rx7Yxx3~cCe7u-7!#)Zj zB^|D8G@6Z`Y&80^(dfxWV^lU8J=tgsWJ8T2gC9!M1p~@q$;!blxi$Qy^skO;&WnX|_;=n`H%>?2W&N{@$O$V~Q)GBaC^-Ow)80pyfVnn`;Q9xqle zcpju-$V{m;yE6@j)=WNSrfdwWewt;Gau_nxD$O2DgIPI~Pn&5Qqo$Vz3qBmw64vdY zR|18C8@S6Ic)P;`FIJYxG!BgD&o*WWj=!^gk*}gq49BoN4efVuF}9lCd@%TAl<9+C z^TV;GM6pni>;`WNpfZ4?W+k0$N~r#qw1r8wa&71lna1+MmY9VJDU(at z=OS^UzcFR6f+yY|N9X8C*)(MmtNNQfFsf0UiqOdtJKYp->yM{0(WzeQy*)dxKIu3tNu9tXefhhqT?J|6(X zEO0rHN=6vqR{XG_;%iZre7q%YL7&cy(#7fDA!Q3Z(UP#hR>JA@k8$Bfi(x^NAe>H= z3Ab&_gi$^d>@|u3s{Y4m$35xQKdvDw>YJ`^5R=+KSFv2(q|&Y%GEZ)Agf_BU5f?hq=(uHX{z!*ia_b3#|O^jGkM)2KcqH z_W9QXYwdv=DzyC&WXr-_g4q!wSg4}oW~>ExR5E%YUa%mfMz1k;B&z76N~H*{uQQZ! zOT*UD=mHH%3q}KTY>O9Fj?N<>%HpUUz+!!vnZ0~t#r|-pO+s$sg7nmcg?Y;8DfX^( z6)9*%tg%$7w|XrrJP#)7fq+3_I|xp1Cv=6Up*XjKKhBE@?X=i>3}m{j);NDh*xH-* z=PVjl8H8b2qCFUSRF){W(0LgKpN4#&*;jD>iKMrheMPP|77VO5CY)Y40JS-Dl?OAH zUliaSQXD)M29yjK|6|Z=qrVtcj4GLYLOE^-W*3#Z7QH3bg3-rb3z5sG+>r?x7|?hy z$7k|rRv{9@G~J?eJW4N=+Jo#CW04rIiI#EhJnO(==@mpUF=f*a%e1H0uzCT3YkaK+G2VP=qRt;ysLrd>Ne)Oo#)A zK5Zac-kwXjrks049S;BCU7#OG4xBP>S=psi(kc&OFQe8GAg`Sm~(Tm;21hi7gA;^A-cd^5Z1C^NU}$QAj5neYn2_?~f< zg&F3If^(lp-;5&gGg0eX%^7XZCIxGE)3_?;3{NCy$fTafN`r{f7*~|cCKG~W7CMev z6i5>qXEAH=iLD=fgh6uJ*1{-%rbyXG0+pXRu$ZkllZ$DYd{G}_hn#&dV3>=go%;v4 zuGiA9+PTdv3eU{8`CC!X);yGGvn^=#Hd|V~-EZ|a)#~ka7}KGf?Z}S8V0KvFVzYIc zos~7uDwVI}UV`={qXnhaoJ@k`Fb@tbw0{|1Gmrvy{v(dnx6- zH2-mFmTuIy6f{doHA{E7)$NQbx@w#5pl!xLXvb1$$I1G8e!OmWn_cF(mhsj@Y@Z3{ zgvw0QKxyo9(mp7tdqg)lA|b~7zr}@odymhYj?81 zuS~wjW$l6xYX=6hj4_~CJK5~9r(k3;C(r*YSR3$aB6u~4ys}#JQ^1AE0lOzFc2Duy zt+G(;o}!ym%pU8TL6yY~Tc#Pj0}bY!fv9H2J|6T*os}wa0)nnV&WRN4elMu&c=A1TXoII>4L$9C{IHS{fqw>Ju8@8`9)+&}d==n7 z8v!4m(6l#@U(Sfe=b|x|2(+mq;5?7h1^A80X#Ar9KOXSMLU7VLoD#iMy9(}}2&4E0 z(qBc`hWi>^uU;M16=>tNurp)Yd&p}vCexTLD-HX&ofP{$1!sk{Q5*{>s*lFooU0Y6 zJry?-Z_+Dil1PCaRvjqR9sy9aKy5Yz$4}6kaBZKxjCfl zJ%FvG0AI`;q1MoG{se}_Wl)u_$^AIh-HVM|PIB^@2-evJVQ$}LWHGAHxMdIU@;HQN ze_0J^iSU5tTpLXuWUksIZm&ktVsD!AKL*tSTQT)$OThGR@D3v0CwJ=WMGF2M$j|QsP2-q@#@u@_DmPczIf5f9#^PkZS?El4cA89xbDD+6;h?wX4`=nM)tBgN}~>*@Ca!dgD-j%aMUPMIHjNMj!2TwTP%4&vA)>;6(KaapNRWas`(jCfJU^q7ej1J% zdqwn-86lw#;6hxn_d_DnP4QA%trg2E=^un2xnj)KSg}gVqb^u3B`3K0Yt%P$5{3 zRExKbogSr)Ub&4U%5Cg&_Efo-(#YiuP~T5?o7vI#MHl-H7@I)Ml=d6dV| zQDcD!kv__6$x+f3{FZDsn+wh-rBcnsXd%sBOE$CgP$A7;OE&v0+3c0uJfhrYuO*w& zlF4vOHv28vta>MP1+=6$fngb-;M^{hnbBr2+nk>$IA$?r)tVj7-xMe`fn_kBL3A>+ zCw?F@k=|OsMCqzSv7}l?mG#&54q@GcOJqKw6L#^A)jRwTo;AY-s6FtlCcYNY%X z(5=|8=Rm233Ri})$RaySm{sy|SBeeOC^(aH?9~PYDrC4CZO%yw-i~2hNwGQ$Ckt|0 zv~=a{bllz<1-nF~3-*x+ja8i=YxM=kmK>74s3zN-%M~c9StL80jSAlB66<#4&f_e{O2Ai+o%mF-9if++($it zy350;9PCB%)yAoAZYP%vdksXVFaswI7{`li*pDEx(c6l>Q(d#X{32m!M&Ss^@i6V`KLdLC_-ZX@eVV{XA8@)(0wmqPQpG4I=^>B5F+H92Xd-c zqatflz1~^D%85#3N#7jMHwN^@`*3av`>x0-S8hf};)*DaQukvca|=5b7m50Qhca*s zag<*M-X`$&WpdisDJoye?SL;AQg0Yrl>KnM&tkn5K%J%lcRwVxQ&G}dj%D9L9vCZK z-VNS~U`+98@GAIq>nYSLQ(cSrSwk)K#mh^vEkoLKdMbud%eo73Dx;EmN_OP!A)v~0 z6*Uq;4QuI2GMN^nD;nM|qzJTo8X_%1fc%9Q*Mk@FFfWq5&P7cg{m$d`3gg{joBBChD%GdfLi>*wSN z))o$hK+6eY@c?j`2M`YchkF3=002ErB@xfp{DOX|3fim++Ts@Us<;X3HMlGg_K->~ z9srK@0OA1v7MhA79srhl0Pz5DoCgpO08l(s67c|Vyax~u0LuuNs>epJUQ!dkcQOaK z6TQgd0bscY5RVtrQSXfCvG(?A4ZN+LjA+<7JBhLJHUMT!@LQm)sDSx4fOxRp%INBy z3NO%s6nvRNFvH=%dEo$tj||_yV6>RME{r-q94Ik>U3Q5Vm-k76WET)Q&qF5UEwFI- zLgF>{Jzbj&w@bz>W|hIYF1o5pm1Z6gFG#HnyIWGRzqaX`1_H3Y@(2caoYN`f^zMW9 zjm0f!7(B6i7r@pi<=^Q0jpses{eZ2I$jQng#Q&Bbj@huKjY?i0t@2XNz^6bZ;^FNK zqc0t^zsdOJjO!`o7I_7K!_TO^2s1hA!P?m5s{J=gXF+0)M7;}?S8@uk=|l?00aKOA zbz(NF6tf?|)A|5?u`#`2MK=$3VsLqhgUj6ju8rA`Awu&S3yyu z95>O-HeFI%%@UbnBi?ee9y{6XAIeqvj<#A5v7FN5s>7g2l;%Sd3fdI!ixtW^(1JHX z4JC^OXCKIhTDIUR|BU-$q3W1MVMZh7h5}QlMnm0r_HicMhJe?XAR!Nl8`V$3hZ$4) z6QOvm)PovH_vOPJ>tyliy?n^l#LI_t)XRr=s4Tz@6tv`d`%}ou1$CVe2J)OI3#%Vf zCFJ{nF3(EMCx{Pc9~7sT{6w)hR%%|RyuF9$F~u%DR_Z=Md3%qQiQ-gYGvUjW*Bc)( z`l~iaXS<7?4aP%eZ2=vGqd?b^%5iM*WJ<|ScqlWv7J1#Mgt3b~+Z90R^5O@d7G=s^ zF4`kb@G8JeTs=wGFl!1eil1m`7CbfUJQxfDF01W#IHF-hz`LPfz5Pc7J^$PA_aY!| z;$c)kP(6@k3u|w3^!ie|JaLUxx(v?M0JYvlwa~?Sds4d_bWMQFI9ox8bs6B*4S1mT zvgOoMk9KJKr110S>;8FE*q`5U+bfyMy+7T|i%~=@0PX}Dq zU-3Z%8K!~-RYk#Vsy076EFnD?FyP}I)5F0d`;p&k<{`!Q<_xR!}muR>O^W3Fbl z*Wl6T1+GOPXJ#-rZj(@o^lz&*f&RT~wnZuKIm)o_Yah*ghZ?hA`Y z(YeoypR{>)S~h2V!Fo7AegjAs-tK%afPZ~NjvdZR0rHzcq6mLK4_aq0RJ-ahMxhBt zS?tzJ_6*g??k2DMD0#ni#rHlzXeDa-r-aN_&@;fbQT8iLzo%5SA&~qjB{*& zToh0+)>#?A4+t{r3PvEc%pz+PZf2#lvo=VzLy!vVvX=%3Z2NgMm$J@H0b(B#w>TiK zlymM1unR|G8=Z#(>|Vsq4yA2!eiUH2r0Wqm%6Tn7>=8mVJMRRD`9OFt`a)S{(8~bh zbP#V|G#-OqycQ>y_Zw=rXgmhJczLHIh$pAaPVk4JRH@aO8DM7z$$~BtlZ~{&mN=G6 z)HYjEy#ATA#(`hP(CgJXUJQ_Xc^Q_%JG-HdkBKtOOz6SR5nh_4Y*K}q$;1}$MFAGZ zQ@9b$c)Rn(0DCmBrH%dW8`PtcHUW7ap}iTsTyez2-tnVBk|ReZAt2Awwc#Y4&htT% zMTmh36@S=x3l&CqKG~AAZV44O#(6JD2|GPX9|8GPODa;>SSQ!&wrr9bnA?)GPm5}=_52ju3R z`vMFU*AWR@o#z5H7GR>SL_j`+4ZE;Nltw%61Zl9+8BIe#KHHLwrYShs(NRiR(mrrx z8UpgUmRvMV(U~2jS&k?^liPx>os_L%E9ly2)^=yVAmQ;y7-d$6b8LWKIuacW0O;BC zIY)N4u{^)PAs$E0Q_Bnabu4Lxm-0bZ?NdoxK^ z0fR|XG9ADR51LEN6pxts??S;(%88PEJWLQLpKyUbL0F|Y93@IW_yVdUjFPQ$4?}6c z)x%gPz!zkMIC~@YAXb2R7K48KHpH0y5CC$eK_2HXLYEqNk-msX`CR!J^orZ*#W@Cy z&3C|Se+iEsB>FpertUfr+?PKFcV`$E+@OHW?*gXp2B_J&tpzMdxjJCV`KQ+)*w!y2 zPEe(CM+hqiRRUbf$rRjvj*8$-Th(dZMxGeL?KlGGH!#v|+rl{)I--eFfi{8&`yYhI6V z1>J`51AJcKy&>l7YgtNoze)NO(R=$uqZvUo!}(O0Xlg|DiB8#{g!-9pYH6}Y2(OD7 z)iP?k!kY@_Ivk^@S2+b8Q8}E@5@R>5&P|=;Z|a-Ae0le7aDNy>r?weQv=Z)K2zcWs z;cfVBz%X_Peja?pxH|DaJFX_R6`*BG9XmvND-L7vz2(Xw%C%wmVefelH-yPAlaJ#r z5_j_~nX>N%s3#fftKP;J?;?q8d^tyZA|c~=V@zI%c6T&SOgrm5v_jayGQ)i+Ls*`6 zE*TL?)+j=F-!ODDk+lsUZ#cJj>D|)_7@P`$H5s${O14Pat!AR=+~vhquXuZiHs^5< zkqib8q-am$5zMfj6sWa{k@v5J=FXn~WE(Gc-yyGl1#GLGhs8W>CP1r<_g{p4$+nQM&lVd;FD#E+U{n+VT0vA>$6G4W#PP+~+ z{AP7e@GxV9_HpKF+>}k(H=Yf9_91Cyw(9gvW z>l4b)wGQiW<>&f_HK_bt)36Rz{)6bpn?OvS#j>^xq2y1`k z=kkNKukv%T!P;B-xwK&6T?^*Jg#@c#`MGvr?Wz1+AFy^+ey#ynIG4rvwDYaqm0wJI zo`C|KhP*WgkNDuT;D&C|SRcFrUe|=bT)e&spDUk?Rl8l#)iNrs`;zLQXVt5td4?R& z>z|O6!=IH-<*JjM+_ zO&0QR%I0*D%_&jYB+-VD9+gd&YDiV0vdQucsak#6Tx_iVt}lX0{8>a@*<=}YWs`+$ zPd5GSmq6n5V6P?&tS6f@|wHYJHjgKZGRwb(L9;D&SxBWE4x@j&3 zVN#BJAP*$J3X*5|t^K5Xrm>(sy;+%Ayu=4 zNtbleC7pChCtcD>mvqu4opebjUD8RHbkZfAbV(;&(n(k7#`mH~czYxZfJL@6+KK37BEP1xRKZNaQ3(fQ7# z*y&*``MZ9{5O$w1mRw&yD}-Gh#*=Y+6tgt2V-^>ahmOnZnMl!x^@hp^+rSW3zIc_HlVFqX2j9%`vi)gfUl zC2IZr5O!r4OF3J=YY4kOjHUFg-z|i#uZ#6VHqp+|#W3qZ7aN=ifU7G}G!5xyGUW}X ziBj6qYl7laX1&3;8-P;!5{1%`&L|V#;7^Hq4?xv34e6iu`v43+MAY8}MR7Ew%i8}< z)JCHIAt=hCA-&lCfT#c9HO+)h2MtlObc8 z-41}KYmbIZjEDSmpZwPa(?{qtzebX}`i#iUGA z6GDhUYV0u)L?AQv*a#w!7`rQi2;{{sMG%3s*xeCCAS?E`2qKUadwc{D$ca56f(WF< zo)|#{GGb4PAOZ=ov5*#GNgyINUcd<<0vWNb2qF*?drAZmNC~&iLs-kz$?~TMTTx;4(?4kw2Kom$!a)DvMi}Uy+6V*vBO76$e^et3^tXS*z`*!=k}~{V zJoMmfMmXlB-cg1y&_9zA2HsUKrhft>9MeB|5eE8)F2X?nz=d4_%dG@-?c!ATaKLCi zIFAud;~&1LpC&+us_q}esGlZ4htl|mGQx%XXE6d`bt*{5Jy3D&ISjVYDgqnWKMthq zj0-$FV>PtjDwa_)>j)a=!!pFqz&aT142oRJ2v^St!4g=;=JFW>SPIM7Tt8y~i)k6_6vjQ&g#hE` zcd!e=f>p-mVj2@*;VNTc{nTJS0>Ro=hGj|sYg`$7e>VW@AY)(mkuYsa&@76R_tU9&IeOM=@h5O{m%3o#0ujV5^^_q z9kt`d?W~;um-YZ_MVHm0%X-mez38%DbXhODtQTF@i!SR$m-V8{deLRQ=(1jPSueV* z7hTqiF6%{?^`gsq(Ph2pvR-sqFS@K3UDk^(>qVFKqAT^HeY1P)W9%E&I%41471mP8 zi->*mS{O?XtsfWCVRIcJy_53}e}L5&I@$b+JVw_6=Tz3|3~@&Jp`2Vs)|gBlbY_|U?3;*PMM;U+ zH{IcKDL)bWCSr9_sv`Ey!f;y3TExCt6~`sOZCCVndnZY!{-GcFq1{$VjDZGO-$!e$CEf$l#@HvNTgE z4Vyj3knv2}WN%|4aBVVn8$*UTWt07sC>=mG-Wf9LDVyveqLiM^4r9nbsBE&0L@7<1 zy~U8RQQ2e{5T$f&b`?X0OJ$RtL{vt~Vm~ot1XVT}xZ~Mm>?DQ^s>&vtK~$5ZVh=H7 zoE4i)S&hwtV)rm)=oPa}S&c1%V&5=iG#1NDS&glNV#hFKfEMFSS&aoju~!%}W{Z8M ztj0D$u}c^-jEjk;tj1-6Vt+7XWVfLd(P~^SaP|c37UOAy3$z+f7C8HWAtS%Ng75{_ zN`X`Qu@#J`eG1{ztW^T1+#518*ryU+v{nn85^u;%VcYQ1YE)MT!>$-L$rMj-&NSUr{H*yxJ zYd2D!>)MT!=DKzxWx1~1NJ*}1H&Tx4+KrUrx^^RFxUStu39f55Qhw{&jg;QHb|Yoi zwHrOlKagDeG++bEKM-B}^avu5UE7Hu0^zl*5kw%p_8AdGAink*LCD_USgi-T4*#}e z%lgN>qlVIY%mQT?WC8lgz^?QUf7eeFphIc=BjJG^r3Z(;!$AL7cNplO*bWz2)SW9p zr@TNFL?+om^biUD5$+(a9vt5e1O1cRVPIVg-9M!rj`=Sv^a`5Cw|wt#8C}!%6Oewyl;Xci3i+-Liuu4!2D5A1sX1qx-?U+CHOm?DhoSxC5! zpkY3&q}cUeL3e>&e>QNi>v5kP?fP>NYE)PM%J%kJge|e_p<{{7Iz)&V&lkIpbA1SM zmpC;)6|_2m4Eqr1hypp!PX&!kAnW`%pKu}P6C!H}=erQ792xsOH*le!pyom@@*#)0 zkc)lDAui++A99cj`6M8reL-wV5@LM{k8%nh1F3!*KHkh>Y-#N=<1L1|@EaGM2@GeG z)AprIA*7z;=K2{XI?D~LCt8*#*0_+%h_1SU4Gf&_1}>=dEFM>HOSd zM!wy`HI5EQXLWyU%Vvza(}d#A3J5xRkif09^su$6husJq54M8)H^Gaqh2T!;=|}|z zCh^@62vG*OO>pp$J)G9YS&;ZPXF*nKQ?6F*`HR1(1Kpg9I-jSLsNGBlo65I{o2Y$3 zT%&fYxXIdWaJk69RCJk)F4NIvI=W0pm+9zAI`E6@64MqTnxsY6B_ex?Bsj7z5wYS~jmWyhw;>+>*(_ErvMy2Ie*6~dja^dM zkE@maC_77l!kA*U4S6d2QFfLd5ftle2&2_Wma|;rk+n61@nSr}Mo_vn>uE?sh~)?y zL2b#fhK4kZn2oRzl+DPx8PZTEt5inV2&_k4 z8-cZ`Ya_54b!`OJqppp>iqy3cSd+Ro0;}TM2)uzt4GUP~Olvz}9O0iHypt46A?b0`Hv{=wDHUyB)D5GH`@qM-gu9sO}Sr9YwgYqdO3x*inQVJF1|CVn-2f>|oF0 zNe&_(yIWEHA{dG>(9mEw;H#b69|JG(MmQ+`?ifhWFdu3R{G=BH7JyN`9T~49XqXRv z@*Ag=?f?*4#+Tqg%lHYJ3sc3H5o)YLm2r0u?nKz`bLX177yw;3jB_`3bA0C1QkyTH_MzzZepK{%KqbC@FORkymk z^W-nKJ5Mgu%2hQ_2E6_zl9Sis*5&m(;W>fP{!L!b6<(hcVUz%e>+-Q)vl@MCt6M2+3Q@C>mwQw3Fe^L)l^$e60RO8{y;hFDjV8 z2f7xAt3a;o|B(&OSrxx?3+uy`obnMs*ke11P$|HjS{)~3i5_rJq8@)inoA% z8(zqjtGiP564liesVyT#$~)iKvs%g11-g?OyNxj~Z{EwvMa8eUhT|dHeDZ5IOhM#V z%eJZP?|>G&gb3Tg_iPvCj6rtJOg!wznF&6=X&BBzgzJ`MVY<)Qvs8AAwxz^c4wT#t z{&6kStI}^*vzBYld$+?Oz82_mi1PFs@Ml-@XSTd2Q}%1gcau3&vPsrvl?Q(qot z2bpDZdx>k${V)1Qz50qke+qdU!>tXxD(*khlo;YM4o}nN4qnf0tUiGri0do- z7sS=-%V)gN=`4;;Vm%Tx%!ksP)_XCq{9;s}L@w(H8s@`l#`uMA+kF?%e5Q<#2-@F+ zw-JYtVSM0wOUhLIJ;tjHOhqjI0=jt{A};faz?zOr1VO`mC?Ym^F|f*GRG%Ud1P$|H znIMA4$nB>|Mz(C4S^N9+Citd;5Rz4dybeOLASAmTLSPRmOBqW?E+GUB^Pvd2!i#~W zB%}I&NC-j0d{`|c1Q$KqKVa!O5R$WhNN(0f36JVe@ZcQDegqNI z_F~!IyE*>7MXCo~?KQ-CY>4NPaved#d{|gKf<9ya6j03U7G(4Vc+q2i21o1#>qYqR zQC5M-+E3$_Zp7OJ4)y&wI?;OzeDa+MHRtc9?Rb_y=ll0A1jgmIbN;&xnzn#rnm6Z1 zUjXTgmo}C=K4#_0)dc)|Bc!a5As0o6%4EAL!ibUrZK-YPN zUEq^L&@dm0oa?<97cz!uKm-l*VU5&)#`qc#6re5$88<*iDnner|2SpnvtEhVs&bVf zf`<7}G=0vCfvqc786s$yk8PBpF}^YcT_~U_suz)_kJF28@Jhtim`f8u!+a>3ZuDYc zW6afy2pZ;N8@*_ZuNOfr3TTR|NTeyMBKbN}&lR4I^no^IqNf*K-Z14M&p$z*vY*nC zzUJ#lKgW!Zy^xpaBx=8)gT0Vnikqmt43`=dW6@ASjy1%&Od$1$Ub zjwp)6_JyL`L5HSp zcb2;jNV*MSgXnhHd3XdADux)s7PV8cz}=}Jt%k5k?Nm&2cPdDwA#77S6-9Tag7g`} zM%k(G*1oVcrq&sMzNT~Y2;Gq+)!la>7whgjkf^%*4y3B?z5~f}_Z{4KC=B`D9LU<< zxfB0l(O{a@gWFufz=yq?F~dOriqQaA-3%(!y6Hbq?%pHDQ(O$-Uw*2z;G4W|hplL% z`U+C7BWRcpYc#ds>J|X8%JnNad1C;IJU;nlzlu;}^)Z;h>P6sRBW#Iw@hD(i%zh0J z`yn^*8wMV91Hbj-J^)Cy8|x&zWedtP?_QN9D>IR{|BGp;ftviB*~5}pVsKF8%J}Pu z08*%N&t9Qc#toQ6_|66(@{+sKwGYrf|3}r|uk!oy?~oRK`S)}ZwLj27Uw#8F`zWz= ziKa_DUBQC^+^2*|7wNlig!>RPi1gh^?_{=-zMJU^*;Xtp(s!*emLx>_?zX*Ct*M>@ z`u36jiJ6c6bBWtONgH0j!&CLo1#bT&Re1M~aOh7wC8&;}k{-NxNBFl1FS`Acl;Ev9 z!ruqn>xZjQ?s$~j-MD7n86*0k6sp#sz4KyfY>-kPM=rs6v7m7Ki3s97gj7?w{gB`8 zNN5M4T>k07wMRj}*iN_d??IB7dT_;)gsX3&Zn9RqBW$mIx9v-}_%@ELkZ<(*(x=&% z{)oiu2pZ=o`EOc?2R$A_`ZF4FHV2xD1Dq~C4Zv%Gss_MJSf40>Vkd?gQF2%HFO{2BO zLgRTXuJ|EkB^UJ~hP-wtvC0M6&moNG=@blK1;V!%E<<%>A~SI@*OL_Z zttj3qBBNaOBX}EAHu6PhD<1=iY@jz@{W9hfcgE2HvA@K*h4W90q1z=Cw{KH3P8=}I zI9>QKhE2bnz@u-J7sS+L0N{22T-BH}L(-2Ai>f*3LT%++Y7QEYFM{CUmeCs=vVjH{ z*Q@uTyc$MWc+03s?OWo#1U#)hOmB><3=M5HD2;J2IEHoorQjI>cAY*-q+1VE(V|=&;<8K@eMtnLLba~y{H|PwJ7W*rpO3p}~gK{XB zDyLGjT|r*_$^$;B<-_^_GrEp9x=vUsACy>h)cB{)n03KYoqWHhi+VT zui-NUEhQgO>R!^9)>Q@ZRr;dTR4;Ycz6wJ4iDLBs80R#hqr9^!wQE~Kx@^(`rreK& zpk`@}9(~dfGwNC_`C(fefx`5MdAObSCv+d}0I8p_=K`=NGk`rbd<=>l=g>TMG46(w zuh?i1 z?r0Ah&V>upCJnKG)FM?*DeWc~!3e6r?|6{n;d@EPHMOt9(TDF-0gs%sw;^X2y_Bg> z4=&-~9zD!Ey+{=yqN@vu`VbNJdE~c(EY9d-CHHdH`J!L8Aq_Ei7G81`8R9)%8nicP zLpii2_+M!lv#>$@lrJz_I}md4pOP=PAKi<7v_eVb)IHVhjbNg)33T3?#J9bqvq>bm zYV=lo2r|=69KO*;>2;yj1dMp9Bk84_)YiQ}YgY`P2Z{VrTpQDSHliX4{J7HJf#2Wo z>p^u-#_vA-prAy4dEmLoJOKRzx5`|`F-o@}+jOoFhqrviEBK%wN1I9}puinoX0Y42 z9ab-8g*($_S1Ihr$%u}C5hh7yp7@s>}dXtikud9#IL*{Ttd5Q<-PUcQ?OjC z#;)O2^op3eLeQ&M*JHO|jc{XB5?pi*rmEXq65AP2W=22u%} z^pFn8DiYu84pLD!9zK%GEMyow4g=jh6zn!!r<(&u43&?HYp;Va=P*t&VQR6EpfLWp z=yB7Y304=jHh{S@f~&5H>CoUO4pAFIZR~*9ydnFV`SMk#kwUeAil# zysjfC&1i`}d>i!!)<3CRSHkTn^cFH|CMjj7?jF?WBGd@tGh@2PoTM-(o?O(d8_7i( z)P(bQ5;dWlNG@)UCHi#sN#@&kw>zC*h`;BUItVengR(53*Ch z$46yyE9Lq}h4T>{lyqr9d?_~=oFH!;ji{899DX29)C}wMAZF!azf3SyRzV;?;4NoO z4n+ojN&GPNYiay4_+|0qP&Eoa6F&|^Mf^JPE8&L$Pb=fskKY{pcE|5f{7%5HirLR#gblB_)rSUN zcQ?4;gAeq<_YmCW#y-dg-x~%W?1QOT;5$;I3)Za=Gk#IZ^`T6bf0UHYS&Q~fY;=EO zOmjoIHHOc3#!6}Q%;(rMWt7sZIrJ1>ZWzZXNvFD%iuX?mh}V8hr(k^r#o&Uud+AuW zvCJPLHj&h^^-^kC>fyX(x;yj+89zRG5UXk_6d_i+~_kk~Ris@ZOCy5Mn$=FKL80s8o^D`0AS*pJ~&|P*IQ)zG*0Q<(8-xP)W$Q z3`)qyp`2h~Ml-Sf%s576dSE+pSRQ;Eb#XK3n)7Q3uy6(HSc3T)|5d2V4cQ+-`uaZW zrfTkw8;QjjWQB;%gl}sY$IT zeqRrXU&W|`VVLrZs;4Mf0ULEn3%?C_C59cYNL)qt2zO!DJ1J578EV~&<0&|ni;h@( zfkE&S38lo_97dgdKA4sr#Du6iJ2Yg^gf7eB zyKjFBVBN5upi`_dZzH#*BkLT5($($j)_4?bb$~CeIrS+x8RI#m9el6`xYm$? zB)|>@J+aCOxR>~0%=!~iit{PZ zBp=8~%IE30PL$yKjr_$bd&k^wxzFD|KZeL|EGdo1`35g%zGs1tsw2m3@@@hhg&F_v z^M26JyX58F3A$?-e-888E~sVbgJe=ye2Y)oHEF0OHJs;|;V4j(P3Db4K8dfY8fNl_ zT*_(&&`cH=aoNf=uoC+EmZnDMmx!OX+R=bpaFO*a5`k}&p@S$Y%DLT%2ucNo~cOpV&75wj z78-=V&U-Af_RpU&T4bHK{#xw>Up)+eo)RDiSmqGIKNHBOEVj5N}yf{Mt6j}wJ{~2*u?U(3Pa*^~; z!PY9S@5`(sXqXRvSGwE?0fbZR-%kdje7q&0ULj3e9f0$CUiAuQKCz`aZ#b*LP1A6N zR+jTQP~qFh*3)oh05jvgt!O~%o0@i>)_S$pyb?jKk+5w(QLk=(KX>a^X~Bj#XjIj+ zk4E0i^kehz`*Zy~j`8z|Yv+KDMU;`X;2QJ{jye`TG|iryDCCXu;aJu+&~pnZk!iaf zxZ)za0}k$xmpzW6p0<8~Jh|>rDS-v@wq$v<^8i?sa$cZBb83(g+BDGlu|dMm7SFs* zEF8Y)WJ8%=T!$YqS+$7_Gg!Blw@h)Q*B@tcseET4KW5;*!cMxLflV12)*1KgPM;q$C#ZPR_yW#j3h}l#NqS>M(y^b z8^qbNj0MxJY#)q7J!Mokxy|*rs7R4P1>%?DW8O(uuIc1$L9(azC~$jO3RYWcB+eAfUK zKXa_vbweK80yttcj@T@Y_Kb(8Xivb?o`{Dvi3l9#5k%WaL}OC5$vm_|zEob^Qj$+0 z)#XJb3vKe*gxCMIIG#t*fGyk3P60Ch>SIv#m&L|-%~D)fI`CoG>wes zql~`KV{#~MEx^cgCkMQX?yNj!i@3fi~J~alp5X+ z1Mgh18zqu!V+GR4Hyh5kecqX-neQ&-#|_{(J+_X`aW~{!O#E|RWR-9V5*L%;Q2^wZ zgy7u>uOBNe=FMh%2^lqh;B#Pq%Xn)kL#<}3oDVYd^VyA%JmAq(;4q-!0uyAmX)>+H zRS5PM%+@m)GF!sD+Y4#8uxR1$6gTarDUoChdC3+Fb4Qu29zeJa!j3~BvyW19@%XI; zGs5n7Py`Z$**y;I9%qg-yTR^XL*-7Qsz+^a-p!9TM=Q3!g8I5_AFbHFf^07s&csQc z$QI3FenKHXabP2vGr^pAL%z+#zirswwjH*&n+5wOGI~#O-J=5bZeE-OEhbHPV|+hcfm+E`q)G0fwf+50&93GZPvaI8+*E71n(_52D& zxIdLH*nRNHREv2rp)Cgum`-0SuE^~$fO!C!0=o^ec|IL)ihpw#l)QPr_qI!xnLSi zpiSk-52n$ts{O@A^!%eiLm^Yh7F;7MP((vBDO4SjHn;^uyPv_r{8hlWt0MI`jW+dt zD8SoYU0GFK+NKgOWXrp`>7mXueKO2HGwG*KwmVlyTPKBeZu(-jjHUK;Kx3dR=i^~8 zr*fG~P-UEDBwO_&-s1JVnPi`t=!>QLvQ1cCGWz08Sl}&Ukw@;`>V#ZE_vRX#>3orF zEMOQ8HA@C&JFS!*#7fB~i`G;Wu>~JV{VifAot7S#^(j&J(1Nc(*ViI;%=c7&p}P2* zoT75Bb2GCEimn@#_R$uz(RmYbl|_Woww$s}=AZIRHkJ82=fTO_%RGoGndkFyXDcFu zkuI{U zi7lsZo(+s?7lDSQb!ezl=c7aA$EAFCaI5T=ltI05%bc9sji8GboL5*P2FoNKEr2S9?jFz3pBhjsoLan(1&T#RF%ZuuxgxJBL;K2&CN939th*D z>5llVX(_}rANDlFZbzf-oDCC-`9lbee+;2XC1ug}+)K+Gq|G6%+pJ^Fa+jX0%@|#= z%r&~U8N)sntcU0>UkTx)49rCRFvUX#2rjjq5Ic@1DN@}ORRfzo3ek1^%Hfw0!MJwy zaVu0#^*6F!WogKh^T#qb@917uuy3^^s;&02g8i)k7WekDusr9km=`kT7Cjc9RK&vP zl@?Be;(P<%Ay3SFgGI{UH^)8^Up?o7^e=jLZ`^!lJb%h5PZhtm|0NxXgBEl>^j4~8 z)H^>I|Kf|6PCM?Ieap*k%W^--r(9Nek zyZqQQUVU)FXFqZGYd3AU>8Ua|DrxsOl&%x7MC{qjRTxc!3vdVSd?i;gOP`%inl z@$jsrcYgEy+R0zPsBhZ6{nOvR^Nqs2Upywe>Xs``o%zD#)85^*^@#gl*?Zs9f3aWZ ztnYtdy#L+t-48r>?apg{Xsw(5mzy_!@ZMgJJoLez?>Oh9zrHu`*So*@(SP0W?4!T$ z+f@7GS*KmH!{etenBKl`eCPX)cxv!&`xwXvUAzI5}UCrrO_{}=j>+`BQ`zQ@Cbm*!vp^zHX_ zzr5_r|NY_Q+Yfm4^)Kvu{};aV&wH0XGU+oD9=z(h*Sd9RE-zovJM_jizZ?6&s|RUoe*5X3S$~)}=l!?loO1uW>(4y>{lgEM z`H$E3e|PJWcOHHE_ixpnobk-OA7Ap~N6%b%$wNQe;l^`*^44RsHy?S+2QR(-YHr2i z51&1C-OC%6?)3D5%Vu7eT6^(lelUFWy_Z(syno-bj%bV@`0M7U_8pjY$zGS27wmTF zkaqOW%b!^E+xZt9e&{i~AN=__V<%1N**xwY?dHmYvBz4w?cYA@ZwI|JvvTH*yWDun zk#l-p938vznHQ1^-?~2Y(K|;p{o@w1dH=^YwO(`M)$J25Ib>|p5!3$st$pAA+tO3- z{rk^PTlLT9yUVYgxbqvYKiYZcn_1)JKRx)!lb z+T-!}zVPhV-(32G;mhVd_Jb=v`d0IUk3R6FyKDE~`oZk`M!){ST|avKp)U=+a?Wi} zFP(Mc>9zN7{_;@|Tvgg@&2=4xnV-5h`|kQP`tCpfyVFm<_;XiWdd$?z_Feq`-KoRo zKlp=#_I!QA0e|`6z+cf*KP1jGH{p=Clzj@$zvaQt<(&p&eiysLBfesuj;oA3XM(RljZ zzbenXS`IZF2h14_Wcg=x9m7>_3op`s<&Xk z=!TZASvdD?U`;<34+Yi!-6`%kf)(=LAf3)7tqcdSlQ>vmVJovXW}gqIui5!DKnf0P z0vqy(^>sfMHb1h?kUw-`vH#c1FL7Bv$gBN|{&?+Gk|yKuEhtxw!-VnD7^A#UA7Vfs zVr)!2bT+K8xv_;YdIq+=pm@eBO&FskhGD%4lziC8OJvv=f>xCeFLg00cZUKX_$eV6 z2pn4=fp$saOU76+qbtj^I1xracO}Rd?wbgMxcw*Tu(l`5rZD#6y{luD=9oPLTmB%BC^9QZ=Ok}5sKs?6B zLbmYiKhCJT!i-`7jC$W^RBxuh|6aw&TgCf!hCIK9meKhx17dHl zeYdo#_N`z`Mw+!7bZ^G&O5I4u$%yeY|AWGCeOkLLtlQR4+SR5x6`Mt1sl3x$w zo*3J|6Y*4^VN&dbGR7pV#z<5n_WVt%Z|&se$4>{=_ zJ?VdvM>JK=%|8{x-sbZ+MUjmzG9805hSE30(3ho5sa}F7ig^@=bxo+6vQv^tO7Dux z84lr}KnpYWj+WpvNIq#6Cjm^|HDg>fp3epquWK1%7WlO`p34o&OK8-QrMyY}loI#c zh%J?t9KTdWpCo|zB1z?9n`a&yEv^n(VOH0pMwM4;UKTE<)V$cGjxzGE+MX>OrNb{M z2JZLD=ilNy-llX~93pXLPIxwRPBihhl~6QxMM%WKU#7-J8Cy}lG#6hyqdyXC1{+ng zQ{vH$RKpjf1E2wzvOK>Q;>nI~wzBHE zGxgHO*3w1`8>L2X@CwBrSR1^%L?^-T_Q`xfsLU7QfvgIG6Nq>|uUpvAGTNq&QJyh4 z>>-fOsra@nQDedVA_!3NjwvDt>xP()twVM@HPQ(|Lh^e1Hd0WfOr6S*8_+LfWLYG*Hf^t?56I2>OkjNCSwcp$87x< zI5_xe;p1x9(9g&Ea2AB9N~(~Lzk(t(4CgFb6&&nMs0hy>LTeUU0f{MCFw$|9Q|e#o zR<1o8#$6?^0*bbjy*FUlB&G_L(7Kw_FXnInE7r%P$MI6uDP=E22FXf?p5!MQ;~j@DEzFYGM(&#x zVHCJe`S=({8TNjtXU~?Vtdp3ERV{bt66Ye+`a!FS^;2cMYLYGT1=M+Bz(lg*(7DR}Zrj?f1JAz%!4RLJH-waea z;oJ!)CQI0uM=H(ea-o*N0p3;>R=oGu_&8Q92mh+L3(NX)60JJ-v~*s6%PRK zc>wVM@V*CdJq2qvyN$djvAf@I{*G8^xqrYJ*>8wa-C{JNLnv94DyVO|&Mh0GuSL0` zepJBqC3uTc!G(b}Ql!!i-j51O2P3TLb}$QDxd!A$T(5&kK)0p<73pA1IHH4XKRpia zstke-MsA=ktQ>j{tK@gEx6mGnPN6&0!9uaO>0sWy#cNQt>+#F|Kg7KUU{qE1KmO*u znKwOTk}#73nE)n?nS?Z?cR>_vs6awZ=tN*}f{KJ-Y}io{yP{%m*n3-DyY8xpUBItp zUDsXLb=|eBE5Fa@-1lZC1>EoMe*gc#oOjQy=bn4+x&2-+s{mhB*EG~NlqKwj;3t(1 zcv6W}1}zY&un-kSsYYTWrKn_{?`-&2b&|w(u9K>eP$y+|(5O68WuO8hAaW{QFj8C7 zTt@@(3tZoOZM9`IPg{7Bs;>|?5`wX!l2wY69>cJMo4RA8@kO(j>{o@Vw-lgdC2V3? z*_KUXW9V$euF%v3xsoCi?h%ePojr>#1M(OoJ+kb=fm+8QUnY%RqAhkuer zT8IG_du$6az~Udag&1J*lWideSQvJsVt|EiTZjP`4%|94OGVnDA~E29Qjy3*5JJizx}>L5MUn(M zwNx3tJ69ytPSt9czLajKKKh%gGFE-bNK)zxV^j5IreY}P#S^LeB24SlhKU_U)-hSy zRc#mvRl4XusTG~uu)=j%4Wk^k%NKn~UG~DuxGP;RD~#yX<$4ZY{y}qAfinR>MJ`q& zAB)kJtjj_)l?5%(-oAF4#X_y_qSE7e#OHK0cgLb(s0j2!Ai0&(ziXr(t%wd#Et{s7 z+zfjOiKIp#ScTK{?<&afAH-I)RA5cLS518BQZ3jFDdm^|?KkiF47ET%VXuxlhm5KH z=-R8*A!O{?k>y3)q9x0VY1%5?(Bq>JER?x!_^#^5tw6j*%qv+{F-AVT6yFz&7h;bO zSb^45w$zC>An}1+qu_E9Tq<|&%Fi)=4o6ap@UnqZ*bc3892AZ&8pkj3x)ZMpxV>VqUp^jJ#?~K}+%!1e7a;aYm{l0WF1=yypO~?v`x~*_saSc4LbsQHs)+ zqj{Fa#v)jG@*>iZe25XEujrE=6-e%h0lfpqOGP%&v1Hnz94(!45Lq0D7-HD#;_CsO zIi6JHIK;A~{gTVH=9xAxNe?UwsPHr%-*0)TfvFgw-cU|G6jXND<|hbuo$PmZ6+ma19#j zqCE3}MfdnLwkZ9(Q6t2wClQ+)v2#k3jm%DQ9Udu-eiBn9#Zce3Vr3Or&B}36I;; zf>R}^5TAkny7aPCU2v*P;y7TTo-9G!&1Li3u-!q3iBq}G4`#o6+APS zoDVNb7h?52zx>G#9`fPgq)ZQb^87R!E-ygVBz^SZ*^bCQhIpMJd$`<*Bgv0B7{cfR z>%y51dg5HTM6k|=y~TdFa!Sl5%bqeTixjTQRl+HkW!iS z)pa>9bsX%C#3)1-i1!3HN5ce#D74_Tfqz#KEXTmI@?&hs(KGjdVfTuCe%-D0-CyZB z?u#FeJVJ&L?~GKuGgZ9RoOVpbJ1Zkz$h)<#tlN0)%Lxu=caP1IfY?g5&PjXDvMmB7 zkI4>4+an)Vo2(({3c&FAr#_S9Rau-DW_ffy>wF6^0?_FU5z^+20nu(xu$RANnDk z{i%H)_x4U+3fW5XT_kCJ+H*l|bbj(?+NOHJ?bs~GxmzdC{i1V%@-J=e1v{CIrNJ!G z+HrEupL`4f?Snv=_~4`~4o5gkIqgP+8`Ex5w|JrHv1j%F?wreP)@or zDCV_kZE$_qv9X(23>71W$fc2nY&~54ki>gCXr7;@*{ClKw2@|y(2O%%nKUyYXM>8! zCmxIjzv-^V_9P*{YKGygK2%X+5u{uUd*+tj3`H@fBQi6>xnH_^t>DOrZ{tWObZW_+mI_V^m9~WD^b_yA~FuZ}+yZCUj0K;)HX6u$KBX00J-8Ge%S(H>2!HGI} z^_lLv{Y}du>~uGXZM_dC*D^gjm1oSDFgCM3qlByiH|vFUGA`h`ieo?{|G0$qCW{_} zN}R~DTvk?mF2Boc2zbIZy;Z`Jgr~u9dZhSp9RUu*a&DGX z;mA>HVphq!yFs$AVhvYW`Gf9a-3Wmu={L)=hHy}Pm(NkzRm&h!G}i4XlEfOskPg>OzWvB>w%fp(^A$4 zWLi&8Sr5vz#-P}muRG2auHErEcpt{ji0+O`3A6={$FKB|AZXE{e6+Gv;yp2X! zg_VKp#ZKN6DSr@uI`?c6M_t9H0vpXL(&o84E>`g&YUQm%puHRozd-7{QSH{wv(oCg zpC-L`<_p#@>uh+fC$)d(nDmL$4(Y|?nPl4AYSIi4>TOb8xJV@12v@z@F{A8i$loQ^ z?h`ATvc7tBiudw@XP3J#__lfF0XNS7;`)mhY^go#gRC1K{_v#YFW&m-toOEG8b9#ng+p5C_O{lYIl-MM_q13SKb;fyy= zn|9f<++W>t?1D8v%=_mbUs`z15wje5?=3Uu&mY<2$G-(V=f7C8V)&fwrH6hxw(+gx zaf`RU@u@Ll;tuEJf1VNCe(VFj8-KjzfdiIZcJH{iUwZ6=F+V(h$0y6)tv!C$?g_62 z-~O;+>^PJ_H zd+&RJ=lA=-HwNUzx5^e>VZFKJvQ9py(Is#tp9l|*nD#3$mO0(mo3=nm^J@*-%dI9 z*m+IMdc9k{@QlN?dEfl$VslyRjgF$HzxA9t{n;LWd;Yz<7asY=LpgtV_{nqEp7qF2 zyL<1PcSz;?J^#A)&GQx>y5k@9P4^!5+bItWTctgI{m0dh?HGIG?n&=l{O-u*&%SZP zKfZnY&E_wb9{AIHD+V5P*5W%~f4K4emP+UN&w3kma}V|1_R`wm&JoACj=XKG-ak9r z|K$3Tz)PhMESY}a8Hp0_jzy1L^J&v>vwqk$=dzdH+rRH+uit(DE$_S#8F^pBDZ%>( z44?JHLw7EF^j9UPJ^ZH!?|bTsz{d|7S8Ts$)zFD={o$??w_n|}>;va%;SXDK{PRCK zefWaSqneioZ<*1&#{XK@r&sUsUete^=DTN$yKVeMJ-*(4z30p&-#ChYe#Trnd-}ZZ zURk`b{kTEP3O+ZFU2#Iuj-Nk@zj^kIHScG?I%((P#O_Ca_~Fk_ZaDDChazunxV!Q9 z*T4Ptx{Kbp?%8MF9dgt+yN~$G;>X@tJpJ*TcA5{2o;>K@gWrz_-#xU*ch}!18G{=H1UMxU%e<`G36X z`sU+(7cJLsHN97j9+dUv8H?S?-07O@)JacWoVVuTkGI9|X&qAZVBpFP+cyQDeCxA^ z{`}$EKD$5g@7Vt4`f(rc_{;bA?Od|rwD+UG2|szt%(6%R{y!()oj7sgL;1g(;W=w% zbB{eQ4>uRh@;gF%wk*70>9%>_zq#kwrU|bt3$OmzckNf(gYO)3n)C2y?lXoql`X#c zyKv*{hfQ31$Ok8`7&WQ+jcp&!c>BFY{@r7~9{%p&qqjYN>vLNk+ja75_fGs`&jZ!H zzIoz_bDnwhJNl;U@88cg==Dc0GT-^l{?m6I^VH(^`VCmK=)Q+1H9e~rEt$PJ zo+uyur2qcwHUxfMwA(e~{6FiJD@v&Pt$jC`k+SqF6>3Vq@?>tbvN*Px+6;&@g{XZu zXIOd!`xK8tI9wJqgP)$wZFBe)B~87zU&!u5sQo3gA`3O05h2taQfM?uhSf1~Yaew}Z$P3IT)E;3arHTGT5F_*tzqUpA5n;p}W9fPb=2@zCHq&CWIg*f-KlVDO!2oa=@i4I7rKZV1iF20bMrVcT6g zLbxD6vRXKIyE;qG`!|?m#5zr0evVPm1C52)H3~K578?C|uEGyjK}y)eu!G%XRODLz z#J*$Dl0Dzyx+)bK9lj z*;qag0wPjaYPmLUmm=j&1LV2tBk-vBEs!Scm631MC+pN|>|F)PvBv(X6e^-t0L*hR zVANL^#GMW>8FP&~J%ZPeMyUjf=UYkK3s$64w8T|eVK9R<<`&O;qfyyoEThX^deX-f zLBVZC@-2^YZsjf#>xx$T;se153Rs;hn&*q-?D#Xv2}pq+yEKIa^y1jf#EhsP)P1GL zZUYvrtgf<5K3oT&?EC}rEK?rW?UlbeEL}Z|5I8@8^&k;9_R}eL(offAe1J73^wVjH z)ov{Lux4QY5hcAc%Ob~gM+42gWPw$v=Zb+Ych41r3za9xnRt#?%65RbGZJ@%LGC;~ zwhf6R4k`7XE7Wd*Ncjv^>cuE@BixKqXPsNYVqdPRpDOoayV$|!T=c&##dj5GjSkOO zL9oSTMhqJbeZDC6fiRMy1<}!S#mXPWRa&%)`WL{T*aad{EX0dt&jryQ$})y|J0I?b z5bJ^k(Ua$vJnqI}(p)DVX!FL<7sjAP9J3`Nj_+dV3gdASxQARGx7mU&FeXkp#<&tR zVhu0U!x0+`k3M|I;p@luKzsxEqGRj};)|Xz&Vj=Km5s571MuO4dxla6Cx(eF>+M@;Y+|i!%8a>hMd5zwve_mtASp?vU zENEO2yN9v>0ia^!4l&lf2uqiTD;ps(k0$z89sm zlNC2L?24W%=9Yh~i^^Tm2aM8ihHKB?M$l0>X>2&r5m>Ot+f*e_1dG|gtq7e zsV9u5J3-`r=jP1E1?Lge9oM_jkx{-DWs?s>_Vq=Z9NvMt5F+&|ll}1$lKPDc zY39qZR+ELmX5web`TgZ)$y7{8sAOlTWOKooAUyF97;beL4{@y>ty0GwBqjHvDn=sV za9HYCt{eB!VwKJZ3mo)nnZ=}Lv-)^&wZWWJ!jJRXj z-WM(I)3K)%%lvc|ui+ZM9=3V$u`c%_Z$=7OMhlgcprWXKZ8%luG2NI$^A}&`F1ZjM zYQK(ql}*$OD-B+2|7?5e4V!%0d~Mq>7^AEG+H83ljBDo|f6TOfQwp?uu=#OU09Ei{Qaw(+5@NC42 zM@^pTy#UK=j?&`@BlV~7Ba0f)Dz)!JSC??gE7ujlbpwatw0y|9CFI0`#Ldy{klDcf zm}pdRp^mS1f4FWgY2V|}=HleN(=uVl6;6q}8*K0Mc{0+vW+2+5=1x82Iv?`sXv5J_ zD=lxd2VU)3l8VC51bs}eqfzTZ-i3wpLcYc&xc@m4 z@-m$8oSmct?W=1Qt81|vLkR2PGpC&gQ=#1#rBaF4F#opfPf(J}LAG?p#gM8OZ7sBiyL`ELB8J;I0DMd8l{C86S&CKg z%z0vdt$AXGC7Sv&4zVbd7Jz#bJTks(CI6kSaLXbn7+jk4J=zsN7RT2kh3##}BM!Zl z5WSR&v96-pk?sUm_pzU{bIahuBBa$acrqIX6AO}T7}`!q#f3ghg%wY*OFS7Zj5jkL zyMbvtF%=KSUKOJiJ-C9SGeO=QuT2mRLuNEpz8s&TXf8waz@!jU*|BaKr< zqMr9lM?;1p8uF#vX#6?;jA&T0LW_EwkI|TkrAQ^$vnwyn)ih5-SoF4e8U(-oj2|{+ zrFci4a^9Zpl9|EN_w|zH=!T%n9gOBhE29IYFA{4;QkD67$=}&UiRKnWvwACsW8r|N z7j=M4Ex*l(?LvJ+-O1?WmMY$(b1O1#h|$F%#4Cc3U;7HeF0>Uyydnru zsrX{}yDhveXJheF)f7t%l#R%I2OCCYP2FcjG4|m-Ti1hiZQa#pRY%I=^V|vSYc%of z0Y5=cr0yVZG{3gNoxqMH=tv#S2YZig>kzwT=|ZcgEZfqSrjCsT;`3x!#`E3Y=18Il zC0XW9^v1`XI2o|^!oAln?i15dvs%wn#gA0A4VNi1*R@f9v~_!{LtznpcO=mRWV@sJ z>Z`9M*|BAaDuF79sI%+%ieh})xj zxH(;9DTL{#5JqOnPwJ%fcWjlg(~}EAMrBYBtC_IVnI75?`QC(0An;}n;&!t&QlqR^ zx+hj3%d2jL9>fy7*x+tz`EFQR5$F(OnQf2pol7f2d1ELU%JZR_`r73KhhX;)!zccpKD&n*q&0AD=2A`SjH_Eu+eET}#{w=p0K(_{37RcC%+lVkHs z#aPf#`?A}p!&Hp&W~cNshbNdN3V1jQ5l5A{DT#Z^*R!v25;LI|tc}DQV1bc%6EKF$ za1}od?IGmhROA7(ahQ&)c4CRlpS*zKu<45P&@M1WrlXX|WGAnKWAXv|P$NJq?`C}= zrnjuJ_ha5nM(gzres?#rX2iT8q0B7;iYX;#))P)7AbfTXgStl~R?jhvSO~shFvWl^ zxK2C=PR|$;N+aEN8X|xk8XD9RXJgUZrIj>iK1^N^(Ggy9K1ewl(ukL@>(ncgfN~40 zItX}z<$Jr;<})fDtW%+n(v2lCljQL*oHBA&2U9gmV{T<%GG7@X!ZKD`f-mMgxUb6M z*USj=Euzn(?N@msK#CWn(0rgcJ(bkt9ajHJ=VaKoK2nDSZ(KA$0Feg=w$QA6F%&2RMK3XrB5IGc)+;GFCE zED-!rDOII-kCAsYfLY$rv~eTaHM-(_8)MU33ByJKYn_qL>ey&RP){3;@W#e1$~j{6 z7Uy2dxk#J~Q_lHVArbeePkD%X#YZuGP)JByvrxvmAn943iw#wFRx;KHJ4M73OTCjz zs{ECGzV)#}WQqfJE2>z+b{w`LKfHw;maQ)sb{B}EjfL?6v7C=W>m}`g8e>DzI$dTs z)(alEqf_ajYJ4$H4mo}C{S0#>?u^QEaqpcAh#u<+zfIW72Ym~ZT-1UsDYb9A%5jHq z>OY9cXR4iv*gFmTb)W&8AZ;4@W+a=Y#odL1ce|&+S6n{MD29+EC?v;GNGx7p#fAIH zaLyfldk3auqm9wVa7z+iwwmRcV#q(q;@alDRGP#wq_$pIP1HT{dtNfLa zPP4vu7q6HfHpQ{_?X+J^-I?`KZx_$K;Wr- z`)F~*wzyPTeUT;;7^ev8&hD-;eu%S@= zq4fLNewkkD7JzjWCUf(~0`Vd&G-}^d~+IQ^14$xq*tc?${W_gx(}`=uM0V;w^EZxEl&*a$*`=O0l+74Ry`@xUsm) z>E%cRreB3PPi!oL@b+xx6w|JZA>_)RiHUCsUZz5Nx`d2l1i(by5=1hox3aWG9|Dn8 zZX(R$uHM{ZABuk}PTuy17u_O?P0Egs$)R*fEbhurn-^su92z?56dMd;RlDHQ9z~|f zHtG>eN6&@6XpTQ#tQ^yY z?%upHTmv@O``j2iy3Oic(JZrI270s-@(_fCS)|c2i#S?l3VA))$}d;J<0Tl|(zE0y zbvCsjNu zvck@hnXw__C&TAKN`6Eus7({B&xb=^RDBj5AtDyOT2%`SGAMDf-=7BFzLLQ)qr0+? zjbJuaU*bv1qR31-ZevNO$a!%JBlkE98n#~rAXN?xYN}++ZqhMJyi~fyW=U^+tHL0a z#cJA>vtCphW*DRbqF$#;&fQIH?!wv}D+V{~rV6dAynMWlt(1;6m5tHBJcSg_CyLIb zLW>10w9#l_{>H{7sy**-^H(%Xouao~bfFImmxUM*M&@G?w7BZ8re3eYu%E^qcRRV~gow=x+^UDL(bq`K+4R7+!{=s86<`;H0F9pQi{TczOMgws!`t~hw4 zERe`&oVWh9bmTFmxdt1g43(%;CCc&E)rjkCksanst)GVdnATB*s%(-TET$Hj9`_bR z&y0FDM|*hG8l7L(QT0|vQ2Svx7)K3Yro0=K?#10KjKGUE)kwo;)i8@Wb43A@-Gz>Q+R18JqQXjy2ZU8H` zI0UzOO9(GPVCz8*c8SmU4A)$iHMzA3F_*4`P9c=Kza-(8@nG?+>Av{ zUw$Y!Bb2p886x#Pw}kv5OJYJcgZuKts2xV_!@_C^ESdbgQIx#YkJtNdZGLVgE zLwU?WkIkx;hcVAG$~gsGYK`>7gE-ZPdNzQmxw%{ZoqU8c^6{@{z!Mqy2ru6bZ{`!o z)Ik`uypgIRI_^k6R1_<9HtR98o;m}Vk49F6W|NX`HyWf)^=&5o?>p z#1cVs$SQ$GkD^)WD}fwqz5;)|tQR15q7CS6DB*Q=qc_92X4n$Sc$R81QRhknW>pw( zJxDF73ZS}JNeuYVVxK6#RB^Tfv$bav(b9R}pa-B{;mXz65ztN#*j@>UdM zs#Gj96t1VBAz##Md<^pqFQIO{sP03&w-L?h;u`fg^p+S>SualQRWP-`K_1Sf-b!gz z862>*Fka1{iOp#B`7=e0#ZmpKUcKQhmI@TD`Uj=ys86A?!kEj#8&N|rkEP=32TPcS<*8>SncD zMv0dl2a?);6?T28x2i@QkL-FX9px%P*m_hxLR3|`p3N0s+jwTg4WjF97wQ5}rn9|E z$Bs0l8XP%d1{G{u*WTa>S6`@NvF$RV@z~^(ugX0?GkYFIMZSARE~=35%NHMS5rv&I zoAIW4dAd)4)f{N8Zqg$-5h9__&^V70MasmoO%{5dq{m zB7b}uj#saQ4#6b@>F0*@*dV0EnG#bSY^{bXjt=9!iYho*NcxeGObbIE3PG%^;J@-Z zoFaB)J~4zVX&8kbD`yJ#z>hMjV6sn3$85&@ggRf$y=#*}H~$pf*ihGUBIZ!qm@w)hAp3%p@U_060FKHZH&YkSYZ>nI*uDV3cO;!fcJeg;ETD-O#TGoSk3CnA472^ zhbOFsEivrmHY4ivwB-9Gb$S|IL+g}tn5U=F4rH^B9ngkPRQbb`n>ftc^O!!c3|9R;%;c1%cEt>fK zMViFZ{{>B89qWwrU8V9wr1Fr*tVF_NF^DXvJ^UNM)0VX;5Qyju$ca2D5{Q?9A&q2~ zTOA7@gc4Q9!ULvz6)`^h?Sro-vh5AUHcaN(Y)i{Qj#f7z&9kXU`vRu9?ibTU`Wa~w zOry??Ix-Cwupfg@d}KVJ|HQH|B`}^s$e10KS-84i%n{4hQGjaRCPosIdG9N?pRAnAR z^H^nORg3XS8~7hW`=QEy6wRZR87G6x*wM;NWfz;G%p@yTqs)iXe1tNyIg1Te<`FcH zROW#+AE3;K(tMaQPojCUG9OIyA<9fX#OjoJJk1l7`5>AnD)TU!hXbhFIfgz9cB-Nt z%29Gg>EbcKU|kTsCKRy_n_GlgS$Xh^OfpvX6@*Ge_f%;k*@LJfT zh!(-NAXw$EK&L#9NHIBtjA`-VyIt?DP5i$7_t*t z$O(u($NpS-iA=p56&%8h<^+`!j`<`?!C#Cc_>ty+=o#<;`x5dU6T*uAENtLbc6{jz z^AoC(NGr0VLatTB(7$#n1LhQXy(1%W^I|KrB8!i=h+Sd`Bgt?dpLU-JW8z={P|2od z*x~3sgCW7pXQYrhaf>LoK&Bg*m8xv0xa$3+L5`!&QtvV1mNCbv*V$&5KK>B(u9B{O zz&kC?B6)G=MeYBV6}8*d;&2;$Y^jC$9X7MV2lGhhNVGiWmq%Oh$@J;^jtgFBYZIF z7|iEyh60+gyTL7WDPtGwmK_MT26t+XhEME854Mh>-|nnC9p>t0T7@IfE2dW2Smz0Z(In2*(_x4_K&Qej-ueSTx- z?lrqh{!g>}GBUE4><$~2a_X90br)Yis~VopYgMzISC{q?a(`*}dBu+K*x7r{?i|VP z(4W97PXa3`zQ~xbX$~jOLQw@>L$3g)XNUp^y;5bp8LzSW~yE>@xk=JRxcj!grG90)>#*n5@OtJj)B-mYR_Hau0>oy9)Gsk0pT%Eul`{UGO@WDmy2FpJW_mw#Np zMjNZ4KcLmXtm;MDem(4`!(P=9m-Y!Fy9{!Z*I6H&1Lmak0kkR)6hMdiT6V)B;7NRf zPcSdniF&6Fk`q=oOB1=UFH_!? zn8g3FwkR`{*EvWR>sI5GXZ2|3u?St!(T9n(DoI^E^C>>EI>h0!==Kgfk`p9} z5=5e88d9uv)|4Ixz%M@4N$!xmg+FA3GO?WJ*yxY7{s!k78b$X~4qsKn0&Sem|*nEanEyg~o zPBzXfSaoMINJ1Ug9>zDb?r?7iE;82!;>R(hU3YAIlu}0BacaMVpUYAD-L|LKX4an$ z?dd#}4fg7yw{{*_7OBgIbe#_qZlN}JVqBvovqoquovI4)rf<}*UF*=2c5Zpms`94l zF7_59U5b$|#Yk6YMuwB*mNO~p=a7y(bS6dfh^=aHIk{uEK@AJF8oRx1xI{b5)+PS~ z+R<8c%a8EB+Mv0LBN31F%x)Gq(wlYOwQ~dFgo^pU>3d{|%cWrXzbHxSPH?O5acF(I zJwEhIyFGSlPRQ1kd*elH!(N3$b+#(NirFZVNF7;mq+$ie4#Enm+W&GlY_#+|xmB@&Z{-HrNv|{*_HyIryUfY4LEf0qF1A8>c3F@Ad5UeTs5i?c-7W-;`jV$fIe9Y5$)*60Dy!;` z7w=OPcx?*2X$rhH1>O_|UYi1MiUO}qfj5H!FDRfEK@y6Blp?Y3XCDck9FE_)_+|E0 zZ2QMyA46d%IdN*Iz9M{XWBiw^UVU#R6jJqqqqY?@ z&Nm*sx#a&m=buR)JLg>4?j`5*t(<4H?fLtq^O%3M$|E0_!%i;f)itSnHlrq7+bN%_ zE{eyE%r3@W*aD(v6gYwic+w+?pjSo^=>KO74{!yHGpuZ^;eqPCJEdFc<6>;a`~+q^ z*crz-580T4(_#vP8aJn4=b^$D5wnrS%&%uBrmk_bKo_yY*~oo$r_AJvF?=GWFC+vf zCdF&o#_DsqRi8^eq=J!4r|FJf$=eVI^m`ooJ=tq)$3919n+2&2*(KT zj)&9zuRFfbN-=6j%Lw}{M}uAe(D&$4|5W+JHg^$4n?I^1?3(}ItdjoZ9Awk#pAQ}f zqskB_rR;jO{{d;4+kb&Jka@tu;<{XvZmdm2PUf%fM4qneBy*U#+O*gFu&0gJcmB&N zX2yY3CQ^7A-DYLmsiMhqKdF3{)}-@U+NkOl=cyh-zP5JBmn(KfmyGQ^jRMd`a{qmW zS(JPqxlx^qIr`)m>_advQJU-fO9%GmPf1kxU6H-}xA4WB(Q3aae)J+ys zd5jHAmm`AzQXa4T|22=Di}63qBj=27=q#(2;=FpV8Rc}#e=tQp?Vx>5k>3kvYjD+h zn400#xkO!Z=AG?A_jATh*=vfq&klVwt3MsvvbVg36UQp8`d@A(22V`25b7%SnIfQ{V4>Cz5F{Bs%q$p}&? z@#FR$6~7ztyY2Yh1$&9jEwSG~)ASJE9| z=VQt*$G0^_@;dauyXBE9c0NiB#F9s|?6@yN+-mr@Hy&jy!$MLz8#g|A&mG$1zu}7`$LTjv=ipb*c2s^F~llRJBc9yrITp=H2{X}kd zz;l{A%sc#OH?uru}sUIc&QTRxx*}k6FC@nsQr?Ob-#om zcY=u98n`JLiCu0<2h%LI)7)mecavr+1k1?O<{->1q%-@leb8A^qeL8+_a~RY<5tcS zRgw*uCOSbZ3arvo(>th3&tXfNowYI@gHjGTrcLJ@J$4xaCf|i$t47Sn zh=&)7N^d6VJKXMHNY?@v9H;=jVBa|ay9QkXbgX|zBAD>j&_xREEPzjxwLH6gHrxI{ zhgC)Gv(zjj*s{qI<|xhxbyitAHP*XZrM`nrJ_C%c^Ca~nV2)c``;ytfgc8#!Dd6rw zC_T(O%JYu**-B3g(1Q2c7Gi+KJ+_4y?4V_+y0I&$$6!;%$hf2ra(ujq-x<4-PJQ)O zEJonk*3|ticd_tz&n)ewejC~-uo7OG5^(BAVqiJ*S42EUG z9bh;Hj(bHUu4bOly`uz8tenur`~@~W$L?i%!gH7QTYPUvIvqVa!&TYIV{rd|vJs3@ z7k;Gg>rdNp4|T2ObA8IEb%TF)5*yZ5CZ9>!?Cec^dG_MNhmK zf<3?4x^-$1+x^XY9CpFki*VH^rj={A`ug!^{o^X%jVj+Lp(pGT5(6wAw=Ki~i^psW zF~9=n|5RHi23R~|TZq9fdp($+mknl@#M275H% zk@7{*naH^rdzLX72}qC``!&q;&o?9H;mbdZyl!Y!F6)9I{Je$iW&8n!FO@UD)daR*y5}?3J9MtYjg=XR2)MZz^iB%YhtoD~=rmS;nPm zOe zDzcHWQO*@#g{?7-@P#d^vIo)aPE?}5Qs&M}6ya-alg6%YYb$SodleD2)h%ElBP2xU z&2sR%KfTJXH+U5U7qysWNV5rPR-T5ziYs$do7$#WF*S1sq8YEmMS)m@!CbEFIkff~ zT8L1q%!*`qmhFWvBXToyd!gFW$;i{YHQk8ZExR=_Iea$e?XAcyL?TyaD{`DtC*_RX z-C^^kwVKIwHta6&bdVc#pp<-g3NlJZ*4mVis1DWMbW>+Vq2f^4QTrqn-&%G-N#Yhh zixe)nffR2CQn28rNbzO}O_ zwR=F5Vgs%&w%E|2BvFvU29)Dg6rONEm7UTwi!3SFmo`%|K$#g(T~-`ea_$F$yHlzd zN9f%tcBR)xX-(HC9YwybMjmD&4=s~3SV=upF~1{U<%0Z))pj^(kPOt=ALpLntbXT$LVA z;$0fEagPAZZ_|u*u1aSlxT|M4xGPkaT*2m?yKsQwJxewOipLAI$#-cz*mj~<$R3vD zlV_jqLq3x?kR@S+%V4n&8i7|TR0)gy?%1^`gk42}5Dje7qNWRRB za|d5I-Cx*G^9@jGQm#%!nw$qvIZU^D9mZd(8W$NAM;K<>i%U9yi7Mp3TvZOvARN6v zhxHK`W^upd`3! zctDN2<)D0WCsRbX1N+sS7D23^*0u{JbgHO!Y3w4{bb2_AbF5E1Pa_6YuxD)xF~H*2 zwuKmA@r-RDhE1t$@JMfW2FPM^|G z$Q}CuT*G69@<`?6<=vNwM>D*VMA|)= zVaJTn?%|XjE?J&$-36GyVBd@{@K$7Zjgpb!F%}$2R&;cXoY7{wc1^}pY+qd{siVY2f{WI#eufNoJ8@+pxtYrU&fF6vdImQz>)eAsEBWwLJSykAkb>QuqU% z+=;iT!Xqmy>q7DdkrZ$%?d$M(NCh4kr461nYS6_Nw>Vr#fxjJPWeI%ZSwvNl$Ex*5 z*ruyiJco8)cCb^_m2=E*a6Bk~8L|h#cYBb?gV`Mu$?(#td=q>=sbW7{Dnk&d4q_@6 z%uqb#XWz1{%9Yv9kPel55h319rSlGNMSBdhZIDVOgcYd#pCZG!!daMWR2-nUQc-ZD zi^)q_RcSl|Y(QZK(v$D|?8@M*1j0UIM9uOkuES{7OPbDuF2ij$q!Mftozw@bG7o0z zr0*F~hE9?T15`99M~l?L5j4HV(7Fk|l~{X~Hd8 z7RN1ctWS8vf{x8`wXRmn}mh^d~-U&i=oNHiZZJhtQumgeWK;b zL8-Wt=g}xkWjhcB?~!ZVx5(N`21exIL%14Gw3%URDzkh*a$73cfaF)H*reQ6qTC*0 zxy3#Pb(OK?tfTqBw$$I-kbDs1ook@g<@~7H_Lf=iFk5a8eHe7877T6CZxLQq&6a_P z5u+=%Xt5t*j^zSChR9tL6A#y+#Y$if+_W!YRZgC8G>{0wy3B*SLM>V_m2E;izfQ%T z(h73T6uC?dAxw`CvI1cW(1cd*pUgRinWCrjCV*8jwo|tLAT@bHhAk=8Aleep@wVvW zm8O(Xglo_xBxY3y2%)s>bU5WK6(2G_ z{AZN0yLilEL?;>BA9>C;T;Y*C3}o@)3e-bLK-pAV0y=PswbZJlin+tC6uC*&Z^iz) zTr0M#;NMdC#}~_@ELW_KLF8Dm$|y`OTdfjX+yqZ0D@D8&`BuyQrSg(@s%!1ThxF+RjF&yKGL+5jHp4yrc99g6kf3_wls>%l1!ka zkSM=)M0HLi&;tt|{^aQ?<{?Tv$j4G+l-Mw8ns}x#B3i_SOT@Z#BcYM$+fvMOS%g_$ zxDN9g>|wUcH<@}{D)uczB(@b|qlb;e_4wkh)6~OLxEne4cgoOKBV|`YWiz)zoq96D zP8A5tOycq0E*{kZDs{uT#BXphNIb95E8XhVfbtAF5;u^FD~yzzZY3Fzt(t~%H$;~p zM{4=3Id&sLC2k_Pncx-xm08OFLdaNO(QjvhgXmw^f*rciG6kHp+;!0(vX6lR)Li z)01Z92G)69(r2E#=oP=Lv8fyPMcOuE!OVK~HG@Qm;isu2pci~jv)VLKc(`LcBZSd5 zfVpzEN#@Kp=B|8{%B9LNUN+->&SxTD{L@>>WlA$w1YHGHj&fJYkL$2OpD)_eATQd} zpkB0>LTDv}t!M3Hey{)+5pl&%j|G5~p-RyMZafr!Sh2(N+tnXi*0{Eu)@ZT$u}X<@ zaRTWPy+|QQ@LEnqUV^KmEZKmB^hg-o-&4kD(51q(0ezsEHYijgXsY0!)plGKUt&4j@I5A9^nPxs71VEt; z;f}^kpQCOSi(iOrc&EtXC+Mv#hYIxUGJ}%BNQ2e=NsL4&^soL`WOq)fV}a`y)7r== zRC<=nC&&QHMI}`7BihT+H!@SPATx}kYg!4li{45>LJyeqH1PguRvT4a8mRCyP&B_% z!>p>At_>=ZdQ&~WAkvfR)s*^$8o-K)rFp5Jr6N{lbG?$_QlSHmBG-bHm?+;WRi;%(eLc0@9f;>5w$3XNs(_m=&i= zTl?6K4Q(`9T0*=uC{0l+qHEbuqEWpESk>FQrW4dkZFh^WD%=?9R>p=U>grFiuYDQU zXd)yt=CMLr>cHbohg3#{l$$lJkZK><94M&ABu}iVkOtOXi&YpRkQ<0l2{siGCdTzv z8uHbJb`}>)bd+_yy1R`GjD zPRkGPK`hO6ZXB~6#k>z^%#QENdGkJ<>sIeQ<~r;M*c(xGWA@>;-#*+t-jHW>4;&W9 zosiI_hKQs$*M(wWxi#?80e97C6+_n&vLwKRtvReimWY*RJ3{UnTr=2E>Kir{_h0HP zNfw@5%qcCFl9B>-W3kd-7lSpJb4Q;6az@`Apjy>KSy(Np)e>4_#|i>1whnjhIIHrN z+E=oT2}L&KRfbV9%IQ}=YCPf*SJ`${*o*~B(9&3_`Uk~COSgI)6|_;uI#C}Um-;{g zMO}^fkb*PpZ9tH#2*(|?nXLiiv1)GYzbR&hGaDqYBcG;?8OuWGp_rhBC@MneM;F}##m@?wz!WYV{k)R6n3mLSix>9+L48VAmHU)JU(`Lw&Ork+GtL~_~ zU^Ex5lvj6ktIc-?h%}gZ#E-&P=FZ0xQ2Q)PmR&(D9)Oa5Htq?esTQJ zf1U9W)uG-eJ!#o$va>Js8SRCXFItR-AWm8;k--&|Vy&c)YXY5>0uBT!nNupqt5gm) z1$7d;2mVR1y9+Ra;q(FE3WwA3?TcBxV)lvfOh|g?n`MU`mfbj7c765yZX7MUzIs77 zj+R|ty|5cc%MN-{*A7PUKS^CK#MX{B(3xjP9!io!czJImjBjuJ%JtZ-7%=biQ=G4I ziy=3LnnP$JxQGEG8Sy|1%V#SCiVrcs$7tI^40c@9 z`)&u2usCPZrGFTzW zTk*U`6+IuDXl#?{N+rE$c6}Su)g_G;5koyk(L8r)`KeaIv|5lE#%Pcr(l^!RjiA1y z--yW*!Dbk>%7|5hhjQkDv16;VWJhHU%>*qA=GT{RO=XTYz4_L1hoqw4&sAxS%H#?} zShbm-fp<`bSk}R)KAJJySFu%K@o<_wn}D9~Kx-SU$}FBHP@FC9kYusSos7eI(V-$1 zuSj4f@hMlOjv3F)y!c)28pEB9L$p#nQaYFfu)E|e1(zy}%p5e}k$KLvXBH{nHK2Eo zRcMOk#gc#1g`56Wp8MGH5>_5`J&bu8X4owCw^3-^5{>e2a@|5>`E;2tv344#=Umf! zlGApXME`3uCoW{I&K8{x+m81lg2k2u8g0T2r%g+6YHIkZ*NU^n$>t=Gv8E&*x% zCQdzMJiZmce^m{9+_J$<@bH2Ybm51k zHVq0*`whO?@PuU^>O%1kYi%@soU(QRxgBQuXIv(JMfe?tUoZTyKw#z2)J}G5%{q{zvnCXFBUk-Q{}<=3?E}S%g5L*7C72Z^MipZk58)$ z?iV!CMAPTA-a~tv+7f|tis@%5V3sx|w%YB}hR62{`n1CVP3`8&O_ip0-%!RJ9R3yj z^cfQ#V`^`XzhS(o{dqj?Up(U0BTTLT)SgpKZIr;70@nz`;{J9?U_T|RC7w5PN?QHrMa;k3tL^OL~B>7+I)aJazn0*?^5P++UTjRG$f z_}KKjrccyfpU&70tY>U<>KV`FV!lPp*$uR*ZRpdGrEP6k4?nMo%`SmCGgiBguws}q zgFIXg8&f;QNqD}P9~ArF%pgzR7WhZN94$1{F*8T&C$Iw0)CSL_pD_Yw2|P{U#WNY( z%>rKq%+Yp;|1V~d9_MVrB7t?Yt2|+C-E8`~f3{<0So?7H>$6SmE7*gpbAEz(Sdy{z zY9SmXa7PQ%{hPpZRxw9UVlp{P`*zh^tFp8o1!~9BTqLj$ps5{tJY!gYJUMgu@hts! zj;B<7D)y}>()ApH=4#4h@71(fv-+;-h1yfA?_UjiPNKXGKdDcHsU33?!?p;#{G`>a zKvqp)oo8(gYvrirHZ~2I7yoj_tr<64xzNKX*RDgjvv_YH{14L{CE41I;uc07>|NxEo`%3M?2;^TyVPtS|VHH z@>EZp7ko`pfGR->)3tZS?Obu2O$?^%@hi~gVcw1yjv)y4xy1Q~<0Hg5Py13R`(Chx z+Bbr^^^Y80?5O`vV~!$vrQTaxszne!TN|q%p}T+;Ip{W1CnuK5Ei>8LGI49yW;&Ro zH9B*<1+%%tP7~}Y?OMUk)0x{H+WivCtvd6!Lwiu%?$s|vxVN>(1^c!5{6O2`xDK>^ zpnnFP_JQ`cxEaQ0pydPY1HrNkmeEe_W5N0vO#M^sXTfTKouz%D1$0t9)*#hiXhE;{ZT6vENQGaF4O+5)d_Y5u&cCxXk!Gs!@|btNJ4wUnCl4QrHomE zy(pLm7U~Fqbw3n1K|gp^XS?^Bgb1P19ycEK7+Y?<<|m!*a)ObUL0Q zK36#2(658f_0ErA*8+^RYy##2wnMOM1v}pHfrPt9!ky&!y|_IjZf(G>MJ&%sEbWfJ z3f1q3Tf5_1{S?Icsq-(+{k1b3SR@CQ?fMI-KEu&du>Qa_$9hMhV3RDYufe=82lkV; z9!o9E(J3zSm$_Lhlqi)fXPyM z$Z@B*<(Ulkh~qwqrP!n-Kk0bVaDlQ~G`}wG8OPh=c98jzBcMI+*lhsS(D0yc{>Je& z;?%T-a0>$aR7X`;^Ukl9*+dw|=eO}4P{7B*7crd!x(V4C(bT15IB>%@H}+7fir{;AEju-z%l z0M%2mIoKs`#CFdlHdmkEBo>@StVy2;8Oqj13pP(bM6jYcbX%w&DcF~SEzze7)@MH5 z+VquzC6*GqOus;|(aprJ(XSBfO2MwxuMzCB<#fAFzd^9PmBhB{w+i+b!EV;?73}aN z-EP+(6*@l?Y@7bHYqV`xfvC|Q5cmY3 zL;Et9-2O)3&$(gPxbm16pTHgh^8^+OEEX8cD}v8zF%QfuhIxD*b9Y!?UzqFj`U5V^ zs{l;qu`JpJUY=JCn|Jbt0UnTlIqG&pK0}?B&lGP3v~yQfaJez9y}!VL0uK~;B%nhp zC?uDL2&^xB1~w-Oyi8zy5oKVuz-0p87Wlcq-n~grS?>nGOxc)P%u;J9eipjov|>`V zL7*zrE#jJ4rZ^F!LUC5=TP?dv5k^a^RUOFsa7Z7I!>=IeTgw3gB*)hih4 zK{0>3f}v^?v|pKEsBL2YV}hYxTDb?IJ~-~ZzEj#)^`*R>DsY3qs|4O9@EL)x3;bB% zUj%ykF;p*s0|kx)tkEX-qhuZ>ut8uWpe>Dy;m4sJCvdI6^#V5tyu2Sdd1F78`!<0O zip^8~9z&<)xqiO_+}`gwzz_RT!ao=Ib-$Nf)7o=NS)2L^93XIja)H@KS+W1>Pg@X@Rc;q6U=_W|xt+QZXwE<7In5NnM!}%elkKynsq7R+Z(z++G$2 zJgx-`ZLAN0_h6f z)t{6+Bk=kD2P2+W#H{3hYHSK@=EdkoN$j!y<*;$@&v-09qBC>Ertkj8!Bx?$bd=Hn zS>>d;u$*CIeS^=H^P%J*|C(z!rfg0fw~GD)GLd_HZR$OSQD+lLKym&tD6C0WhrncEGC` z_v`|6XkQN?ZQluGey6mbR7H3?phLT$iafkT%+~@=YyZCLQ9!+#<{koj2`m#>D{#EP z!v)q0oF{OJz!d^l3p`cec>*sLc%#5=0-qB2TY(<{hPB@d{I1%ihc%;yFd#5rU|+x~ z?UgkLn>E@2HI$iUMF*$2H?`(x@L{IFCV@)@t`N9N;97z00?!e+N#G>{uN8QMz*_{~ zEASzK&kB4=;Ohe47Wh7(Lpyt5g9rQ^NUq*Aa1PA(4fEEM}F z;FR{-L8N5lpf=0|j2jdNCyxY#1P(gSV@uARFi&g0SK#9UpB!+W$Ep21=m}6|3?@~V z4}KHoYX`Gcx>w*cfHoz+h3mBT-2(q0K9!%TL+GDA9oo4=Ny#RGTLu1VXxMAV-)9)h z@wDMnAd~kGr(`}Z@I`@d2>ejsrvm>Z@O!`-jjeo*W{j8uP10jTnCaMe|=q#e7Ih%&PwoAF}~AgU3(@Qa>Ese(Tuhw4>V} z0CZ@>4`iGNAINrg#)04a?J{zV|K2~X-2*tKJ$pQ5rl&xqyNbv64A^x%KA!Q^j%Pfd zjIV^f(zHL0uYsBR)}bk#rdnr3XUPQG&zUd^ewGy-2)KO0!GNl#v0bE5$s{$iO_l4Q zhQPFTufPDHZJ&400?0#=!2JXc5cq!0f|S(t95e@EKXnogJcw|Jz!3ru5jaiYY=H{| z9xHIQz*7XCE%1CmJN1hXx(2abBk(4H_XvDi;7bDE7x=NjKM4Fr;6DVqCo+b7fu#Zm z30!jk_2I;cgwq8k1fDJM5`nh~yhq?m0zVY^iNGHOY6mlhB7uDc)(JdF;7oz@1g;X; zF7Oh8TLnHU@M(cB3fwJlk3i2Mj6WuDoWMqbD+Hbo7}7Qa+8oQ8G%7f)JuEN^IHf&4 ziSqNJz~4?{9eGpWyJGW+z&}o+%={>3*JS$75~x~}{K=z&4y}*a#03r%I9lK&fpaFa z-l_h~VzF5%P}SCxCbMR-4-?YPnLIUUQ~Myy)7l>w__V<11-=T1-u`6D|KA0=4`tgI zJ(T_DxrZ^W#fOp3RRR}DKjCCCLmwjSZ7|!ZynfhuNaY=Y(1*cX#~JmptX#({0)MI> z4D+Ivwfp5d)(E_#1DZE;R%ucxsJvYt^r&n@GOB>3A|h2vnRl(NK^hrcf`@+($cOmX_B?yLy%r@VQwY!0B^n zbK;z|&FV(loY6>|OB(6tnZ{(ekM?O}E8tI!rvrwX&Ijz%bP3?-rfUF?YPtn*LDM~e zCpJ9_cvjP|0k3F!74Xrfw*X&j+6DMg)8~LcHGK`3Kko;?f%Ei8A8p1wKcGtehXqXi zfQ3wb{z9gH_Clt9=R&5wdm&Rd7BTgHiRr|!3~KO%*o=IN*0z7wp#!VE9n;uaS4jt4eI zVV->N!N7i0nB+Z63+^Ye06P|Q_`OnC3v||6g?Zk_Iodq!bPM~vw;kAp3e$e{o`L!I zU@2ocUEAZWMSrqLu;;zxL|Ch|+?d<2Hd(oOvV3cS)mvDhU^6YOOt3i?R_7ZJpUW(4 zlwc=W*ks>1a63a`TD`AUi)foHY^m=8U|TF~1$-80w^`U~-z8e1_MnBW^KHS-h-WP9 zdf)Z9U+K3NwheLi)4sK^`+XyTEiJQoR;!h1$EC3Tz}gk&Y4aCr{k5|!>~w#BU>hy$ zT>slz41EKM#dC%KePCNH>{kD7ZGY`H3wzlADX{x2>;?ZHu*&k7h3)Wv4eVJ9`ya#^ z*Iu=-uMlTkd&|Q9;r~vn&~{pw8Tco#-&t5F@U~W|ePv<20`CJ;f6oUS18cPbHs)Fx zC~%~)H67f}=zv`qD9-SCEy7i$VtFFaF9UlgP?>>!6&Rd>>A_JBEDOuu^RE2h1V>E< zHrY{|flYJNWni-%12eGYjssHI(BScoAt~(8;9AG96gDe(dIq*Ic!6WI_MPGjYDcX$ zRznfu?|JQ&tha$R3bx*}BdZwL5)1nxt3R;gEbM2vjnhuDu)H4skGVI2%BpJr{`YWh z?i-mA1Qih!85BhkXH-xu$DA-{1;HHBoNy{CNis7lNi!=eO)4!KEKM!TF^4BIEi)xd zH0QLm%*V>=|GlogMSA+x?^*A9-?jd(<(KPoUHk04&pziq_ul91`|LQ-1C|;FMB+V^ z3oLa&tg~2bsUO}1ks+S9l!cTT;$=&BA!UYm(^7swvFsu?SSkuw4ccnyWo&ng*kfrO zw!1|fu(TbqTg4Ge2N1heoUlaaZdY;M5}mtU#gCRMuw6IttEG$Bt{di=QoGFa{DN3_ z;cLkq7zYZq6cTt0D+brG6ccz76l*CZ@Q~;!npo-_SO#iksb63uo*s6zG#YvK5?w9L z3VdDOCi+;K8@L`c*wSOzuD8gx^a8f)Eyi1VE3jDh5mPO_AGjKHkELCxOJ6b9(h=09 zuUKe_K4bmF5=-nEPGM4!$6;w4M;+3YXgutcA+O!2NI`iy0YEtW1|9|nlsmVU)P z3=sP*(Y4@qao7@F3vL(3EmaGO#Bw(TB=UCri5nqO42fNss6Ik$=F87K@k#YS zH4^t&IHfqsw1h7)Md8C*7I;RAlT7seUWRvyT&$#IktKerq%zR&RVZ7y`GP~+CF5yu zpdrtzAt`E<=xS*TC`Zh(bULJi$`u;*m<~uEvVxhOih-KGtSCW4B8QCHmdQ=(;;z#PFqXp6C(USB)2Gl{8e{ zDTY}Z6gpN-6tgT%2%VxPiTO-(#f;GVRGx_9OXxf?A#}c)A%^qJo_S(k=u(9;EG+@u zFJ@YzE9L{@MN6wfSE`4^x=MOgJuEiz#de-p6}mw^CN{RABUT{Z2yG>cL^xl1=ZS6D zqbEdkC2dzvh{Q_Ttrm-rcIHTL3;k3*DWWYM2t9_i=29&k3!MY%$y6Y|Mari|$StP4 ztD%S0auH$4sc~FAFH*ajSWt~`)e5nvm!Y~f{;i5d*WO&7C$UC-`HEO(NVKhyk9WeB z+E{m{Yc_VbZ!%)7`|x&xzE@rm_gc!TAvJQTq-uJ#SXW6Q`c<*BlA`n*Vo+a`%Y+)| z@$Mh|co+W)L_v+l`W?}ypNTzHBVVo;ODw%!qm^DSCige74{K!Tcg4Gv)Jty=rItQN zY@@($qw#N^_`F6hy-7q_x>#e7eosuWbPcpwY_t>VMmuzf!&10feyl!by&6A*aEfpa4iTKdc62v|cyDhy^Ghgl# zpIX{fbCcdD4qN&du}?*XrDKSFD$ZH@5wZQ^vL&xtoAiFFme5?Y1NwlaUGm3TUt-pU ziS3fV)HkM%Gr(^Bim^-gWsbCQYO8oAktkgJ)@{zb~|Os3}_DNmZ1C#dd0 zCsJOp6j}EuC}J|@GEX$Bd&a3Nw_0k2l+n^>3dcNs>gJ1RS=~}j-8rBLOVszSCu1y8 z-@Be{Y>CE=^<@i7G;XXfJ6M`g_mGH@w^(|hZW*YzCF+|tkOM7I-?V|uvh*0Xip z`uYv!dQ0cAT_gE{rJu1~Be~0xC+d($l>01Ik17LwX(=))QZ$ywEH#db1D&;$8dWTt z$V-;GMy&?@Y>CDJNm5QVM}@`#NwS(H>gzX^!Ir46-&EGNME&_@vc4ti&o`5amNKJW zm&r24(uk<_p!SxiKi^z-u|)m(=91>a(DiyO_Af==ZfQF9FGY^D^gz^)P7684(vqm_ zpvjhAMtLpeEK6%qUQ1cXG*@hn@^ZD3`FT`=`TVt!eP%F;LD6+xZR7>am7&kyxafwi zwsPleL$jh=xZ26g2Mx`OPIINo#3v0s6W!g_UQSqM=vAcbASXX(XiIco)lsf{!BAOr zrYlWGtTc2vdblfH`o3uB59HEG7QbvLwB9IJXL(_bp@#J)x-#VQHw~pC)y3s6*SpVktDOA4q0#joc6F84rxO*4e!~}qbeGF`|BA$$Bj$$okco3m?7*m{ z;XUQGB14PDwyoVu2J#*ii7&=(jkryQTM8TZSwwFcx7?(BW8Bt=KC-E$tK%N8(^szK zy)6<0#^*-%lYYFnMdIZ6A0zwAWtJMN(#{D->kg5-UotVz#H|rSnEZs> zvq&77*d%(mT=uF-8FSaxh!JwLrBQdStvgb_Ut(e_5X+L~mcG7gcin8c^K}!8n6x!w zlss!`$fTonbL3lZnAkGJa^*owhbH}4ceI?$N32M!oBVzB9kP6bNx5gru6kqS{LMt> z+B#MiRniuGUW$<7Dawl(Ilvub&UvX~{c=DB?pC3t@`cYN#GlxuspzDP_VA zip>*AG5cKOWa~;=D#ptLmf9mWQGQ)XOT}ICH%qs~v=mch_)e3{EitKLs{Fx_=Qfl# zUH)MynZa3ti z@3HyvUzX^5Y`*;5QkU5J@?rUvrQ2hBfX*A@@)pQ|QmUEh7d#?knNEAtebYx|Q$v#O zn?52pTcZ1>kI1c-=&t4?GUXG><+Kd<>me7)MNIQVxL+-=N9Bde*zNK$Ie~{4rzPD} zeOz`uV78-ss*lTsO!LGmu?@T)m-}su?yx>C2YqHz(jC^vWz=Cqbcc13EVdNxH(VCU z@FONhW7sF;a!WMQe?o5Lfyik|cO9ORA>}3|-R*r!7Fr7Tn<$q_&ruVj`>oH))t2a< z>T|Le??aL3pLaUu1)2FZrKIz^OstT@D=As5loUbh`fZ8LxJfQLuPbA&y|HnBqJ6Fx zZ)}IyQq1}vT_w+#+5?+?`ZH)4KS?;Q&eXdvJ$x2!(R?9)(P|eI| z^EH{rMEekg`P2_pQgg2oxvY}fdA%WVdeI(9`c$ozo0;bE^Od!7rzINotd*Zw`ZhLS zye-Qt)r>m?I$+NNR)JVTndk z8{{raG$Ps{Ket39sSUEi5{;xb$cvU}B(*{QY=}oo8>Q}7{cw?tQ>Ju=G@jjQ&^otEgC%^rEm5{7A4#vfaeex|!$3UOT#%DPfaTcw+U-mWR`4M~c zxg2I=B0d>ZYRNaghu7zF>^ZYtjrch6g?!DBCni20zt-4jV}sBVhvek*CS`JbJ#j>? zH-uUzgSP*PKCPqyUPt5wL;R$vTwbw6BZhMMo27~Ik>aRyeaj_y?nYgXN`Ffap)Oy` zmX?+=b++^}Q(sH#;)i>EEeBiL5kCqv$`F5UkI6eLDOps=X*Olcggnf_zsFM7gxR1% zOEe}qE*Dy&G0AcHq$L^yosiF2qCGkxU$!(P;eM}g_i4y&Z?>YO~wR48^NEbuxnr+;@NmqlI|#IiPS$cQ-sFzL!y!<~J+@C0JV8@P4mLvYDlq8Ww`u z8WQV}=Vh5uN!!(Bx#yCp*}8^{ync|UEPaTSKgvs$v|arumt8hB`xjzYnrk| zKhbBE^s?6#dA5?0@q3M5D`~UWRayTBljqt-`Qm5U$kHyR=9bDD%|R^H(szyS_xeR< zSQ3eapk9`O6F>6$RSvLJCvhKWgr)ezL*lx;!%~~XGSDPT-4pZ0Z*r!k?8G^sIhJN6 z9`^cO&bKr-@hGUs(qoAIA)mJNG-7|q7cCVdCe*8z-b75OcPzb^_>GrT?_1iNcowwN zkT{IGD7C+mwkxHs{b-KS;lxE=T7_OQbP6dQ6;(;wm7_|SmU_Cx2Dn}79ZR>z)&y;4 zS}gW9j&Xabvz87vPH?+b{!f(WVo}k!iQA(NTDsJ@mD^ioT{W@a8+UM5Q->}2G|6!L zsHlINSa_4}ZeQj3*-(QfnQlKd-%_(CBi#P#q^0yGx$XcJ_=`z-Ta$6_K-J7rZj;IG zAeC$B?j|$c!RoN3N1JqThp0=Io^3M69jdziYI1qK$wDmaw}Q!hKh#vK|3sTBX^p$4 zI%0^gtr6GM3z5Q|j4Os20`S0z|# zoAj2ut{Q47JtNO_Q^N3N0ndXUE_#TT*Ij zz3v8TA=5muF{y`Fyvq2U>ms%!?RPg+XD$6JX{kt5UH>q#&ry1ky4_L*QDON!K`L>Y1#TaBQ*Y(CnH!S-r}1ntNR->K(J4r$@5|B1L^* zV%$G#q4rp!9$5>8-z1`h({gX@K37YXQb|iiD|G>LG;fsNR_$jprMFdADr02=zZAi| zVRJtu+S5)2R#Kd&y((s+Go+a(U44Xkcy#^C)FDgXGo7~dTeCTcd1K}rrSwV8 z7oAldOLdaxfNo`)>q$y(?a5HREoCG>FEZ31n{se+Bz`%TWho~)4m8fv#N-Tdi<)BT zzT^dZ_XiQ(fkY@RT{CpE?m>YL<|4Nc30dEwxA~1BK9Q3sCFylzfq?Mp^31 zG|P|}#x$Slw49yN&6BAPGnp$&rmA3Cij=(&yI|@5luXY6)hCEbFrSCpl?dkYaF*|L z-L3+e3PeuJeXfDZ3E`NS*z!ToAXR3FzrzQs6O~lt8LZr)rq+cmpYse?0hSiGTm?d5 z__xb%d&{>x^iDe_S82d1dbCw3D2T~?J55r(nM_MeQkjN$-zTZ4S~qJwRqbRlwVtZ3FwOJ)hSI00>y~P? zJ_!o1P20`$P|fmGlqITJo=UZp)cTm1t}-lj!gkYDmLWb1W>g-{$6J5xnV}x961!VH zS4sO^cdN~Y#M0LF#69Y?rB$tyL0%E2F3qb&f&vYRHLcHi?ok;`1>#`K?>+fy7E_UU zy!BPjy=s%)Zd2<>QJ}V2+RL=p($`E*9WFt9*E&)bsA5Y$wwB%xs6CbB@t&(5i8Lv% zqh=4PWtOV7i34r5RHM!FVxHPpN&8$6sqZXBBISJLTi4{00D4$OTS{)TKrB$HmQve9 z%16{&mO8h|5DV3QOFi2}f>NVQE}2YoEYS#hp*mpc7w+KZEH`F8f3}8 z?LJqLx?-tD+vmj-YJ3cD$K&b6>LDg`?k-l3Gtm==eXhl71=DF6+cw&JiP~wYZQF+4 zPboZzLg}ZyyS2?1%ayh?vTY>D%hFUPZ%gwyrLQ60qva}u$&|NT#n>2?_nhi#iOO4{ z9x%k^y`&zrMCHAt=3AojUQ&-(qVir+j~U|fUQ$b$c6lyy%BL;;(KZe#ODxrB*TVZ{ zwa<`FRj$+SGyjESRM%ys@Xl@?D#u@T;{sdo(V5i3zAElo*{6D6uRfm4e6Qj^8&YEDB# z3sXmXzplzHJqKE=UQ9Hx)v5Vny;^7K&D2P_UIjKbv5l#BdB3a5n3js|sd?TTRY((x z6^Tz$XM1l_T`heMdQXjGqI%BteqXIH#P!^wzO)qHK2B^=f?ijQJNYr~lf_n*YALDx zquyIpPfHyT+pexz%4tb77H_Mh?Ygy(1g)?%r2UiL+toU}LYZQtK|9o2DMSTgQv2oJ zJJs5j9OF;NN9r>sI?rDB{zzRiBo?(l>g-ahTT#lnVtM=5y?3iWnC6Mq?ced~f=&wH<$Z)sio`to0@m}#!(U+uSe|4WrvI^OVhe+|Mx?m}&W3y_XswOkE%gI=>C!5AWt^c zY@TOR=Sa~{2U^u4r3_ou&ZR3$b*H?O2JF+itQQfKFOeG8Kr=?~Jq zD`UxGkREPgJklSe$6BJ1{viE!CGB$!*83}IsTiVP9c60WAtO=@*Kb?unGpwi-_nqb zLt=#9VJRo03{+}~Mv5c#K}&RRW~4r9X+lOV-zq1NPY;dx^W{I8+ zPSN>ynOx}EV4jYcWQd*(&d__93WU4MF)>SLPNo>{oOHo+Wlv14p4Hv@K1(#u>TdmzCAyP;kAB<|-O0a4FEfPW*U~p%f51eau^=%=pEKm4 zCvXM&vL$)~SD=5fG!6B9K!;4BTF(;;y7cmWKxgF<6^Lqek`arTZs;lO!vlIX(>(EN zmt-+le=&n%yFB!(sk!=uC3*rkS4Yg`n4odMTzxB3fmq)q71ZC-UeG+9W$7sBVO>7U zY)8-B7HWQLJL+-{vB!19Jtjua)t=BOx^mX)4We1AsbYzZ(X7=~;;BmVs@>mrxz6BR zmU@c2dHkN!JuGeP<_qd?NR)O9@_SxSuB33k6}r$;dACTvmHPEciuEhjWtP70*4Xc5 zeYKLB`@N#;VsGj}_nDM*kMnI^W~qI5qBDkgHpSceCrdP&;%)t#rLNt(`Ms@O_j4|u z0o|{;-qwMJ1kHnZN3Wh^N*IMa*XgGUhzi6+rmdD{b&o_W{s9wvkYm>^6?Ko4>-5+M zP3*<)o&DBp-+6}K0&UO{^9^kVZPJSu5H0mA?=i&hef^B3H9fLGFET9_@Aequw^_ed zNfZ1&&|55RMr@1TQ%Mv2w(4?A+YsBXPgT+cza9E#OS=&JNUKMv^u=OVj|qOebPY?T zi0#pJD`|q?UY%m;vmVp@KGyS@%(4AMFJdy^c%SHHl~myOiGHJ!lEtU`T|=Ivp65Xy zTI$yG5@@%joSuioe*LMX89mEDhb=vf*a2N(X(?g{^f^nbdgjZ|^kqxydv4O7>0b=- z8Tq+(7Si6%6S~(!exK`=mVA4~iGzBlrBKAa(5DP}>hy}lTktMgN@8+7YI5n+D;cpS zhIp>gA)RJp1A5`63> z(bD3UPl37`;ywCW_hC9MPxLDG`&y5z606W-s>CYv%qp=H`u-}h6Z)|#v6FgfG8)Ow z06VFlHzcMGUhIETZ@2Wo;E&}geaX@jgP-v~t$&(ybGtM8H$&prp&!dLdiCU+v9tOu zLn3O}$MUQ$%)1f0TK$|}X~?r=n3w+ry~fhIVab6P^jb@w4f74Tpf@v_QOE_I%5w{M z33_I8K`*yN&ulL0sF^oQxTxD3@{Awh<$pnEl~-V zbn97^=Pp4dT-K#`-zXuY#${YTnec?l%iqgcXzAssA25&P`RbI0zU+u zw3HgP8+5_a>)HE3S1di^a|CqVk|*i}$jLYRcRBl85V}eDho=#vu7E-;C5-wFgsJ}= z>psdW%*(-)G^V>o1%U7X6#q=?dO3UUGeoWH<#-AVQR}*$o(~bx_2p7cx05oTiCedx zlWM8f=;Xk9PKKr4qkTi_IXx}S9zCN*Jtx!B^P}$v4YRa&^n6gRr7NS0Kocz0xZ@d6 zo~0&1t3dgdss)vR3N5Wc>(+A?TDpMNt>-MU)I57PXt|}`KKnt%mX4!!>p3Nsb_JdQ zt+Vu2;J2X7mL3bd0@`V5R^V@-QcK(J@CvKv9JF-yjsQ@(rS7Ae)T-y4wB#An3Ut9z z{FpS*6-#}_bOT+t^uU;YAm?Gz*6YU%1^F_WBZd}SNHOz?tLLOWZitRpeJAm0-VR5s zf1UcyI758I8ah)ft?@|?Z0O9kwA;rwq@hz_>A24ftbzEjrAK`32NhXro;@G*w5625 zB2Y1tsaZp3`7<|b*3ij)_GZl*IcJ~0QL|$KjhufQ;+iEo;sukEenXt-WLTmzGSSJi zMElp+$y{+Wm&Q(xA#j|C(-^$mGG zp6KP@)JbGAxiobqTcTW=Ix8$uF3p_QZ{NseOLQ}5v?1Q3md->=vnD48wsfXjicj(l zY3bZ+X-LM58ZDg%Ep^DaAGC+!B@E%5mPkQTpS!Kx6EzirplT*TEO6cTVvP30xa-#N|@~DK)4!yzo ze6Jg-#AUXxv#Q(3@534lRe0wW_5P2glK-zBv(?^e6eU%7Pv%XVa?^jxKZ0{MTT#wR z)T`p5a&MGaHRXT$9g%>PF1+dPMs5GRRdSU)OTZ=-dBbGp2VpWx>N%_z9`TtLJE!TWYeQJmI*fzSA?SHQ4 zN1Wyps1n95XAh|oC)mEgwmDv=CCRVFFHlE#dQb{3j|s_@wZ*)V7Xo8I$He{Vs92%2s$0 z0`jDD`^G258T_T2K^k&tv`XQ~q;_>$og)U9Fn(zq!i&=k<-=`9`(f z#5LT(HU9*v#Sy3@&a?k__E+mm{u)rc-L8r!4ju>ZF#O-!%G8!hl%gZHQlbmz)}8I% zY!9qdB}TG+SEVX3o9+86^@e9Ydq{71%z0wYH?!3uPD6Sljk(g2-td?jF6T7#x%=Oa ze%1E>e`gnSeM-3gAN)U6C3bNBQ<5-fTIR)Y$*5Cgsbcc&qn8z@!ZCLHqkDw;t(@G^Rgu zi2bBWRIQb{qM9pt)$`{#r?1*KxX7NHS3fCC|G}KY=6m6v`UCi+^Lb7w|Gr0I`V5ou zXkSd-Os%T6Ue#9m=jhK|XHu;7)sOPLY5%#mb~B$px7#1w@+SI!a((;f{@b6Uf31T# z6RP%FO&X)su}6QdZB6!=t!nfB{`E|t9*7ck5Y?gqr>UB!v8%THU!#BLN#fkvvCGyGz zKHXY;$!W+|);3p(o1gtZpC?t%iVEKLBqt6_J2B0{w}@o*Q&CWDc966miK&VP+o z-Ky$!^`C2N^7(JlQ|YFcf{_AR+p*s!rr%=fc2obSlr6db9a+g%qI;z+ZU4vQmdXCA zYPKE1eseBSot4OD&sf%ptkYR%v3|g#;{w=PJo-O+9I*_3mw1Vz|7TlOZQ-|(5BiXt zTUEP}`QBvz$DHOfD8~3uM_l+v|5c9CCrjCT0>87zw1fG?g|?@tCzJB@hdOvaGo8I* zu%(EADiP22@72j;v?Y6}PldN+SFz2v@L#`+tL`cF4FCM;FxMP&T{2@&bG4~DI=kul z-^QD_a-Hcj^5=1=xtiU~Q;Gk6glPH+H`VmP_`Oj!oPgVQI_nJv>>S=PD!{^37`>D>FkA=gdbr+A;z3g{o)jH6a-La#1 zBQn0BaY-)L>Kt!d$#_Km1HGfi2hR?DmG zHQ98Y+-y%eKeaIDXVuSzvHxxySHgLkG=KMv_Sf91dfw$6On-PY+vbj$=@pwAnopwX z57YT`;}i6Mt5;mLK2>eghIAKB^IbT{-i0&wDox7mT<3p5|NQOt-*~9S{=C&+Jyq{5 zm|m#qrJJkee|m28d#m1^F!eOwjOLryd@G$vq0-5|F_OCJk>U{Vm+=_eT=UC#Pb)b3 z*VQbW%}DADZ&fvizq8F&mpDDC64xtjyhZ%~ibr87FglmqP$kT#!<741{Wy+N zR@JIKJ+r4(_uaH})qH}ulR$}~ zvp>$4{C%UzpO4YHBOZae#KkCD6|)7Rcmp(|9`Pjn-Xaa2YT^{4KB60JU$Hls)+$Rx z8h`N|(qI)v__10RJVAm+^ugkFXmzm;8Y13@hKk+L8+9{v_;?J};RMtXKR{jLcc_=} z#^~NHYC}CD7V0gop~Pz9Jk*D4=qrwK9jJ!>T*Cma8&*|=AM5)-gT-cOb+H~AB9f3# zsOSi-!Sx9fU15idzR;Rt2(*^C6Ixr`2mNzBsZBJOf_t;DUA(_oTNS0d#k0u2YWf@Y z(eXF^2PfXN&AvDHqdfDHXy2D)P@W5*H@00fg^m$LwO9w+5g$TtMDIn3N?h$s(bLcy zesdqDPoDAA!Cps+e9;X5n+v>mT~vs+_@9dZ9Yh0>j(0An<8LSY?S#L#AzdGAGYUr_ z2mf>FNJ#pHMi8_NKO!QHW=&vi#@dE8owXZlU+5e$nC)!Vaja8VXG2T;9){xG)X-!c zUoJ(^e6hiTelxL>Q?8L|12_7umE8w^=oiFkHnBfQ(Ay(|`0Wotg5K#JB+iaBH z;DGg>pnEz0Bl7uyCwxec`h|#>21epn|5V~}xp&}q@O(A!C%*`BZlITcg!pM7ew8Tb zH!I%!#^uYL62FQb)Yv~7bwCT4+Nzp^Q~hhI4uiY;2dUd&M=Q!RT9phYeVcW|;0zHX zz8Jj5KM`9U&?(}~;I00tY~%fauzRwd$#w?UWEj_E7}umgd_Ne!I1<-b)ey3)4H*|u zAZib}E1(TZoCR$-WDY#Nk`@HeK0d>`G9Z`hIe|5g_qvU0Ipjm$b~m))kOfFX`;NB+ zVBaT*wnNrHZy9nJ(cXw=h?YZ+1x$dRLQ1mpxmJ0+RUvOx$es+&KgBBLxsam^IXZ#; zRJT8n+gAg<0+%2f5x87ziA{#y+Rn>=38(DKZRjl?93q2`$hJxEc@I`E3~|GLeqdlw z3fG~Sb12~))^QH&IEM_ec1W+F63!=vOUxBJhwKcB;o5HI`fTQCo^2D_qXf1kj&fvh zkf1j@1__$|7$oRTBSC`ROcKOz7Qy;rc;Ckwd3;Fw;3M+Xke*0SGb0PQ&Ow6S4bld= z;dwCUNm|C9&d$RsZ0PO5MMycEHJ5cl@Y6UV(}P#SUxsxIZyWk(@LF}}(0r^c{djA< zt3}NidPrIvHUU7w2ueidiS5OWeLqg;&!-qiICgp}iupPlR-XREo4BH_xJ!t`= zq%o{dtCHbwg%qhRvGg{++dWsSd+QH}Zx4A|?Hs;01n;lICo4#w8Gbe-hU=CpzZzIK zG(*x^ohWI(RidPMR*8~kKgIA_6s_r#-c!<=8a*YgsnJu?DjS)c|1i!I?}^2}wft|N?M_#P|^w=g_2h2 zKt5QZqfpWc9fgus=qQx5LPvz6R*g{9+A(a$u${p1^h<+j(r~vz^a&A=`y)FJyZm+e_G9!uE2um$O~Wb}`!# ziq8$!MAj76RMrgEo~)Uy!&q}!C$Q$R=Cc;EE@WN8x}3F`^=TEHvo|D2*Ul*mFTuH; zQDYtSfX>4ik}NhWI@5M4I@3xN&5A2gG#jo&(JZ(UMYG>Z6wP`oQ8e4FMA0m_5=FDy zN)*j%D^WC?twhl*wh~3N*Glkf%-v9$tyZFFmRgCT*=Z$;W~G%VnvGVXXck(DqSQ) zRkS8csiHMmPzS8ZQmSZ8mQqD)vN)Q~Nk`K;>C3h++aYX+upPm61luue$FQBqb|Tx3 zrgOlTHH0;SHHI~jHAU0Bx>V=^ouTPS_0)8vQZyZ@6iqYhQZ&t|OVKowE=AJ}x)e<_ z=TbDym`l+#Q!Yi*47n6dGviV;%_d9HG>a@n)9kSnO>^W5#D~K>xC?M)*y~QwG*2!C zzfsu@rFn5Fn&!i$XqpF?qG|qHil%vQDVpZHrD&SxmZE8XTZ*Q6Z7G`Ov!!U7$5x~U zkHatYc`t(WxN$#33}ZW&_h)~IN6qIWCCy{YNBw<6@-@v=%g0{KfYQvgg__Q{VlKA? z`5X&a$9Zn%+;(zqC7fHSrd4$ga+-2Z6QrZ>Y+LuBrdeet*>i!ny24v|^UTvDa?wQZ zs1&{eU*|NAL-q7^=m>^5bW9`I6T_ZF_N1^Ul|32k>B*i<_6&1qWuGEd>#pw6NBG+$ z7irML;gortGM`iCIy6`9h#Z{sXmp{&*Kmhc0xEQ9C7?owRst$?XeFS9*mg_w63!u$ zYrCBDDdv0@I&`KjbZB1MLWky~Ep%ue+Cqost!47JMu|gf36&sc2TE%Rl{mDP&^qL~ zyxwNcc_%bklyc4oIcG#M6Kx%GP7Yk>&|I@3rKjfO*VLg?2h=~J;-Tvtnvr%ycAPr2 z{sFuJc2xbH4jr{}XBAc{DtBm=qH>2;DLRS#uU5anWnJO2u5($Ai(31nL-Wo~IyB$x zq(d{(t~k_Jyn@_L1vJCaLGK0E!veoHY?B8om*}sj<+{`LscDO1y6Io0t%%vleTj4( zl=o`PCY9P|jGwQI)DE%fiD=*U%0S|qr7v?o?5aOa)XzBWyyg?0)$TfK* zptlXqfv(Sc&pS_2e?Cv%GUVO{#hib!D9xMOAe(EFt$)dTvcWhVIDL78Df*TnFE%L9 z)QdPEKO7$8J|e#u{GNA_NSM9`xg}43lXG4NU6c1_gTbopbQ!eMq5O9`lz+NTZPO#R zNZdLd{W|1d;CDpQn*{m_`i*pver)=(*do0IN@wqzv6uOLxGY|tzCQLiZ2X>Gyfgj% z*dy#eB0fYudsUaIpT~xR;@;Mf8(&k2WJ|No8Xd8EubKVPo53d6#F((dhcR{p3 zbeTFWj>cJAp~r`8jVlm`XKeH%d!rv+&33_aat4h%F0x)@)iY1PA2{~qs8i3heRH?XEBeS4(QTZ%Nicghmdlirt@bZ&OK`F6G$1u zDX;K(bp@X?ufR-v$|3@Xxo8|T%td3OOc(VYX_V14k+c=`%B+rT_rQ%88fB1nc7Eo) zqw&i1X}$>_{Pz=kd$V!q%^Y>Me`L!=im)*9#N<$I$u$AAs$M2@ScceE{|BEo`Wt^ zFG82ASD-6Y3A9+Pg|1fbLa(!5Xv)pe2jTH(%HLPhR)Opf(UfyIdm=a*#r_z51Zm>+ z*U&`$4Ya8~3r*1%p%D({6T=$sQ2vPy)wZcawM}Dx2K&3RKg-$T#$G!+-MC}p9ELrM z)8uoSIh>}@DT9B$Lv>r|9D}`xb6et^guRS&SdJX9r|cZw5wQcI6)=P2u!PD9m3{7=~LDO6j9+z0?I_!3dMXqVE zm$;@wm$_y_m%C;|SGev$%3{uEvy0k!tBYEAr;A#6kL#**iL<=z1>W`&wncrsx_hHO zUcI3)UUa15y{N=QFRDpXFRDq37uBS-SEjeW*zDEP$6svq8tQ|y*NaLy>~#U{Q|=Y$ zi!^TXq`IlxG&hyol|4P()DC^z)DD?$YJoxS2;`Z?(OgbH)}4bKCb-8!C%Y#?^W0OR zv)nVG`R;t^9Crb<&^-@2-~9-5p?eW@k^4#L68AIE<(%6JHywpyE_bz?_NBy4=gC{{ zVx(E;UIX3e&ct4CcE168tNR`3PWMLW9`^^(QulV~emAwxK{uU;huyp3DQB&4m%={D zdX_yG+|+uPSg*JbAbO3sIR!h0HQsX` zb|Pz2_N1`3_IwY2Dr=hO3hWHluAZM^_hjwk`5ks9>mZND^=BCCSPvbk2_8C9lRb2# z@;tQH{zVGkQ`t0w_dZ(C)XgkpY+MLt$Xa7*qtLa>4hqE$xu2-Y#7i5l`G`m_3 zu6qTnD_OU(ep8L2D}5-sjrBOI^d(O;>nc|5N1pnuomq2O=d!M1-NE_|tM=#gteshN zSm&~?V%@=7KY&uoKrWFroi&@afORG7HrC^;GKkZ&rn6?V7O<{l-Nt&HRR(i<)^yfv z)&ka*tlLlIt{;X-NTkF%2tzcczi0nCyDa{Jjt*jNSq6u%yn#P*NI)`-y>sHnZR*}T% zS<_gvSm&^=VBN}E!77?^de$`7EY>-!D_FO(RT4lWoxRO`<#P zaDtOoLOUlNhfYaK@A<4NE+m_^fORG7HrC^;vKOU^W=&_!W-VY{$-0g8IIFyk)3c_t zX0sNsu4LWDdYo1E=Jc%Ttl6vutSec!u^wlYeKkUa{~Xp8 ztXo+tjOS5`Ze^`t6_0WHBF>FIZJjuDSR|sq~tzZ>Tv7a@Kbt`KHt5`xyzNpR=juEG6+?+$)C zxO(-Z>fNf}UH#qapI85?`tj;LL-Ipfg-#DW6B=J5H+(_O>$Pr)XkKS_of?rtBHxQV z7umJ$#JW$`4TuVjsvQ*_wIeDfdU5oI=%dlu_1>*FuKxD=jbcW}OpKWpGcV?;m{l=r zW6ERNHppx+uEC}TQL#y}9b)^&X2*_=y(@Nh?8C7|vCqY>iQO4n5qm23*I3`Uq_|FT zgW|@=-4%CF+?=?_;@*$jA9p0~a-3JZPkc~(SbS1^m-wvs3GuVy?~8vhesTP>@vGur zi+?kIUHp6TAI0yBKOcWRzIsANLUzJ^3C||Hm9RbG(}ehj9UBg6_YwNaPEeu+a8MWUe7);d#Q)o4*q%)uD% z0j$b9U*HKRR?>YEE8o6=HEmbmS?ntGB{2RJABxsu3!V;b#WUIMcqY3W&tyNw^Vm=E zEcSD($@-n&#^V z?Z%#dzSUt5X8UeG$|o?G(nqs4XYCwJ{$6Yk3_gJLW7(d{YVyCA?Rl(^2U97}22+VI zvuAzq7qB<8y_a*?&rwqcQy)`@W1P~|^E{`&#wnfZl!JeDD!mSC^Xim;8f#zHe!fTH zNeP>-g=il}(Tp&v`M|Jy;K^qDU*XTeJ{nHZtKqb#J~c@<)}lIp8A7_N)?TDJ$a<1> za_wzMb3bb#>%Upu5#%?=qUup-QisZ|dKAoY`6SBECB&g9idH=?r=oaY__$nT`&U-e zl1?;5O?w8gU5hn3nrfaHO>JUY)wHK+$&_enG1HQ5Ieq8o8YsOl`#+4KI())|Awb8>mb&VjjzKqCiWTkjXIA> zqV##JrXA|Gpgdz)o3eIjG0r2zT4y-?y<2R94r9$}L7ux==X1)%Y(LNXGJDpse!_Z| zx9aFa=dCHxoTcWBHRtMGUK3H)r54%9`Ii<{H`S8rQa;fx z!&`_ItZ%iWT8-~`3uaf}+mUjc-;wrZ3G2#^{or52{tX?6!TzY@9njA^PKF-ucsKO> zj+Eyw9SdQ*(kKUW?7r+=4PA!Qo#}IQwKJtLM{Pj{*-J8R9?hpSXtt0!)6Ci4w+rQC z$~B*BbB>v_{RfVktF*Zq{NAlCW*SxfOcnI#4bO=l_ds{|q$~5$o>bxm)}MOPwdm1a zRFh{}&F5|}+b_0!9$T$T2?`P7$gmpF)5B^*pB+J-;t@AJalYi~8%>`4QIzJ9Q6XVM zT#Tv-ZQ&aUO^L1#eR5PhG|jg$^i)(bw3}}$=-%K|Xkv6a^tn;DKpXn@fYyrc1ATea z0O;$ZhCtVi8VP-WR4#P)sButJ`p09a^b=#K^dH7h>A#Pm(!Ix0>9xmF>9J#}^lQOX z`uSigy#<$kj7xuV6qTOlOQm3f5z^v%Ik`ubohJ!veJ-f=9I{{E<}S_1RS zMnn6K9St`TOJrg?RAh zY5d+zJO!m0;Tm)9mZ2XMD4vGWZ-8;b5dYm!%m;(IF$Yf~6=^VfND6(W0N7zrg5Xz zo?P_aq!Gr4-dc9W1WO`<`w#tq?54+QcPi; zhF+f%Q(5z{9};~|(wW!~g}x{0EbNUGvsv%K-YASYNb|8DQrydWKlVe3`&j2-Kcpyt zD)d&fVb6sstm2dd`$4F}8>L1=AHp6e^k&CFA4c8ri!0V=QEMfhVO=gJ!Cry-D)AnA z#Y${O9TlD-&`9V26u+59?Ie1)vtb|Pk5H59)NLG2`FF+K?UIBF-cBJe}7zeVjNddd&OzKA=0QhWzh;(PHZ>`PFE{`2Fo ze}pQ`QYwP|6YDQ{SC|q%v;K-6J7yO1XW}<}4wU#^JPZ9pJcsl`J_lRM7oZL0N_ZMU zaSqE>u#=!ThviGKn?Z5*%2!}FhvMv&Yhbs4;_Q{L!EOarqP2V-b{iSP|Go!X5y{r$&AZdmt2_8uK`4zNS9)-Rnk3nC?vpBc=m8YN^ z6CD$|W&Ihbj@I+^~b8N>o?g&=BPV4OM>78Y%$M zFxJ{C2%cK35vn@;by(}FQ1~NRqf{9D(NMgbMAd}WSGD1Zf#Rj)st)W})_7GHo;cP7 z6%Btws1nUpeb^~bg_TJfz;4OfTE)TBinW7EfSsWlA$p5y47&?dVjYeo*tfEFQ_bM% z4pms`qB-oIthcEa@L<&nXm8aD{ywbzR2z8uvi4W);Ln8ODyrJUz8#9|BvxU?b&_?e zN{43(>onCF{yeC{Tm8Gho&i;OKmDz+AAu^dRCR+srFy`#jP)7S3!bN;63+m8!+w_a zIn@`Q=UG>%{_wxRx>5~*|3#=0tJFZ)#Za7GYB2O=H59s94TpaX6z7;434KjvL*Gz2 z&^Og+=v!(G(yWCl@wOTV`yHqf>(rgl^=cwK??RQ>peDiI$oig|0?#Ja_tiA`H?w}I zro;aMRElkCChV=O+tqB?JJdbUPu0DM?uROIK-~}fkSc)v1?v$t7oIXGu7~PD=rQ#W zJQYw}{nW#-Pe7IU2CqDn;v`gwQ|eLJr=j>nsK=ofR1rKES-)3{;rWjBl6n&U%TOh* zsi&aV)zi@5)U(jv)pO7~`UPmDUJ0$MS3#rnOV9@T6=W`pVdN(v%?}g^*kD2zk$6OiX*E}K@Z`{ zGrrxRN*vbbU>|`hQKr9z{S{Q<&4?FaAB8GWp}&WH9E#uA>C4bF`bX$l{S)+x{x_mO zL2=b`eujEEze3&4Z}5AdSZKxh19o*Nt}u>NxWcf;I$GhVvBo*L=81SHevRk2VK;>0 z7&+e1rj8FZ+3|z6bOI1<1;zK269l^r6yGCGb!ZPK6x!1XgZ6c5Li;(jq5YjY&_PaJ z=wK%rI>f0D9qKfI4s+t5!<_`^2&WNrq|+Fh?{bS6O` zbf!S(In$sIIn$x@ote;wo!QU@&OOjaoO_{*ocp0gP66}@XD)QH^B{DI^APk&%p1qG z(Rl>=tn(;zh4VP{C8r4bsObE#f*%b0+NKj}(=(x~T zp(UXohaL&7StF{(U186Mtqdy;dnN4Eu-C)h3VSE)-LOqzo5Qw*Z4dh>Y){z7Vf(@k zgdGek4?7ulA?!-n^)M&gH#{UfB0MHMF+3$aH9RA{XLx4#u<#4v?wZ|ej<0!Nt@mnu zP-|H|5 z1XgQmivCEZ8U!7n=0I;(tDytce&`^zAD_IzYJap8L)3~`TpiUV=rHBX!B8FJG2A4v z|L8^V>IUGi6q9hT=+C}f8H17hpM7{@!Ra){dpG_`A%~LvXWvx1J@6l8tmF5Fx-m-h z!@YBVXaN2O;(rkSH^xXW1!JyO7`3&-IIRorsQ1K}r!Pip{V_fphVe-@MpJiS#4!f{ z$6}jt7&(r|{~7q5)=c_` zsfEkLl99MYgugG3#BCk?-7wOJ|Lz@0&wC)w5g-%AtCeizzu&&vG#@hw51_ zp2?wlmW%Z{RL^p;H;3w3F22g4dX|ezIaJSb><`tmT)1RB$D=Tbe(MYmk4XSo=hOZ6-lQ*%T4Z=b9h{I@U{HyPkxnj6l4SLfE` zzuR+hy955ObMXfwII~}0qdv4>U!#25udh))?bp}hI=4SYdffhBiwDQSEh?}b{XHSp zj;FsT#Tygp?`fOgY0+>p<#$@NnN0be7Pn5O{7#Djlko@7QQTALxSvIw(w!Bxr%<}H zq6vOkhkHLFcPhotiy2cXeqJn?O8y^2)4Uupz&}Ui_!mhXS|mRR9jZ=;7s-Y-i{!!D z%{AHKb&BK>{9hVbBpcKns+!fEuK&OG-Yzz-Buf*EO#Wn25-BCKR3&wZU0G8(bCk?vXC@`FdfG$6Jy;vw!FIzh^{@|ZpdV&{ zS$GW0!ew9AKS+HSe>Vz0NPP=`NBH|~{MBFnL2CL}evo?Zl^>-38h;mF z`&ImU(B)zN{iE0Z5B#xSGrQ8N?Kh%tn2pD^&E@*$m0F`=ip{M?r5m-2&At8Z{QlNf z)Q;0jJC*j{x9WSu#p}vKYj>|5bvpG{^Gd1Pjw-v@`3dtYQ1X|eO1rwV9(DE`-MGNT zO1EN)3zh0lbg$idT(1R{2~;qb_UfHhEi(4K)&^R=xgA%vc+k8XRl>Z_AXH0yT8;L) zAUmdH$w4{-y5EV~tF7+s)_$`VCrOHsg`{G$-mO;}^-k1-aJSN|HGDfD95wJ0&D$oc zmL5mV?p%AjW8tN4WjnIr+x2F>vxD+_a9rNSs1a?WtRD0jycl(=?fPD~)fT?GUhQFq zS!#CM2lp!7>W-kHBkx9yy{K(F%c0L#I#IIe>~@!mu(0EU-NyUvI^-qhBp?zlp_8J{ z?RwOxDNm8GuHEEh#4JWCY|7bIvkT@7X1kDz68dGO*nEs`s3FZ$TU^+Qs*gJRyD?P( z-B(;<2S3%`t~9r!h4qD)l(qdX1mE)FUev5X((EvB)LN*Ny;5(tTiSR_$lPB2z39Nx z!fu$aG@F)18hpRr-PzdL-&H1(v25U#0M8100J&XhR@z+)Sb7ScH!F=|4Z{FI@W9;f z*71Pk-mW}u?Xy?rs$R&^(0$69Ht_v=v(|bNw|b$~>~t&5ZpSRNtN4Y>yRA;QbkONW zyT!$rhs6cq;sVBECw6203UpL8 zZbv8!OU-KgKvhAAyFg%zL%@V!i>;{}ke$v}tG$~*S&XE>XQ8a1BhloT`Ibqhhf6{) zM#J3WO1)9pZ1jxAMew=NsyMZG4?PyO9cM+MHy zJFOb@kZ=lx%r&-K5Z9eub0@+$sWj&6UF~e-^`dFV9|vtW+CGT+x76IOHzTv$+BVB; zcb1nPEG_$n1RUYe;E=~Wg)XS??PH>|%)#u`X*J#0()orISK3i~uHHsxIc>_u$;8Jb zHzhgL#m8t?Pwvf5tFaHIz1yj_+6|~p9am;;^Vgy(Jnb^dt`yfSWnc@`mhTxq8LVLD ztXC_YZmjU<_VyZpupfMe;zFafR-*yBQDx_f^cDtI(Y61hX>&!SXFKYaF`Ad7=5}|-*qDq+h8G$z z1~#In-5@=N33e>=rUQH*D@B-i0|Uj}uES=b(4jV~rWuP%3t-F9`~mub$;(k`r`7J- zFchc_Ew^A+u*TlTx8t@TB<-m7v>}e0I`uJBb4-J&xDjkb;#*#G)M;h8p%d4Ewn!au z36@WB+<1=kQcC_7J6h!06V5tpPZCmk1dUzlw)U*DqF#`GsWizQ7cNE7BNvuQULrxC zLFd2-f)ZdAapZPmzq4bQd97W?$dn)+uD7))c}j;A=Q;#1TNyWMw_LB8 z-7+)?jGEQTZe-9y(MBDC-SSqw-RY{D*ey5QM7vvVJ;uabkDdT!Q!M}#vs>H5q%GZ4 z)4tJ|Dpx6*>u`FxCK-((;(4%HwFGr8HQjw}??MljkliDArwM$mh8eY13+2g(-F< ze+>f5M)hC^YX^u%wY9s6`Kx9pj#XHN7_}a*a}xly$F+r>${w_fMxfoR=p9Mu%?w+}f|(WBCZZ${vuGPF3~{H$ zFc57Hn@VBs15!FY(3PD;bx?;JQsyv2m`Hr5v=>#eGL#_>gCHQn$B2oTt-$h&MfL$L zrtNEsVq-SV3588`QKqUmg0)PGBbs9QuPHXdl;xnGm>9;HuA^K!mB~SrsdGsgAVv>} zSfXTgYO+B>l~n;Z5&&XYBbKGwAfZ?whmy+F9uTqac;O~S5M^qAS0o`J4%I)4a2Sj; zeK8(rO!YCQ!9%e4b4mp{^Jj%de0Qi;#z?d2f(~)RPqXIO3G*}uv zz@iCCDDcHt*u7}?NiYCbUJ-J_8Ox&91qltsERd-l;jz+^5DY5`Jzeg(;7oEWSdN1- ziN`(W_-otlq7GR*BEf23fn{kgi?Jr(kIH4PQ!23C#cyT60}Z%_X>57*{)$=TV_t&u z%galvB_ogZrF$jQj`mhyOW}pZQ3qJ%we`iNbrfEucAnp_H)_ju+E}uTlsMSlmDpwj z@Q!KJyET9$yxEYHU1n}HvE-=nu_-}@P!U!Io2`bS-bNO)*Ogf*;jDu$7Iz1f@;=nK z$Pwlvzchu~$82fW_naYMcB|-7kNX%WUC0KUG0roF?i7z1)?Srbt(-7wX2b$lC*p62)<-2r5&CTKU{H3tDw({b_7w$ z`Phfmp?McViPeF}!rEFJEti#q(b}>F!jKG7V6EG>KwZSP#A00x9C$iDy3RV7=4?2P z!m8+?B{pv?6ILFqofpc2YaU$TeJt4qqZanTgr*$?>i!k|-Vg4>b`D;*#0ls+7BfLhKUNPBeF*(D znFJ^x!6hVWG(8m{KXq`SrZ$91Rf?42 zARZ@HLX-r}7K1#N6HJffAOVgYzMY^xH`+U*zO?w7j`;+d1I;D~@8h;jb_5=mZfQF< z*%5jyf+eRfJwcsST8RJXDed`e>OS%rAW^HQ=l}cH?Fk4SA8j47Ok|mYlathPS zrnlIh{89@%_V8@9_Pa(bp5<1x(y&`>40ogXMyvXWn;50~cC*smZ%2wLzFx3&ZEFEK z4%)=oL^w1|y*)TdTyjf+OKvH4$t{UXPN}dMHgdlsE<77!2A2Q_oC}A!@53*;tqF7~ zIHdp&FzfFD)jQ%mE1Qn^i^~R{A;%Nz6j(Ba3{?V8 zb{9@hY_Y&AAGvt~9!$%;1VoW^dr4+MX`RL;iz0}#-lt16NY-gfDt1gsg0vKc=_nb1 zoJ`OxoC(P@WoR6OQKznkRTwpNJi}MBSUFhRdY{fjq+)U28@FDxs_y?;Yks%99W^0V zyX9uoebQ<(b6Yu%Q1|g-tBV08PJ>Pt5=iI9mh6zp%5=93$2a^4Hu7<0?|Qu}*iMDh zivzVBJ3&-C#+rjeKaSjqx`V<=6P_c-VcEjNLM(__tF}c`gK<=3Bs|fFqU#L3>^M zv_)|P81SUZ;Ok)T28yo=Q(QM(V}Op`II3gLVQb7aMoaK*(zxPi(|d~11&I34dy>2j zYzec%WMj6Ho>Fzh_W&)^>GQUk-Mng}Nd{0SI7F?pV-}Yd))tq_cbDd5?W(cG;=+bY znO|O8c(3GQrH!@qrNuH_PY{YzT6(#Sd3|%D;R6_U)CqRfk}sEOow!pGI*s zDOP#0Sc<7}sDy>M3wPfuVX1z*xLPdTU0O5?_hg~Y*9RMjNf~%C24!E9?N!r^B4`|0 zzGHQbB{lcP5aKf3>^H?^;6l5Obwj5sQ>^K>x|IgD>@`qqnr6#R#IgfoFh^q}#O~(T z;)5_)={Kw=fGd7k>R04g3SiX3Zw{v96#qIRl zmGLT?h?!24ICP603kvco+}V$kQyIjB4cFi}f<`lpwOs`kwktd?*pe}zo+3`4=!qKL z-!^gC5RJLDD9dvjz%7=_ zrKJrKYXomE-!I)QuHGS7B}O8v#f@@l1Ng?`+SvU4(uX$aa=NI98!{*27#~{9!tz=v zj%dqu*X?oC;M#UMVgMZng9P@6-#|AFNolseh3#pTiM96a7Caa5&|+eU%pMM6a4iIp zQQz%WLnG)mceqM+Tf7!XlF2jZAH|((z;@qg3B7_Wnn^-Z!b)l0j%wM_ zg{`E>bM1EJ0Ovz&F&Jgs@I~_db{(RzD<`6?-POfOla)$Gw~=}5L?YyA93f3u^+fHC z?2@S&rU0Dj5(+eiwS~k~7-Bmoh{k0m%JXIUa)M0Ql6A&{+oq-MKymMhW9j4e!>hr8 zMYcvDz7=Bb%b_0|QBzzhmmNLg zX%$I=!ph@{lU2Z`=6N*RZ<|8Bo=~$XEL-el!E=-aiQrhwA<5}*q`O(T1F*@05qF}G z#c7^(lBiLZAW_Q)4J$t-Oaw}5Se-{ zz3!pY9y%>h*fBg;>sYuW^Okcc=&lu9(8yx&bew2geZvOI{1Dy#t)#;@Lz7#e4@vw{g_Av{$LhMoMr@3@B=Jz>=N6f9DQu zP`j3rH5Vdt8^wk4#`@9{)hF5jM$<(o!I%WLmT5z<7>cV}%)R+M)(Kr~2Qp8M8^ zX0^Dm#08-PF5I0ft{PbilyBc(UEr~391sJm+f_9#>CMHlPQ-C+Rurz-qAQ(R3!78B z_3esTgW3E5S0ZFoJy=;la1M4`9R#kGu47ZKidm$EvvS|kfo~S}c8y9zXBCWiP%;lN zrsr^Ow7HJ6KIXv|x__<#yBt2(Xyq}sfupsO*}#p1XcuM9T)T$n2P^}|(j5AcvI`k? zHZZoUc(57mAjLjLv|CD zrGf;27%c>_h! za@0w#Yp(uekQh77T$rT9dXoH&BTS)Gq6TTWp0bu6>VpzjoHoc^k=FVc=9MaMs>Fxr zZNa-BR!~uigb4>v?GXycWAQ#iw0i3-?eFbj^Pgh~j(B{$gwuxT!$)#uAR64uRN}rH zo7CVIw9yh0;kCe!Qy;Q686~wV+<_4)aatI+20jjDuccy!X|$@R)45B+1OHyK%M=j~ z8$U>r1Ef#t6T)nz7X%KH+@xrRVi{k%FcydV4uPm0D@}I0WsoE}$q{Zzf4dG0JCDv1 zY(%WGYlNAO_F#}uT|$LJPa5oLL|oG@`y(fa#RpEVROzSHQz_znx&ya^9w%{&DzOhJ zLV;mGVGW`|P&Q8Fv^oyFH*ij+(zJ`p$~La3lxVX+l2MJkaYY1B7N;TB6N|b8x|MA# z%8>`>bC?sBA?E9vsx_kHa$J4Op01BaVIPo~b5)L)7$=A_Ro7^7Y7k{=u~}{G;|LB( zbzza%vcb`u1Oa6^iQ`MB&~hV*MVCz1-6i0zqSmX|2>d>#s1r#O7>W>W zAU-(Ryu^6HHWkjQb4o0Wt5_N)6kdcG_(`WO*10oxZi z;?a$8L9K)9M)v-acz{Y#SD@{lm#1&sGD~Z)pg&xhUt6Z%aAqCOUoIWt zQpA#UnX4JtRvNJ~rLn~@Y0)NOiNixfqT_32I6F;4pBUU_BpR8F%c!UWv2XHZK5@~p z);^Hd8*w4(Y9;_^5Hl0@lFbH=CLLh9(SYokzz6B5U#8`17Uj9sj=qhiQT8H%n53NeHV^!oyslb3x0|E!z-B_j5xCI$txA#IC#En2ZFjH2O>IHYVu`q9n>k1KRt5 zszRN&0w=2nbV9)7kiiM&x@Oq7tuo1&BvX7`YT!er(V*d!1w!dcpR+@RLk5{EXD2zHa) z0d3VW61ScE&zd@HraJK!$5Nc22mD;r4=x8$y5Ro8QEqHxCmN#L+cD6R)C09*<#NX7 zb`{MRY2z?yP^x%g93Zm9wddO z;?!}>(mT-n;-#EFDB_Gg;CkBK)-N};cK5Lxco0L{(COHzc6Y6*J2Wi@QM>ejh{dH@ zSQOEEVZ~z4(i)MGQg4YWRB%&0@ zNP~|_bD2RJ$p9hJ6MpLCqqTlW2qeZv|K{hCWnTsx^o zSSDI`p88PelSkQcosU@O^h__{rh!)GSrItDajMGp$ zVd_S-yO+e+SX#M9jNXR1qsC|*lhF=&acnsst1n2nWf{P+@0#HX(cIv8hzMsU8wB5# zFK7O%EsSLRtyG%VYaES#U8n23RU2(61 ztHx9q7=sBI^-eDgo03??VFwRl2Zlq5B;ugmgY^7HZwWR|H3`K9$+ur6S!*^9aPR|{ zY}$rLxjK5@isPc|Pi>)E=nEVvB5`p9Wi@m^!=BOMb{S5LVHne+LqbdNxkVO-E*g4Q zpqW=Vw4L@zDy7@d)o}_`37jXL@{ZY|f`jk-F&1;ki=`S4$Vd>2GD(ORPFVQSBOw@_ zF0Sqqwb5!lsz@OKX>_Ww)pF~-s`qu@#yLLOl&;$k z6zG=~DJ}MU93fBR$YQj)FQ2|@nfEL0CVpL&-ygaS zxoqfS6PPP-M^bv?Olq%)v)x|Qt6|W=x zV8xE_Xy}=!dH50VYuNDkV4s!#w2s}rE!($9n~OjQa10F96r1{elCuAxht%b3mZIE^ zd!b5Kd^*tN9zK?ryuA%b@Opw_C8h*sEqjN-9z_#H{#Z6E>-JMBHid^t?e|i|FJf>Z zkKgZr!(Bhe!Eaz#&jnUxdgBvso|S<(ndD&xi>PP@-@Twjis2<4A;`vkkHFbfJx&CB znZR0L4%w7tH=w-R**5O}X}OxXm#SO+F+r%ut|m+HSAkI2d~VI7F}2+^?AESqASQ>H zNVZv-yxNX|3}WiUK;qp7%nvC3V_nyl#Rdec4Gs#i%C!cp49lyIzwpW}O7xzbN<{8W z@uQgXp1lC;J`v=MU~wb2_DcM=2sR%0L9cj^hJ6s5vZh=UH}zawFHnGry#`JO#PO{P zwvgRt9h?rb-V5xHfEKHl6z0qhnpiFca=jgY+zy<;ECgx67NXqU1;40VF`JYle##5N zAj@oflp~J%zOd=83tIY-q%wSz5U{p>J#a7nc3mgFeT3p=;wEiy`PFy#cg1@s(hl`a zzys{P^I#|^ah#)G+gh?mK|ApLx^NX0>AfYphbJwF4W)SM=8htahZ@VmIBH?P5j~4} zcGoK3IzRd5Kg$%$A~=o)>==7c648p@X|NqHUI{B_953?yJlA!eQBrZa%R@G@dtgt3 zn_7IM6+P?E)Y{tQ0MRDQJawC62I5Xa&3%SXCPuS~A6KyW7;5g&rXvADjBbVWx^JZD z!9k923`Z4SSmtOT+^zhQNx8$l4!7o~5TW0B`Uv}0VD2sk7#ag%!!ap)PpG_UPZhZ# z@0h|dqG2B5q3V%ubm6@~l0yo;fSRXzI; zD@k{<0OoPha9UYzLMicVwH@YO zS~b;;>hcyH`sjCPQ{J0bQxLNY#-17_c5aE|QT(Mk5o(AfZ=qnC?Xr7ocw=`;4+G*W z1zYk3sx7Din43^xYE44x$CeT11E@-973gMYd7P&~aZmBHA?|J;MudLl%*=H<(e7sB zV1rjGyrOmBKq>YoLfiXKZD{!*@+ zA=uBknfJZ1<*_xb7Z|^X3;OIA-}O%E??`3Pxr(r3az~-vJ%#*jd78PrAB2B z9l$knwhqRX&qHqcU@fru;NWJKYjQ=572fKhNB2p-Zz1n$8q#+M$X4v+zO`$*5Lg*$oMJw3Q4rm;xk)bKxU8)8N=&2GMuzbqa!wI0?7qxbR zQK(7;w@j|UtN(5Dfht%e=5QeU_hLE0|iS)2cGmEkksaT>W5D?e710Tn2x1PwyP(73S zk}%LiDRo*t@oqQEIxWXZ)a1>!&ER<~auwbdlmz(VbA)@RD3A_WeWa4py=>b$* zTpaATW)Ad6Fk|%h?KJzgi%#B!U)=YeUiRX8#=~N)M87zwnGNzJFg)DE$N|hTcSY`( zb;#NivTu;AUjOJi^ldQ^MD+mpX7Fw|&J5ZmNe`Tw(u1fRFoUjR3TV%3hskEY zj}})J=gY-K4{*yQ55Z16KY!o>{8$aYD(WG<6cC>rn`mP=E#5-|zUiuH}4u zOFpmQ<2bqoZSUh;WZ3n)2kMs>VB32TxE^=>tYv!uNb)^S;6O|EiJ6tS^hG}!!T1zW zqHAKT*`RMcP&>!RUGKyY(qMsRHtwo8dDiunhs2%bLAJL7fEqXfQ{w)Lkyx{Xn%SWD zVvJd;E_9y<*#3(FEJI;t*7jv0O<`u%_G=CzEGzjG_Oo3q9$M!okYvtbXt~&)6gXYX1E(4U4NT0rJr(iYhd+r zc=?Xg)mi8h79T8fLxEp#O#kih<1V9TR4;Y%C$%EeW7-8PmXT~6t|4W_1`h{ zFuMSS1xX)(hnIpczj~{gY-Ouob^;M`5(2AQ?z2YDtsAp6=AC1m>El8`v6W%LvF*0hIrVL& zOH}t;Zp~s&q{5+`tqHDkz~ve3y<^_r!G`*P*<|J; z&^s@?J#?6R)fK>ESxGjmB#u+K)p!_@rZ5)eCz<26dYac)4mJ%>QV!10^sfiPO_3Ec^O^vfpCaaBd|GY#WbxM1`O*V_%M(bim2Ouvpbxh15(j1vmL^_$NqDW49Tb{v>>(@?L z#;xP&!0PT~JbmXGWt?z*dA;(CGEOLN*Eiuol-=0@!v8jfznfTcN-QDxgcy0a&QTHD zU_LIEPby`&CgrxmdfFwL1}^FoarQ2n5`(!BV?T_YG)ZGHeik#{2ld%}vg>gkZQ?+mIpH9gxhc*| zSSs;&x9(|}xWNV^Tf{A+7z-cnhHqCsFM_kb_$fhNAM2N#3SEY3hZO_w56QICam-s7 zs^O`3&*3{;7Y)0hwYbKDpJn=#H>Kfs3w%XF8ckuNPte!dp`f`&qP-EYB48k#wDIkq~ga2oFQi~n5h+{GFNqP$9 zH90A>${m_@?54Tx4spZTO&ZTp5aLMWX@X_=6^pzfySBxRoDRP`Y_PxNz1JehfW#Za z+)KH#9&PV8Dma6)hl4{r|AD>4Xd65KdLH0TyS0yBmvbI)DMMiRvI~=NTz*f!Y|Ms` zF^~!+f(_xF?MQOWgzZWKs9Oum;yJlVQIMzW^uug>1w|9lw%k+*Tis z`7XDffQlrY*Jns420FS$w)BJyjDyW*?6G1dN|rKHo#~f+!1}g;0qc`(!1}p2bNOap z9XC-2eD*k4>32Bq;^={NE;j7>LwszwGC>-`o~4b1*5g_LPYU5WE92M*1iMsAkTW|j(PD>#Y@Odvl%IESG4i>iM_uHbC|;jJc%UhyL-_Se z*FzgE-Q7;^tgf|X7mDP$O<4!RPa*imxZr*KxG)bWY_xi~bv=r}E&Yy#{j!1=JM5~~ zTDv&E@wBVQS(CkaWBMBMK11Al6(2L;+DJ<0p8jT&?{D0`CDI&2oyhAc2kkn0 zsLt+N@xy@l^W@&)B4cd*n}XY6>5hH@H`AYNmkSIA1fjjTvtsj?bh5zGKXb3N7H*&6~j4L0Sdak-^VR zzqE;P2jL>p_RKzVl<8fb~-UJqu zUr(OFWf$-}>@Cz?N1i%Dqzy+65Gw$>4{G)hYfHWOA@A2ps3$Uyo{jbXN$X~5U9*g* zC2nPakQUW?uRF(a~>3KgVLt)H9V68udE`6N?8SM!|y1H z+-c9@yd|hJZ!StdvIieYUp_(T2_%lvQ@~$Ka<+^adTLC{3>6Uibx89vQdA}>#gs>K z5$6sOGh`>%x+ZAp81wc5!mv6JYnm@feGOYG+ZBP1g2*xZdmpvo z^Rx&$>YzJG_!@+U(0^6~JH1l1`NI`H_3%H))n8R@i;IRy1_m=gQ z0A7_=D-L^@eWg9TDf!47u3_imCa%flBHrp)x-L!0;&*S=F~1OAkHpj3%FY1Jhq# zM|<309K=yGgc^fV2I9QZUrVwFFnnI_$LSd+KLvy8<_++#X1;FBwl9qX0av!bUG}BQ z1?8oK{(3BM_CT_Y#O{{|H%PpMndxLb6`Z*D6JG%_s+@h)#Sy?-4V0FjDnkm`-$|Ox z9m=#$=rt+nXQcA*w@Qh|x}g$^LVx4jfTdVbOFTv+*d)#+9K;;J)Ujl)c6$v?rS?~$ zc3NmZ7BS|BxJ>oydu=$=Q!n&W@>RgiE4QU&--)4c+mcVe2~5@x{5MxYpQD|_o|;T4 z3k3_9FKesVt=d(6TKFAR0o3zuh6*_nYV)KhrC#9x+C$w`O2^dyWk)Hy`lsOD@28cT z`b(h93zp8Ay-HUVGwYz*C7-D5sGL(%Ztfb$pPT*t)vFNuRch+8mPyIDYQkYMNCBJE zI&`I{gMqGcwFIuP-*v7Vw#CPkANL4* zIVn3y#RXbkAuSvg&yb(1I)c3PBnNV`%#KOTowPN{5ghO^^QQ8pPc@f7X<(tjz6f%S zh>Cj8P4iySIr`n$Jl;-V?@}YsvcZbt%l)$B+TJ_LQa4#U<0z6kw0ZlJ z*0I*06gV~Sj0XHL0n$0@orX*u{^m)lSCfkbwUE`%A7rdrMsA_PLH{$5@ilzeSeW3I zm^1JrA(je6t+d`|oBByw;ONxpfY!-LD5XhDRNxaEjDRDK0d{qv-WoFEKa17`~A{b)7ULX-pcNN8-CacTzkF1csM=_caXqx_o} zsB0Jt4Mxh$$AIsd>!1TS)A3}#Crtu#S;xXAQdN7DQD$f~a0#IPPl}q@c#h`5Sn!_OPbxp-mlDsmn48}^7l%qaW9cM>cE=-rc5QsBxR8r?&h=pJoxvcXEHA0_m9Vv4BT%5Cdm1a^x zua4c9{zKoNC#Gs1XTkuQzYU7$onebfHDqn*SMm4vk@g+Y`fl#~I$~-bAE(6&SgQl) zEDb;QmW_`TFmss~Sz52Iwiqul#~|(QN@QNrZ{sfz-|KZ+BU1C16n?y3ws=!XJg1>; z>T678-wxK*7E5Rzq_u7Od6we!w}oCLG^xpL%8N|t?cXq0Qs0NUdNsdI6E1~wKv-IG zHV8{AiM*-Pm-B*6llF#bPMd|bmC(a(t_b0qfVxo|!o&F^goiVUg}+Sx44zXghV*Lx z>|#^jX8!(}BB{ATZD{koIXGXat3nFh?2(*nEQavVVT7}eO~1^#T>4L?EK%A3dPJgn z=cJI<-dQLy(q$C%V)(ftY|)?@%cjeSeAe7$@nqRe>2lgHoW(4T$a6TKS-AAjvu8Go zDIDpYcfz!gi-87{d`xrmLXh@l_L-aSj+-}a9alr#XU(7%U*y4+ox~3*wb(;gx5So7 z$V)Rqy>Bv?%{%xnH5S`|B0=E{=jJ6_Vvgf2wC~Le)WpdZmuOy;saCid+e03ich6t7 z^NMb7acy)J6ke4%Dx4_+JxlA1PBkvV5r<{TIZ6HZw9tDcLuV(~5=*b>TyNuBXr5f} z(N+R;D*%fp`lEj>U{hamb5QRb8s_ewO~cgw`P`<;+{iXM`3mMb=_5Cb576d;e&X6! zw|WlD0L=4)N-@@YJ}$4hdRKU_>msf)*+W&VIJh-T*PLzxa&65XHsW5~g?&rgg^nG! zrM!YT<$^XVy&%naYZ9_~wTQg52DKD*9PI%wTm`dsYw>>hIDFNrTyKZC$*uF=+MV+o zmh?MxbFxldyW^uUaXaaPWQ&}eNoAA#pbIi}x&XQEz#{+)=u7t#t)oMcb|SgvZ6M&` zFfIKAk5DeX6yyo14!Ni9DxcrHLw`ef5a0@C4EBg~rzSZYv<+)Fe_+6z=GuzAiVfgt z&JuoIp_|Cg)8N+qv}{R@tW4je9;St)o32Toh4NvhNf~L+59_QT!;Y_%VPddpVt`q2I zVp>Rv`nZSzr}ybHxS@_(Gv;d!Ey1AX^W=*2*~HjqsdKqjwR&=?pC-;WTz`=w<$=;h zuc5ORIkNnQdP+22@_<5EO6uLv3(Fp4f3p`T>#WIXX||W6fLhS^hr!BL+a0$9>+?6v zLzMDm$k9>|=8>S#6X54ANMnu`VA-%wehr~*$S3uu+F)j(pBIkS{_Pw3eB40`Xa8_> zF6@n4*OT%?DrAU6Xq6MmODQSTU072N!s%mp@;wN=V6IwP=8UsM9jHaf~5BD%jrfhnj^bWwL%pR-`=pk0_{nyu4pT!lwR9ge>C#TO zmKt(&?y+bVb)>1Y$LpE_)<;J5kU5)N-kRJr+(r8Lj(M9~_pkKNA64{jQ~HSTTK~^p$aE{u>=+uV!J;F3|mRp)!;#eH$Q##9OdpSHpOrFOJcm_Je z<-&_51h;MJI$)W=#U?fld-BJYdY*EgXV?zr4Bt= zMtfTqZ3dk0cZQg+YkQ7&V?2BQ_U=d87#ttT;~Qq0+K2tG{G;~#HYifNr3U$IVd3bG zjc}=KPJ7OoIZ_w8jhxesGELc1r<-$|4A7pPZ=tR|!^0xHy~3I()8sWRJ@!WEl6B=1 zrt(7#K&ym38n&cYbNg{`TE0bY@y;VD+J|B7A#KM|LjJSQ*;-d8afAA{!*WjEM#^{C z7rv$1mmIhy;t9pc#?ZgdfjLZBp8ofG@95Tn&U~DE*>j{mJeJ3i@dh;AHT>~N-KvySz?gN~ z45Rql{WDk<={hG<1FIG5!l}`vK&{L`9aSqZ>f}R5C^RKzfG?`Zy6!ikxo=6oUYUtGaWIT7@s6pJcMfNC!ovsG5KAjMdYMKmsPS#Cus`G2+U3k_1(Z8vt zvLUWFf`%UcgI^Ru6zA~tB{@%SalRWs$k#$+i_0!|!_lZe?hkL7TeiQka z``aoZbNJu=q8RTO<=L&K0=q+x=u-c1mC`>LI-=j4!2c|ETI%TKU*3lOa@b?3-}psw zNZm;`p<>yUf?*#p`EJ>17_AW?z zYdC(=#ggPZKd<)nF2T5bcl)?*m5{VqQ$K?V_3V}>%YSCOf3?5e#1FqUz?s*bn9#OEJ>bT|9OcIrqj zfF$j`pARQLUn71=6!x56QM?MlB%7|{%HlLGeq4om^*#tfuLJrWcr^K(!81On^V*3P z>Ze%)Jy`IBE`6RleLk)IiZ!1;Zz;(IeN6q|k`{Y3?^rG-6=z5IOHPubbOBYhwg7%Cuao0xJk1I%U%UTT~%L4 zH58B66XL;njVWx{>%eC@>Wq#A&W65@uIEbL-#TRu5`TP0CT-NKSflv!fcRBJTcfgq zrxn$%Hr2r`E(HSZTNjEs?|IQ(?OQpBX13D2eG;L+3S*RQray+8L=gQOy|lUE)>~6> z%Cgd%=f35B8Ov8%Lg6ZKxrfWXrBw7(bXg^EKQ?dEr`zba}}*u0)ju zGyXbi(i;X}#~p$}Qe)mbzIE%U+s*eUsntxsj&{-ixEs_P_OMUa_M6=6;GnMsRNnA7 zp7!K0_87L5h2A!}UJdJZN|XxC*#JQ=@Aj6V<22+!M_k=)+=$e2L!MB1_m0uQJudP) z&MhE1zS#n^Hn{GR$gR3Is3F#cv+BO*HjS@e+v{|Ic`dm$rtTz;0^So~kJ9OHzUHm26f7)53g9k$B znNhA0M!RTOS&Hp+X}$z?Ie2L0}YvX9jEC70>DINrKVon1hFcPbuh zn7QyK!7@^GgE0AdMD2&<7YVqDa}7OfPE+Q-YCfR;St&^$QE~NvuIk3Jdc&Bma!F?&cPHo-;kINOc@7{C z=6-UM&`WQ>^TBz6oWmk{h)QcvpS*clos`eOc=tZ&@s17ez2}x`=x$_f>b0Z9lbf8+ z%v{)6xMR%o|MB(V|Neja-g}4t)gS-lPk;Q||D(zNryoCjaB=1@{{7MOlhdim3nPV8 zYI1C}kj68MPkUyE3ubC$7|^UF)c{K&l${#M6o&B366=(tT~3c?heoGHhDIkZ<8KTf z1k4VJ8gpHgoj7+}6*yPtQ zq0}1wvgy%N>CrUG=O2O-L!-I5;nB&%Px<%^B~LIf9ws+O+W0g`9z_^0iF~G!&rrk! zCix;A?M^C%1CF&3g-Oe5_7rG(FNq3Ji3sT*V74U{N5=PZ4sql!2;UT?C-r> z{*Bz9p86`AHCfC~pp|@OwBYQi!bm!c;?wE$NFklhPOuF>OplI_qED7m6KKsiTQhDm zOk{0Ms2HUFP@C~Xq2dA>GoE=vD4vj({1B|UG;Hv1IK@Yrk0Cw?93H^~ea5DwCy#zz zO8gTN@F(d}cI0yiA3f!xfY=`Xz9|)b6QM;3;c0*(BJh-v)GqoYUrx0jiPl0%~yJ^r^y-i!r0Xnejq4o6TK9ULst`=H?J&AEhB%>D=M( zrXgGMMgRhQbYb!Ws$dg3dkq%4w!)Fw1^9dWug}T5-u1hEus)6O?z8 zyG5qvZlTw1Q7CUcUl@V(=H{ec|8O#pRUygRKF1(Ur!MIzoFlLI*}PYpZhSC z`}=rvoL*b9`LlTCjnViE;5pGb=Tp! zI!98S1#2*pU}QTOFpMmDM8l)dN__k-sM`gbwUa+RWnA+=9X9MsgTBlfVadeAsNsAt zF=E)EcuwTz#*ij5Grzp=JZ&K%lafG1*B?5hv zb)=BG-{;WGPEe%Mm&Oc+$Kj{=f7l$NTmJ_AD(TrQItSY3*Rv@D4j?HFoj-h*p;3nZ zuYU&*gO7HPnDp4#2uuE>;c+HU@R8$Vl8-zeRXoW03Cw}RcxH1)8x$Pq0L)1v(EApE z7XX*g#x#OxF9=1^f1Do8q(@I9i1as*0bD=YNMXiL4X3iHbC9M{%tR^CE0pEj;h#hK zYNsO13J(8VL=_QaKKyf3Gm4@{!H3jndUO=LPs`k%JN$_v{)EN+M6iEy3Yz@zFJO^m zX}rLo0SW=9&`JwuCWa|tQzLwxgGDns`E4|2Y6Lk8L-OJ*E!GY|plfP!pEJ{CrlBrG zhs`&^vM-X$;IE9%=d|#DNPS8gbb8MseUuOAdyKquy?Fz>2* zIKu3qVtF(hmj@M2#c6Afr?pSw&}S}$TC9padewzci-XOA?+4CokV)Su$iq)CQKu&# z(r!Te@q{5U#F3Jnz~IPE6-IJ%=j_PQ_XT|+XZodQq|$1@*umIFx2ExORUXY|gE?ER z8LOYOub#y3dg&_6Z@OH(v)Mb^PMML33AKWohXGf*PEX&J62O$-D2bG`@zG#MVOkR@#e2vn^2nXl2;lKJD zmEA59Cy%-+id`fkg6{b)XN)7*3z$RFY0B?1A%DonkC}x}DF1g@!96}c7*1`W$TS~A zeBf3R8o>u{pP1oue5B!^8ZPkhG9RfOJpM)~$sIi$#=tVehkTecAH#fP`M@MMYzlZ> zX6ki5F7ScXwi$k&k9+S84dao?;&JU79$0SNdvA1m11K{D z&`>5dlF1B{>QmB)OT(Ge)TI%Q4H{09hkpfA1?J7+ze?o|EGN8Cy~&$1nIR@Bn>sW>MTX`5$A8j4krN zkqnnaD06Zzn^6Pf9AoDwOBWzvB9AcFRq|#tGN`#?OQrJ$ljG4v(C~=`TcrkA-T=h3 z3(gAE=#eeqXm&AkcJe3(B_btWP-QV2L=Hc3rQ4ER36n=ZoVuj{WrRJG7tUpdW&WPL zU;)o(GD!e!cC0Tlc2xnHrHz33af)ymL0~T+0y>(4SYReYN=9*X#A5hD5GSPjvS__% zpbOf1*a|QxQQpxM3ub*sQ`)1P=UPIpl&eJTtW!?64ftJ-SAEE!%LT&M@v&!0HjivCPC9tF(AnH#eEb5`!SOl!bs6?46`r)3U+NZWQ6uU`h3-yNs5UB{ zPN7q8R-;0_Td2178@0k_#3Hu#8-+@@&}r>Pg}qk2$)mv1>cj6lW_{lg_I>S|!|zXB zvS~-NHtlFu(~f4RF4@KB7c%2)PArQEWV7S=&zerTx~h&`U6t_2Oy-=l{}XwB21$eV z&DAH54kwRZwN-zTi*k{KbM-XCnm79#S#BjhQ4+S!L^rPG*k%8ZS zP85~XQd;hXG4w0PdOkfgnuq%*pTZy9a0ZVzFct8T;=`^J_pzSPf2Sd6zdNLPp%|2& zOX)n6bD9+%{uR~mcTu`5r6h#@rw$PXjg*wdNRLxkMMe#v}aI7jyZ#>f{H?Tav2fq~g7HGV3rU|g{9 zkix~H>k-1WJ@IwHc9|7 ze~*>EY$Vc`Hr% zq5N=uBtM$Zu40ovg}`YBP9t!JfinoePipex2#84ok3s${ zA!iXd#{ia``5Xf|1ST1nL?F*V9s&9z@PObC@iEK?o!1}>j|?AlXoD0yPVsS?k28FX z^Ff~ls>I_QA2~iI`N;F}+*Ppn_s{F-ISH@Q`Jr@vIGrC!=SS1|Ogf)U=f~3dQ|bKa zbpA{_Kc3D{r1NLf`E%)fE}frD=kw|Ob9Q_U+4r!0kJ$I9eP`@DYu{t`eagO1+xHp! z9=Goa`#x*m=j=OY-;?&8x9{hsWt@MWcE2P;;`h%(3-tfP2!AEi3&)_HJ_lkmU5tG3CAF)WmV=QrGcSyo4kfUdQBzYb#JG#~{g|g#imG8rTkw z&u7;1PT|GRF;?^E^UvpB$Y01`%zpvH<2;AQc?6zk;CTdIVBiG=#4LpQp1(-QMFhUU zz!xa?=lOV^j~Dp3z{f>CzVJ0r`{|1(9}git>HPV0{`qwNg>?QxI)5>p|ALjb^Y;C` zeZOGew3;~|U9|5nd|l-7XRZG=kp*az%Kght-%YSIa`M4EQh)p;XMxH~&2}YbX=Y$}J zpdjpyoXY`Q`aMn{MEW>}d@Z4iVz3qvRy|3ZB$=0^>z{)GvObZ}X=&6yhgayRcs6Vf zK#byroujx3h@N)DGmIpm*M_AwgkSgFpkCi~dAI9V`q~!b|H=2^<07P=| z3dun$)!YO1|DZ7wSArr*} z8Iw0e=mLx_R~QEZ_q6PQz|t7yVyTc2@53L7&|~3{5c)&G{VWMR{7i6PO+t@eg&zt6 zCno%lWaV%u;m;)esvjDtOQ}WxEdkjY0NsZ_@@PkgZUh}#G(dpQ5pw9!K#eW!Ggq1f zSlVYE?dVlk+N-WK39z(RKgggb!FsSsJUBv99K>=ehGLQRiPC(8_P?s+9RA3WW#gaO z_^TA1KZ-?%Ar+lJ>K7e=WM#68l?gi>@lb{kjb(^oV2DWDu*fRHSoxw8Uh%!JCFzrH z6qRaVa*cQRqg*tO&0()s&I04dBR-xJ9TP&%%250_IaF1*F+D3C_uc9o=zfzwALpPBvgBl_>^`>3#qAz zsi9GJ>bdN4=8PND(v+A4EjR%~MXWD7p(7@dHZ?RgAv*C-5{t<=R-k(N6L^B@j$nQX zhf7BR#7jqs0Z+F!;?=JrA-gn9V((<&>-|lNwQxXSE}yFh2OTDlKEpmjB4;Lp%`f~L zf#(`-k<6&X#NYkrbS(eHSjM@VWi@{vyC6f8dy~1zy)@Q>RINpEyF)&IC36b?P`J^( zZw+xcXyDVMkLw{EA*lRc#^aVD9k>6of7}8@Il(I&u879N6=7BR2*Am$<^omz#Y~2M z80&nbPwru3=ID3e0i)X%RKn4f9inE@v{;`6uFL`fYq9o@519t52n#fRBSm~d-#IqKZOcnsFGw@SVWle}Dm43VQ z*$flWb@(q0lu`Qea_|jdTjkOzmWGs~28jVrCPm@(O-g46Q9nLPT_bK`JMj*p*J zswp=ze2_mkH=fN5^ZXBe@rc49eF^}2=LteHSI}+tl@$-xxqJ#vQ}RYmo0uUSL4Z#_ zgVDp?em;dO+3eI1T8hRa0H2*GfHb5c4QkTZ;G;soakUJofS_}77k@l<6?pCm|7#r1 zcCh9r&!X9*xWLJFb!dgCymW%y6=7rK4a_Xg-m`bJ7tRuUgtBX!RC85FZ1)i zFF>~e3g+R2fc{NkKbHTUhWeKbJXVC(Av`sL8lOIavn+S7xP65; z)CJ!|Q)38#fny|;d9mLvhROd-2L10@Fk6UxG4p&tb+QGy4EIoj%6P4tck(kz94(aEvCot(=i8#+PqJ%y3Q-aF$8TEtw02}dR` zPF!O`33b>+=2UhR8Z`^Oh5ix^c?z8}d4%~23JOyk?HU~YxkxqrAZmB&t>#Ll7R?`c zb^S)lyb>gry6skTd#PD%AMAC3?h#*2;aAjA&T^|-Y21aXkJ|Hn3+6DfVY73WmMr0rGg_N0GXzd-e>)Sis!hi8Qg~Ih~*KXnK>nZc&Sfwwg;%tC0+rjh%MuNyqI;uKtVvaGBW5T*luI-yJeP ze0j*MmljJuO#j`=zxTuCZ~k`u_4GIYhwq#v&f-@euI)w5Qft3mjUKXbjrt}?xpnQK zWyZr!yZX>_>0xX0*B-88cNt^Q!LIDpz`ZxV$z$~T?;8vkTrBy%7UPu{TJ6O~W2I7W zn%xeDSQK5UHSqOW{QH~NOyQdn`nQk&FLEHo!)OMl&kmE+Q-m?n2Ed7T7k?joG-S?s zQ9^hI&y#EW>|MwtKp+3^4N|L`oYjui|Wf#Q~seGlVJc@O_B zB9cO>ycTyGmxFlaNH18m1npJBTpLK`$;FPGV2m#_3C8aY@1f8XXyRo&UTfMOP|~vC zTtmC{zZqOv0uOKn>MO{*AQvim;g46r@M9RJ_qv{5FVs&B>JLN}K#_hzL%#}gk|UVL z+yYlpF@1}uG5o=5dr3=LtY6?%I@n)fz6Z$XuK|(`*Kncl7XJ8VyKb2?sE3@?OKQ9- z*+5_EReo|bEdL5FbMc}c`yak5v|cYI^CzD8TLlNg*=<~y!~vB7u!8v=D4PO4bwKVy z^O|o;{cAQKdxiD89%hW(KAsM3FE8@*`+E9A!JhiwdoQQ`~MvW{$Ijj*PZ|X literal 0 HcmV?d00001 diff --git a/NzbDrone.Core/Libraries/TvdbLib.pdb b/NzbDrone.Core/Libraries/TvdbLib.pdb new file mode 100644 index 0000000000000000000000000000000000000000..f03763a1e83eaa58a485770c4eb95207dd717ac2 GIT binary patch literal 529920 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 Bvz7n= literal 0 HcmV?d00001 diff --git a/NzbDrone.Core/Libraries/log4net.dll b/NzbDrone.Core/Libraries/log4net.dll new file mode 100644 index 0000000000000000000000000000000000000000..ffc57e11254ad9530867b35d15aaf38eb4747d8d GIT binary patch literal 270336 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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/NzbDrone.Core/Main.cs b/NzbDrone.Core/Main.cs new file mode 100644 index 000000000..1580612f5 --- /dev/null +++ b/NzbDrone.Core/Main.cs @@ -0,0 +1,34 @@ +using System; +using log4net; +using Ninject; +using NzbDrone.Core.Controllers; +using SubSonic.DataProviders; +using SubSonic.Repository; + +namespace NzbDrone.Core +{ + public static class Main + { + + public static void BindKernel(IKernel kernel) + { + var provider = ProviderFactory.GetProvider("Data Source=filename;Version=3;", "System.Data.SQLite"); + + + kernel.Bind().To(); + kernel.Bind().To(); + kernel.Bind().To(); + kernel.Bind().To(); + kernel.Bind().ToMethod(c => LogManager.GetLogger("logger-name")); + kernel.Bind().ToMethod(c => new SimpleRepository(provider, SimpleRepositoryOptions.RunMigrations)); + } + + + public static String AppPath + { + get { throw new ApplicationException(); } + + } + + } +} diff --git a/NzbDrone.Core/NzbDrone.Core.csproj b/NzbDrone.Core/NzbDrone.Core.csproj new file mode 100644 index 000000000..9182f7709 --- /dev/null +++ b/NzbDrone.Core/NzbDrone.Core.csproj @@ -0,0 +1,205 @@ + + + + Debug + x86 + 8.0.30703 + 2.0 + {FF5EE3B6-913B-47CE-9CEB-11C51B4E1205} + Library + Properties + NzbDrone.Core + NzbDrone.Core + v3.5 + + + 512 + publish\ + true + Disk + false + Foreground + 7 + Days + false + false + true + 0 + 1.0.0.%2a + false + false + true + + + x86 + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + x86 + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + true + bin\x64\Debug\ + DEBUG;TRACE + full + x64 + bin\Debug\SABSync.exe.CodeAnalysisLog.xml + true + GlobalSuppressions.cs + prompt + MinimumRecommendedRules.ruleset + ;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\\Rule Sets + false + ;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\FxCop\\Rules + false + + + bin\x64\Release\ + TRACE + true + pdbonly + x64 + bin\Release\SABSync.exe.CodeAnalysisLog.xml + true + GlobalSuppressions.cs + prompt + MinimumRecommendedRules.ruleset + ;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\\Rule Sets + false + ;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\FxCop\\Rules + false + false + + + true + bin\Debug\ + DEBUG;TRACE + full + AnyCPU + bin\Debug\SABSync.exe.CodeAnalysisLog.xml + true + GlobalSuppressions.cs + prompt + MinimumRecommendedRules.ruleset + ;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\\Rule Sets + ;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\FxCop\\Rules + false + + + bin\Release\ + TRACE + true + pdbonly + AnyCPU + bin\Release\SABSync.exe.CodeAnalysisLog.xml + true + GlobalSuppressions.cs + prompt + MinimumRecommendedRules.ruleset + ;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\\Rule Sets + false + ;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\FxCop\\Rules + false + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + False + Microsoft .NET Framework 4 Client Profile %28x86 and x64%29 + true + + + False + .NET Framework 3.5 SP1 Client Profile + false + + + False + .NET Framework 3.5 SP1 + false + + + False + Windows Installer 3.1 + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/NzbDrone.Core/Properties/AssemblyInfo.cs b/NzbDrone.Core/Properties/AssemblyInfo.cs new file mode 100644 index 000000000..174d03f2e --- /dev/null +++ b/NzbDrone.Core/Properties/AssemblyInfo.cs @@ -0,0 +1,57 @@ +// /* +// * Sab NzbDrone: Automatic TV Sync for SAB http://sabscripts.googlecode.com +// * +// * +// * 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 3 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, see . +// * +// */ +using System.Reflection; +using System.Runtime.InteropServices; + +// 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("NzbDrone")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("sabscripts.googlecode.com")] +[assembly: AssemblyProduct("NzbDrone")] +[assembly: AssemblyCopyright("GNU General Public v3")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. + +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM + +[assembly: Guid("a7b979bf-7f4e-4ccf-b2c6-fa8d3dfb650e")] + +// 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 Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] + +[assembly: AssemblyVersion("0.9.8.4")] +[assembly: AssemblyFileVersion("0.9.8.4")] \ No newline at end of file diff --git a/NzbDrone.Core/Repository/Config.cs b/NzbDrone.Core/Repository/Config.cs new file mode 100644 index 000000000..6f676429b --- /dev/null +++ b/NzbDrone.Core/Repository/Config.cs @@ -0,0 +1,22 @@ +using SubSonic.SqlGeneration.Schema; + +namespace NzbDrone.Core.Repository +{ + public class Config + { + [SubSonicPrimaryKey] + public string Key + { + get; + set; + } + + public string Value + { + get; + set; + } + + + } +} diff --git a/NzbDrone.Core/Repository/Series.cs b/NzbDrone.Core/Repository/Series.cs new file mode 100644 index 000000000..689e11cb9 --- /dev/null +++ b/NzbDrone.Core/Repository/Series.cs @@ -0,0 +1,55 @@ +using System; + +namespace NzbDrone.Core.Repository +{ + public class Series + { + public int Id + { + get; + set; + } + + public string SeriesName + { + get; + set; + } + + public string Status + { + get; + set; + } + + public string Overview + { + get; + set; + } + + public DayOfWeek? AirsDayOfWeek + { + get; + set; + } + + public string AirTimes + { + get; + set; + } + + public string Language + { + get; + set; + } + + public string Path + { + get; + set; + } + } +} diff --git a/NzbDrone.Core/app.config b/NzbDrone.Core/app.config new file mode 100644 index 000000000..e59af44de --- /dev/null +++ b/NzbDrone.Core/app.config @@ -0,0 +1,3 @@ + + + diff --git a/NzbDrone.Web.Test/App.config b/NzbDrone.Web.Test/App.config new file mode 100644 index 000000000..f00e873ec --- /dev/null +++ b/NzbDrone.Web.Test/App.config @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/NzbDrone.Web.Test/Controllers/AccountControllerTest.cs b/NzbDrone.Web.Test/Controllers/AccountControllerTest.cs new file mode 100644 index 000000000..bf7e24da3 --- /dev/null +++ b/NzbDrone.Web.Test/Controllers/AccountControllerTest.cs @@ -0,0 +1,402 @@ +using System; +using System.Security.Principal; +using System.Web; +using System.Web.Mvc; +using System.Web.Routing; +using System.Web.Security; +using Microsoft.VisualStudio.TestTools.UnitTesting; +using NzbDrone.Web; +using NzbDrone.Web.Controllers; +using NzbDrone.Web.Models; + +namespace NzbDrone.Web.Tests.Controllers +{ + + [TestClass] + public class AccountControllerTest + { + + [TestMethod] + public void ChangePassword_Get_ReturnsView() + { + // Arrange + AccountController controller = GetAccountController(); + + // Act + ActionResult result = controller.ChangePassword(); + + // Assert + Assert.IsInstanceOfType(result, typeof(ViewResult)); + Assert.AreEqual(10, ((ViewResult)result).ViewData["PasswordLength"]); + } + + [TestMethod] + public void ChangePassword_Post_ReturnsRedirectOnSuccess() + { + // Arrange + AccountController controller = GetAccountController(); + ChangePasswordModel model = new ChangePasswordModel() + { + OldPassword = "goodOldPassword", + NewPassword = "goodNewPassword", + ConfirmPassword = "goodNewPassword" + }; + + // Act + ActionResult result = controller.ChangePassword(model); + + // Assert + Assert.IsInstanceOfType(result, typeof(RedirectToRouteResult)); + RedirectToRouteResult redirectResult = (RedirectToRouteResult)result; + Assert.AreEqual("ChangePasswordSuccess", redirectResult.RouteValues["action"]); + } + + [TestMethod] + public void ChangePassword_Post_ReturnsViewIfChangePasswordFails() + { + // Arrange + AccountController controller = GetAccountController(); + ChangePasswordModel model = new ChangePasswordModel() + { + OldPassword = "goodOldPassword", + NewPassword = "badNewPassword", + ConfirmPassword = "badNewPassword" + }; + + // Act + ActionResult result = controller.ChangePassword(model); + + // Assert + Assert.IsInstanceOfType(result, typeof(ViewResult)); + ViewResult viewResult = (ViewResult)result; + Assert.AreEqual(model, viewResult.ViewData.Model); + Assert.AreEqual("The current password is incorrect or the new password is invalid.", controller.ModelState[""].Errors[0].ErrorMessage); + Assert.AreEqual(10, viewResult.ViewData["PasswordLength"]); + } + + [TestMethod] + public void ChangePassword_Post_ReturnsViewIfModelStateIsInvalid() + { + // Arrange + AccountController controller = GetAccountController(); + ChangePasswordModel model = new ChangePasswordModel() + { + OldPassword = "goodOldPassword", + NewPassword = "goodNewPassword", + ConfirmPassword = "goodNewPassword" + }; + controller.ModelState.AddModelError("", "Dummy error message."); + + // Act + ActionResult result = controller.ChangePassword(model); + + // Assert + Assert.IsInstanceOfType(result, typeof(ViewResult)); + ViewResult viewResult = (ViewResult)result; + Assert.AreEqual(model, viewResult.ViewData.Model); + Assert.AreEqual(10, viewResult.ViewData["PasswordLength"]); + } + + [TestMethod] + public void ChangePasswordSuccess_ReturnsView() + { + // Arrange + AccountController controller = GetAccountController(); + + // Act + ActionResult result = controller.ChangePasswordSuccess(); + + // Assert + Assert.IsInstanceOfType(result, typeof(ViewResult)); + } + + [TestMethod] + public void LogOff_LogsOutAndRedirects() + { + // Arrange + AccountController controller = GetAccountController(); + + // Act + ActionResult result = controller.LogOff(); + + // Assert + Assert.IsInstanceOfType(result, typeof(RedirectToRouteResult)); + RedirectToRouteResult redirectResult = (RedirectToRouteResult)result; + Assert.AreEqual("Home", redirectResult.RouteValues["controller"]); + Assert.AreEqual("Index", redirectResult.RouteValues["action"]); + Assert.IsTrue(((MockFormsAuthenticationService)controller.FormsService).SignOut_WasCalled); + } + + [TestMethod] + public void LogOn_Get_ReturnsView() + { + // Arrange + AccountController controller = GetAccountController(); + + // Act + ActionResult result = controller.LogOn(); + + // Assert + Assert.IsInstanceOfType(result, typeof(ViewResult)); + } + + [TestMethod] + public void LogOn_Post_ReturnsRedirectOnSuccess_WithoutReturnUrl() + { + // Arrange + AccountController controller = GetAccountController(); + LogOnModel model = new LogOnModel() + { + UserName = "someUser", + Password = "goodPassword", + RememberMe = false + }; + + // Act + ActionResult result = controller.LogOn(model, null); + + // Assert + Assert.IsInstanceOfType(result, typeof(RedirectToRouteResult)); + RedirectToRouteResult redirectResult = (RedirectToRouteResult)result; + Assert.AreEqual("Home", redirectResult.RouteValues["controller"]); + Assert.AreEqual("Index", redirectResult.RouteValues["action"]); + Assert.IsTrue(((MockFormsAuthenticationService)controller.FormsService).SignIn_WasCalled); + } + + [TestMethod] + public void LogOn_Post_ReturnsRedirectOnSuccess_WithReturnUrl() + { + // Arrange + AccountController controller = GetAccountController(); + LogOnModel model = new LogOnModel() + { + UserName = "someUser", + Password = "goodPassword", + RememberMe = false + }; + + // Act + ActionResult result = controller.LogOn(model, "/someUrl"); + + // Assert + Assert.IsInstanceOfType(result, typeof(RedirectResult)); + RedirectResult redirectResult = (RedirectResult)result; + Assert.AreEqual("/someUrl", redirectResult.Url); + Assert.IsTrue(((MockFormsAuthenticationService)controller.FormsService).SignIn_WasCalled); + } + + [TestMethod] + public void LogOn_Post_ReturnsViewIfModelStateIsInvalid() + { + // Arrange + AccountController controller = GetAccountController(); + LogOnModel model = new LogOnModel() + { + UserName = "someUser", + Password = "goodPassword", + RememberMe = false + }; + controller.ModelState.AddModelError("", "Dummy error message."); + + // Act + ActionResult result = controller.LogOn(model, null); + + // Assert + Assert.IsInstanceOfType(result, typeof(ViewResult)); + ViewResult viewResult = (ViewResult)result; + Assert.AreEqual(model, viewResult.ViewData.Model); + } + + [TestMethod] + public void LogOn_Post_ReturnsViewIfValidateUserFails() + { + // Arrange + AccountController controller = GetAccountController(); + LogOnModel model = new LogOnModel() + { + UserName = "someUser", + Password = "badPassword", + RememberMe = false + }; + + // Act + ActionResult result = controller.LogOn(model, null); + + // Assert + Assert.IsInstanceOfType(result, typeof(ViewResult)); + ViewResult viewResult = (ViewResult)result; + Assert.AreEqual(model, viewResult.ViewData.Model); + Assert.AreEqual("The user name or password provided is incorrect.", controller.ModelState[""].Errors[0].ErrorMessage); + } + + [TestMethod] + public void Register_Get_ReturnsView() + { + // Arrange + AccountController controller = GetAccountController(); + + // Act + ActionResult result = controller.Register(); + + // Assert + Assert.IsInstanceOfType(result, typeof(ViewResult)); + Assert.AreEqual(10, ((ViewResult)result).ViewData["PasswordLength"]); + } + + [TestMethod] + public void Register_Post_ReturnsRedirectOnSuccess() + { + // Arrange + AccountController controller = GetAccountController(); + RegisterModel model = new RegisterModel() + { + UserName = "someUser", + Email = "goodEmail", + Password = "goodPassword", + ConfirmPassword = "goodPassword" + }; + + // Act + ActionResult result = controller.Register(model); + + // Assert + Assert.IsInstanceOfType(result, typeof(RedirectToRouteResult)); + RedirectToRouteResult redirectResult = (RedirectToRouteResult)result; + Assert.AreEqual("Home", redirectResult.RouteValues["controller"]); + Assert.AreEqual("Index", redirectResult.RouteValues["action"]); + } + + [TestMethod] + public void Register_Post_ReturnsViewIfRegistrationFails() + { + // Arrange + AccountController controller = GetAccountController(); + RegisterModel model = new RegisterModel() + { + UserName = "duplicateUser", + Email = "goodEmail", + Password = "goodPassword", + ConfirmPassword = "goodPassword" + }; + + // Act + ActionResult result = controller.Register(model); + + // Assert + Assert.IsInstanceOfType(result, typeof(ViewResult)); + ViewResult viewResult = (ViewResult)result; + Assert.AreEqual(model, viewResult.ViewData.Model); + Assert.AreEqual("Username already exists. Please enter a different user name.", controller.ModelState[""].Errors[0].ErrorMessage); + Assert.AreEqual(10, viewResult.ViewData["PasswordLength"]); + } + + [TestMethod] + public void Register_Post_ReturnsViewIfModelStateIsInvalid() + { + // Arrange + AccountController controller = GetAccountController(); + RegisterModel model = new RegisterModel() + { + UserName = "someUser", + Email = "goodEmail", + Password = "goodPassword", + ConfirmPassword = "goodPassword" + }; + controller.ModelState.AddModelError("", "Dummy error message."); + + // Act + ActionResult result = controller.Register(model); + + // Assert + Assert.IsInstanceOfType(result, typeof(ViewResult)); + ViewResult viewResult = (ViewResult)result; + Assert.AreEqual(model, viewResult.ViewData.Model); + Assert.AreEqual(10, viewResult.ViewData["PasswordLength"]); + } + + private static AccountController GetAccountController() + { + AccountController controller = new AccountController() + { + FormsService = new MockFormsAuthenticationService(), + MembershipService = new MockMembershipService() + }; + controller.ControllerContext = new ControllerContext() + { + Controller = controller, + RequestContext = new RequestContext(new MockHttpContext(), new RouteData()) + }; + return controller; + } + + private class MockFormsAuthenticationService : IFormsAuthenticationService + { + public bool SignIn_WasCalled; + public bool SignOut_WasCalled; + + public void SignIn(string userName, bool createPersistentCookie) + { + // verify that the arguments are what we expected + Assert.AreEqual("someUser", userName); + Assert.IsFalse(createPersistentCookie); + + SignIn_WasCalled = true; + } + + public void SignOut() + { + SignOut_WasCalled = true; + } + } + + private class MockHttpContext : HttpContextBase + { + private readonly IPrincipal _user = new GenericPrincipal(new GenericIdentity("someUser"), null /* roles */); + + public override IPrincipal User + { + get + { + return _user; + } + set + { + base.User = value; + } + } + } + + private class MockMembershipService : IMembershipService + { + public int MinPasswordLength + { + get { return 10; } + } + + public bool ValidateUser(string userName, string password) + { + return (userName == "someUser" && password == "goodPassword"); + } + + public MembershipCreateStatus CreateUser(string userName, string password, string email) + { + if (userName == "duplicateUser") + { + return MembershipCreateStatus.DuplicateUserName; + } + + // verify that values are what we expected + Assert.AreEqual("goodPassword", password); + Assert.AreEqual("goodEmail", email); + + return MembershipCreateStatus.Success; + } + + public bool ChangePassword(string userName, string oldPassword, string newPassword) + { + return (userName == "someUser" && oldPassword == "goodOldPassword" && newPassword == "goodNewPassword"); + } + } + + } +} diff --git a/NzbDrone.Web.Test/Controllers/HomeControllerTest.cs b/NzbDrone.Web.Test/Controllers/HomeControllerTest.cs new file mode 100644 index 000000000..5c7cf67e4 --- /dev/null +++ b/NzbDrone.Web.Test/Controllers/HomeControllerTest.cs @@ -0,0 +1,42 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Web.Mvc; +using Microsoft.VisualStudio.TestTools.UnitTesting; +using NzbDrone.Web; +using NzbDrone.Web.Controllers; + +namespace NzbDrone.Web.Tests.Controllers +{ + [TestClass] + public class HomeControllerTest + { + [TestMethod] + public void Index() + { + // Arrange + HomeController controller = new HomeController(); + + // Act + ViewResult result = controller.Index() as ViewResult; + + // Assert + ViewDataDictionary viewData = result.ViewData; + Assert.AreEqual("Welcome to ASP.NET MVC!", viewData["Message"]); + } + + [TestMethod] + public void About() + { + // Arrange + HomeController controller = new HomeController(); + + // Act + ViewResult result = controller.About() as ViewResult; + + // Assert + Assert.IsNotNull(result); + } + } +} diff --git a/NzbDrone.Web.Test/NzbDrone.Web.Tests.csproj b/NzbDrone.Web.Test/NzbDrone.Web.Tests.csproj new file mode 100644 index 000000000..52baaa9f2 --- /dev/null +++ b/NzbDrone.Web.Test/NzbDrone.Web.Tests.csproj @@ -0,0 +1,78 @@ + + + + Debug + AnyCPU + + + 2.0 + {99CDD5DC-698F-4624-B431-2D6381CE3A15} + Library + Properties + NzbDrone.Web.Tests + NzbDrone.Web.Tests + v4.0 + 512 + {3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + 3.5 + + + + 3.5 + + + + + + 3.5 + + + + + + + + + + + + + + + + + {43BD3BBD-1531-4D8F-9C08-E1CD544AB2CD} + NzbDrone.Web + + + + + \ No newline at end of file diff --git a/NzbDrone.Web.Test/Properties/AssemblyInfo.cs b/NzbDrone.Web.Test/Properties/AssemblyInfo.cs new file mode 100644 index 000000000..d66b2f586 --- /dev/null +++ b/NzbDrone.Web.Test/Properties/AssemblyInfo.cs @@ -0,0 +1,35 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// 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("NzbDrone.Web.Tests")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("Microsoft")] +[assembly: AssemblyProduct("NzbDrone.Web.Tests")] +[assembly: AssemblyCopyright("Copyright © Microsoft 2010")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("c9fcd1a2-85d4-4224-863f-83afe37490d0")] + +// 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.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/NzbDrone.Web/Bin/NLog.dll b/NzbDrone.Web/Bin/NLog.dll new file mode 100644 index 0000000000000000000000000000000000000000..cd8e7d651d2efd4545bbff36841b48709ebc354f GIT binary patch literal 300544 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 literal 0 HcmV?d00001 diff --git a/NzbDrone.Web/Bin/NLog.pdb b/NzbDrone.Web/Bin/NLog.pdb new file mode 100644 index 0000000000000000000000000000000000000000..ebfc192d50a34898a1a26c8384e0ca67ab5183b8 GIT binary patch literal 736768 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 z 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%0ADXzsy0NsX{T8P17s*)D>UO=Yt9C)338Vrn~l- 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 literal 0 HcmV?d00001 diff --git a/NzbDrone.Web/Bin/NLog.xml b/NzbDrone.Web/Bin/NLog.xml new file mode 100644 index 000000000..4f7c291c9 --- /dev/null +++ b/NzbDrone.Web/Bin/NLog.xml @@ -0,0 +1,11108 @@ + + + + NLog + + + +

+ Asynchronous continuation delegate - function invoked at the end of asynchronous + processing. + + Exception during asynchronous processing or null if no exception + was thrown. + + + + Helpers for asynchronous operations. + + + + + Iterates over all items in the given collection and runs the specified action + in sequence (each action executes only after the preceding one has completed without an error). + + Type of each item. + The items to iterate. + The asynchronous continuation to invoke once all items + have been iterated. + The action to invoke for each item. + + + + Repeats the specified asynchronous action multiple times and invokes asynchronous continuation at the end. + + The repeat count. + The asynchronous continuation to invoke at the end. + The action to invoke. + + + + Modifies the continuation by pre-pending given action to execute just before it. + + The async continuation. + The action to pre-pend. + Continuation which will execute the given action before forwarding to the actual continuation. + + + + Attaches a timeout to a continuation which will invoke the continuation when the specified + timeout has elapsed. + + The asynchronous continuation. + The timeout. + Wrapped continuation. + + + + Iterates over all items in the given collection and runs the specified action + in parallel (each action executes on a thread from thread pool). + + Type of each item. + The items to iterate. + The asynchronous continuation to invoke once all items + have been iterated. + The action to invoke for each item. + + + + Runs the specified asynchronous action synchronously (blocks until the continuation has + been invoked). + + The action. + + Using this method is not recommended because it will block the calling thread. + + + + + Wraps the continuation with a guard which will only make sure that the continuation function + is invoked only once. + + The asynchronous continuation. + Wrapped asynchronous continuation. + + + + Gets the combined exception from all exceptions in the list. + + The exceptions. + Combined exception or null if no exception was thrown. + + + + Asynchronous action. + + Continuation to be invoked at the end of action. + + + + Asynchronous action with one argument. + + Type of the argument. + Argument to the action. + Continuation to be invoked at the end of action. + + + + Represents the logging event with asynchronous continuation. + + + + + Initializes a new instance of the struct. + + The log event. + The continuation. + + + + Implements the operator ==. + + The event info1. + The event info2. + The result of the operator. + + + + Implements the operator ==. + + The event info1. + The event info2. + The result of the operator. + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + + A value of true if the specified is equal to this instance; otherwise, false. + + + + + Returns a hash code for this instance. + + + A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. + + + + + Gets the log event. + + + + + Gets the continuation. + + + + + NLog internal logger. + + + + + Initializes static members of the InternalLogger class. + + + + + Logs the specified message at the specified level. + + Log level. + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message at the specified level. + + Log level. + Log message. + + + + Logs the specified message at the Trace level. + + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message at the Trace level. + + Log message. + + + + Logs the specified message at the Debug level. + + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message at the Debug level. + + Log message. + + + + Logs the specified message at the Info level. + + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message at the Info level. + + Log message. + + + + Logs the specified message at the Warn level. + + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message at the Warn level. + + Log message. + + + + Logs the specified message at the Error level. + + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message at the Error level. + + Log message. + + + + Logs the specified message at the Fatal level. + + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message at the Fatal level. + + Log message. + + + + Gets or sets the internal log level. + + + + + Gets or sets a value indicating whether internal messages should be written to the console output stream. + + + + + Gets or sets a value indicating whether internal messages should be written to the console error stream. + + + + + Gets or sets the name of the internal log file. + + A value of value disables internal logging to a file. + + + + Gets or sets the text writer that will receive internal logs. + + + + + Gets or sets a value indicating whether timestamp should be included in internal log output. + + + + + Gets a value indicating whether internal log includes Trace messages. + + + + + Gets a value indicating whether internal log includes Debug messages. + + + + + Gets a value indicating whether internal log includes Info messages. + + + + + Gets a value indicating whether internal log includes Warn messages. + + + + + Gets a value indicating whether internal log includes Error messages. + + + + + Gets a value indicating whether internal log includes Fatal messages. + + + + + A cyclic buffer of object. + + + + + Initializes a new instance of the class. + + Buffer size. + Whether buffer should grow as it becomes full. + The maximum number of items that the buffer can grow to. + + + + Adds the specified log event to the buffer. + + Log event. + The number of items in the buffer. + + + + Gets the array of events accumulated in the buffer and clears the buffer as one atomic operation. + + Events in the buffer. + + + + Gets the number of items in the array. + + + + + Condition and expression. + + + + + Base class for representing nodes in condition expression trees. + + + + + Converts condition text to a condition expression tree. + + Condition text to be converted. + Condition expression tree. + + + + Evaluates the expression. + + Evaluation context. + Expression result. + + + + Returns a string representation of the expression. + + + A that represents the condition expression. + + + + + Evaluates the expression. + + Evaluation context. + Expression result. + + + + Initializes a new instance of the class. + + Left hand side of the AND expression. + Right hand side of the AND expression. + + + + Returns a string representation of this expression. + + A concatenated '(Left) and (Right)' string. + + + + Evaluates the expression by evaluating and recursively. + + Evaluation context. + The value of the conjunction operator. + + + + Gets the left hand side of the AND expression. + + + + + Gets the right hand side of the AND expression. + + + + + Exception during evaluation of condition expression. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The message. + + + + Initializes a new instance of the class. + + The message. + The inner exception. + + + + Condition layout expression (represented by a string literal + with embedded ${}). + + + + + Initializes a new instance of the class. + + The layout. + + + + Returns a string representation of this expression. + + String literal in single quotes. + + + + Evaluates the expression by calculating the value + of the layout in the specified evaluation context. + + Evaluation context. + The value of the layout. + + + + Gets the layout. + + The layout. + + + + Condition level expression (represented by the level keyword). + + + + + Returns a string representation of the expression. + + The 'level' string. + + + + Evaluates to the current log level. + + Evaluation context. Ignored. + The object representing current log level. + + + + Condition literal expression (numeric, LogLevel.XXX, true or false). + + + + + Initializes a new instance of the class. + + Literal value. + + + + Returns a string representation of the expression. + + The literal value. + + + + Evaluates the expression. + + Evaluation context. + The literal value as passed in the constructor. + + + + Gets the literal value. + + The literal value. + + + + Condition logger name expression (represented by the logger keyword). + + + + + Returns a string representation of this expression. + + A logger string. + + + + Evaluates to the logger name. + + Evaluation context. + The logger name. + + + + Condition message expression (represented by the message keyword). + + + + + Returns a string representation of this expression. + + The 'message' string. + + + + Evaluates to the logger message. + + Evaluation context. + The logger message. + + + + Marks class as a log event Condition and assigns a name to it. + + + + + Attaches a simple name to an item (such as , + , , etc.). + + + + + Initializes a new instance of the class. + + The name of the item. + + + + Gets the name of the item. + + The name of the item. + + + + Initializes a new instance of the class. + + Condition method name. + + + + Condition method invocation expression (represented by method(p1,p2,p3) syntax). + + + + + Initializes a new instance of the class. + + Name of the condition method. + of the condition method. + The method parameters. + + + + Returns a string representation of the expression. + + + A that represents the condition expression. + + + + + Evaluates the expression. + + Evaluation context. + Expression result. + + + + Gets the method info. + + + + + Gets the method parameters. + + The method parameters. + + + + A bunch of utility methods (mostly predicates) which can be used in + condition expressions. Parially inspired by XPath 1.0. + + + + + Compares two values for equality. + + The first value. + The second value. + true when two objects are equal, false otherwise. + + + + Gets or sets a value indicating whether the second string is a substring of the first one. + + The first string. + The second string. + true when the second string is a substring of the first string, false otherwise. + + + + Gets or sets a value indicating whether the second string is a prefix of the first one. + + The first string. + The second string. + true when the second string is a prefix of the first string, false otherwise. + + + + Gets or sets a value indicating whether the second string is a suffix of the first one. + + The first string. + The second string. + true when the second string is a prefix of the first string, false otherwise. + + + + Returns the length of a string. + + A string whose lengths is to be evaluated. + The length of the string. + + + + Marks the class as containing condition methods. + + + + + Condition not expression. + + + + + Initializes a new instance of the class. + + The expression. + + + + Returns a string representation of the expression. + + + A that represents the condition expression. + + + + + Evaluates the expression. + + Evaluation context. + Expression result. + + + + Gets the expression to be negated. + + The expression. + + + + Condition or expression. + + + + + Initializes a new instance of the class. + + Left hand side of the OR expression. + Right hand side of the OR expression. + + + + Returns a string representation of the expression. + + + A that represents the condition expression. + + + + + Evaluates the expression by evaluating and recursively. + + Evaluation context. + The value of the alternative operator. + + + + Gets the left expression. + + The left expression. + + + + Gets the right expression. + + The right expression. + + + + Exception during parsing of condition expression. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The message. + + + + Initializes a new instance of the class. + + The message. + The inner exception. + + + + Condition parser. Turns a string representation of condition expression + into an expression tree. + + + + + Initializes a new instance of the class. + + The expression text. + Instance of used to resolve references to condition methods and layout renderers. + + + + Parses the specified condition string and turns it into + tree. + + The expression to be parsed. + The root of the expression syntax tree which can be used to get the value of the condition in a specified context. + + + + Parses the specified condition string and turns it into + tree. + + The expression to be parsed. + Instance of used to resolve references to condition methods and layout renderers. + The root of the expression syntax tree which can be used to get the value of the condition in a specified context. + + + + Condition relational (==, !=, <, <=, + > or >=) expression. + + + + + Initializes a new instance of the class. + + The left expression. + The right expression. + The relational operator. + + + + Returns a string representation of the expression. + + + A that represents the condition expression. + + + + + Evaluates the expression. + + Evaluation context. + Expression result. + + + + Compares the specified values using specified relational operator. + + The first value. + The second value. + The relational operator. + Result of the given relational operator. + + + + Gets the left expression. + + The left expression. + + + + Gets the right expression. + + The right expression. + + + + Gets the relational operator. + + The operator. + + + + Relational operators used in conditions. + + + + + Equality (==). + + + + + Inequality (!=). + + + + + Less than (<). + + + + + Greater than (>). + + + + + Less than or equal (<=). + + + + + Greater than or equal (>=). + + + + + Hand-written tokenizer for conditions. + + + + + Initializes a new instance of the class. + + The expression text. + + + + Asserts current token type and advances to the next token. + + Expected token type. + If token type doesn't match, an exception is thrown. + + + + Asserts that current token is a keyword and returns its value and advances to the next token. + + Keyword value. + + + + Gets or sets a value indicating whether current keyword is equal to the specified value. + + The keyword. + + A value of true if current keyword is equal to the specified value; otherwise, false. + + + + + Gets or sets a value indicating whether the tokenizer has reached the end of the token stream. + + + A value of true if the tokenizer has reached the end of the token stream; otherwise, false. + + + + + Gets or sets a value indicating whether current token is a number. + + + A value of true if current token is a number; otherwise, false. + + + + + Gets or sets a value indicating whether the specified token is of specified type. + + The token type. + + A value of true if current token is of specified type; otherwise, false. + + + + + Gets the next token and sets and properties. + + + + + Gets the token position. + + The token position. + + + + Gets the type of the token. + + The type of the token. + + + + Gets the token value. + + The token value. + + + + Gets the value of a string token. + + The string token value. + + + + Mapping between characters and token types for punctuations. + + + + + Initializes a new instance of the CharToTokenType struct. + + The character. + Type of the token. + + + + Token types for condition expressions. + + + + + Marks the class or a member as advanced. Advanced classes and members are hidden by + default in generated documentation. + + + + + Initializes a new instance of the class. + + + + + Identifies that the output of layout or layout render does not change for the lifetime of the current appdomain. + + + + + Used to mark configurable parameters which are arrays. + Specifies the mapping between XML elements and .NET types. + + + + + Initializes a new instance of the class. + + The type of the array item. + The XML element name that represents the item. + + + + Gets the .NET type of the array item. + + + + + Gets the XML element name. + + + + + Provides registration information for named items (targets, layouts, layout renderers, etc.) managed by NLog. + + + + + Initializes static members of the class. + + + + + Initializes a new instance of the class. + + The assemblies to scan for named items. + + + + Registers named items from the assembly. + + The assembly. + + + + Registers named items from the assembly. + + The assembly. + Item name prefix. + + + + Clears the contents of all factories. + + + + + Registers the type. + + The type to register. + The item name prefix. + + + + Gets or sets default singleton instance of . + + + + + Gets the factory. + + The target factory. + + + + Gets the factory. + + The filter factory. + + + + Gets the factory. + + The layout renderer factory. + + + + Gets the factory. + + The layout factory. + + + + Gets the ambient property factory. + + The ambient property factory. + + + + Gets the condition method factory. + + The condition method factory. + + + + Attribute used to mark the default parameters for layout renderers. + + + + + Initializes a new instance of the class. + + + + + Factory for class-based items. + + The base type of each item. + The type of the attribute used to annotate itemss. + + + + Represents a factory of named items (such as targets, layouts, layout renderers, etc.). + + Base type for each item instance. + Item definition type (typically or ). + + + + Registers new item definition. + + Name of the item. + Item definition. + + + + Tries to get registed item definition. + + Name of the item. + Reference to a variable which will store the item definition. + Item definition. + + + + Creates item instance. + + Name of the item. + Newly created item instance. + + + + Tries to create an item instance. + + Name of the item. + The result. + True if instance was created successfully, false otherwise. + + + + Gets a collection of all registered items in the factory. + + Sequence of key/value pairs where each key represents the name + of the item and value is the of + the item. + + + + Provides means to populate factories of named items (such as targets, layouts, layout renderers, etc.). + + + + + Scans the assembly. + + The assembly. + The prefix. + + + + Registers the type. + + The type to register. + The item name prefix. + + + + Clears the contents of the factory. + + + + + Registers a single type definition. + + The item name. + The type of the item. + + + + Tries to get registed item definition. + + Name of the item. + Reference to a variable which will store the item definition. + Item definition. + + + + Tries to create an item instance. + + Name of the item. + The result. + True if instance was created successfully, false otherwise. + + + + Creates an item instance. + + The name of the item. + Created item. + + + + Gets a collection of all registered items in the factory. + + Sequence of key/value pairs where each key represents the name + of the item and value is the of + the item. + + + + Implemented by objects which support installation and uninstallation. + + + + + Performs installation which requires administrative permissions. + + The installation context. + + + + Performs uninstallation which requires administrative permissions. + + The installation context. + + + + Determines whether the item is installed. + + The installation context. + + Value indicating whether the item is installed or null if it is not possible to determine. + + + + + Provides context for install/uninstall operations. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The log output. + + + + Logs the specified trace message. + + The message. + The arguments. + + + + Logs the specified debug message. + + The message. + The arguments. + + + + Logs the specified informational message. + + The message. + The arguments. + + + + Logs the specified warning message. + + The message. + The arguments. + + + + Logs the specified error message. + + The message. + The arguments. + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Creates the log event which can be used to render layouts during installation/uninstallations. + + Log event info object. + + + + Gets or sets the installation log level. + + + + + Gets or sets a value indicating whether to ignore failures during installation. + + + + + Gets the installation parameters. + + + + + Gets or sets the log output. + + + + + Keeps logging configuration and provides simple API + to modify it. + + + + + Initializes a new instance of the class. + + + + + Registers the specified target object under a given name. + + + Name of the target. + + + The target object. + + + + + Finds the target with the specified name. + + + The name of the target to be found. + + + Found target or when the target is not found. + + + + + Called by LogManager when one of the log configuration files changes. + + + A new instance of that represents the updated configuration. + + + + + Removes the specified named target. + + + Name of the target. + + + + + Installs target-specific objects on current system. + + The installation context. + + Installation typically runs with administrative permissions. + + + + + Uninstalls target-specific objects from current system. + + The installation context. + + Uninstallation typically runs with administrative permissions. + + + + + Closes all targets and releases any unmanaged resources. + + + + + Flushes any pending log messages on all appenders. + + The asynchronous continuation. + + + + Validates the configuration. + + + + + Gets a collection of named targets specified in the configuration. + + + A list of named targets. + + + Unnamed targets (such as those wrapped by other targets) are not returned. + + + + + Gets the collection of file names which should be watched for changes by NLog. + + + + + Gets the collection of logging rules. + + + + + Gets all targets. + + + + + Arguments for events. + + + + + Initializes a new instance of the class. + + The old configuration. + The new configuration. + + + + Gets the old configuration. + + The old configuration. + + + + Gets the new configuration. + + The new configuration. + + + + Represents a logging rule. An equivalent of <logger /> configuration element. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Logger name pattern. It may include the '*' wildcard at the beginning, at the end or at both ends. + Minimum log level needed to trigger this rule. + Target to be written to when the rule matches. + + + + Initializes a new instance of the class. + + Logger name pattern. It may include the '*' wildcard at the beginning, at the end or at both ends. + Target to be written to when the rule matches. + By default no logging levels are defined. You should call and to set them. + + + + Enables logging for a particular level. + + Level to be enabled. + + + + Disables logging for a particular level. + + Level to be disabled. + + + + Returns a string representation of . Used for debugging. + + + A that represents the current . + + + + + Checks whether te particular log level is enabled for this rule. + + Level to be checked. + A value of when the log level is enabled, otherwise. + + + + Checks whether given name matches the logger name pattern. + + String to be matched. + A value of when the name matches, otherwise. + + + + Gets a collection of targets that should be written to when this rule matches. + + + + + Gets a collection of child rules to be evaluated when this rule matches. + + + + + Gets a collection of filters to be checked before writing to targets. + + + + + Gets or sets a value indicating whether to quit processing any further rule when this one matches. + + + + + Gets or sets logger name pattern. + + + Logger name pattern. It may include the '*' wildcard at the beginning, at the end or at both ends but not anywhere else. + + + + + Gets the collection of log levels enabled by this rule. + + + + + Factory for locating methods. + + The type of the class marker attribute. + The type of the method marker attribute. + + + + Scans the assembly for classes marked with + and methods marked with and adds them + to the factory. + + The assembly. + The prefix to use for names. + + + + Registers the type. + + The type to register. + The item name prefix. + + + + Clears contents of the factory. + + + + + Registers the definition of a single method. + + The method name. + The method info. + + + + Tries to retrieve method by name. + + The method name. + The result. + A value of true if the method was found, false otherwise. + + + + Retrieves method by name. + + Method name. + MethodInfo object. + + + + Tries to get method definition. + + The method . + The result. + A value of true if the method was found, false otherwise. + + + + Gets a collection of all registered items in the factory. + + + Sequence of key/value pairs where each key represents the name + of the item and value is the of + the item. + + + + + Marks the object as configuration item for NLog. + + + + + Initializes a new instance of the class. + + + + + Represents simple XML element with case-insensitive attribute semantics. + + + + + Initializes a new instance of the class. + + The input URI. + + + + Initializes a new instance of the class. + + The reader to initialize element from. + + + + Prevents a default instance of the class from being created. + + + + + Returns children elements with the specified element name. + + Name of the element. + Children elements with the specified element name. + + + + Gets the required attribute. + + Name of the attribute. + Attribute value. + Throws if the attribute is not specified. + + + + Gets the optional boolean attribute value. + + Name of the attribute. + Default value to return if the attribute is not found. + Boolean attribute value or default. + + + + Gets the optional attribute value. + + Name of the attribute. + The default value. + Value of the attribute or default value. + + + + Asserts that the name of the element is among specified element names. + + The allowed names. + + + + Gets the element name. + + + + + Gets the dictionary of attribute values. + + + + + Gets the collection of child elements. + + + + + Gets the value of the element. + + + + + Attribute used to mark the required parameters for targets, + layout targets and filters. + + + + + Supported operating systems. + + + If you add anything here, make sure to add the appropriate detection + code to + + + + + Any operating system. + + + + + Unix/Linux operating systems. + + + + + Windows CE. + + + + + Desktop versions of Windows (95,98,ME). + + + + + Windows NT, 2000, 2003 and future versions based on NT technology. + + + + + Unknown operating system. + + + + + Provides simple programmatic configuration API used for trivial logging cases. + + + + + Configures NLog for to log to the specified target so that all messages + above and including the level are output. + + The target to log all messages to. + + + + Configures NLog for to log to the specified target so that all messages + above and including the specified level are output. + + The target to log all messages to. + The minimal logging level. + + + + Configures NLog for file logging so that all messages above and including + the level are written to the specified file. + + Log file name. + + + + Configures NLog for file logging so that all messages above and including + the specified level are written to the specified file. + + Log file name. + The minimal logging level. + + + + Value indicating how stack trace should be captured when processing the log event. + + + + + Stack trace should not be captured. + + + + + Stack trace should be captured without source-level information. + + + + + Stack trace should be captured including source-level information such as line numbers. + + + + + Capture maximum amount of the stack trace information supported on the plaform. + + + + + Marks the layout or layout renderer as producing correct results regardless of the thread + it's running on. + + + + + A class for configuring NLog through an XML configuration file + (App.config style or App.nlog style). + + + + + Initializes a new instance of the class. + + Configuration file to be read. + + + + Initializes a new instance of the class. + + Configuration file to be read. + Ignore any errors during configuration. + + + + Initializes a new instance of the class. + + containing the configuration section. + Name of the file that contains the element (to be used as a base for including other files). + + + + Initializes a new instance of the class. + + containing the configuration section. + Name of the file that contains the element (to be used as a base for including other files). + Ignore any errors during configuration. + + + + Initializes a new instance of the class. + + The XML element. + Name of the XML file. + + + + Initializes a new instance of the class. + + The XML element. + Name of the XML file. + If set to true errors will be ignored during file processing. + + + + Re-reads the original configuration file and returns the new object. + + The new object. + + + + Initializes the configuration. + + containing the configuration section. + Name of the file that contains the element (to be used as a base for including other files). + Ignore any errors during configuration. + + + + Gets or sets a value indicating whether the configuration files + should be watched for changes and reloaded automatically when changed. + + + + + Gets the collection of file names which should be watched for changes by NLog. + This is the list of configuration files processed. + If the autoReload attribute is not set it returns empty collection. + + + + + Matches when the specified condition is met. + + + Conditions are expressed using a simple language + described
here. + + + + + An abstract filter class. Provides a way to eliminate log messages + based on properties other than logger name and log level. + + + + + Initializes a new instance of the class. + + + + + Gets the result of evaluating filter against given log event. + + The log event. + Filter result. + + + + Checks whether log event should be logged or not. + + Log event. + + - if the log event should be ignored
+ - if the filter doesn't want to decide
+ - if the log event should be logged
+ .
+
+ + + Gets or sets the action to be taken when filter matches. + + + + + + Checks whether log event should be logged or not. + + Log event. + + - if the log event should be ignored
+ - if the filter doesn't want to decide
+ - if the log event should be logged
+ .
+
+ + + Gets or sets the condition expression. + + + + + + Marks class as a layout renderer and assigns a name to it. + + + + + Initializes a new instance of the class. + + Name of the filter. + + + + Filter result. + + + + + The filter doesn't want to decide whether to log or discard the message. + + + + + The message should be logged. + + + + + The message should not be logged. + + + + + The message should be logged and processing should be finished. + + + + + The message should not be logged and processing should be finished. + + + + + A base class for filters that are based on comparing a value to a layout. + + + + + Initializes a new instance of the class. + + + + + Gets or sets the layout to be used to filter log messages. + + The layout. + + + + + Matches when the calculated layout contains the specified substring. + This filter is deprecated in favour of <when /> which is based on contitions. + + + + + Checks whether log event should be logged or not. + + Log event. + + - if the log event should be ignored
+ - if the filter doesn't want to decide
+ - if the log event should be logged
+ .
+
+ + + Gets or sets a value indicating whether to ignore case when comparing strings. + + + + + + Gets or sets the substring to be matched. + + + + + + Matches when the calculated layout is equal to the specified substring. + This filter is deprecated in favour of <when /> which is based on contitions. + + + + + Checks whether log event should be logged or not. + + Log event. + + - if the log event should be ignored
+ - if the filter doesn't want to decide
+ - if the log event should be logged
+ .
+
+ + + Gets or sets a value indicating whether to ignore case when comparing strings. + + + + + + Gets or sets a string to compare the layout to. + + + + + + Matches when the calculated layout does NOT contain the specified substring. + This filter is deprecated in favour of <when /> which is based on contitions. + + + + + Checks whether log event should be logged or not. + + Log event. + + - if the log event should be ignored
+ - if the filter doesn't want to decide
+ - if the log event should be logged
+ .
+
+ + + Gets or sets the substring to be matched. + + + + + + Gets or sets a value indicating whether to ignore case when comparing strings. + + + + + + Matches when the calculated layout is NOT equal to the specified substring. + This filter is deprecated in favour of <when /> which is based on contitions. + + + + + Initializes a new instance of the class. + + + + + Checks whether log event should be logged or not. + + Log event. + + - if the log event should be ignored
+ - if the filter doesn't want to decide
+ - if the log event should be logged
+ .
+
+ + + Gets or sets a string to compare the layout to. + + + + + + Gets or sets a value indicating whether to ignore case when comparing strings. + + + + + + Global Diagnostics Context - used for log4net compatibility. + + + + + Sets the Global Diagnostics Context item to the specified value. + + Item name. + Item value. + + + + Gets the Global Diagnostics Context named item. + + Item name. + The item value of String.Empty if the value is not present. + + + + Checks whether the specified item exists in the Global Diagnostics Context. + + Item name. + A boolean indicating whether the specified item exists in current thread GDC. + + + + Removes the specified item from the Global Diagnostics Context. + + Item name. + + + + Clears the content of the GDC. + + + + + Global Diagnostics Context - a dictionary structure to hold per-application-instance values. + + + + + Sets the Global Diagnostics Context item to the specified value. + + Item name. + Item value. + + + + Gets the Global Diagnostics Context named item. + + Item name. + The item value of String.Empty if the value is not present. + + + + Checks whether the specified item exists in the Global Diagnostics Context. + + Item name. + A boolean indicating whether the specified item exists in current thread GDC. + + + + Removes the specified item from the Global Diagnostics Context. + + Item name. + + + + Clears the content of the GDC. + + + + + Helpers for .NET Compact Framework. + + + + + Optimized methods to get current time. + + + + + Gets the current time in an optimized fashion. + + Current time. + + + + Provides untyped IDictionary interface on top of generic IDictionary. + + The type of the key. + The type of the value. + + + + Initializes a new instance of the DictionaryAdapter class. + + The implementation. + + + + Adds an element with the provided key and value to the object. + + The to use as the key of the element to add. + The to use as the value of the element to add. + + + + Removes all elements from the object. + + + + + Determines whether the object contains an element with the specified key. + + The key to locate in the object. + + True if the contains an element with the key; otherwise, false. + + + + + Returns an object for the object. + + + An object for the object. + + + + + Removes the element with the specified key from the object. + + The key of the element to remove. + + + + Copies the elements of the to an , starting at a particular index. + + The one-dimensional that is the destination of the elements copied from . The must have zero-based indexing. + The zero-based index in at which copying begins. + + + + Returns an enumerator that iterates through a collection. + + + An object that can be used to iterate through the collection. + + + + + Gets an object containing the values in the object. + + + + An object containing the values in the object. + + + + + Gets the number of elements contained in the . + + + + The number of elements contained in the . + + + + + Gets a value indicating whether access to the is synchronized (thread safe). + + + true if access to the is synchronized (thread safe); otherwise, false. + + + + + Gets an object that can be used to synchronize access to the . + + + + An object that can be used to synchronize access to the . + + + + + Gets a value indicating whether the object has a fixed size. + + + true if the object has a fixed size; otherwise, false. + + + + + Gets a value indicating whether the object is read-only. + + + true if the object is read-only; otherwise, false. + + + + + Gets an object containing the keys of the object. + + + + An object containing the keys of the object. + + + + + Gets or sets the with the specified key. + + Dictionary key. + Value corresponding to key or null if not found + + + + Wrapper IDictionaryEnumerator. + + + + + Initializes a new instance of the class. + + The wrapped. + + + + Advances the enumerator to the next element of the collection. + + + True if the enumerator was successfully advanced to the next element; false if the enumerator has passed the end of the collection. + + + + + Sets the enumerator to its initial position, which is before the first element in the collection. + + + + + Gets both the key and the value of the current dictionary entry. + + + + A containing both the key and the value of the current dictionary entry. + + + + + Gets the key of the current dictionary entry. + + + + The key of the current element of the enumeration. + + + + + Gets the value of the current dictionary entry. + + + + The value of the current element of the enumeration. + + + + + Gets the current element in the collection. + + + + The current element in the collection. + + + + + LINQ-like helpers (cannot use LINQ because we must work with .NET 2.0 profile). + + + + + Filters the given enumerable to return only items of the specified type. + + + Type of the item. + + + The enumerable. + + + Items of specified type. + + + + + Reverses the specified enumerable. + + + Type of enumerable item. + + + The enumerable. + + + Reversed enumerable. + + + + + Determines is the given predicate is met by any element of the enumerable. + + Element type. + The enumerable. + The predicate. + True if predicate returns true for any element of the collection, false otherwise. + + + + Converts the enumerable to list. + + Type of the list element. + The enumerable. + List of elements. + + + + Helper class for dealing with exceptions. + + + + + Determines whether the exception must be rethrown. + + The exception. + True if the exception must be rethrown, false otherwise. + + + + Object construction helper. + + + + + Base class for optimized file appenders. + + + + + Initializes a new instance of the class. + + Name of the file. + The create parameters. + + + + Writes the specified bytes. + + The bytes. + + + + Flushes this instance. + + + + + Closes this instance. + + + + + Gets the file info. + + The last write time. + Length of the file. + True if the operation succeeded, false otherwise. + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Releases unmanaged and - optionally - managed resources. + + True to release both managed and unmanaged resources; false to release only unmanaged resources. + + + + Records the last write time for a file. + + + + + Records the last write time for a file to be specific date. + + Date and time when the last write occurred. + + + + Creates the file stream. + + If set to true allow concurrent writes. + A object which can be used to write to the file. + + + + Gets the name of the file. + + The name of the file. + + + + Gets the last write time. + + The last write time. + + + + Gets the open time of the file. + + The open time. + + + + Gets the file creation parameters. + + The file creation parameters. + + + + Implementation of which caches + file information. + + + + + Initializes a new instance of the class. + + Name of the file. + The parameters. + + + + Closes this instance of the appender. + + + + + Flushes this current appender. + + + + + Gets the file info. + + The last write time. + Length of the file. + True if the operation succeeded, false otherwise. + + + + Writes the specified bytes to a file. + + The bytes to be written. + + + + Factory class which creates objects. + + + + + Interface implemented by all factories capable of creating file appenders. + + + + + Opens the appender for given file name and parameters. + + Name of the file. + Creation parameters. + Instance of which can be used to write to the file. + + + + Opens the appender for given file name and parameters. + + Name of the file. + Creation parameters. + + Instance of which can be used to write to the file. + + + + + Interface that provides parameters for create file function. + + + + + Multi-process and multi-host file appender which attempts + to get exclusive write access and retries if it's not available. + + + + + Initializes a new instance of the class. + + Name of the file. + The parameters. + + + + Writes the specified bytes. + + The bytes. + + + + Flushes this instance. + + + + + Closes this instance. + + + + + Gets the file info. + + The last write time. + Length of the file. + + True if the operation succeeded, false otherwise. + + + + + Factory class. + + + + + Opens the appender for given file name and parameters. + + Name of the file. + Creation parameters. + + Instance of which can be used to write to the file. + + + + + Optimized single-process file appender which keeps the file open for exclusive write. + + + + + Initializes a new instance of the class. + + Name of the file. + The parameters. + + + + Writes the specified bytes. + + The bytes. + + + + Flushes this instance. + + + + + Closes this instance. + + + + + Gets the file info. + + The last write time. + Length of the file. + + True if the operation succeeded, false otherwise. + + + + + Factory class. + + + + + Opens the appender for given file name and parameters. + + Name of the file. + Creation parameters. + + Instance of which can be used to write to the file. + + + + + Optimized routines to get the size and last write time of the specified file. + + + + + Initializes static members of the FileInfoHelper class. + + + + + Gets the information about a file. + + Name of the file. + The file handle. + The last write time of the file. + Length of the file. + A value of true if file information was retrieved successfully, false otherwise. + + + + Interface implemented by layouts and layout renderers. + + + + + Renders the the value of layout or layout renderer in the context of the specified log event. + + The log event. + String representation of a layout. + + + + Supports object initialization and termination. + + + + + Initializes this instance. + + The configuration. + + + + Closes this instance. + + + + + Allows components to request stack trace information to be provided in the . + + + + + Gets the level of stack trace information required by the implementing class. + + + + + Define Localizable attribute for platforms that don't have it. + + + + + Initializes a new instance of the class. + + Determines whether the target is localizable. + + + + Gets or sets a value indicating whether the target is localizable. + + + + + Logger configuration. + + + + + Initializes a new instance of the class. + + The targets by level. + + + + Gets targets for the specified level. + + The level. + Chain of targets with attached filters. + + + + Determines whether the specified level is enabled. + + The level. + + A value of true if the specified level is enabled; otherwise, false. + + + + + Creates instances of objects for given URLs. + + + + + Creates a new instance of the network sender based on a network URL. + + + URL that determines the network sender to be created. + + + A newly created network sender. + + + + + Interface for mocking socket calls. + + + + + A base class for all network senders. Supports one-way sending of messages + over various protocols. + + + + + Initializes a new instance of the class. + + The network URL. + + + + Finalizes an instance of the NetworkSender class. + + + + + Initializes this network sender. + + + + + Closes the sender and releases any unmanaged resources. + + The continuation. + + + + Flushes any pending messages and invokes a continuation. + + The continuation. + + + + Send the given text over the specified protocol. + + Bytes to be sent. + Offset in buffer. + Number of bytes to send. + The asynchronous continuation. + + + + Closes the sender and releases any unmanaged resources. + + + + + Performs sender-specific initialization. + + + + + Performs sender-specific close operation. + + The continuation. + + + + Performs sender-specific flush. + + The continuation. + + + + Actually sends the given text over the specified protocol. + + The bytes to be sent. + Offset in buffer. + Number of bytes to send. + The async continuation to be invoked after the buffer has been sent. + To be overridden in inheriting classes. + + + + Parses the URI into an endpoint address. + + The URI to parse. + The address family. + Parsed endpoint. + + + + Gets the address of the network endpoint. + + + + + Gets the last send time. + + + + + Default implementation of . + + + + + Creates a new instance of the network sender based on a network URL:. + + + URL that determines the network sender to be created. + + + A newly created network sender. + + + + + Emulate missing functionality from .NET Compact Framework + + + + + Emulate missing functionality from .NET Compact Framework + + + + + Socket proxy for mocking Socket code. + + + + + Initializes a new instance of the class. + + The address family. + Type of the socket. + Type of the protocol. + + + + Closes the wrapped socket. + + + + + Invokes ConnectAsync method on the wrapped socket. + + The instance containing the event data. + Result of original method. + + + + Invokes SendAsync method on the wrapped socket. + + The instance containing the event data. + Result of original method. + + + + Invokes SendToAsync method on the wrapped socket. + + The instance containing the event data. + Result of original method. + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Sends messages over a TCP network connection. + + + + + Initializes a new instance of the class. + + URL. Must start with tcp://. + The address family. + + + + Creates the socket with given parameters. + + The address family. + Type of the socket. + Type of the protocol. + Instance of which represents the socket. + + + + Performs sender-specific initialization. + + + + + Closes the socket. + + The continuation. + + + + Performs sender-specific flush. + + The continuation. + + + + Sends the specified text over the connected socket. + + The bytes to be sent. + Offset in buffer. + Number of bytes to send. + The async continuation to be invoked after the buffer has been sent. + To be overridden in inheriting classes. + + + + Facilitates mocking of class. + + + + + Raises the Completed event. + + + + + Sends messages over the network as UDP datagrams. + + + + + Initializes a new instance of the class. + + URL. Must start with udp://. + The address family. + + + + Creates the socket. + + The address family. + Type of the socket. + Type of the protocol. + Implementation of to use. + + + + Performs sender-specific initialization. + + + + + Closes the socket. + + The continuation. + + + + Sends the specified text as a UDP datagram. + + The bytes to be sent. + Offset in buffer. + Number of bytes to send. + The async continuation to be invoked after the buffer has been sent. + To be overridden in inheriting classes. + + + + Scans (breadth-first) the object graph following all the edges whose are + instances have attached and returns + all objects implementing a specified interfaces. + + + + + Finds the objects which have attached which are reachable + from any of the given root objects when traversing the object graph over public properties. + + Type of the objects to return. + The root objects. + Ordered list of objects implementing T. + + + + Parameter validation utilities. + + + + + Asserts that the value is not null and throws otherwise. + + The value to check. + Name of the parameter. + + + + Detects the platform the NLog is running on. + + + + + Portable implementation of . + + + + + Gets the information about a file. + + Name of the file. + The file handle. + The last write time of the file. + Length of the file. + + A value of true if file information was retrieved successfully, false otherwise. + + + + + Reflection helpers for accessing properties. + + + + + Implements a single-call guard around given continuation function. + + + + + Initializes a new instance of the class. + + The asynchronous continuation. + + + + Continuation function which implements the single-call guard. + + The exception. + + + + Provides helpers to sort log events and associated continuations. + + + + + Performs bucket sort (group by) on an array of items and returns a dictionary for easy traversal of the result set. + + The type of the value. + The type of the key. + The inputs. + The key selector function. + + Dictonary where keys are unique input keys, and values are lists of . + + + + + Key selector delegate. + + The type of the value. + The type of the key. + Value to extract key information from. + Key selected from log event. + + + + Utilities for dealing with values. + + + + + Represents target with a chain of filters which determine + whether logging should happen. + + + + + Initializes a new instance of the class. + + The target. + The filter chain. + + + + Gets the stack trace usage. + + A value that determines stack trace handling. + + + + Gets the target. + + The target. + + + + Gets the filter chain. + + The filter chain. + + + + Gets or sets the next item in the chain. + + The next item in the chain. + + + + Returns details about current process and thread in a portable manner. + + + + + Initializes static members of the ThreadIDHelper class. + + + + + Gets the singleton instance of PortableThreadIDHelper or + Win32ThreadIDHelper depending on runtime environment. + + The instance. + + + + Gets current thread ID. + + + + + Gets current process ID. + + + + + Gets current process name. + + + + + Gets current process name (excluding filename extension, if any). + + + + + Wraps with a timeout. + + + + + Initializes a new instance of the class. + + The asynchronous continuation. + The timeout. + + + + Continuation function which implements the timeout logic. + + The exception. + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + URL Encoding helper. + + + + + Win32-optimized implementation of . + + + + + Initializes a new instance of the class. + + + + + Gets current thread ID. + + + + + + Gets current process ID. + + + + + + Gets current process name. + + + + + + Gets current process name (excluding filename extension, if any). + + + + + + Designates a property of the class as an ambient property. + + + + + Initializes a new instance of the class. + + Ambient property name. + + + + The current application domain's base directory. + + + + + Render environmental information related to logging events. + + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Renders the the value of layout renderer in the context of the specified log event. + + The log event. + String representation of a layout renderer. + + + + Initializes this instance. + + The configuration. + + + + Closes this instance. + + + + + Initializes this instance. + + The configuration. + + + + Closes this instance. + + + + + Renders the specified environmental information and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Initializes the layout renderer. + + + + + Closes the layout renderer. + + + + + Releases unmanaged and - optionally - managed resources. + + True to release both managed and unmanaged resources; false to release only unmanaged resources. + + + + Gets the logging configuration this target is part of. + + + + + Initializes a new instance of the class. + + + + + Renders the application base directory and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Gets or sets the name of the file to be Path.Combine()'d with with the base directory. + + + + + + Gets or sets the name of the directory to be Path.Combine()'d with with the base directory. + + + + + + A counter value (increases on each layout rendering). + + + + + Initializes a new instance of the class. + + + + + Renders the specified counter value and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Gets or sets the initial value of the counter. + + + + + + Gets or sets the value to be added to the counter after each layout rendering. + + + + + + Gets or sets the name of the sequence. Different named sequences can have individual values. + + + + + + Current date and time. + + + + + Initializes a new instance of the class. + + + + + Renders the current date and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Gets or sets the culture used for rendering. + + + + + + Gets or sets the date format. Can be any argument accepted by DateTime.ToString(format). + + + + + + Log event context data. + + + + + Renders the specified log event context item and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Gets or sets the name of the item. + + + + + + Exception information provided through + a call to one of the Logger.*Exception() methods. + + + + + Initializes a new instance of the class. + + + + + Renders the specified exception information and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Gets or sets the format of the output. Must be a comma-separated list of exception + properties: Message, Type, ShortType, ToString, Method, StackTrace. + This parameter value is case-insensitive. + + + + + + Gets or sets the separator used to concatenate parts specified in the Format. + + + + + + Renders contents of the specified file. + + + + + Initializes a new instance of the class. + + + + + Renders the contents of the specified file and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Gets or sets the name of the file. + + + + + + Gets or sets the encoding used in the file. + + The encoding. + + + + + Gets or sets the property of System.GC to retrieve. + + + + + Total memory allocated. + + + + + Total memory allocated (perform full garbage collection first). + + + + + Gets the number of Gen0 collections. + + + + + Gets the number of Gen1 collections. + + + + + Gets the number of Gen2 collections. + + + + + Maximum generation number supported by GC. + + + + + Global Diagnostics Context item. Provided for compatibility with log4net. + + + + + Renders the specified Global Diagnostics Context item and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Gets or sets the name of the item. + + + + + + Globally-unique identifier (GUID). + + + + + Initializes a new instance of the class. + + + + + Renders a newly generated GUID string and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Gets or sets the GUID format as accepted by Guid.ToString() method. + + + + + + Installation parameter (passed to InstallNLogConfig). + + + + + Renders the specified installation parameter and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Gets or sets the name of the parameter. + + + + + + Marks class as a layout renderer and assigns a format string to it. + + + + + Initializes a new instance of the class. + + Name of the layout renderer. + + + + The log level. + + + + + Renders the current log level and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + A string literal. + + + This is used to escape '${' sequence + as ;${literal:text=${}' + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The literal text value. + This is used by the layout compiler. + + + + Renders the specified string literal and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Gets or sets the literal text. + + + + + + XML event description compatible with log4j, Chainsaw and NLogViewer. + + + + + Initializes a new instance of the class. + + + + + Renders the XML logging event and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Gets or sets a value indicating whether to include NLog-specific extensions to log4j schema. + + + + + + Gets or sets a value indicating whether the XML should use spaces for indentation. + + + + + + Gets or sets the AppInfo field. By default it's the friendly name of the current AppDomain. + + + + + + Gets or sets a value indicating whether to include contents of the dictionary. + + + + + + Gets or sets a value indicating whether to include contents of the stack. + + + + + + Gets the level of stack trace information required by the implementing class. + + + + + The logger name. + + + + + Renders the logger name and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Gets or sets a value indicating whether to render short logger name (the part after the trailing dot character). + + + + + + The date and time in a long, sortable format yyyy-MM-dd HH:mm:ss.mmm. + + + + + Renders the date in the long format (yyyy-MM-dd HH:mm:ss.mmm) and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Mapped Diagnostic Context item. Provided for compatibility with log4net. + + + + + Renders the specified MDC item and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Gets or sets the name of the item. + + + + + + The formatted log message. + + + + + Renders the log message including any positional parameters and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Nested Diagnostic Context item. Provided for compatibility with log4net. + + + + + Initializes a new instance of the class. + + + + + Renders the specified Nested Diagnostics Context item and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Gets or sets the number of top stack frames to be rendered. + + + + + + Gets or sets the number of bottom stack frames to be rendered. + + + + + + Gets or sets the separator to be used for concatenating nested diagnostics context output. + + + + + + A newline literal. + + + + + Renders the specified string literal and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + The directory where NLog.dll is located. + + + + + Initializes static members of the NLogDirLayoutRenderer class. + + + + + Renders the directory where NLog is located and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Gets or sets the name of the file to be Path.Combine()'d with the directory name. + + + + + + Gets or sets the name of the directory to be Path.Combine()'d with the directory name. + + + + + + The identifier of the current process. + + + + + Renders the current process ID. + + The to append the rendered data to. + Logging event. + + + + The name of the current process. + + + + + Renders the current process name (optionally with a full path). + + The to append the rendered data to. + Logging event. + + + + Gets or sets a value indicating whether to write the full path to the process executable. + + + + + + The process time in format HH:mm:ss.mmm. + + + + + Renders the current process running time and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + High precision timer, based on the value returned from QueryPerformanceCounter() optionally converted to seconds. + + + + + Initializes a new instance of the class. + + + + + Initializes the layout renderer. + + + + + Renders the ticks value of current time and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Gets or sets a value indicating whether to normalize the result by subtracting + it from the result of the first call (so that it's effectively zero-based). + + + + + + Gets or sets a value indicating whether to output the difference between the result + of QueryPerformanceCounter and the previous one. + + + + + + Gets or sets a value indicating whether to convert the result to seconds by dividing + by the result of QueryPerformanceFrequency(). + + + + + + Gets or sets the number of decimal digits to be included in output. + + + + + + Gets or sets a value indicating whether to align decimal point (emit non-significant zeros). + + + + + + A value from the Registry. + + + + + Reads the specified registry key and value and appends it to + the passed . + + The to append the rendered data to. + Logging event. Ignored. + + + + Gets or sets the registry value name. + + + + + + Gets or sets the value to be output when the specified registry key or value is not found. + + + + + + Gets or sets the registry key. + + + Must have one of the forms: +
    +
  • HKLM\Key\Full\Name
  • +
  • HKEY_LOCAL_MACHINE\Key\Full\Name
  • +
  • HKCU\Key\Full\Name
  • +
  • HKEY_CURRENT_USER\Key\Full\Name
  • +
+
+ +
+ + + The short date in a sortable format yyyy-MM-dd. + + + + + Renders the current short date string (yyyy-MM-dd) and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Specifies application information to display in ${sl-appinfo} renderer. + + + + + URI of the current application XAP file. + + + + + Whether application is running out-of-browser. + + + + + Installed state of an application. + + + + + Whether application is running with elevated permissions. + + + + + A temporary directory. + + + + + Renders the directory where NLog is located and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Gets or sets the name of the file to be Path.Combine()'d with the directory name. + + + + + + Gets or sets the name of the directory to be Path.Combine()'d with the directory name. + + + + + + The identifier of the current thread. + + + + + Renders the current thread identifier and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + The name of the current thread. + + + + + Renders the current thread name and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + The Ticks value of current date and time. + + + + + Renders the ticks value of current time and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Applies caching to another layout output. + + + The value of the inner layout will be rendered only once and reused subsequently. + + + + + Decodes text "encrypted" with ROT-13. + + + See http://en.wikipedia.org/wiki/ROT13. + + + + + Renders the inner message, processes it and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Transforms the output of another layout. + + Output to be transform. + Transformed text. + + + + Renders the inner layout contents. + + The log event. + Contents of inner layout. + + + + Gets or sets the wrapped layout. + + + + + + Initializes a new instance of the class. + + + + + Initializes the layout renderer. + + + + + Closes the layout renderer. + + + + + Transforms the output of another layout. + + Output to be transform. + Transformed text. + + + + Renders the inner layout contents. + + The log event. + Contents of inner layout. + + + + Gets or sets a value indicating whether this is enabled. + + + + + + Converts the result of another layout output to lower case. + + + + + Initializes a new instance of the class. + + + + + Post-processes the rendered message. + + The text to be post-processed. + Padded and trimmed string. + + + + Gets or sets a value indicating whether lower case conversion should be applied. + + A value of true if lower case conversion should be applied; otherwise, false. + + + + + Gets or sets the culture used for rendering. + + + + + + Applies padding to another layout output. + + + + + Initializes a new instance of the class. + + + + + Transforms the output of another layout. + + Output to be transform. + Transformed text. + + + + Gets or sets the number of characters to pad the output to. + + + Positive padding values cause left padding, negative values + cause right padding to the desired width. + + + + + + Gets or sets the padding character. + + + + + + Gets or sets a value indicating whether to trim the + rendered text to the absolute value of the padding length. + + + + + + Replaces a string in the output of another layout with another string. + + + + + Initializes the layout renderer. + + + + + Post-processes the rendered message. + + The text to be post-processed. + Post-processed text. + + + + Gets or sets the text to search for. + + The text search for. + + + + + Gets or sets a value indicating whether regular expressions should be used. + + A value of true if regular expressions should be used otherwise, false. + + + + + Gets or sets the replacement string. + + The replacement string. + + + + + Gets or sets a value indicating whether to ignore case. + + A value of true if case should be ignored when searching; otherwise, false. + + + + + Gets or sets a value indicating whether to search for whole words. + + A value of true if whole words should be searched for; otherwise, false. + + + + + Decodes text "encrypted" with ROT-13. + + + See http://en.wikipedia.org/wiki/ROT13. + + + + + Encodes/Decodes ROT-13-encoded string. + + The string to be encoded/decoded. + Encoded/Decoded text. + + + + Transforms the output of another layout. + + Output to be transform. + Transformed text. + + + + Gets or sets the layout to be wrapped. + + The layout to be wrapped. + This variable is for backwards compatibility + + + + + Trims the whitespace from the result of another layout renderer. + + + + + Initializes a new instance of the class. + + + + + Post-processes the rendered message. + + The text to be post-processed. + Trimmed string. + + + + Gets or sets a value indicating whether lower case conversion should be applied. + + A value of true if lower case conversion should be applied; otherwise, false. + + + + + Converts the result of another layout output to upper case. + + + + + Initializes a new instance of the class. + + + + + Post-processes the rendered message. + + The text to be post-processed. + Padded and trimmed string. + + + + Gets or sets a value indicating whether upper case conversion should be applied. + + A value of true if upper case conversion should be applied otherwise, false. + + + + + Gets or sets the culture used for rendering. + + + + + + Encodes the result of another layout output for use with URLs. + + + + + Initializes a new instance of the class. + + + + + Transforms the output of another layout. + + Output to be transform. + Transformed text. + + + + Gets or sets a value indicating whether spaces should be translated to '+' or '%20'. + + A value of true if space should be translated to '+'; otherwise, false. + + + + + A column in the CSV. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The name of the column. + The layout of the column. + + + + Gets or sets the name of the column. + + + + + + Gets or sets the layout of the column. + + + + + + Specifies allowed column delimiters. + + + + + Automatically detect from regional settings. + + + + + Comma (ASCII 44). + + + + + Semicolon (ASCII 59). + + + + + Tab character (ASCII 9). + + + + + Pipe character (ASCII 124). + + + + + Space character (ASCII 32). + + + + + Custom string, specified by the CustomDelimiter. + + + + + A specialized layout that renders CSV-formatted events. + + + + + A specialized layout that supports header and footer. + + + + + Abstract interface that layouts must implement. + + + + + Converts a given text to a . + + Text to be converted. + object represented by the text. + + + + Implicitly converts the specified string to a . + + The layout string. + Instance of . + + + + Implicitly converts the specified string to a . + + The layout string. + The NLog factories to use when resolving layout renderers. + Instance of . + + + + Precalculates the layout for the specified log event and stores the result + in per-log event cache. + + The log event. + + Calling this method enables you to store the log event in a buffer + and/or potentially evaluate it in another thread even though the + layout may contain thread-dependent renderer. + + + + + Renders the event info in layout. + + The event info. + String representing log event. + + + + Initializes this instance. + + The configuration. + + + + Closes this instance. + + + + + Initializes this instance. + + The configuration. + + + + Closes this instance. + + + + + Initializes the layout. + + + + + Closes the layout. + + + + + Renders the layout for the specified logging event by invoking layout renderers. + + The logging event. + The rendered layout. + + + + Gets the logging configuration this target is part of. + + + + + Precalculates the layout for the specified log event and stores the result + in per-log event cache. + + The log event. + + Calling this method enables you to store the log event in a buffer + and/or potentially evaluate it in another thread even though the + layout may contain thread-dependent renderer. + + + + + Renders the layout for the specified logging event by invoking layout renderers. + + The logging event. + The rendered layout. + + + + Gets or sets the body layout (can be repeated multiple times). + + + + + + Gets or sets the header layout. + + + + + + Gets or sets the footer layout. + + + + + + Initializes a new instance of the class. + + + + + Initializes the layout. + + + + + Formats the log event for write. + + The log event to be formatted. + A string representation of the log event. + + + + Gets the array of parameters to be passed. + + + + + + Gets or sets a value indicating whether CVS should include header. + + A value of true if CVS should include header; otherwise, false. + + + + + Gets or sets the column delimiter. + + + + + + Gets or sets the quoting mode. + + + + + + Gets or sets the quote Character. + + + + + + Gets or sets the custom column delimiter value (valid when ColumnDelimiter is set to 'Custom'). + + + + + + Header for CSV layout. + + + + + Initializes a new instance of the class. + + The parent. + + + + Renders the layout for the specified logging event by invoking layout renderers. + + The logging event. + The rendered layout. + + + + Specifies allowes CSV quoting modes. + + + + + Quote all column. + + + + + Quote nothing. + + + + + Quote only whose values contain the quote symbol or + the separator. + + + + + Marks class as a layout renderer and assigns a format string to it. + + + + + Initializes a new instance of the class. + + Layout name. + + + + Parses layout strings. + + + + + Simple character tokenizer. + + + + + Initializes a new instance of the class. + + The text to be tokenized. + + + + A specialized layout that renders Log4j-compatible XML events. + + + This layout is not meant to be used explicitly. Instead you can use ${log4jxmlevent} layout renderer. + + + + + Initializes a new instance of the class. + + + + + Renders the layout for the specified logging event by invoking layout renderers. + + The logging event. + The rendered layout. + + + + Gets the instance that renders log events. + + + + + Represents a string with embedded placeholders that can render contextual information. + + + This layout is not meant to be used explicitly. Instead you can just use a string containing layout + renderers everywhere the layout is required. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The layout string to parse. + + + + Initializes a new instance of the class. + + The layout string to parse. + The NLog factories to use when creating references to layout renderers. + + + + Converts a text to a simple layout. + + Text to be converted. + A object. + + + + Escapes the passed text so that it can + be used literally in all places where + layout is normally expected without being + treated as layout. + + The text to be escaped. + The escaped text. + + Escaping is done by replacing all occurences of + '${' with '${literal:text=${}' + + + + + Evaluates the specified text by expadinging all layout renderers. + + The text to be evaluated. + Log event to be used for evaluation. + The input text with all occurences of ${} replaced with + values provided by the appropriate layout renderers. + + + + Evaluates the specified text by expadinging all layout renderers + in new context. + + The text to be evaluated. + The input text with all occurences of ${} replaced with + values provided by the appropriate layout renderers. + + + + Returns a that represents the current object. + + + A that represents the current object. + + + + + Renders the layout for the specified logging event by invoking layout renderers + that make up the event. + + The logging event. + The rendered layout. + + + + Gets or sets the layout text. + + + + + + Gets a collection of objects that make up this layout. + + + + + Represents the logging event. + + + + + Gets the date of the first log event created. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Log level. + Logger name. + Log message including parameter placeholders. + + + + Initializes a new instance of the class. + + Log level. + Logger name. + An IFormatProvider that supplies culture-specific formatting information. + Log message including parameter placeholders. + Parameter array. + + + + Initializes a new instance of the class. + + Log level. + Logger name. + An IFormatProvider that supplies culture-specific formatting information. + Log message including parameter placeholders. + Parameter array. + Exception information. + + + + Creates the null event. + + Null log event. + + + + Creates the log event. + + The log level. + Name of the logger. + The message. + Instance of . + + + + Creates the log event. + + The log level. + Name of the logger. + The format provider. + The message. + The parameters. + Instance of . + + + + Creates the log event. + + The log level. + Name of the logger. + The format provider. + The message. + Instance of . + + + + Creates the log event. + + The log level. + Name of the logger. + The message. + The exception. + Instance of . + + + + Creates from this by attaching the specified asynchronous continuation. + + The asynchronous continuation. + Instance of with attached continuation. + + + + Returns a string representation of this log event. + + String representation of the log event. + + + + Gets the unique identifier of log event which is automatically generated + and monotonously increasing. + + + + + Gets or sets the timestamp of the logging event. + + + + + Gets or sets the level of the logging event. + + + + + Gets or sets the exception information. + + + + + Gets or sets the logger name. + + + + + Gets the logger short name. + + + + + Gets or sets the log message including any parameter placeholders. + + + + + Gets or sets the parameter values or null if no parameters have been specified. + + + + + Gets or sets the format provider that was provided while logging or + when no formatProvider was specified. + + + + + Gets the formatted message. + + + + + Gets the dictionary of per-event context properties. + + + + + Gets the dictionary of per-event context properties. + + + + + Creates and manages instances of objects. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The config. + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Creates a logger that discards all log messages. + + Null logger instance. + + + + Gets the specified named logger. + + Name of the logger. + The logger reference. Multiple calls to GetLogger with the same argument aren't guaranteed to return the same logger reference. + + + + Gets the specified named logger. + + Name of the logger. + The type of the logger to create. The type must inherit from NLog.Logger. + The logger reference. Multiple calls to GetLogger with the + same argument aren't guaranteed to return the same logger reference. + + + + Loops through all loggers previously returned by GetLogger + and recalculates their target and filter list. Useful after modifying the configuration programmatically + to ensure that all loggers have been properly configured. + + + + + Flush any pending log messages (in case of asynchronous targets). + + + + + Flush any pending log messages (in case of asynchronous targets). + + Maximum time to allow for the flush. Any messages after that time will be discarded. + + + + Flush any pending log messages (in case of asynchronous targets). + + Maximum time to allow for the flush. Any messages after that time will be discarded. + + + + Flush any pending log messages (in case of asynchronous targets). + + The asynchronous continuation. + + + + Flush any pending log messages (in case of asynchronous targets). + + The asynchronous continuation. + Maximum time to allow for the flush. Any messages after that time will be discarded. + + + + Flush any pending log messages (in case of asynchronous targets). + + The asynchronous continuation. + Maximum time to allow for the flush. Any messages after that time will be discarded. + + + Decreases the log enable counter and if it reaches -1 + the logs are disabled. + Logging is enabled if the number of calls is greater + than or equal to calls. + An object that iplements IDisposable whose Dispose() method + reenables logging. To be used with C# using () statement. + + + Increases the log enable counter and if it reaches 0 the logs are disabled. + Logging is enabled if the number of calls is greater + than or equal to calls. + + + + Returns if logging is currently enabled. + + A value of if logging is currently enabled, + otherwise. + Logging is enabled if the number of calls is greater + than or equal to calls. + + + + Releases unmanaged and - optionally - managed resources. + + True to release both managed and unmanaged resources; false to release only unmanaged resources. + + + + Occurs when logging changes. + + + + + Gets or sets a value indicating whether exceptions should be thrown. + + A value of true if exceptiosn should be thrown; otherwise, false. + By default exceptions + are not thrown under any circumstances. + + + + + Gets or sets the current logging configuration. + + + + + Gets or sets the global log threshold. Log events below this threshold are not logged. + + + + + Logger cache key. + + + + + Serves as a hash function for a particular type. + + + A hash code for the current . + + + + + Determines if two objects are equal in value. + + Other object to compare to. + True if objects are equal, false otherwise. + + + + Enables logging in implementation. + + + + + Initializes a new instance of the class. + + The factory. + + + + Enables logging. + + + + + Specialized LogFactory that can return instances of custom logger types. + + The type of the logger to be returned. Must inherit from . + + + + Gets the logger. + + The logger name. + An instance of . + + + + Provides logging interface and utility functions. + + + Auto-generated Logger members for binary compatibility with NLog 1.0. + + + + + Initializes a new instance of the class. + + + + + Gets a value indicating whether logging is enabled for the specified level. + + Log level to be checked. + A value of if logging is enabled for the specified level, otherwise it returns . + + + + Writes the specified diagnostic message. + + Log event. + + + + Writes the specified diagnostic message. + + The name of the type that wraps Logger. + Log event. + + + + Writes the diagnostic message at the specified level using the specified format provider and format parameters. + + + Writes the diagnostic message at the specified level. + + Type of the value. + The log level. + The value to be written. + + + + Writes the diagnostic message at the specified level. + + Type of the value. + The log level. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the specified level. + + The log level. + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the specified level. + + The log level. + A to be written. + An exception to be logged. + + + + Writes the diagnostic message at the specified level using the specified parameters and formatting them with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the specified level. + + The log level. + Log message. + + + + Writes the diagnostic message at the specified level using the specified parameters. + + The log level. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the specified level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified parameter. + + The type of the argument. + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the specified level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The log level. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the specified level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the specified level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + The log level. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Trace level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Trace level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Trace level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Trace level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Trace level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message at the Trace level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Trace level. + + Log message. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Trace level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Trace level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Debug level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Debug level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Debug level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Debug level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Debug level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message at the Debug level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Debug level. + + Log message. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Debug level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Debug level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Info level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Info level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Info level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Info level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Info level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message at the Info level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Info level. + + Log message. + + + + Writes the diagnostic message at the Info level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Info level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Info level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Info level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Info level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Warn level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Warn level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Warn level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Warn level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Warn level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message at the Warn level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Warn level. + + Log message. + + + + Writes the diagnostic message at the Warn level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Warn level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Warn level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Warn level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Warn level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Error level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Error level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Error level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Error level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Error level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message at the Error level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Error level. + + Log message. + + + + Writes the diagnostic message at the Error level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Error level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Error level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Error level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Error level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Fatal level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Fatal level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Fatal level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Fatal level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message at the Fatal level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Fatal level. + + Log message. + + + + Writes the diagnostic message at the Fatal level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Fatal level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the specified level. + + The log level. + A to be written. + + + + Writes the diagnostic message at the specified level. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the specified level using the specified parameters. + + The log level. + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the specified level using the specified parameters. + + The log level. + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level. + + A to be written. + + + + Writes the diagnostic message at the Trace level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level. + + A to be written. + + + + Writes the diagnostic message at the Debug level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level. + + A to be written. + + + + Writes the diagnostic message at the Info level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the Info level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the Info level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level. + + A to be written. + + + + Writes the diagnostic message at the Warn level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the Warn level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the Warn level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level. + + A to be written. + + + + Writes the diagnostic message at the Error level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the Error level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the Error level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level. + + A to be written. + + + + Writes the diagnostic message at the Fatal level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the Fatal level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Occurs when logger configuration changes. + + + + + Gets the name of the logger. + + + + + Gets the factory that created this logger. + + + + + Gets a value indicating whether logging is enabled for the Trace level. + + A value of if logging is enabled for the Trace level, otherwise it returns . + + + + Gets a value indicating whether logging is enabled for the Debug level. + + A value of if logging is enabled for the Debug level, otherwise it returns . + + + + Gets a value indicating whether logging is enabled for the Info level. + + A value of if logging is enabled for the Info level, otherwise it returns . + + + + Gets a value indicating whether logging is enabled for the Warn level. + + A value of if logging is enabled for the Warn level, otherwise it returns . + + + + Gets a value indicating whether logging is enabled for the Error level. + + A value of if logging is enabled for the Error level, otherwise it returns . + + + + Gets a value indicating whether logging is enabled for the Fatal level. + + A value of if logging is enabled for the Fatal level, otherwise it returns . + + + + Implementation of logging engine. + + + + + Gets the filter result. + + The filter chain. + The log event. + The result of the filter. + + + + Defines available log levels. + + + + + Trace log level. + + + + + Debug log level. + + + + + Info log level. + + + + + Warn log level. + + + + + Error log level. + + + + + Fatal log level. + + + + + Off log level. + + + + + Compares two objects + and returns a value indicating whether + the first one is equal to the second one. + + The first level. + The second level. + The value of level1.Ordinal == level2.Ordinal. + + + + Compares two objects + and returns a value indicating whether + the first one is not equal to the second one. + + The first level. + The second level. + The value of level1.Ordinal != level2.Ordinal. + + + + Compares two objects + and returns a value indicating whether + the first one is greater than the second one. + + The first level. + The second level. + The value of level1.Ordinal > level2.Ordinal. + + + + Compares two objects + and returns a value indicating whether + the first one is greater than or equal to the second one. + + The first level. + The second level. + The value of level1.Ordinal >= level2.Ordinal. + + + + Compares two objects + and returns a value indicating whether + the first one is less than the second one. + + The first level. + The second level. + The value of level1.Ordinal < level2.Ordinal. + + + + Compares two objects + and returns a value indicating whether + the first one is less than or equal to the second one. + + The first level. + The second level. + The value of level1.Ordinal <= level2.Ordinal. + + + + Gets the that corresponds to the specified ordinal. + + The ordinal. + The instance. For 0 it returns , 1 gives and so on. + + + + Returns the that corresponds to the supplied . + + The texual representation of the log level. + The enumeration value. + + + + Returns a string representation of the log level. + + Log level name. + + + + Returns a hash code for this instance. + + + A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. + + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + + Value of true if the specified is equal to this instance; otherwise, false. + + + The parameter is null. + + + + + Compares the level to the other object. + + + The object object. + + + A value less than zero when this logger's is + less than the other logger's ordinal, 0 when they are equal and + greater than zero when this ordinal is greater than the + other ordinal. + + + + + Gets the name of the log level. + + + + + Gets the ordinal of the log level. + + + + + Creates and manages instances of objects. + + + + + Prevents a default instance of the LogManager class from being created. + + + + + Creates a logger that discards all log messages. + + Null logger which discards all log messages. + + + + Gets the specified named logger. + + Name of the logger. + The logger reference. Multiple calls to GetLogger with the same argument aren't guaranteed to return the same logger reference. + + + + Gets the specified named logger. + + Name of the logger. + The logger class. The class must inherit from . + The logger reference. Multiple calls to GetLogger with the same argument aren't guaranteed to return the same logger reference. + + + + Loops through all loggers previously returned by GetLogger. + and recalculates their target and filter list. Useful after modifying the configuration programmatically + to ensure that all loggers have been properly configured. + + + + + Flush any pending log messages (in case of asynchronous targets). + + + + + Flush any pending log messages (in case of asynchronous targets). + + Maximum time to allow for the flush. Any messages after that time will be discarded. + + + + Flush any pending log messages (in case of asynchronous targets). + + Maximum time to allow for the flush. Any messages after that time will be discarded. + + + + Flush any pending log messages (in case of asynchronous targets). + + The asynchronous continuation. + + + + Flush any pending log messages (in case of asynchronous targets). + + The asynchronous continuation. + Maximum time to allow for the flush. Any messages after that time will be discarded. + + + + Flush any pending log messages (in case of asynchronous targets). + + The asynchronous continuation. + Maximum time to allow for the flush. Any messages after that time will be discarded. + + + Decreases the log enable counter and if it reaches -1 + the logs are disabled. + Logging is enabled if the number of calls is greater + than or equal to calls. + An object that iplements IDisposable whose Dispose() method + reenables logging. To be used with C# using () statement. + + + Increases the log enable counter and if it reaches 0 the logs are disabled. + Logging is enabled if the number of calls is greater + than or equal to calls. + + + + Returns if logging is currently enabled. + + A value of if logging is currently enabled, + otherwise. + Logging is enabled if the number of calls is greater + than or equal to calls. + + + + Occurs when logging changes. + + + + + Gets or sets a value indicating whether NLog should throw exceptions. + By default exceptions are not thrown under any circumstances. + + + + + Gets or sets the current logging configuration. + + + + + Gets or sets the global log threshold. Log events below this threshold are not logged. + + + + + Returns a log message. Used to defer calculation of + the log message until it's actually needed. + + Log message. + + + + Service contract for Log Receiver client. + + + + + Begins processing of log messages. + + The events. + The callback. + Asynchronous state. + + IAsyncResult value which can be passed to . + + + + + Ends asynchronous processing of log messages. + + The result. + + + + Internal configuration of Log Receiver Service contracts. + + + + + Wire format for NLog Event. + + + + + Initializes a new instance of the class. + + + + + Converts the to . + + The object this is part of.. + The logger name prefix to prepend in front of the logger name. + Converted . + + + + Gets or sets the client-generated identifier of the event. + + + + + Gets or sets the ordinal of the log level. + + + + + Gets or sets the logger ordinal (index into . + + The logger ordinal. + + + + Gets or sets the time delta (in ticks) between the time of the event and base time. + + + + + Gets or sets the message string index. + + + + + Gets or sets the collection of layout values. + + + + + Gets the collection of indexes into array for each layout value. + + + + + Wire format for NLog event package. + + + + + Converts the events to sequence of objects suitable for routing through NLog. + + The logger name prefix to prepend in front of each logger name. + + Sequence of objects. + + + + + Converts the events to sequence of objects suitable for routing through NLog. + + + Sequence of objects. + + + + + Gets or sets the name of the client. + + The name of the client. + + + + Gets or sets the base time (UTC ticks) for all events in the package. + + The base time UTC. + + + + Gets or sets the collection of layout names which are shared among all events. + + The layout names. + + + + Gets or sets the collection of logger names. + + The logger names. + + + + Gets or sets the list of events. + + The events. + + + + Log Receiver Client using legacy SOAP client. + + + + + Initializes a new instance of the class. + + The service URL. + + + + Processes the log messages. + + The events. + + + + Begins processing of log messages. + + The events. + The callback. + Asynchronous state. + + IAsyncResult value which can be passed to . + + + + + Ends asynchronous processing of log messages. + + The result. + + + + List of strings annotated for more terse serialization. + + + + + Initializes a new instance of the class. + + + + + Mapped Diagnostics Context - a thread-local structure that keeps a dictionary + of strings and provides methods to output them in layouts. + Mostly for compatibility with log4net. + + + + + Sets the current thread MDC item to the specified value. + + Item name. + Item value. + + + + Gets the current thread MDC named item. + + Item name. + The item value of String.Empty if the value is not present. + + + + Checks whether the specified item exists in current thread MDC. + + Item name. + A boolean indicating whether the specified item exists in current thread MDC. + + + + Removes the specified item from current thread MDC. + + Item name. + + + + Clears the content of current thread MDC. + + + + + Mapped Diagnostics Context - used for log4net compatibility. + + + + + Sets the current thread MDC item to the specified value. + + Item name. + Item value. + + + + Gets the current thread MDC named item. + + Item name. + The item value of String.Empty if the value is not present. + + + + Checks whether the specified item exists in current thread MDC. + + Item name. + A boolean indicating whether the specified item exists in current thread MDC. + + + + Removes the specified item from current thread MDC. + + Item name. + + + + Clears the content of current thread MDC. + + + + + Nested Diagnostics Context - for log4net compatibility. + + + + + Pushes the specified text on current thread NDC. + + The text to be pushed. + An instance of the object that implements IDisposable that returns the stack to the previous level when IDisposable.Dispose() is called. To be used with C# using() statement. + + + + Pops the top message off the NDC stack. + + The top message which is no longer on the stack. + + + + Clears current thread NDC stack. + + + + + Gets all messages on the stack. + + Array of strings on the stack. + + + + Gets the top NDC message but doesn't remove it. + + The top message. . + + + + Nested Diagnostics Context - a thread-local structure that keeps a stack + of strings and provides methods to output them in layouts + Mostly for compatibility with log4net. + + + + + Pushes the specified text on current thread NDC. + + The text to be pushed. + An instance of the object that implements IDisposable that returns the stack to the previous level when IDisposable.Dispose() is called. To be used with C# using() statement. + + + + Pops the top message off the NDC stack. + + The top message which is no longer on the stack. + + + + Clears current thread NDC stack. + + + + + Gets all messages on the stack. + + Array of strings on the stack. + + + + Gets the top NDC message but doesn't remove it. + + The top message. . + + + + Resets the stack to the original count during . + + + + + Initializes a new instance of the class. + + The stack. + The previous count. + + + + Reverts the stack to original item count. + + + + + Exception thrown during NLog configuration. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The message. + + + + Initializes a new instance of the class. + + The message. + The inner exception. + + + + Exception thrown during log event processing. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The message. + + + + Initializes a new instance of the class. + + The message. + The inner exception. + + + + TraceListener which routes all messages through NLog. + + + + + Initializes a new instance of the class. + + + + + When overridden in a derived class, writes the specified message to the listener you create in the derived class. + + A message to write. + + + + When overridden in a derived class, writes a message to the listener you create in the derived class, followed by a line terminator. + + A message to write. + + + + When overridden in a derived class, closes the output stream so it no longer receives tracing or debugging output. + + + + + Emits an error message. + + A message to emit. + + + + Emits an error message and a detailed error message. + + A message to emit. + A detailed message to emit. + + + + Flushes the output buffer. + + + + + Gets or sets the log factory to use when outputting messages (null - use LogManager). + + + + + Gets or sets the default log level. + + + + + Gets or sets the log which should be always used regardless of source level. + + + + + Specifies the way archive numbering is performed. + + + + + Sequence style numbering. The most recent archive has the highest number. + + + + + Rolling style numbering (the most recent is always #0 then #1, ..., #N. + + + + + Sends log messages to the remote instance of Chainsaw application from log4j. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +

+ NOTE: If your receiver application is ever likely to be off-line, don't use TCP protocol + or you'll get TCP timeouts and your application will crawl. + Either switch to UDP transport or use AsyncWrapper target + so that your application threads will not be blocked by the timing-out connection attempts. +

+
+
+ + + Sends log messages to the remote instance of NLog Viewer. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +

+ NOTE: If your receiver application is ever likely to be off-line, don't use TCP protocol + or you'll get TCP timeouts and your application will crawl. + Either switch to UDP transport or use AsyncWrapper target + so that your application threads will not be blocked by the timing-out connection attempts. +

+
+
+ + + Sends log messages over the network. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +

+ To print the results, use any application that's able to receive messages over + TCP or UDP. NetCat is + a simple but very powerful command-line tool that can be used for that. This image + demonstrates the NetCat tool receiving log messages from Network target. +

+ +

+ NOTE: If your receiver application is ever likely to be off-line, don't use TCP protocol + or you'll get TCP timeouts and your application will crawl. + Either switch to UDP transport or use AsyncWrapper target + so that your application threads will not be blocked by the timing-out connection attempts. +

+

+ There are two specialized versions of the Network target: Chainsaw + and NLogViewer which write to instances of Chainsaw log4j viewer + or NLogViewer application respectively. +

+
+
+ + + Represents target that supports string formatting using layouts. + + + + + Represents logging target. + + + + + Initializes this instance. + + The configuration. + + + + Closes this instance. + + + + + Closes the target. + + + + + Flush any pending log messages (in case of asynchronous targets). + + The asynchronous continuation. + + + + Calls the on each volatile layout + used by this target. + + + The log event. + + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Writes the log to the target. + + Log event to write. + + + + Writes the array of log events. + + The log events. + + + + Initializes this instance. + + The configuration. + + + + Closes this instance. + + + + + Releases unmanaged and - optionally - managed resources. + + True to release both managed and unmanaged resources; false to release only unmanaged resources. + + + + Initializes the target. Can be used by inheriting classes + to initialize logging. + + + + + Closes the target and releases any unmanaged resources. + + + + + Flush any pending log messages asynchronously (in case of asynchronous targets). + + The asynchronous continuation. + + + + Writes logging event to the log target. + classes. + + + Logging event to be written out. + + + + + Writes log event to the log target. Must be overridden in inheriting + classes. + + Log event to be written out. + + + + Writes an array of logging events to the log target. By default it iterates on all + events and passes them to "Write" method. Inheriting classes can use this method to + optimize batch writes. + + Logging events to be written out. + + + + Gets or sets the name of the target. + + + + + + Gets the object which can be used to synchronize asynchronous operations that must rely on the . + + + + + Gets the logging configuration this target is part of. + + + + + Gets a value indicating whether the target has been initialized. + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Gets or sets the layout used to format log messages. + + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Flush any pending log messages asynchronously (in case of asynchronous targets). + + The asynchronous continuation. + + + + Closes the target. + + + + + Sends the + rendered logging event over the network optionally concatenating it with a newline character. + + The logging event. + + + + Gets the bytes to be written. + + Log event. + Byte array. + + + + Gets or sets the network address. + + + The network address can be: +
    +
  • tcp://host:port - TCP (auto select IPv4/IPv6)
  • +
  • tcp4://host:port - force TCP/IPv4
  • +
  • tcp6://host:port - force TCP/IPv6
  • +
  • udp://host:port - UDP (auto select IPv4/IPv6, not supported on Silverlight)
  • +
  • udp4://host:port - force UDP/IPv4 (not supported on Silverlight)
  • +
  • udp6://host:port - force UDP/IPv6 (not supported on Silverlight)
  • +
+ For HTTP Support use WebService target. +
+ +
+ + + Gets or sets a value indicating whether to keep connection open whenever possible. + + + + + + Gets or sets a value indicating whether to append newline at the end of log message. + + + + + + Gets or sets the maximum message size in bytes. + + + + + + Gets or sets the size of the connection cache (number of connections which are kept alive). + + + + + + Gets or sets the action that should be taken if the message is larger than + maxMessageSize. + + + + + + Gets or sets the encoding to be used. + + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Gets or sets a value indicating whether to include NLog-specific extensions to log4j schema. + + + + + + Gets or sets the AppInfo field. By default it's the friendly name of the current AppDomain. + + + + + + Gets or sets a value indicating whether to include dictionary contents. + + + + + + Gets or sets a value indicating whether to include stack contents. + + + + + + Gets the collection of parameters. Each parameter contains a mapping + between NLog layout and a named parameter. + + + + + + Gets the layout renderer which produces Log4j-compatible XML events. + + + + + Gets or sets the instance of that is used to format log messages. + + + + + Initializes a new instance of the class. + + + + + Writes log messages to the console. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +
+
+ + + Represents target that supports string formatting using layouts. + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Gets or sets the text to be rendered. + + + + + + Gets or sets the footer. + + + + + + Gets or sets the header. + + + + + + Gets or sets the layout with header and footer. + + The layout with header and footer. + + + + Initializes the target. + + + + + Closes the target and releases any unmanaged resources. + + + + + Writes the specified logging event to the Console.Out or + Console.Error depending on the value of the Error flag. + + The logging event. + + Note that the Error option is not supported on .NET Compact Framework. + + + + + Information about database command + parameters. + + + + + Initializes a new instance of the class. + + + + + Gets or sets the type of the command. + + The type of the command. + + + + + Gets or sets the connection string to run the command against. If not provided, connection string from the target is used. + + + + + + Gets or sets the command text. + + + + + + Gets or sets a value indicating whether to ignore failures. + + + + + + Gets the collection of parameters. Each parameter contains a mapping + between NLog layout and a database named or positional parameter. + + + + + + Represents a parameter to a Database target. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the parameter. + The parameter layout. + + + + Gets or sets the database parameter name. + + + + + + Gets or sets the layout that should be use to calcuate the value for the parameter. + + + + + + Gets or sets the database parameter size. + + + + + + Gets or sets the database parameter precision. + + + + + + Gets or sets the database parameter scale. + + + + + + Writes log messages to the database using an ADO.NET provider. + + Documentation on NLog Wiki + + + The configuration is dependent on the database type, because + there are differnet methods of specifying connection string, SQL + command and command parameters. + + MS SQL Server using System.Data.SqlClient: + + Oracle using System.Data.OracleClient: + + Oracle using System.Data.OleDBClient: + + To set up the log target programmatically use code like this (an equivalent of MSSQL configuration): + + + + + + Initializes a new instance of the class. + + + + + Performs installation which requires administrative permissions. + + The installation context. + + + + Performs uninstallation which requires administrative permissions. + + The installation context. + + + + Determines whether the item is installed. + + The installation context. + + Value indicating whether the item is installed or null if it is not possible to determine. + + + + + Initializes the target. Can be used by inheriting classes + to initialize logging. + + + + + Closes the target and releases any unmanaged resources. + + + + + Writes the specified logging event to the database. It creates + a new database command, prepares parameters for it by calculating + layouts and executes the command. + + The logging event. + + + + Writes an array of logging events to the log target. By default it iterates on all + events and passes them to "Write" method. Inheriting classes can use this method to + optimize batch writes. + + Logging events to be written out. + + + + Gets or sets the name of the database provider. + + + + The parameter name should be a provider invariant name as registered in machine.config or app.config. Common values are: + +
    +
  • System.Data.SqlClient - SQL Sever Client
  • +
  • System.Data.SqlServerCe.3.5 - SQL Sever Compact 3.5
  • +
  • System.Data.OracleClient - Oracle Client from Microsoft (deprecated in .NET Framework 4)
  • +
  • Oracle.DataAccess.Client - ODP.NET provider from Oracle
  • +
  • System.Data.SQLite - System.Data.SQLite driver for SQLite
  • +
  • Npgsql - Npgsql driver for PostgreSQL
  • +
  • MySql.Data.MySqlClient - MySQL Connector/Net
  • +
+ (Note that provider invariant names are not supported on .NET Compact Framework). + + Alternatively the parameter value can be be a fully qualified name of the provider + connection type (class implementing ) or one of the following tokens: + +
    +
  • sqlserver, mssql, microsoft or msde - SQL Server Data Provider
  • +
  • oledb - OLEDB Data Provider
  • +
  • odbc - ODBC Data Provider
  • +
+
+ +
+ + + Gets or sets the connection string. When provided, it overrides the values + specified in DBHost, DBUserName, DBPassword, DBDatabase. + + + + + + Gets or sets the connection string using for installation and uninstallation. If not provided, regular ConnectionString is being used. + + + + + + Gets the installation DDL commands. + + + + + + Gets the uninstallation DDL commands. + + + + + + Gets or sets a value indicating whether to keep the + database connection open between the log events. + + + + + + Gets or sets a value indicating whether to use database transactions. + Some data providers require this. + + + + + + Gets or sets the database host name. If the ConnectionString is not provided + this value will be used to construct the "Server=" part of the + connection string. + + + + + + Gets or sets the database user name. If the ConnectionString is not provided + this value will be used to construct the "User ID=" part of the + connection string. + + + + + + Gets or sets the database password. If the ConnectionString is not provided + this value will be used to construct the "Password=" part of the + connection string. + + + + + + Gets or sets the database name. If the ConnectionString is not provided + this value will be used to construct the "Database=" part of the + connection string. + + + + + + Gets or sets the text of the SQL command to be run on each log level. + + + Typically this is a SQL INSERT statement or a stored procedure call. + It should use the database-specific parameters (marked as @parameter + for SQL server or :parameter for Oracle, other data providers + have their own notation) and not the layout renderers, + because the latter is prone to SQL injection attacks. + The layout renderers should be specified as <parameter /> elements instead. + + + + + + Gets the collection of parameters. Each parameter contains a mapping + between NLog layout and a database named or positional parameter. + + + + + + Mock target - useful for testing. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +
+
+ + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Increases the number of messages. + + The logging event. + + + + Gets the number of times this target has been called. + + + + + + Gets the last message rendered by this target. + + + + + + Modes of archiving files based on time. + + + + + Don't archive based on time. + + + + + Archive every year. + + + + + Archive every month. + + + + + Archive daily. + + + + + Archive every hour. + + + + + Archive every minute. + + + + + Writes log messages to one or more files. + + Documentation on NLog Wiki + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Removes records of initialized files that have not been + accessed in the last two days. + + + Files are marked 'initialized' for the purpose of writing footers when the logging finishes. + + + + + Removes records of initialized files that have not been + accessed after the specified date. + + The cleanup threshold. + + Files are marked 'initialized' for the purpose of writing footers when the logging finishes. + + + + + Flushes all pending file operations. + + The asynchronous continuation. + + The timeout parameter is ignored, because file APIs don't provide + the needed functionality. + + + + + Initializes file logging by creating data structures that + enable efficient multi-file logging. + + + + + Closes the file(s) opened for writing. + + + + + Writes the specified logging event to a file specified in the FileName + parameter. + + The logging event. + + + + Writes the specified array of logging events to a file specified in the FileName + parameter. + + An array of objects. + + This function makes use of the fact that the events are batched by sorting + the requests by filename. This optimizes the number of open/close calls + and can help improve performance. + + + + + Formats the log event for write. + + The log event to be formatted. + A string representation of the log event. + + + + Gets the bytes to be written to the file. + + Log event. + Array of bytes that are ready to be written. + + + + Modifies the specified byte array before it gets sent to a file. + + The byte array. + The modified byte array. The function can do the modification in-place. + + + + Gets or sets the name of the file to write to. + + + This FileName string is a layout which may include instances of layout renderers. + This lets you use a single target to write to multiple files. + + + The following value makes NLog write logging events to files based on the log level in the directory where + the application runs. + ${basedir}/${level}.log + All Debug messages will go to Debug.log, all Info messages will go to Info.log and so on. + You can combine as many of the layout renderers as you want to produce an arbitrary log file name. + + + + + + Gets or sets a value indicating whether to create directories if they don't exist. + + + Setting this to false may improve performance a bit, but you'll receive an error + when attempting to write to a directory that's not present. + + + + + + Gets or sets a value indicating whether to delete old log file on startup. + + + This option works only when the "FileName" parameter denotes a single file. + + + + + + Gets or sets a value indicating whether to replace file contents on each write instead of appending log message at the end. + + + + + + Gets or sets a value indicating whether to keep log file open instead of opening and closing it on each logging event. + + + Setting this property to True helps improve performance. + + + + + + Gets or sets a value indicating whether to enable log file(s) to be deleted. + + + + + + Gets or sets the line ending mode. + + + + + + Gets or sets a value indicating whether to automatically flush the file buffers after each log message. + + + + + + Gets or sets the number of files to be kept open. Setting this to a higher value may improve performance + in a situation where a single File target is writing to many files + (such as splitting by level or by logger). + + + The files are managed on a LRU (least recently used) basis, which flushes + the files that have not been used for the longest period of time should the + cache become full. As a rule of thumb, you shouldn't set this parameter to + a very high value. A number like 10-15 shouldn't be exceeded, because you'd + be keeping a large number of files open which consumes system resources. + + + + + + Gets or sets the maximum number of seconds that files are kept open. If this number is negative the files are + not automatically closed after a period of inactivity. + + + + + + Gets or sets the log file buffer size in bytes. + + + + + + Gets or sets the file encoding. + + + + + + Gets or sets a value indicating whether concurrent writes to the log file by multiple processes on the same host. + + + This makes multi-process logging possible. NLog uses a special technique + that lets it keep the files open for writing. + + + + + + Gets or sets a value indicating whether concurrent writes to the log file by multiple processes on different network hosts. + + + This effectively prevents files from being kept open. + + + + + + Gets or sets the number of times the write is appended on the file before NLog + discards the log message. + + + + + + Gets or sets the delay in milliseconds to wait before attempting to write to the file again. + + + The actual delay is a random value between 0 and the value specified + in this parameter. On each failed attempt the delay base is doubled + up to times. + + + Assuming that ConcurrentWriteAttemptDelay is 10 the time to wait will be:

+ a random value between 0 and 10 milliseconds - 1st attempt
+ a random value between 0 and 20 milliseconds - 2nd attempt
+ a random value between 0 and 40 milliseconds - 3rd attempt
+ a random value between 0 and 80 milliseconds - 4th attempt
+ ...

+ and so on. + + + + +

+ Gets or sets the size in bytes above which log files will be automatically archived. + + + Caution: Enabling this option can considerably slow down your file + logging in multi-process scenarios. If only one process is going to + be writing to the file, consider setting ConcurrentWrites + to false for maximum performance. + + +
+ + + Gets or sets a value indicating whether to automatically archive log files every time the specified time passes. + + + Files are moved to the archive as part of the write operation if the current period of time changes. For example + if the current hour changes from 10 to 11, the first write that will occur + on or after 11:00 will trigger the archiving. +

+ Caution: Enabling this option can considerably slow down your file + logging in multi-process scenarios. If only one process is going to + be writing to the file, consider setting ConcurrentWrites + to false for maximum performance. +

+
+ +
+ + + Gets or sets the name of the file to be used for an archive. + + + It may contain a special placeholder {#####} + that will be replaced with a sequence of numbers depending on + the archiving strategy. The number of hash characters used determines + the number of numerical digits to be used for numbering files. + + + + + + Gets or sets the maximum number of archive files that should be kept. + + + + + + Gets or sets the way file archives are numbered. + + + + + + Gets the characters that are appended after each line. + + + + + Line ending mode. + + + + + Insert platform-dependent end-of-line sequence after each line. + + + + + Insert CR LF sequence (ASCII 13, ASCII 10) after each line. + + + + + Insert CR character (ASCII 13) after each line. + + + + + Insert LF character (ASCII 10) after each line. + + + + + Don't insert any line ending. + + + + + Sends log messages to a NLog Receiver Service (using WCF or Web Services). + + Documentation on NLog Wiki + + + + Initializes a new instance of the class. + + + + + Writes logging event to the log target. Must be overridden in inheriting + classes. + + Logging event to be written out. + + + + Writes an array of logging events to the log target. By default it iterates on all + events and passes them to "Append" method. Inheriting classes can use this method to + optimize batch writes. + + Logging events to be written out. + + + + Gets or sets the endpoint address. + + The endpoint address. + + + + + Gets or sets the client ID. + + The client ID. + + + + + Gets the list of parameters. + + The parameters. + + + + + Writes log messages to an ArrayList in memory for programmatic retrieval. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +
+
+ + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Renders the logging event message and adds it to the internal ArrayList of log messages. + + The logging event. + + + + Gets the list of logs gathered in the . + + + + + Pops up log messages as message boxes. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ The result is a message box: +

+ +

+ To set up the log target programmatically use code like this: +

+ +
+
+ + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Displays the message box with the log message and caption specified in the Caption + parameter. + + The logging event. + + + + Displays the message box with the array of rendered logs messages and caption specified in the Caption + parameter. + + The array of logging events. + + + + Gets or sets the message box title. + + + + + + A parameter to MethodCall. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The layout to use for parameter value. + + + + Initializes a new instance of the class. + + Name of the parameter. + The layout. + + + + Initializes a new instance of the class. + + The name of the parameter. + The layout. + The type of the parameter. + + + + Gets or sets the name of the parameter. + + + + + + Gets or sets the type of the parameter. + + + + + + Gets or sets the layout that should be use to calcuate the value for the parameter. + + + + + + Calls the specified static method on each log message and passes contextual parameters to it. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +
+
+ + + The base class for all targets which call methods (local or remote). + Manages parameters and type coercion. + + + + + Initializes a new instance of the class. + + + + + Prepares an array of parameters to be passed based on the logging event and calls DoInvoke(). + + + The logging event. + + + + + Calls the target method. Must be implemented in concrete classes. + + Method call parameters. + + + + Gets the array of parameters to be passed. + + + + + + Initializes the target. + + + + + Calls the specified Method. + + Method parameters. + + + + Gets or sets the class name. + + + + + + Gets or sets the method name. The method must be public and static. + + + + + + Action that should be taken if the message overflows. + + + + + Report an error. + + + + + Split the message into smaller pieces. + + + + + Discard the entire message. + + + + + Represents a parameter to a NLogViewer target. + + + + + Initializes a new instance of the class. + + + + + Gets or sets viewer parameter name. + + + + + + Gets or sets the layout that should be use to calcuate the value for the parameter. + + + + + + Discards log messages. Used mainly for debugging and benchmarking. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +
+
+ + + Does nothing. Optionally it calculates the layout text but + discards the results. + + The logging event. + + + + Gets or sets a value indicating whether to perform layout calculation. + + + + + + Marks class as a logging target and assigns a name to it. + + + + + Initializes a new instance of the class. + + Name of the target. + + + + Gets or sets a value indicating whether to the target is a wrapper target (used to generate the target summary documentation page). + + + + + Gets or sets a value indicating whether to the target is a compound target (used to generate the target summary documentation page). + + + + + Web service protocol. + + + + + Use SOAP 1.1 Protocol. + + + + + Use SOAP 1.2 Protocol. + + + + + Use HTTP POST Protocol. + + + + + Use HTTP GET Protocol. + + + + + Calls the specified web service on each log message. + + Documentation on NLog Wiki + + The web service must implement a method that accepts a number of string parameters. + + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +

The example web service that works with this example is shown below

+ +
+
+ + + Initializes a new instance of the class. + + + + + Invokes the web service method. + + Parameters to be passed. + + + + Gets or sets the web service URL. + + + + + + Gets or sets the Web service method name. + + + + + + Gets or sets the Web service namespace. + + + + + + Gets or sets the protocol to be used when calling web service. + + + + + + Asynchronous request queue. + + + + + Initializes a new instance of the AsyncRequestQueue class. + + Request limit. + The overflow action. + + + + Enqueues another item. If the queue is overflown the appropriate + action is taken as specified by . + + The log event info. + + + + Dequeues a maximum of count items from the queue + and adds returns the list containing them. + + Maximum number of items to be dequeued. + The array of log events. + + + + Clears the queue. + + + + + Gets or sets the request limit. + + + + + Gets or sets the action to be taken when there's no more room in + the queue and another request is enqueued. + + + + + Gets the number of requests currently in the queue. + + + + + Provides asynchronous, buffered execution of target writes. + + Documentation on NLog Wiki + +

+ Asynchronous target wrapper allows the logger code to execute more quickly, by queueing + messages and processing them in a separate thread. You should wrap targets + that spend a non-trivial amount of time in their Write() method with asynchronous + target to speed up logging. +

+

+ Because asynchronous logging is quite a common scenario, NLog supports a + shorthand notation for wrapping all targets with AsyncWrapper. Just add async="true" to + the <targets/> element in the configuration file. +

+ + + ... your targets go here ... + + ]]> +
+ +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +

+ +
+
+ + + Base class for targets wrap other (single) targets. + + + + + Returns the text representation of the object. Used for diagnostics. + + A string that describes the target. + + + + Flush any pending log messages (in case of asynchronous targets). + + The asynchronous continuation. + + + + Writes logging event to the log target. Must be overridden in inheriting + classes. + + Logging event to be written out. + + + + Gets or sets the target that is wrapped by this target. + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The wrapped target. + + + + Initializes a new instance of the class. + + The wrapped target. + Maximum number of requests in the queue. + The action to be taken when the queue overflows. + + + + Waits for the lazy writer thread to finish writing messages. + + The asynchronous continuation. + + + + Initializes the target by starting the lazy writer timer. + + + + + Shuts down the lazy writer timer. + + + + + Starts the lazy writer thread which periodically writes + queued log messages. + + + + + Starts the lazy writer thread. + + + + + Adds the log event to asynchronous queue to be processed by + the lazy writer thread. + + The log event. + + The is called + to ensure that the log event can be processed in another thread. + + + + + Gets or sets the number of log events that should be processed in a batch + by the lazy writer thread. + + + + + + Gets or sets the time in milliseconds to sleep between batches. + + + + + + Gets or sets the action to be taken when the lazy writer thread request queue count + exceeds the set limit. + + + + + + Gets or sets the limit on the number of requests in the lazy writer thread request queue. + + + + + + Gets the queue of lazy writer thread requests. + + + + + The action to be taken when the queue overflows. + + + + + Grow the queue. + + + + + Discard the overflowing item. + + + + + Causes a flush after each write on a wrapped target. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +

+ +
+
+ + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Initializes a new instance of the class. + + The wrapped target. + + + + Forwards the call to the .Write() + and calls on it. + + Logging event to be written out. + + + + A target that buffers log events and sends them in batches to the wrapped target. + + Documentation on NLog Wiki + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The wrapped target. + + + + Initializes a new instance of the class. + + The wrapped target. + Size of the buffer. + + + + Initializes a new instance of the class. + + The wrapped target. + Size of the buffer. + The flush timeout. + + + + Flushes pending events in the buffer (if any). + + The asynchronous continuation. + + + + Initializes the target. + + + + + Closes the target by flushing pending events in the buffer (if any). + + + + + Adds the specified log event to the buffer and flushes + the buffer in case the buffer gets full. + + The log event. + + + + Gets or sets the number of log events to be buffered. + + + + + + Gets or sets the timeout (in milliseconds) after which the contents of buffer will be flushed + if there's no write in the specified period of time. Use -1 to disable timed flushes. + + + + + + Gets or sets a value indicating whether to use sliding timeout. + + + This value determines how the inactivity period is determined. If sliding timeout is enabled, + the inactivity timer is reset after each write, if it is disabled - inactivity timer will + count from the first event written to the buffer. + + + + + + A base class for targets which wrap other (multiple) targets + and provide various forms of target routing. + + + + + Initializes a new instance of the class. + + The targets. + + + + Returns the text representation of the object. Used for diagnostics. + + A string that describes the target. + + + + Writes logging event to the log target. + + Logging event to be written out. + + + + Flush any pending log messages for all wrapped targets. + + The asynchronous continuation. + + + + Gets the collection of targets managed by this compound target. + + + + + Provides fallback-on-error. + + Documentation on NLog Wiki + +

This example causes the messages to be written to server1, + and if it fails, messages go to server2.

+

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +

+ +
+
+ + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The targets. + + + + Forwards the log event to the sub-targets until one of them succeeds. + + The log event. + + The method remembers the last-known-successful target + and starts the iteration from it. + If is set, the method + resets the target to the first target + stored in . + + + + + Gets or sets a value indicating whether to return to the first target after any successful write. + + + + + + Filtering rule for . + + + + + Initializes a new instance of the FilteringRule class. + + + + + Initializes a new instance of the FilteringRule class. + + Condition to be tested against all events. + Filter to apply to all log events when the first condition matches any of them. + + + + Gets or sets the condition to be tested. + + + + + + Gets or sets the resulting filter to be applied when the condition matches. + + + + + + Filters log entries based on a condition. + + Documentation on NLog Wiki + +

This example causes the messages not contains the string '1' to be ignored.

+

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +

+ +
+
+ + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The wrapped target. + The condition. + + + + Checks the condition against the passed log event. + If the condition is met, the log event is forwarded to + the wrapped target. + + Log event. + + + + Gets or sets the condition expression. Log events who meet this condition will be forwarded + to the wrapped target. + + + + + + Logon provider. + + + + + Use the standard logon provider for the system. + + + The default security provider is negotiate, unless you pass NULL for the domain name and the user name + is not in UPN format. In this case, the default provider is NTLM. + NOTE: Windows 2000/NT: The default security provider is NTLM. + + + + + Filters buffered log entries based on a set of conditions that are evaluated on a group of events. + + Documentation on NLog Wiki + + PostFilteringWrapper must be used with some type of buffering target or wrapper, such as + AsyncTargetWrapper, BufferingWrapper or ASPNetBufferingWrapper. + + +

+ This example works like this. If there are no Warn,Error or Fatal messages in the buffer + only Info messages are written to the file, but if there are any warnings or errors, + the output includes detailed trace (levels >= Debug). You can plug in a different type + of buffering wrapper (such as ASPNetBufferingWrapper) to achieve different + functionality. +

+

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +

+ +
+
+ + + Initializes a new instance of the class. + + + + + Evaluates all filtering rules to find the first one that matches. + The matching rule determines the filtering condition to be applied + to all items in a buffer. If no condition matches, default filter + is applied to the array of log events. + + Array of log events to be post-filtered. + + + + Gets or sets the default filter to be applied when no specific rule matches. + + + + + + Gets the collection of filtering rules. The rules are processed top-down + and the first rule that matches determines the filtering condition to + be applied to log events. + + + + + + Sends log messages to a randomly selected target. + + Documentation on NLog Wiki + +

This example causes the messages to be written to either file1.txt or file2.txt + chosen randomly on a per-message basis. +

+

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +

+ +
+
+ + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The targets. + + + + Forwards the log event to one of the sub-targets. + The sub-target is randomly chosen. + + The log event. + + + + Repeats each log event the specified number of times. + + Documentation on NLog Wiki + +

This example causes each log message to be repeated 3 times.

+

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +

+ +
+
+ + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The wrapped target. + The repeat count. + + + + Forwards the log message to the by calling the method times. + + The log event. + + + + Gets or sets the number of times to repeat each log message. + + + + + + Retries in case of write error. + + Documentation on NLog Wiki + +

This example causes each write attempt to be repeated 3 times, + sleeping 1 second between attempts if first one fails.

+

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +

+ +
+
+ + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The wrapped target. + The retry count. + The retry delay milliseconds. + + + + Writes the specified log event to the wrapped target, retrying and pausing in case of an error. + + The log event. + + + + Gets or sets the number of retries that should be attempted on the wrapped target in case of a failure. + + + + + + Gets or sets the time to wait between retries in milliseconds. + + + + + + Distributes log events to targets in a round-robin fashion. + + Documentation on NLog Wiki + +

This example causes the messages to be written to either file1.txt or file2.txt. + Each odd message is written to file2.txt, each even message goes to file1.txt. +

+

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +

+ +
+
+ + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The targets. + + + + Forwards the write to one of the targets from + the collection. + + The log event. + + The writes are routed in a round-robin fashion. + The first log event goes to the first target, the second + one goes to the second target and so on looping to the + first target when there are no more targets available. + In general request N goes to Targets[N % Targets.Count]. + + + + + Impersonation level. + + + + + Anonymous Level. + + + + + Identification Level. + + + + + Impersonation Level. + + + + + Delegation Level. + + + + + Logon type. + + + + + Interactive Logon. + + + This logon type is intended for users who will be interactively using the computer, such as a user being logged on + by a terminal server, remote shell, or similar process. + This logon type has the additional expense of caching logon information for disconnected operations; + therefore, it is inappropriate for some client/server applications, + such as a mail server. + + + + + Network Logon. + + + This logon type is intended for high performance servers to authenticate plaintext passwords. + The LogonUser function does not cache credentials for this logon type. + + + + + Batch Logon. + + + This logon type is intended for batch servers, where processes may be executing on behalf of a user without + their direct intervention. This type is also for higher performance servers that process many plaintext + authentication attempts at a time, such as mail or Web servers. + The LogonUser function does not cache credentials for this logon type. + + + + + Logon as a Service. + + + Indicates a service-type logon. The account provided must have the service privilege enabled. + + + + + Network Clear Text Logon. + + + This logon type preserves the name and password in the authentication package, which allows the server to make + connections to other network servers while impersonating the client. A server can accept plaintext credentials + from a client, call LogonUser, verify that the user can access the system across the network, and still + communicate with other servers. + NOTE: Windows NT: This value is not supported. + + + + + New Network Credentials. + + + This logon type allows the caller to clone its current token and specify new credentials for outbound connections. + The new logon session has the same local identifier but uses different credentials for other network connections. + NOTE: This logon type is supported only by the LOGON32_PROVIDER_WINNT50 logon provider. + NOTE: Windows NT: This value is not supported. + + + + + Writes log events to all targets. + + Documentation on NLog Wiki + +

This example causes the messages to be written to both file1.txt or file2.txt +

+

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +

+ +
+
+ + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The targets. + + + + Forwards the specified log event to all sub-targets. + + The log event. + + + + Writes an array of logging events to the log target. By default it iterates on all + events and passes them to "Write" method. Inheriting classes can use this method to + optimize batch writes. + + Logging events to be written out. + + + diff --git a/NzbDrone.Web/Bin/Ninject.Web.Mvc.dll b/NzbDrone.Web/Bin/Ninject.Web.Mvc.dll new file mode 100644 index 0000000000000000000000000000000000000000..3cb775640bb8175fc52c5a51d69d3e72b6cdb1d2 GIT binary patch literal 9728 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 C4=vRI literal 0 HcmV?d00001 diff --git a/NzbDrone.Web/Bin/Ninject.Web.Mvc.pdb b/NzbDrone.Web/Bin/Ninject.Web.Mvc.pdb new file mode 100644 index 0000000000000000000000000000000000000000..f704e894abd1478cf2feb87b941d0f37b7a5ba36 GIT binary patch literal 17920 zcmeHO3v86f5#BqW5A!g!DG6X6HN>P4z&=ATE+OC-4iJb#Ou|EM;C%jpE9TDJ{Sc6- zbX24-nTo236cCX>qzzS@iYkywEvT+UX`zWK6@-XXHBm+SQUxT6+6bl4@7u@Sf9E^< zY=Z>$O_-a1cV>2WXLo1kU;kMZ3`D}w@MgQTzM_8CtkPA@jin39eZImGB@N92;FkZy zBX~T+GGLk_x!*zHfv!6_7|I@~#v1-?C_7+?kA39DN*C9FDAEWrM%=mM0nLlyCkKPt z19^jbbh*Lx=7CqrD_vK*4zF}UaPluMuPFTBLgVqj{5f>teDz+VOCB)?gU zXZ&ZGBTuD+&l^K;M4z>;UUGierQ(ClqO0k+``EdqPapc{-~Lp5aEU69eEpjniZ@>> zKKmH*#De8#H~lD7^T)PttbFHY-Q|6eHxDswARJvk-+gP?=_~(Td0<@0^|o)R+T8E` z?t!~C|COgdzq(>|^`h?;o!tAovxmFx_i^X?r#x`C=6|%c>&=4GtNfP^Ty(Ga-+z9V z^Y4S>0p@nN<`aAu;JKd<^a6(g3xLCcBY-1;qkx4##{FX87~mIyqk&%ljs-phd>A+m zn1cty16BG((9j2?*STH})C0F~+`hs6-@%`Tg)L1TRwx?Y83|Y|Ypkf<@=P%FH7j73 zueDmsSM3Uza(y^tN5bvxR;1A%u)~o(<$vb0+RB+n^}Vh*zK z0MGk!@feSC(ZwGC&vFBpUrw*O|0(BI=h>cDOuhX;Bg=UhA<218 zy5jS}JaRXXFh}ahHe(#~Je12o=YxJ3v_jsS;KnZnC!m&KG zIpUAnk(~j1XT*~G9JAbWjKDtOc$_hUWsf^~jo0b%Zq*a*9PbzmhjT1hiyS$|#%9|e zu@|>)+$gs}U-lN-m;2e+{ZQLA=ReHx9m*T(*={A}`eS#Y9&ac7L*N-~06B$s4+^qN z-G-}T<25kXL6>?)*2G3s>)7ZK_045-%X|RHF@6oCuhk4VfC@$AFZQOl3Vlh_*Kh|U z7{?EC4M3NAM)qFy)y(Hf-B-pj19)HdTBffmJ|~U@oikImKRz<&T^ScQK>9;H@*Ul~ z!`N*KIc8L@U#ksr1F`v98k-omH7(oZH=z!?`?E}n~@H)^k@ zm&JOBtreT%vTC2DmwgdL-2ot8|>rK{lsg^sS%K`xpRT;sRhL5TY|oDHU&ql3=_a&P++`}34sKj|+H&Dv2idhN9)bZ1}_x)mF`MvfFDf3K~sZ)}`5zo8!1=KQi8>2pgH4fB3YLCZ7d$tA*D zSkL@JLBu@BvA%#3^OaO^iHQ6=9p9q~E)i7^^4V(H3Yy@pwG7iG>_`X&{B1!3%lZ** z1fqLTFn?2`uMO~-_tSV!m5|EgJ+kR%DsKlWOr4=@gwOH6HRv+y3FPrE()dg-yEtzj zcm=Y=IF$hE@h%_}kM9zhczoB-#5)F_xzBRibHjQecH389(bUq z|No13C>6NK-zKjwD?+f)UvIjv|#_TS(I(tZCYo9=5% zX};#`S3BLl&SNCxU-`I7cj=wU*CG=k8Stk8d1FkueBdb{Z|vHECMw|ZK87*q8{cbN zF-*Khh~xSkJBc#iS=Tvm6P{-P`L}rwhCLR@`!ePTU7(Cqr9gUUGH?nI_qH;|^Uju@ zqF3l4dW`1@V>R-QZr_uSMIG;+m~V^&vX9I=CIU-Vyop>353mRR4}$uY AkpKVy literal 0 HcmV?d00001 diff --git a/NzbDrone.Web/Bin/Ninject.dll b/NzbDrone.Web/Bin/Ninject.dll new file mode 100644 index 0000000000000000000000000000000000000000..35fdfc41b1451c298d22aac9dfb25c9be134ee25 GIT binary patch literal 96256 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 literal 0 HcmV?d00001 diff --git a/NzbDrone.Web/Bin/Ninject.xml b/NzbDrone.Web/Bin/Ninject.xml new file mode 100644 index 000000000..d9cf2f22a --- /dev/null +++ b/NzbDrone.Web/Bin/Ninject.xml @@ -0,0 +1,4026 @@ + + + + Ninject + + + + + A block used for deterministic disposal of activated instances. When the block is + disposed, all instances activated via it will be deactivated. + + + + + An object that notifies when it is disposed. + + + + + An object that can report whether or not it is disposed. + + + + + Gets a value indicating whether this instance is disposed. + + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Releases resources held by the object. + + + + + Releases resources before the object is reclaimed by garbage collection. + + + + + Gets a value indicating whether this instance is disposed. + + + + + A block used for deterministic disposal of activated instances. When the block is + disposed, all instances activated via it will be deactivated. + + + + + Provides a path to resolve instances. + + + + + Determines whether the specified request can be resolved. + + The request. + True if the request can be resolved; otherwise, false. + + + + Resolves instances for the specified request. The instances are not actually resolved + until a consumer iterates over the enumerator. + + The request to resolve. + An enumerator of instances that match the request. + + + + Creates a request for the specified service. + + The service that is being requested. + The constraint to apply to the bindings to determine if they match the request. + The parameters to pass to the resolution. + True if the request is optional; otherwise, false. + True if the request should return a unique result; otherwise, false. + The created request. + + + + An object that fires an event when it is disposed. + + + + + Occurs when the object is disposed. + + + + + Initializes a new instance of the class. + + The parent resolution root. + + + + Releases resources held by the object. + + + + + Determines whether the specified request can be resolved. + + The request. + True if the request can be resolved; otherwise, false. + + + + Resolves instances for the specified request. The instances are not actually resolved + until a consumer iterates over the enumerator. + + The request to resolve. + An enumerator of instances that match the request. + + + + Creates a request for the specified service. + + The service that is being requested. + The constraint to apply to the bindings to determine if they match the request. + The parameters to pass to the resolution. + True if the request is optional; otherwise, false. + True if the request should return a unique result; otherwise, false. + The created request. + + + + Gets or sets the parent resolution root (usually the kernel). + + + + + Occurs when the object is disposed. + + + + + Tracks instances for re-use in certain scopes. + + + + + A component that contributes to the internals of Ninject. + + + + + A component that contributes to the internals of Ninject. + + + + + Gets or sets the settings. + + + + + Gets or sets the settings. + + + + + Tracks instances for re-use in certain scopes. + + + + + Stores the specified instance in the cache. + + The context to store. + The instance reference. + + + + Tries to retrieve an instance to re-use in the specified context. + + The context that is being activated. + The instance for re-use, or if none has been stored. + + + + Deactivates and releases the specified instance from the cache. + + The instance to release. + if the instance was found and released; otherwise . + + + + Removes instances from the cache which should no longer be re-used. + + + + + Immediately deactivates and removes all instances in the cache that are owned by + the specified scope. + + The scope whose instances should be deactivated. + + + + Immediately deactivates and removes all instances in the cache, regardless of scope. + + + + + Gets the number of entries currently stored in the cache. + + + + + Initializes a new instance of the class. + + The pipeline component. + The cache pruner component. + + + + Releases resources held by the object. + + + + + Stores the specified context in the cache. + + The context to store. + The instance reference. + + + + Tries to retrieve an instance to re-use in the specified context. + + The context that is being activated. + The instance for re-use, or if none has been stored. + + + + Deactivates and releases the specified instance from the cache. + + The instance to release. + if the instance was found and released; otherwise . + + + + Removes instances from the cache which should no longer be re-used. + + + + + Immediately deactivates and removes all instances in the cache that are owned by + the specified scope. + + The scope whose instances should be deactivated. + + + + Immediately deactivates and removes all instances in the cache, regardless of scope. + + + + + Gets or sets the pipeline component. + + + + + Gets the number of entries currently stored in the cache. + + + + + Uses a and some magic to poll + the garbage collector to see if it has run. + + + + + Prunes instances from an based on environmental information. + + + + + Starts pruning the specified cache based on the rules of the pruner. + + The cache that will be pruned. + + + + Stops pruning. + + + + + Releases resources held by the object. + + + + + Starts pruning the specified cache based on the rules of the pruner. + + The cache that will be pruned. + + + + Stops pruning. + + + + + Gets the cache that is being pruned. + + + + + A provider that delegates to a callback method to create instances. + + The type of instances the provider creates. + + + + A simple abstract provider for instances of a specific type. + + The type of instances the provider creates. + + + + Creates instances of services. + + + + + Creates an instance within the specified context. + + The context. + The created instance. + + + + Gets the type (or prototype) of instances the provider creates. + + + + + Creates an instance within the specified context. + + The context. + The created instance. + + + + Creates an instance within the specified context. + + The context. + The created instance. + + + + Gets the type (or prototype) of instances the provider creates. + + + + + Initializes a new instance of the CallbackProvider<T> class. + + The callback method that will be called to create instances. + + + + Invokes the callback method to create an instance. + + The context. + The created instance. + + + + Gets the callback method used by the provider. + + + + + A provider that always returns the same constant value. + + The type of value that is returned. + + + + Initializes a new instance of the ConstantProvider<T> class. + + The value that the provider should return. + + + + Creates an instance within the specified context. + + The context. + The constant value this provider returns. + + + + Gets the value that the provider will return. + + + + + The standard provider for types, which activates instances via a . + + + + + Initializes a new instance of the class. + + The type (or prototype) of instances the provider creates. + The planner component. + The selector component. + + + + Creates an instance within the specified context. + + The context. + The created instance. + + + + Gets the value to inject into the specified target. + + The context. + The target. + The value to inject into the specified target. + + + + Gets the implementation type that the provider will activate an instance of + for the specified service. + + The service in question. + The implementation type that will be activated. + + + + Gets a callback that creates an instance of the + for the specified type. + + The prototype the provider instance will create. + The created callback. + + + + Gets the type (or prototype) of instances the provider creates. + + + + + Gets or sets the planner component. + + + + + Gets or sets the selector component. + + + + + Contributes to a , and is called during the activation + and deactivation of an instance. + + + + + Contributes to a , and is called during the activation + and deactivation of an instance. + + + + + Contributes to the activation of the instance in the specified context. + + The context. + A reference to the instance being activated. + + + + Contributes to the deactivation of the instance in the specified context. + + The context. + A reference to the instance being deactivated. + + + + Contributes to the activation of the instance in the specified context. + + The context. + A reference to the instance being activated. + + + + Contributes to the deactivation of the instance in the specified context. + + The context. + A reference to the instance being deactivated. + + + + Executes actions defined on the binding during activation and deactivation. + + + + + Calls the activation actions defined on the binding. + + The context. + A reference to the instance being activated. + + + + Calls the deactivation actions defined on the binding. + + The context. + A reference to the instance being deactivated. + + + + During deactivation, disposes instances that implement . + + + + + Disposes the specified instance. + + The context. + A reference to the instance being deactivated. + + + + During activation, initializes instances that implement . + + + + + Initializes the specified instance. + + The context. + A reference to the instance being activated. + + + + Injects methods on an instance during activation. + + + + + Injects values into the properties as described by s + contained in the plan. + + The context. + A reference to the instance being activated. + + + + Injects properties on an instance during activation. + + + + + Initializes a new instance of the class. + + The injector factory component. + + + + Injects values into the properties as described by s + contained in the plan. + + The context. + A reference to the instance being activated. + + + + Applies user supplied override values to instance properties. + + The context. + A reference to the instance being activated. + The parameter ovverride value accessors. + + + + Gets the value to inject into the specified target. + + The context. + The target. + The value to inject into the specified target. + + + + Gets the injector factory component. + + + + + Starts instances that implement during activation, + and stops them during deactivation. + + + + + Starts the specified instance. + + The context. + A reference to the instance being activated. + + + + Stops the specified instance. + + The context. + A reference to the instance being deactivated. + + + + Contains information about the activation of a single instance. + + + + + Contains information about the activation of a single instance. + + + + + Gets the provider that should be used to create the instance for this context. + + The provider that should be used. + + + + Gets the scope for the context that "owns" the instance activated therein. + + The object that acts as the scope. + + + + Resolves this instance for this context. + + The resolved instance. + + + + Gets the kernel that is driving the activation. + + + + + Gets the request. + + + + + Gets the binding. + + + + + Gets or sets the activation plan. + + + + + Gets the parameters that were passed to manipulate the activation process. + + + + + Gets the generic arguments for the request, if any. + + + + + Gets a value indicating whether the request involves inferred generic arguments. + + + + + Initializes a new instance of the class. + + The kernel managing the resolution. + The context's request. + The context's binding. + The cache component. + The planner component. + The pipeline component. + + + + Gets the scope for the context that "owns" the instance activated therein. + + The object that acts as the scope. + + + + Gets the provider that should be used to create the instance for this context. + + The provider that should be used. + + + + Resolves the instance associated with this hook. + + The resolved instance. + + + + Gets the kernel that is driving the activation. + + + + + Gets the request. + + + + + Gets the binding. + + + + + Gets or sets the activation plan. + + + + + Gets the parameters that were passed to manipulate the activation process. + + + + + Gets the generic arguments for the request, if any. + + + + + Gets a value indicating whether the request involves inferred generic arguments. + + + + + Gets or sets the cache component. + + + + + Gets or sets the planner component. + + + + + Gets or sets the pipeline component. + + + + + Holds an instance during activation or after it has been cached. + + + + + Returns a value indicating whether the instance is of the specified type. + + The type in question. + if the instance is of the specified type, otherwise . + + + + Returns the instance as the specified type. + + The requested type. + The instance. + + + + Executes the specified action if the instance if of the specified type. + + The type in question. + The action to execute. + + + + Gets or sets the instance. + + + + + Drives the activation (injection, etc.) of an instance. + + + + + Activates the instance in the specified context. + + The context. + The instance reference. + + + + Deactivates the instance in the specified context. + + The context. + The instance reference. + + + + Gets the strategies that contribute to the activation and deactivation processes. + + + + + Describes the request for a service resolution. + + + + + Determines whether the specified binding satisfies the constraint defined on this request. + + The binding. + True if the binding satisfies the constraint; otherwise false. + + + + Gets the scope if one was specified in the request. + + The object that acts as the scope. + + + + Creates a child request. + + The service that is being requested. + The context in which the request was made. + The target that will receive the injection. + The child request. + + + + Gets the service that was requested. + + + + + Gets the parent request. + + + + + Gets the parent context. + + + + + Gets the target that will receive the injection, if any. + + + + + Gets the constraint that will be applied to filter the bindings used for the request. + + + + + Gets the parameters that affect the resolution. + + + + + Gets the stack of bindings which have been activated by either this request or its ancestors. + + + + + Gets the recursive depth at which this request occurs. + + + + + Gets or sets value indicating whether the request is optional. + + + + + Gets or sets value indicating whether the request should return a unique result. + + + + + Drives the activation (injection, etc.) of an instance. + + + + + Initializes a new instance of the class. + + The strategies to execute during activation and deactivation. + + + + Activates the instance in the specified context. + + The context. + The instance reference. + + + + Deactivates the instance in the specified context. + + The context. + The instance reference. + + + + Gets the strategies that contribute to the activation and deactivation processes. + + + + + Describes the request for a service resolution. + + + + + Initializes a new instance of the class. + + The service that was requested. + The constraint that will be applied to filter the bindings used for the request. + The parameters that affect the resolution. + The scope callback, if an external scope was specified. + True if the request is optional; otherwise, false. + True if the request should return a unique result; otherwise, false. + + + + Initializes a new instance of the class. + + The parent context. + The service that was requested. + The target that will receive the injection. + The scope callback, if an external scope was specified. + + + + Determines whether the specified binding satisfies the constraints defined on this request. + + The binding. + True if the binding satisfies the constraints; otherwise false. + + + + Gets the scope if one was specified in the request. + + The object that acts as the scope. + + + + Creates a child request. + + The service that is being requested. + The context in which the request was made. + The target that will receive the injection. + The child request. + + + + Gets the service that was requested. + + + + + Gets the parent request. + + + + + Gets the parent context. + + + + + Gets the target that will receive the injection, if any. + + + + + Gets the constraint that will be applied to filter the bindings used for the request. + + + + + Gets the parameters that affect the resolution. + + + + + Gets the stack of bindings which have been activated by either this request or its ancestors. + + + + + Gets the recursive depth at which this request occurs. + + + + + Gets or sets value indicating whether the request is optional. + + + + + Gets or sets value indicating whether the request is for a single service. + + + + + Gets the callback that resolves the scope for the request, if an external scope was provided. + + + + + Defines a constraint on the decorated member. + + + + + Determines whether the specified binding metadata matches the constraint. + + The metadata in question. + True if the metadata matches; otherwise false. + + + + Indicates that the decorated member should be injected. + + + + + Indicates that the decorated member should only be injected using binding(s) registered + with the specified name. + + + + + Initializes a new instance of the class. + + The name of the binding(s) to use. + + + + Determines whether the specified binding metadata matches the constraint. + + The metadata in question. + True if the metadata matches; otherwise false. + + + + Gets the binding name. + + + + + Indicates that the decorated member represents an optional dependency. + + + + + An internal container that manages and resolves components that contribute to Ninject. + + + + + An internal container that manages and resolves components that contribute to Ninject. + + + + + Registers a component in the container. + + The component type. + The component's implementation type. + + + + Removes all registrations for the specified component. + + The component type. + + + + Removes all registrations for the specified component. + + The component's type. + + + + Gets one instance of the specified component. + + The component type. + The instance of the component. + + + + Gets all available instances of the specified component. + + The component type. + A series of instances of the specified component. + + + + Gets one instance of the specified component. + + The component type. + The instance of the component. + + + + Gets all available instances of the specified component. + + The component type. + A series of instances of the specified component. + + + + Gets or sets the kernel that owns the component container. + + + + + Releases resources held by the object. + + + + + Registers a component in the container. + + The component type. + The component's implementation type. + + + + Removes all registrations for the specified component. + + The component type. + + + + Removes all registrations for the specified component. + + The component type. + + + + Gets one instance of the specified component. + + The component type. + The instance of the component. + + + + Gets all available instances of the specified component. + + The component type. + A series of instances of the specified component. + + + + Gets one instance of the specified component. + + The component type. + The instance of the component. + + + + Gets all available instances of the specified component. + + The component type. + A series of instances of the specified component. + + + + Gets or sets the kernel that owns the component container. + + + + + Represents a future value. + + The type of value. + + + + Initializes a new instance of the Future<T> class. + + The callback that will be triggered to read the value. + + + + Gets the value from the future. + + The future. + The future value. + + + + Gets the value, resolving it if necessary. + + + + + Gets the callback that will be called to resolve the value. + + + + + Indicates the object has a reference to a . + + + + + Gets the binding. + + + + + Indicates that the object has a reference to an . + + + + + Gets the kernel. + + + + + A data structure that contains multiple values for a each key. + + The type of key. + The type of value. + + + + Adds the specified value for the specified key. + + The key. + The value. + + + + Removes the specified value for the specified key. + + The key. + The value. + True if such a value existed and was removed; otherwise false. + + + + Removes all values for the specified key. + + The key. + True if any such values existed; otherwise false. + + + + Removes all values. + + + + + Determines whether the multimap contains any values for the specified key. + + The key. + True if the multimap has one or more values for the specified key; otherwise, false. + + + + Determines whether the multimap contains the specified value for the specified key. + + The key. + The value. + True if the multimap contains such a value; otherwise, false. + + + + Returns an enumerator that iterates through a the multimap. + + An object that can be used to iterate through the multimap. + + + + Gets the collection of values stored under the specified key. + + The key. + + + + Gets the collection of keys. + + + + + Gets the collection of collections of values. + + + + + Defines the style of request (single or multi-injection, whether it is optional, etc.) + + + + + Indicates a request for a single instance of a service. + + + + + Indicates a request for multiple instances of a service. + + + + + Indicates that null should be returned (instead of throwing) if the service cannot be resolved. + + + + + Scope callbacks for standard scopes. + + + + + Gets the callback for transient scope. + + + + + Gets the callback for singleton scope. + + + + + Gets the callback for thread scope. + + + + + Gets the callback for request scope. + + + + + A delegate that can inject values into a constructor. + + + + + Creates injectors for members via s. + + + + + Creates injectors from members. + + + + + Gets or creates an injector for the specified constructor. + + The constructor. + The created injector. + + + + Gets or creates an injector for the specified property. + + The property. + The created injector. + + + + Gets or creates an injector for the specified method. + + The method. + The created injector. + + + + Gets or creates an injector for the specified constructor. + + The constructor. + The created injector. + + + + Gets or creates an injector for the specified property. + + The property. + The created injector. + + + + Gets or creates an injector for the specified method. + + The method. + The created injector. + + + + A delegate that can inject values into a method. + + + + + A delegate that can inject values into a property. + + + + + Creates injectors from members via reflective invocation. + + + + + Gets or creates an injector for the specified constructor. + + The constructor. + The created injector. + + + + Gets or creates an injector for the specified property. + + The property. + The created injector. + + + + Gets or creates an injector for the specified method. + + The method. + The created injector. + + + + Loads modules from compiled assemblies. + + + + + Loads modules at runtime by searching external files. + + + + + Loads modules from the specified files. + + The names of the files to load modules from. + + + + Gets the file extensions that the plugin understands how to load. + + + + + Initializes a new instance of the class. + + The kernel into which modules will be loaded. + + + + Loads modules from the specified files. + + The names of the files to load modules from. + + + + Gets or sets the kernel into which modules will be loaded. + + + + + Gets the file extensions that the plugin understands how to load. + + + + + Finds modules defined in external files. + + + + + Loads any modules found in the files that match the specified patterns. + + The patterns to search. + + + + A pluggable unit that can be loaded into an . + + + + + Called when the module is loaded into a kernel. + + The kernel that is loading the module. + + + + Called when the module is unloaded from a kernel. + + The kernel that is unloading the module. + + + + Gets the module's name. + + + + + Automatically finds and loads modules from assemblies. + + + + + Initializes a new instance of the class. + + The kernel into which modules will be loaded. + + + + Loads any modules found in the files that match the specified patterns. + + The patterns to search. + + + + Gets or sets the kernel into which modules will be loaded. + + + + + A loadable unit that defines bindings for your application. + + + + + Provides a path to register bindings. + + + + + Provides a path to register bindings. + + + + + Declares a binding for the specified service. + + The service to bind. + + + + Declares a binding from the service to itself. + + The service to bind. + + + + Unregisters all bindings for the specified service. + + The service to unbind. + + + + Unregisters all bindings for the specified service. + + The service to unbind. + + + + Removes any existing bindings for the specified service, and declares a new one. + + The service to re-bind. + + + + Removes any existing bindings for the specified service, and declares a new one. + + The service to re-bind. + + + + Registers the specified binding. + + The binding to add. + + + + Unregisters the specified binding. + + The binding to remove. + + + + Declares a binding for the specified service. + + The service to bind. + + + + Declares a binding for the specified service. + + The service to bind. + + + + Unregisters all bindings for the specified service. + + The service to unbind. + + + + Unregisters all bindings for the specified service. + + The service to unbind. + + + + Removes any existing bindings for the specified service, and declares a new one. + + The service to re-bind. + + + + Removes any existing bindings for the specified service, and declares a new one. + + The service to re-bind. + + + + Registers the specified binding. + + The binding to add. + + + + Unregisters the specified binding. + + The binding to remove. + + + + Creates a new builder for the specified binding. + + The type restriction to apply to the binding builder. + The binding that will be built. + The created builder. + + + + Initializes a new instance of the class. + + + + + Called when the module is loaded into a kernel. + + The kernel that is loading the module. + + + + Called when the module is unloaded from a kernel. + + The kernel that is unloading the module. + + + + Loads the module into the kernel. + + + + + Unloads the module from the kernel. + + + + + Unregisters all bindings for the specified service. + + The service to unbind. + + + + Registers the specified binding. + + The binding to add. + + + + Unregisters the specified binding. + + The binding to remove. + + + + Creates a new builder for the specified binding. + + The type restriction to apply to the binding builder. + The binding that will be built. + The created builder. + + + + Gets the kernel that the module is loaded into. + + + + + Gets the module's name. Only a single module with a given name can be loaded at one time. + + + + + Gets the bindings that were registered by the module. + + + + + Overrides the injected value of a constructor argument. + + + + + Modifies an activation process in some way. + + + + + Modifies an activation process in some way. + + + + + Gets the value for the parameter within the specified context. + + The context. + The value for the parameter. + + + + Gets the name of the parameter. + + + + + Gets a value indicating whether the parameter should be inherited into child requests. + + + + + Initializes a new instance of the class. + + The name of the parameter. + The value of the parameter. + Whether the parameter should be inherited into child requests. + + + + Initializes a new instance of the class. + + The name of the parameter. + The callback that will be triggered to get the parameter's value. + Whether the parameter should be inherited into child requests. + + + + Gets the value for the parameter within the specified context. + + The context. + The value for the parameter. + + + + Determines whether the object equals the specified object. + + An object to compare with this object. + True if the objects are equal; otherwise false + + + + Serves as a hash function for a particular type. + + A hash code for the object. + + + + Indicates whether the current object is equal to another object of the same type. + + An object to compare with this object. + True if the objects are equal; otherwise false + + + + Gets the name of the parameter. + + + + + Gets a value indicating whether the parameter should be inherited into child requests. + + + + + Gets or sets the callback that will be triggered to get the parameter's value. + + + + + Initializes a new instance of the class. + + The name of the argument to override. + The value to inject into the property. + + + + Initializes a new instance of the class. + + The name of the argument to override. + The callback to invoke to get the value that should be injected. + + + + Overrides the injected value of a property. + + + + + Initializes a new instance of the class. + + The name of the property to override. + The value to inject into the property. + + + + Initializes a new instance of the class. + + The name of the property to override. + The callback to invoke to get the value that should be injected. + + + + Contains logic about which bindings to use for a given service request. + + + + + Returns any bindings from the specified collection that match the specified service. + + The multimap of all registered bindings. + The service in question. + The series of matching bindings. + + + + Resolves bindings for open generic types. + + + + + Returns any bindings from the specified collection that match the specified service. + + The multimap of all registered bindings. + The service in question. + The series of matching bindings. + + + + Resolves bindings that have been registered directly for the service. + + + + + Returns any bindings from the specified collection that match the specified service. + + The multimap of all registered bindings. + The service in question. + The series of matching bindings. + + + + Contains information about a service registration. + + + + + Contains information about a service registration. + + + + + Gets the provider for the binding. + + The context. + The provider to use. + + + + Gets the scope for the binding, if any. + + The context. + The object that will act as the scope, or if the service is transient. + + + + Determines whether the specified request satisfies the condition defined on the binding, + if one was defined. + + The request. + True if the request satisfies the condition; otherwise false. + + + + Gets the service type that is controlled by the binding. + + + + + Gets the binding's metadata. + + + + + Gets or sets the type of target for the binding. + + + + + Gets or sets a value indicating whether the binding was implicitly registered. + + + + + Gets a value indicating whether the binding has a condition associated with it. + + + + + Gets or sets the condition defined for the binding. + + + + + Gets or sets the callback that returns the provider that should be used by the binding. + + + + + Gets or sets the callback that returns the object that will act as the binding's scope. + + + + + Gets the parameters defined for the binding. + + + + + Gets the actions that should be called after instances are activated via the binding. + + + + + Gets the actions that should be called before instances are deactivated via the binding. + + + + + Initializes a new instance of the class. + + The service that is controlled by the binding. + + + + Initializes a new instance of the class. + + The service that is controlled by the binding. + The binding's metadata container. + + + + Gets the provider for the binding. + + The context. + The provider to use. + + + + Gets the scope for the binding, if any. + + The context. + The object that will act as the scope, or if the service is transient. + + + + Determines whether the specified request satisfies the conditions defined on this binding. + + The request. + True if the request satisfies the conditions; otherwise false. + + + + Gets the service type that is controlled by the binding. + + + + + Gets the binding's metadata. + + + + + Gets or sets a value indicating whether the binding was implicitly registered. + + + + + Gets a value indicating whether the binding has a condition associated with it. + + + + + Gets or sets the type of target for the binding. + + + + + Gets or sets the condition defined for the binding. + + + + + Gets or sets the callback that returns the provider that should be used by the binding. + + + + + Gets or sets the callback that returns the object that will act as the binding's scope. + + + + + Gets the parameters defined for the binding. + + + + + Gets the actions that should be called after instances are activated via the binding. + + + + + Gets the actions that should be called before instances are deactivated via the binding. + + + + + Provides a root for the fluent syntax associated with an . + + + + + Used to define the target of a binding. + + The service being bound. + + + + Used to define a basic binding syntax builder. + + + + + A hack to hide methods defined on for IntelliSense + on fluent interfaces. Credit to Daniel Cazzulino. + + + + + + + + + + + + + + + + + Indicates that the service should be self-bound. + + + + + Indicates that the service should be bound to the specified implementation type. + + The implementation type. + + + + Indicates that the service should be bound to the specified implementation type. + + The implementation type. + + + + Indicates that the service should be bound to an instance of the specified provider type. + The instance will be activated via the kernel when an instance of the service is activated. + + The type of provider to activate. + + + + Indicates that the service should be bound to an instance of the specified provider type. + The instance will be activated via the kernel when an instance of the service is activated. + + The type of provider to activate. + + + + Indicates that the service should be bound to the specified provider. + + The provider. + + + + Indicates that the service should be bound to the specified callback method. + + The method. + + + + Indicates that the service should be bound to the specified constant value. + + The constant value. + + + + Used to set the condition, scope, name, or add additional information or actions to a binding. + + The service being bound. + + + + Used to define the conditions under which a binding should be used. + + The service being bound. + + + + Indicates that the binding should be used only for requests that support the specified condition. + + The condition. + + + + Indicates that the binding should be used only for injections on the specified type. + + The type. + + + + Indicates that the binding should be used only for injections on the specified type. + + The type. + + + + Indicates that the binding should be used only when the class being injected has + an attribute of the specified type. + + The type of attribute. + + + + Indicates that the binding should be used only when the member being injected has + an attribute of the specified type. + + The type of attribute. + + + + Indicates that the binding should be used only when the target being injected has + an attribute of the specified type. + + The type of attribute. + + + + Indicates that the binding should be used only when the class being injected has + an attribute of the specified type. + + The type of attribute. + + + + Indicates that the binding should be used only when the member being injected has + an attribute of the specified type. + + The type of attribute. + + + + Indicates that the binding should be used only when the target being injected has + an attribute of the specified type. + + The type of attribute. + + + + Indicates that the binding should be used only when the service is being requested + by a service bound with the specified name. + + The name to expect. + + + + Used to define the scope in which instances activated via a binding should be re-used. + + The service being bound. + + + + Indicates that only a single instance of the binding should be created, and then + should be re-used for all subsequent requests. + + + + + Indicates that instances activated via the binding should not be re-used, nor have + their lifecycle managed by Ninject. + + + + + Indicates that instances activated via the binding should be re-used within the same thread. + + + + + Indicates that instances activated via the binding should be re-used within the same + HTTP request. + + + + + Indicates that instances activated via the binding should be re-used as long as the object + returned by the provided callback remains alive (that is, has not been garbage collected). + + The callback that returns the scope. + + + + Used to define the name of a binding. + + The service being bound. + + + + Indicates that the binding should be registered with the specified name. Names are not + necessarily unique; multiple bindings for a given service may be registered with the same name. + + The name to give the binding. + + + + Used to add additional information to a binding. + + The service being bound. + + + + Indicates that the specified constructor argument should be overridden with the specified value. + + The name of the argument to override. + The value for the argument. + + + + Indicates that the specified constructor argument should be overridden with the specified value. + + The name of the argument to override. + The callback to invoke to get the value for the argument. + + + + Indicates that the specified property should be injected with the specified value. + + The name of the property to override. + The value for the property. + + + + Indicates that the specified property should be injected with the specified value. + + The name of the property to override. + The callback to invoke to get the value for the property. + + + + Adds a custom parameter to the binding. + + The parameter. + + + + Sets the value of a piece of metadata on the binding. + + The metadata key. + The metadata value. + + + + Used to add additional actions to be performed during activation or deactivation of instances via a binding. + + The service being bound. + + + + Indicates that the specified callback should be invoked when instances are activated. + + The action callback. + + + + Indicates that the specified callback should be invoked when instances are deactivated. + + The action callback. + + + + Used to set the scope, name, or add additional information or actions to a binding. + + The service being bound. + + + + Used to set the name, or add additional information or actions to a binding. + + The service being bound. + + + + Used to add additional information or actions to a binding. + + The service being bound. + + + + Initializes a new instance of the BindingBuilder<T> class. + + The binding to build. + The kernel. + + + + Indicates that the service should be self-bound. + + + + + Indicates that the service should be bound to the specified implementation type. + + The implementation type. + + + + Indicates that the service should be bound to the specified implementation type. + + The implementation type. + + + + Indicates that the service should be bound to an instance of the specified provider type. + The instance will be activated via the kernel when an instance of the service is activated. + + The type of provider to activate. + + + + Indicates that the service should be bound to an instance of the specified provider type. + The instance will be activated via the kernel when an instance of the service is activated. + + The type of provider to activate. + + + + Indicates that the service should be bound to the specified provider. + + The provider. + + + + Indicates that the service should be bound to the specified callback method. + + The method. + + + + Indicates that the service should be bound to the specified constant value. + + The constant value. + + + + Indicates that the binding should be used only for requests that support the specified condition. + + The condition. + + + + Indicates that the binding should be used only for injections on the specified type. + + The type. + + + + Indicates that the binding should be used only for injections on the specified type. + + The type. + + + + Indicates that the binding should be used only when the class being injected has + an attribute of the specified type. + + The type of attribute. + + + + Indicates that the binding should be used only when the member being injected has + an attribute of the specified type. + + The type of attribute. + + + + Indicates that the binding should be used only when the target being injected has + an attribute of the specified type. + + The type of attribute. + + + + Indicates that the binding should be used only when the class being injected has + an attribute of the specified type. + + The type of attribute. + + + + Indicates that the binding should be used only when the member being injected has + an attribute of the specified type. + + The type of attribute. + + + + Indicates that the binding should be used only when the target being injected has + an attribute of the specified type. + + The type of attribute. + + + + Indicates that the binding should be used only when the service is being requested + by a service bound with the specified name. + + The name to expect. + + + + Indicates that the binding should be registered with the specified name. Names are not + necessarily unique; multiple bindings for a given service may be registered with the same name. + + The name to give the binding. + + + + Indicates that only a single instance of the binding should be created, and then + should be re-used for all subsequent requests. + + + + + Indicates that instances activated via the binding should not be re-used, nor have + their lifecycle managed by Ninject. + + + + + Indicates that instances activated via the binding should be re-used within the same thread. + + + + + Indicates that instances activated via the binding should be re-used within the same + HTTP request. + + + + + Indicates that instances activated via the binding should be re-used as long as the object + returned by the provided callback remains alive (that is, has not been garbage collected). + + The callback that returns the scope. + + + + Indicates that the specified constructor argument should be overridden with the specified value. + + The name of the argument to override. + The value for the argument. + + + + Indicates that the specified constructor argument should be overridden with the specified value. + + The name of the argument to override. + The callback to invoke to get the value for the argument. + + + + Indicates that the specified property should be injected with the specified value. + + The name of the property to override. + The value for the property. + + + + Indicates that the specified property should be injected with the specified value. + + The name of the property to override. + The callback to invoke to get the value for the property. + + + + Adds a custom parameter to the binding. + + The parameter. + + + + Sets the value of a piece of metadata on the binding. + + The metadata key. + The metadata value. + + + + Indicates that the specified callback should be invoked when instances are activated. + + The action callback. + + + + Indicates that the specified callback should be invoked when instances are deactivated. + + The action callback. + + + + Provides a root for the fluent syntax associated with an . + + + + + Gets the binding being built. + + + + + Gets the kernel. + + + + + Additional information available about a binding, which can be used in constraints + to select bindings to use in activation. + + + + + Additional information available about a binding, which can be used in constraints + to select bindings to use in activation. + + + + + Determines whether a piece of metadata with the specified key has been defined. + + The metadata key. + True if such a piece of metadata exists; otherwise, false. + + + + Gets the value of metadata defined with the specified key, cast to the specified type. + + The type of value to expect. + The metadata key. + The metadata value. + + + + Gets the value of metadata defined with the specified key. + + The metadata key. + The value to return if the binding has no metadata set with the specified key. + The metadata value, or the default value if none was set. + + + + Sets the value of a piece of metadata. + + The metadata key. + The metadata value. + + + + Gets or sets the binding's name. + + + + + Determines whether a piece of metadata with the specified key has been defined. + + The metadata key. + True if such a piece of metadata exists; otherwise, false. + + + + Gets the value of metadata defined with the specified key, cast to the specified type. + + The type of value to expect. + The metadata key. + The metadata value. + + + + Gets the value of metadata defined with the specified key. + + The metadata key. + The value to return if the binding has no metadata set with the specified key. + The metadata value, or the default value if none was set. + + + + Sets the value of a piece of metadata. + + The metadata key. + The metadata value. + + + + Gets or sets the binding's name. + + + + + Describes the target of a binding. + + + + + Indicates that the binding is from a type to itself. + + + + + Indicates that the binding is from one type to another. + + + + + Indicates that the binding is from a type to a provider. + + + + + Indicates that the binding is from a type to a callback method. + + + + + Indicates that the binding is from a type to a constant value. + + + + + Describes the injection of a constructor. + + + + + Describes the injection of a method or constructor. + + + + + A piece of information used in an . (Just a marker.) + + + + + Initializes a new instance of the MethodInjectionDirectiveBase<TMethod, TInjector> class. + + The method this directive represents. + The injector that will be triggered. + + + + Creates targets for the parameters of the method. + + The method. + The targets for the method's parameters. + + + + Gets or sets the injector that will be triggered. + + + + + Gets or sets the targets for the directive. + + + + + Initializes a new instance of the class. + + The constructor described by the directive. + The injector that will be triggered. + + + + The base .ctor definition. + + + + + Describes the injection of a method. + + + + + Initializes a new instance of the class. + + The method described by the directive. + The injector that will be triggered. + + + + Describes the injection of a property. + + + + + Initializes a new instance of the class. + + The member the directive describes. + The injector that will be triggered. + + + + Creates a target for the property. + + The property. + The target for the property. + + + + Gets or sets the injector that will be triggered. + + + + + Gets or sets the injection target for the directive. + + + + + Adds a directive to plans indicating which constructor should be injected during activation. + + + + + Contributes to the generation of a . + + + + + Contributes to the specified plan. + + The plan that is being generated. + + + + Initializes a new instance of the class. + + The selector component. + The injector factory component. + + + + Adds a to the plan for the constructor + that should be injected. + + The plan that is being generated. + + + + Gets the selector component. + + + + + Gets the injector factory component. + + + + + Adds directives to plans indicating which methods should be injected during activation. + + + + + Initializes a new instance of the class. + + The selector component. + The injector factory component. + + + + Adds a to the plan for each method + that should be injected. + + The plan that is being generated. + + + + Gets the selector component. + + + + + Gets the injector factory component. + + + + + Adds directives to plans indicating which properties should be injected during activation. + + + + + Initializes a new instance of the class. + + The selector component. + The injector factory component. + + + + Adds a to the plan for each property + that should be injected. + + The plan that is being generated. + + + + Gets the selector component. + + + + + Gets the injector factory component. + + + + + Represents a site on a type where a value will be injected. + + + + + Resolves a value for the target within the specified parent context. + + The parent context. + The resolved value. + + + + Gets the type of the target. + + + + + Gets the name of the target. + + + + + Gets the member that contains the target. + + + + + Gets the constraint defined on the target. + + + + + Gets a value indicating whether the target represents an optional dependency. + + + + + Represents an injection target for a . + + + + + Represents a site on a type where a value can be injected. + + The type of site this represents. + + + + Initializes a new instance of the Target<T> class. + + The member that contains the target. + The site represented by the target. + + + + Returns an array of custom attributes of a specified type defined on the target. + + The type of attribute to search for. + Whether to look up the hierarchy chain for inherited custom attributes. + An array of custom attributes of the specified type. + + + + Returns an array of custom attributes defined on the target. + + Whether to look up the hierarchy chain for inherited custom attributes. + An array of custom attributes. + + + + Returns a value indicating whether an attribute of the specified type is defined on the target. + + The type of attribute to search for. + Whether to look up the hierarchy chain for inherited custom attributes. + True if such an attribute is defined; otherwise false. + + + + Resolves a value for the target within the specified parent context. + + The parent context. + The resolved value. + + + + Gets the value(s) that should be injected into the target. + + The service that the target is requesting. + The parent context in which the target is being injected. + A series of values that are available for injection. + + + + Reads whether the target represents an optional dependency. + + if it is optional; otherwise . + + + + Reads the resolution constraint from target. + + The resolution constraint. + + + + Gets the member that contains the target. + + + + + Gets or sets the site (property, parameter, etc.) represented by the target. + + + + + Gets the name of the target. + + + + + Gets the type of the target. + + + + + Gets the constraint defined on the target. + + + + + Gets a value indicating whether the target represents an optional dependency. + + + + + Initializes a new instance of the class. + + The method that defines the parameter. + The parameter that this target represents. + + + + Gets the name of the target. + + + + + Gets the type of the target. + + + + + Represents an injection target for a . + + + + + Initializes a new instance of the class. + + The property that this target represents. + + + + Gets the name of the target. + + + + + Gets the type of the target. + + + + + Describes the means by which a type should be activated. + + + + + Adds the specified directive to the plan. + + The directive. + + + + Determines whether the plan contains one or more directives of the specified type. + + The type of directive. + True if the plan has one or more directives of the type; otherwise, false. + + + + Gets the first directive of the specified type from the plan. + + The type of directive. + The first directive, or if no matching directives exist. + + + + Gets all directives of the specified type that exist in the plan. + + The type of directive. + A series of directives of the specified type. + + + + Gets the type that the plan describes. + + + + + Generates plans for how to activate instances. + + + + + Gets or creates an activation plan for the specified type. + + The type for which a plan should be created. + The type's activation plan. + + + + Gets the strategies that contribute to the planning process. + + + + + Describes the means by which a type should be activated. + + + + + Initializes a new instance of the class. + + The type the plan describes. + + + + Adds the specified directive to the plan. + + The directive. + + + + Determines whether the plan contains one or more directives of the specified type. + + The type of directive. + True if the plan has one or more directives of the type; otherwise, false. + + + + Gets the first directive of the specified type from the plan. + + The type of directive. + The first directive, or if no matching directives exist. + + + + Gets all directives of the specified type that exist in the plan. + + The type of directive. + A series of directives of the specified type. + + + + Gets the type that the plan describes. + + + + + Gets the directives defined in the plan. + + + + + Generates plans for how to activate instances. + + + + + Initializes a new instance of the class. + + The strategies to execute during planning. + + + + Gets or creates an activation plan for the specified type. + + The type for which a plan should be created. + The type's activation plan. + + + + Creates an empty plan for the specified type. + + The type for which a plan should be created. + The created plan. + + + + Gets the strategies that contribute to the planning process. + + + + + Generates scores for constructors, to determine which is the best one to call during activation. + + + + + Gets the score for the specified constructor. + + The injection context. + The constructor. + The constructor's score. + + + + Determines whether members should be injected during activation. + + + + + Returns a value indicating whether the specified member should be injected. + + The member in question. + True if the member should be injected; otherwise false. + + + + Scores constructors by either looking for the existence of an injection marker + attribute, or by counting the number of parameters. + + + + + Gets the score for the specified constructor. + + The injection context. + The constructor. + The constructor's score. + + + + Determines whether members should be injected during activation by checking + if they are decorated with an injection marker attribute. + + + + + Returns a value indicating whether the specified member should be injected. + + The member in question. + True if the member should be injected; otherwise false. + + + + Selects members for injection. + + + + + Selects the constructor to call on the specified type, by using the constructor scorer. + + The type. + The selected constructor, or if none were available. + + + + Selects properties that should be injected. + + The type. + A series of the selected properties. + + + + Selects methods that should be injected. + + The type. + A series of the selected methods. + + + + Gets or sets the constructor scorer. + + + + + Gets the heuristics used to determine which members should be injected. + + + + + Selects members for injection. + + + + + Initializes a new instance of the class. + + The constructor scorer. + The injection heuristics. + + + + Selects the constructor to call on the specified type, by using the constructor scorer. + + The type. + The selected constructor, or if none were available. + + + + Selects properties that should be injected. + + The type. + A series of the selected properties. + + + + Selects methods that should be injected. + + The type. + A series of the selected methods. + + + + Gets or sets the constructor scorer. + + + + + Gets the property injection heuristics. + + + + + Extension methods that enhance module loading. + + + + + Creates a new instance of the module and loads it into the kernel. + + The type of the module. + The kernel. + + + + Loads the module(s) into the kernel. + + The kernel. + The modules to load. + + + + Loads modules from the files that match the specified pattern(s). + + The kernel. + The file patterns (i.e. "*.dll", "modules/*.rb") to match. + + + + Loads modules defined in the specified assemblies. + + The kernel. + The assemblies to search. + + + + Extensions that enhance resolution of services. + + + + + Gets an instance of the specified service. + + The service to resolve. + The resolution root. + The parameters to pass to the request. + An instance of the service. + + + + Gets an instance of the specified service by using the first binding with the specified name. + + The service to resolve. + The resolution root. + The name of the binding. + The parameters to pass to the request. + An instance of the service. + + + + Gets an instance of the specified service by using the first binding that matches the specified constraint. + + The service to resolve. + The resolution root. + The constraint to apply to the binding. + The parameters to pass to the request. + An instance of the service. + + + + Tries to get an instance of the specified service. + + The service to resolve. + The resolution root. + The parameters to pass to the request. + An instance of the service, or if no implementation was available. + + + + Tries to get an instance of the specified service by using the first binding with the specified name. + + The service to resolve. + The resolution root. + The name of the binding. + The parameters to pass to the request. + An instance of the service, or if no implementation was available. + + + + Tries to get an instance of the specified service by using the first binding that matches the specified constraint. + + The service to resolve. + The resolution root. + The constraint to apply to the binding. + The parameters to pass to the request. + An instance of the service, or if no implementation was available. + + + + Gets all available instances of the specified service. + + The service to resolve. + The resolution root. + The parameters to pass to the request. + A series of instances of the service. + + + + Gets all instances of the specified service using bindings registered with the specified name. + + The service to resolve. + The resolution root. + The name of the binding. + The parameters to pass to the request. + A series of instances of the service. + + + + Gets all instances of the specified service by using the bindings that match the specified constraint. + + The service to resolve. + The resolution root. + The constraint to apply to the bindings. + The parameters to pass to the request. + A series of instances of the service. + + + + Gets an instance of the specified service. + + The resolution root. + The service to resolve. + The parameters to pass to the request. + An instance of the service. + + + + Gets an instance of the specified service by using the first binding with the specified name. + + The resolution root. + The service to resolve. + The name of the binding. + The parameters to pass to the request. + An instance of the service. + + + + Gets an instance of the specified service by using the first binding that matches the specified constraint. + + The resolution root. + The service to resolve. + The constraint to apply to the binding. + The parameters to pass to the request. + An instance of the service. + + + + Tries to get an instance of the specified service. + + The resolution root. + The service to resolve. + The parameters to pass to the request. + An instance of the service, or if no implementation was available. + + + + Tries to get an instance of the specified service by using the first binding with the specified name. + + The resolution root. + The service to resolve. + The name of the binding. + The parameters to pass to the request. + An instance of the service, or if no implementation was available. + + + + Tries to get an instance of the specified service by using the first binding that matches the specified constraint. + + The resolution root. + The service to resolve. + The constraint to apply to the binding. + The parameters to pass to the request. + An instance of the service, or if no implementation was available. + + + + Gets all available instances of the specified service. + + The resolution root. + The service to resolve. + The parameters to pass to the request. + A series of instances of the service. + + + + Gets all instances of the specified service using bindings registered with the specified name. + + The resolution root. + The service to resolve. + The name of the binding. + The parameters to pass to the request. + A series of instances of the service. + + + + Gets all instances of the specified service by using the bindings that match the specified constraint. + + The resolution root. + The service to resolve. + The constraint to apply to the bindings. + The parameters to pass to the request. + A series of instances of the service. + + + + Indicates that an error occured during activation of an instance. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The exception message. + + + + Initializes a new instance of the class. + + The exception message. + The inner exception. + + + + Initializes a new instance of the class. + + The serialized object data. + The serialization context. + + + + A service that requires initialization after it is activated. + + + + + Initializes the instance. Called during activation. + + + + + A super-factory that can create objects of all kinds, following hints provided by s. + + + + + Gets the modules that have been loaded into the kernel. + + A series of loaded modules. + + + + Determines whether a module with the specified name has been loaded in the kernel. + + The name of the module. + True if the specified module has been loaded; otherwise, false. + + + + Loads the module(s) into the kernel. + + The modules to load. + + + + Loads modules from the files that match the specified pattern(s). + + The file patterns (i.e. "*.dll", "modules/*.rb") to match. + + + + Loads modules defined in the specified assemblies. + + The assemblies to search. + + + + Unloads the plugin with the specified name. + + The plugin's name. + + + + Injects the specified existing instance, without managing its lifecycle. + + The instance to inject. + The parameters to pass to the request. + + + + Deactivates and releases the specified instance if it is currently managed by Ninject. + + The instance to release. + if the instance was found and released; otherwise . + + + + Gets the bindings registered for the specified service. + + The service in question. + A series of bindings that are registered for the service. + + + + Begins a new activation block, which can be used to deterministically dispose resolved instances. + + The new activation block. + + + + Gets the kernel settings. + + + + + Gets the component container, which holds components that contribute to Ninject. + + + + + Contains configuration options for Ninject. + + + + + Gets the value for the specified key. + + The type of value to return. + The setting's key. + The value to return if no setting is available. + The value, or the default value if none was found. + + + + Sets the value for the specified key. + + The setting's key. + The setting's value. + + + + Gets the attribute that indicates that a member should be injected. + + + + + Gets the interval at which the cache should be pruned. + + + + + Gets a value indicating whether the kernel should automatically load extensions at startup. + + + + + Gets the path that should be searched for extensions. + + + + + Gets a value indicating whether Ninject should use reflection-based injection instead of + the (usually faster) lightweight code generation system. + + + + + Gets a value indicating whether Ninject should inject non public members. + + + + + A service that is started when activated, and stopped when deactivated. + + + + + Starts this instance. Called during activation. + + + + + Stops this instance. Called during deactivation. + + + + + The base implementation of an . + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The modules to load into the kernel. + + + + Initializes a new instance of the class. + + The configuration to use. + The modules to load into the kernel. + + + + Initializes a new instance of the class. + + The component container to use. + The configuration to use. + The modules to load into the kernel. + + + + Releases resources held by the object. + + + + + Unregisters all bindings for the specified service. + + The service to unbind. + + + + Registers the specified binding. + + The binding to add. + + + + Unregisters the specified binding. + + The binding to remove. + + + + Determines whether a module with the specified name has been loaded in the kernel. + + The name of the module. + True if the specified module has been loaded; otherwise, false. + + + + Gets the modules that have been loaded into the kernel. + + A series of loaded modules. + + + + Loads the module(s) into the kernel. + + The modules to load. + + + + Loads modules from the files that match the specified pattern(s). + + The file patterns (i.e. "*.dll", "modules/*.rb") to match. + + + + Loads modules defined in the specified assemblies. + + The assemblies to search. + + + + Unloads the plugin with the specified name. + + The plugin's name. + + + + Injects the specified existing instance, without managing its lifecycle. + + The instance to inject. + The parameters to pass to the request. + + + + Deactivates and releases the specified instance if it is currently managed by Ninject. + + The instance to release. + if the instance was found and released; otherwise . + + + + Determines whether the specified request can be resolved. + + The request. + True if the request can be resolved; otherwise, false. + + + + Resolves instances for the specified request. The instances are not actually resolved + until a consumer iterates over the enumerator. + + The request to resolve. + An enumerator of instances that match the request. + + + + Creates a request for the specified service. + + The service that is being requested. + The constraint to apply to the bindings to determine if they match the request. + The parameters to pass to the resolution. + True if the request is optional; otherwise, false. + True if the request should return a unique result; otherwise, false. + The created request. + + + + Gets the bindings registered for the specified service. + + The service in question. + A series of bindings that are registered for the service. + + + + Begins a new activation block, which can be used to deterministically dispose resolved instances. + + The new activation block. + + + + Creates a new builder for the specified binding. + + The type restriction to apply to the binding builder. + The binding that will be built. + The created builder. + + + + Adds components to the kernel during startup. + + + + + Attempts to handle a missing binding for a service. + + The service. + True if the missing binding can be handled; otherwise false. + + + + Returns a value indicating whether the specified service is self-bindable. + + The service. + if the type is self-bindable; otherwise . + + + + Creates a context for the specified request and binding. + + The request. + The binding. + The created context. + + + + Gets the kernel settings. + + + + + Gets the component container, which holds components that contribute to Ninject. + + + + + Contains configuration options for Ninject. + + + + + Gets the value for the specified key. + + The type of value to return. + The setting's key. + The value to return if no setting is available. + The value, or the default value if none was found. + + + + Sets the value for the specified key. + + The setting's key. + The setting's value. + + + + Gets or sets the attribute that indicates that a member should be injected. + + + + + Gets or sets the interval at which the GC should be polled. + + + + + Gets or sets a value indicating whether the kernel should automatically load extensions at startup. + + + + + Gets or sets the path that should be searched for extensions. + + + + + Gets a value indicating whether Ninject should use reflection-based injection instead of + the (usually faster) lightweight code generation system. + + + + + Gets a value indicating whether Ninject should inject non public members. + + + + + Provides callbacks to more aggressively collect objects scoped to HTTP requests. + + + + + Initializes the module. + + The whose instances will be managed. + + + + Start managing instances for the specified kernel. + + The kernel. + + + + Stops managing instances for the specified kernel. + + The kernel. + + + + Deactivates instances owned by the current . + + + + + The standard implementation of a kernel. + + + + + Initializes a new instance of the class. + + The modules to load into the kernel. + + + + Initializes a new instance of the class. + + The configuration to use. + The modules to load into the kernel. + + + + Adds components to the kernel during startup. + + + + diff --git a/NzbDrone.Web/Bin/NzbDrone.Core.dll b/NzbDrone.Web/Bin/NzbDrone.Core.dll new file mode 100644 index 0000000000000000000000000000000000000000..d057cee9cf725c7985304ded13ca46ac3665b367 GIT binary patch literal 13312 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 X$Nv6ku8rQecOy76|Nr%WF9ZJzokZ0j literal 0 HcmV?d00001 diff --git a/NzbDrone.Web/Bin/NzbDrone.Core.pdb b/NzbDrone.Web/Bin/NzbDrone.Core.pdb new file mode 100644 index 0000000000000000000000000000000000000000..341ec322ca2d4fe6731439182a049564874b06af GIT binary patch literal 28160 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 PlNy-Rz@!EymPGy?U=};nYKK5G%b2Y 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 literal 0 HcmV?d00001 diff --git a/NzbDrone.Web/Bin/NzbDrone.Web.pdb b/NzbDrone.Web/Bin/NzbDrone.Web.pdb new file mode 100644 index 0000000000000000000000000000000000000000..54ad111434f3f2d4dac373b32f645fd71c124f99 GIT binary patch literal 30208 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 G0{;&@xw$9+ literal 0 HcmV?d00001 diff --git a/NzbDrone.Web/Bin/SubSonic.Core.dll b/NzbDrone.Web/Bin/SubSonic.Core.dll new file mode 100644 index 0000000000000000000000000000000000000000..065bba65d0c13741e3aeb6db4d1fd04812495da5 GIT binary patch literal 285184 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
;_^7dqy0$61&gz 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

fA_cOold)>dBI?BiAtBay0rF zZ8!gNG#f8tx!0_QtzSY_*2E`lA?uA8+o^Z&YBgz#Rhj0w-S%Z%XAqQ0?)!W5$+xj9 z;1-8fw(;)9XWJbyJ5`)%u5!Y&1JXb5_GtJ@pdi2tb(p8p?^n^E?^#7hE9oQ-b7!gM z`$!|R_Hm9beS4ApOz9zTE7PUZkz4gy=~`>9Vd)3+S!%L0J{ph1yPm1HcWE5`4RzVG zG`3~wDi)G7tV`t7`)|gG!(Nn3l_#uyEQLP2;fnWAoYP`jdNIs0^A zemN`ka&s+bnScKOVMqOSR4`0=@?F{2zWXuHCEN*uXZ|c2# zm72ef&TM;ma@Q&_n^LyN6Fr?A*y4E!4QTz#@r`^p|HrPm8ApF;yXNcKdl;A^vMspPDZXpPbD^_jcpJunS*W zf47Y4^eEgkOniujr>NVuM2vs7K!VUib z#i5x+*!Z{RWQc_uKO|=~oyU2vL7$DkxhOO{0`WDBj*YJpeALWtAOZ9}WcVOMnVEfq z!9p=!O@kETgZZ7@?hJOIJhQ|S^z#(YEY6@`*lHU=VG?qcAW3doms$Ix)pIFap4p?5 zYU?F<>@0F&QugeGGj}2d_bz`H|A{Gpv$E28y%BOvJF^`O!gXInHf}8b7lru0^<4Ig z)Z*`OF016f0T39q{@u0m#Ou=@8)1 z6wQYm^sq-94er^Cxc_esIUYHu_wWZ7Y9}32@SS1(;Lj~S3V@C4%XMz?JsPpL>i_z4 z3p=Vv&MoYyB00CPql)C*!j3AEa|=7FNX{+ns3JMHu%n9P+`^73l5-0?sz}Z)?5H9+ zx3Hs%&MoYyB00CPql)C*!j3AE za|=7FNX{+nsKT9Fa8#kD_ATBys<@BtpWiG7DVb2_diN2oCqK_q1g>X*XQ6+7mt%?* z;5dkpG2o z53_*}Ow(Ed)1V%o9w7C0*0&C7eA+g!KSO+4^ye^NSt*d<%6%BsnHYnx@8YO|BkX&8 zW$h4`=9+l8i6$6I-MFcMlDue2FYH8Y6FY$@z!rWZwy+uz)1@}2WiRFwUk;ZKsVsxs zP|oFmV~#8^&1iY_`8-lsk+0zh*e*}cngamyivySgz+nl%8~_ea0OqI%(GdW!msP*f zIjdWO=rMq{1<`t5djpvZKtXe^y+J7vjHs2IGhv=CY5xbGY{#3UU?(cT{_(bbHSNVA zwkKY7GgEZO9`kKt?y|aA!?!+*lg5#gKkG)IL=-#d^Lg-Co>n5SQ z9awv~hQwsWKe7tZ8bo-70r!sMZ(51&JxlP3kvm>M~0$uN0D5I<%AghFv?zrPq%1AB##3n28XaYgkah1 zKc$ySd6K5rh^5Ts%m7Hxu?AB_DYdZ#J-u=LIwH9>UQ_}@f3|vuTFZ_V(YsrS0@tss zOl$+IXwC6L69o)%7R>PA09(o~f?FbLvGFWIojtlkxtlFtgLR4CsB3*TFGbSZR#9A% z%$rY<1eNYyt4`p03$FJFHr$@a8~fPy7F>R*5mj^K?f0^gJlb+ZAckXHuG0}0+6?vd za+!%!z+FiO$C05e4 zn5z|S?6{Muk5}oi!uuGSl&x()7Oh#eIAM@Q{p2o}>%!c=P6{6Q# zwt0XbU{ycB7&|ubQ2#TTExL$m!zP1E@5#9$C>uS?{~uV2S>di9-Gb7Va=O?bOkO zG{K`x^4DyiJ$#a^eW{|O$g=)Dud;U|pRMGuJwgbH?{)hqUJ+tSC?pf0FJfg;LOJWK zBCEKY^p-@qIRGF*=O z)_}`+B*Ae2&p|w^dDieWd9-$956SE+tmmz7V;|2UJdKS=c8u3+i|b?c+GridX@Y-C z5cQ}H)tB?HQm-NXLCBzIvnD)viDW`-oV*V_MswFv>vW;kUs}JLfMCzllEW{6rP6wx zRs?$(jP68iy011+YRm+C*roN5+|p9xx?s<27qG0<*c$A4LJ#1SKz1UMB+E;U#{_$x z)B*I>ilxS?V2{`|CmNp{mmKMy#eCO20F&B?z`64_omt%qWlZDnaNO|bVwI#=QR;aD zjTE2A&tT(Nu2XS!y)=;Ts!y1#@a6mmqH-SbRT?S2i@v*Bg1GU6`$9>663Hju>uzIx z3R>J{Cx?%D$MFQ?nKQ07F~|(ov`uNW^p16vL%}t1%Gp&^be1!ggl%E4kH-txs;)mj zfg#yent{P(ck?uUC1j0_TqU0?8FipF;dio};Zqmw(@7$O4Y}DfaCI*q!+88XIH(^! ztEGX_k=*FWQ2R{9M$3A+JbM;S)UD5+&3pahK-WG;fhcb;FPuGBfrG?4&m2K{;f&(N zkL73fe17uf!M))HINBHT6K$jP%rG0v_6xemeBQ9LaNM-fS$+*DQNAha`Q*TFaWH zR4zSCv-HEexMKA8v`hc~?Gj%?jjewvIl&<7`bMf<4oJ{+i0CwoC2L&f)3{byoA~Bw z7CzdZssWdLfBY(BxfH3IEJ}IdD(m#tHKg4$xn=SE&dBa0xGuKeg$57Os0sa&<-+5to2A`S;yL0^1V3?Z5$Fo?m5tU)| z1seZ#tX!6uJ)U|JkODdWO5di#G{?}DP&cyJgx~uEL?s{3(1Zhh8t}l~y#00{Yf zhJPcS{!$m8j-;$Xil!bH>{;6hIXm@Tn>s$&!>8CGoH{)9wVH~8J#=6nvLyA@ zni>lBOeZ0>ynznsRwyw@4)4_6`hNmEyue*6=r$ot?-{g3>%UgAgYg|)8*V3F-g-uK zIc+tFS!(2BaNPmE1tWdM_)0w3l3azH<1?uK?OzrgUbCFT6e6N{TphcLDDl<&>?YD{ zK|A@m2Nsv}JNgxsTVQB1@OOCGOY%1vG(M3IM170v8rHUrdLcRhHm>~l@e@?b#m14t z#psE0N{_TQrYG0nU{fWWTv5Qa2!!#6sUeP_oX0qfdx5MbDVkABlYjNVj^X0o$`|Pu zUV&JbW5HhYvBTV$R2F@#yG+xC4z`*R?PwX+a9Dc zs+d6(uSqY6ZH7!y&umeJldF<;fT=*G5aFCZs`Bw^6EJ3eqYe68<-7}i4!!f;%8`0` z-yaXpobzl)v-%@TZ0WU0Xb!XO>!6`OZ0>M6Nqo;S4s@{4JPVsP-3ms&7PHsZDXbq@ z-S&BiRcqq08tvnB)c90rR*g2wd0#h6sbHXGrNMh0=oJ860qavGEbCX04;~An!@|ip@m=PTg&N26sAZPMO(_xMQ2$-GR zssX-ua(I12EHR{2FR@M1O&!KJl2`^xBm&k1JKwpS?VpN$5k3uAn*9YN`om@AqxId9 z(B7V+G?G_bqdpkUC|YzGJzUzJN>Vl}NLEVFN~^PIOY+tWoylZ+g2Z=!#jCzCmu;`@ zHn6UlIvd67RA2W7Gm7j?d^iKY?3bQM8G{)m&)UABv$U(t8_5-DEqW9*4x=Q!Qi--h zLPR$$^$#xyBa~ZdANyhBJvoV&vzrPXe9=?pLTBrh@pQiX#PjI(iB~}@&LhFMf4q6{ zRf0!`Z@+k5e1YkX;BrlQVI~_rmC|Z;s|6=7xVMi!2DYT>wx4-tG+b1bww zahR2OMFKVzW(bG9R)FtmB3l1#dI1PYo{Gm8tdl&~y5}L1!`iX-sjNM`oQj8DO{75o z5V^r(>)!bjH?AvI)*hCMf}pNXS7_b$5b4$x&`zC-k}6N5l5c$`Nt%L-H&dV61ih>+ z%h@1$HnpjK{v6)XbNQ+00`tVeOyP#;5AaG00YjmgljT%9V-9br`Jmvn;qyFu)zf=4{Wli@*+-+v6C)4XR4 zs0*gYfW}063}{UB3;~Uao*~c|((Cipt^FarzBJEx7_;%P*^LK}a=-o$%Q;W~&tviu zJABstZ6po4kyOs9_oHc!1~*w|Ru5-V%_Eq@1H_ogIe*dmaJg7?-jemoa;f0F{npva z2$Wgk0qa2JfzWvem)bRR?GjaFsB_3HVGfxk%%SmeKah#?0KZGhgZ!GN#rktvUxR?) z_A}w|WGt&>Mw)}@45+g~=-MgBoJ)KCDMN@hRK1s4gH4QhhgGyO))r6og|*srp*12{ zV+A_%0aO5t8(?8LEQvs0F*o|$ zeTvTg+MK^qTQ!=wT8jzY@o;y3!u#zqt?rR5r(E2!vES0D$5Sm&6~;x^&C zJ*|tTYhkRSIRErQ*k^ngr{dS9=OB8rl1%nQTNXrDS~UGC(dFjTuO&)H2Eg#q2D4~= zvxZtS|8HlPovH*Fe}{B zK-MozwYX;QemG13D*?nXsU>2F|Ouz zD|XhylcxjWjDmA(xF%EBF(Om9wIlCFt&r*L5c4%MP#GC)ES8PpyG9CZNVxn5+0xR1 z!~p6#zTG%XyIi*K&u19dv7p6uX>$o4jvc(6vq5df$m?*FtPC5sO6mAO8T~*IYsEm9 zu3DI{gzaOj$~@+Ac8teDa7X5zgPfku(}M1HT{gN?ZD8N{O_chiZk^|%LDe)G7OnKE zcCNTB3{f|GJ89yT)En15xGt5{t5_CFSPF6lwA(}l{ z#Ofg7uAze&^?~?Kk`?!cR}B>ZaSnt*A!h|JVt`uHesiBY z4xKu&y}I?8gD!S;((QOJ2ANy)ETaxK)A(rC1h(hOWFOSo&XN_8?%CaW#65*_xVZ7V z2@Il_kSzW&&YT_4_1V!JtYB!W9oZedpL%GP3R$=1S7nDtEtkGjW_ALN)@Eknq~sn` zRyzJ4GQTURq(_^R+rM0$nb_p=`Cqi12Y3}l+xKU7_mrH3-)Z3SMIaFy{Gq`oted%Oce1#L>wnSsxdBRv{jmLQ#}wX6;h`d!iA1!0!lWtA zr@9Y1w7E`Eg)sK6ofn08zmQqz!_+4lT*?+~^Rh$kQhDSk422#G?w-S^D&q@Zr2$PG zJ_e1jV`du9F(wYXE)0R02ATD%@1xeoC>y*^FR&D0qvOpyWXw%p2giFuC!$ydPicw| z2}$uBfH3w!7%l#|5FL=^Xs=foybUF< zXk@Sw9+`n$qW%VUII}DC0h7S}ltA#8>fLkr?F;{rZc|{CKR3uTm=8mt&M`dbnV6Lt*YE! z5pBE=_wcuDy23_3O7r3gNDg!)*v^EP>i7yqIW9t7DkzM=NFF$%ATrU4RB z)s>p>V_f0q1LP+?6H+ky!%yr*w*phEQyOXIMq7$av($uKVRub+czeU{fST~e;DcTi zV*Oby3Ue5mJaUxgkSWa7t=<)%)xy#&DCxL*9d4hf*HX26SNQ$l|IY7e|1bSs`;Tcx zUU2FBk7>59+HM}wY#`E1mHVJ#NH3!J%TLrQX4SQdPoZ-RYC{4+trZ;-i`2RzZ62!j zgXS3Du=@p*KF6I|NXHO+P&Ft|F{!N{Rrv8Gunj$=dXfn|NgXT(KdCgjp`|%|fg9*I z)eXMDjr8gpe1RJn#wZhffg4v<-{6ad7|}gN9tCz%hrEX_3m-<1)eWA7zH-F(DAI(+ zxIduLQpeN>c2fY`8JJte?rEn&YOm0`2pkrLcA1~S)F7<*RYbb1KEi>ibQ+bFVQ7UV zj&vuMPr1d>THIV4rKG`g2MiTAgb2l%ggk0%2T(S6%dLwK7sKNYJHngl(5Nw(g>S*T z+A3|1-!j^2G%3>l7cX{EZ3hrz^S{t8S`xnA(KFh*$CBP}8ZByYP!ug_LKm zqE=JsV0sEVKQWp7uvAEy=yDW3O+Qu{dLjB)I_egs6Fn3ElY8_AM>!hgUQutjuST-` z;I3S@l*?)dhwXfCWzPuw3*K@A%WFzX_EJhyFH2O)eF#M_I#btyy>{wE>stV97_$ z)WCGq5R4aF7hjK29QA^(GV;pJMZjnM>6}cXyXVoOQSm~LiDj1R>pvWS^-DGpCim_{Hp@sEc_OwhO$Suef31y!`1Kb46y_E@u`FV z_)Q^7*_u(Z8vRl2`2Y7!p#Z&y{9k`l2y3+pu{I}D)mkc#4*tg2Fp3}6MQo&IO=VwD z!$|#e7+#Q0=O+pjQ+(MP?}X8#&^RlE-#x19;t9A-BcTv_hpE1e1@aQe0rx$ul@8n^y=MXK7}R95rgj=+(7GaS9?(FIAj=46v5T3(4xVp73y%FzXg_C zaY}o4PFH}U;(NX(VF3LnD-#=c|})2WZEpRM>Q+yr^YGmlnXe(f^4bhF4}7_g8cMk#yQyosGoqEW(b_66i%!G{?ht0dMyfi47UMk zHFjdPox&%tv~nhf=8&kR4{RsjXkp(eYT}|nKf(VdikZ=-LSe*{y{YE_BF@9lU&R<((paF5Q3Wj`$CJi0aZCcCD9 zQg=y4aEvqmDibs$@RWp7Wv4OGKPfHLcx;J>5@D^icZK~>$F_ttZ>$_FNhjlbVcck* zP_z+Is0l*N34$5gckVf9d{-B4kEHzKu+e$?v_YZ{T1kpW;fF}!41O}e^kr;W7Fv?( zx1nVj0Axe)Nz`@qZCma`3|=dH4ZBI^QO?kBTcOp~{bhtGlSA?LHOz1-M_qiE&Vg}> zRfzPpw*9QW*f78ztGy=Ldf_v$&TnvOk2wK-dY7D5#w+`{I)+J8F)K-D4tu$nk#S^=GZUgo-6i_DA=JzdNIlfZ;{4<&VlA|fj8BJ zVXZ%fr1)uwz&;3kf1Z-5{-3Tix{sa}PY+~7J5gS9iE*$qPWgeAYBAXJ;K4DDyKq-~ zu(u^dV<#lSh1v%->34(=g!!q7rv+J)%n<2vXsJ!hg45v4A^L!x_T3X4I&ty4TsVw zeh-l^YYZ=`JX6`DzI_z(x%f*YV9@(`HZ#~LrC{3z_=ReVu(gBLgtE0{_Do_-vG zv-q(`1E_D=Z?`2shZRNvqW+<^DW1YfA|R3SX0sobegl^{x%#|*{$o9-@X4E$pv zL!g7_RpIUM+YA5s_|F`t?c7avG6!o~&XlL=RwnGq8H-9)TFDg9w1NpoHL-316ZSqZ zVG7pL<1#v06~NN{;5k)t3acvg5MKF!4!gDw+Ok7gzUjX)O|3JB3nOv*3NOnx7NQs*mLT!2onIr>dhOn$kgCQweoIwq`lp>rsH1_IlO&b z;Bl!4Q}Q@LnO+of|6+=XNQVYUUo+rDV@Ag+2hjPc3nvmKE7zRUkm`YxTSo-90&3n2 z6^1o(1cfNmv}5lUx<?$TTcyHDu=s~Gs%?q{XD zc}EX+rq$fUqDAsY9kz#h@`T-mc0!3Wil0R~mUZOI=jgHnU0P+G@q# zvyM@M@+AwqAw96cQ;h-w+20uW=I;WFhcz-H6`vSEzSl3x zzNY4g-jygz)qA=h!FBbP?iX=gy`%eeTvu=CejnG>`?)XTx_UdeYkJKQy^U~Py_vf$ zuI(dwyAxC&(c6!p`iS0P1l33MjwYx+qIU*?eMB!o^;Y*=2&%WbuOO)2>b{PkdaL^$ zg6ggAOR-$oKBD(6(o}DCe~+Mgt2=$oULVnm9psdPIw5_|NS8Y8_9`cen~OIxVZ6u# zE6gj33#uUycOt=G!vEL!k3|2}#{By~MycW${@oZ(wz=Z}B``i{BbMR6&9e}A0Lw$h znuT~b?};hwZ(qmqbsz*Kv4m=Cz=tbz75`J?kz`ys%cF$2=1u>{mi>iMSJ=k6I{%x% zDu3gyh=OwUzX`=ZTUB@CuW(S^O}OH2q5prCQZa?m|10ycw)y`q%VG*+w9EgU$yjAl z#YbmXCKBquv*-60#$K6I&2Lopt}H;hj9r;2Xj12+&=tN05!*bbmZwf^x?%T&%*5pi zla^S^=?}nL4%H!v^aAfqVaLE~Nb}0K3ti{&N5@9~2xT6#%^6 zv9t7Vjx{g(FI;l`lS_{Org+O;6d1fgWswjGV0^Q zx45G!w6Y9uOX^Xt5CLzM-$fszt5Xi}(5<)=?99iCXd0WCg%ik^0~lE0ECzjRJZ@>l zJ2c{=b0{o6D{cb9uOo)JiGj-1P$!SUFe}^H%}@A^TVp)Op~tw!)3}jxxBA|@a1zt9 zQEncxxp}Y`q9z4+Zk67gM}A?o03zZsN@-B$;1(%{j{{eO#KPw>N;4dMtS&!F zhXy<_kGTwX7Oz%$rU0{f_}nm!5cLDR6$phf8XD7+xl+0K={$rV%X!*>$GA>$qcX~jBB2^NjMXe+Qg9wSI7Knl{vX3095@{M$!3Eqi;L4uM3O zsz*3oLES3N=yL_GTC-=sT50B@?^BBFDa}f|Ab&lEzl?r$%b`>5zetQ?Gzoa~9c~3T zA;m}wXCY>w(85i27QTQM2CL;WN8kmMkzUkWol!SPIu1Uh6M53*4r7 zfL(rSe4ussSc1Q?I)#)?TK>iD7NydEP8Oy0y9-w$y#8Xeo0MQRDTHR8QiBeTp}4A~ z;ad)?CK%`s8^I=KVEAYe`xotwOJtyPnoQ|y2DiokRW%B#CRkTP)iunKm7x+TIF0^` z_8Vt5f;P?4!7Z$&2zEy2nh>@H6&PFC0pW;MJl$6sgz8}D@xKs-!OLRvn%!J3MrY@2l`&CYKg{$5CS$ zq5}}+ab#uvJ)LR=FQ^Pfc~qGRrKTuUhb_hzb4A!-NRkH0y&pCsAhZr zP5!X|Sp#vO9&+`#q)WB2D+VTUweHu9Onln98k%@zY#m2dTX$Bgnu#@@6|)LoM(XOq zgVO|PU7j}|tQm;D;okJG3hHx_z zn!w-fr?sZqYD7`qZhaV6p%qx{{YsIVh;A{Nn1nzqC( z@OqzLe_)8)Kx`(7=46V!<0`6r-1y*TOaQ$FosJUf^o4L3d0(ZkjvnLtLW|M4I*KFIQwl;a+4#R>41~Z$u$FBHcy@H-bUwtBhbpbZ~Ovb1c-VG&g;o4AkIkID+Of zy!asmAj21q=Nfee_Ozh>P4zzwIG;lGgM@zNh`u_gcUm998AKD=!7YM6*6-&t!Q3@% ztEwv=aXoS**e_HT>Uh2IhBE&D!qXVP^$(s>{Qf`sY5h|~$xp1i6$L?Q>JPQ52LZu7 zMeraXsOt@N6w&-HukCJZ`ZGggd9M$z9SFk{gez+(=T04+JJnU_?}JL!x?6b42+AUt z-yh?5b86wf-T$F`Ym1kEC}un!pk5}*@we(jFP-VzTI%D$K{dx&Q*#`;*3ipiGF$y! zE_z<^@nZ?KF1p&#;{)9cQ`JTfe^elRuAt}QM6|V7-!7(eTT3%JMKp=c?Im7=q@xao zy4tQq4AAOcg_7Rx9$fqJT4*oKmRQj98U`GRF%)eDy&$TCkaEXKDHjqvJmXH5zqUmO z{*|C%kFwm2v79z6GZqVLX!L@2Q=YKQ5W1v3DhzINceJ7A1Pvrs&0Yw@tp=IStYlS% z1FyiE@{}Tx$qC>!9a&BPQ!`D8ie}nF&9p~1)AsOA56p@&8pbvXoTZ8Vc;riz6JwWf z4CspJjXfmpq8ib$uas8>m59_rkais;uNAYMjYzx8})>E$kEHps#^ogRlEu@pxGpP zpsrFB08+KJ-(DSnoNqGSa}iC*Zd^~9MXXS9kF_0cq~HWP9BTXCkD5jBgm9(Caf z1hS?`V-dHN)vKmhTe?`|LEg4gU4Re|`lPlqxI@5Z6}so*eAN>(mdD}gnl~GZFwdg$RCqgFnL{~*Le-1*ZqOqmPq2q& zHdNNtJr~bEn1#1N@8Y)@JZ9#1#O|E;(d^mJl2k^zP+8%yRKTy!$0I6|9KQ{$Q@`NC61cE_kuVAa3aihsJD9cc5Wx=hV3@P+f7XnQx`N&5|h znD%vX-DVSnQIbVzNC|io#SSADG(_2oT!lqInvkSPujmk3QjJXv83=wB7J^O#W$1J~ z)CSAr;2KT0@>6{olv!6}n2G{J*M)CDV0mGtX4KyUxT9T*z+IYt#a((kmx0Z`w8tGQ z5pxc=`4h2&p2`hR;kG>=bffk(ZtlBKsT1ys@?E+?Z@WjCClAyhHpAc6#^|V6t!?JfnSz>NeDDEW)VKn!K+uzj}d6pb6rE38ZHD zp;ak)7(((ICceN86kc_MFR(FfI3*7U8O*2#UI)lF*hf>X?Dw|t#ew_9fz0>Iqx#g z%fz$j7x+E67}rBeil)w-TudgmmrF5m2JQ_TBK+S;UOjbH&tX@ie2RMDjU%D!I-M#t z|Dkevhp$_o8Il6LB%9L#o#Z>t>JdlrUjYMHXf3AUzd0B!p4f`tzPL~35P#7PzmfQ* zH&@ZPK8t_S(LbyS%u9>M@Q)c9X5=F45NYvJ*t20CaW?E^m{Ua7xd7R`PFfwO=v;^H zkE)Z0>&bjwQisee#WjSX$vH!@@;_@PzPi zaRa1Bd>x(#lfQw=h`Xlr#M9^q(`jc>ldbwkFP*xitpG=y{U93i)9CvU0Ghu zatzBEkl|v{)S^_6cxWo6cGH5-5}o+I=NE^(j!_;r~7^Q&U(m5adGHoTzFqf^ zg+IHP%wJPX=4Z@tAdXdYmZJYSIcIlfq`1J+IhU@(SZ1>94~boDHzb5diUBw5&UA{g zH?(Q+hEDCJH;`+qAj8E0mWL^Z~{>?n{{i+)&ZF6pXHY`C*yK&f! z31Sh;=U9FSi82GNQ#?AKV)QSTAI_&cXITCT87U%4Pfy3fdPt`jP)fCUR4JKRSUSGc zDOR%F#&-sFdN%A0aT|KvNYSc{Lh@i4#r-*!hs!R&R`#N2!&1b=MFST(#o9#_qgQdq zDgNT?_T_YEdHK>gPO*cp-z+D0K45v4bO)8&} zqQgxT@;)r5uq=f{J}!Qix&Yl)Qm;Vmc@n;R;^6Ctp=--u+j0tnb=_EpwTDc-@pV84 zdXYF$0edr;!eO6WDFwyhWafITTh2N!z932_SA){<+m%f|A@;(Q7b_u6$dBM>J$&75 zH0#cZOK`<6#t9tXD-z@|wEuoFNmSs`BopKi4T)f{2PhtNJ<||S2hbFDWfCYCeity! zVO=Bi78K59Acx2lbC@bM-N62B07Z+&I0KnXZev|jO?yDOI7PaQO&(&C9mVZz@<%U$(lo7PYNqLa_MsCf8au4lu&yttgBYx7 z9MdrI5bG8&jSw4|?qC`zHZiSZ8in4H{Ck>dH2Pbj*OOn6f}y#5D08o9tplC>0sXAJc0q+7wd z**IUBXubIaOwPl~STgxKNQei-Sk}GAx(D#|Mkc?2fAtXa<DmHnFu64-_HA?t2r-41b#?cEIe8oHBA zD?#hKdqk)~;oQgmy)5b&6r*F-=g{sIUZ$Tk#k0wa zAP02y4WMv2C`JcFH`e(aPnZY9TOe|!t|J@TgQ5rPx`G^_p-e*@6x+jMD$``9BcjBh zaF#hJobQNvtXsSvTEDF*+}#NvhKo%8CWbO4Xd1@UN>e`5P^ODwB>O%WPpQ%3cQJ-(Dbrs>@cnL(17%#% zTBc+%)0@F5NR!y}k>u*rcklIazuK{DEs$iELj4lzt7ud54F8M>n^~}Q(}S)Fu6jg#!Zs#kse+V7eXdy%K>aJi>XKsX6g)bh&eK! z?RAGehgcv-GYtx%bXh3JGmQ$l+DsFR1D1|>4>X4*gmlZQYKOkN~9s9Yc8a6Tz} zvFU|@M4plB+0C0h6tZf%UDIYZ zd6zc1m0fwzLv{L$e2rQQ^Bk5xL1;tdMb?Fck`L$P?+z+UbwjCyoRfx=r~}h^>2gxa_X(wR`A*hh z8qV}R4tAz|xIUEI7n#7iLU!|KiGyEZuZ-#6GMjaGGhL9)*xrL|@1ktUx(%TeGHLX8 zQp)du?+#31m9y@3*2NhWOh=iLjN6z#38hk(Y~0QCQz)fNit#wpC8m1D3rsRBLmV&~ z7zdd=VHBeV#$l#prhsvjseTxxONMchsS8tM<4dNIa0Ts)@wF38t-#DAN^3LYXV#5j zT{}$$Vc}Ms=wKKwO2PT;N(aN`qSRf6(Inaz1F!r+_pq*qk>jEoupw-w87+Dmtz9Nk zckFaB*;msyGl}{cZCSUfkf^`WfgbHet64+?j83dmCa=?!fC)N>m}qon-P4$#aEQr9 zSEgNaiDnzUnZ9N!GWs$pABv6st|)};=Xv;2xKUyZbkT%&A57Od&`%BwGC9}CXF7;E z5r??J7{T-%(>&uErf^I-JH(B~D5m=>h~^t(n6@#M8e@a(l^NriR9MQ5iA*Y8Dvaxq zo)O{27!fxPp9|S4d_H71zB4GiOr(o7;VUr;-xR(E@~Q9*&^{mjIOP6t8owQcNhtY*#6MG6~w2)$(-!h%fH~jHte)<0JB*?>lk{_{5 z_t5ocd_6LZt`CKfJjZu_W_gL_A1s~Gq>W>l%CaHLrYzgD>`4OZ~tV|z=O^f5|-VHgYF6H3Ly7%Gw$-1i{-{3oE>#oB$sp?-H(+yWco^43E zdAZ?sTss2%6dIu1q&q&btEgiK)efYKCmN0Or1SlBwwo@VZ#2gz#k34^p#-v-SdkGE z*-WfqxjADEa&S+<#Lf-GXPMn28;GwmDF@B0-jSAWE1qmjciv+88Oy&|CS*SuNp^qg z>=Sp+{i$yZz0?;p}%HPh@}O zA5`A9DWz&xmVH=`U^$UxG0R(6-p6taWV(2|X(N0i>s+&994UT*rIkb1K9!D?&BWN8hhmzEIgr&Mf2HB$F_iu!4?;>&ma{!Z#X^d!n{SDw*7B)X%HP>}KH;0c z9J1&9&Mkdn{`_@$)$a6ad5=H8ydTS9kfJubgIr!C1= zkk#%y7Tp_n+O{Rxjb$&E16ht@Ii2MkmN&6n&hj>vm;7Y6lCM{?+|2Shmanlq#PY+o zRL4JId79-}mX}%n#nRc1%!IOxXPLq>0Ew9|F8|GNEyc*#?r~Cd;Oh|`=uQdCRV-ib z&>Py1J7CU4{LV7ABV9M^xISKrJ{_qZP3kxovaBPO_J{p@;;UPyO`ZONnU_0}c~vr1 znN;QT!%i#3kn*t3o`fOg4LVb5=ipk3HhfKKUY-6EI#Z}r7%DoGUprt1^SPb-!u+Am zLm(L`UD6}4Y*!g&u6v(q(8bDrz zwz`MP>Pr1l|E^RYhjhITT2(_;O~1D54T%)fwLPobYSph%3XlsA!ThYQLD$_V zUAK3op5nf)@n&@@ebJS|_ET5#mrPPw?bw0JD#`it2lh%A&AMGmRP95$=+y01GhOuT zW+X{5s2kZD-i^{~EXyg~LUDgyH*XTT|6wmG|Lv|OcXs1pa8}nfsDlstC&0|-Z2p^W zx4^Yuy4{eJE@a*U$dEiQw267QAcU97F820`#tUQn_{6w{IepMa#BP8#CodkhTITJ9 z`MkV6kTh0F7lZR&#kFcnx92rNt=ye=4(9jeQ8?dYNo6lx)bIXlGWwV9mmt+Rr>gt4 zDR{5YeIn%c?u}xwZlOEn@`3I&UOL)+2JWBiJ{R&!zVjVxFLYmoJMJD!AiG378Hslx zJt*G?_o6f@VtH>by0g6(h2euxza2GVeJV1eOa~u4ef> zYd>K58{dh^r`A%nkgf8`&7t|^8nvAHXO3P8Usv{|ZU9Pd%qpmsQoqZXZs*zcHLb`{nSq*;jGhyh>aiPVM~2 z5y!GA-A+Sx>eir%8s(}n44y1`oTE~nMhj9DkL(9C$3~Vw{sLKDr}j7O*Mxd)l69{k z**=zJ7GJk!*_CB4$aFF2n!n(JNV zId@&2YRAwwjUw&ZQS-6gOFc0?Kk7bDe)(%G53@W0>E!m=$T9 zM_B&A(wa?ol38BO@^zNSS)OMpi^$B*8%U*nXnD}kCba6wOSEh?w%2xKq8?uNp+*dL#o~|>- zc%`aAc-K{N)nKQ1pp1O{q@p>l)t&PdIMZVH2XNC6&oP~mmVtK!-5)f6k^4FycJLR3T)lWt{jx)2|U@WW4xP(`D!q#2F^aqg^6VTv9qg zJ|qcu19nr8E6E~D6SSWs~oDnJIc{`quY~%n}DQMMST9$YziGNHYKYN6jA*9p-4}I@(NV0?v?*%5(Mg=pv@2?=(OI~2l*w13W*fO; zqNYPpHyT~UU79|LsxZ2Wdo`Vpy2a=w&T0BR>TV-X)T3oZ2&c=x(&#RRYKro&HF}7H zniBnw7(Iojg)*7rA1-?dzot(9ZN}ANqNe`-T}E%QPtzFx9;1(F(^A=+>px`l6;Cj! z64_7eWvW2=ykPVbVXeqym3YMehtXdoG3^tSN&`eaUV*hwP*?_vXV_k)c&cDhi$P)l z>&TUIF<4AwS|OhE*D(i+r9t+Fh}BH09t{;6nD%o$8YZ@DqI#4s(%Mj1_6w>$>L2#Zt`!cct_Lj z=(o+O;<#<{OVIaP_iglfvp`%3GFhNLFU>trq*WjewBr~dC7N3$;wzg5So6id6}kJz zjI|buKQ&zw^R~HAINPg~xGv^`u~0;4nhxC}5vyr#%v5WUNY!*xOfjgTraNQGKut6~ z$o5)m+5|TjiCj%jLRT(&X?hO2axqBLD=|yZw~bVUI6Pxjh�Iy4Y8(rQ$wK(_`N@ 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

;L8i5@0k7iC*#hfw*GVPP!G}svPnQ?b> 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 wweEw^eGs-stj;l3QMZG|cHU-$CHt0a=9k3;+NC literal 0 HcmV?d00001 diff --git a/NzbDrone.Web/Bin/SubSonic.Core.xml b/NzbDrone.Web/Bin/SubSonic.Core.xml new file mode 100644 index 000000000..ece982406 --- /dev/null +++ b/NzbDrone.Web/Bin/SubSonic.Core.xml @@ -0,0 +1,4569 @@ + + + + SubSonic.Core + + + +

+ Removes column declarations in SelectExpression's that are not referenced + + + + + An extended expression visitor including custom DbExpression nodes + + + + + returns the list of SelectExpressions accessible from the source expression + + + + + Determines if a SelectExpression contains any aggregate expressions + + + + + A simple query mapping that attempts to infer mapping from naming conventionss + + + + + Defines mapping information and rules for the query provider + + + + + Determines if a give CLR type is mapped as a database entity + + + + + + + Deterimines is a property is mapped onto a column or relationship + + + + + + + Determines if a property is mapped onto a column + + + + + + + Determines if a property represents or is part of the entities unique identity (often primary key) + + + + + + + Determines if a property is mapped as a relationship + + + + + + + The type of the entity on the other side of the relationship + + + + + + + The name of the corresponding database table + + + + + + + The name of the corresponding table column + + + + + + + A sequence of all the mapped members + + + + + + + Determines if a relationship property refers to a single optional entity (as opposed to a collection.) + + + + + + + Get a query expression that selects all entities from a table + + + + + + + Gets an expression that constructs an entity instance relative to a root. + The root is most often a TableExpression, but may be any other experssion such as + a ConstantExpression. + + + + + + + + Get the members for the key properities to be joined in an association relationship + + + + + + + + Get an expression for a mapped property relative to a root expression. + The root is either a TableExpression or an expression defining an entity instance. + + + + + + + + Get a function that coerces an a sequence of one type into another type. + This is primarily used for aggregators stored in ProjectionExpression's, which are used to represent the + final transformation of the entire result set of a query. + + The expected type. + The actual type. + + + + + Apply mapping translations to this expression + + + + + + + The language related to the mapping + + + + + Builds an execution plan for a query expression + + + + + columns referencing the outer alias are turned into special named-value parameters + + + + + + Returns an Object with the specified Type and whose value is equivalent to the specified object. + + An Object that implements the IConvertible interface. + + An object whose Type is conversionType (or conversionType's underlying type if conversionType + is Nullable<>) and whose value is equivalent to value. -or- a null reference, if value is a null + reference and conversionType is not a value type. + + + This method exists as a workaround to System.Convert.ChangeType(Object, Type) which does not handle + nullables as of version 2.0 (2.0.50727.42) of the .NET Framework. The idea is that this method will + be deleted once Convert.ChangeType is updated in a future version of the .NET Framework to handle + nullable types, so we want this to behave as closely to Convert.ChangeType as possible. + This method was written by Peter Johnson at: + http://aspalliance.com/author.aspx?uId=1026. + + + + + + + + + + + Equals to. + + The value. + + + + + Determines whether the specified is equal to the current . + + The to compare with the current . + + true if the specified is equal to the current ; otherwise, false. + + The parameter is null. + + + + Serves as a hash function for a particular type. + + + A hash code for the current . + + + + + Returns a that represents the current . + + + A that represents the current . + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The table. + + + + Sets the specified column name. + + Name of the column. + + + + + Sets the expression. + + The column. + + + + + Executes this instance. + + + + + + + + + + + Initializes a new instance of the class. + + The provider. + + + + Sets the specified columns. + + The columns. + + + + + Summary for the RegexPattern class + + + + + + + + + + Initializes a new instance of the class. + + From. + To. + Type of the join. + + + + Gets the join type value. + + The j. + + + + + Gets or sets the type. + + The type. + + + + Gets or sets from column. + + From column. + + + + Gets or sets to column. + + To column. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The provider. + + + + Builds the SQL statement. + + + + + + Adds the specified columns into a new Insert object. + + + The columns. + + + + + Adds the specified columns into a new Insert object. + + + The TBL. + + + + + Inits this instance. + + + + + + Values the specified column. + + The column. + The column value. + + + + + Values the specified column. + + The column. + The column value. + Type of the db. + + + + + Valueses the specified values. + + The values. + + + + + Values the expression. + + The values. + + + + + Returns a that represents the current . + + + A that represents the current . + + + + + Executes this instance. + + + + + + Removes duplicate column declarations that refer to the same underlying column + + + + + Converts LINQ query operators to into custom DbExpression's + + + + + Initializes the class. + + + + + Strips the last specified chars from a string. + + The source string. + The remove from end. + + + + + Strips the last specified chars from a string. + + The source string. + The back down to. + + + + + Plurals to singular. + + The source string. + + + + + Singulars to plural. + + The source string. + + + + + Make plural when count is not one + + The number of things + The source string. + + + + + Removes the specified chars from the beginning of a string. + + The source string. + The remove from beginning. + + + + + Removes chars from the beginning of a string, up to the specified string + + The source string. + The remove up to. + + + + + Strips the last char from a a string. + + The source string. + + + + + Strips the last char from a a string. + + The source string. + + + + + Fasts the replace. + + The original. + The pattern. + The replacement. + + + + + Fasts the replace. + + The original. + The pattern. + The replacement. + Type of the comparison. + + + + + Returns text that is located between the startText and endText tags. + + The source string. + The text from which to start the crop + The endpoint of the crop + + + + + Removes excess white space in a string. + + The source string. + + + + + Removes all non-alpha numeric characters in a string + + The source string. + + + + + Creates a string array based on the words in a sentence + + The source string. + + + + + Strips all HTML tags from a string + + The HTML string. + + + + + Strips all HTML tags from a string and replaces the tags with the specified replacement + + The HTML string. + The HTML place holder. + + + + + Converts a generic List collection to a single comma-delimitted string. + + The list. + + + + + Converts a generic List collection to a single string using the specified delimitter. + + The list. + The delimiter. + + + + + Strips the specified input. + + The source string. + The strip value. + + + + + Converts ASCII encoding to Unicode + + The ASCII code. + + + + + Converts Text to HTML-encoded string + + The text string. + + + + + Converts HTML-encoded bits to Text + + The entity text. + + + + + Formats the args using String.Format with the target string as a format string. + + The format string passed to String.Format + The args passed to String.Format + + + + + Strings to enum. + + + The value. + + + + + Fills the entities. + + + + + Converts US State Name to it's two-character abbreviation. Returns null if the state name was not found. + + US State Name (ie Texas) + + + + + Converts a two-character US State Abbreviation to it's official Name Returns null if the abbreviation was not found. + + US State Name (ie Texas) + + + + + Fills the US States. + + + + + + + + + + + + + + + Generates the command line. + + + + + + Generates the constraints. + + + + + + Generates from list. + + + + + + Generates the order by. + + + + + + Generates the group by. + + + + + + Generates the joins. + + + + + + Gets the paging SQL wrapper. + + + + + + Gets the select columns. + + + + + + Finds the column. + + Name of the column. + + + + + Builds the select statement. + + + + + + Builds the paged select statement. + + + + + + Builds the update statement. + + + + + + Builds the insert statement. + + + + + + Builds the delete statement. + + + + + + Sets the insert query. + + The q. + + + + SqlFragment. Field values may change depending on the inheriting Generator. + + + + + Initializes a new instance of the class. + + The q. + + + + Sets the insert query. + + The q. + + + + Finds the column. + + Name of the column. + + + + + Generates the group by. + + + + + + Generates the command line. + + + + + + Generates the joins. + + + + + + Generates from list. + + + + + + Generates the constraints. + + + + + + Generates the order by. + + + + + + Gets the select columns. + + + + + + Gets the paging SQL wrapper. + + + + + + Builds the paged select statement. + + + + + + Builds the select statement. + + + + + + Builds the update statement. + + + + + + Builds the insert statement. + + + + + + Builds the delete statement. + + + + + + Qualifies the name of the table. + + The TBL. + + + + + Gets the qualified select. + + The table. + + + + + Generates the select column list. + + + + + + Builds the aggregate commands. + + + + + + Generates the 'SELECT' part of an + + The aggregate to include in the SELECT clause + The portion of the SELECT clause represented by this + + The ToString() logic moved from , rather than + including it in the Aggregate class itself... + + + + + Initializes a new instance of the class. + + The query. + + + + Builds the paged select statement. + + + + + + Builds the insert statement. + + + + + + A schema generator for your DB + + + + + Builds a CREATE TABLE statement. + + + + + + + Builds a DROP TABLE statement. + + Name of the table. + + + + + Adds the column. + + Name of the table. + The column. + + + + Alters the column. + + The column. + + + + Removes the column. + + Name of the table. + Name of the column. + + + + + Gets the type of the native. + + Type of the db. + + + + + Generates the columns. + + Table containing the columns. + + SQL fragment representing the supplied columns. + + + + + Sets the column attributes. + + The column. + + + + + Builds a CREATE TABLE statement. + + + + + + + Builds a DROP TABLE statement. + + Name of the table. + + + + + Adds the column. + + Name of the table. + The column. + + + + + Alters the column. + + The column. + + + + Removes the column. + + Name of the table. + Name of the column. + + + + + Gets the type of the native. + + Type of the db. + + + + + Generates the columns. + + Table containing the columns. + + SQL fragment representing the supplied columns. + + + + + Sets the column attributes. + + The column. + + + + + Gets an ITable from the DB based on name + + + + + Creates a list of table names + + + + + + + + + Removes one or more SelectExpression's by rewriting the expression tree to not include them, promoting + their from clause expressions and rewriting any column expressions that may have referenced them to now + reference the underlying data directly. + + + + + Attempts to rewrite cross-apply and outer-apply joins as inner and left-outer joins + + + + + rewrites nested projections into client-side joins + + + + + Formats a query expression into TSQL language syntax + + + + + Formats a query expression into TSQL language syntax + + + + + Extended node types for custom expressions + + + + + A custom expression node that represents a table reference in a SQL query + + + + + A custom expression node that represents a reference to a column in a SQL query + + + + + A declaration of a column in a SQL SELECT expression + + + + + An SQL OrderBy order type + + + + + A pairing of an expression and an order type for use in a SQL Order By clause + + + + + A custom expression node used to represent a SQL SELECT expression + + + + + A kind of SQL join + + + + + A custom expression node representing a SQL join clause + + + + + Allows is-null tests against value-types like int and float + + + + + A custom expression representing the construction of one or more result objects from a + SQL select expression + + + + + Holds list of tables, views, stored procedures, etc. + + + + + Initializes the shared connection. + + + + + + Initializes the shared connection. + + The shared connection string. + + + + + Resets the shared connection. + + + + + Adds the params. + + The CMD. + The qry. + + + + Gets a value indicating whether [current connection string is default]. + + + true if [current connection string is default]; otherwise, false. + + + + + Gets or sets the current shared connection. + + The current shared connection. + + + + For Jeff Atwood + http://www.codinghorror.com/blog/archives/000989.html + + + A class which wraps an inline SQL call + + + + + Initializes a new instance of the class. + Warning: This method assumes the default provider is intended. + Call InlineQuery(string providerName) if this is not the case. + + The SQL. + + + + Initializes a new instance of the class. + + The SQL. + The values. + + + + Initializes a new instance of the class. + + The provider. + + + + Gets the command. + + + + + + Executes the specified SQL. + + + + + Executes the scalar. + + The type of the result. + + + + + Executes the typed list. + + + + + + + Executes the reader. + + + + + + TSQL specific QueryLanguage + + + + + Defines the language rules for the query provider + + + + + Determines whether the CLR type corresponds to a scalar data type in the query language + + + + + + + Determines whether the given expression can be represented as a column in a select expressionss + + + + + + + Provides language specific query translation. Use this to apply language specific rewrites or + to make assertions/validations about the query. + + + + + + + Converts the query expression into text of this query language + + + + + + + Determine which sub-expressions must be parameters + + + + + + + Rewrites nested singleton projection into server-side joins + + + + + Gets a value indicating whether this instance is numeric. + + + true if this instance is numeric; otherwise, false. + + + + + Gets a value indicating whether this instance is date time. + + + true if this instance is date time; otherwise, false. + + + + + Gets a value indicating whether this instance is string. + + true if this instance is string; otherwise, false. + + + + Gets a value indicating whether this instance is numeric. + + + true if this instance is numeric; otherwise, false. + + + + + Gets a value indicating whether this instance is date time. + + + true if this instance is date time; otherwise, false. + + + + + Gets a value indicating whether this instance is string. + + true if this instance is string; otherwise, false. + + + + Summary for the ReservedColumnName class + + + + + Returns Schema instance with empty lists. + + + + + Where, And, Or + + + + + WHERE operator + + + + + AND operator + + + + + OR Operator + + + + + SQL Comparison Operators + + + + + Summary for the SqlComparison class + + + + + A Class for handling SQL Constraint generation + + + + + The query that this constraint is operating on + + + + + Initializes a new instance of the class. + + The condition. + Name of the constraint column. + + + + Initializes a new instance of the class. + + The condition. + Name of the constraint column. + Name of the constraint qualified column. + + + + Initializes a new instance of the class. + + The condition. + Name of the constraint column. + Name of the constraint qualified column. + The constraint construction fragment. + + + + Initializes a new instance of the class. + + The condition. + Name of the constraint column. + The SQL query. + + + + Initializes a new instance of the class. + + The condition. + Name of the constraint column. + Name of the constraint qualified column. + The constraint construction fragment. + The SQL query. + + + + Wheres the specified column name. + + Name of the column. + + + + + Ands the specified column name. + + Name of the column. + + + + + Ors the specified column name. + + Name of the column. + + + + + Gets or sets the name of the table. + + The name of the table. + + + + Gets the comparison operator. + + The comp. + + + + + Determines whether the specified is equal to the current . + + The to compare with the current . + + true if the specified is equal to the current ; otherwise, false. + + The parameter is null. + + + + Serves as a hash function for a particular type. + + + A hash code for the current . + + + + + Creates a LIKE statement. + + The val. + + + + + Creates a LIKE statement and appends a wildcard to the end of the passed-in value. + + The val. + + + + + Creates a LIKE statement and appends a wildcard to the end of the passed-in value. + + The val. + The wild card. + + + + + Creates a LIKE statement and appends a wildcard to the end of the passed-in value. + + The val. + + + + + Creates a NOT LIKE statement + + The val. + + + + + Determines whether [is greater than] [the specified val]. + + The val. + + + + + Determines whether [is greater than] [the specified val]. + + The val. + + + + + Specifies a SQL IN statement using a nested Select statement + + The select query. + + + + + Specifies a SQL IN statement + + Value array + + + + + Specifies a SQL IN statement + + Value array + + + + + Specifies a SQL IN statement using a nested Select statement + + The select query. + + + + + Specifies a SQL Not IN statement + + Value array + + + + + Specifies a SQL NOT IN statement + + Value array + + + + + Determines whether [is less than] [the specified val]. + + The val. + + + + + Determines whether [is less than] [the specified val]. + + The val. + + + + + Determines whether [is not null] [the specified val]. + + + + + + Determines whether the specified val is null. + + + + + + Determines whether [is between and] [the specified val1]. + + The val1. + The val2. + + + + + Determines whether [is equal to] [the specified val]. + + The val. + + + + + Determines whether [is not equal to] [the specified val]. + + The val. + + + + + Gets or sets the condition. + + The condition. + + + + Gets or sets the name of the column. + + The name of the column. + + + + Gets or sets the fully qualified name of the column. + + The name of the column. + + + + Gets or sets the string fragment used when assembling the text of query. + + The construction fragment. + + + + Gets or sets the comparison. + + The comparison. + + + + Gets or sets the parameter value. + + The parameter value. + + + + Gets or sets the start value. + + The start value. + + + + Gets or sets the end value. + + The end value. + + + + Gets or sets the in values. + + The in values. + + + + Gets or sets the in select. + + The in select. + + + + Gets or sets the name of the parameter. + + The name of the parameter. + + + + Gets or sets the type of the db. + + The type of the db. + + + + Gets or sets a value indicating whether this constraint is an Aggregate. + + + true if this instance is aggregate; otherwise, false. + + + + + Removes joins expressions that are identical to joins that already exist + + + + + Moves order-bys to the outermost select if possible + + + + + Add a sequence of order expressions to an accumulated list, prepending so as + to give precedence to the new expressions over any previous expressions + + + + + + Rebind order expressions to reference a new alias and add to column declarations if necessary + + + + + Writes out an expression tree (including DbExpression nodes) in a C#-ish syntax + + + + + Writes out an expression tree in a C#-ish syntax + + + + + Summary for the Numbers class + + + + + Determines whether a number is a natural number (positive, non-decimal) + + The s item. + + true if [is natural number] [the specified s item]; otherwise, false. + + + + + Determines whether [is whole number] [the specified s item]. + + The s item. + + true if [is whole number] [the specified s item]; otherwise, false. + + + + + Determines whether the specified s item is integer. + + The s item. + + true if the specified s item is integer; otherwise, false. + + + + + Determines whether the specified s item is number. + + The s item. + + true if the specified s item is number; otherwise, false. + + + + + Determines whether the specified value is an even number. + + The value. + + true if the specified value is even; otherwise, false. + + + + + Determines whether the specified value is an odd number. + + The value. + + true if the specified value is odd; otherwise, false. + + + + + Generates a random number with an upper bound + + The high. + + + + + Generates a random number between the specified bounds + + The low. + The high. + + + + + Generates a random double + + + + + + This set of classes abstracts out commands and their parameters so that + the DataProviders can work their magic regardless of the client type. The + System.Data.Common class was supposed to do this, but sort of fell flat + when it came to MySQL and other DB Providers that don't implement the Data + Factory pattern. Abstracts out the assignment of parameters, etc + + + + + Gets or sets the size. + + The size. + + + + Gets or sets the mode. + + The mode. + + + + Gets or sets the name of the parameter. + + The name of the parameter. + + + + Gets or sets the parameter value. + + The parameter value. + + + + Gets or sets the type of the data. + + The type of the data. + + + + Summary for the QueryParameterCollection class + + + + + Checks to see if specified parameter exists in the current collection + + + + + + + returns the specified QueryParameter, if it exists in this collection + + + + + + + Adds the specified parameter name. + + Name of the parameter. + The value. + + + + Adds the specified parameter name. + + Name of the parameter. + The value. + Type of the data. + + + + Adds the specified parameter name. + + Name of the parameter. + The value. + Type of the data. + The mode. + + + + Summary for the QueryCommandCollection class + + + + + Summary for the QueryCommand class + + + + + + + + + + Initializes a new instance of the class. + + The SQL. + The provider. + + + + Determines whether [has output params]. + + + true if [has output params]; otherwise, false. + + + + + Adds the parameter. The public AddParameter methods should call this one. + + Name of the parameter. + The parameter value. + Size of the max. + Type of the db. + The direction. + + + + Adds the parameter. + + Name of the parameter. + The parameter value. + Type of the data. + The parameter direction. + + + + Adds the parameter. + + Name of the parameter. + The parameter value. + Type of the data. + + + + Adds the parameter. + + Name of the parameter. + The parameter value. + + + + Adds the output parameter. + + Name of the parameter. + Size of the max. + Type of the db. + + + + Adds the output parameter. + + Name of the parameter. + Size of the max. + + + + Adds the output parameter. + + Name of the parameter. + + + + Adds the output parameter. + + Name of the parameter. + Type of the db. + + + + Adds a return parameter (RETURN_VALUE) to the command. + + + + + + Suggested by feroalien@hotmail.com + Issue 11 fix + + + + + + Gets or sets the command timeout (in seconds). + + The command timeout. + + + + Gets or sets the type of the command. + + The type of the command. + + + + Gets or sets the command SQL. + + The command SQL. + + + + Gets or sets the parameters. + + The parameters. + + + + Common interface for controlling defer-loadable types + + + + + A list implementation that is loaded the first the contents are examined + + + + + + Rewrites take and skip expressions into uses of TSQL row_number function + + + + + Adds relationship to query results depending on policy + + + + + Converts user arguments into named-value parameters + + + + + Result from calling ColumnProjector.ProjectColumns + + + + + Splits an expression into two parts + 1) a list of column declarations for sub-expressions that must be evaluated on the server + 2) a expression that describes how to combine/project the columns back together into the correct result + + + + + Nominator is a class that walks an expression tree bottom up, determining the set of + candidate expressions that are possible columns of a select expression + + + + + Summary for the Files class + + + + + Read a text file and obtain it's contents. + + The complete file path to write to. + String containing the content of the file. + + + + Creates or opens a file for writing and writes text to it. + + The complete file path to write to. + A String containing text to be written to the file. + + + + Update text within a file by replacing a substring within the file. + + The complete file path to write to. + A String to be replaced. + A String to replace all occurrences of lookFor. + + + + Writes out a string to a file. + + The complete file path to write to. + A String containing text to be written to the file. + + + + Fetches a web page + + The URL. + + + + + A holder for 1 or more queries to be executed together + + + + + Builds the SQL statement. + + + + + + Executes this instance. + + + + + + Executes the queries in and returns a multiple result set reader. + + + + + + Gets a command containing all the queued queries. + + + + + + Queues the specified query. + + The query. + + + + Queues the specified query. + + + The query. + + + + Queues a query for use in a transaction. + + The qry. + + + + Queues a query for use in a transaction. + + The CMD. + + + + Queues a query for use in a transaction. + + The SQL. + The parameters. + + + + Executes the transaction. + + + + + Enum for General SQL Functions + + + + + + + + + + Counts the specified col. + + The col. + + + + + Counts the specified col. + + The col. + The alias. + + + + + Counts the specified column name. + + Name of the column. + + + + + Counts the specified column name. + + Name of the column. + The alias. + + + + + Sums the specified col. + + The col. + + + + + Sums the specified column name. + + Name of the column. + + + + + Sums the specified col. + + The col. + The alias. + + + + + Sums the specified column name. + + Name of the column. + The alias. + + + + + Groups the by. + + The col. + + + + + Groups the by. + + Name of the column. + + + + + Groups the by. + + The col. + The alias. + + + + + Groups the by. + + Name of the column. + The alias. + + + + + Avgs the specified col. + + The col. + + + + + Avgs the specified column name. + + Name of the column. + + + + + Avgs the specified col. + + The col. + The alias. + + + + + Avgs the specified column name. + + Name of the column. + The alias. + + + + + Maxes the specified col. + + The col. + + + + + Maxes the specified column name. + + Name of the column. + + + + + Maxes the specified col. + + The col. + The alias. + + + + + Maxes the specified column name. + + Name of the column. + The alias. + + + + + Mins the specified col. + + The col. + + + + + Mins the specified column name. + + Name of the column. + + + + + Mins the specified col. + + The col. + The alias. + + + + + Mins the specified column name. + + Name of the column. + The alias. + + + + + Variances the specified col. + + The col. + + + + + Variances the specified column name. + + Name of the column. + + + + + Variances the specified col. + + The col. + The alias. + + + + + Variances the specified column name. + + Name of the column. + The alias. + + + + + Standards the deviation. + + The col. + + + + + Standards the deviation. + + Name of the column. + + + + + Standards the deviation. + + The col. + The alias. + + + + + Standards the deviation. + + Name of the column. + The alias. + + + + + Initializes a new instance of the class. + + Name of the column. + Type of the aggregate. + + + + Initializes a new instance of the class. + + Name of the column. + The alias. + Type of the aggregate. + + + + Initializes a new instance of the class. + + The column. + Type of the aggregate. + + + + Initializes a new instance of the class. + + The column. + The alias. + Type of the aggregate. + + + + Gets the type of the function. + + The agg. + + + + + Gets the SQL function call without an alias. Example: AVG(UnitPrice). + + + + + + Overrides ToString() to return the SQL Function call + + + + + + Gets or sets the type of the aggregate. + + The type of the aggregate. + + + + Gets or sets the name of the column. + + The name of the column. + + + + Gets or sets the alias. + + The alias. + + + + returns the set of all aliases produced by a query source + + + + + Translates accesses to relationship members into projections or joins + + + + + Defines query execution and materialization policies. + + + + + Determines if a relationship property is to be included in the results of the query + + + + + + + Determines if a relationship property is included, but the query for the related data is + deferred until the property is first accessed. + + + + + + + Provides policy specific query translations. This is where choices about inclusion of related objects and how + heirarchies are materialized affect the definition of the queries. + + + + + + + Converts a query into an execution plan. The plan is an function that executes the query and builds the + resulting objects. + + + + + + + + The mapping related to the policy. + + + + + Determines if two expressions are equivalent. Supports DbExpression nodes. + + + + + Compare two expressions to determine if they are equivalent + + + + + Returns the SqlDbType for a give DbType + + + + + + Takes the properties of an object and turns them into SubSonic.Query.Constraint + + + + + + + Coerces an IDataReader to try and load an object using name/property matching + + + + + Loads a single primitive value type + + + + + + Toes the type of the enumerable value. + + + The IDataReader to read from. + + + + + Determines whether [is core system type] [the specified type]. + + The type. + + true if [is core system type] [the specified type]; otherwise, false. + + + + + Coerces an IDataReader to load an enumerable of T + + + + + + + Creates a typed list from an IDataReader + + + + + Builds a SubSonic UPDATE query from the passed-in object + + + + + Builds a SubSonic INSERT query from the passed-in object + + + + + Builds a SubSonic DELETE query from the passed-in object + + + + + Gets the type of the native. + + Type of the db. + + + + + Generates the columns. + + Table containing the columns. + + SQL fragment representing the supplied columns. + + + + + Builds a CREATE TABLE statement. + + + + + + + Sets the column attributes. + + The column. + + + + + Gets the type of the db. + + Type of my SQL. + + + + + Simple implementation of the IGrouping<TKey, TElement> interface + + + + + + + Rewrite aggregate expressions, moving them into same select expression that has the group-by clause + + + + + Replaces references to one specific instance of an expression node with another node. + Supports DbExpression nodes + + + + + Parses the object value. + + The expression. + + + + + Parses the passed-in Expression into exclusive (WHERE x=y) constraints. + + The exp. + + + + + Parses the passed-in Expression into exclusive (WHERE x=y) constraint. + + The expression. + + + + + Determines whether the specified exp is constraint. + + The exp. + + true if the specified exp is constraint; otherwise, false. + + + + + Gets the constant value. + + The exp. + + + + + Indicates that a per-thread shared DbConnection object should be used the default DataProvider + (or alternativley a specific DataProvider if one is given) when communicating with the database. + This class is designed to be used within a using () {} block and in conjunction with a TransactionScope object. + It's purpose is to force a common DbConnection object to be used which has the effect of avoiding promotion + of a System.Transaction ambient Transaction to the DTC where possible. + When this class is created, it indicates to the underlying DataProvider that is should use a shared DbConnection + for subsequent operations. When the class is disposed (ie the using() {} block ends) it will indicate to the + underlying provider that it should no longer it's current shared connection and should Dispose() it. + + + + + Used to support nesting. By keeping a stack of all instances of the class that are created on this thread + thread we know when it is safe to Reset the underlying shared connection. + + + + + Indicates to the default DataProvider that it should use a per-thread shared connection. + + + + + Indicates to the default DataProvider that it should use a per-thread shared connection using the given connection string. + + The connection string. + Name of the provider. + + + + Indicates to the specified DataProvider that it should use a per-thread shared connection. + + The data provider. + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Releases unmanaged and - optionally - managed resources + + true to release both managed and unmanaged resources; false to release only unmanaged resources. + + + + Provides access to underlying connection that is shared per thread + + The current connection. + + + + Used within SubSonic to automatically manage a SqlConnection. If a shared connection is available + for the specified provider on the current thread, that shared connection will be used. + Otherwise, a new connection will be created. + Note that if a shared connection is used, it will NOT be automatically disposed - that is up to the caller. + Lifetime management of the shared connection is taken care of by using a + If a new connection is created, it will be automatically disposed when this AutomaticConnectionScope object + is disposed. + + + + + Initializes a new instance of the class. + + The provider. + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Releases unmanaged and - optionally - managed resources + + true to release both managed and unmanaged resources; false to release only unmanaged resources. + + + + Gets the connection. + + + + + + + Gets the connection. + + The connection. + + + + Gets a value indicating whether this instance is using shared connection. + + + true if this instance is using shared connection; otherwise, false. + + + + + A basic abstract LINQ query provider + + + + + Optional interface for IQueryProvider to implement Query<T>'s QueryText property. + + + + + A LINQ IQueryable query provider that executes database queries over a DbConnection + + + + + DbQueryProvider constrcutor that allows for external control of policy + to allow for new types of databases. + + + + + Converts the query expression into text that corresponds to the command that would be executed. + Useful for debugging. + + + + + + + Execute the query expression (does translation, etc.) + + + + + + + Convert the query expression into an execution plan + + + + + + + Do all query translations execpt building the execution plan + + + + + + + Determines whether a given expression can be executed locally. + (It contains no parts that should be translated to the target environment.) + + + + + + + Execute an actual query specified in the target language using the sADO connection + + + + + + + + + Converts a data reader into a sequence of objects using a projector function on each row + + + The reader. + The fn projector. + + + + + Get an IEnumerable that will execute the specified query when enumerated + + + + + + + + + Get an ADO command object initialized with the command-text and parameters + + + + + + + + + Write a command to the log + + + + + + Summary for the SqlFragment class + + + + + + + + + + Initializes a new instance of the class. + + The provider. + + + + Validates the query. + + + + + Finds the column. + + Name of the column. + + + + + Wheres the specified column name. + + Name of the column. + + + + + Wheres the specified column. + + The column. + + + + + Wheres the specified agg. + + The agg. + + + + + Ors the specified column name. + + Name of the column. + + + + + Ors the specified column. + + The column. + + + + + Ors the specified agg. + + The agg. + + + + + Ors the expression. + + Name of the column. + + + + + Opens the expression. + + + + + + Closes the expression. + + + + + + Ands the specified column name. + + Name of the column. + + + + + Ands the specified column. + + The column. + + + + + Ands the specified agg. + + The agg. + + + + + Ands the expression. + + Name of the column. + + + + + Returns the currently set SQL statement for this query object + + + + + + Builds the SQL statement. + + + + + + Froms the specified TBL. + + The TBL. + + + + + Froms the specified TBL. + + Name of the table. + + + + + Froms the specified TBL. + + + + + + + Creates an inner join based on the passed-in column names + + + + + + + + + Creates an Inner Join, guessing based on Primary Key matching + + + + + + + Inners the join. + + From column. + To column. + + + + + Outers the join. + + From column. + To column. + + + + + Crosses the join. + + From column. + To column. + + + + + Lefts the inner join. + + From column. + To column. + + + + + Rights the inner join. + + From column. + To column. + + + + + Lefts the outer join. + + From column. + To column. + + + + + Rights the outer join. + + From column. + To column. + + + + + Nots the equal join. + + From column. + To column. + + + + + Orders the asc. + + The columns. + + + + + Orders the desc. + + The columns. + + + + + Pageds the specified current page. + + The current page. + Size of the page. + + + + + Pageds the specified current page. + + The current page. + Size of the page. + The id column. + + + + + Executes this instance. + + + + + + Executes the reader. + + + + + + Executes the scalar. + + + + + + Executes the scalar. + + The type of the result. + + + + + Gets the record count. + + + + + + Executes the typed list. + + + + + + + Executes the typed list. + + + + + + + Executes the query and returns the result as a single item of T + + The type of item to return + + + + Executes the transaction. + + The queries. + + + + Executes the transaction. + + The queries. + Name of the connection string. + + + + Gets or sets the open paren count. + + The open paren count. + + + + Gets or sets the closed paren count. + + The closed paren count. + + + + + + + + + Initializes a new instance of the class. + + The query. + + + + Builds the paged select statement. + + + + + + Builds the insert statement. + + + + + + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The table. + The provider. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A default implementation of IQueryable for use with QueryProvider + + + + + Duplicate the query expression by making a copy with new table aliases + + + + + Summary for the Validation class + + + + + Determines whether the specified eval string contains only alpha characters. + + The eval string. + + true if the specified eval string is alpha; otherwise, false. + + + + + Determines whether the specified eval string contains only alphanumeric characters + + The eval string. + + true if the string is alphanumeric; otherwise, false. + + + + + Determines whether the specified eval string contains only alphanumeric characters + + The eval string. + if set to true [allow spaces]. + + true if the string is alphanumeric; otherwise, false. + + + + + Determines whether the specified eval string contains only numeric characters + + The eval string. + + true if the string is numeric; otherwise, false. + + + + + Determines whether the specified email address string is valid based on regular expression evaluation. + + The email address string. + + true if the specified email address is valid; otherwise, false. + + + + + Determines whether the specified string is lower case. + + The input string. + + true if the specified string is lower case; otherwise, false. + + + + + Determines whether the specified string is upper case. + + The input string. + + true if the specified string is upper case; otherwise, false. + + + + + Determines whether the specified string is a valid GUID. + + The GUID. + + true if the specified string is a valid GUID; otherwise, false. + + + + + Determines whether the specified string is a valid US Zip Code, using either 5 or 5+4 format. + + The zip code. + + true if it is a valid zip code; otherwise, false. + + + + + Determines whether the specified string is a valid US Zip Code, using the 5 digit format. + + The zip code. + + true if it is a valid zip code; otherwise, false. + + + + + Determines whether the specified string is a valid US Zip Code, using the 5+4 format. + + The zip code. + + true if it is a valid zip code; otherwise, false. + + + + + Determines whether the specified string is a valid Social Security number. Dashes are optional. + + The Social Security Number + + true if it is a valid Social Security number; otherwise, false. + + + + + Determines whether the specified string is a valid IP address. + + The ip address. + + true if valid; otherwise, false. + + + + + Determines whether the specified string is a valid US phone number using the referenced regex string. + + The telephone number. + + true if valid; otherwise, false. + + + + + Determines whether the specified string is a valid currency string using the referenced regex string. + + The currency string. + + true if valid; otherwise, false. + + + + + Determines whether the specified string is a valid URL string using the referenced regex string. + + The URL string. + + true if valid; otherwise, false. + + + + + Determines whether the specified string is consider a strong password based on the supplied string. + + The password. + + true if strong; otherwise, false. + + + + + Determines whether the specified string is a valid credit, based on matching any one of the eight credit card strings + + The credit card. + + true if valid; otherwise, false. + + + + + Determines whether the specified string is an American Express, Discover, MasterCard, or Visa + + The credit card. + + true if valid; otherwise, false. + + + + + Determines whether the specified string is an American Express card + + The credit card. + + true if valid; otherwise, false. + + + + + Determines whether the specified string is an Carte Blanche card + + The credit card. + + true if valid; otherwise, false. + + + + + Determines whether the specified string is an Diner's Club card + + The credit card. + + true if valid; otherwise, false. + + + + + Determines whether the specified string is a Discover card + + The credit card. + + true if valid; otherwise, false. + + + + + Determines whether the specified string is an En Route card + + The credit card. + + true if valid; otherwise, false. + + + + + Determines whether the specified string is an JCB card + + The credit card. + + true if valid; otherwise, false. + + + + + Determines whether the specified string is a Master Card credit card + + The credit card. + + true if valid; otherwise, false. + + + + + Determines whether the specified string is Visa card. + + The credit card. + + true if valid; otherwise, false. + + + + + Cleans the credit card number, returning just the numeric values. + + The credit card. + + + + + Determines whether the credit card number, once cleaned, passes the Luhn algorith. + See: http://en.wikipedia.org/wiki/Luhn_algorithm + + The credit card number. + + + + + Determines whether the specified int array passes the Luhn algorith + + The int array to evaluate + + true if it validates; otherwise, false. + + + + + Determine whether the passed string is numeric, by attempting to parse it to a double + + The string to evaluated for numeric conversion + + true if the string can be converted to a number; otherwise, false. + + + + + Executes the specified SQL. + + + + + Executes the scalar. + + The type of the result. + + + + + Executes the typed list. + + + + + + + Executes the reader. + + + + + + Type related helper methods + + + + + + + + + + Initializes a new instance of the class. + + The provider. + The columns. + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The aggregates. + + + + Initializes a new instance of the class. + + The provider. + The aggregates. + + + + Initializes a new instance of the class. + + The columns. + + + + Initializes a new instance of the class. + WARNING: This overload should only be used with applications that use a single provider! + + The columns. + + + + Alls the columns from. + + + + + + + Expressions the specified SQL expression. + + The SQL expression. + + + + + Tops the specified top. + + The top. + + + + + Removes the column. + + + + + + + + Sets the column attributes. + + The column. + + + + + Gets the type of the db. + + Type of the SQL. + + + + + Type related helper methods + + + + + Replaces references to one specific instance of an expression node with another node + + + + + TSQL specific QueryLanguage + + + + + returns the set of all aliases produced by a query source + + + + + Creates a set of SQL commands for synchronizing your database with your object set + + + + + Builds the delete query. + + The item. + + + + + Builds the insert query. + + The item. + + + + + Builds the update query. + + The item. + + + + + Creates a reusable, parameterized representation of a query that caches the execution plan + + + + + Summary for the Dates class + + + + + Returns a date in the past by days. + + The days. + + + + + Returns a date in the future by days. + + The days. + + + + + Returns a date in the past by hours. + + The hours. + + + + + Returns a date in the future by hours. + + The hours. + + + + + Returns a date in the past by minutes + + The minutes. + + + + + Returns a date in the future by minutes. + + The minutes. + + + + + Gets a date in the past according to seconds + + The seconds. + + + + + Gets a date in the future by seconds. + + The seconds. + + + + + Diffs the specified date. + + The date one. + The date two. + + + + + Returns a double indicating the number of days between two dates (past is negative) + + The date one. + The date two. + + + + + Returns a double indicating the number of days between two dates (past is negative) + + The date one. + The date two. + + + + + Returns a double indicating the number of days between two dates (past is negative) + + The date one. + The date two. + + + + + Returns a double indicating the number of days between two dates (past is negative) + + The date one. + The date two. + + + + + Returns a double indicating the number of days between two dates (past is negative) + + The date one. + The date two. + + + + + Returns a double indicating the number of days between two dates (past is negative) + + The date one. + The date two. + + + + + Displays the difference in time between the two dates. Return example is "12 years 4 months 24 days 8 hours 33 minutes 5 seconds" + + The start time. + The end time. + + + + + Counts the number of weekdays between two dates. + + The start time. + The end time. + + + + + Counts the number of weekends between two dates. + + The start time. + The end time. + + + + + Verifies if the object is a date + + The dt. + + true if the specified dt is date; otherwise, false. + + + + + Checks to see if the date is a week day (Mon - Fri) + + The dt. + + true if [is week day] [the specified dt]; otherwise, false. + + + + + Checks to see if the date is Saturday or Sunday + + The dt. + + true if [is week end] [the specified dt]; otherwise, false. + + + + + Displays the difference in time between the two dates. Return example is "12 years 4 months 24 days 8 hours 33 minutes 5 seconds" + + The start time. + The end time. + + + + + Given a datetime object, returns the formatted month and day, i.e. "April 15th" + + The date to extract the string from + + + + + Given a datetime object, returns the formatted day, "15th" + + The date to extract the string from + + + + + Remove leading strings with zeros and adjust for singular/plural + + The STR. + The previous STR. + The t. + + + + + An enumeration value for no options configured. + + + + + The default set of options (right now the same as none). + + + + + Use this flag to let the repository run migrations. + + + + + + + + + + + + + + + + + + + + Removes select expressions that don't add any additional semantic value + + + + + Rewrite all column references to one or more aliases to a new single alias + + + + + Summary for the Inflector class + + + + + Initializes the class. + + + + + Adds the irregular rule. + + The singular. + The plural. + + + + Adds the unknown count rule. + + The word. + + + + Adds the plural rule. + + The rule. + The replacement. + + + + Adds the singular rule. + + The rule. + The replacement. + + + + Makes the plural. + + The word. + + + + + Makes the singular. + + The word. + + + + + Applies the rules. + + The rules. + The word. + + + + + Converts the string to title case. + + The word. + + + + + Converts the string to human case. + + The lowercase and underscored word. + + + + + Convert string to proper case + + The source string. + + + + + Converts the string to pascal case. + + The lowercase and underscored word. + + + + + Converts text to pascal case... + + The text. + if set to true [remove underscores]. + + + + + Converts the string to camel case. + + The lowercase and underscored word. + + + + + Adds the underscores. + + The pascal cased word. + + + + + Makes the initial caps. + + The word. + + + + + Makes the initial lower case. + + The word. + + + + + Adds the ordinal suffix. + + The number. + + + + + Converts the underscores to dashes. + + The underscored word. + + + + + Summary for the InflectorRule class + + + + + + + + + + + + + + + Initializes a new instance of the class. + + The regex pattern. + The replacement text. + + + + Applies the specified word. + + The word. + + + + + Process the passed-in LINQ expression + + + + + + Sets the column attributes. + + The column. + + + + + Gets the type of the db. + + Type of the SQL. + + + + + A Repository class which wraps the a Database by type + + + + + Loads a T object + + + The item. + The column. + The value. + + + + + Loads a T object + + + The item. + The expression. + + + + + Returns all T items + + + + + Returns a single record + + + + + Returns a server-side Paged List + + + + + Returns a server-side Paged List + + + + + Returns a server-side Paged List + + + + + Returns an IQueryable based on the passed-in Expression Chinook Database + + + + + Returns an IQueryable based on the passed-in Expression Chinook Database + + + + + Adds a T item to the db + + + + + Adds a T item to the db + + + + + Adds a bunch of T items + + + + + Adds a bunch of T items + + + + + Updates the passed-in T + + + + + Updates the passed-in T + + + + + Updates the passed-in T + + + + + Updates the passed-in T + + + + + Deletes the passed-in T items + + + + + Deletes the passed-in T items + + + + + Deletes the passed-in T item + + + + + Deletes the passed-in T item + + + + + Deletes the T item by Primary Key + + + + + Deletes the T item by Primary Key + + + + + Deletes 0 to n T items from the Database based on the passed-in Expression + + + + + Deletes 0 to n T items from the Database based on the passed-in Expression + + + + + Singles the specified expression. + + + The expression. + + + + + Singles the specified key. + + + The key. + + + + + Retrieves subset of records from the database matching the expression + + + + + Gets the paged. + + + Index of the page. + Size of the page. + + + + + Gets the paged. + + + The sort by. + Index of the page. + Size of the page. + + + + + Adds the specified item, setting the key if available. + + + The item. + + + + + Adds a lot of the items using a transaction. + + + The items. + + + + Updates the specified item. + + + The item. + + + + + Updates lots of items using a transaction. + + + The items. + + + + + Deletes the specified key. + + + The key. + + + + + Deletes 1 or more items. + + + The expression. + + + + + Deletes 1 or more items. + + + The items. + + + + + Migrates this instance. + + + + + + Rewrites an expression tree so that locally isolatable sub-expressions are evaluated and converted into ConstantExpression nodes. + + + + + Performs evaluation and replacement of independent sub-trees + + The root of the expression tree. + A function that decides whether a given expression node can be part of the local function. + A new tree with sub-trees evaluated and replaced. + + + + Performs evaluation and replacement of independent sub-trees + + The root of the expression tree. + A new tree with sub-trees evaluated and replaced. + + + + Evaluates and replaces sub-trees when first candidate is reached (top-down) + + + + + Performs bottom-up analysis to determine which nodes can possibly + be part of an evaluated sub-tree. + + + + + Formats a query expression into TSQL language syntax + + + + + TSQL specific QueryLanguage + + + + + + + + + + Initializes a new instance of the class. + + The query. + + + + Gets the type of the native. + + Type of the db. + + + + + Generates SQL for all the columns in table + + Table containing the columns. + + SQL fragment representing the supplied columns. + + + + + Generates from list. + + + + + + Sets the column attributes. + + The column. + + + + + Builds the paged select statement. + + + + + + Finds the first sub-expression that accesses a Query<T> object + + + + + Removes column declarations in SelectExpression's that are not referenced + + + + diff --git a/NzbDrone.Web/Bin/TvdbLib.dll b/NzbDrone.Web/Bin/TvdbLib.dll new file mode 100644 index 0000000000000000000000000000000000000000..d453dceae07896c65301fa4e96b74a9c25be14d0 GIT binary patch literal 207360 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 literal 0 HcmV?d00001 diff --git a/NzbDrone.Web/Bin/TvdbLib.pdb b/NzbDrone.Web/Bin/TvdbLib.pdb new file mode 100644 index 0000000000000000000000000000000000000000..f03763a1e83eaa58a485770c4eb95207dd717ac2 GIT binary patch literal 529920 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 Bvz7n= literal 0 HcmV?d00001 diff --git a/NzbDrone.Web/Bin/TvdbLib.xml b/NzbDrone.Web/Bin/TvdbLib.xml new file mode 100644 index 000000000..d8c5c1e0b --- /dev/null +++ b/NzbDrone.Web/Bin/TvdbLib.xml @@ -0,0 +1,8138 @@ + + + + TvdbLib + + + +

+ An input buffer customised for use by + + + The buffer supports decryption of incoming data. + + + + + Initialise a new instance of with a default buffer size + + The stream to buffer. + + + + Initialise a new instance of + + The stream to buffer. + The size to use for the buffer + A minimum buffer size of 1KB is permitted. Lower sizes are treated as 1KB. + + + + Call passing the current clear text buffer contents. + + The inflater to set input for. + + + + Fill the buffer from the underlying input stream. + + + + + Read a buffer directly from the input stream + + The buffer to fill + Returns the number of bytes read. + + + + Read a buffer directly from the input stream + + The buffer to read into + The offset to start reading data into. + The number of bytes to read. + Returns the number of bytes read. + + + + Read clear text data from the input stream. + + The buffer to add data to. + The offset to start adding data at. + The number of bytes to read. + Returns the number of bytes actually read. + + + + Read a from the input stream. + + Returns the byte read. + + + + Read an in little endian byte order. + + The short value read case to an int. + + + + Read an in little endian byte order. + + The int value read. + + + + Read a in little endian byte order. + + The long value read. + + + + Get the length of bytes bytes in the + + + + + Get the contents of the raw data buffer. + + This may contain encrypted data. + + + + Get the number of useable bytes in + + + + + Get the contents of the clear text buffer. + + + + + Get/set the number of bytes available + + + + + Get/set the to apply to any data. + + Set this value to null to have no transform applied. + + + + This filter stream is used to decompress data compressed using the "deflate" + format. The "deflate" format is described in RFC 1951. + + This stream may form the basis for other decompression filters, such + as the GZipInputStream. + + Author of the original java version : John Leuner. + + + + + Create an InflaterInputStream with the default decompressor + and a default buffer size of 4KB. + + + The InputStream to read bytes from + + + + + Create an InflaterInputStream with the specified decompressor + and a default buffer size of 4KB. + + + The source of input data + + + The decompressor used to decompress data read from baseInputStream + + + + + Create an InflaterInputStream with the specified decompressor + and the specified buffer size. + + + The InputStream to read bytes from + + + The decompressor to use + + + Size of the buffer to use + + + + + Skip specified number of bytes of uncompressed data + + + Number of bytes to skip + + + The number of bytes skipped, zero if the end of + stream has been reached + + + The number of bytes to skip is less than or equal to zero. + + + + + Clear any cryptographic state. + + + + + Fills the buffer with more data to decompress. + + + Stream ends early + + + + + Flushes the baseInputStream + + + + + Sets the position within the current stream + Always throws a NotSupportedException + + The relative offset to seek to. + The defining where to seek from. + The new position in the stream. + Any access + + + + Set the length of the current stream + Always throws a NotSupportedException + + The new length value for the stream. + Any access + + + + Writes a sequence of bytes to stream and advances the current position + This method always throws a NotSupportedException + + Thew buffer containing data to write. + The offset of the first byte to write. + The number of bytes to write. + Any access + + + + Writes one byte to the current stream and advances the current position + Always throws a NotSupportedException + + The byte to write. + Any access + + + + Entry point to begin an asynchronous write. Always throws a NotSupportedException. + + The buffer to write data from + Offset of first byte to write + The maximum number of bytes to write + The method to be called when the asynchronous write operation is completed + A user-provided object that distinguishes this particular asynchronous write request from other requests + An IAsyncResult that references the asynchronous write + Any access + + + + Closes the input stream. When + is true the underlying stream is also closed. + + + + + Reads decompressed data into the provided buffer byte array + + + The array to read and decompress data into + + + The offset indicating where the data should be placed + + + The number of bytes to decompress + + The number of bytes read. Zero signals the end of stream + + Inflater needs a dictionary + + + + + Decompressor for this stream + + + + + Input buffer for this stream. + + + + + Base stream the inflater reads from. + + + + + The compressed size + + + + + Flag indicating wether this instance has been closed or not. + + + + + Flag indicating wether this instance is designated the stream owner. + When closing if this flag is true the underlying stream is closed. + + + + + Get/set flag indicating ownership of underlying stream. + When the flag is true will close the underlying stream also. + + + The default value is true. + + + + + Returns 0 once the end of the stream (EOF) has been reached. + Otherwise returns 1. + + + + + Gets a value indicating whether the current stream supports reading + + + + + Gets a value of false indicating seeking is not supported for this stream. + + + + + Gets a value of false indicating that this stream is not writeable. + + + + + A value representing the length of the stream in bytes. + + + + + The current position within the stream. + Throws a NotSupportedException when attempting to set the position + + Attempting to set the position + + + + Class representing the result of a tvdb name query -> for further information + visit http://thetvdb.com/wiki/index.php/API:GetSeries + + + + + TvdbSearchResult constructor + + + + + TvdbSearchResult constructor + + Id of series + + + + Id of the returned series + + + + + Name of the returned series + + + + + When was the returned series aired first + + + + + Language of the returned series + + + + + Overview of the returned series + + + + + Banner of the returned series + + + + + Imdb id of the returned series + + + + + A cache provider stores and loads the data that has been previously retrieved from http://thetvdb.com. + + + + + Initialises the cache, should do the following things + - initialise connections used for this cache provider (db connections, network shares,...) + - create folder structure / db tables / ... if they are not created already + - if this is the first time the cache has been initialised (built), mark last_updated with the + current date + + TvdbData object + + + + Closes the cache (e.g. close open connection, etc.) + + true if successful, false otherwise + + + + Completely refreshes the cache (all stored information is lost) + + true if the cache was cleared successfully, + false otherwise (e.g. no write rights,...) + + + + Remove a specific series from cache + + the id of the series + true if the series was removed from the cache successfully, + false otherwise (e.g. series not cached) + + + + Loads all cached series from cache -> can take a while + + The loaded TvdbData object + + + + Loads the available languages from cache + + A list of TvdbLanguage objects from cache or null + + + + Loads all series from cache + + A list of TvdbSeries objects from cache or null + + + + Load the give series from cache + + Id of the series to load + The TvdbSeries object from cache or null + + + + Load user info from cache + + Id of the user + TvdbUser object or null if the user couldn't be loaded + + + + Saves cache settings + + settings + + + + Save the language to cache + + List of languages that are available on http://thetvdb.com + + + + Saves the series to cache + + TvdbSeries object + + + + Saves the user data to cache + + TvdbUser object + + + + Save the given image to cache + + banner to save + id of series + filename (will be the same name used by LoadImageFromCache) + + + + Loads the specified image from the cache + + series id + filename of the image (same one as used by SaveToCache) + The loaded image or null if the image wasn't found + + + + Receives a list of all series that have been cached + + A list of series that have been already stored with this cache provider + + + + Check if the series is cached in the given configuration + + Id of the series + Language of the series + are episodes loaded + are banners loaded + are actors loaded + true if the series is cached, false otherwise + + + + Removes the specified image from cache (if it has been cached) + + id of series + name of image + true if image was removed successfully, false otherwise (e.g. image didn't exist) + + + + Is the cache provider initialised + + + + + Class representing an episode with all the information that can be retrieved from http://thetvdb.com.
+
+ Those are:
+ 332179
+
+
+
+
+ |Joseph McGinty Nichol|
+ Chuck Versus the World
+ 1
+ 2007-09-24
+ |Julia Ling|Vik Sahay|Mieko Hillman|
+
+ English
+ Chuck Bartowski is an average computer geek...
+
+ 9.0
+ 1
+ |Josh Schwartz|Chris Fedak|
+
+
+
+
+ episodes/80348-332179.jpg
+ 1201292806
+ 27985
+ 80348
+ + ]]> + Additionally the banner image is stored +
+
+ + + Default constructor for the TvdbEpisode class + + + + + Returns a short description of the episode (e.g. 1x20 Episodename) + + short description of the episode + + + + Updates all information of this episode from the given + episode... + + new episode + + + + if the episode is a special episode -> Before which season did + it air + + + + + if the episode is a special episode -> Before which episode did + it air + + + + + if the episode is a special episode -> After which season did + it air + + + + + Is the episode a special episode + + The fields airsafter_season, airsbefore_episode, and airsbefore_season will only be included when the episode is listed as a special. Specials are also listed as being in season 0, so they're easy to identify and sort. + + + + + Which DVD season is this episode + + + + + The Dvd Episode Number + + + + + The DVD Disc Id + + + + + The chapter of this episode on the dvd + + + + + unique tvdb Id of this episode + + + + + Id of series this episode belongs to + + + + + Id of season this episode belong to + + + + + When was the episode last updated + + + + + Path to the banner image on http://thetvdb.com + + + + + The absolute number of the episode + + + + + List of writers for this episode + + + + + Season number of this episode + + + + + Rating for this episode + + + + + Production code for this episode + + + + + Overview of this episode + + + + + Language of this episode + + + + + Imdb number of this episode + + + + + List of guest stars that appeared in this episode + + + + + When did the episode air first + + + + + Episode number + + + + + Name of the episode + + + + + List of directors for this episode + + + + + n/a + + + + + n/a + + + + + Formatted String of writers for this episode in the + format | writer1 | writer2 | writer3 | + + + + + Formatted String of guest stars that appeared during this episode in the + format | gueststar1 | gueststar2 | gueststar3 | + + + + + Formatted String of directors of this episode in the + format | director1 | director2 | director3 | + + + + + The episode image banner + + + + + While one would think that the episode number would be a simple affair there are several different ways that someone might choose to number the episodes on this site episodes are numbered in the order they aired on TV. That being said the site does provide two alternative numbering methods.

+ 1. Absolute Episode Order
+ 2. DVD Release Order
+
+ More information on the topic can be found at: http://thetvdb.com/wiki/index.php/Category:Episodes +
+
+ + + Default order used by thetvdb + + + + + As everyone knows series can air on tv in an order completely different than the one intended by the series creator. Firefly being the most often discussed example on this site. Therefore we have provided a method for entering this "Correct" order. See also http://thetvdb.com/wiki/index.php/DVD_Order + + + + + The standard for this site is the the primary episode number is representative of the shows aired order. But as any Anime fan will tell you Anime episodes are usually numbered without seasons and go from episode 1 to whatever the final episode is, often into the hundreds. Most western broadcasters however do break these shows into seasons, so in order to accommodate this alternate numbering scheme an additional field Absolute Number is available. While this system is primarily intended for Anime series that don't really have seasons, it will work for any program. To use this interface there is no alternate season number only the absolute episode number. Numbering continues on from season to season. So if season 1 ends with 25 then season 2 begins with 26. So for example Bleach is currently in it's "sixth season" but season 5 episode 14 Shock! The Father's True Character is actually episode 111. + + + + + Exception thrown when no user has been found + + + + + Base excpetion for tvdblib + + + + + TvdbException constructor + + Message + + + + TvdbException constructor + + + + + TvdbUserNotFoundException constructor + + Message + + + + A function has been called that needs an initialised cache but the InitCache function + hasn't been called yet + + + + + TvdbCacheNotInitialisedException constructor + + Message + + + + TvdbCacheNotInitialisedException constructor + + + + + Tvdb Handler for handling all features that are available on http://thetvdb.com/ + + http://thetvdb.com/ is an open database that can be modified by anybody. All content and images on the site have been contributed by our users. The database schema and website are open source under the GPL, and are available at Sourceforge. + The site also has a full XML API that allows other software and websites to use this information. The API is currently being used by the myTV add-in for Windows Media Center, XBMC (formerly XBox Media Center); the meeTVshows and TVNight plugins for Meedio; the MP-TVSeries plugin for MediaPortal; Boxee; and many more. + + + + + Creates a new Tvdb handler + The tvdb handler is used not only for downloading data from thetvdb but also to cache the downloaded data to a persistent storage, + handle user specific tasks and keep the downloaded data consistent with the online data (via the updates api) + + The api key used for downloading data from thetvdb -> see http://thetvdb.com/wiki/index.php/Programmers_API + + + + Creates a new Tvdb handler + + The cache provider used to store the information + Api key to use for this project + + + + Load previously stored information on (except series information) from cache + + true if cache could be loaded successfully, false otherwise + + + + Completely refreshes the cache (all stored information is lost) -> cache + must be initialised to call this method + + true if the cache was cleared successfully, + false otherwise (e.g. no write rights,...) + + + + Search for a seris on tvdb using the name of the series using the default language (english) + + Name of series + List of possible hits (containing only very basic information (id, name,....) + + + + Search for a seris on tvdb using the name of the series + + Name of series + Language to search in + List of possible hits (containing only very basic information (id, name,....) + + + + Searches for a series by the id of an external provider + + external provider + id of the series + The tvdb series that corresponds to the external id + + + + Gets the series with the given id either from cache (if it has already been loaded) or from + the selected tvdb mirror. + + To check if this series has already been cached, use the Method IsCached(TvdbSeries _series) + + Tvdb is not available + The given api key is not valid + id of series + language that should be retrieved + if true, the full series record will be loaded (series + all episodes), otherwise only the base record will be loaded which contains only series information + if true also loads the extended actor information + if true also loads the paths to the banners + Instance of TvdbSeries containing all gained information + + + + Gets the series with the given id either from cache (if it has already been loaded) or from + the selected tvdb mirror. If this series is not already cached and the series has to be + downloaded, the zipped version will be downloaded + + To check if this series has already been cached, use the Method IsCached(TvdbSeries _series) + + Tvdb is not available + The given api key is not valid + id of series + language that should be retrieved + Instance of TvdbSeries containing all gained information + + + + Gets the series with the given id either from cache (if it has already been loaded) or from + the selected tvdb mirror. If you use zip the request automatically downloads the episodes, the actors and the banners, so you should also select those features. + + To check if this series has already been cached, use the Method IsCached(TvdbSeries _series) + + Tvdb is not available + The given api key is not valid + id of series + language abbriviation of the series that should be retrieved + if true, the full series record will be loaded (series + all episodes), otherwise only the base record will be loaded which contains only series information + if true also loads the paths to the banners + if true also loads the extended actor information + If this series is not already cached and the series has to be downloaded, the zipped version will be downloaded + Instance of TvdbSeries containing all gained information + Exception is thrown when there was an error parsing the xml files. + Feel free to post a detailed description of this issue on http://code.google.com/p/tvdblib + or http://forums.thetvdb.com/ + The stored api key is invalid + The tvdb database is unavailable + + + + Gets the full series (including episode information and actors) with the given id either from cache + (if it has already been loaded) or from the selected tvdb mirror. + + To check if this series has already been cached, pleas use the Method IsCached(TvdbSeries _series) + + Tvdb is not available + The given api key is not valid + id of series + language that should be retrieved + if true also loads the paths to the banners + Instance of TvdbSeries containing all gained information + Exception is thrown when there was an error parsing the xml files. + Feel free to post a detailed description of this issue on http://code.google.com/p/tvdblib + or http://forums.thetvdb.com/ + The stored api key is invalid + The tvdb database is unavailable + + + + Gets the basic series (without episode information and actors) with the given id either from cache + (if it has already been loaded) or from the selected tvdb mirror. + + To check if this series has already been cached, please use the Method IsCached(TvdbSeries _series) + + Tvdb is not available + The given api key is not valid + id of series + language that should be retrieved + if true also loads the paths to the banners + Instance of TvdbSeries containing all gained information + Exception is thrown when there was an error parsing the xml files. + Feel free to post a detailed description of this issue on http://code.google.com/p/tvdblib + or http://forums.thetvdb.com/ + The stored api key is invalid + The tvdb database is unavailable + + + + Returns if the series is locally cached + + Id of the series + Language + Load Episodes + Load Actors + Load Banners + True if the series is cached in the given configuration + + + + Retrieve the episode with the given id in the given language. + + Note that the episode is always downloaded from thetvdb since it would + be practical to load each and every cached series to look for the + episode id + + id of the episode + languageof the episode + The retrieved episode + Exception is thrown when there was an error parsing the xml files. + Feel free to post a detailed description of this issue on http://code.google.com/p/tvdblib + or http://forums.thetvdb.com/ + The episode/series/banner couldn't be located on the tvdb server. + Exception is thrown when thetvdb isn't available. + + + + Retrieve the episode with the given parameters. This function will find + episodes that are already cached. + + id of the series + season number of the episode + number of the episode + language of the episode + The sorting order that should be user when downloading the episode + The retrieved episode + Exception is thrown when there was an error parsing the xml files. + Feel free to post a detailed description of this issue on http://code.google.com/p/tvdblib + or http://forums.thetvdb.com/ + The episode/series/banner couldn't be located on the tvdb server. + Exception is thrown when thetvdb isn't available. + + + + Retrieve the episode with the given parameters. + + id of the series + When did the episode air + language of the episode + The given api key is not valid + The retrieved episode + Exception is thrown when there was an error parsing the xml files. + Feel free to post a detailed description of this issue on http://code.google.com/p/tvdblib + or http://forums.thetvdb.com/ + The episode/series/banner couldn't be located on the tvdb server. + Exception is thrown when thetvdb isn't available. + + + + Get the series from cache + + Id of series + + + + + Update all the series (not using zip) with the updated information + + true if the update was successful, false otherwise + + + + Update all the series with the updated information + + download zipped file? + In order to update, the cache has to be initialised + true if the update was successful, false otherwise + Exception is thrown when there was an error parsing the xml files. + Feel free to post a detailed description of this issue on http://code.google.com/p/tvdblib + or http://forums.thetvdb.com/ + The stored api key is invalid + Exception is thrown when thetvdb isn't available. + + + + Update all the series with the updated information + + download zipped file? + Specifies the interval of the update (day, week, month) + true if the update was successful, false otherwise + Exception is thrown when there was an error parsing the xml files. + Feel free to post a detailed description of this issue on http://code.google.com/p/tvdblib + or http://forums.thetvdb.com/ + The stored api key is invalid + Exception is thrown when thetvdb isn't available. + In order to update, the cache has to be initialised + + + + Update all the series with the updated information + + download zipped file? + Specifies the interval of the update (day, week, month) + If yes, will reload all series that haven't been updated longer than the update period (which means + that only a reload can guarantee that the data is up to date. Should only be used when the data hasn't + been updated for over a month (otherwise use monthly updates) + true if the update was successful, false otherwise + Exception is thrown when there was an error parsing the xml files. + Feel free to post a detailed description of this issue on http://code.google.com/p/tvdblib + or http://forums.thetvdb.com/ + The stored api key is invalid + Exception is thrown when thetvdb isn't available. + In order to update, the cache has to be initialised + + + + Gets the date of the last (successfull) update from thetvdb + + Date of last update or null if no previous update or cache not initialised + + + + Aborts the currently running Update + + if true, all changes that have already been + made will be saved to cache, if not they will be discarded + + + + Make the update + + interval of update + zipped downloading yes/no + true if successful, false otherwise + + + + Update the series with the banner + + + + true, if the banner was updated successfully, false otherwise + + + + Update the series with the episode (Add it to the series if it doesn't already exist or update the episode if the current episode is older than the updated one) + + Series of the updating episode + Episode that is updated + Progress of the update run + Description of the current update + true if episode has been updated, false if not (e.g. timestamp of updated episode older than + timestamp of existing episode + + + + Download the new series and update the information + + Series to update + When was the last update made + The progress done until now + true if the series has been upated false if not + + + + Reloads all language definitions from tvdb + + true if successful, false otherwise + + + + Closes the cache provider (should be called before exiting the application) + + + + + Returns all series id's that are already cached in memory or locally via the cacheprovider + + List of loaded series + + + + Forces a complete reload of the series. All information that has already been loaded (including loaded images!) will be deleted and reloaded from tvdb -> if you only want to update the series, use the "MakeUpdate" method + + Series to reload + The new TvdbSeries object + + + + Forces a complete reload of the series. All information that has already been loaded will be deleted and reloaded from tvdb -> if you only want to update the series, use the "MakeUpdate" method + + Series to reload + If yes, also deletes previously loaded images + The new TvdbSeries object + + + + Forces a complete reload of the series. All information that has already been loaded (including loaded images!) will be deleted and reloaded from tvdb -> if you only want to update the series, use the "MakeUpdate" method + + Series to update + Should episodes be loaded as well + Should actors be loaded as well + Should banners be loaded as well + The new TvdbSeries object + + + + Forces a complete reload of the series. All information that has already been loaded will be deleted and reloaded from tvdb -> if you only want to update the series, use the "MakeUpdate" method + + Series to update + Should episodes be loaded as well + Should actors be loaded as well + Should banners be loaded as well + If yes, also deletes previously loaded images + The new TvdbSeries object + + + + Gets the preferred language of the user + + user information has to be set, otherwise TvdbUserNotFoundException is thrown + + preferred language of user + Exception is thrown when there was an error parsing the xml files. + Feel free to post a detailed description of this issue on http://code.google.com/p/tvdblib + or http://forums.thetvdb.com/ + The user doesn't exist + The tvdb database is unavailable + + + + Check if series is in the list of favorites + + + + + + + + Gets a list of IDs of the favorite series of the user + + id list of favorite series + Exception is thrown when there was an error parsing the xml files. + Feel free to post a detailed description of this issue on http://code.google.com/p/tvdblib + or http://forums.thetvdb.com/ + The user doesn't exist + The tvdb database is unavailable + + + + Get the favorite series of the user (only basic series information will be loaded) + + Which language should be used + List of favorite series + Exception is thrown when there was an error parsing the xml files. + Feel free to post a detailed description of this issue on http://code.google.com/p/tvdblib + or http://forums.thetvdb.com/ + The user doesn't exist + The tvdb database is unavailable + + + + Adds the series id to the users list of favorites and returns the new list of + favorites + + series to add to the favorites + new list with all favorites + Exception is thrown when there was an error parsing the xml files. + Feel free to post a detailed description of this issue on http://code.google.com/p/tvdblib + or http://forums.thetvdb.com/ + The user doesn't exist + The tvdb database is unavailable + + + + Adds the series to the users list of favorites and returns the new list of + favorites + + series to add to the favorites + new list with all favorites + Exception is thrown when there was an error parsing the xml files. + Feel free to post a detailed description of this issue on http://code.google.com/p/tvdblib + or http://forums.thetvdb.com/ + The user doesn't exist + The tvdb database is unavailable + + + + Removes the series id from the users list of favorites and returns the new list of + favorites + + series to remove from the favorites + new list with all favorites + Exception is thrown when there was an error parsing the xml files. + Feel free to post a detailed description of this issue on http://code.google.com/p/tvdblib + or http://forums.thetvdb.com/ + The user doesn't exist + The tvdb database is unavailable + + + + Removes the series from the users list of favorites and returns the new list of + favorites + + series to remove from the favorites + new list with all favorites + Exception is thrown when there was an error parsing the xml files. + Feel free to post a detailed description of this issue on http://code.google.com/p/tvdblib + or http://forums.thetvdb.com/ + The user doesn't exist + The tvdb database is unavailable + + + + Rate the given series + + series id + The rating we want to give for this series + Current rating of the series + Exception is thrown when there was an error parsing the xml files. + Feel free to post a detailed description of this issue on http://code.google.com/p/tvdblib + or http://forums.thetvdb.com/ + The user doesn't exist + Exception is thrown when thetvdb isn't available. + + + + Rate the given episode + + Episode Id + Rating we want to give for episode + Current rating of episode + Exception is thrown when there was an error parsing the xml files. + Feel free to post a detailed description of this issue on http://code.google.com/p/tvdblib + or http://forums.thetvdb.com/ + The user doesn't exist + Exception is thrown when thetvdb isn't available. + + + + Gets all series this user has already ratet + + Thrown when no user is set + A list of all rated series + Exception is thrown when there was an error parsing the xml files. + Feel free to post a detailed description of this issue on http://code.google.com/p/tvdblib + or http://forums.thetvdb.com/ + The user doesn't exist + Exception is thrown when thetvdb isn't available. + + + + Gets all series this user has already ratet + + Id of series + Thrown when no user is set + A list of all ratings for the series + Exception is thrown when there was an error parsing the xml files. + Feel free to post a detailed description of this issue on http://code.google.com/p/tvdblib + or http://forums.thetvdb.com/ + The user doesn't exist + Exception is thrown when thetvdb isn't available. + + + + Called whenever an running update makes any progress + + + + + Called when a running update finishes, UpdateFinishedEventArgs gives an overview + of the update + + + + + UserInfo for this tvdb handler + + + + + Unique id for every project that is using thetvdb + + More information on: http://thetvdb.com/wiki/index.php/Programmers_API + + + + + Is the handler using caching and is the cache initialised + + + + + Returns list of all available Languages on tvdb + + list of available languages + + + + Are the language definitions already cached + + + + + EventArgs used when a running update progresses, contains information on the + current stage and progress + + + + + Constructor for UpdateProgressEventArgs + + The current state of the updating progress + Description of the current update stage + Progress of the current stage + Overall progress of the update + + + + Current state of update progress + + + + + Description of the current update stage + + + + + Progress of the current stage + + + + + Overall progress of the update + + + + + The current state of the updating progress + + + + + we're currently downloading the update files from http://thetvdb.com + + + + + we're currently processing the updated series + + + + + we're currently processing the updated episodes + + + + + we're currently processing the updated banner + + + + + the updating itself has finished, do cleanup work + + + + + EventArgs used when an update has finished, contains start date, end date and + an overview of all updated content + + + + + Constructor for UpdateFinishedEventArgs + + When did the update start + When did the update finish + List of all series (ids) that were updated + List of all episode (ids)that were updated + List of all banners (ids) that were updated + + + + When did the update start + + + + + When did the update finish + + + + + List of all series (ids) that were updated + + + + + List of all episode (ids)that were updated + + + + + List of all banners (ids) that were updated + + + + + Delegate for UpdateProgressed Event + + EventArgs + + + + Delegate for UpdateFinished event + + EventArgs + + + + Holds data pertinent to a data descriptor. + + + + + Get /set the compressed size of data. + + + + + Get / set the uncompressed size of data + + + + + Get /set the crc value. + + + + + This class assists with writing/reading from Zip files. + + + + + Initialise an instance of this class. + + The name of the file to open. + + + + Initialise a new instance of . + + The stream to use. + + + + Close the stream. + + + The underlying stream is closed only if is true. + + + + + Locates a block with the desired . + + The signature to find. + Location, marking the end of block. + Minimum size of the block. + The maximum variable data. + Eeturns the offset of the first byte after the signature; -1 if not found + + + + Write Zip64 end of central directory records (File header and locator). + + The number of entries in the central directory. + The size of entries in the central directory. + The offset of the dentral directory. + + + + Write the required records to end the central directory. + + The number of entries in the directory. + The size of the entries in the directory. + The start of the central directory. + The archive comment. (This can be null). + + + + Read an unsigned short in little endian byte order. + + Returns the value read. + + An i/o error occurs. + + + The file ends prematurely + + + + + Read an int in little endian byte order. + + Returns the value read. + + An i/o error occurs. + + + The file ends prematurely + + + + + Read a long in little endian byte order. + + The value read. + + + + Write an unsigned short in little endian byte order. + + The value to write. + + + + Write a ushort in little endian byte order. + + The value to write. + + + + Write an int in little endian byte order. + + The value to write. + + + + Write a uint in little endian byte order. + + The value to write. + + + + Write a long in little endian byte order. + + The value to write. + + + + Write a ulong in little endian byte order. + + The value to write. + + + + Write a data descriptor. + + The entry to write a descriptor for. + Returns the number of descriptor bytes written. + + + + Read data descriptor at the end of compressed data. + + if set to true [zip64]. + The data to fill in. + Returns the number of bytes read in the descriptor. + + + + Get / set a value indicating wether the the underlying stream is owned or not. + + If the stream is owned it is closed when this instance is closed. + + + + SharpZipBaseException is the base exception class for the SharpZipLibrary. + All library exceptions are derived from this. + + NOTE: Not all exceptions thrown will be derived from this class. + A variety of other exceptions are possible for example + + + + Deserialization constructor + + for this constructor + for this constructor + + + + Initializes a new instance of the SharpZipBaseException class. + + + + + Initializes a new instance of the SharpZipBaseException class with a specified error message. + + A message describing the exception. + + + + Initializes a new instance of the SharpZipBaseException class with a specified + error message and a reference to the inner exception that is the cause of this exception. + + A message describing the exception. + The inner exception + + + + Writes tvdb data to xml files + + + + + TvdbXmlWriter constructor + + + + + Create the file contents + + List of languages to store + + + + + Write the list of languages to file + + List of languages to store + Path on disk + true if the file could be stored, false otherwise + + + + Create the file content for a list of mirrors + + List of mirrors to store + xml content + + + + Write the xml file for the mirrors to file + + List of mirrors to store + Path on disk + true if the file could be stored, false otherwise + + + + Create the file content for a list of actors + + List of actors to store + xml content + + + + Write the xml file for the actors to file + + List of actors to store + Path on disk + true if the file could be stored, false otherwise + + + + Create the series content + + Series to store + xml content + + + + Write the series content to file + + Series to store + Path on disk + true if the file could be stored, false otherwise + + + + Create the series banner content + + List of banners to store + xml content + + + + Write the series banner contents to xml file + + Bannerlist to store + Path on disk + true if the file could be stored, false otherwise + + + + Create the xml content to save a TvdbUser to file + + User to store + xml content + + + + Write the user data to file + + User to store + Path on disk + true if the file could be stored, false otherwise + + + + This class represents all fields that are available on http://thetvdb.com and + a list of episodefields. This is used for localised series information. + + These are as follows: + 73739 + |Malcolm David Kelley|Jorge Garcia|Maggie Grace|...| + Thursday + 9:00 PM + TV-14 + 2004-09-22 + |Action and Adventure|Drama|Science-Fiction| + tt0411008 + en + ABC + After Oceanic Air flight 815... + 8.9 + 60 + 24313 + Lost + Continuing + graphical/24313-g2.jpg + fanart/original/73739-1.jpg + 1205694666 + SH672362 + + + + + TvdbSeriesFields constructor + + + + + Returns a short description of the episode (e.g. 1x20 Episodename) + + short description of the episode + + + + Gets the episodes for the given season in the given order (aired or dvd). Absolute is also possible but makes no sense since + there are no seasons with absoulte ordering. Use GetEpisodesAbsoluteOrder() instead. + + For more information on episode ordering thetvdb wiki + + List of episodes + + + + Returns all episodes in the absolute order + + List of episodes + + + + Update all fields of the object with the given information + + the fields for the update + Should the episodes be replaced or kept + + + + List of episodes for this translation + + + + + Is the episode info loaded + + + + + Series Id + + + + + Series Name + + + + + Series network + + + + + The language of the series + + + + + Content-Rating of the series + + + + + Zap2it Id of the series + + + + + When was the series updated the last time + + + + + Path to the primary fanart banner + + + + + Path to primary banner + + + + + Path to the primary poster + + + + + Status of the show + + + + + Tv.com id of the series + + + + + Runtime of the show + + + + + Rating of the series + + + + + Overview of the series + + + + + Imdb Id of the series + + + + + List of the series' genres + + + + + The Date the series was first aired + + + + + At which time does the series air + + + + + At which day of the week does the series air + + + + + List of actors that appear in this series + + + + + Class for parsing the xml info from thetvdb + + + + + Base constructor for a TvdbXmlReader class + + + + + Extract a list of languages when the data has the format: + + + + Español + es + 16 + + + + ]]> + + + + + + + Extract a list of mirrors if the data has the format: + + + + 1 + http://thetvdb.com + 7 + + + ]]> + + + + + + + Extract a list of series in the format: + + + + 73739 + |Malcolm David Kelley|Jorge Garcia|Maggie Grace|...| + Thursday + 9:00 PM + TV-14 + 2004-09-22 + |Action and Adventure|Drama|Science-Fiction| + tt0411008 + en + ABC + After Oceanic Air flight 815... + 8.9 + 60 + 24313 + Lost + Continuing + graphical/24313-g2.jpg + fanart/original/73739-1.jpg + 1205694666 + SH672362 + + + ]]> + + + + + + + Extract all the series fields that are available on thetvdb + + + + 73739 + |Malcolm David Kelley|Jorge Garcia|Maggie Grace|...| + Thursday + 9:00 PM + TV-14 + 2004-09-22 + |Action and Adventure|Drama|Science-Fiction| + tt0411008 + en + ABC + After Oceanic Air flight 815... + 8.9 + 60 + 24313 + Lost + Continuing + graphical/24313-g2.jpg + fanart/original/73739-1.jpg + 1205694666 + SH672362 + + + + ]]> + + + + + + + Extract a list of episodes from the given data when the data has the following format: + + + 332179 + + + + + |Joseph McGinty Nichol| + Chuck Versus the World + 1 + 2007-09-24 + |Julia Ling|Vik Sahay|Mieko Hillman| + + English + Chuck Bartowski is an average computer geek... + + 9.0 + 1 + |Josh Schwartz|Chris Fedak| + + + + + episodes/80348-332179.jpg + 1201292806 + 27985 + 80348 + + ]]> + + + + + + + Extract list of updated series + + + + 71969 + + + + ]]> + + + + + + + Extract the results of a series search with format: + + + + 73739 + en + Lost + graphical/24313-g2.jpg + After Oceanic Air flight 815... + 2004-09-22 + tt0411008 + SH672362 + 73739 + + + ]]> + + + + + + + Exctract the series favorites + + + 73067 + 78957 + 75340 + 72218 + 73244 + 75397 + + ]]> + + + + + + + Extract a rating from the data in the format + + + + 7.5 + + + ]]> + + + + + + + Extract the updated episodes from the data in the format: + + + + + 326268 + + + + ]]> + + + + + + + Extract the data of updated banners + + + + + 1 + 79302 + standard + en + seasons/79302-1.jpg + season + + + ]]> + + + + + + + Extract the update time from data + + + + + + + Extract a list of banners from the data when the data has the format: + + + + 20106 + fanart/original/73739-1.jpg + fanart/vignette/73739-1.jpg + _cache/fanart/original/73739-1.jpg + fanart + 1920x1080 + |68,69,59|69,70,58|78,78,68| + en + + + 18953 + seasons/73739-2-2.jpg + season + season + es + 2 + + + 9529 + graphical/73739-g.jpg + series + graphical + en + + + ]]> + + + + + + + Extract a list of actors when the data has the format: + + + + 22017 + actors/22017.jpg + Zachary Levi + Chuck Bartowski + 0 + + + ]]> + + data + List of actors + + + + Extract user data from + + + + + + + Extract a list of series ratings + + The xml file is in the following format: + + + + 80344 + 7 + 8.3224 + + + 72227 + 8 + 8.3224 + + + ]]> + + The xml content + The item type for the ratings + + + + + Inflater is used to decompress data that has been compressed according + to the "deflate" standard described in rfc1951. + + By default Zlib (rfc1950) headers and footers are expected in the input. + You can use constructor public Inflater(bool noHeader) passing true + if there is no Zlib header information + + The usage is as following. First you have to set some input with + SetInput(), then Inflate() it. If inflate doesn't + inflate any bytes there may be three reasons: +
    +
  • IsNeedingInput() returns true because the input buffer is empty. + You have to provide more input with SetInput(). + NOTE: IsNeedingInput() also returns true when, the stream is finished. +
  • +
  • IsNeedingDictionary() returns true, you have to provide a preset + dictionary with SetDictionary().
  • +
  • IsFinished returns true, the inflater has finished.
  • +
+ Once the first output byte is produced, a dictionary will not be + needed at a later stage. + + author of the original java version : John Leuner, Jochen Hoenicke +
+
+ + + These are the possible states for an inflater + + + + + Copy lengths for literal codes 257..285 + + + + + Extra bits for literal codes 257..285 + + + + + Copy offsets for distance codes 0..29 + + + + + Extra bits for distance codes + + + + + This variable contains the current state. + + + + + The adler checksum of the dictionary or of the decompressed + stream, as it is written in the header resp. footer of the + compressed stream. + Only valid if mode is DECODE_DICT or DECODE_CHKSUM. + + + + + The number of bits needed to complete the current state. This + is valid, if mode is DECODE_DICT, DECODE_CHKSUM, + DECODE_HUFFMAN_LENBITS or DECODE_HUFFMAN_DISTBITS. + + + + + True, if the last block flag was set in the last block of the + inflated stream. This means that the stream ends after the + current block. + + + + + The total number of inflated bytes. + + + + + The total number of bytes set with setInput(). This is not the + value returned by the TotalIn property, since this also includes the + unprocessed input. + + + + + This variable stores the noHeader flag that was given to the constructor. + True means, that the inflated stream doesn't contain a Zlib header or + footer. + + + + + Creates a new inflater or RFC1951 decompressor + RFC1950/Zlib headers and footers will be expected in the input data + + + + + Creates a new inflater. + + + True if no RFC1950/Zlib header and footer fields are expected in the input data + + This is used for GZIPed/Zipped input. + + For compatibility with + Sun JDK you should provide one byte of input more than needed in + this case. + + + + + Resets the inflater so that a new stream can be decompressed. All + pending input and output will be discarded. + + + + + Decodes a zlib/RFC1950 header. + + + False if more input is needed. + + + The header is invalid. + + + + + Decodes the dictionary checksum after the deflate header. + + + False if more input is needed. + + + + + Decodes the huffman encoded symbols in the input stream. + + + false if more input is needed, true if output window is + full or the current block ends. + + + if deflated stream is invalid. + + + + + Decodes the adler checksum after the deflate stream. + + + false if more input is needed. + + + If checksum doesn't match. + + + + + Decodes the deflated stream. + + + false if more input is needed, or if finished. + + + if deflated stream is invalid. + + + + + Sets the preset dictionary. This should only be called, if + needsDictionary() returns true and it should set the same + dictionary, that was used for deflating. The getAdler() + function returns the checksum of the dictionary needed. + + + The dictionary. + + + + + Sets the preset dictionary. This should only be called, if + needsDictionary() returns true and it should set the same + dictionary, that was used for deflating. The getAdler() + function returns the checksum of the dictionary needed. + + + The dictionary. + + + The index into buffer where the dictionary starts. + + + The number of bytes in the dictionary. + + + No dictionary is needed. + + + The adler checksum for the buffer is invalid + + + + + Sets the input. This should only be called, if needsInput() + returns true. + + + the input. + + + + + Sets the input. This should only be called, if needsInput() + returns true. + + + The source of input data + + + The index into buffer where the input starts. + + + The number of bytes of input to use. + + + No input is needed. + + + The index and/or count are wrong. + + + + + Inflates the compressed stream to the output buffer. If this + returns 0, you should check, whether IsNeedingDictionary(), + IsNeedingInput() or IsFinished() returns true, to determine why no + further output is produced. + + + the output buffer. + + + The number of bytes written to the buffer, 0 if no further + output can be produced. + + + if buffer has length 0. + + + if deflated stream is invalid. + + + + + Inflates the compressed stream to the output buffer. If this + returns 0, you should check, whether needsDictionary(), + needsInput() or finished() returns true, to determine why no + further output is produced. + + + the output buffer. + + + the offset in buffer where storing starts. + + + the maximum number of bytes to output. + + + the number of bytes written to the buffer, 0 if no further output can be produced. + + + if count is less than 0. + + + if the index and / or count are wrong. + + + if deflated stream is invalid. + + + + + Returns true, if the input buffer is empty. + You should then call setInput(). + NOTE: This method also returns true when the stream is finished. + + + + + Returns true, if a preset dictionary is needed to inflate the input. + + + + + Returns true, if the inflater has finished. This means, that no + input is needed and no output can be produced. + + + + + Gets the adler checksum. This is either the checksum of all + uncompressed bytes returned by inflate(), or if needsDictionary() + returns true (and thus no output was yet produced) this is the + adler checksum of the expected dictionary. + + + the adler checksum. + + + + + Gets the total number of output bytes returned by Inflate(). + + + the total number of output bytes. + + + + + Gets the total number of processed compressed input bytes. + + + The total number of bytes of processed input bytes. + + + + + Gets the number of unprocessed input bytes. Useful, if the end of the + stream is reached and you want to further process the bytes after + the deflate stream. + + + The number of bytes of the input which have not been processed. + + + + + This is the Deflater class. The deflater class compresses input + with the deflate algorithm described in RFC 1951. It has several + compression levels and three different strategies described below. + + This class is not thread safe. This is inherent in the API, due + to the split of deflate and setInput. + + author of the original java version : Jochen Hoenicke + + + + + The best and slowest compression level. This tries to find very + long and distant string repetitions. + + + + + The worst but fastest compression level. + + + + + The default compression level. + + + + + This level won't compress at all but output uncompressed blocks. + + + + + The compression method. This is the only method supported so far. + There is no need to use this constant at all. + + + + + Creates a new deflater with default compression level. + + + + + Creates a new deflater with given compression level. + + + the compression level, a value between NO_COMPRESSION + and BEST_COMPRESSION, or DEFAULT_COMPRESSION. + + if lvl is out of range. + + + + Creates a new deflater with given compression level. + + + the compression level, a value between NO_COMPRESSION + and BEST_COMPRESSION. + + + true, if we should suppress the Zlib/RFC1950 header at the + beginning and the adler checksum at the end of the output. This is + useful for the GZIP/PKZIP formats. + + if lvl is out of range. + + + + Resets the deflater. The deflater acts afterwards as if it was + just created with the same compression level and strategy as it + had before. + + + + + Flushes the current input block. Further calls to deflate() will + produce enough output to inflate everything in the current input + block. This is not part of Sun's JDK so I have made it package + private. It is used by DeflaterOutputStream to implement + flush(). + + + + + Finishes the deflater with the current input block. It is an error + to give more input after this method was called. This method must + be called to force all bytes to be flushed. + + + + + Sets the data which should be compressed next. This should be only + called when needsInput indicates that more input is needed. + If you call setInput when needsInput() returns false, the + previous input that is still pending will be thrown away. + The given byte array should not be changed, before needsInput() returns + true again. + This call is equivalent to setInput(input, 0, input.length). + + + the buffer containing the input data. + + + if the buffer was finished() or ended(). + + + + + Sets the data which should be compressed next. This should be + only called when needsInput indicates that more input is needed. + The given byte array should not be changed, before needsInput() returns + true again. + + + the buffer containing the input data. + + + the start of the data. + + + the number of data bytes of input. + + + if the buffer was Finish()ed or if previous input is still pending. + + + + + Sets the compression level. There is no guarantee of the exact + position of the change, but if you call this when needsInput is + true the change of compression level will occur somewhere near + before the end of the so far given input. + + + the new compression level. + + + + + Get current compression level + + Returns the current compression level + + + + Sets the compression strategy. Strategy is one of + DEFAULT_STRATEGY, HUFFMAN_ONLY and FILTERED. For the exact + position where the strategy is changed, the same as for + SetLevel() applies. + + + The new compression strategy. + + + + + Deflates the current input block with to the given array. + + + The buffer where compressed data is stored + + + The number of compressed bytes added to the output, or 0 if either + IsNeedingInput() or IsFinished returns true or length is zero. + + + + + Deflates the current input block to the given array. + + + Buffer to store the compressed data. + + + Offset into the output array. + + + The maximum number of bytes that may be stored. + + + The number of compressed bytes added to the output, or 0 if either + needsInput() or finished() returns true or length is zero. + + + If Finish() was previously called. + + + If offset or length don't match the array length. + + + + + Sets the dictionary which should be used in the deflate process. + This call is equivalent to setDictionary(dict, 0, dict.Length). + + + the dictionary. + + + if SetInput () or Deflate () were already called or another dictionary was already set. + + + + + Sets the dictionary which should be used in the deflate process. + The dictionary is a byte array containing strings that are + likely to occur in the data which should be compressed. The + dictionary is not stored in the compressed output, only a + checksum. To decompress the output you need to supply the same + dictionary again. + + + The dictionary data + + + The index where dictionary information commences. + + + The number of bytes in the dictionary. + + + If SetInput () or Deflate() were already called or another dictionary was already set. + + + + + Compression level. + + + + + If true no Zlib/RFC1950 headers or footers are generated + + + + + The current state. + + + + + The total bytes of output written. + + + + + The pending output. + + + + + The deflater engine. + + + + + Gets the current adler checksum of the data that was processed so far. + + + + + Gets the number of input bytes processed so far. + + + + + Gets the number of output bytes so far. + + + + + Returns true if the stream was finished and no more output bytes + are available. + + + + + Returns true, if the input buffer is empty. + You should then call setInput(). + NOTE: This method can also return true when the stream + was finished. + + + + + Exception that is thrown when a nonexistent content is requested + + + + + TvdbInvalidAPIKeyException constructor + + Message + + + + TvdbInvalidAPIKeyException constructor + + + + + TvdbData contains a list of series, a list of languages and a list of mirror + + + + + TvdbData constructor + + + + + TvdbData constructor + + List of available languages + + + + When was the last time thetvdb has been checked + for updates + + + + + List of all available languages + + + + + XmlCacheProvider stores all the information that have been retrieved from http://thetvdb.com as human-readable xml files on the hard disk + + + + + Constructor for XmlCacheProvider + + This is the folder on the disk where all the information are stored + + + + Properly describe the CacheProvider for neat-reasons + + String describing the cache provider + + + + Initialises the cache, should do the following things + - initialise connections used for this cache provider (db connections, network shares,...) + - create folder structure / db tables / ... if they are not created already + - if this is the first time the cache has been initialised (built), mark last_updated with the + current date + + TvdbData object + + + + Closes the cache (e.g. close open connection, etc.) + + true if successful, false otherwise + + + + Saves cache settings + + settings + + + + Save the language to cache + + List of languages that are available on http://thetvdb.com + + + + Save the mirror info to cache + + Mirrors + + + + Saves the series to cache + + The series to save + + + + Loads the settings data from cache + + The loaded TvdbData object + + + + Loads the available languages from cache + + List of available languages + + + + Load the available mirrors from cache + + List of mirrors + + + + Loads all series from cache + + A list of TvdbSeries objects from cache or null + + + + Load the give series from cache + + Id of the series to load + Series that has been loaded or null if series doesn't exist + + + + Load user info from cache + + Id of the user + TvdbUser object or null if the user couldn't be loaded + + + + Saves the user data to cache + + TvdbUser object + + + + Receives a list of all series that have been cached + + A list of series that have been already stored with this cache provider + + + + Check if the series is cached in the given configuration + + Id of the series + Language of the series + are episodes loaded + are banners loaded + are actors loaded + true if the series is cached, false otherwise + + + + Completely refreshes the cache (all stored information is lost) + + true if the cache was cleared successfully, + false otherwise (e.g. no write rights,...) + + + + Remove a specific series from cache + + the id of the series + true if the series was removed from the cache successfully, + false otherwise (e.g. series not cached) + + + + Save the given image to cache + + banner to save + id of series + filename (will be the same name used by LoadImageFromCache) + + + + Loads the specified image from the cache + + series id + filename of the image (same one as used by SaveToCache) + The loaded image or null if the image wasn't found + + + + Removes the specified image from cache (if it has been cached) + + id of series + name of image + true if image was removed successfully, false otherwise (e.g. image didn't exist) + + + + Is the cache provider initialised + + + + + Description of TvdbInvalidXmlException. + + + + + TvdbInvalidXmlException constructor + + Message + + + + TvdbInvalidXmlException constructor + + + + + Bzip2 checksum algorithm + + + + + Interface to compute a data checksum used by checked input/output streams. + A data checksum can be updated by one byte or with a byte array. After each + update the value of the current checksum can be returned by calling + getValue. The complete checksum object can also be reset + so it can be used again with new data. + + + + + Resets the data checksum as if no update was ever called. + + + + + Adds one byte to the data checksum. + + + the data value to add. The high byte of the int is ignored. + + + + + Updates the data checksum with the bytes taken from the array. + + + buffer an array of bytes + + + + + Adds the byte array to the data checksum. + + + The buffer which contains the data + + + The offset in the buffer where the data starts + + + the number of data bytes to add. + + + + + Returns the data checksum computed so far. + + + + + Initialise a default instance of + + + + + Reset the state of Crc. + + + + + Update the Crc value. + + data update is based on + + + + Update Crc based on a block of data + + The buffer containing data to update the crc with. + + + + Update Crc based on a portion of a block of data + + block of data + index of first byte to use + number of bytes to use + + + + Get the current Crc value. + + + + + A special stream deflating or compressing the bytes that are + written to it. It uses a Deflater to perform actual deflating.
+ Authors of the original java version : Tom Tromey, Jochen Hoenicke +
+
+ + + Creates a new DeflaterOutputStream with a default Deflater and default buffer size. + + + the output stream where deflated output should be written. + + + + + Creates a new DeflaterOutputStream with the given Deflater and + default buffer size. + + + the output stream where deflated output should be written. + + + the underlying deflater. + + + + + Creates a new DeflaterOutputStream with the given Deflater and + buffer size. + + + The output stream where deflated output is written. + + + The underlying deflater to use + + + The buffer size to use when deflating + + + bufsize is less than or equal to zero. + + + baseOutputStream does not support writing + + + deflater instance is null + + + + + Finishes the stream by calling finish() on the deflater. + + + Not all input is deflated + + + + + Encrypt a block of data + + + Data to encrypt. NOTE the original contents of the buffer are lost + + + Offset of first byte in buffer to encrypt + + + Number of bytes in buffer to encrypt + + + + + Initializes encryption keys based on given . + + The password. + + + + Deflates everything in the input buffers. This will call + def.deflate() until all bytes from the input buffers + are processed. + + + + + Sets the current position of this stream to the given value. Not supported by this class! + + The offset relative to the to seek. + The to seek from. + The new position in the stream. + Any access + + + + Sets the length of this stream to the given value. Not supported by this class! + + The new stream length. + Any access + + + + Read a byte from stream advancing position by one + + The byte read cast to an int. THe value is -1 if at the end of the stream. + Any access + + + + Read a block of bytes from stream + + The buffer to store read data in. + The offset to start storing at. + The maximum number of bytes to read. + The actual number of bytes read. Zero if end of stream is detected. + Any access + + + + Asynchronous reads are not supported a NotSupportedException is always thrown + + The buffer to read into. + The offset to start storing data at. + The number of bytes to read + The async callback to use. + The state to use. + Returns an + Any access + + + + Asynchronous writes arent supported, a NotSupportedException is always thrown + + The buffer to write. + The offset to begin writing at. + The number of bytes to write. + The to use. + The state object. + Returns an IAsyncResult. + Any access + + + + Flushes the stream by calling Flush on the deflater and then + on the underlying stream. This ensures that all bytes are flushed. + + + + + Calls and closes the underlying + stream when is true. + + + + + Writes a single byte to the compressed output stream. + + + The byte value. + + + + + Writes bytes from an array to the compressed stream. + + + The byte array + + + The offset into the byte array where to start. + + + The number of bytes to write. + + + + + This buffer is used temporarily to retrieve the bytes from the + deflater and write them to the underlying output stream. + + + + + The deflater which is used to deflate the stream. + + + + + Base stream the deflater depends on. + + + + + Get/set flag indicating ownership of the underlying stream. + When the flag is true will close the underlying stream also. + + + + + Allows client to determine if an entry can be patched after its added + + + + + Get/set the password used for encryption. + + When set to null or if the password is empty no encryption is performed + + + + Gets value indicating stream can be read from + + + + + Gets a value indicating if seeking is supported for this stream + This property always returns false + + + + + Get value indicating if this stream supports writing + + + + + Get current length of stream + + + + + Gets the current position within the stream. + + Any attempt to set position + + + + This class stores the pending output of the Deflater. + + author of the original java version : Jochen Hoenicke + + + + + This class is general purpose class for writing data to a buffer. + + It allows you to write bits as well as bytes + Based on DeflaterPending.java + + author of the original java version : Jochen Hoenicke + + + + + Internal work buffer + + + + + construct instance using default buffer size of 4096 + + + + + construct instance using specified buffer size + + + size to use for internal buffer + + + + + Clear internal state/buffers + + + + + Write a byte to buffer + + + The value to write + + + + + Write a short value to buffer LSB first + + + The value to write. + + + + + write an integer LSB first + + The value to write. + + + + Write a block of data to buffer + + data to write + offset of first byte to write + number of bytes to write + + + + Align internal buffer on a byte boundary + + + + + Write bits to internal buffer + + source of bits + number of bits to write + + + + Write a short value to internal buffer most significant byte first + + value to write + + + + Flushes the pending buffer into the given output array. If the + output array is to small, only a partial flush is done. + + The output array. + The offset into output array. + The maximum number of bytes to store. + The number of bytes flushed. + + + + Convert internal buffer to byte array. + Buffer is empty on completion + + + The internal buffer contents converted to a byte array. + + + + + The number of bits written to the buffer + + + + + Indicates if buffer has been flushed + + + + + Construct instance with default buffer size + + + + + Baseclass for a tvdb mirror. A mirror is defined in the tvdb xml by: + + + + 1 + http://thetvdb.com + 7 + + + ]]> + + + + + TvdbMirror constructor + + + + + TvdbMirror constructor + + Id of the mirror + Url to the mirror + Typemask of the mirror, see property "TypeMask" + + + + Id of the mirror + + + + + The value of typemask is the sum of whichever file types that mirror holds: + 1 xml files + 2 banner files + 4 zip files + So, a mirror that has a typemask of 5 would hold XML and ZIP files, but no banner files. + + + + + Returns true if the mirror offers images for downloading, false otherwise + + + + + Returns true if the mirror offers xml files for downloading, false otherwise + + + + + Returns true if the mirror offers zipped downloads, false otherwise + + + + + Path to the mirror + + + + + Exception thrown when a request is made which requires a valid + api key but none is set + + + + + TvdbInvalidAPIKeyException constructor + + Message + + + + TvdbInvalidAPIKeyException constructor + + + + + Represents the episode banner, which is currently only one image + per episode (no language differentiation either) limited to a maximum + size of 400 x 300 + + further information on http://thetvdb.com/wiki/index.php/Episode_Images + + + + + This class extends the regular banner class with the ability to retrieve thumbnails of the actual images. + + These thumbnails are at the moment availabe for all banner types except actors + + + + + Tvdb Banners are the graphical element of tvdb. There are different types of banners which are + representet by sub-classes in this library. These subclasses are: + + + TvdbEpisodeBanner + Each episode may contain a small image that should be an non-spoiler action shot from the episode (http://thetvdb.com/wiki/index.php/Episode_Images) + + + TvdbFanartBanner + Fan Art is high quality artwork that is displayed in the background of HTPC menus (http://thetvdb.com/wiki/index.php/Fan_Art) + + + TvdbSeasonBanner + Banner for each season of a series, dvd-style (400 x 578) or banner style (758 x 140) (http://thetvdb.com/wiki/index.php/Wide_Season_Banners) + + + TvdbSeriesBanner + Wide banner for each series (758 x 140), comes in graphical, text or blank style. For further information see http://thetvdb.com/wiki/index.php/Series_Banners + + + TvdbPosterBanner + Newest addition to the tvdb graphical section (680px x 1000px) and not smaller than 500k (http://thetvdb.com/wiki/index.php/Posters) + + + + + + + Loads the actual image data of the banner + + true if the banner could be loaded successfully, false otherwise + + + + Loads the actual image data of the banner + + If true will replace an old image (if one exists already) + true if the banner could be loaded successfully, false otherwise + + + + Unloads the image and saves it to cache + + true if successful, false otherwise + + + + Unloads the image + + should the image kept in cache + true if successful, false otherwise + + + + Creates the name used to store images in cache + + Path of the image + Is the image a thumbnail + Name used for caching image + + + + Loads the banner with the given image + + Image object that should be used for this banner + True if successful, false otherwise + + + + Loads the image from the given path + + Path of image that should be used for this banner + True if successful, false otherwise + + + + Used to load/save images persistent if we're using a cache provider + (should keep memory usage much lower) + + on the other hand we have a back-ref to tvdb (from a data class), which sucks + + todo: think of a better way to handle this + + + + + Language of the banner + + + + + Id of the banner + + + + + Image data of the banner + + + + + True if the image data has been already loaded, false otherwise + + + + + Is the banner currently beeing loaded + + + + + Path to the location on the tvdb server where the image is located + + + + + When was the banner updated the last time + + + + + Id of the series this banner belongs to + + + + + Load the thumb from tvdb, if there isn't already a thumb loaded, + (an existing one will NOT be replaced) + + + true if the loading completed sccessfully, false otherwise + + + + Load the thumb from tvdb + + if true, an existing banner will be replaced, + if false the banner will only be loaded if there is no existing banner + true if the loading completed sccessfully, false otherwise + + + + Load thumbnail with given image + + the image to be used forthe banner + true if the loading completed sccessfully, false otherwise + + + + Unloads the image and saves it to cache + + true if successful, false otherwise + + + + Unloads the image + + should the image kept in cache + true if successful, false otherwise + + + + Is the thumbnail currently beeing loaded + + + + + Path to the fanart thumbnail + + + + + Image of the thumbnail + + + + + Is the Image of the thumb already loaded + + + + + TvdbEpisodeBanner constructor + + + + + TvdbEpisodeBanner constructor + + Path of banner + Id of episode banner + + + + Fan Art is high quality artwork that is displayed in the background of + HTPC menus. Since fan art is displayed behind other content in most cases, + we place more restrictions on the formatting of the image. + + The resolution is either 1920x1080 or 1280x720... + + More information: http://thetvdb.com/wiki/index.php/Fan_Art + + + + + TvdbFanartBanner constructor + + + + + TvdbFanartBanner constructor + + Id of fanart banner + Language for this banner + Path of image for this banner + + + + Load the vignette from tvdb + + True if successful, false otherwise + + + + Load the vignette from tvdb + + True if successful, false otherwise + + + + Load vignette with given image + + Image object that should be used for this banner + True if successful, false otherwise + + + + Unloads the image and saves it to cache + + true if successful, false otherwise + + + + Unloads the image + + should the image kept in cache + true if successful, false otherwise + + + + Is the vignette image already loaded + + + + + Is the vignette currently beeing loaded + + + + + Vignette Image + + + + + These are the colors selected by the artist that match the image. The format is 3 colors separated by a pipe "|". This field has leading and trailing pipes. Each color is comma separated RGB, with each color portion being an integer from 1 to 255. So the format looks like |r,g,b|r,g,b|r,g,b|. The first color is the light accent color. The second color is the dark accent color. The third color is the neutral mid-tone color. + + + + + Path to the fanart vignette + + + + + Does the image contain the series name + + + + + Color 3 (see Colors property) + + + + + Color 2 (see Colors property) + + + + + Color 1 (see Colors property) + + + + + Resolution of the fanart + + + + + ID's of external sites + + + + + Id for the popular movie/tv site www.imdb.com + + + + + Update interval + + + + + updated content since the last day + + + + + updated content since the last week + + + + + updated content since the last month + + + + + the interval is determined automatically + + + + + Parses an integer string and returns the number or -99 if the format + is invalid + + + + + + + Parses an double string and returns the number or -99 if the format + is invalid + + + + + + + Splits a tvdb string (having the format | item1 | item2 | item3 |) + + + + + + + Parse the short description of a tvdb language and returns the proper + object. If no such language exists yet (maybe the list of available + languages hasn't been downloaded yet), a placeholder is created + + + + + + + Converts a unix timestamp (used on tvdb) into a .net datetime object + + Timestamp to convert + .net DateTime object + + + + Converts a .net datetime object into a unix timestamp (used on tvdb) + + Date to convert + Unix timestamp + + + + returns a day of the week object parsed from the string + + String representation of this day of the week + .net DayOfWeek enum + + + + Returns a List of colors parsed from the _text + + + + + + + Returns a point objects parsed from _text + + + + + + + Parse a boolean value from thetvdb xml files + + Boolean value to parse + + + + + + + + + + + + Returns the fitting SeriesBanner type from parameter + + + + + + + Add the episode to the series + + + + + + + Parse a datetime value from thetvdb + + The date string that needs parsing + DateTime object of the parsed date + + + + Tries to find an episode by a given id from a list of episodes + + Id of the episode we're looking for + List of episodes + The first found TvdbEpisode object or null if nothing was found + + + + Tries to find a series by a given id from a list of series + + Id of the series we're looking for + List of series objects + The first found TvdbSeries object or null if nothing was found + + + + List of available languages -> needed for some methods + + + + + Type when handling user favorites + + + + + Baseclass for a tvdb language + + + + + The default language (which is English) + Id: 7 + Abbriviation: en + Name: English + + + + + + language valid for all available languages + Id: 7 + Abbriviation: en + Name: English + + + + + + TvdbLanguage constructor + + + + + TvdbLanguage constructor + + Id of language + Name of language (e.g. English) + Abbriviation of language (e.g. en) + + + + Returns String that describes the language in the format "Name (Abbriviation)" + + String representing this object (e.g. "English (en)") + + + + Overrides the equals Method to ensure a valid comparison of two language objects. The + comparison currently matches abbriviation only. + + object to compare with + True if the two language objects are the same, false otherwise + + + + Returns a hash code of the object + + Hash code + + + + Overrides the equality operator to ensure a valid comparison of two language objects. The + comparison currently matches abbriviation only. + + First language object + Second language object + True if the two language objects are the same, false otherwise + + + + Overrides the inequality operator to ensure a valid comparison of two language objects. The + comparison currently matches abbriviation only. + + First language object + Second language object + True if the two language objects are the same, false otherwise + + + + Id of the language + + + + + Abbriviation of the series + + + + + Name of the series + + + + + Contains the output from the Inflation process. + We need to have a window so that we can refer backwards into the output stream + to repeat stuff.
+ Author of the original java version : John Leuner +
+
+ + + Write a byte to this output window + + value to write + + if window is full + + + + + Append a byte pattern already in the window itself + + length of pattern to copy + distance from end of window pattern occurs + + If the repeated data overflows the window + + + + + Copy from input manipulator to internal window + + source of data + length of data to copy + the number of bytes copied + + + + Copy dictionary to window + + source dictionary + offset of start in source dictionary + length of dictionary + + If window isnt empty + + + + + Get remaining unfilled space in window + + Number of bytes left in window + + + + Get bytes available for output in window + + Number of bytes filled + + + + Copy contents of window to output + + buffer to copy to + offset to start at + number of bytes to count + The number of bytes copied + + If a window underflow occurs + + + + + Reset by clearing window so GetAvailable returns 0 + + + + + This class contains constants used for deflation. + + + + + Set to true to enable debugging + + + + + Written to Zip file to identify a stored block + + + + + Identifies static tree in Zip file + + + + + Identifies dynamic tree in Zip file + + + + + Header flag indicating a preset dictionary for deflation + + + + + Sets internal buffer sizes for Huffman encoding + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Generate a table for a byte-wise 32-bit CRC calculation on the polynomial: + x^32+x^26+x^23+x^22+x^16+x^12+x^11+x^10+x^8+x^7+x^5+x^4+x^2+x+1. + + Polynomials over GF(2) are represented in binary, one bit per coefficient, + with the lowest powers in the most significant bit. Then adding polynomials + is just exclusive-or, and multiplying a polynomial by x is a right shift by + one. If we call the above polynomial p, and represent a byte as the + polynomial q, also with the lowest power in the most significant bit (so the + byte 0xb1 is the polynomial x^7+x^3+x+1), then the CRC is (q*x^32) mod p, + where a mod b means the remainder after dividing a by b. + + This calculation is done using the shift-register method of multiplying and + taking the remainder. The register is initialized to zero, and for each + incoming bit, x^32 is added mod p to the register if the bit is a one (where + x^32 mod p is p+x^32 = x^26+...+1), and the register is multiplied mod p by + x (which is shifting right by one and adding x^32 mod p if the bit shifted + out is a one). We start with the highest power (least significant bit) of + q and repeat for all eight bits of q. + + The table is simply the CRC of all possible eight bit values. This is all + the information needed to generate CRC's on data a byte at a time for all + combinations of CRC register values and incoming bytes. + + + + + The crc data checksum so far. + + + + + Resets the CRC32 data checksum as if no update was ever called. + + + + + Updates the checksum with the int bval. + + + the byte is taken as the lower 8 bits of value + + + + + Updates the checksum with the bytes taken from the array. + + + buffer an array of bytes + + + + + Adds the byte array to the data checksum. + + + The buffer which contains the data + + + The offset in the buffer where the data starts + + + The number of data bytes to update the CRC with. + + + + + Returns the CRC32 data checksum computed so far. + + + + + Defines known values for the property. + + + + + Host system = MSDOS + + + + + Host system = Amiga + + + + + Host system = Open VMS + + + + + Host system = Unix + + + + + Host system = VMCms + + + + + Host system = Atari ST + + + + + Host system = OS2 + + + + + Host system = Macintosh + + + + + Host system = ZSystem + + + + + Host system = Cpm + + + + + Host system = Windows NT + + + + + Host system = MVS + + + + + Host system = VSE + + + + + Host system = Acorn RISC + + + + + Host system = VFAT + + + + + Host system = Alternate MVS + + + + + Host system = BEOS + + + + + Host system = Tandem + + + + + Host system = OS400 + + + + + Host system = OSX + + + + + Host system = WinZIP AES + + + + + This class represents an entry in a zip archive. This can be a file + or a directory + ZipFile and ZipInputStream will give you instances of this class as + information about the members in an archive. ZipOutputStream + uses an instance of this class when creating an entry in a Zip file. +
+
Author of the original java version : Jochen Hoenicke +
+
+ + + Creates a zip entry with the given name. + + + The name for this entry. Can include directory components. + The convention for names is 'unix' style paths with relative names only. + There are with no device names and path elements are separated by '/' characters. + + + The name passed is null + + + + + Creates a zip entry with the given name and version required to extract + + + The name for this entry. Can include directory components. + The convention for names is 'unix' style paths with no device names and + path elements separated by '/' characters. This is not enforced see CleanName + on how to ensure names are valid if this is desired. + + + The minimum 'feature version' required this entry + + + The name passed is null + + + + + Initializes an entry with the given name and made by information + + Name for this entry + Version and HostSystem Information + Minimum required zip feature version required to extract this entry + Compression method for this entry. + + The name passed is null + + + versionRequiredToExtract should be 0 (auto-calculate) or > 10 + + + This constructor is used by the ZipFile class when reading from the central header + It is not generally useful, use the constructor specifying the name only. + + + + + Creates a deep copy of the given zip entry. + + + The entry to copy. + + + + + Test the external attributes for this to + see if the external attributes are Dos based (including WINNT and variants) + and match the values + + The attributes to test. + Returns true if the external attributes are known to be DOS/Windows + based and have the same attributes set as the value passed. + + + + Force this entry to be recorded using Zip64 extensions. + + + + + Get a value indicating wether Zip64 extensions were forced. + + A value of true if Zip64 extensions have been forced on; false if not. + + + + Process extra data fields updating the entry based on the contents. + + True if the extra data fields should be handled + for a local header, rather than for a central header. + + + + + Test entry to see if data can be extracted. + + Returns true if data can be extracted for this entry; false otherwise. + + + + Creates a copy of this zip entry. + + An that is a copy of the current instance. + + + + Gets a string representation of this ZipEntry. + + A readable textual representation of this + + + + Test a compression method to see if this library + supports extracting data compressed with that method + + The compression method to test. + Returns true if the compression method is supported; false otherwise + + + + Cleans a name making it conform to Zip file conventions. + Devices names ('c:\') and UNC share names ('\\server\share') are removed + and forward slashes ('\') are converted to back slashes ('/'). + Names are made relative by trimming leading slashes which is compatible + with the ZIP naming convention. + + The name to clean + The 'cleaned' name. + + The Zip name transform class is more flexible. + + + + + Get a value indicating wether the entry has a CRC value available. + + + + + Get/Set flag indicating if entry is encrypted. + A simple helper routine to aid interpretation of flags + + This is an assistant that interprets the flags property. + + +
+ Get / set a flag indicating wether entry name and comment text are + encoded in unicode UTF8. + + This is an assistant that interprets the flags property. + + + + Value used during password checking for PKZIP 2.0 / 'classic' encryption. + + + + + Get/Set general purpose bit flag for entry + + + General purpose bit flag
+
+ Bit 0: If set, indicates the file is encrypted
+ Bit 1-2 Only used for compression type 6 Imploding, and 8, 9 deflating
+ Imploding:
+ Bit 1 if set indicates an 8K sliding dictionary was used. If clear a 4k dictionary was used
+ Bit 2 if set indicates 3 Shannon-Fanno trees were used to encode the sliding dictionary, 2 otherwise
+
+ Deflating:
+ Bit 2 Bit 1
+ 0 0 Normal compression was used
+ 0 1 Maximum compression was used
+ 1 0 Fast compression was used
+ 1 1 Super fast compression was used
+
+ Bit 3: If set, the fields crc-32, compressed size + and uncompressed size are were not able to be written during zip file creation + The correct values are held in a data descriptor immediately following the compressed data.
+ Bit 4: Reserved for use by PKZIP for enhanced deflating
+ Bit 5: If set indicates the file contains compressed patch data
+ Bit 6: If set indicates strong encryption was used.
+ Bit 7-10: Unused or reserved
+ Bit 11: If set the name and comments for this entry are in unicode.
+ Bit 12-15: Unused or reserved
+
+ + +
+ + + Get/Set index of this entry in Zip file + + This is only valid when the entry is part of a + + + + Get/set offset for use in central header + + + + + Get/Set external file attributes as an integer. + The values of this are operating system dependant see + HostSystem for details + + + + + Get the version made by for this entry or zero if unknown. + The value / 10 indicates the major version number, and + the value mod 10 is the minor version number + + + + + Get a value indicating this entry is for a DOS/Windows system. + + + + + Gets the compatability information for the external file attribute + If the external file attributes are compatible with MS-DOS and can be read + by PKZIP for DOS version 2.04g then this value will be zero. Otherwise the value + will be non-zero and identify the host system on which the attributes are compatible. + + + + The values for this as defined in the Zip File format and by others are shown below. The values are somewhat + misleading in some cases as they are not all used as shown. You should consult the relevant documentation + to obtain up to date and correct information. The modified appnote by the infozip group is + particularly helpful as it documents a lot of peculiarities. The document is however a little dated. + + 0 - MS-DOS and OS/2 (FAT / VFAT / FAT32 file systems) + 1 - Amiga + 2 - OpenVMS + 3 - Unix + 4 - VM/CMS + 5 - Atari ST + 6 - OS/2 HPFS + 7 - Macintosh + 8 - Z-System + 9 - CP/M + 10 - Windows NTFS + 11 - MVS (OS/390 - Z/OS) + 12 - VSE + 13 - Acorn Risc + 14 - VFAT + 15 - Alternate MVS + 16 - BeOS + 17 - Tandem + 18 - OS/400 + 19 - OS/X (Darwin) + 99 - WinZip AES + remainder - unused + + + + + + Get minimum Zip feature version required to extract this entry + + + Minimum features are defined as:
+ 1.0 - Default value
+ 1.1 - File is a volume label
+ 2.0 - File is a folder/directory
+ 2.0 - File is compressed using Deflate compression
+ 2.0 - File is encrypted using traditional encryption
+ 2.1 - File is compressed using Deflate64
+ 2.5 - File is compressed using PKWARE DCL Implode
+ 2.7 - File is a patch data set
+ 4.5 - File uses Zip64 format extensions
+ 4.6 - File is compressed using BZIP2 compression
+ 5.0 - File is encrypted using DES
+ 5.0 - File is encrypted using 3DES
+ 5.0 - File is encrypted using original RC2 encryption
+ 5.0 - File is encrypted using RC4 encryption
+ 5.1 - File is encrypted using AES encryption
+ 5.1 - File is encrypted using corrected RC2 encryption
+ 5.1 - File is encrypted using corrected RC2-64 encryption
+ 6.1 - File is encrypted using non-OAEP key wrapping
+ 6.2 - Central directory encryption (not confirmed yet)
+ 6.3 - File is compressed using LZMA
+ 6.3 - File is compressed using PPMD+
+ 6.3 - File is encrypted using Blowfish
+ 6.3 - File is encrypted using Twofish
+
+ +
+ + + Get a value indicating wether this entry can be decompressed by the library. + + This is based on the and + wether the compression method is supported. + + + + Gets a value indicating if the entry requires Zip64 extensions + to store the full entry values. + + A value of true if a local header requires Zip64 extensions; false if not. + + + + Get a value indicating wether the central directory entry requires Zip64 extensions to be stored. + + + + + Get/Set DosTime value. + + + The MS-DOS date format can only represent dates between 1/1/1980 and 12/31/2107. + + + + + Gets/Sets the time of last modification of the entry. + + + The property is updated to match this as far as possible. + + + + + Returns the entry name. + + + The unix naming convention is followed. + Path components in the entry should always separated by forward slashes ('/'). + Dos device names like C: should also be removed. + See the class, or + + + + + Gets/Sets the size of the uncompressed data. + + + The size or -1 if unknown. + + Setting the size before adding an entry to an archive can help + avoid compatability problems with some archivers which dont understand Zip64 extensions. + + + + Gets/Sets the size of the compressed data. + + + The compressed entry size or -1 if unknown. + + + + + Gets/Sets the crc of the uncompressed data. + + + Crc is not in the range 0..0xffffffffL + + + The crc value or -1 if unknown. + + + + + Gets/Sets the compression method. Only Deflated and Stored are supported. + + + The compression method for this entry + + + + + Gets/Sets the extra data. + + + Extra data is longer than 64KB (0xffff) bytes. + + + Extra data or null if not set. + + + + + Gets/Sets the entry comment. + + + If comment is longer than 0xffff. + + + The comment or null if not set. + + + A comment is only available for entries when read via the ZipFile class. + The class doesnt have the comment data available. + + + + + Gets a value indicating if the entry is a directory. + however. + + + A directory is determined by an entry name with a trailing slash '/'. + The external file attributes can also indicate an entry is for a directory. + Currently only dos/windows attributes are tested in this manner. + The trailing slash convention should always be followed. + + + + + Get a value of true if the entry appears to be a file; false otherwise + + + This only takes account of DOS/Windows attributes. Other operating systems are ignored. + For linux and others the result may be incorrect. + + + + + Huffman tree used for inflation + + + + + Literal length tree + + + + + Distance tree + + + + + Constructs a Huffman tree from the array of code lengths. + + + the array of code lengths + + + + + Reads the next symbol from input. The symbol is encoded using the + huffman tree. + + + input the input source. + + + the next symbol, or -1 if not enough input is available. + + + + + Graphical representation of a series, tpyes are text, graphical or blank + - Graphical Banners are defined as having a graphical/logo version of the series name + - Text Banners generally use Arial Bold font, 27pt as the text + - The main requirement for blank banners is they should be blank on the left side of the banner as + that is where the auto-generated text will be placed + + More information on http://thetvdb.com/wiki/index.php/Series_Banners + + + + + TvdbSeriesBanner constructor + + + + + TvdbSeriesBanner constructor + + Id of banner + Path of banner image + Language of this banner + Banner type (text, graphical, blank, none) + + + + Banner type of the series banner + + + + + Type of the series banner + + + + + Banners contains a text of the seriesname + + + + + Banner containing a graphical representation of the seriesname + + + + + Banner containing a free space on the left side to place your own series description + + + + + Nothing specified + + + + + ExtraData tagged value interface. + + + + + Set the contents of this instance from the data passed. + + The data to extract contents from. + The offset to begin extracting data from. + The number of bytes to extract. + + + + Get the data representing this instance. + + Returns the data for this instance. + + + + Get the ID for this tagged data value. + + + + + A raw binary tagged value + + + + + Initialise a new instance. + + The tag ID. + + + + Set the data from the raw values provided. + + The raw data to extract values from. + The index to start extracting values from. + The number of bytes available. + + + + Get the binary data representing this instance. + + The raw binary data representing this instance. + + + + The tag ID for this instance. + + + + + Get the ID for this tagged data value. + + + + + Get /set the binary data representing this instance. + + The raw binary data representing this instance. + + + + Class representing extended unix date time values. + + + + + Set the data from the raw values provided. + + The raw data to extract values from. + The index to start extracting values from. + The number of bytes available. + + + + Get the binary data representing this instance. + + The raw binary data representing this instance. + + + + Test a value to see if is valid and can be represented here. + + The value to test. + Returns true if the value is valid and can be represented; false if not. + The standard Unix time is a signed integer data type, directly encoding the Unix time number, + which is the number of seconds since 1970-01-01. + Being 32 bits means the values here cover a range of about 136 years. + The minimum representable time is 1901-12-13 20:45:52, + and the maximum representable time is 2038-01-19 03:14:07. + + + + + Get the ID + + + + + Get /set the Modification Time + + + + + + + Get / set the Access Time + + + + + + + Get / Set the Create Time + + + + + + + Get/set the values to include. + + + + + Flags indicate which values are included in this instance. + + + + + The modification time is included + + + + + The access time is included + + + + + The create time is included. + + + + + Class handling NT date time values. + + + + + Set the data from the raw values provided. + + The raw data to extract values from. + The index to start extracting values from. + The number of bytes available. + + + + Get the binary data representing this instance. + + The raw binary data representing this instance. + + + + Test a valuie to see if is valid and can be represented here. + + The value to test. + Returns true if the value is valid and can be represented; false if not. + + NTFS filetimes are 64-bit unsigned integers, stored in Intel + (least significant byte first) byte order. They determine the + number of 1.0E-07 seconds (1/10th microseconds!) past WinNT "epoch", + which is "01-Jan-1601 00:00:00 UTC". 28 May 60056 is the upper limit + + + + + Get the ID for this tagged data value. + + + + + Get/set the last modification time. + + + + + Get /set the create time + + + + + Get /set the last access time. + + + + + A factory that creates tagged data instances. + + + + + Get data for a specific tag value. + + The tag ID to find. + The data to search. + The offset to begin extracting data from. + The number of bytes to extract. + The located value found, or null if not found. + + + + + A class to handle the extra data field for Zip entries + + + Extra data contains 0 or more values each prefixed by a header tag and length. + They contain zero or more bytes of actual data. + The data is held internally using a copy on write strategy. This is more efficient but + means that for extra data created by passing in data can have the values modified by the caller + in some circumstances. + + + + + Initialise a default instance. + + + + + Initialise with known extra data. + + The extra data. + + + + Get the raw extra data value + + Returns the raw byte[] extra data this instance represents. + + + + Clear the stored data. + + + + + Get a read-only for the associated tag. + + The tag to locate data for. + Returns a containing tag data or null if no tag was found. + + + + Get the tagged data for a tag. + + The tag to search for. + Returns a tagged value or null if none found. + + + + Find an extra data value + + The identifier for the value to find. + Returns true if the value was found; false otherwise. + + + + Add a new entry to extra data. + + The value to add. + + + + Add a new entry to extra data + + The ID for this entry. + The data to add. + If the ID already exists its contents are replaced. + + + + Start adding a new entry. + + Add data using , , , or . + The new entry is completed and actually added by calling + + + + + Add entry data added since using the ID passed. + + The identifier to use for this entry. + + + + Add a byte of data to the pending new entry. + + The byte to add. + + + + + Add data to a pending new entry. + + The data to add. + + + + + Add a short value in little endian order to the pending new entry. + + The data to add. + + + + + Add an integer value in little endian order to the pending new entry. + + The data to add. + + + + + Add a long value in little endian order to the pending new entry. + + The data to add. + + + + + Delete an extra data field. + + The identifier of the field to delete. + Returns true if the field was found and deleted. + + + + Read a long in little endian form from the last found data value + + Returns the long value read. + + + + Read an integer in little endian form from the last found data value. + + Returns the integer read. + + + + Read a short value in little endian form from the last found data value. + + Returns the short value read. + + + + Read a byte from an extra data + + The byte value read or -1 if the end of data has been reached. + + + + Skip data during reading. + + The number of bytes to skip. + + + + Internal form of that reads data at any location. + + Returns the short value read. + + + + Dispose of this instance. + + + + + Gets the current extra data length. + + + + + Get the length of the last value found by + + This is only valid if has previously returned true. + + + + Get the index for the current read value. + + This is only valid if has previously returned true. + Initially the result will be the index of the first byte of actual data. The value is updated after calls to + , and . + + + + Get the number of bytes remaining to be read for the current value; + + + + + PkzipClassic embodies the classic or original encryption facilities used in Pkzip archives. + While it has been superceded by more recent and more powerful algorithms, its still in use and + is viable for preventing casual snooping + + + + + Generates new encryption keys based on given seed + + The seed value to initialise keys with. + A new key value. + + + + PkzipClassicCryptoBase provides the low level facilities for encryption + and decryption using the PkzipClassic algorithm. + + + + + Transform a single byte + + + The transformed value + + + + + Set the key schedule for encryption/decryption. + + The data use to set the keys from. + + + + Update encryption keys + + + + + Reset the internal state. + + + + + PkzipClassic CryptoTransform for encryption. + + + + + Initialise a new instance of + + The key block to use. + + + + Transforms the specified region of the specified byte array. + + The input for which to compute the transform. + The offset into the byte array from which to begin using data. + The number of bytes in the byte array to use as data. + The computed transform. + + + + Transforms the specified region of the input byte array and copies + the resulting transform to the specified region of the output byte array. + + The input for which to compute the transform. + The offset into the input byte array from which to begin using data. + The number of bytes in the input byte array to use as data. + The output to which to write the transform. + The offset into the output byte array from which to begin writing data. + The number of bytes written. + + + + Cleanup internal state. + + + + + Gets a value indicating whether the current transform can be reused. + + + + + Gets the size of the input data blocks in bytes. + + + + + Gets the size of the output data blocks in bytes. + + + + + Gets a value indicating whether multiple blocks can be transformed. + + + + + PkzipClassic CryptoTransform for decryption. + + + + + Initialise a new instance of . + + The key block to decrypt with. + + + + Transforms the specified region of the specified byte array. + + The input for which to compute the transform. + The offset into the byte array from which to begin using data. + The number of bytes in the byte array to use as data. + The computed transform. + + + + Transforms the specified region of the input byte array and copies + the resulting transform to the specified region of the output byte array. + + The input for which to compute the transform. + The offset into the input byte array from which to begin using data. + The number of bytes in the input byte array to use as data. + The output to which to write the transform. + The offset into the output byte array from which to begin writing data. + The number of bytes written. + + + + Cleanup internal state. + + + + + Gets a value indicating whether the current transform can be reused. + + + + + Gets the size of the input data blocks in bytes. + + + + + Gets the size of the output data blocks in bytes. + + + + + Gets a value indicating whether multiple blocks can be transformed. + + + + + Defines a wrapper object to access the Pkzip algorithm. + This class cannot be inherited. + + + + + Generate an initial vector. + + + + + Generate a new random key. + + + + + Create an encryptor. + + The key to use for this encryptor. + Initialisation vector for the new encryptor. + Returns a new PkzipClassic encryptor + + + + Create a decryptor. + + Keys to use for this new decryptor. + Initialisation vector for the new decryptor. + Returns a new decryptor. + + + + Get / set the applicable block size in bits. + + The only valid block size is 8. + + + + Get an array of legal key sizes. + + + + + Get an array of legal block sizes. + + + + + Get / set the key value applicable. + + + + + This is the DeflaterHuffman class. + + This class is not thread safe. This is inherent in the API, due + to the split of Deflate and SetInput. + + author of the original java version : Jochen Hoenicke + + + + + Pending buffer to use + + + + + Construct instance with pending buffer + + Pending buffer to use + + + + Reset internal state + + + + + Write all trees to pending buffer + + The number/rank of treecodes to send. + + + + Compress current buffer writing data to pending buffer + + + + + Flush block to output with no compression + + Data to write + Index of first byte to write + Count of bytes to write + True if this is the last block + + + + Flush block to output with compression + + Data to flush + Index of first byte to flush + Count of bytes to flush + True if this is the last block + + + + Get value indicating if internal buffer is full + + true if buffer is full + + + + Add literal to buffer + + Literal value to add to buffer. + Value indicating internal buffer is full + + + + Add distance code and length to literal and distance trees + + Distance code + Length + Value indicating if internal buffer is full + + + + Reverse the bits of a 16 bit value. + + Value to reverse bits + Value with bits reversed + + + + Resets the internal state of the tree + + + + + Check that all frequencies are zero + + + At least one frequency is non-zero + + + + + Set static codes and length + + new codes + length for new codes + + + + Build dynamic codes and lengths + + + + + Get encoded length + + Encoded length, the sum of frequencies * lengths + + + + Scan a literal or distance tree to determine the frequencies of the codes + in the bit length tree. + + + + + Write tree values + + Tree to write + + + + Series class holds all the info that can be retrieved from http://thetvdb.com.
+
+ Those are as follows:
+
+ - Base information:
+ + + 73739 + |Malcolm David Kelley|Jorge Garcia|Maggie Grace|...| + Thursday + 9:00 PM + TV-14 + 2004-09-22 + |Action and Adventure|Drama|Science-Fiction| + tt0411008 + en + ABC + After Oceanic Air flight 815... + 8.9 + 60 + 24313 + Lost + Continuing + graphical/24313-g2.jpg + fanart/original/73739-1.jpg + 1205694666 + SH672362 + + + - Banner information
+ - Episode information
+ - Extended actor information
+
+ Each of those can be downloaded seperately. If the information is downloaded as + zipped file, everything is downloaded at once +
+
+ + + Basic constructor for the TvdbSeries class + + + + + Create a series object with all the information contained in the TvdbSeriesFields object + + + + + + Add a new language to the series + + + + + + Set the language of the series to one of the languages that have + already been loaded + + The new language for this series + true if success, false otherwise + + + + Set the language of the series to one of the languages that have + already been loaded + + The new language abbriviation for this series + true if success, false otherwise + + + + Get all languages that have already been loaded for this series + + List of all translations that are loaded for this series + + + + Return a list of episodes for the given season + + Season for which episodes should be returned + List of episodes for the given season + + + + returns SeriesName (SeriesId) + + String representing this series + + + + Uptdate the info of the current series with the updated one + + TvdbSeries object + + + + Get all available Translations + + + + + Is the series a favorite + + + + + Returns the genre string in the format | genre1 | genre2 | genre3 | + + + + + Formatted String of actors that appear during this episode in the + format | actor1 | actor2 | actor3 | + + + + + returns a list of all banners for this series + + + + + Is the banner info loaded + + + + + returns a list of all series banners for this series + + + + + Returns a list of all season banners for this series + + + + + Returns a list of all season banners for this series + + + + + Returns a list of all fanart banners for this series + + + + + How many Season does the series have + + + + + List of loaded tvdb actors + + + + + Is the actor info loaded + + + + + Exception that is thrown if http://thetvdb.com seems to be unavailable + + + + + TvdbNotAvailableException constructor + + Message + + + + TvdbNotAvailableException constructor + + + + + TvdbDownloader allows simple downloading of all informations stored + on http://thetvdb.com. Unlike the class Tvdb TvdbDownloader doesn't + include any logic like caching. + + + + + TvdbDownloader constructor + + The api key used for downloading data from thetvdb -> see http://thetvdb.com/wiki/index.php/Programmers_API + + + + Download the episodes for the given series + + the id of the series + the language in which the episodes should be downloaded + An episode object or null if no episodes could be found + Exception is thrown when there was an error parsing the xml files. + Feel free to post a detailed description of this issue on http://code.google.com/p/tvdblib + or http://forums.thetvdb.com/ + The stored api key is invalid + The tvdb database is unavailable + + + + Download all available banners (only a list of available banners, not the actual images!)for the specified series. + You can load the actual images by calling LoadBanner() (or LoadThumb(), LoadVignette()) on the banner object + + Id of series + List of all banners for the given series + Exception is thrown when there was an error parsing the xml files. + Feel free to post a detailed description of this issue on http://code.google.com/p/tvdblib + or http://forums.thetvdb.com/ + The stored api key is invalid + The tvdb database is unavailable + + + + Download series from tvdb (specified by series id and language) + + id of series + language of series + load episodes + load actors + load banners + The series object or null if the series couldn't be found + Exception is thrown when there was an error parsing the xml files. + Feel free to post a detailed description of this issue on http://code.google.com/p/tvdblib + or http://forums.thetvdb.com/ + The stored api key is invalid + The tvdb database is unavailable + + + + Download the series in the given language + + id of series + language of series + Exception is thrown when there was an error parsing the xml files. + Feel free to post a detailed description of this issue on http://code.google.com/p/tvdblib + or http://forums.thetvdb.com/ + The stored api key is invalid + The tvdb database is unavailable + the series object + + + + Download a series search for the id of an external site + + The site that provides the external id + The id that identifies the series on the external site + Exception is thrown when there was an error parsing the xml files. + Feel free to post a detailed description of this issue on http://code.google.com/p/tvdblib + or http://forums.thetvdb.com/ + The stored api key is invalid + The tvdb database is unavailable + the series object that corresponds to the given site and id + + + + Download the given episode from tvdb + + Id of episode + Language in which the episode should be downloaded + The episode object + Exception is thrown when there was an error parsing the xml files. + Feel free to post a detailed description of this issue on http://code.google.com/p/tvdblib + or http://forums.thetvdb.com/ + The episode/series/banner couldn't be located on the tvdb server. + Exception is thrown when thetvdb isn't available. + + + + Download the episode (specified by series id, season number, episode number, language and episode order) from http://thetvdb.com. + It is possible to retrieve episodes by aired order (aka default order), DVD order and absolute order. For a detailled description of these + options see: http://thetvdb.com/wiki/index.php/Category:Episodes + + series id + season nr + episode nr + language + order + The episode object or null if the episode could't be found + Exception is thrown when there was an error parsing the xml files. + Feel free to post a detailed description of this issue on http://code.google.com/p/tvdblib + or http://forums.thetvdb.com/ + The episode/series/banner couldn't be located on the tvdb server. + Exception is thrown when thetvdb isn't available. + + + + Download the episode specified from http://thetvdb.com + + series id + when did the episode air + language + Episode + Exception is thrown when there was an error parsing the xml files. + Feel free to post a detailed description of this issue on http://code.google.com/p/tvdblib + or http://forums.thetvdb.com/ + The episode/series/banner couldn't be located on the tvdb server. + Exception is thrown when thetvdb isn't available. + + + + Download the preferred language of the user. + + Id of user + The preferred language for this user as set on http://thetvdb.com + Exception is thrown when there was an error parsing the xml files. + Feel free to post a detailed description of this issue on http://code.google.com/p/tvdblib + or http://forums.thetvdb.com/ + The user doesn't exist + The tvdb database is unavailable + + + + Download the user favorite list + + Id of user (register at http://thetvdb.com to get a user id) + Favorite list for specified user + Exception is thrown when there was an error parsing the xml files. + Feel free to post a detailed description of this issue on http://code.google.com/p/tvdblib + or http://forums.thetvdb.com/ + The user doesn't exist + The tvdb database is unavailable + + + + Download the user favorite list + + Id of user + Type of action + id of series + List of user favorites + Exception is thrown when there was an error parsing the xml files. + Feel free to post a detailed description of this issue on http://code.google.com/p/tvdblib + or http://forums.thetvdb.com/ + The user doesn't exist + The tvdb database is unavailable + + + + Download an Update + + updated series to return + updated episodes to return + updated banners to return + interval to download (0=day, 1=week, 2=month) + use zip + Time of the update + Exception is thrown when there was an error parsing the xml files. + Feel free to post a detailed description of this issue on http://code.google.com/p/tvdblib + or http://forums.thetvdb.com/ + The stored api key is invalid + Exception is thrown when thetvdb isn't available. + + + + Download an Update + + updated series to return + updated episodes to return + updated banners to return + interval to download + use zip + Time of the update + Exception is thrown when there was an error parsing the xml files. + Feel free to post a detailed description of this issue on http://code.google.com/p/tvdblib + or http://forums.thetvdb.com/ + The stored api key is invalid + Exception is thrown when thetvdb isn't available. + + + + Download list available languages. + + A list of TvdbLanguage objects + Exception is thrown when there was an error parsing the xml files. + Feel free to post a detailed description of this issue on http://code.google.com/p/tvdblib + or http://forums.thetvdb.com/ + The episode/series/banner couldn't be located on the tvdb server. + Exception is thrown when thetvdb isn't available. + + + + Download search results for a series search in the default language (english) + + name of the series + List of possible matches for the search + Exception is thrown when there was an error parsing the xml files. + Feel free to post a detailed description of this issue on http://code.google.com/p/tvdblib + or http://forums.thetvdb.com/ + The stored api key is invalid + Exception is thrown when thetvdb isn't available. + + + + Download search results for a series search + + name of the series + language of the search + List of possible matches for the search + Exception is thrown when there was an error parsing the xml files. + Feel free to post a detailed description of this issue on http://code.google.com/p/tvdblib + or http://forums.thetvdb.com/ + The stored api key is invalid + Exception is thrown when thetvdb isn't available. + + + + Make the request for rating a series + + The id of the user + The id of the series + The rating for this series + A double value with the current rating for this series + Exception is thrown when there was an error parsing the xml files. + Feel free to post a detailed description of this issue on http://code.google.com/p/tvdblib + or http://forums.thetvdb.com/ + The user doesn't exist + Exception is thrown when thetvdb isn't available. + + + + Make the request for rating an episode + + The id of the user + The id of the episode + The rating for this series + A double value with the current rating for this series + Exception is thrown when there was an error parsing the xml files. + Feel free to post a detailed description of this issue on http://code.google.com/p/tvdblib + or http://forums.thetvdb.com/ + The user doesn't exist + Exception is thrown when thetvdb isn't available. + + + + Download the series rating without rating the item. + + id of user + id of series + Current rating for the series + Exception is thrown when there was an error parsing the xml files. + Feel free to post a detailed description of this issue on http://code.google.com/p/tvdblib + or http://forums.thetvdb.com/ + The user doesn't exist + Exception is thrown when thetvdb isn't available. + + + + Download the episode rating without rating + + id of the user + id of the episode + Current rating of this episode + Exception is thrown when there was an error parsing the xml files. + Feel free to post a detailed description of this issue on http://code.google.com/p/tvdblib + or http://forums.thetvdb.com/ + The user doesn't exist + Exception is thrown when thetvdb isn't available. + + + + Download the list of actors + + Id of series + List of actors for the given series + + + + Gets all series this user has already ratet + + All series ratings the user has made so far + Exception is thrown when there was an error parsing the xml files. + Feel free to post a detailed description of this issue on http://code.google.com/p/tvdblib + or http://forums.thetvdb.com/ + The user doesn't exist + Exception is thrown when thetvdb isn't available. + + + + Download the user rating for the given series (episodes and series itself) + + Id of user + Id of series + Dictionary of all ratings + Exception is thrown when there was an error parsing the xml files. + Feel free to post a detailed description of this issue on http://code.google.com/p/tvdblib + or http://forums.thetvdb.com/ + The user doesn't exist + Exception is thrown when thetvdb isn't available. + + + + Newest addition to the graphical section. Like the name says it has poster + format (680px x 1000px) and is not smaller than 500 kb + + More information at http://thetvdb.com/wiki/index.php/Posters + + + + + TvdbPosterBanner constructor + + Id of fanart banner + Language for this banner + Path of image for this banner + + + + TvdbPosterBanner constructor + + + + + Resolution of the Poster banner + + + + + Information on server structure and mirrors of tvdb + + /api// + |---- mirrors.xml + |---- languages.xml + | + |---- series/ + | |---- / + | |---- .xml (Base Series Record) + | |---- banners.xml (All banners related to this series) + | | + | |---- all/ + | | |---- .xml (Full Series Record) + | | |---- .zip (Zipped version of Full Series Record and banners.xml) + | | + | |---- default/ (sorts using the default ordering method) + | | |---- // + | | |---- .xml (Base Episode Record) + | | + | |---- dvd/ (sorts using the dvd ordering method) + | | |---- // + | | |---- .xml (Base Episode Record) + | | + | |---- absolute/ (sorts using the absolute ordering method) + | |---- / + | |---- .xml (Base Episode Record) + | + |---- episodes + | |---- / (will return en.xml by default) + | |---- .xml (Base Episode Record) + | + |---- (updates) + |---- s.xml + |---- updates_.zip + ]]> + + + + + Base server where all operations start + + + + + Path of file where we get the available languages + + + + + Creates link which (depending on params) gets user favorites, adds a series to user + favorites or removes a series from the favorite lis + + + + + Link + + + + Creates link which only retrieves the user favourites + + + Link + + + + Create link to get actor info + + series id + api key + Link + + + + create a link to all series rated by the user + + api key + user identifier + Link + + + + create a link to all items rated by the user for this series + + api key + user identifier + id of the series + Link + + + + + Represents a rating entry from thetvdb + + + + + Which item type is this rating for + + + + + Community Rating is a double value from 0 to 10 and is the mean value of all user ratings for this item + + + + + The rating from this user + + + + + Enum with all items on thetvdb that can be rated + + + + + Item is a series + + + + + Item is an episode + + + + + Represents exception conditions specific to Zip archive handling + + + + + Deserialization constructor + + for this constructor + for this constructor + + + + Initializes a new instance of the ZipException class. + + + + + Initializes a new instance of the ZipException class with a specified error message. + + The error message that explains the reason for the exception. + + + + Initialise a new instance of ZipException. + + A message describing the error. + The exception that is the cause of the current exception. + + + + Computes Adler32 checksum for a stream of data. An Adler32 + checksum is not as reliable as a CRC32 checksum, but a lot faster to + compute. + + The specification for Adler32 may be found in RFC 1950. + ZLIB Compressed Data Format Specification version 3.3) + + + From that document: + + "ADLER32 (Adler-32 checksum) + This contains a checksum value of the uncompressed data + (excluding any dictionary data) computed according to Adler-32 + algorithm. This algorithm is a 32-bit extension and improvement + of the Fletcher algorithm, used in the ITU-T X.224 / ISO 8073 + standard. + + Adler-32 is composed of two sums accumulated per byte: s1 is + the sum of all bytes, s2 is the sum of all s1 values. Both sums + are done modulo 65521. s1 is initialized to 1, s2 to zero. The + Adler-32 checksum is stored as s2*65536 + s1 in most- + significant-byte first (network) order." + + "8.2. The Adler-32 algorithm + + The Adler-32 algorithm is much faster than the CRC32 algorithm yet + still provides an extremely low probability of undetected errors. + + The modulo on unsigned long accumulators can be delayed for 5552 + bytes, so the modulo operation time is negligible. If the bytes + are a, b, c, the second sum is 3a + 2b + c + 3, and so is position + and order sensitive, unlike the first sum, which is just a + checksum. That 65521 is prime is important to avoid a possible + large class of two-byte errors that leave the check unchanged. + (The Fletcher checksum uses 255, which is not prime and which also + makes the Fletcher check insensitive to single byte changes 0 - + 255.) + + The sum s1 is initialized to 1 instead of zero to make the length + of the sequence part of s2, so that the length does not have to be + checked separately. (Any sequence of zeroes has a Fletcher + checksum of zero.)" + + + + + largest prime smaller than 65536 + + + + + Creates a new instance of the Adler32 class. + The checksum starts off with a value of 1. + + + + + Resets the Adler32 checksum to the initial value. + + + + + Updates the checksum with a byte value. + + + The data value to add. The high byte of the int is ignored. + + + + + Updates the checksum with an array of bytes. + + + The source of the data to update with. + + + + + Updates the checksum with the bytes taken from the array. + + + an array of bytes + + + the start of the data used for this update + + + the number of bytes to use for this update + + + + + Returns the Adler32 data checksum computed so far. + + + + + Represents an tvdb actor -> for more information see http://thetvdb.com/wiki/index.php/API:actors.xml + + + + + This matches the First, Second, Third, and Don't Care options on the site, which determine if the actor is shown on the series page or not. First (SortOrder=0), Second (SortOrder=1), and Third (SortOrder=2) generally mean the actor plays a primary role in the series. Don't Care (SortOrder=3) generally means the actor plays a lesser role. In some series there are no primary actors, so all actors will have a SortOrder of 3. The actors are also listed in the report in SortOrder, followed by those with images, and then finally by Name. So using the order they show up in the file is a valid method. + + + + + The name of the actor's character in the series. This may include multiple roles in comma-separated format. + + + + + The actual name of the actor. + + + + + The image for the actor in this role. + + + + + A unique id per actor. At some point actors will be globally unique but for now they're just unique per series. + + + + + Binary cache provider saves all the cached info into + + broken at the moment -> use CacheProvider + + + + + BinaryCacheProvider constructor + + The root folder where the cached data should be stored + + + + Load the cached data + + TvdbData object + + + + Initialises the cache, should do the following things + - initialise connections used for this cache provider (db connections, network shares,...) + - create folder structure / db tables / ... if they are not created already + - if this is the first time the cache has been initialised (built), mark last_updated with the + current date + + Tvdb Data object + + + + Closes the cache (e.g. close open connection, etc.) + + true if successful, false otherwise + + + + Saves cache settings + + settings + + + + Saves the time of the last update to cache + + time of last update + + + + Save the language to cache + + List of languages + + + + Save the mirror info to cache + + list of mirrors + + + + Loads the available languages from cache + + List of available languages + + + + Load the available mirrors from cache + + List of available mirrors + + + + Load the give series from cache + + id of series to load + loaded series, or null if not successful + + + + Saves the series to cache + + Tvdb series + + + + Saves the user data to cache + + TvdbUser + + + + Loads all series from cache + + List that contains all series object that had been previously cached + + + + Load the userinfo from the cache + + Id of user + TvdbUser object + + + + Receives a list of all series that have been cached + + Ids of series that are already cached + + + + Check if the series is cached in the given configuration + + Id of the series + Language of the series + are episodes loaded + are banners loaded + are actors loaded + true if the series is cached, false otherwise + + + + Completely refreshes the cached (all stored information is lost). + + true if the cache was cleared successfully, + false otherwise (e.g. no write rights,...) + + + + Remove a specific series from cache + + the id of the series + true if the series was removed from the cache successfully, + false otherwise (e.g. series not cached) + + + + Save the given image to cache + + banner to save + id of series + filename (will be the same name used by LoadImageFromCache) + + + + Loads the specified image from the cache + + series id + filename of the image (same one as used by SaveToCache) + The loaded image or null if the image wasn't found + + + + Removes the specified image from cache (if it has been cached) + + id of series + name of image + true if image was removed successfully, false otherwise (e.g. image didn't exist) + + + + Load the time when the cache was updated last + + DateTime of lsat update + + + + Is the cache provider initialised + + + + + Class to store what parts of the cached series has been loaded + + + + + constructor + + Id of series + Are episodes loaded + Are banners loaded + Are actors loaded + + + + Are actors loaded + + + + + Are banners loaded + + + + + Are episodes loaded + + + + + Id of series + + + + + This is an InflaterInputStream that reads the files baseInputStream an zip archive + one after another. It has a special method to get the zip entry of + the next file. The zip entry contains information about the file name + size, compressed size, Crc, etc. + It includes support for Stored and Deflated entries. +
+
Author of the original java version : Jochen Hoenicke +
+ + This sample shows how to read a zip file + + using System; + using System.Text; + using System.IO; + + using ICSharpCode.SharpZipLib.Zip; + + class MainClass + { + public static void Main(string[] args) + { + using ( ZipInputStream s = new ZipInputStream(File.OpenRead(args[0]))) { + + ZipEntry theEntry; + while ((theEntry = s.GetNextEntry()) != null) { + int size = 2048; + byte[] data = new byte[2048]; + + Console.Write("Show contents (y/n) ?"); + if (Console.ReadLine() == "y") { + while (true) { + size = s.Read(data, 0, data.Length); + if (size > 0) { + Console.Write(new ASCIIEncoding().GetString(data, 0, size)); + } else { + break; + } + } + } + } + } + } + } + + +
+ + + The current reader this instance. + + + + + Creates a new Zip input stream, for reading a zip archive. + + The underlying providing data. + + + + Advances to the next entry in the archive + + + The next entry in the archive or null if there are no more entries. + + + If the previous entry is still open CloseEntry is called. + + + Input stream is closed + + + Password is not set, password is invalid, compression method is invalid, + version required to extract is not supported + + + + + Read data descriptor at the end of compressed data. + + + + + Complete cleanup as the final part of closing. + + True if the crc value should be tested + + + + Closes the current zip entry and moves to the next one. + + + The stream is closed + + + The Zip stream ends early + + + + + Reads a byte from the current zip entry. + + + The byte or -1 if end of stream is reached. + + + + + Handle attempts to read by throwing an . + + The destination array to store data in. + The offset at which data read should be stored. + The maximum number of bytes to read. + Returns the number of bytes actually read. + + + + Handle attempts to read from this entry by throwing an exception + + + + + Perform the initial read on an entry which may include + reading encryption headers and setting up inflation. + + The destination to fill with data read. + The offset to start reading at. + The maximum number of bytes to read. + The actual number of bytes read. + + + + Read a block of bytes from the stream. + + The destination for the bytes. + The index to start storing data. + The number of bytes to attempt to read. + Returns the number of bytes read. + Zero bytes read means end of stream. + + + + Reads a block of bytes from the current zip entry. + + + The number of bytes read (this may be less than the length requested, even before the end of stream), or 0 on end of stream. + + + An i/o error occured. + + + The deflated stream is corrupted. + + + The stream is not open. + + + + + Closes the zip input stream + + + + + Optional password used for encryption when non-null + + A password for all encrypted entries in this + + + + Gets a value indicating if there is a current entry and it can be decompressed + + + The entry can only be decompressed if the library supports the zip features required to extract it. + See the ZipEntry Version property for more details. + + + + + Returns 1 if there is an entry available + Otherwise returns 0. + + + + + Returns the current size that can be read from the current entry if available + + Thrown if the entry size is not known. + Thrown if no entry is currently available. + + + + Delegate for reading bytes from a stream. + + + + + Determines how entries are tested to see if they should use Zip64 extensions or not. + + + + + Zip64 will not be forced on entries during processing. + + An entry can have this overridden if required + + + + Zip64 should always be used. + + + + + #ZipLib will determine use based on entry values when added to archive. + + + + + The kind of compression used for an entry in an archive + + + + + A direct copy of the file contents is held in the archive + + + + + Common Zip compression method using a sliding dictionary + of up to 32KB and secondary compression from Huffman/Shannon-Fano trees + + + + + An extension to deflate with a 64KB window. Not supported by #Zip currently + + + + + BZip2 compression. Not supported by #Zip. + + + + + WinZip special for AES encryption, Not supported by #Zip. + + + + + Identifies the encryption algorithm used for an entry + + + + + No encryption has been used. + + + + + Encrypted using PKZIP 2.0 or 'classic' encryption. + + + + + DES encryption has been used. + + + + + RCS encryption has been used for encryption. + + + + + Triple DES encryption with 168 bit keys has been used for this entry. + + + + + Triple DES with 112 bit keys has been used for this entry. + + + + + AES 128 has been used for encryption. + + + + + AES 192 has been used for encryption. + + + + + AES 256 has been used for encryption. + + + + + RC2 corrected has been used for encryption. + + + + + Blowfish has been used for encryption. + + + + + Twofish has been used for encryption. + + + + + RC4 has been used for encryption. + + + + + An unknown algorithm has been used for encryption. + + + + + Defines the contents of the general bit flags field for an archive entry. + + + + + Bit 0 if set indicates that the file is encrypted + + + + + Bits 1 and 2 - Two bits defining the compression method (only for Method 6 Imploding and 8,9 Deflating) + + + + + Bit 3 if set indicates a trailing data desciptor is appended to the entry data + + + + + Bit 4 is reserved for use with method 8 for enhanced deflation + + + + + Bit 5 if set indicates the file contains Pkzip compressed patched data. + Requires version 2.7 or greater. + + + + + Bit 6 if set strong encryption has been used for this entry. + + + + + Bit 7 is currently unused + + + + + Bit 8 is currently unused + + + + + Bit 9 is currently unused + + + + + Bit 10 is currently unused + + + + + Bit 11 if set indicates the filename and + comment fields for this file must be encoded using UTF-8. + + + + + Bit 12 is documented as being reserved by PKware for enhanced compression. + + + + + Bit 13 if set indicates that values in the local header are masked to hide + their actual values, and the central directory is encrypted. + + + Used when encrypting the central directory contents. + + + + + Bit 14 is documented as being reserved for use by PKware + + + + + Bit 15 is documented as being reserved for use by PKware + + + + + This class contains constants used for Zip format files + + + + + The version made by field for entries in the central header when created by this library + + + This is also the Zip version for the library when comparing against the version required to extract + for an entry. + + + + + The version made by field for entries in the central header when created by this library + + + This is also the Zip version for the library when comparing against the version required to extract + for an entry. See ZipInputStream.CanDecompressEntry. + + + + + The minimum version required to support strong encryption + + + + + The minimum version required to support strong encryption + + + + + The version required for Zip64 extensions + + + + + Size of local entry header (excluding variable length fields at end) + + + + + Size of local entry header (excluding variable length fields at end) + + + + + Size of Zip64 data descriptor + + + + + Size of data descriptor + + + + + Size of data descriptor + + + + + Size of central header entry (excluding variable fields) + + + + + Size of central header entry + + + + + Size of end of central record (excluding variable fields) + + + + + Size of end of central record (excluding variable fields) + + + + + Size of 'classic' cryptographic header stored before any entry data + + + + + Size of cryptographic header stored before entry data + + + + + Signature for local entry header + + + + + Signature for local entry header + + + + + Signature for spanning entry + + + + + Signature for spanning entry + + + + + Signature for temporary spanning entry + + + + + Signature for temporary spanning entry + + + + + Signature for data descriptor + + + This is only used where the length, Crc, or compressed size isnt known when the + entry is created and the output stream doesnt support seeking. + The local entry cannot be 'patched' with the correct values in this case + so the values are recorded after the data prefixed by this header, as well as in the central directory. + + + + + Signature for data descriptor + + + This is only used where the length, Crc, or compressed size isnt known when the + entry is created and the output stream doesnt support seeking. + The local entry cannot be 'patched' with the correct values in this case + so the values are recorded after the data prefixed by this header, as well as in the central directory. + + + + + Signature for central header + + + + + Signature for central header + + + + + Signature for Zip64 central file header + + + + + Signature for Zip64 central file header + + + + + Signature for Zip64 central directory locator + + + + + Signature for archive extra data signature (were headers are encrypted). + + + + + Central header digitial signature + + + + + Central header digitial signature + + + + + End of central directory record signature + + + + + End of central directory record signature + + + + + Convert a portion of a byte array to a string. + + + Data to convert to string + + + Number of bytes to convert starting from index 0 + + + data[0]..data[length - 1] converted to a string + + + + + Convert a byte array to string + + + Byte array to convert + + + dataconverted to a string + + + + + Convert a byte array to string + + The applicable general purpose bits flags + + Byte array to convert + + The number of bytes to convert. + + dataconverted to a string + + + + + Convert a byte array to string + + + Byte array to convert + + The applicable general purpose bits flags + + dataconverted to a string + + + + + Convert a string to a byte array + + + String to convert to an array + + Converted array + + + + Convert a string to a byte array + + The applicable general purpose bits flags + + String to convert to an array + + Converted array + + + + Initialise default instance of ZipConstants + + + Private to prevent instances being created. + + + + + Default encoding used for string conversion. 0 gives the default system OEM code page. + Dont use unicode encodings if you want to be Zip compatible! + Using the default code page isnt the full solution neccessarily + there are many variable factors, codepage 850 is often a good choice for + European users, however be careful about compatability. + + + + + Strategies for deflater + + + + + The default strategy + + + + + This strategy will only allow longer string repetitions. It is + useful for random data with a small character set. + + + + + This strategy will not look for string repetitions at all. It + only encodes with Huffman trees (which means, that more common + characters get a smaller encoding. + + + + + Low level compression engine for deflate algorithm which uses a 32K sliding window + with secondary compression from Huffman/Shannon-Fano codes. + + + + + Construct instance with pending buffer + + + Pending buffer to use + > + + + + Deflate drives actual compression of data + + True to flush input buffers + Finish deflation with the current input. + Returns true if progress has been made. + + + + Sets input data to be deflated. Should only be called when NeedsInput() + returns true + + The buffer containing input data. + The offset of the first byte of data. + The number of bytes of data to use as input. + + + + Determines if more input is needed. + + Return true if input is needed via SetInput + + + + Set compression dictionary + + The buffer containing the dictionary data + The offset in the buffer for the first byte of data + The length of the dictionary data. + + + + Reset internal state + + + + + Reset Adler checksum + + + + + Set the deflate level (0-9) + + The value to set the level to. + + + + Fill the window + + + + + Inserts the current string in the head hash and returns the previous + value for this hash. + + The previous hash value + + + + Find the best (longest) string in the window matching the + string starting at strstart. + + Preconditions: + + strstart + MAX_MATCH <= window.length. + + + True if a match greater than the minimum length is found + + + + Hashtable, hashing three characters to an index for window, so + that window[index]..window[index+2] have this hash code. + Note that the array should really be unsigned short, so you need + to and the values with 0xffff. + + + + + prev[index & WMASK] points to the previous index that has the + same hash code as the string starting at index. This way + entries with the same hash code are in a linked list. + Note that the array should really be unsigned short, so you need + to and the values with 0xffff. + + + + + Points to the current character in the window. + + + + + lookahead is the number of characters starting at strstart in + window that are valid. + So window[strstart] until window[strstart+lookahead-1] are valid + characters. + + + + + This array contains the part of the uncompressed stream that + is of relevance. The current character is indexed by strstart. + + + + + The current compression function. + + + + + The input data for compression. + + + + + The total bytes of input read. + + + + + The offset into inputBuf, where input data starts. + + + + + The end offset of the input data. + + + + + The adler checksum + + + + + Get current value of Adler checksum + + + + + Total data processed + + + + + Get/set the deflate strategy + + + + + Logs internal messages + + + + + Logs the message at level Debug + + Message to log + + + + Logs the message at level Debug + + Message to log + Exception to log + + + + Logs the message at level info + + Message to log + + + + Logs the message at level info + + Message to log + Exception to log + + + + Logs the message at level Warn + + Message to log + + + + Logs the message at level Warn + + Message to log + Exception to log + + + + Logs the message at level Error + + Message to log + + + + Logs the message at level Error + + Message to log + Exception to log + + + + Logs the message at level Fatal + + Message to log + + + + Logs the message at level Fatal + + Message to log + Exception to log + + + + Logs the message at the given level + + Message to log + Level to log + + + + The loglevel that is currently used (default = warn) + + + + + Loglevel + + + + Logs debug messages + + + Logs info messages + + + Logs warn messages + + + Logs error messages + + + Logs fatal messages + + + + An actor poster + * Actor images must be 300px x 450px and must fill the entire image. Do not add black bars to the sides to get it to that size. + * Actor images must be smaller than 100kb + * Low quality images should not be scaled up to fit the resolution. Use only high quality art. + * Actor images should show the actor in that particular role, wearing the clothes/makeup they'd wear on the series. Unless it's a cartoon, in which case just a normal picture of the voice actor will do. + * Try to shy away from full body shots. Ideally include some upper body but don't go to far past the waist. + * No nudity, even if the actor is playing the role of a striper who is almost always nude, the images must be family safe. + + + + + Class that holds all user information + + + + + TvdbUser constructor + + Name of the user, can be choosen freely + User identifier from http://thetvdb.com + + + + TvdbUser constructor + + + + + Preferred language of the user + + + + + This is the unique identifier assigned to every user. They can access this value by visiting the account settings page on the site. This is a 16 character alphanumeric string, but you should program your applications to handle id strings up to 32 characters in length. + + + + + Username + + + + + List of user favorites + + + + + This class allows us to retrieve a specified number of bits from + the input buffer, as well as copy big byte blocks. + + It uses an int buffer to store up to 31 bits for direct + manipulation. This guarantees that we can get at least 16 bits, + but we only need at most 15, so this is all safe. + + There are some optimizations in this class, for example, you must + never peek more than 8 bits more than needed, and you must first + peek bits before you may drop them. This is not a general purpose + class but optimized for the behaviour of the Inflater. + + authors of the original java version : John Leuner, Jochen Hoenicke + + + + + Constructs a default StreamManipulator with all buffers empty + + + + + Get the next sequence of bits but don't increase input pointer. bitCount must be + less or equal 16 and if this call succeeds, you must drop + at least n - 8 bits in the next call. + + The number of bits to peek. + + the value of the bits, or -1 if not enough bits available. */ + + + + + Drops the next n bits from the input. You should have called PeekBits + with a bigger or equal n before, to make sure that enough bits are in + the bit buffer. + + The number of bits to drop. + + + + Gets the next n bits and increases input pointer. This is equivalent + to followed by , except for correct error handling. + + The number of bits to retrieve. + + the value of the bits, or -1 if not enough bits available. + + + + + Skips to the next byte boundary. + + + + + Copies bytes from input buffer to output buffer starting + at output[offset]. You have to make sure, that the buffer is + byte aligned. If not enough bytes are available, copies fewer + bytes. + + + The buffer to copy bytes to. + + + The offset in the buffer at which copying starts + + + The length to copy, 0 is allowed. + + + The number of bytes copied, 0 if no bytes were available. + + + Length is less than zero + + + Bit buffer isnt byte aligned + + + + + Resets state and empties internal buffers + + + + + Add more input for consumption. + Only call when IsNeedingInput returns true + + data to be input + offset of first byte of input + number of bytes of input to add. + + + + Gets the number of bits available in the bit buffer. This must be + only called when a previous PeekBits() returned -1. + + + the number of bits available. + + + + + Gets the number of bytes available. + + + The number of bytes available. + + + + + Returns true when SetInput can be called + + + + + Season bannners for each season of a series come in poster format (400 x 578) and wide format(758 x 140) + - Wide format: http://thetvdb.com/wiki/index.php/Wide_Season_Banners + - Poster format: http://thetvdb.com/wiki/index.php/Season_Banners + + + + + Season of the banner + + + + + Type of the banner + + + + + Type of the season banner + + + + + Season banner (poster format) + + + + + Wide season banner (banner format) + + + + + no format specified + + + + + Compare episodes according to their default episode numbers (aired) + + + + + Compare episodes according to their dvd episode number + + + + + Compare episodes according to their absolute episode number + + + + diff --git a/NzbDrone.Web/Bin/log4net.dll b/NzbDrone.Web/Bin/log4net.dll new file mode 100644 index 0000000000000000000000000000000000000000..ffc57e11254ad9530867b35d15aaf38eb4747d8d GIT binary patch literal 270336 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 tags that are the +first child of the left and right table columns */ +.rightColumn > h1, .rightColumn > h2, .leftColumn > h1, .leftColumn > h2 +{ + margin-top: 0; +} + +/* PRIMARY LAYOUT ELEMENTS +----------------------------------------------------------*/ + +/* you can specify a greater or lesser percentage for the +page width. Or, you can specify an exact pixel width. */ +.page +{ + width: 90%; + margin-left: auto; + margin-right: auto; +} + +#header +{ + position: relative; + margin-bottom: 0px; + color: #000; + padding: 0; + top: 0px; + left: 0px; +} + +#header h1 +{ + font-weight: bold; + padding: 5px 0; + margin: 0; + color: #fff; + border: none; + line-height: 2em; + font-family: Arial, Helvetica, sans-serif; + font-size: 32px !important; +} + +#main +{ + padding: 30px 30px 15px 30px; + background-color: #fff; + margin-bottom: 30px; + _height: 1px; /* only IE6 applies CSS properties starting with an underscore */ +} + +#footer +{ + color: #999; + padding: 10px 0; + text-align: center; + line-height: normal; + margin: 0; + font-size: .9em; +} + +/* TAB MENU +----------------------------------------------------------*/ +ul#menu +{ + border-bottom: 0px #FFC200 solid; + padding: 0 0 2px; + position: relative; + margin: 0; + text-align: right; +} + +ul#menu li +{ + display: inline; + list-style: none; +} + +ul#menu li#greeting +{ + padding: 10px 20px; + font-weight: bold; + text-decoration: none; + line-height: 2.8em; + color: #fff; +} + +ul#menu li a +{ + padding: 10px 20px; + font-weight: bold; + text-decoration: none; + line-height: 2.8em; + background-color: #fff; + color: #FFC200; +} + +ul#menu li a:hover +{ + background-color: #FFC200; + color : #fff; + border: 1px solid #fff; + border-bottom: #FFC200; + text-decoration: none; +} + +ul#menu li a:active +{ + background-color: #FF5B00; + text-decoration: none; +} + +ul#menu li.selected a +{ + background-color: #fff; + color: #000; +} + +/* FORM LAYOUT ELEMENTS +----------------------------------------------------------*/ + +fieldset +{ + margin: 1em 0; + padding: 1em; + border: 1px solid #CCC; +} + +fieldset p +{ + margin: 2px 12px 10px 10px; +} + +legend +{ + font-size: 1.1em; + font-weight: 600; + padding: 2px 4px 8px 4px; +} + +input[type="text"] +{ + width: 200px; + border: 1px solid #CCC; +} + +input[type="password"] +{ + width: 200px; + border: 1px solid #CCC; +} + +/* TABLE +----------------------------------------------------------*/ + +table +{ + border: solid 1px #4AC0F2; + border-collapse: collapse; +} + +table td +{ + padding: 5px; + border: solid 1px #4AC0F2; +} + +table th +{ + padding: 6px 5px; + text-align: left; + background-color: #4AC0F2; + border: solid 1px #4AC0F2; +} + +/* MISC +----------------------------------------------------------*/ +.clear +{ + clear: both; +} + +.error +{ + color:Red; +} + +#menucontainer +{ + margin-top:40px; +} + +div#title +{ + display:block; + float:left; + text-align:left; +} + +#logindisplay +{ + font-size:1.1em; + display:block; + text-align:right; + margin:10px; + color:White; +} + +#logindisplay a:link +{ + color: white; + text-decoration: underline; +} + +#logindisplay a:visited +{ + color: white; + text-decoration: underline; +} + +#logindisplay a:hover +{ + color: white; + text-decoration: none; +} + +/* Styles for validation helpers +-----------------------------------------------------------*/ +.field-validation-error +{ + color: #ff0000; +} + +.field-validation-valid +{ + display: none; +} + +.input-validation-error +{ + border: 1px solid #ff0000; + background-color: #ffeeee; +} + +.validation-summary-errors +{ + font-weight: bold; + color: #ff0000; +} + +.validation-summary-valid +{ + display: none; +} + +/* Styles for editor and display helpers +----------------------------------------------------------*/ +.display-label, +.editor-label, +.display-field, +.editor-field +{ + margin: 0.5em 0; +} + +.text-box +{ + width: 30em; +} + +.text-box.multi-line +{ + height: 6.5em; +} + +.tri-state +{ + width: 6em; +} diff --git a/NzbDrone.Web/Controllers/AccountController.cs b/NzbDrone.Web/Controllers/AccountController.cs new file mode 100644 index 000000000..919051300 --- /dev/null +++ b/NzbDrone.Web/Controllers/AccountController.cs @@ -0,0 +1,153 @@ +using System; +using System.Collections.Generic; +using System.Diagnostics.CodeAnalysis; +using System.Linq; +using System.Security.Principal; +using System.Web; +using System.Web.Mvc; +using System.Web.Routing; +using System.Web.Security; +using NzbDrone.Web.Models; + +namespace NzbDrone.Web.Controllers +{ + + [HandleError] + public class AccountController : Controller + { + + public IFormsAuthenticationService FormsService { get; set; } + public IMembershipService MembershipService { get; set; } + + protected override void Initialize(RequestContext requestContext) + { + if (FormsService == null) { FormsService = new FormsAuthenticationService(); } + if (MembershipService == null) { MembershipService = new AccountMembershipService(); } + + base.Initialize(requestContext); + } + + // ************************************** + // URL: /Account/LogOn + // ************************************** + + public ActionResult LogOn() + { + return View(); + } + + [HttpPost] + public ActionResult LogOn(LogOnModel model, string returnUrl) + { + if (ModelState.IsValid) + { + if (MembershipService.ValidateUser(model.UserName, model.Password)) + { + FormsService.SignIn(model.UserName, model.RememberMe); + if (!String.IsNullOrEmpty(returnUrl)) + { + return Redirect(returnUrl); + } + else + { + return RedirectToAction("Index", "Home"); + } + } + else + { + ModelState.AddModelError("", "The user name or password provided is incorrect."); + } + } + + // If we got this far, something failed, redisplay form + return View(model); + } + + // ************************************** + // URL: /Account/LogOff + // ************************************** + + public ActionResult LogOff() + { + FormsService.SignOut(); + + return RedirectToAction("Index", "Home"); + } + + // ************************************** + // URL: /Account/Register + // ************************************** + + public ActionResult Register() + { + ViewData["PasswordLength"] = MembershipService.MinPasswordLength; + return View(); + } + + [HttpPost] + public ActionResult Register(RegisterModel model) + { + if (ModelState.IsValid) + { + // Attempt to register the user + MembershipCreateStatus createStatus = MembershipService.CreateUser(model.UserName, model.Password, model.Email); + + if (createStatus == MembershipCreateStatus.Success) + { + FormsService.SignIn(model.UserName, false /* createPersistentCookie */); + return RedirectToAction("Index", "Home"); + } + else + { + ModelState.AddModelError("", AccountValidation.ErrorCodeToString(createStatus)); + } + } + + // If we got this far, something failed, redisplay form + ViewData["PasswordLength"] = MembershipService.MinPasswordLength; + return View(model); + } + + // ************************************** + // URL: /Account/ChangePassword + // ************************************** + + [Authorize] + public ActionResult ChangePassword() + { + ViewData["PasswordLength"] = MembershipService.MinPasswordLength; + return View(); + } + + [Authorize] + [HttpPost] + public ActionResult ChangePassword(ChangePasswordModel model) + { + if (ModelState.IsValid) + { + if (MembershipService.ChangePassword(User.Identity.Name, model.OldPassword, model.NewPassword)) + { + return RedirectToAction("ChangePasswordSuccess"); + } + else + { + ModelState.AddModelError("", "The current password is incorrect or the new password is invalid."); + } + } + + // If we got this far, something failed, redisplay form + ViewData["PasswordLength"] = MembershipService.MinPasswordLength; + return View(model); + } + + // ************************************** + // URL: /Account/ChangePasswordSuccess + // ************************************** + + public ActionResult ChangePasswordSuccess() + { + return View(); + } + + } +} diff --git a/NzbDrone.Web/Controllers/HomeController.cs b/NzbDrone.Web/Controllers/HomeController.cs new file mode 100644 index 000000000..cd8cedf4a --- /dev/null +++ b/NzbDrone.Web/Controllers/HomeController.cs @@ -0,0 +1,24 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; +using System.Web.Mvc; + +namespace NzbDrone.Web.Controllers +{ + [HandleError] + public class HomeController : Controller + { + public ActionResult Index() + { + ViewData["Message"] = "Welcome to ASP.NET MVC!"; + + return View(); + } + + public ActionResult About() + { + return View(); + } + } +} diff --git a/NzbDrone.Web/Controllers/SeriesController.cs b/NzbDrone.Web/Controllers/SeriesController.cs new file mode 100644 index 000000000..35b2d2eff --- /dev/null +++ b/NzbDrone.Web/Controllers/SeriesController.cs @@ -0,0 +1,121 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; +using System.Web.Mvc; +using NzbDrone.Core.Controllers; + +namespace NzbDrone.Web.Controllers +{ + public class SeriesController : Controller + { + private readonly ISeriesController _seriesController; + // + // GET: /Series/ + + public SeriesController(ISeriesController seriesController) + { + _seriesController = seriesController; + } + + public ActionResult Index() + { + ViewData.Model = _seriesController.GetSeries().ToList(); + return View(); + } + + + public ActionResult Sync() + { + _seriesController.SyncSeriesWithDisk(); + return RedirectToAction("Index"); + } + + + // + // GET: /Series/Details/5 + + public ActionResult Details(int id) + { + return View(); + } + + // + // GET: /Series/Create + + public ActionResult Create() + { + return View(); + } + + // + // POST: /Series/Create + + [HttpPost] + public ActionResult Create(FormCollection collection) + { + try + { + // TODO: Add insert logic here + + return RedirectToAction("Index"); + } + catch + { + return View(); + } + } + + // + // GET: /Series/Edit/5 + + public ActionResult Edit(int id) + { + return View(); + } + + // + // POST: /Series/Edit/5 + + [HttpPost] + public ActionResult Edit(int id, FormCollection collection) + { + try + { + // TODO: Add update logic here + + return RedirectToAction("Index"); + } + catch + { + return View(); + } + } + + // + // GET: /Series/Delete/5 + + public ActionResult Delete(int id) + { + return View(); + } + + // + // POST: /Series/Delete/5 + + [HttpPost] + public ActionResult Delete(int id, FormCollection collection) + { + try + { + // TODO: Add delete logic here + + return RedirectToAction("Index"); + } + catch + { + return View(); + } + } + } +} diff --git a/NzbDrone.Web/Controllers/SettingsController.cs b/NzbDrone.Web/Controllers/SettingsController.cs new file mode 100644 index 000000000..d3155ee28 --- /dev/null +++ b/NzbDrone.Web/Controllers/SettingsController.cs @@ -0,0 +1,20 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; +using System.Web.Mvc; + +namespace NzbDrone.Web.Controllers +{ + public class SettingsController : Controller + { + // + // GET: /Settings/ + + public ActionResult Index() + { + return View(); + } + + } +} diff --git a/NzbDrone.Web/Global.asax b/NzbDrone.Web/Global.asax new file mode 100644 index 000000000..bd44f52fd --- /dev/null +++ b/NzbDrone.Web/Global.asax @@ -0,0 +1 @@ +<%@ Application Codebehind="Global.asax.cs" Inherits="NzbDrone.Web.MvcApplication" Language="C#" %> diff --git a/NzbDrone.Web/Global.asax.cs b/NzbDrone.Web/Global.asax.cs new file mode 100644 index 000000000..72071c47b --- /dev/null +++ b/NzbDrone.Web/Global.asax.cs @@ -0,0 +1,48 @@ +using System.Web.Mvc; +using System.Web.Routing; +using log4net; +using Ninject; +using Ninject.Web.Mvc; +using NzbDrone.Core; + + +namespace NzbDrone.Web +{ + // Note: For instructions on enabling IIS6 or IIS7 classic mode, + // visit http://go.microsoft.com/?LinkId=9394801 + + public class MvcApplication : NinjectHttpApplication + { + private StandardKernel _kernel; + + public static void RegisterRoutes(RouteCollection routes) + { + routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); + routes.IgnoreRoute("{*robotstxt}", new { robotstxt = @"(.*/)?robots.txt(/.*)?" }); + routes.IgnoreRoute("{*favicon}", new { favicon = @"(.*/)?favicon.ico(/.*)?" }); + + routes.MapRoute( + "Default", // Route name + "{controller}/{action}/{id}", // URL with parameters + new { controller = "Series", action = "Index", id = UrlParameter.Optional } // Parameter defaults + ); + + } + + protected override void OnApplicationStarted() + { + AreaRegistration.RegisterAllAreas(); + RegisterRoutes(RouteTable.Routes); + base.OnApplicationStarted(); + } + + protected override IKernel CreateKernel() + { + _kernel = new StandardKernel(); + Main.BindKernel(_kernel); + return _kernel; + } + + + } +} \ No newline at end of file diff --git a/NzbDrone.Web/Models/AccountModels.cs b/NzbDrone.Web/Models/AccountModels.cs new file mode 100644 index 000000000..ff223d20d --- /dev/null +++ b/NzbDrone.Web/Models/AccountModels.cs @@ -0,0 +1,283 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.ComponentModel.DataAnnotations; +using System.Globalization; +using System.Linq; +using System.Web; +using System.Web.Mvc; +using System.Web.Security; + +namespace NzbDrone.Web.Models +{ + + #region Models + [PropertiesMustMatch("NewPassword", "ConfirmPassword", ErrorMessage = "The new password and confirmation password do not match.")] + public class ChangePasswordModel + { + [Required] + [DataType(DataType.Password)] + [DisplayName("Current password")] + public string OldPassword { get; set; } + + [Required] + [ValidatePasswordLength] + [DataType(DataType.Password)] + [DisplayName("New password")] + public string NewPassword { get; set; } + + [Required] + [DataType(DataType.Password)] + [DisplayName("Confirm new password")] + public string ConfirmPassword { get; set; } + } + + public class LogOnModel + { + [Required] + [DisplayName("User name")] + public string UserName { get; set; } + + [Required] + [DataType(DataType.Password)] + [DisplayName("Password")] + public string Password { get; set; } + + [DisplayName("Remember me?")] + public bool RememberMe { get; set; } + } + + [PropertiesMustMatch("Password", "ConfirmPassword", ErrorMessage = "The password and confirmation password do not match.")] + public class RegisterModel + { + [Required] + [DisplayName("User name")] + public string UserName { get; set; } + + [Required] + [DataType(DataType.EmailAddress)] + [DisplayName("Email address")] + public string Email { get; set; } + + [Required] + [ValidatePasswordLength] + [DataType(DataType.Password)] + [DisplayName("Password")] + public string Password { get; set; } + + [Required] + [DataType(DataType.Password)] + [DisplayName("Confirm password")] + public string ConfirmPassword { get; set; } + } + #endregion + + #region Services + // The FormsAuthentication type is sealed and contains static members, so it is difficult to + // unit test code that calls its members. The interface and helper class below demonstrate + // how to create an abstract wrapper around such a type in order to make the AccountController + // code unit testable. + + public interface IMembershipService + { + int MinPasswordLength { get; } + + bool ValidateUser(string userName, string password); + MembershipCreateStatus CreateUser(string userName, string password, string email); + bool ChangePassword(string userName, string oldPassword, string newPassword); + } + + public class AccountMembershipService : IMembershipService + { + private readonly MembershipProvider _provider; + + public AccountMembershipService() + : this(null) + { + } + + public AccountMembershipService(MembershipProvider provider) + { + _provider = provider ?? Membership.Provider; + } + + public int MinPasswordLength + { + get + { + return _provider.MinRequiredPasswordLength; + } + } + + public bool ValidateUser(string userName, string password) + { + if (String.IsNullOrEmpty(userName)) throw new ArgumentException("Value cannot be null or empty.", "userName"); + if (String.IsNullOrEmpty(password)) throw new ArgumentException("Value cannot be null or empty.", "password"); + + return _provider.ValidateUser(userName, password); + } + + public MembershipCreateStatus CreateUser(string userName, string password, string email) + { + if (String.IsNullOrEmpty(userName)) throw new ArgumentException("Value cannot be null or empty.", "userName"); + if (String.IsNullOrEmpty(password)) throw new ArgumentException("Value cannot be null or empty.", "password"); + if (String.IsNullOrEmpty(email)) throw new ArgumentException("Value cannot be null or empty.", "email"); + + MembershipCreateStatus status; + _provider.CreateUser(userName, password, email, null, null, true, null, out status); + return status; + } + + public bool ChangePassword(string userName, string oldPassword, string newPassword) + { + if (String.IsNullOrEmpty(userName)) throw new ArgumentException("Value cannot be null or empty.", "userName"); + if (String.IsNullOrEmpty(oldPassword)) throw new ArgumentException("Value cannot be null or empty.", "oldPassword"); + if (String.IsNullOrEmpty(newPassword)) throw new ArgumentException("Value cannot be null or empty.", "newPassword"); + + // The underlying ChangePassword() will throw an exception rather + // than return false in certain failure scenarios. + try + { + MembershipUser currentUser = _provider.GetUser(userName, true /* userIsOnline */); + return currentUser.ChangePassword(oldPassword, newPassword); + } + catch (ArgumentException) + { + return false; + } + catch (MembershipPasswordException) + { + return false; + } + } + } + + public interface IFormsAuthenticationService + { + void SignIn(string userName, bool createPersistentCookie); + void SignOut(); + } + + public class FormsAuthenticationService : IFormsAuthenticationService + { + public void SignIn(string userName, bool createPersistentCookie) + { + if (String.IsNullOrEmpty(userName)) throw new ArgumentException("Value cannot be null or empty.", "userName"); + + FormsAuthentication.SetAuthCookie(userName, createPersistentCookie); + } + + public void SignOut() + { + FormsAuthentication.SignOut(); + } + } + #endregion + + #region Validation + public static class AccountValidation + { + public static string ErrorCodeToString(MembershipCreateStatus createStatus) + { + // See http://go.microsoft.com/fwlink/?LinkID=177550 for + // a full list of status codes. + switch (createStatus) + { + case MembershipCreateStatus.DuplicateUserName: + return "Username already exists. Please enter a different user name."; + + case MembershipCreateStatus.DuplicateEmail: + return "A username for that e-mail address already exists. Please enter a different e-mail address."; + + case MembershipCreateStatus.InvalidPassword: + return "The password provided is invalid. Please enter a valid password value."; + + case MembershipCreateStatus.InvalidEmail: + return "The e-mail address provided is invalid. Please check the value and try again."; + + case MembershipCreateStatus.InvalidAnswer: + return "The password retrieval answer provided is invalid. Please check the value and try again."; + + case MembershipCreateStatus.InvalidQuestion: + return "The password retrieval question provided is invalid. Please check the value and try again."; + + case MembershipCreateStatus.InvalidUserName: + return "The user name provided is invalid. Please check the value and try again."; + + case MembershipCreateStatus.ProviderError: + return "The authentication provider returned an error. Please verify your entry and try again. If the problem persists, please contact your system administrator."; + + case MembershipCreateStatus.UserRejected: + return "The user creation request has been canceled. Please verify your entry and try again. If the problem persists, please contact your system administrator."; + + default: + return "An unknown error occurred. Please verify your entry and try again. If the problem persists, please contact your system administrator."; + } + } + } + + [AttributeUsage(AttributeTargets.Class, AllowMultiple = true, Inherited = true)] + public sealed class PropertiesMustMatchAttribute : ValidationAttribute + { + private const string _defaultErrorMessage = "'{0}' and '{1}' do not match."; + private readonly object _typeId = new object(); + + public PropertiesMustMatchAttribute(string originalProperty, string confirmProperty) + : base(_defaultErrorMessage) + { + OriginalProperty = originalProperty; + ConfirmProperty = confirmProperty; + } + + public string ConfirmProperty { get; private set; } + public string OriginalProperty { get; private set; } + + public override object TypeId + { + get + { + return _typeId; + } + } + + public override string FormatErrorMessage(string name) + { + return String.Format(CultureInfo.CurrentUICulture, ErrorMessageString, + OriginalProperty, ConfirmProperty); + } + + public override bool IsValid(object value) + { + PropertyDescriptorCollection properties = TypeDescriptor.GetProperties(value); + object originalValue = properties.Find(OriginalProperty, true /* ignoreCase */).GetValue(value); + object confirmValue = properties.Find(ConfirmProperty, true /* ignoreCase */).GetValue(value); + return Object.Equals(originalValue, confirmValue); + } + } + + [AttributeUsage(AttributeTargets.Field | AttributeTargets.Property, AllowMultiple = false, Inherited = true)] + public sealed class ValidatePasswordLengthAttribute : ValidationAttribute + { + private const string _defaultErrorMessage = "'{0}' must be at least {1} characters long."; + private readonly int _minCharacters = Membership.Provider.MinRequiredPasswordLength; + + public ValidatePasswordLengthAttribute() + : base(_defaultErrorMessage) + { + } + + public override string FormatErrorMessage(string name) + { + return String.Format(CultureInfo.CurrentUICulture, ErrorMessageString, + name, _minCharacters); + } + + public override bool IsValid(object value) + { + string valueAsString = value as string; + return (valueAsString != null && valueAsString.Length >= _minCharacters); + } + } + #endregion + +} diff --git a/NzbDrone.Web/Models/SettingsModels.cs b/NzbDrone.Web/Models/SettingsModels.cs new file mode 100644 index 000000000..409e08832 --- /dev/null +++ b/NzbDrone.Web/Models/SettingsModels.cs @@ -0,0 +1,75 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.ComponentModel.DataAnnotations; +using System.Globalization; +using System.Linq; +using System.Web; +using System.Web.Mvc; +using System.Web.Security; + +namespace NzbDrone.Web.Models +{ + + #region Models + [PropertiesMustMatch("NewPassword", "ConfirmPassword", ErrorMessage = "The new password and confirmation password do not match.")] + public class ChangePasswordModel1 + { + [Required] + [DataType(DataType.Password)] + [DisplayName("Current password")] + public string OldPassword { get; set; } + + [Required] + [ValidatePasswordLength] + [DataType(DataType.Password)] + [DisplayName("New password")] + public string NewPassword { get; set; } + + [Required] + [DataType(DataType.Password)] + [DisplayName("Confirm new password")] + public string ConfirmPassword { get; set; } + } + + public class LogOnModel1 + { + [Required] + [DisplayName("User name")] + public string UserName { get; set; } + + [Required] + [DataType(DataType.Password)] + [DisplayName("Password")] + public string Password { get; set; } + + [DisplayName("Remember me?")] + public bool RememberMe { get; set; } + } + + [PropertiesMustMatch("Password", "ConfirmPassword", ErrorMessage = "The password and confirmation password do not match.")] + public class RegisterModel1 + { + [Required] + [DisplayName("User name")] + public string UserName { get; set; } + + [Required] + [DataType(DataType.EmailAddress)] + [DisplayName("Email address")] + public string Email { get; set; } + + [Required] + [ValidatePasswordLength] + [DataType(DataType.Password)] + [DisplayName("Password")] + public string Password { get; set; } + + [Required] + [DataType(DataType.Password)] + [DisplayName("Confirm password")] + public string ConfirmPassword { get; set; } + } + #endregion + +} diff --git a/NzbDrone.Web/NzbDrone.Web.csproj b/NzbDrone.Web/NzbDrone.Web.csproj new file mode 100644 index 000000000..4e9e79a28 --- /dev/null +++ b/NzbDrone.Web/NzbDrone.Web.csproj @@ -0,0 +1,155 @@ + + + + Debug + AnyCPU + + + 2.0 + {43BD3BBD-1531-4D8F-9C08-E1CD544AB2CD} + {F85E285D-A4E0-4152-9332-AB1D724D3325};{349c5851-65df-11da-9384-00065b846f21};{fae04ec0-301f-11d3-bf4b-00c04f79efbc} + Library + Properties + NzbDrone.Web + NzbDrone.Web + v3.5 + true + + + + true + full + false + bin\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\ + TRACE + prompt + 4 + + + + False + ..\SABSync\References\log4net.dll + + + False + ..\NzbDrone.Core\Libraries\Ninject.dll + + + False + ..\NzbDrone.Core\Libraries\Ninject.Web.Mvc.dll + + + + + + + + + 3.5 + + + + + + + + + + + + + + + + + + + Global.asax + + + + + + + + + + Designer + + + Web.config + + + Web.config + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {FF5EE3B6-913B-47CE-9CEB-11C51B4E1205} + NzbDrone.Core + + + + + + + + + + + + + False + True + 21704 + / + + + False + False + + + False + + + + + \ No newline at end of file diff --git a/NzbDrone.Web/Properties/AssemblyInfo.cs b/NzbDrone.Web/Properties/AssemblyInfo.cs new file mode 100644 index 000000000..903244f3d --- /dev/null +++ b/NzbDrone.Web/Properties/AssemblyInfo.cs @@ -0,0 +1,35 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// 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("NzbDrone.Web")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("Microsoft")] +[assembly: AssemblyProduct("NzbDrone.Web")] +[assembly: AssemblyCopyright("Copyright © Microsoft 2010")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("1ec2c814-7c1e-470d-bbae-59b129b720fd")] + +// 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.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/NzbDrone.Web/Scripts/MicrosoftAjax.debug.js b/NzbDrone.Web/Scripts/MicrosoftAjax.debug.js new file mode 100644 index 000000000..a5f7942ef --- /dev/null +++ b/NzbDrone.Web/Scripts/MicrosoftAjax.debug.js @@ -0,0 +1,7117 @@ +// Name: MicrosoftAjax.debug.js +// Assembly: System.Web.Extensions +// Version: 4.0.0.0 +// FileVersion: 4.0.20526.0 +//----------------------------------------------------------------------- +// Copyright (C) Microsoft Corporation. All rights reserved. +//----------------------------------------------------------------------- +// MicrosoftAjax.js +// Microsoft AJAX Framework. + +Function.__typeName = 'Function'; +Function.__class = true; +Function.createCallback = function Function$createCallback(method, context) { + /// + /// + /// + /// + var e = Function._validateParams(arguments, [ + {name: "method", type: Function}, + {name: "context", mayBeNull: true} + ]); + if (e) throw e; + return function() { + var l = arguments.length; + if (l > 0) { + var args = []; + for (var i = 0; i < l; i++) { + args[i] = arguments[i]; + } + args[l] = context; + return method.apply(this, args); + } + return method.call(this, context); + } +} +Function.createDelegate = function Function$createDelegate(instance, method) { + /// + /// + /// + /// + var e = Function._validateParams(arguments, [ + {name: "instance", mayBeNull: true}, + {name: "method", type: Function} + ]); + if (e) throw e; + return function() { + return method.apply(instance, arguments); + } +} +Function.emptyFunction = Function.emptyMethod = function Function$emptyMethod() { + /// +} +Function.validateParameters = function Function$validateParameters(parameters, expectedParameters, validateParameterCount) { + /// + /// + /// + /// + /// + var e = Function._validateParams(arguments, [ + {name: "parameters"}, + {name: "expectedParameters"}, + {name: "validateParameterCount", type: Boolean, optional: true} + ]); + if (e) throw e; + return Function._validateParams(parameters, expectedParameters, validateParameterCount); +} +Function._validateParams = function Function$_validateParams(params, expectedParams, validateParameterCount) { + var e, expectedLength = expectedParams.length; + validateParameterCount = validateParameterCount || (typeof(validateParameterCount) === "undefined"); + e = Function._validateParameterCount(params, expectedParams, validateParameterCount); + if (e) { + e.popStackFrame(); + return e; + } + for (var i = 0, l = params.length; i < l; i++) { + var expectedParam = expectedParams[Math.min(i, expectedLength - 1)], + paramName = expectedParam.name; + if (expectedParam.parameterArray) { + paramName += "[" + (i - expectedLength + 1) + "]"; + } + else if (!validateParameterCount && (i >= expectedLength)) { + break; + } + e = Function._validateParameter(params[i], expectedParam, paramName); + if (e) { + e.popStackFrame(); + return e; + } + } + return null; +} +Function._validateParameterCount = function Function$_validateParameterCount(params, expectedParams, validateParameterCount) { + var i, error, + expectedLen = expectedParams.length, + actualLen = params.length; + if (actualLen < expectedLen) { + var minParams = expectedLen; + for (i = 0; i < expectedLen; i++) { + var param = expectedParams[i]; + if (param.optional || param.parameterArray) { + minParams--; + } + } + if (actualLen < minParams) { + error = true; + } + } + else if (validateParameterCount && (actualLen > expectedLen)) { + error = true; + for (i = 0; i < expectedLen; i++) { + if (expectedParams[i].parameterArray) { + error = false; + break; + } + } + } + if (error) { + var e = Error.parameterCount(); + e.popStackFrame(); + return e; + } + return null; +} +Function._validateParameter = function Function$_validateParameter(param, expectedParam, paramName) { + var e, + expectedType = expectedParam.type, + expectedInteger = !!expectedParam.integer, + expectedDomElement = !!expectedParam.domElement, + mayBeNull = !!expectedParam.mayBeNull; + e = Function._validateParameterType(param, expectedType, expectedInteger, expectedDomElement, mayBeNull, paramName); + if (e) { + e.popStackFrame(); + return e; + } + var expectedElementType = expectedParam.elementType, + elementMayBeNull = !!expectedParam.elementMayBeNull; + if (expectedType === Array && typeof(param) !== "undefined" && param !== null && + (expectedElementType || !elementMayBeNull)) { + var expectedElementInteger = !!expectedParam.elementInteger, + expectedElementDomElement = !!expectedParam.elementDomElement; + for (var i=0; i < param.length; i++) { + var elem = param[i]; + e = Function._validateParameterType(elem, expectedElementType, + expectedElementInteger, expectedElementDomElement, elementMayBeNull, + paramName + "[" + i + "]"); + if (e) { + e.popStackFrame(); + return e; + } + } + } + return null; +} +Function._validateParameterType = function Function$_validateParameterType(param, expectedType, expectedInteger, expectedDomElement, mayBeNull, paramName) { + var e, i; + if (typeof(param) === "undefined") { + if (mayBeNull) { + return null; + } + else { + e = Error.argumentUndefined(paramName); + e.popStackFrame(); + return e; + } + } + if (param === null) { + if (mayBeNull) { + return null; + } + else { + e = Error.argumentNull(paramName); + e.popStackFrame(); + return e; + } + } + if (expectedType && expectedType.__enum) { + if (typeof(param) !== 'number') { + e = Error.argumentType(paramName, Object.getType(param), expectedType); + e.popStackFrame(); + return e; + } + if ((param % 1) === 0) { + var values = expectedType.prototype; + if (!expectedType.__flags || (param === 0)) { + for (i in values) { + if (values[i] === param) return null; + } + } + else { + var v = param; + for (i in values) { + var vali = values[i]; + if (vali === 0) continue; + if ((vali & param) === vali) { + v -= vali; + } + if (v === 0) return null; + } + } + } + e = Error.argumentOutOfRange(paramName, param, String.format(Sys.Res.enumInvalidValue, param, expectedType.getName())); + e.popStackFrame(); + return e; + } + if (expectedDomElement && (!Sys._isDomElement(param) || (param.nodeType === 3))) { + e = Error.argument(paramName, Sys.Res.argumentDomElement); + e.popStackFrame(); + return e; + } + if (expectedType && !Sys._isInstanceOfType(expectedType, param)) { + e = Error.argumentType(paramName, Object.getType(param), expectedType); + e.popStackFrame(); + return e; + } + if (expectedType === Number && expectedInteger) { + if ((param % 1) !== 0) { + e = Error.argumentOutOfRange(paramName, param, Sys.Res.argumentInteger); + e.popStackFrame(); + return e; + } + } + return null; +} + +Error.__typeName = 'Error'; +Error.__class = true; +Error.create = function Error$create(message, errorInfo) { + /// + /// + /// + /// + var e = Function._validateParams(arguments, [ + {name: "message", type: String, mayBeNull: true, optional: true}, + {name: "errorInfo", mayBeNull: true, optional: true} + ]); + if (e) throw e; + var err = new Error(message); + err.message = message; + if (errorInfo) { + for (var v in errorInfo) { + err[v] = errorInfo[v]; + } + } + err.popStackFrame(); + return err; +} +Error.argument = function Error$argument(paramName, message) { + /// + /// + /// + /// + var e = Function._validateParams(arguments, [ + {name: "paramName", type: String, mayBeNull: true, optional: true}, + {name: "message", type: String, mayBeNull: true, optional: true} + ]); + if (e) throw e; + var displayMessage = "Sys.ArgumentException: " + (message ? message : Sys.Res.argument); + if (paramName) { + displayMessage += "\n" + String.format(Sys.Res.paramName, paramName); + } + var err = Error.create(displayMessage, { name: "Sys.ArgumentException", paramName: paramName }); + err.popStackFrame(); + return err; +} +Error.argumentNull = function Error$argumentNull(paramName, message) { + /// + /// + /// + /// + var e = Function._validateParams(arguments, [ + {name: "paramName", type: String, mayBeNull: true, optional: true}, + {name: "message", type: String, mayBeNull: true, optional: true} + ]); + if (e) throw e; + var displayMessage = "Sys.ArgumentNullException: " + (message ? message : Sys.Res.argumentNull); + if (paramName) { + displayMessage += "\n" + String.format(Sys.Res.paramName, paramName); + } + var err = Error.create(displayMessage, { name: "Sys.ArgumentNullException", paramName: paramName }); + err.popStackFrame(); + return err; +} +Error.argumentOutOfRange = function Error$argumentOutOfRange(paramName, actualValue, message) { + /// + /// + /// + /// + /// + var e = Function._validateParams(arguments, [ + {name: "paramName", type: String, mayBeNull: true, optional: true}, + {name: "actualValue", mayBeNull: true, optional: true}, + {name: "message", type: String, mayBeNull: true, optional: true} + ]); + if (e) throw e; + var displayMessage = "Sys.ArgumentOutOfRangeException: " + (message ? message : Sys.Res.argumentOutOfRange); + if (paramName) { + displayMessage += "\n" + String.format(Sys.Res.paramName, paramName); + } + if (typeof(actualValue) !== "undefined" && actualValue !== null) { + displayMessage += "\n" + String.format(Sys.Res.actualValue, actualValue); + } + var err = Error.create(displayMessage, { + name: "Sys.ArgumentOutOfRangeException", + paramName: paramName, + actualValue: actualValue + }); + err.popStackFrame(); + return err; +} +Error.argumentType = function Error$argumentType(paramName, actualType, expectedType, message) { + /// + /// + /// + /// + /// + /// + var e = Function._validateParams(arguments, [ + {name: "paramName", type: String, mayBeNull: true, optional: true}, + {name: "actualType", type: Type, mayBeNull: true, optional: true}, + {name: "expectedType", type: Type, mayBeNull: true, optional: true}, + {name: "message", type: String, mayBeNull: true, optional: true} + ]); + if (e) throw e; + var displayMessage = "Sys.ArgumentTypeException: "; + if (message) { + displayMessage += message; + } + else if (actualType && expectedType) { + displayMessage += + String.format(Sys.Res.argumentTypeWithTypes, actualType.getName(), expectedType.getName()); + } + else { + displayMessage += Sys.Res.argumentType; + } + if (paramName) { + displayMessage += "\n" + String.format(Sys.Res.paramName, paramName); + } + var err = Error.create(displayMessage, { + name: "Sys.ArgumentTypeException", + paramName: paramName, + actualType: actualType, + expectedType: expectedType + }); + err.popStackFrame(); + return err; +} +Error.argumentUndefined = function Error$argumentUndefined(paramName, message) { + /// + /// + /// + /// + var e = Function._validateParams(arguments, [ + {name: "paramName", type: String, mayBeNull: true, optional: true}, + {name: "message", type: String, mayBeNull: true, optional: true} + ]); + if (e) throw e; + var displayMessage = "Sys.ArgumentUndefinedException: " + (message ? message : Sys.Res.argumentUndefined); + if (paramName) { + displayMessage += "\n" + String.format(Sys.Res.paramName, paramName); + } + var err = Error.create(displayMessage, { name: "Sys.ArgumentUndefinedException", paramName: paramName }); + err.popStackFrame(); + return err; +} +Error.format = function Error$format(message) { + /// + /// + /// + var e = Function._validateParams(arguments, [ + {name: "message", type: String, mayBeNull: true, optional: true} + ]); + if (e) throw e; + var displayMessage = "Sys.FormatException: " + (message ? message : Sys.Res.format); + var err = Error.create(displayMessage, {name: 'Sys.FormatException'}); + err.popStackFrame(); + return err; +} +Error.invalidOperation = function Error$invalidOperation(message) { + /// + /// + /// + var e = Function._validateParams(arguments, [ + {name: "message", type: String, mayBeNull: true, optional: true} + ]); + if (e) throw e; + var displayMessage = "Sys.InvalidOperationException: " + (message ? message : Sys.Res.invalidOperation); + var err = Error.create(displayMessage, {name: 'Sys.InvalidOperationException'}); + err.popStackFrame(); + return err; +} +Error.notImplemented = function Error$notImplemented(message) { + /// + /// + /// + var e = Function._validateParams(arguments, [ + {name: "message", type: String, mayBeNull: true, optional: true} + ]); + if (e) throw e; + var displayMessage = "Sys.NotImplementedException: " + (message ? message : Sys.Res.notImplemented); + var err = Error.create(displayMessage, {name: 'Sys.NotImplementedException'}); + err.popStackFrame(); + return err; +} +Error.parameterCount = function Error$parameterCount(message) { + /// + /// + /// + var e = Function._validateParams(arguments, [ + {name: "message", type: String, mayBeNull: true, optional: true} + ]); + if (e) throw e; + var displayMessage = "Sys.ParameterCountException: " + (message ? message : Sys.Res.parameterCount); + var err = Error.create(displayMessage, {name: 'Sys.ParameterCountException'}); + err.popStackFrame(); + return err; +} +Error.prototype.popStackFrame = function Error$popStackFrame() { + /// + if (arguments.length !== 0) throw Error.parameterCount(); + if (typeof(this.stack) === "undefined" || this.stack === null || + typeof(this.fileName) === "undefined" || this.fileName === null || + typeof(this.lineNumber) === "undefined" || this.lineNumber === null) { + return; + } + var stackFrames = this.stack.split("\n"); + var currentFrame = stackFrames[0]; + var pattern = this.fileName + ":" + this.lineNumber; + while(typeof(currentFrame) !== "undefined" && + currentFrame !== null && + currentFrame.indexOf(pattern) === -1) { + stackFrames.shift(); + currentFrame = stackFrames[0]; + } + var nextFrame = stackFrames[1]; + if (typeof(nextFrame) === "undefined" || nextFrame === null) { + return; + } + var nextFrameParts = nextFrame.match(/@(.*):(\d+)$/); + if (typeof(nextFrameParts) === "undefined" || nextFrameParts === null) { + return; + } + this.fileName = nextFrameParts[1]; + this.lineNumber = parseInt(nextFrameParts[2]); + stackFrames.shift(); + this.stack = stackFrames.join("\n"); +} + +Object.__typeName = 'Object'; +Object.__class = true; +Object.getType = function Object$getType(instance) { + /// + /// + /// + var e = Function._validateParams(arguments, [ + {name: "instance"} + ]); + if (e) throw e; + var ctor = instance.constructor; + if (!ctor || (typeof(ctor) !== "function") || !ctor.__typeName || (ctor.__typeName === 'Object')) { + return Object; + } + return ctor; +} +Object.getTypeName = function Object$getTypeName(instance) { + /// + /// + /// + var e = Function._validateParams(arguments, [ + {name: "instance"} + ]); + if (e) throw e; + return Object.getType(instance).getName(); +} + +String.__typeName = 'String'; +String.__class = true; +String.prototype.endsWith = function String$endsWith(suffix) { + /// + /// + /// + var e = Function._validateParams(arguments, [ + {name: "suffix", type: String} + ]); + if (e) throw e; + return (this.substr(this.length - suffix.length) === suffix); +} +String.prototype.startsWith = function String$startsWith(prefix) { + /// + /// + /// + var e = Function._validateParams(arguments, [ + {name: "prefix", type: String} + ]); + if (e) throw e; + return (this.substr(0, prefix.length) === prefix); +} +String.prototype.trim = function String$trim() { + /// + /// + if (arguments.length !== 0) throw Error.parameterCount(); + return this.replace(/^\s+|\s+$/g, ''); +} +String.prototype.trimEnd = function String$trimEnd() { + /// + /// + if (arguments.length !== 0) throw Error.parameterCount(); + return this.replace(/\s+$/, ''); +} +String.prototype.trimStart = function String$trimStart() { + /// + /// + if (arguments.length !== 0) throw Error.parameterCount(); + return this.replace(/^\s+/, ''); +} +String.format = function String$format(format, args) { + /// + /// + /// + /// + var e = Function._validateParams(arguments, [ + {name: "format", type: String}, + {name: "args", mayBeNull: true, parameterArray: true} + ]); + if (e) throw e; + return String._toFormattedString(false, arguments); +} +String._toFormattedString = function String$_toFormattedString(useLocale, args) { + var result = ''; + var format = args[0]; + for (var i=0;;) { + var open = format.indexOf('{', i); + var close = format.indexOf('}', i); + if ((open < 0) && (close < 0)) { + result += format.slice(i); + break; + } + if ((close > 0) && ((close < open) || (open < 0))) { + if (format.charAt(close + 1) !== '}') { + throw Error.argument('format', Sys.Res.stringFormatBraceMismatch); + } + result += format.slice(i, close + 1); + i = close + 2; + continue; + } + result += format.slice(i, open); + i = open + 1; + if (format.charAt(i) === '{') { + result += '{'; + i++; + continue; + } + if (close < 0) throw Error.argument('format', Sys.Res.stringFormatBraceMismatch); + var brace = format.substring(i, close); + var colonIndex = brace.indexOf(':'); + var argNumber = parseInt((colonIndex < 0)? brace : brace.substring(0, colonIndex), 10) + 1; + if (isNaN(argNumber)) throw Error.argument('format', Sys.Res.stringFormatInvalid); + var argFormat = (colonIndex < 0)? '' : brace.substring(colonIndex + 1); + var arg = args[argNumber]; + if (typeof(arg) === "undefined" || arg === null) { + arg = ''; + } + if (arg.toFormattedString) { + result += arg.toFormattedString(argFormat); + } + else if (useLocale && arg.localeFormat) { + result += arg.localeFormat(argFormat); + } + else if (arg.format) { + result += arg.format(argFormat); + } + else + result += arg.toString(); + i = close + 1; + } + return result; +} + +Boolean.__typeName = 'Boolean'; +Boolean.__class = true; +Boolean.parse = function Boolean$parse(value) { + /// + /// + /// + var e = Function._validateParams(arguments, [ + {name: "value", type: String} + ], false); + if (e) throw e; + var v = value.trim().toLowerCase(); + if (v === 'false') return false; + if (v === 'true') return true; + throw Error.argumentOutOfRange('value', value, Sys.Res.boolTrueOrFalse); +} + +Date.__typeName = 'Date'; +Date.__class = true; + +Number.__typeName = 'Number'; +Number.__class = true; + +RegExp.__typeName = 'RegExp'; +RegExp.__class = true; + +if (!window) this.window = this; +window.Type = Function; +Type.__fullyQualifiedIdentifierRegExp = new RegExp("^[^.0-9 \\s|,;:&*=+\\-()\\[\\]{}^%#@!~\\n\\r\\t\\f\\\\]([^ \\s|,;:&*=+\\-()\\[\\]{}^%#@!~\\n\\r\\t\\f\\\\]*[^. \\s|,;:&*=+\\-()\\[\\]{}^%#@!~\\n\\r\\t\\f\\\\])?$", "i"); +Type.__identifierRegExp = new RegExp("^[^.0-9 \\s|,;:&*=+\\-()\\[\\]{}^%#@!~\\n\\r\\t\\f\\\\][^. \\s|,;:&*=+\\-()\\[\\]{}^%#@!~\\n\\r\\t\\f\\\\]*$", "i"); +Type.prototype.callBaseMethod = function Type$callBaseMethod(instance, name, baseArguments) { + /// + /// + /// + /// + /// + var e = Function._validateParams(arguments, [ + {name: "instance"}, + {name: "name", type: String}, + {name: "baseArguments", type: Array, mayBeNull: true, optional: true, elementMayBeNull: true} + ]); + if (e) throw e; + var baseMethod = Sys._getBaseMethod(this, instance, name); + if (!baseMethod) throw Error.invalidOperation(String.format(Sys.Res.methodNotFound, name)); + if (!baseArguments) { + return baseMethod.apply(instance); + } + else { + return baseMethod.apply(instance, baseArguments); + } +} +Type.prototype.getBaseMethod = function Type$getBaseMethod(instance, name) { + /// + /// + /// + /// + var e = Function._validateParams(arguments, [ + {name: "instance"}, + {name: "name", type: String} + ]); + if (e) throw e; + return Sys._getBaseMethod(this, instance, name); +} +Type.prototype.getBaseType = function Type$getBaseType() { + /// + /// + if (arguments.length !== 0) throw Error.parameterCount(); + return (typeof(this.__baseType) === "undefined") ? null : this.__baseType; +} +Type.prototype.getInterfaces = function Type$getInterfaces() { + /// + /// + if (arguments.length !== 0) throw Error.parameterCount(); + var result = []; + var type = this; + while(type) { + var interfaces = type.__interfaces; + if (interfaces) { + for (var i = 0, l = interfaces.length; i < l; i++) { + var interfaceType = interfaces[i]; + if (!Array.contains(result, interfaceType)) { + result[result.length] = interfaceType; + } + } + } + type = type.__baseType; + } + return result; +} +Type.prototype.getName = function Type$getName() { + /// + /// + if (arguments.length !== 0) throw Error.parameterCount(); + return (typeof(this.__typeName) === "undefined") ? "" : this.__typeName; +} +Type.prototype.implementsInterface = function Type$implementsInterface(interfaceType) { + /// + /// + /// + var e = Function._validateParams(arguments, [ + {name: "interfaceType", type: Type} + ]); + if (e) throw e; + this.resolveInheritance(); + var interfaceName = interfaceType.getName(); + var cache = this.__interfaceCache; + if (cache) { + var cacheEntry = cache[interfaceName]; + if (typeof(cacheEntry) !== 'undefined') return cacheEntry; + } + else { + cache = this.__interfaceCache = {}; + } + var baseType = this; + while (baseType) { + var interfaces = baseType.__interfaces; + if (interfaces) { + if (Array.indexOf(interfaces, interfaceType) !== -1) { + return cache[interfaceName] = true; + } + } + baseType = baseType.__baseType; + } + return cache[interfaceName] = false; +} +Type.prototype.inheritsFrom = function Type$inheritsFrom(parentType) { + /// + /// + /// + var e = Function._validateParams(arguments, [ + {name: "parentType", type: Type} + ]); + if (e) throw e; + this.resolveInheritance(); + var baseType = this.__baseType; + while (baseType) { + if (baseType === parentType) { + return true; + } + baseType = baseType.__baseType; + } + return false; +} +Type.prototype.initializeBase = function Type$initializeBase(instance, baseArguments) { + /// + /// + /// + /// + var e = Function._validateParams(arguments, [ + {name: "instance"}, + {name: "baseArguments", type: Array, mayBeNull: true, optional: true, elementMayBeNull: true} + ]); + if (e) throw e; + if (!Sys._isInstanceOfType(this, instance)) throw Error.argumentType('instance', Object.getType(instance), this); + this.resolveInheritance(); + if (this.__baseType) { + if (!baseArguments) { + this.__baseType.apply(instance); + } + else { + this.__baseType.apply(instance, baseArguments); + } + } + return instance; +} +Type.prototype.isImplementedBy = function Type$isImplementedBy(instance) { + /// + /// + /// + var e = Function._validateParams(arguments, [ + {name: "instance", mayBeNull: true} + ]); + if (e) throw e; + if (typeof(instance) === "undefined" || instance === null) return false; + var instanceType = Object.getType(instance); + return !!(instanceType.implementsInterface && instanceType.implementsInterface(this)); +} +Type.prototype.isInstanceOfType = function Type$isInstanceOfType(instance) { + /// + /// + /// + var e = Function._validateParams(arguments, [ + {name: "instance", mayBeNull: true} + ]); + if (e) throw e; + return Sys._isInstanceOfType(this, instance); +} +Type.prototype.registerClass = function Type$registerClass(typeName, baseType, interfaceTypes) { + /// + /// + /// + /// + /// + var e = Function._validateParams(arguments, [ + {name: "typeName", type: String}, + {name: "baseType", type: Type, mayBeNull: true, optional: true}, + {name: "interfaceTypes", type: Type, parameterArray: true} + ]); + if (e) throw e; + if (!Type.__fullyQualifiedIdentifierRegExp.test(typeName)) throw Error.argument('typeName', Sys.Res.notATypeName); + var parsedName; + try { + parsedName = eval(typeName); + } + catch(e) { + throw Error.argument('typeName', Sys.Res.argumentTypeName); + } + if (parsedName !== this) throw Error.argument('typeName', Sys.Res.badTypeName); + if (Sys.__registeredTypes[typeName]) throw Error.invalidOperation(String.format(Sys.Res.typeRegisteredTwice, typeName)); + if ((arguments.length > 1) && (typeof(baseType) === 'undefined')) throw Error.argumentUndefined('baseType'); + if (baseType && !baseType.__class) throw Error.argument('baseType', Sys.Res.baseNotAClass); + this.prototype.constructor = this; + this.__typeName = typeName; + this.__class = true; + if (baseType) { + this.__baseType = baseType; + this.__basePrototypePending = true; + } + Sys.__upperCaseTypes[typeName.toUpperCase()] = this; + if (interfaceTypes) { + this.__interfaces = []; + this.resolveInheritance(); + for (var i = 2, l = arguments.length; i < l; i++) { + var interfaceType = arguments[i]; + if (!interfaceType.__interface) throw Error.argument('interfaceTypes[' + (i - 2) + ']', Sys.Res.notAnInterface); + for (var methodName in interfaceType.prototype) { + var method = interfaceType.prototype[methodName]; + if (!this.prototype[methodName]) { + this.prototype[methodName] = method; + } + } + this.__interfaces.push(interfaceType); + } + } + Sys.__registeredTypes[typeName] = true; + return this; +} +Type.prototype.registerInterface = function Type$registerInterface(typeName) { + /// + /// + /// + var e = Function._validateParams(arguments, [ + {name: "typeName", type: String} + ]); + if (e) throw e; + if (!Type.__fullyQualifiedIdentifierRegExp.test(typeName)) throw Error.argument('typeName', Sys.Res.notATypeName); + var parsedName; + try { + parsedName = eval(typeName); + } + catch(e) { + throw Error.argument('typeName', Sys.Res.argumentTypeName); + } + if (parsedName !== this) throw Error.argument('typeName', Sys.Res.badTypeName); + if (Sys.__registeredTypes[typeName]) throw Error.invalidOperation(String.format(Sys.Res.typeRegisteredTwice, typeName)); + Sys.__upperCaseTypes[typeName.toUpperCase()] = this; + this.prototype.constructor = this; + this.__typeName = typeName; + this.__interface = true; + Sys.__registeredTypes[typeName] = true; + return this; +} +Type.prototype.resolveInheritance = function Type$resolveInheritance() { + /// + if (arguments.length !== 0) throw Error.parameterCount(); + if (this.__basePrototypePending) { + var baseType = this.__baseType; + baseType.resolveInheritance(); + for (var memberName in baseType.prototype) { + var memberValue = baseType.prototype[memberName]; + if (!this.prototype[memberName]) { + this.prototype[memberName] = memberValue; + } + } + delete this.__basePrototypePending; + } +} +Type.getRootNamespaces = function Type$getRootNamespaces() { + /// + /// + if (arguments.length !== 0) throw Error.parameterCount(); + return Array.clone(Sys.__rootNamespaces); +} +Type.isClass = function Type$isClass(type) { + /// + /// + /// + var e = Function._validateParams(arguments, [ + {name: "type", mayBeNull: true} + ]); + if (e) throw e; + if ((typeof(type) === 'undefined') || (type === null)) return false; + return !!type.__class; +} +Type.isInterface = function Type$isInterface(type) { + /// + /// + /// + var e = Function._validateParams(arguments, [ + {name: "type", mayBeNull: true} + ]); + if (e) throw e; + if ((typeof(type) === 'undefined') || (type === null)) return false; + return !!type.__interface; +} +Type.isNamespace = function Type$isNamespace(object) { + /// + /// + /// + var e = Function._validateParams(arguments, [ + {name: "object", mayBeNull: true} + ]); + if (e) throw e; + if ((typeof(object) === 'undefined') || (object === null)) return false; + return !!object.__namespace; +} +Type.parse = function Type$parse(typeName, ns) { + /// + /// + /// + /// + var e = Function._validateParams(arguments, [ + {name: "typeName", type: String, mayBeNull: true}, + {name: "ns", mayBeNull: true, optional: true} + ]); + if (e) throw e; + var fn; + if (ns) { + fn = Sys.__upperCaseTypes[ns.getName().toUpperCase() + '.' + typeName.toUpperCase()]; + return fn || null; + } + if (!typeName) return null; + if (!Type.__htClasses) { + Type.__htClasses = {}; + } + fn = Type.__htClasses[typeName]; + if (!fn) { + fn = eval(typeName); + if (typeof(fn) !== 'function') throw Error.argument('typeName', Sys.Res.notATypeName); + Type.__htClasses[typeName] = fn; + } + return fn; +} +Type.registerNamespace = function Type$registerNamespace(namespacePath) { + /// + /// + var e = Function._validateParams(arguments, [ + {name: "namespacePath", type: String} + ]); + if (e) throw e; + Type._registerNamespace(namespacePath); +} +Type._registerNamespace = function Type$_registerNamespace(namespacePath) { + if (!Type.__fullyQualifiedIdentifierRegExp.test(namespacePath)) throw Error.argument('namespacePath', Sys.Res.invalidNameSpace); + var rootObject = window; + var namespaceParts = namespacePath.split('.'); + for (var i = 0; i < namespaceParts.length; i++) { + var currentPart = namespaceParts[i]; + var ns = rootObject[currentPart]; + var nsType = typeof(ns); + if ((nsType !== "undefined") && (ns !== null)) { + if (nsType === "function") { + throw Error.invalidOperation(String.format(Sys.Res.namespaceContainsClass, namespaceParts.splice(0, i + 1).join('.'))); + } + if ((typeof(ns) !== "object") || (ns instanceof Array)) { + throw Error.invalidOperation(String.format(Sys.Res.namespaceContainsNonObject, namespaceParts.splice(0, i + 1).join('.'))); + } + } + if (!ns) { + ns = rootObject[currentPart] = {}; + } + if (!ns.__namespace) { + if ((i === 0) && (namespacePath !== "Sys")) { + Sys.__rootNamespaces[Sys.__rootNamespaces.length] = ns; + } + ns.__namespace = true; + ns.__typeName = namespaceParts.slice(0, i + 1).join('.'); + var parsedName; + try { + parsedName = eval(ns.__typeName); + } + catch(e) { + parsedName = null; + } + if (parsedName !== ns) { + delete rootObject[currentPart]; + throw Error.argument('namespacePath', Sys.Res.invalidNameSpace); + } + ns.getName = function ns$getName() {return this.__typeName;} + } + rootObject = ns; + } +} +Type._checkDependency = function Type$_checkDependency(dependency, featureName) { + var scripts = Type._registerScript._scripts, isDependent = (scripts ? (!!scripts[dependency]) : false); + if ((typeof(featureName) !== 'undefined') && !isDependent) { + throw Error.invalidOperation(String.format(Sys.Res.requiredScriptReferenceNotIncluded, + featureName, dependency)); + } + return isDependent; +} +Type._registerScript = function Type$_registerScript(scriptName, dependencies) { + var scripts = Type._registerScript._scripts; + if (!scripts) { + Type._registerScript._scripts = scripts = {}; + } + if (scripts[scriptName]) { + throw Error.invalidOperation(String.format(Sys.Res.scriptAlreadyLoaded, scriptName)); + } + scripts[scriptName] = true; + if (dependencies) { + for (var i = 0, l = dependencies.length; i < l; i++) { + var dependency = dependencies[i]; + if (!Type._checkDependency(dependency)) { + throw Error.invalidOperation(String.format(Sys.Res.scriptDependencyNotFound, scriptName, dependency)); + } + } + } +} +Type._registerNamespace("Sys"); +Sys.__upperCaseTypes = {}; +Sys.__rootNamespaces = [Sys]; +Sys.__registeredTypes = {}; +Sys._isInstanceOfType = function Sys$_isInstanceOfType(type, instance) { + if (typeof(instance) === "undefined" || instance === null) return false; + if (instance instanceof type) return true; + var instanceType = Object.getType(instance); + return !!(instanceType === type) || + (instanceType.inheritsFrom && instanceType.inheritsFrom(type)) || + (instanceType.implementsInterface && instanceType.implementsInterface(type)); +} +Sys._getBaseMethod = function Sys$_getBaseMethod(type, instance, name) { + if (!Sys._isInstanceOfType(type, instance)) throw Error.argumentType('instance', Object.getType(instance), type); + var baseType = type.getBaseType(); + if (baseType) { + var baseMethod = baseType.prototype[name]; + return (baseMethod instanceof Function) ? baseMethod : null; + } + return null; +} +Sys._isDomElement = function Sys$_isDomElement(obj) { + var val = false; + if (typeof (obj.nodeType) !== 'number') { + var doc = obj.ownerDocument || obj.document || obj; + if (doc != obj) { + var w = doc.defaultView || doc.parentWindow; + val = (w != obj); + } + else { + val = (typeof (doc.body) === 'undefined'); + } + } + return !val; +} + +Array.__typeName = 'Array'; +Array.__class = true; +Array.add = Array.enqueue = function Array$enqueue(array, item) { + /// + /// + /// + var e = Function._validateParams(arguments, [ + {name: "array", type: Array, elementMayBeNull: true}, + {name: "item", mayBeNull: true} + ]); + if (e) throw e; + array[array.length] = item; +} +Array.addRange = function Array$addRange(array, items) { + /// + /// + /// + var e = Function._validateParams(arguments, [ + {name: "array", type: Array, elementMayBeNull: true}, + {name: "items", type: Array, elementMayBeNull: true} + ]); + if (e) throw e; + array.push.apply(array, items); +} +Array.clear = function Array$clear(array) { + /// + /// + var e = Function._validateParams(arguments, [ + {name: "array", type: Array, elementMayBeNull: true} + ]); + if (e) throw e; + array.length = 0; +} +Array.clone = function Array$clone(array) { + /// + /// + /// + var e = Function._validateParams(arguments, [ + {name: "array", type: Array, elementMayBeNull: true} + ]); + if (e) throw e; + if (array.length === 1) { + return [array[0]]; + } + else { + return Array.apply(null, array); + } +} +Array.contains = function Array$contains(array, item) { + /// + /// + /// + /// + var e = Function._validateParams(arguments, [ + {name: "array", type: Array, elementMayBeNull: true}, + {name: "item", mayBeNull: true} + ]); + if (e) throw e; + return (Sys._indexOf(array, item) >= 0); +} +Array.dequeue = function Array$dequeue(array) { + /// + /// + /// + var e = Function._validateParams(arguments, [ + {name: "array", type: Array, elementMayBeNull: true} + ]); + if (e) throw e; + return array.shift(); +} +Array.forEach = function Array$forEach(array, method, instance) { + /// + /// + /// + /// + var e = Function._validateParams(arguments, [ + {name: "array", type: Array, elementMayBeNull: true}, + {name: "method", type: Function}, + {name: "instance", mayBeNull: true, optional: true} + ]); + if (e) throw e; + for (var i = 0, l = array.length; i < l; i++) { + var elt = array[i]; + if (typeof(elt) !== 'undefined') method.call(instance, elt, i, array); + } +} +Array.indexOf = function Array$indexOf(array, item, start) { + /// + /// + /// + /// + /// + var e = Function._validateParams(arguments, [ + {name: "array", type: Array, elementMayBeNull: true}, + {name: "item", mayBeNull: true, optional: true}, + {name: "start", mayBeNull: true, optional: true} + ]); + if (e) throw e; + return Sys._indexOf(array, item, start); +} +Array.insert = function Array$insert(array, index, item) { + /// + /// + /// + /// + var e = Function._validateParams(arguments, [ + {name: "array", type: Array, elementMayBeNull: true}, + {name: "index", mayBeNull: true}, + {name: "item", mayBeNull: true} + ]); + if (e) throw e; + array.splice(index, 0, item); +} +Array.parse = function Array$parse(value) { + /// + /// + /// + var e = Function._validateParams(arguments, [ + {name: "value", type: String, mayBeNull: true} + ]); + if (e) throw e; + if (!value) return []; + var v = eval(value); + if (!Array.isInstanceOfType(v)) throw Error.argument('value', Sys.Res.arrayParseBadFormat); + return v; +} +Array.remove = function Array$remove(array, item) { + /// + /// + /// + /// + var e = Function._validateParams(arguments, [ + {name: "array", type: Array, elementMayBeNull: true}, + {name: "item", mayBeNull: true} + ]); + if (e) throw e; + var index = Sys._indexOf(array, item); + if (index >= 0) { + array.splice(index, 1); + } + return (index >= 0); +} +Array.removeAt = function Array$removeAt(array, index) { + /// + /// + /// + var e = Function._validateParams(arguments, [ + {name: "array", type: Array, elementMayBeNull: true}, + {name: "index", mayBeNull: true} + ]); + if (e) throw e; + array.splice(index, 1); +} +Sys._indexOf = function Sys$_indexOf(array, item, start) { + if (typeof(item) === "undefined") return -1; + var length = array.length; + if (length !== 0) { + start = start - 0; + if (isNaN(start)) { + start = 0; + } + else { + if (isFinite(start)) { + start = start - (start % 1); + } + if (start < 0) { + start = Math.max(0, length + start); + } + } + for (var i = start; i < length; i++) { + if ((typeof(array[i]) !== "undefined") && (array[i] === item)) { + return i; + } + } + } + return -1; +} +Type._registerScript._scripts = { + "MicrosoftAjaxCore.js": true, + "MicrosoftAjaxGlobalization.js": true, + "MicrosoftAjaxSerialization.js": true, + "MicrosoftAjaxComponentModel.js": true, + "MicrosoftAjaxHistory.js": true, + "MicrosoftAjaxNetwork.js" : true, + "MicrosoftAjaxWebServices.js": true }; + +Sys.IDisposable = function Sys$IDisposable() { + throw Error.notImplemented(); +} + function Sys$IDisposable$dispose() { + throw Error.notImplemented(); + } +Sys.IDisposable.prototype = { + dispose: Sys$IDisposable$dispose +} +Sys.IDisposable.registerInterface('Sys.IDisposable'); + +Sys.StringBuilder = function Sys$StringBuilder(initialText) { + /// + /// + var e = Function._validateParams(arguments, [ + {name: "initialText", mayBeNull: true, optional: true} + ]); + if (e) throw e; + this._parts = (typeof(initialText) !== 'undefined' && initialText !== null && initialText !== '') ? + [initialText.toString()] : []; + this._value = {}; + this._len = 0; +} + function Sys$StringBuilder$append(text) { + /// + /// + var e = Function._validateParams(arguments, [ + {name: "text", mayBeNull: true} + ]); + if (e) throw e; + this._parts[this._parts.length] = text; + } + function Sys$StringBuilder$appendLine(text) { + /// + /// + var e = Function._validateParams(arguments, [ + {name: "text", mayBeNull: true, optional: true} + ]); + if (e) throw e; + this._parts[this._parts.length] = + ((typeof(text) === 'undefined') || (text === null) || (text === '')) ? + '\r\n' : text + '\r\n'; + } + function Sys$StringBuilder$clear() { + /// + if (arguments.length !== 0) throw Error.parameterCount(); + this._parts = []; + this._value = {}; + this._len = 0; + } + function Sys$StringBuilder$isEmpty() { + /// + /// + if (arguments.length !== 0) throw Error.parameterCount(); + if (this._parts.length === 0) return true; + return this.toString() === ''; + } + function Sys$StringBuilder$toString(separator) { + /// + /// + /// + var e = Function._validateParams(arguments, [ + {name: "separator", type: String, mayBeNull: true, optional: true} + ]); + if (e) throw e; + separator = separator || ''; + var parts = this._parts; + if (this._len !== parts.length) { + this._value = {}; + this._len = parts.length; + } + var val = this._value; + if (typeof(val[separator]) === 'undefined') { + if (separator !== '') { + for (var i = 0; i < parts.length;) { + if ((typeof(parts[i]) === 'undefined') || (parts[i] === '') || (parts[i] === null)) { + parts.splice(i, 1); + } + else { + i++; + } + } + } + val[separator] = this._parts.join(separator); + } + return val[separator]; + } +Sys.StringBuilder.prototype = { + append: Sys$StringBuilder$append, + appendLine: Sys$StringBuilder$appendLine, + clear: Sys$StringBuilder$clear, + isEmpty: Sys$StringBuilder$isEmpty, + toString: Sys$StringBuilder$toString +} +Sys.StringBuilder.registerClass('Sys.StringBuilder'); + +Sys.Browser = {}; +Sys.Browser.InternetExplorer = {}; +Sys.Browser.Firefox = {}; +Sys.Browser.Safari = {}; +Sys.Browser.Opera = {}; +Sys.Browser.agent = null; +Sys.Browser.hasDebuggerStatement = false; +Sys.Browser.name = navigator.appName; +Sys.Browser.version = parseFloat(navigator.appVersion); +Sys.Browser.documentMode = 0; +if (navigator.userAgent.indexOf(' MSIE ') > -1) { + Sys.Browser.agent = Sys.Browser.InternetExplorer; + Sys.Browser.version = parseFloat(navigator.userAgent.match(/MSIE (\d+\.\d+)/)[1]); + if (Sys.Browser.version >= 8) { + if (document.documentMode >= 7) { + Sys.Browser.documentMode = document.documentMode; + } + } + Sys.Browser.hasDebuggerStatement = true; +} +else if (navigator.userAgent.indexOf(' Firefox/') > -1) { + Sys.Browser.agent = Sys.Browser.Firefox; + Sys.Browser.version = parseFloat(navigator.userAgent.match(/ Firefox\/(\d+\.\d+)/)[1]); + Sys.Browser.name = 'Firefox'; + Sys.Browser.hasDebuggerStatement = true; +} +else if (navigator.userAgent.indexOf(' AppleWebKit/') > -1) { + Sys.Browser.agent = Sys.Browser.Safari; + Sys.Browser.version = parseFloat(navigator.userAgent.match(/ AppleWebKit\/(\d+(\.\d+)?)/)[1]); + Sys.Browser.name = 'Safari'; +} +else if (navigator.userAgent.indexOf('Opera/') > -1) { + Sys.Browser.agent = Sys.Browser.Opera; +} + +Sys.EventArgs = function Sys$EventArgs() { + /// + if (arguments.length !== 0) throw Error.parameterCount(); +} +Sys.EventArgs.registerClass('Sys.EventArgs'); +Sys.EventArgs.Empty = new Sys.EventArgs(); + +Sys.CancelEventArgs = function Sys$CancelEventArgs() { + /// + if (arguments.length !== 0) throw Error.parameterCount(); + Sys.CancelEventArgs.initializeBase(this); + this._cancel = false; +} + function Sys$CancelEventArgs$get_cancel() { + /// + if (arguments.length !== 0) throw Error.parameterCount(); + return this._cancel; + } + function Sys$CancelEventArgs$set_cancel(value) { + var e = Function._validateParams(arguments, [{name: "value", type: Boolean}]); + if (e) throw e; + this._cancel = value; + } +Sys.CancelEventArgs.prototype = { + get_cancel: Sys$CancelEventArgs$get_cancel, + set_cancel: Sys$CancelEventArgs$set_cancel +} +Sys.CancelEventArgs.registerClass('Sys.CancelEventArgs', Sys.EventArgs); +Type.registerNamespace('Sys.UI'); + +Sys._Debug = function Sys$_Debug() { + /// + /// + if (arguments.length !== 0) throw Error.parameterCount(); +} + function Sys$_Debug$_appendConsole(text) { + if ((typeof(Debug) !== 'undefined') && Debug.writeln) { + Debug.writeln(text); + } + if (window.console && window.console.log) { + window.console.log(text); + } + if (window.opera) { + window.opera.postError(text); + } + if (window.debugService) { + window.debugService.trace(text); + } + } + function Sys$_Debug$_appendTrace(text) { + var traceElement = document.getElementById('TraceConsole'); + if (traceElement && (traceElement.tagName.toUpperCase() === 'TEXTAREA')) { + traceElement.value += text + '\n'; + } + } + function Sys$_Debug$assert(condition, message, displayCaller) { + /// + /// + /// + /// + var e = Function._validateParams(arguments, [ + {name: "condition", type: Boolean}, + {name: "message", type: String, mayBeNull: true, optional: true}, + {name: "displayCaller", type: Boolean, optional: true} + ]); + if (e) throw e; + if (!condition) { + message = (displayCaller && this.assert.caller) ? + String.format(Sys.Res.assertFailedCaller, message, this.assert.caller) : + String.format(Sys.Res.assertFailed, message); + if (confirm(String.format(Sys.Res.breakIntoDebugger, message))) { + this.fail(message); + } + } + } + function Sys$_Debug$clearTrace() { + /// + if (arguments.length !== 0) throw Error.parameterCount(); + var traceElement = document.getElementById('TraceConsole'); + if (traceElement && (traceElement.tagName.toUpperCase() === 'TEXTAREA')) { + traceElement.value = ''; + } + } + function Sys$_Debug$fail(message) { + /// + /// + var e = Function._validateParams(arguments, [ + {name: "message", type: String, mayBeNull: true} + ]); + if (e) throw e; + this._appendConsole(message); + if (Sys.Browser.hasDebuggerStatement) { + eval('debugger'); + } + } + function Sys$_Debug$trace(text) { + /// + /// + var e = Function._validateParams(arguments, [ + {name: "text"} + ]); + if (e) throw e; + this._appendConsole(text); + this._appendTrace(text); + } + function Sys$_Debug$traceDump(object, name) { + /// + /// + /// + var e = Function._validateParams(arguments, [ + {name: "object", mayBeNull: true}, + {name: "name", type: String, mayBeNull: true, optional: true} + ]); + if (e) throw e; + var text = this._traceDump(object, name, true); + } + function Sys$_Debug$_traceDump(object, name, recursive, indentationPadding, loopArray) { + name = name? name : 'traceDump'; + indentationPadding = indentationPadding? indentationPadding : ''; + if (object === null) { + this.trace(indentationPadding + name + ': null'); + return; + } + switch(typeof(object)) { + case 'undefined': + this.trace(indentationPadding + name + ': Undefined'); + break; + case 'number': case 'string': case 'boolean': + this.trace(indentationPadding + name + ': ' + object); + break; + default: + if (Date.isInstanceOfType(object) || RegExp.isInstanceOfType(object)) { + this.trace(indentationPadding + name + ': ' + object.toString()); + break; + } + if (!loopArray) { + loopArray = []; + } + else if (Array.contains(loopArray, object)) { + this.trace(indentationPadding + name + ': ...'); + return; + } + Array.add(loopArray, object); + if ((object == window) || (object === document) || + (window.HTMLElement && (object instanceof HTMLElement)) || + (typeof(object.nodeName) === 'string')) { + var tag = object.tagName? object.tagName : 'DomElement'; + if (object.id) { + tag += ' - ' + object.id; + } + this.trace(indentationPadding + name + ' {' + tag + '}'); + } + else { + var typeName = Object.getTypeName(object); + this.trace(indentationPadding + name + (typeof(typeName) === 'string' ? ' {' + typeName + '}' : '')); + if ((indentationPadding === '') || recursive) { + indentationPadding += " "; + var i, length, properties, p, v; + if (Array.isInstanceOfType(object)) { + length = object.length; + for (i = 0; i < length; i++) { + this._traceDump(object[i], '[' + i + ']', recursive, indentationPadding, loopArray); + } + } + else { + for (p in object) { + v = object[p]; + if (!Function.isInstanceOfType(v)) { + this._traceDump(v, p, recursive, indentationPadding, loopArray); + } + } + } + } + } + Array.remove(loopArray, object); + } + } +Sys._Debug.prototype = { + _appendConsole: Sys$_Debug$_appendConsole, + _appendTrace: Sys$_Debug$_appendTrace, + assert: Sys$_Debug$assert, + clearTrace: Sys$_Debug$clearTrace, + fail: Sys$_Debug$fail, + trace: Sys$_Debug$trace, + traceDump: Sys$_Debug$traceDump, + _traceDump: Sys$_Debug$_traceDump +} +Sys._Debug.registerClass('Sys._Debug'); +Sys.Debug = new Sys._Debug(); + Sys.Debug.isDebug = true; + +function Sys$Enum$parse(value, ignoreCase) { + /// + /// + /// + /// + var e = Function._validateParams(arguments, [ + {name: "value", type: String}, + {name: "ignoreCase", type: Boolean, optional: true} + ]); + if (e) throw e; + var values, parsed, val; + if (ignoreCase) { + values = this.__lowerCaseValues; + if (!values) { + this.__lowerCaseValues = values = {}; + var prototype = this.prototype; + for (var name in prototype) { + values[name.toLowerCase()] = prototype[name]; + } + } + } + else { + values = this.prototype; + } + if (!this.__flags) { + val = (ignoreCase ? value.toLowerCase() : value); + parsed = values[val.trim()]; + if (typeof(parsed) !== 'number') throw Error.argument('value', String.format(Sys.Res.enumInvalidValue, value, this.__typeName)); + return parsed; + } + else { + var parts = (ignoreCase ? value.toLowerCase() : value).split(','); + var v = 0; + for (var i = parts.length - 1; i >= 0; i--) { + var part = parts[i].trim(); + parsed = values[part]; + if (typeof(parsed) !== 'number') throw Error.argument('value', String.format(Sys.Res.enumInvalidValue, value.split(',')[i].trim(), this.__typeName)); + v |= parsed; + } + return v; + } +} +function Sys$Enum$toString(value) { + /// + /// + /// + var e = Function._validateParams(arguments, [ + {name: "value", mayBeNull: true, optional: true} + ]); + if (e) throw e; + if ((typeof(value) === 'undefined') || (value === null)) return this.__string; + if ((typeof(value) != 'number') || ((value % 1) !== 0)) throw Error.argumentType('value', Object.getType(value), this); + var values = this.prototype; + var i; + if (!this.__flags || (value === 0)) { + for (i in values) { + if (values[i] === value) { + return i; + } + } + } + else { + var sorted = this.__sortedValues; + if (!sorted) { + sorted = []; + for (i in values) { + sorted[sorted.length] = {key: i, value: values[i]}; + } + sorted.sort(function(a, b) { + return a.value - b.value; + }); + this.__sortedValues = sorted; + } + var parts = []; + var v = value; + for (i = sorted.length - 1; i >= 0; i--) { + var kvp = sorted[i]; + var vali = kvp.value; + if (vali === 0) continue; + if ((vali & value) === vali) { + parts[parts.length] = kvp.key; + v -= vali; + if (v === 0) break; + } + } + if (parts.length && v === 0) return parts.reverse().join(', '); + } + throw Error.argumentOutOfRange('value', value, String.format(Sys.Res.enumInvalidValue, value, this.__typeName)); +} +Type.prototype.registerEnum = function Type$registerEnum(name, flags) { + /// + /// + /// + var e = Function._validateParams(arguments, [ + {name: "name", type: String}, + {name: "flags", type: Boolean, optional: true} + ]); + if (e) throw e; + if (!Type.__fullyQualifiedIdentifierRegExp.test(name)) throw Error.argument('name', Sys.Res.notATypeName); + var parsedName; + try { + parsedName = eval(name); + } + catch(e) { + throw Error.argument('name', Sys.Res.argumentTypeName); + } + if (parsedName !== this) throw Error.argument('name', Sys.Res.badTypeName); + if (Sys.__registeredTypes[name]) throw Error.invalidOperation(String.format(Sys.Res.typeRegisteredTwice, name)); + for (var j in this.prototype) { + var val = this.prototype[j]; + if (!Type.__identifierRegExp.test(j)) throw Error.invalidOperation(String.format(Sys.Res.enumInvalidValueName, j)); + if (typeof(val) !== 'number' || (val % 1) !== 0) throw Error.invalidOperation(Sys.Res.enumValueNotInteger); + if (typeof(this[j]) !== 'undefined') throw Error.invalidOperation(String.format(Sys.Res.enumReservedName, j)); + } + Sys.__upperCaseTypes[name.toUpperCase()] = this; + for (var i in this.prototype) { + this[i] = this.prototype[i]; + } + this.__typeName = name; + this.parse = Sys$Enum$parse; + this.__string = this.toString(); + this.toString = Sys$Enum$toString; + this.__flags = flags; + this.__enum = true; + Sys.__registeredTypes[name] = true; +} +Type.isEnum = function Type$isEnum(type) { + /// + /// + /// + var e = Function._validateParams(arguments, [ + {name: "type", mayBeNull: true} + ]); + if (e) throw e; + if ((typeof(type) === 'undefined') || (type === null)) return false; + return !!type.__enum; +} +Type.isFlags = function Type$isFlags(type) { + /// + /// + /// + var e = Function._validateParams(arguments, [ + {name: "type", mayBeNull: true} + ]); + if (e) throw e; + if ((typeof(type) === 'undefined') || (type === null)) return false; + return !!type.__flags; +} +Sys.CollectionChange = function Sys$CollectionChange(action, newItems, newStartingIndex, oldItems, oldStartingIndex) { + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + var e = Function._validateParams(arguments, [ + {name: "action", type: Sys.NotifyCollectionChangedAction}, + {name: "newItems", mayBeNull: true, optional: true}, + {name: "newStartingIndex", type: Number, mayBeNull: true, integer: true, optional: true}, + {name: "oldItems", mayBeNull: true, optional: true}, + {name: "oldStartingIndex", type: Number, mayBeNull: true, integer: true, optional: true} + ]); + if (e) throw e; + this.action = action; + if (newItems) { + if (!(newItems instanceof Array)) { + newItems = [newItems]; + } + } + this.newItems = newItems || null; + if (typeof newStartingIndex !== "number") { + newStartingIndex = -1; + } + this.newStartingIndex = newStartingIndex; + if (oldItems) { + if (!(oldItems instanceof Array)) { + oldItems = [oldItems]; + } + } + this.oldItems = oldItems || null; + if (typeof oldStartingIndex !== "number") { + oldStartingIndex = -1; + } + this.oldStartingIndex = oldStartingIndex; +} +Sys.CollectionChange.registerClass("Sys.CollectionChange"); +Sys.NotifyCollectionChangedAction = function Sys$NotifyCollectionChangedAction() { + /// + /// + /// + /// + if (arguments.length !== 0) throw Error.parameterCount(); + throw Error.notImplemented(); +} +Sys.NotifyCollectionChangedAction.prototype = { + add: 0, + remove: 1, + reset: 2 +} +Sys.NotifyCollectionChangedAction.registerEnum('Sys.NotifyCollectionChangedAction'); +Sys.NotifyCollectionChangedEventArgs = function Sys$NotifyCollectionChangedEventArgs(changes) { + /// + /// + var e = Function._validateParams(arguments, [ + {name: "changes", type: Array, elementType: Sys.CollectionChange} + ]); + if (e) throw e; + this._changes = changes; + Sys.NotifyCollectionChangedEventArgs.initializeBase(this); +} + function Sys$NotifyCollectionChangedEventArgs$get_changes() { + /// + if (arguments.length !== 0) throw Error.parameterCount(); + return this._changes || []; + } +Sys.NotifyCollectionChangedEventArgs.prototype = { + get_changes: Sys$NotifyCollectionChangedEventArgs$get_changes +} +Sys.NotifyCollectionChangedEventArgs.registerClass("Sys.NotifyCollectionChangedEventArgs", Sys.EventArgs); +Sys.Observer = function Sys$Observer() { + throw Error.invalidOperation(); +} +Sys.Observer.registerClass("Sys.Observer"); +Sys.Observer.makeObservable = function Sys$Observer$makeObservable(target) { + /// + /// + /// + var e = Function._validateParams(arguments, [ + {name: "target"} + ]); + if (e) throw e; + var isArray = target instanceof Array, + o = Sys.Observer; + Sys.Observer._ensureObservable(target); + if (target.setValue === o._observeMethods.setValue) return target; + o._addMethods(target, o._observeMethods); + if (isArray) { + o._addMethods(target, o._arrayMethods); + } + return target; +} +Sys.Observer._ensureObservable = function Sys$Observer$_ensureObservable(target) { + var type = typeof target; + if ((type === "string") || (type === "number") || (type === "boolean") || (type === "date")) { + throw Error.invalidOperation(String.format(Sys.Res.notObservable, type)); + } +} +Sys.Observer._addMethods = function Sys$Observer$_addMethods(target, methods) { + for (var m in methods) { + if (target[m] && (target[m] !== methods[m])) { + throw Error.invalidOperation(String.format(Sys.Res.observableConflict, m)); + } + target[m] = methods[m]; + } +} +Sys.Observer._addEventHandler = function Sys$Observer$_addEventHandler(target, eventName, handler) { + Sys.Observer._getContext(target, true).events._addHandler(eventName, handler); +} +Sys.Observer.addEventHandler = function Sys$Observer$addEventHandler(target, eventName, handler) { + /// + /// + /// + /// + var e = Function._validateParams(arguments, [ + {name: "target"}, + {name: "eventName", type: String}, + {name: "handler", type: Function} + ]); + if (e) throw e; + Sys.Observer._ensureObservable(target); + Sys.Observer._addEventHandler(target, eventName, handler); +} +Sys.Observer._removeEventHandler = function Sys$Observer$_removeEventHandler(target, eventName, handler) { + Sys.Observer._getContext(target, true).events._removeHandler(eventName, handler); +} +Sys.Observer.removeEventHandler = function Sys$Observer$removeEventHandler(target, eventName, handler) { + /// + /// + /// + /// + var e = Function._validateParams(arguments, [ + {name: "target"}, + {name: "eventName", type: String}, + {name: "handler", type: Function} + ]); + if (e) throw e; + Sys.Observer._ensureObservable(target); + Sys.Observer._removeEventHandler(target, eventName, handler); +} +Sys.Observer.raiseEvent = function Sys$Observer$raiseEvent(target, eventName, eventArgs) { + /// + /// + /// + /// + var e = Function._validateParams(arguments, [ + {name: "target"}, + {name: "eventName", type: String}, + {name: "eventArgs", type: Sys.EventArgs} + ]); + if (e) throw e; + Sys.Observer._ensureObservable(target); + var ctx = Sys.Observer._getContext(target); + if (!ctx) return; + var handler = ctx.events.getHandler(eventName); + if (handler) { + handler(target, eventArgs); + } +} +Sys.Observer.addPropertyChanged = function Sys$Observer$addPropertyChanged(target, handler) { + /// + /// + /// + var e = Function._validateParams(arguments, [ + {name: "target"}, + {name: "handler", type: Function} + ]); + if (e) throw e; + Sys.Observer._ensureObservable(target); + Sys.Observer._addEventHandler(target, "propertyChanged", handler); +} +Sys.Observer.removePropertyChanged = function Sys$Observer$removePropertyChanged(target, handler) { + /// + /// + /// + var e = Function._validateParams(arguments, [ + {name: "target"}, + {name: "handler", type: Function} + ]); + if (e) throw e; + Sys.Observer._ensureObservable(target); + Sys.Observer._removeEventHandler(target, "propertyChanged", handler); +} +Sys.Observer.beginUpdate = function Sys$Observer$beginUpdate(target) { + /// + /// + var e = Function._validateParams(arguments, [ + {name: "target"} + ]); + if (e) throw e; + Sys.Observer._ensureObservable(target); + Sys.Observer._getContext(target, true).updating = true; +} +Sys.Observer.endUpdate = function Sys$Observer$endUpdate(target) { + /// + /// + var e = Function._validateParams(arguments, [ + {name: "target"} + ]); + if (e) throw e; + Sys.Observer._ensureObservable(target); + var ctx = Sys.Observer._getContext(target); + if (!ctx || !ctx.updating) return; + ctx.updating = false; + var dirty = ctx.dirty; + ctx.dirty = false; + if (dirty) { + if (target instanceof Array) { + var changes = ctx.changes; + ctx.changes = null; + Sys.Observer.raiseCollectionChanged(target, changes); + } + Sys.Observer.raisePropertyChanged(target, ""); + } +} +Sys.Observer.isUpdating = function Sys$Observer$isUpdating(target) { + /// + /// + /// + var e = Function._validateParams(arguments, [ + {name: "target"} + ]); + if (e) throw e; + Sys.Observer._ensureObservable(target); + var ctx = Sys.Observer._getContext(target); + return ctx ? ctx.updating : false; +} +Sys.Observer._setValue = function Sys$Observer$_setValue(target, propertyName, value) { + var getter, setter, mainTarget = target, path = propertyName.split('.'); + for (var i = 0, l = (path.length - 1); i < l ; i++) { + var name = path[i]; + getter = target["get_" + name]; + if (typeof (getter) === "function") { + target = getter.call(target); + } + else { + target = target[name]; + } + var type = typeof (target); + if ((target === null) || (type === "undefined")) { + throw Error.invalidOperation(String.format(Sys.Res.nullReferenceInPath, propertyName)); + } + } + var currentValue, lastPath = path[l]; + getter = target["get_" + lastPath]; + setter = target["set_" + lastPath]; + if (typeof(getter) === 'function') { + currentValue = getter.call(target); + } + else { + currentValue = target[lastPath]; + } + if (typeof(setter) === 'function') { + setter.call(target, value); + } + else { + target[lastPath] = value; + } + if (currentValue !== value) { + var ctx = Sys.Observer._getContext(mainTarget); + if (ctx && ctx.updating) { + ctx.dirty = true; + return; + }; + Sys.Observer.raisePropertyChanged(mainTarget, path[0]); + } +} +Sys.Observer.setValue = function Sys$Observer$setValue(target, propertyName, value) { + /// + /// + /// + /// + var e = Function._validateParams(arguments, [ + {name: "target"}, + {name: "propertyName", type: String}, + {name: "value", mayBeNull: true} + ]); + if (e) throw e; + Sys.Observer._ensureObservable(target); + Sys.Observer._setValue(target, propertyName, value); +} +Sys.Observer.raisePropertyChanged = function Sys$Observer$raisePropertyChanged(target, propertyName) { + /// + /// + /// + Sys.Observer.raiseEvent(target, "propertyChanged", new Sys.PropertyChangedEventArgs(propertyName)); +} +Sys.Observer.addCollectionChanged = function Sys$Observer$addCollectionChanged(target, handler) { + /// + /// + /// + var e = Function._validateParams(arguments, [ + {name: "target", type: Array, elementMayBeNull: true}, + {name: "handler", type: Function} + ]); + if (e) throw e; + Sys.Observer._addEventHandler(target, "collectionChanged", handler); +} +Sys.Observer.removeCollectionChanged = function Sys$Observer$removeCollectionChanged(target, handler) { + /// + /// + /// + var e = Function._validateParams(arguments, [ + {name: "target", type: Array, elementMayBeNull: true}, + {name: "handler", type: Function} + ]); + if (e) throw e; + Sys.Observer._removeEventHandler(target, "collectionChanged", handler); +} +Sys.Observer._collectionChange = function Sys$Observer$_collectionChange(target, change) { + var ctx = Sys.Observer._getContext(target); + if (ctx && ctx.updating) { + ctx.dirty = true; + var changes = ctx.changes; + if (!changes) { + ctx.changes = changes = [change]; + } + else { + changes.push(change); + } + } + else { + Sys.Observer.raiseCollectionChanged(target, [change]); + Sys.Observer.raisePropertyChanged(target, 'length'); + } +} +Sys.Observer.add = function Sys$Observer$add(target, item) { + /// + /// + /// + var e = Function._validateParams(arguments, [ + {name: "target", type: Array, elementMayBeNull: true}, + {name: "item", mayBeNull: true} + ]); + if (e) throw e; + var change = new Sys.CollectionChange(Sys.NotifyCollectionChangedAction.add, [item], target.length); + Array.add(target, item); + Sys.Observer._collectionChange(target, change); +} +Sys.Observer.addRange = function Sys$Observer$addRange(target, items) { + /// + /// + /// + var e = Function._validateParams(arguments, [ + {name: "target", type: Array, elementMayBeNull: true}, + {name: "items", type: Array, elementMayBeNull: true} + ]); + if (e) throw e; + var change = new Sys.CollectionChange(Sys.NotifyCollectionChangedAction.add, items, target.length); + Array.addRange(target, items); + Sys.Observer._collectionChange(target, change); +} +Sys.Observer.clear = function Sys$Observer$clear(target) { + /// + /// + var e = Function._validateParams(arguments, [ + {name: "target", type: Array, elementMayBeNull: true} + ]); + if (e) throw e; + var oldItems = Array.clone(target); + Array.clear(target); + Sys.Observer._collectionChange(target, new Sys.CollectionChange(Sys.NotifyCollectionChangedAction.reset, null, -1, oldItems, 0)); +} +Sys.Observer.insert = function Sys$Observer$insert(target, index, item) { + /// + /// + /// + /// + var e = Function._validateParams(arguments, [ + {name: "target", type: Array, elementMayBeNull: true}, + {name: "index", type: Number, integer: true}, + {name: "item", mayBeNull: true} + ]); + if (e) throw e; + Array.insert(target, index, item); + Sys.Observer._collectionChange(target, new Sys.CollectionChange(Sys.NotifyCollectionChangedAction.add, [item], index)); +} +Sys.Observer.remove = function Sys$Observer$remove(target, item) { + /// + /// + /// + /// + var e = Function._validateParams(arguments, [ + {name: "target", type: Array, elementMayBeNull: true}, + {name: "item", mayBeNull: true} + ]); + if (e) throw e; + var index = Array.indexOf(target, item); + if (index !== -1) { + Array.remove(target, item); + Sys.Observer._collectionChange(target, new Sys.CollectionChange(Sys.NotifyCollectionChangedAction.remove, null, -1, [item], index)); + return true; + } + return false; +} +Sys.Observer.removeAt = function Sys$Observer$removeAt(target, index) { + /// + /// + /// + var e = Function._validateParams(arguments, [ + {name: "target", type: Array, elementMayBeNull: true}, + {name: "index", type: Number, integer: true} + ]); + if (e) throw e; + if ((index > -1) && (index < target.length)) { + var item = target[index]; + Array.removeAt(target, index); + Sys.Observer._collectionChange(target, new Sys.CollectionChange(Sys.NotifyCollectionChangedAction.remove, null, -1, [item], index)); + } +} +Sys.Observer.raiseCollectionChanged = function Sys$Observer$raiseCollectionChanged(target, changes) { + /// + /// + /// + Sys.Observer.raiseEvent(target, "collectionChanged", new Sys.NotifyCollectionChangedEventArgs(changes)); +} +Sys.Observer._observeMethods = { + add_propertyChanged: function(handler) { + Sys.Observer._addEventHandler(this, "propertyChanged", handler); + }, + remove_propertyChanged: function(handler) { + Sys.Observer._removeEventHandler(this, "propertyChanged", handler); + }, + addEventHandler: function(eventName, handler) { + /// + /// + /// + var e = Function._validateParams(arguments, [ + {name: "eventName", type: String}, + {name: "handler", type: Function} + ]); + if (e) throw e; + Sys.Observer._addEventHandler(this, eventName, handler); + }, + removeEventHandler: function(eventName, handler) { + /// + /// + /// + var e = Function._validateParams(arguments, [ + {name: "eventName", type: String}, + {name: "handler", type: Function} + ]); + if (e) throw e; + Sys.Observer._removeEventHandler(this, eventName, handler); + }, + get_isUpdating: function() { + /// + /// + return Sys.Observer.isUpdating(this); + }, + beginUpdate: function() { + /// + Sys.Observer.beginUpdate(this); + }, + endUpdate: function() { + /// + Sys.Observer.endUpdate(this); + }, + setValue: function(name, value) { + /// + /// + /// + var e = Function._validateParams(arguments, [ + {name: "name", type: String}, + {name: "value", mayBeNull: true} + ]); + if (e) throw e; + Sys.Observer._setValue(this, name, value); + }, + raiseEvent: function(eventName, eventArgs) { + /// + /// + /// + Sys.Observer.raiseEvent(this, eventName, eventArgs); + }, + raisePropertyChanged: function(name) { + /// + /// + Sys.Observer.raiseEvent(this, "propertyChanged", new Sys.PropertyChangedEventArgs(name)); + } +} +Sys.Observer._arrayMethods = { + add_collectionChanged: function(handler) { + Sys.Observer._addEventHandler(this, "collectionChanged", handler); + }, + remove_collectionChanged: function(handler) { + Sys.Observer._removeEventHandler(this, "collectionChanged", handler); + }, + add: function(item) { + /// + /// + Sys.Observer.add(this, item); + }, + addRange: function(items) { + /// + /// + Sys.Observer.addRange(this, items); + }, + clear: function() { + /// + Sys.Observer.clear(this); + }, + insert: function(index, item) { + /// + /// + /// + Sys.Observer.insert(this, index, item); + }, + remove: function(item) { + /// + /// + /// + return Sys.Observer.remove(this, item); + }, + removeAt: function(index) { + /// + /// + Sys.Observer.removeAt(this, index); + }, + raiseCollectionChanged: function(changes) { + /// + /// + Sys.Observer.raiseEvent(this, "collectionChanged", new Sys.NotifyCollectionChangedEventArgs(changes)); + } +} +Sys.Observer._getContext = function Sys$Observer$_getContext(obj, create) { + var ctx = obj._observerContext; + if (ctx) return ctx(); + if (create) { + return (obj._observerContext = Sys.Observer._createContext())(); + } + return null; +} +Sys.Observer._createContext = function Sys$Observer$_createContext() { + var ctx = { + events: new Sys.EventHandlerList() + }; + return function() { + return ctx; + } +} +Date._appendPreOrPostMatch = function Date$_appendPreOrPostMatch(preMatch, strBuilder) { + var quoteCount = 0; + var escaped = false; + for (var i = 0, il = preMatch.length; i < il; i++) { + var c = preMatch.charAt(i); + switch (c) { + case '\'': + if (escaped) strBuilder.append("'"); + else quoteCount++; + escaped = false; + break; + case '\\': + if (escaped) strBuilder.append("\\"); + escaped = !escaped; + break; + default: + strBuilder.append(c); + escaped = false; + break; + } + } + return quoteCount; +} +Date._expandFormat = function Date$_expandFormat(dtf, format) { + if (!format) { + format = "F"; + } + var len = format.length; + if (len === 1) { + switch (format) { + case "d": + return dtf.ShortDatePattern; + case "D": + return dtf.LongDatePattern; + case "t": + return dtf.ShortTimePattern; + case "T": + return dtf.LongTimePattern; + case "f": + return dtf.LongDatePattern + " " + dtf.ShortTimePattern; + case "F": + return dtf.FullDateTimePattern; + case "M": case "m": + return dtf.MonthDayPattern; + case "s": + return dtf.SortableDateTimePattern; + case "Y": case "y": + return dtf.YearMonthPattern; + default: + throw Error.format(Sys.Res.formatInvalidString); + } + } + else if ((len === 2) && (format.charAt(0) === "%")) { + format = format.charAt(1); + } + return format; +} +Date._expandYear = function Date$_expandYear(dtf, year) { + var now = new Date(), + era = Date._getEra(now); + if (year < 100) { + var curr = Date._getEraYear(now, dtf, era); + year += curr - (curr % 100); + if (year > dtf.Calendar.TwoDigitYearMax) { + year -= 100; + } + } + return year; +} +Date._getEra = function Date$_getEra(date, eras) { + if (!eras) return 0; + var start, ticks = date.getTime(); + for (var i = 0, l = eras.length; i < l; i += 4) { + start = eras[i+2]; + if ((start === null) || (ticks >= start)) { + return i; + } + } + return 0; +} +Date._getEraYear = function Date$_getEraYear(date, dtf, era, sortable) { + var year = date.getFullYear(); + if (!sortable && dtf.eras) { + year -= dtf.eras[era + 3]; + } + return year; +} +Date._getParseRegExp = function Date$_getParseRegExp(dtf, format) { + if (!dtf._parseRegExp) { + dtf._parseRegExp = {}; + } + else if (dtf._parseRegExp[format]) { + return dtf._parseRegExp[format]; + } + var expFormat = Date._expandFormat(dtf, format); + expFormat = expFormat.replace(/([\^\$\.\*\+\?\|\[\]\(\)\{\}])/g, "\\\\$1"); + var regexp = new Sys.StringBuilder("^"); + var groups = []; + var index = 0; + var quoteCount = 0; + var tokenRegExp = Date._getTokenRegExp(); + var match; + while ((match = tokenRegExp.exec(expFormat)) !== null) { + var preMatch = expFormat.slice(index, match.index); + index = tokenRegExp.lastIndex; + quoteCount += Date._appendPreOrPostMatch(preMatch, regexp); + if ((quoteCount%2) === 1) { + regexp.append(match[0]); + continue; + } + switch (match[0]) { + case 'dddd': case 'ddd': + case 'MMMM': case 'MMM': + case 'gg': case 'g': + regexp.append("(\\D+)"); + break; + case 'tt': case 't': + regexp.append("(\\D*)"); + break; + case 'yyyy': + regexp.append("(\\d{4})"); + break; + case 'fff': + regexp.append("(\\d{3})"); + break; + case 'ff': + regexp.append("(\\d{2})"); + break; + case 'f': + regexp.append("(\\d)"); + break; + case 'dd': case 'd': + case 'MM': case 'M': + case 'yy': case 'y': + case 'HH': case 'H': + case 'hh': case 'h': + case 'mm': case 'm': + case 'ss': case 's': + regexp.append("(\\d\\d?)"); + break; + case 'zzz': + regexp.append("([+-]?\\d\\d?:\\d{2})"); + break; + case 'zz': case 'z': + regexp.append("([+-]?\\d\\d?)"); + break; + case '/': + regexp.append("(\\" + dtf.DateSeparator + ")"); + break; + default: + Sys.Debug.fail("Invalid date format pattern"); + } + Array.add(groups, match[0]); + } + Date._appendPreOrPostMatch(expFormat.slice(index), regexp); + regexp.append("$"); + var regexpStr = regexp.toString().replace(/\s+/g, "\\s+"); + var parseRegExp = {'regExp': regexpStr, 'groups': groups}; + dtf._parseRegExp[format] = parseRegExp; + return parseRegExp; +} +Date._getTokenRegExp = function Date$_getTokenRegExp() { + return /\/|dddd|ddd|dd|d|MMMM|MMM|MM|M|yyyy|yy|y|hh|h|HH|H|mm|m|ss|s|tt|t|fff|ff|f|zzz|zz|z|gg|g/g; +} +Date.parseLocale = function Date$parseLocale(value, formats) { + /// + /// + /// + /// + var e = Function._validateParams(arguments, [ + {name: "value", type: String}, + {name: "formats", mayBeNull: true, optional: true, parameterArray: true} + ]); + if (e) throw e; + return Date._parse(value, Sys.CultureInfo.CurrentCulture, arguments); +} +Date.parseInvariant = function Date$parseInvariant(value, formats) { + /// + /// + /// + /// + var e = Function._validateParams(arguments, [ + {name: "value", type: String}, + {name: "formats", mayBeNull: true, optional: true, parameterArray: true} + ]); + if (e) throw e; + return Date._parse(value, Sys.CultureInfo.InvariantCulture, arguments); +} +Date._parse = function Date$_parse(value, cultureInfo, args) { + var i, l, date, format, formats, custom = false; + for (i = 1, l = args.length; i < l; i++) { + format = args[i]; + if (format) { + custom = true; + date = Date._parseExact(value, format, cultureInfo); + if (date) return date; + } + } + if (! custom) { + formats = cultureInfo._getDateTimeFormats(); + for (i = 0, l = formats.length; i < l; i++) { + date = Date._parseExact(value, formats[i], cultureInfo); + if (date) return date; + } + } + return null; +} +Date._parseExact = function Date$_parseExact(value, format, cultureInfo) { + value = value.trim(); + var dtf = cultureInfo.dateTimeFormat, + parseInfo = Date._getParseRegExp(dtf, format), + match = new RegExp(parseInfo.regExp).exec(value); + if (match === null) return null; + + var groups = parseInfo.groups, + era = null, year = null, month = null, date = null, weekDay = null, + hour = 0, hourOffset, min = 0, sec = 0, msec = 0, tzMinOffset = null, + pmHour = false; + for (var j = 0, jl = groups.length; j < jl; j++) { + var matchGroup = match[j+1]; + if (matchGroup) { + switch (groups[j]) { + case 'dd': case 'd': + date = parseInt(matchGroup, 10); + if ((date < 1) || (date > 31)) return null; + break; + case 'MMMM': + month = cultureInfo._getMonthIndex(matchGroup); + if ((month < 0) || (month > 11)) return null; + break; + case 'MMM': + month = cultureInfo._getAbbrMonthIndex(matchGroup); + if ((month < 0) || (month > 11)) return null; + break; + case 'M': case 'MM': + month = parseInt(matchGroup, 10) - 1; + if ((month < 0) || (month > 11)) return null; + break; + case 'y': case 'yy': + year = Date._expandYear(dtf,parseInt(matchGroup, 10)); + if ((year < 0) || (year > 9999)) return null; + break; + case 'yyyy': + year = parseInt(matchGroup, 10); + if ((year < 0) || (year > 9999)) return null; + break; + case 'h': case 'hh': + hour = parseInt(matchGroup, 10); + if (hour === 12) hour = 0; + if ((hour < 0) || (hour > 11)) return null; + break; + case 'H': case 'HH': + hour = parseInt(matchGroup, 10); + if ((hour < 0) || (hour > 23)) return null; + break; + case 'm': case 'mm': + min = parseInt(matchGroup, 10); + if ((min < 0) || (min > 59)) return null; + break; + case 's': case 'ss': + sec = parseInt(matchGroup, 10); + if ((sec < 0) || (sec > 59)) return null; + break; + case 'tt': case 't': + var upperToken = matchGroup.toUpperCase(); + pmHour = (upperToken === dtf.PMDesignator.toUpperCase()); + if (!pmHour && (upperToken !== dtf.AMDesignator.toUpperCase())) return null; + break; + case 'f': + msec = parseInt(matchGroup, 10) * 100; + if ((msec < 0) || (msec > 999)) return null; + break; + case 'ff': + msec = parseInt(matchGroup, 10) * 10; + if ((msec < 0) || (msec > 999)) return null; + break; + case 'fff': + msec = parseInt(matchGroup, 10); + if ((msec < 0) || (msec > 999)) return null; + break; + case 'dddd': + weekDay = cultureInfo._getDayIndex(matchGroup); + if ((weekDay < 0) || (weekDay > 6)) return null; + break; + case 'ddd': + weekDay = cultureInfo._getAbbrDayIndex(matchGroup); + if ((weekDay < 0) || (weekDay > 6)) return null; + break; + case 'zzz': + var offsets = matchGroup.split(/:/); + if (offsets.length !== 2) return null; + hourOffset = parseInt(offsets[0], 10); + if ((hourOffset < -12) || (hourOffset > 13)) return null; + var minOffset = parseInt(offsets[1], 10); + if ((minOffset < 0) || (minOffset > 59)) return null; + tzMinOffset = (hourOffset * 60) + (matchGroup.startsWith('-')? -minOffset : minOffset); + break; + case 'z': case 'zz': + hourOffset = parseInt(matchGroup, 10); + if ((hourOffset < -12) || (hourOffset > 13)) return null; + tzMinOffset = hourOffset * 60; + break; + case 'g': case 'gg': + var eraName = matchGroup; + if (!eraName || !dtf.eras) return null; + eraName = eraName.toLowerCase().trim(); + for (var i = 0, l = dtf.eras.length; i < l; i += 4) { + if (eraName === dtf.eras[i + 1].toLowerCase()) { + era = i; + break; + } + } + if (era === null) return null; + break; + } + } + } + var result = new Date(), defaults, convert = dtf.Calendar.convert; + if (convert) { + defaults = convert.fromGregorian(result); + } + if (!convert) { + defaults = [result.getFullYear(), result.getMonth(), result.getDate()]; + } + if (year === null) { + year = defaults[0]; + } + else if (dtf.eras) { + year += dtf.eras[(era || 0) + 3]; + } + if (month === null) { + month = defaults[1]; + } + if (date === null) { + date = defaults[2]; + } + if (convert) { + result = convert.toGregorian(year, month, date); + if (result === null) return null; + } + else { + result.setFullYear(year, month, date); + if (result.getDate() !== date) return null; + if ((weekDay !== null) && (result.getDay() !== weekDay)) { + return null; + } + } + if (pmHour && (hour < 12)) { + hour += 12; + } + result.setHours(hour, min, sec, msec); + if (tzMinOffset !== null) { + var adjustedMin = result.getMinutes() - (tzMinOffset + result.getTimezoneOffset()); + result.setHours(result.getHours() + parseInt(adjustedMin/60, 10), adjustedMin%60); + } + return result; +} +Date.prototype.format = function Date$format(format) { + /// + /// + /// + var e = Function._validateParams(arguments, [ + {name: "format", type: String} + ]); + if (e) throw e; + return this._toFormattedString(format, Sys.CultureInfo.InvariantCulture); +} +Date.prototype.localeFormat = function Date$localeFormat(format) { + /// + /// + /// + var e = Function._validateParams(arguments, [ + {name: "format", type: String} + ]); + if (e) throw e; + return this._toFormattedString(format, Sys.CultureInfo.CurrentCulture); +} +Date.prototype._toFormattedString = function Date$_toFormattedString(format, cultureInfo) { + var dtf = cultureInfo.dateTimeFormat, + convert = dtf.Calendar.convert; + if (!format || !format.length || (format === 'i')) { + if (cultureInfo && cultureInfo.name.length) { + if (convert) { + return this._toFormattedString(dtf.FullDateTimePattern, cultureInfo); + } + else { + var eraDate = new Date(this.getTime()); + var era = Date._getEra(this, dtf.eras); + eraDate.setFullYear(Date._getEraYear(this, dtf, era)); + return eraDate.toLocaleString(); + } + } + else { + return this.toString(); + } + } + var eras = dtf.eras, + sortable = (format === "s"); + format = Date._expandFormat(dtf, format); + var ret = new Sys.StringBuilder(); + var hour; + function addLeadingZero(num) { + if (num < 10) { + return '0' + num; + } + return num.toString(); + } + function addLeadingZeros(num) { + if (num < 10) { + return '00' + num; + } + if (num < 100) { + return '0' + num; + } + return num.toString(); + } + function padYear(year) { + if (year < 10) { + return '000' + year; + } + else if (year < 100) { + return '00' + year; + } + else if (year < 1000) { + return '0' + year; + } + return year.toString(); + } + + var foundDay, checkedDay, dayPartRegExp = /([^d]|^)(d|dd)([^d]|$)/g; + function hasDay() { + if (foundDay || checkedDay) { + return foundDay; + } + foundDay = dayPartRegExp.test(format); + checkedDay = true; + return foundDay; + } + + var quoteCount = 0, + tokenRegExp = Date._getTokenRegExp(), + converted; + if (!sortable && convert) { + converted = convert.fromGregorian(this); + } + for (;;) { + var index = tokenRegExp.lastIndex; + var ar = tokenRegExp.exec(format); + var preMatch = format.slice(index, ar ? ar.index : format.length); + quoteCount += Date._appendPreOrPostMatch(preMatch, ret); + if (!ar) break; + if ((quoteCount%2) === 1) { + ret.append(ar[0]); + continue; + } + + function getPart(date, part) { + if (converted) { + return converted[part]; + } + switch (part) { + case 0: return date.getFullYear(); + case 1: return date.getMonth(); + case 2: return date.getDate(); + } + } + switch (ar[0]) { + case "dddd": + ret.append(dtf.DayNames[this.getDay()]); + break; + case "ddd": + ret.append(dtf.AbbreviatedDayNames[this.getDay()]); + break; + case "dd": + foundDay = true; + ret.append(addLeadingZero(getPart(this, 2))); + break; + case "d": + foundDay = true; + ret.append(getPart(this, 2)); + break; + case "MMMM": + ret.append((dtf.MonthGenitiveNames && hasDay()) + ? dtf.MonthGenitiveNames[getPart(this, 1)] + : dtf.MonthNames[getPart(this, 1)]); + break; + case "MMM": + ret.append((dtf.AbbreviatedMonthGenitiveNames && hasDay()) + ? dtf.AbbreviatedMonthGenitiveNames[getPart(this, 1)] + : dtf.AbbreviatedMonthNames[getPart(this, 1)]); + break; + case "MM": + ret.append(addLeadingZero(getPart(this, 1) + 1)); + break; + case "M": + ret.append(getPart(this, 1) + 1); + break; + case "yyyy": + ret.append(padYear(converted ? converted[0] : Date._getEraYear(this, dtf, Date._getEra(this, eras), sortable))); + break; + case "yy": + ret.append(addLeadingZero((converted ? converted[0] : Date._getEraYear(this, dtf, Date._getEra(this, eras), sortable)) % 100)); + break; + case "y": + ret.append((converted ? converted[0] : Date._getEraYear(this, dtf, Date._getEra(this, eras), sortable)) % 100); + break; + case "hh": + hour = this.getHours() % 12; + if (hour === 0) hour = 12; + ret.append(addLeadingZero(hour)); + break; + case "h": + hour = this.getHours() % 12; + if (hour === 0) hour = 12; + ret.append(hour); + break; + case "HH": + ret.append(addLeadingZero(this.getHours())); + break; + case "H": + ret.append(this.getHours()); + break; + case "mm": + ret.append(addLeadingZero(this.getMinutes())); + break; + case "m": + ret.append(this.getMinutes()); + break; + case "ss": + ret.append(addLeadingZero(this.getSeconds())); + break; + case "s": + ret.append(this.getSeconds()); + break; + case "tt": + ret.append((this.getHours() < 12) ? dtf.AMDesignator : dtf.PMDesignator); + break; + case "t": + ret.append(((this.getHours() < 12) ? dtf.AMDesignator : dtf.PMDesignator).charAt(0)); + break; + case "f": + ret.append(addLeadingZeros(this.getMilliseconds()).charAt(0)); + break; + case "ff": + ret.append(addLeadingZeros(this.getMilliseconds()).substr(0, 2)); + break; + case "fff": + ret.append(addLeadingZeros(this.getMilliseconds())); + break; + case "z": + hour = this.getTimezoneOffset() / 60; + ret.append(((hour <= 0) ? '+' : '-') + Math.floor(Math.abs(hour))); + break; + case "zz": + hour = this.getTimezoneOffset() / 60; + ret.append(((hour <= 0) ? '+' : '-') + addLeadingZero(Math.floor(Math.abs(hour)))); + break; + case "zzz": + hour = this.getTimezoneOffset() / 60; + ret.append(((hour <= 0) ? '+' : '-') + addLeadingZero(Math.floor(Math.abs(hour))) + + ":" + addLeadingZero(Math.abs(this.getTimezoneOffset() % 60))); + break; + case "g": + case "gg": + if (dtf.eras) { + ret.append(dtf.eras[Date._getEra(this, eras) + 1]); + } + break; + case "/": + ret.append(dtf.DateSeparator); + break; + default: + Sys.Debug.fail("Invalid date format pattern"); + } + } + return ret.toString(); +} +String.localeFormat = function String$localeFormat(format, args) { + /// + /// + /// + /// + var e = Function._validateParams(arguments, [ + {name: "format", type: String}, + {name: "args", mayBeNull: true, parameterArray: true} + ]); + if (e) throw e; + return String._toFormattedString(true, arguments); +} +Number.parseLocale = function Number$parseLocale(value) { + /// + /// + /// + var e = Function._validateParams(arguments, [ + {name: "value", type: String} + ], false); + if (e) throw e; + return Number._parse(value, Sys.CultureInfo.CurrentCulture); +} +Number.parseInvariant = function Number$parseInvariant(value) { + /// + /// + /// + var e = Function._validateParams(arguments, [ + {name: "value", type: String} + ], false); + if (e) throw e; + return Number._parse(value, Sys.CultureInfo.InvariantCulture); +} +Number._parse = function Number$_parse(value, cultureInfo) { + value = value.trim(); + + if (value.match(/^[+-]?infinity$/i)) { + return parseFloat(value); + } + if (value.match(/^0x[a-f0-9]+$/i)) { + return parseInt(value); + } + var numFormat = cultureInfo.numberFormat; + var signInfo = Number._parseNumberNegativePattern(value, numFormat, numFormat.NumberNegativePattern); + var sign = signInfo[0]; + var num = signInfo[1]; + + if ((sign === '') && (numFormat.NumberNegativePattern !== 1)) { + signInfo = Number._parseNumberNegativePattern(value, numFormat, 1); + sign = signInfo[0]; + num = signInfo[1]; + } + if (sign === '') sign = '+'; + + var exponent; + var intAndFraction; + var exponentPos = num.indexOf('e'); + if (exponentPos < 0) exponentPos = num.indexOf('E'); + if (exponentPos < 0) { + intAndFraction = num; + exponent = null; + } + else { + intAndFraction = num.substr(0, exponentPos); + exponent = num.substr(exponentPos + 1); + } + + var integer; + var fraction; + var decimalPos = intAndFraction.indexOf(numFormat.NumberDecimalSeparator); + if (decimalPos < 0) { + integer = intAndFraction; + fraction = null; + } + else { + integer = intAndFraction.substr(0, decimalPos); + fraction = intAndFraction.substr(decimalPos + numFormat.NumberDecimalSeparator.length); + } + + integer = integer.split(numFormat.NumberGroupSeparator).join(''); + var altNumGroupSeparator = numFormat.NumberGroupSeparator.replace(/\u00A0/g, " "); + if (numFormat.NumberGroupSeparator !== altNumGroupSeparator) { + integer = integer.split(altNumGroupSeparator).join(''); + } + + var p = sign + integer; + if (fraction !== null) { + p += '.' + fraction; + } + if (exponent !== null) { + var expSignInfo = Number._parseNumberNegativePattern(exponent, numFormat, 1); + if (expSignInfo[0] === '') { + expSignInfo[0] = '+'; + } + p += 'e' + expSignInfo[0] + expSignInfo[1]; + } + if (p.match(/^[+-]?\d*\.?\d*(e[+-]?\d+)?$/)) { + return parseFloat(p); + } + return Number.NaN; +} +Number._parseNumberNegativePattern = function Number$_parseNumberNegativePattern(value, numFormat, numberNegativePattern) { + var neg = numFormat.NegativeSign; + var pos = numFormat.PositiveSign; + switch (numberNegativePattern) { + case 4: + neg = ' ' + neg; + pos = ' ' + pos; + case 3: + if (value.endsWith(neg)) { + return ['-', value.substr(0, value.length - neg.length)]; + } + else if (value.endsWith(pos)) { + return ['+', value.substr(0, value.length - pos.length)]; + } + break; + case 2: + neg += ' '; + pos += ' '; + case 1: + if (value.startsWith(neg)) { + return ['-', value.substr(neg.length)]; + } + else if (value.startsWith(pos)) { + return ['+', value.substr(pos.length)]; + } + break; + case 0: + if (value.startsWith('(') && value.endsWith(')')) { + return ['-', value.substr(1, value.length - 2)]; + } + break; + default: + Sys.Debug.fail(""); + } + return ['', value]; +} +Number.prototype.format = function Number$format(format) { + /// + /// + /// + var e = Function._validateParams(arguments, [ + {name: "format", type: String} + ]); + if (e) throw e; + return this._toFormattedString(format, Sys.CultureInfo.InvariantCulture); +} +Number.prototype.localeFormat = function Number$localeFormat(format) { + /// + /// + /// + var e = Function._validateParams(arguments, [ + {name: "format", type: String} + ]); + if (e) throw e; + return this._toFormattedString(format, Sys.CultureInfo.CurrentCulture); +} +Number.prototype._toFormattedString = function Number$_toFormattedString(format, cultureInfo) { + if (!format || (format.length === 0) || (format === 'i')) { + if (cultureInfo && (cultureInfo.name.length > 0)) { + return this.toLocaleString(); + } + else { + return this.toString(); + } + } + + var _percentPositivePattern = ["n %", "n%", "%n" ]; + var _percentNegativePattern = ["-n %", "-n%", "-%n"]; + var _numberNegativePattern = ["(n)","-n","- n","n-","n -"]; + var _currencyPositivePattern = ["$n","n$","$ n","n $"]; + var _currencyNegativePattern = ["($n)","-$n","$-n","$n-","(n$)","-n$","n-$","n$-","-n $","-$ n","n $-","$ n-","$ -n","n- $","($ n)","(n $)"]; + function zeroPad(str, count, left) { + for (var l=str.length; l < count; l++) { + str = (left ? ('0' + str) : (str + '0')); + } + return str; + } + + function expandNumber(number, precision, groupSizes, sep, decimalChar) { + Sys.Debug.assert(groupSizes.length > 0, "groupSizes must be an array of at least 1"); + var curSize = groupSizes[0]; + var curGroupIndex = 1; + var factor = Math.pow(10, precision); + var rounded = (Math.round(number * factor) / factor); + if (!isFinite(rounded)) { + rounded = number; + } + number = rounded; + + var numberString = number.toString(); + var right = ""; + var exponent; + + + var split = numberString.split(/e/i); + numberString = split[0]; + exponent = (split.length > 1 ? parseInt(split[1]) : 0); + split = numberString.split('.'); + numberString = split[0]; + right = split.length > 1 ? split[1] : ""; + + var l; + if (exponent > 0) { + right = zeroPad(right, exponent, false); + numberString += right.slice(0, exponent); + right = right.substr(exponent); + } + else if (exponent < 0) { + exponent = -exponent; + numberString = zeroPad(numberString, exponent+1, true); + right = numberString.slice(-exponent, numberString.length) + right; + numberString = numberString.slice(0, -exponent); + } + if (precision > 0) { + if (right.length > precision) { + right = right.slice(0, precision); + } + else { + right = zeroPad(right, precision, false); + } + right = decimalChar + right; + } + else { + right = ""; + } + var stringIndex = numberString.length-1; + var ret = ""; + while (stringIndex >= 0) { + if (curSize === 0 || curSize > stringIndex) { + if (ret.length > 0) + return numberString.slice(0, stringIndex + 1) + sep + ret + right; + else + return numberString.slice(0, stringIndex + 1) + right; + } + if (ret.length > 0) + ret = numberString.slice(stringIndex - curSize + 1, stringIndex+1) + sep + ret; + else + ret = numberString.slice(stringIndex - curSize + 1, stringIndex+1); + stringIndex -= curSize; + if (curGroupIndex < groupSizes.length) { + curSize = groupSizes[curGroupIndex]; + curGroupIndex++; + } + } + return numberString.slice(0, stringIndex + 1) + sep + ret + right; + } + var nf = cultureInfo.numberFormat; + var number = Math.abs(this); + if (!format) + format = "D"; + var precision = -1; + if (format.length > 1) precision = parseInt(format.slice(1), 10); + var pattern; + switch (format.charAt(0)) { + case "d": + case "D": + pattern = 'n'; + if (precision !== -1) { + number = zeroPad(""+number, precision, true); + } + if (this < 0) number = -number; + break; + case "c": + case "C": + if (this < 0) pattern = _currencyNegativePattern[nf.CurrencyNegativePattern]; + else pattern = _currencyPositivePattern[nf.CurrencyPositivePattern]; + if (precision === -1) precision = nf.CurrencyDecimalDigits; + number = expandNumber(Math.abs(this), precision, nf.CurrencyGroupSizes, nf.CurrencyGroupSeparator, nf.CurrencyDecimalSeparator); + break; + case "n": + case "N": + if (this < 0) pattern = _numberNegativePattern[nf.NumberNegativePattern]; + else pattern = 'n'; + if (precision === -1) precision = nf.NumberDecimalDigits; + number = expandNumber(Math.abs(this), precision, nf.NumberGroupSizes, nf.NumberGroupSeparator, nf.NumberDecimalSeparator); + break; + case "p": + case "P": + if (this < 0) pattern = _percentNegativePattern[nf.PercentNegativePattern]; + else pattern = _percentPositivePattern[nf.PercentPositivePattern]; + if (precision === -1) precision = nf.PercentDecimalDigits; + number = expandNumber(Math.abs(this) * 100, precision, nf.PercentGroupSizes, nf.PercentGroupSeparator, nf.PercentDecimalSeparator); + break; + default: + throw Error.format(Sys.Res.formatBadFormatSpecifier); + } + var regex = /n|\$|-|%/g; + var ret = ""; + for (;;) { + var index = regex.lastIndex; + var ar = regex.exec(pattern); + ret += pattern.slice(index, ar ? ar.index : pattern.length); + if (!ar) + break; + switch (ar[0]) { + case "n": + ret += number; + break; + case "$": + ret += nf.CurrencySymbol; + break; + case "-": + if (/[1-9]/.test(number)) { + ret += nf.NegativeSign; + } + break; + case "%": + ret += nf.PercentSymbol; + break; + default: + Sys.Debug.fail("Invalid number format pattern"); + } + } + return ret; +} + +Sys.CultureInfo = function Sys$CultureInfo(name, numberFormat, dateTimeFormat) { + /// + /// + /// + /// + var e = Function._validateParams(arguments, [ + {name: "name", type: String}, + {name: "numberFormat", type: Object}, + {name: "dateTimeFormat", type: Object} + ]); + if (e) throw e; + this.name = name; + this.numberFormat = numberFormat; + this.dateTimeFormat = dateTimeFormat; +} + function Sys$CultureInfo$_getDateTimeFormats() { + if (! this._dateTimeFormats) { + var dtf = this.dateTimeFormat; + this._dateTimeFormats = + [ dtf.MonthDayPattern, + dtf.YearMonthPattern, + dtf.ShortDatePattern, + dtf.ShortTimePattern, + dtf.LongDatePattern, + dtf.LongTimePattern, + dtf.FullDateTimePattern, + dtf.RFC1123Pattern, + dtf.SortableDateTimePattern, + dtf.UniversalSortableDateTimePattern ]; + } + return this._dateTimeFormats; + } + function Sys$CultureInfo$_getIndex(value, a1, a2) { + var upper = this._toUpper(value), + i = Array.indexOf(a1, upper); + if (i === -1) { + i = Array.indexOf(a2, upper); + } + return i; + } + function Sys$CultureInfo$_getMonthIndex(value) { + if (!this._upperMonths) { + this._upperMonths = this._toUpperArray(this.dateTimeFormat.MonthNames); + this._upperMonthsGenitive = this._toUpperArray(this.dateTimeFormat.MonthGenitiveNames); + } + return this._getIndex(value, this._upperMonths, this._upperMonthsGenitive); + } + function Sys$CultureInfo$_getAbbrMonthIndex(value) { + if (!this._upperAbbrMonths) { + this._upperAbbrMonths = this._toUpperArray(this.dateTimeFormat.AbbreviatedMonthNames); + this._upperAbbrMonthsGenitive = this._toUpperArray(this.dateTimeFormat.AbbreviatedMonthGenitiveNames); + } + return this._getIndex(value, this._upperAbbrMonths, this._upperAbbrMonthsGenitive); + } + function Sys$CultureInfo$_getDayIndex(value) { + if (!this._upperDays) { + this._upperDays = this._toUpperArray(this.dateTimeFormat.DayNames); + } + return Array.indexOf(this._upperDays, this._toUpper(value)); + } + function Sys$CultureInfo$_getAbbrDayIndex(value) { + if (!this._upperAbbrDays) { + this._upperAbbrDays = this._toUpperArray(this.dateTimeFormat.AbbreviatedDayNames); + } + return Array.indexOf(this._upperAbbrDays, this._toUpper(value)); + } + function Sys$CultureInfo$_toUpperArray(arr) { + var result = []; + for (var i = 0, il = arr.length; i < il; i++) { + result[i] = this._toUpper(arr[i]); + } + return result; + } + function Sys$CultureInfo$_toUpper(value) { + return value.split("\u00A0").join(' ').toUpperCase(); + } +Sys.CultureInfo.prototype = { + _getDateTimeFormats: Sys$CultureInfo$_getDateTimeFormats, + _getIndex: Sys$CultureInfo$_getIndex, + _getMonthIndex: Sys$CultureInfo$_getMonthIndex, + _getAbbrMonthIndex: Sys$CultureInfo$_getAbbrMonthIndex, + _getDayIndex: Sys$CultureInfo$_getDayIndex, + _getAbbrDayIndex: Sys$CultureInfo$_getAbbrDayIndex, + _toUpperArray: Sys$CultureInfo$_toUpperArray, + _toUpper: Sys$CultureInfo$_toUpper +} +Sys.CultureInfo.registerClass('Sys.CultureInfo'); +Sys.CultureInfo._parse = function Sys$CultureInfo$_parse(value) { + var dtf = value.dateTimeFormat; + if (dtf && !dtf.eras) { + dtf.eras = value.eras; + } + return new Sys.CultureInfo(value.name, value.numberFormat, dtf); +} +Sys.CultureInfo.InvariantCulture = Sys.CultureInfo._parse({"name":"","numberFormat":{"CurrencyDecimalDigits":2,"CurrencyDecimalSeparator":".","IsReadOnly":true,"CurrencyGroupSizes":[3],"NumberGroupSizes":[3],"PercentGroupSizes":[3],"CurrencyGroupSeparator":",","CurrencySymbol":"\u00A4","NaNSymbol":"NaN","CurrencyNegativePattern":0,"NumberNegativePattern":1,"PercentPositivePattern":0,"PercentNegativePattern":0,"NegativeInfinitySymbol":"-Infinity","NegativeSign":"-","NumberDecimalDigits":2,"NumberDecimalSeparator":".","NumberGroupSeparator":",","CurrencyPositivePattern":0,"PositiveInfinitySymbol":"Infinity","PositiveSign":"+","PercentDecimalDigits":2,"PercentDecimalSeparator":".","PercentGroupSeparator":",","PercentSymbol":"%","PerMilleSymbol":"\u2030","NativeDigits":["0","1","2","3","4","5","6","7","8","9"],"DigitSubstitution":1},"dateTimeFormat":{"AMDesignator":"AM","Calendar":{"MinSupportedDateTime":"@-62135568000000@","MaxSupportedDateTime":"@253402300799999@","AlgorithmType":1,"CalendarType":1,"Eras":[1],"TwoDigitYearMax":2029,"IsReadOnly":true},"DateSeparator":"/","FirstDayOfWeek":0,"CalendarWeekRule":0,"FullDateTimePattern":"dddd, dd MMMM yyyy HH:mm:ss","LongDatePattern":"dddd, dd MMMM yyyy","LongTimePattern":"HH:mm:ss","MonthDayPattern":"MMMM dd","PMDesignator":"PM","RFC1123Pattern":"ddd, dd MMM yyyy HH\':\'mm\':\'ss \'GMT\'","ShortDatePattern":"MM/dd/yyyy","ShortTimePattern":"HH:mm","SortableDateTimePattern":"yyyy\'-\'MM\'-\'dd\'T\'HH\':\'mm\':\'ss","TimeSeparator":":","UniversalSortableDateTimePattern":"yyyy\'-\'MM\'-\'dd HH\':\'mm\':\'ss\'Z\'","YearMonthPattern":"yyyy MMMM","AbbreviatedDayNames":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"ShortestDayNames":["Su","Mo","Tu","We","Th","Fr","Sa"],"DayNames":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"AbbreviatedMonthNames":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec",""],"MonthNames":["January","February","March","April","May","June","July","August","September","October","November","December",""],"IsReadOnly":true,"NativeCalendarName":"Gregorian Calendar","AbbreviatedMonthGenitiveNames":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec",""],"MonthGenitiveNames":["January","February","March","April","May","June","July","August","September","October","November","December",""]},"eras":[1,"A.D.",null,0]}); +if (typeof(__cultureInfo) === "object") { + Sys.CultureInfo.CurrentCulture = Sys.CultureInfo._parse(__cultureInfo); + delete __cultureInfo; +} +else { + Sys.CultureInfo.CurrentCulture = Sys.CultureInfo._parse({"name":"en-US","numberFormat":{"CurrencyDecimalDigits":2,"CurrencyDecimalSeparator":".","IsReadOnly":false,"CurrencyGroupSizes":[3],"NumberGroupSizes":[3],"PercentGroupSizes":[3],"CurrencyGroupSeparator":",","CurrencySymbol":"$","NaNSymbol":"NaN","CurrencyNegativePattern":0,"NumberNegativePattern":1,"PercentPositivePattern":0,"PercentNegativePattern":0,"NegativeInfinitySymbol":"-Infinity","NegativeSign":"-","NumberDecimalDigits":2,"NumberDecimalSeparator":".","NumberGroupSeparator":",","CurrencyPositivePattern":0,"PositiveInfinitySymbol":"Infinity","PositiveSign":"+","PercentDecimalDigits":2,"PercentDecimalSeparator":".","PercentGroupSeparator":",","PercentSymbol":"%","PerMilleSymbol":"\u2030","NativeDigits":["0","1","2","3","4","5","6","7","8","9"],"DigitSubstitution":1},"dateTimeFormat":{"AMDesignator":"AM","Calendar":{"MinSupportedDateTime":"@-62135568000000@","MaxSupportedDateTime":"@253402300799999@","AlgorithmType":1,"CalendarType":1,"Eras":[1],"TwoDigitYearMax":2029,"IsReadOnly":false},"DateSeparator":"/","FirstDayOfWeek":0,"CalendarWeekRule":0,"FullDateTimePattern":"dddd, MMMM dd, yyyy h:mm:ss tt","LongDatePattern":"dddd, MMMM dd, yyyy","LongTimePattern":"h:mm:ss tt","MonthDayPattern":"MMMM dd","PMDesignator":"PM","RFC1123Pattern":"ddd, dd MMM yyyy HH\':\'mm\':\'ss \'GMT\'","ShortDatePattern":"M/d/yyyy","ShortTimePattern":"h:mm tt","SortableDateTimePattern":"yyyy\'-\'MM\'-\'dd\'T\'HH\':\'mm\':\'ss","TimeSeparator":":","UniversalSortableDateTimePattern":"yyyy\'-\'MM\'-\'dd HH\':\'mm\':\'ss\'Z\'","YearMonthPattern":"MMMM, yyyy","AbbreviatedDayNames":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"ShortestDayNames":["Su","Mo","Tu","We","Th","Fr","Sa"],"DayNames":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"AbbreviatedMonthNames":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec",""],"MonthNames":["January","February","March","April","May","June","July","August","September","October","November","December",""],"IsReadOnly":false,"NativeCalendarName":"Gregorian Calendar","AbbreviatedMonthGenitiveNames":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec",""],"MonthGenitiveNames":["January","February","March","April","May","June","July","August","September","October","November","December",""]},"eras":[1,"A.D.",null,0]}); +} +Type.registerNamespace('Sys.Serialization'); +Sys.Serialization.JavaScriptSerializer = function Sys$Serialization$JavaScriptSerializer() { + /// + if (arguments.length !== 0) throw Error.parameterCount(); +} +Sys.Serialization.JavaScriptSerializer.registerClass('Sys.Serialization.JavaScriptSerializer'); +Sys.Serialization.JavaScriptSerializer._charsToEscapeRegExs = []; +Sys.Serialization.JavaScriptSerializer._charsToEscape = []; +Sys.Serialization.JavaScriptSerializer._dateRegEx = new RegExp('(^|[^\\\\])\\"\\\\/Date\\((-?[0-9]+)(?:[a-zA-Z]|(?:\\+|-)[0-9]{4})?\\)\\\\/\\"', 'g'); +Sys.Serialization.JavaScriptSerializer._escapeChars = {}; +Sys.Serialization.JavaScriptSerializer._escapeRegEx = new RegExp('["\\\\\\x00-\\x1F]', 'i'); +Sys.Serialization.JavaScriptSerializer._escapeRegExGlobal = new RegExp('["\\\\\\x00-\\x1F]', 'g'); +Sys.Serialization.JavaScriptSerializer._jsonRegEx = new RegExp('[^,:{}\\[\\]0-9.\\-+Eaeflnr-u \\n\\r\\t]', 'g'); +Sys.Serialization.JavaScriptSerializer._jsonStringRegEx = new RegExp('"(\\\\.|[^"\\\\])*"', 'g'); +Sys.Serialization.JavaScriptSerializer._serverTypeFieldName = '__type'; +Sys.Serialization.JavaScriptSerializer._init = function Sys$Serialization$JavaScriptSerializer$_init() { + var replaceChars = ['\\u0000','\\u0001','\\u0002','\\u0003','\\u0004','\\u0005','\\u0006','\\u0007', + '\\b','\\t','\\n','\\u000b','\\f','\\r','\\u000e','\\u000f','\\u0010','\\u0011', + '\\u0012','\\u0013','\\u0014','\\u0015','\\u0016','\\u0017','\\u0018','\\u0019', + '\\u001a','\\u001b','\\u001c','\\u001d','\\u001e','\\u001f']; + Sys.Serialization.JavaScriptSerializer._charsToEscape[0] = '\\'; + Sys.Serialization.JavaScriptSerializer._charsToEscapeRegExs['\\'] = new RegExp('\\\\', 'g'); + Sys.Serialization.JavaScriptSerializer._escapeChars['\\'] = '\\\\'; + Sys.Serialization.JavaScriptSerializer._charsToEscape[1] = '"'; + Sys.Serialization.JavaScriptSerializer._charsToEscapeRegExs['"'] = new RegExp('"', 'g'); + Sys.Serialization.JavaScriptSerializer._escapeChars['"'] = '\\"'; + for (var i = 0; i < 32; i++) { + var c = String.fromCharCode(i); + Sys.Serialization.JavaScriptSerializer._charsToEscape[i+2] = c; + Sys.Serialization.JavaScriptSerializer._charsToEscapeRegExs[c] = new RegExp(c, 'g'); + Sys.Serialization.JavaScriptSerializer._escapeChars[c] = replaceChars[i]; + } +} +Sys.Serialization.JavaScriptSerializer._serializeBooleanWithBuilder = function Sys$Serialization$JavaScriptSerializer$_serializeBooleanWithBuilder(object, stringBuilder) { + stringBuilder.append(object.toString()); +} +Sys.Serialization.JavaScriptSerializer._serializeNumberWithBuilder = function Sys$Serialization$JavaScriptSerializer$_serializeNumberWithBuilder(object, stringBuilder) { + if (isFinite(object)) { + stringBuilder.append(String(object)); + } + else { + throw Error.invalidOperation(Sys.Res.cannotSerializeNonFiniteNumbers); + } +} +Sys.Serialization.JavaScriptSerializer._serializeStringWithBuilder = function Sys$Serialization$JavaScriptSerializer$_serializeStringWithBuilder(string, stringBuilder) { + stringBuilder.append('"'); + if (Sys.Serialization.JavaScriptSerializer._escapeRegEx.test(string)) { + if (Sys.Serialization.JavaScriptSerializer._charsToEscape.length === 0) { + Sys.Serialization.JavaScriptSerializer._init(); + } + if (string.length < 128) { + string = string.replace(Sys.Serialization.JavaScriptSerializer._escapeRegExGlobal, + function(x) { return Sys.Serialization.JavaScriptSerializer._escapeChars[x]; }); + } + else { + for (var i = 0; i < 34; i++) { + var c = Sys.Serialization.JavaScriptSerializer._charsToEscape[i]; + if (string.indexOf(c) !== -1) { + if (Sys.Browser.agent === Sys.Browser.Opera || Sys.Browser.agent === Sys.Browser.FireFox) { + string = string.split(c).join(Sys.Serialization.JavaScriptSerializer._escapeChars[c]); + } + else { + string = string.replace(Sys.Serialization.JavaScriptSerializer._charsToEscapeRegExs[c], + Sys.Serialization.JavaScriptSerializer._escapeChars[c]); + } + } + } + } + } + stringBuilder.append(string); + stringBuilder.append('"'); +} +Sys.Serialization.JavaScriptSerializer._serializeWithBuilder = function Sys$Serialization$JavaScriptSerializer$_serializeWithBuilder(object, stringBuilder, sort, prevObjects) { + var i; + switch (typeof object) { + case 'object': + if (object) { + if (prevObjects){ + for( var j = 0; j < prevObjects.length; j++) { + if (prevObjects[j] === object) { + throw Error.invalidOperation(Sys.Res.cannotSerializeObjectWithCycle); + } + } + } + else { + prevObjects = new Array(); + } + try { + Array.add(prevObjects, object); + + if (Number.isInstanceOfType(object)){ + Sys.Serialization.JavaScriptSerializer._serializeNumberWithBuilder(object, stringBuilder); + } + else if (Boolean.isInstanceOfType(object)){ + Sys.Serialization.JavaScriptSerializer._serializeBooleanWithBuilder(object, stringBuilder); + } + else if (String.isInstanceOfType(object)){ + Sys.Serialization.JavaScriptSerializer._serializeStringWithBuilder(object, stringBuilder); + } + + else if (Array.isInstanceOfType(object)) { + stringBuilder.append('['); + + for (i = 0; i < object.length; ++i) { + if (i > 0) { + stringBuilder.append(','); + } + Sys.Serialization.JavaScriptSerializer._serializeWithBuilder(object[i], stringBuilder,false,prevObjects); + } + stringBuilder.append(']'); + } + else { + if (Date.isInstanceOfType(object)) { + stringBuilder.append('"\\/Date('); + stringBuilder.append(object.getTime()); + stringBuilder.append(')\\/"'); + break; + } + var properties = []; + var propertyCount = 0; + for (var name in object) { + if (name.startsWith('$')) { + continue; + } + if (name === Sys.Serialization.JavaScriptSerializer._serverTypeFieldName && propertyCount !== 0){ + properties[propertyCount++] = properties[0]; + properties[0] = name; + } + else{ + properties[propertyCount++] = name; + } + } + if (sort) properties.sort(); + stringBuilder.append('{'); + var needComma = false; + + for (i=0; i + /// + /// + var e = Function._validateParams(arguments, [ + {name: "object", mayBeNull: true} + ]); + if (e) throw e; + var stringBuilder = new Sys.StringBuilder(); + Sys.Serialization.JavaScriptSerializer._serializeWithBuilder(object, stringBuilder, false); + return stringBuilder.toString(); +} +Sys.Serialization.JavaScriptSerializer.deserialize = function Sys$Serialization$JavaScriptSerializer$deserialize(data, secure) { + /// + /// + /// + /// + var e = Function._validateParams(arguments, [ + {name: "data", type: String}, + {name: "secure", type: Boolean, optional: true} + ]); + if (e) throw e; + + if (data.length === 0) throw Error.argument('data', Sys.Res.cannotDeserializeEmptyString); + try { + var exp = data.replace(Sys.Serialization.JavaScriptSerializer._dateRegEx, "$1new Date($2)"); + + if (secure && Sys.Serialization.JavaScriptSerializer._jsonRegEx.test( + exp.replace(Sys.Serialization.JavaScriptSerializer._jsonStringRegEx, ''))) throw null; + return eval('(' + exp + ')'); + } + catch (e) { + throw Error.argument('data', Sys.Res.cannotDeserializeInvalidJson); + } +} +Type.registerNamespace('Sys.UI'); + +Sys.EventHandlerList = function Sys$EventHandlerList() { + /// + if (arguments.length !== 0) throw Error.parameterCount(); + this._list = {}; +} + function Sys$EventHandlerList$_addHandler(id, handler) { + Array.add(this._getEvent(id, true), handler); + } + function Sys$EventHandlerList$addHandler(id, handler) { + /// + /// + /// + var e = Function._validateParams(arguments, [ + {name: "id", type: String}, + {name: "handler", type: Function} + ]); + if (e) throw e; + this._addHandler(id, handler); + } + function Sys$EventHandlerList$_removeHandler(id, handler) { + var evt = this._getEvent(id); + if (!evt) return; + Array.remove(evt, handler); + } + function Sys$EventHandlerList$removeHandler(id, handler) { + /// + /// + /// + var e = Function._validateParams(arguments, [ + {name: "id", type: String}, + {name: "handler", type: Function} + ]); + if (e) throw e; + this._removeHandler(id, handler); + } + function Sys$EventHandlerList$getHandler(id) { + /// + /// + /// + var e = Function._validateParams(arguments, [ + {name: "id", type: String} + ]); + if (e) throw e; + var evt = this._getEvent(id); + if (!evt || (evt.length === 0)) return null; + evt = Array.clone(evt); + return function(source, args) { + for (var i = 0, l = evt.length; i < l; i++) { + evt[i](source, args); + } + }; + } + function Sys$EventHandlerList$_getEvent(id, create) { + if (!this._list[id]) { + if (!create) return null; + this._list[id] = []; + } + return this._list[id]; + } +Sys.EventHandlerList.prototype = { + _addHandler: Sys$EventHandlerList$_addHandler, + addHandler: Sys$EventHandlerList$addHandler, + _removeHandler: Sys$EventHandlerList$_removeHandler, + removeHandler: Sys$EventHandlerList$removeHandler, + getHandler: Sys$EventHandlerList$getHandler, + _getEvent: Sys$EventHandlerList$_getEvent +} +Sys.EventHandlerList.registerClass('Sys.EventHandlerList'); +Sys.CommandEventArgs = function Sys$CommandEventArgs(commandName, commandArgument, commandSource) { + /// + /// + /// + /// + var e = Function._validateParams(arguments, [ + {name: "commandName", type: String}, + {name: "commandArgument", mayBeNull: true}, + {name: "commandSource", mayBeNull: true} + ]); + if (e) throw e; + Sys.CommandEventArgs.initializeBase(this); + this._commandName = commandName; + this._commandArgument = commandArgument; + this._commandSource = commandSource; +} + function Sys$CommandEventArgs$get_commandName() { + /// + if (arguments.length !== 0) throw Error.parameterCount(); + return this._commandName; + } + function Sys$CommandEventArgs$get_commandArgument() { + /// + if (arguments.length !== 0) throw Error.parameterCount(); + return this._commandArgument; + } + function Sys$CommandEventArgs$get_commandSource() { + /// + if (arguments.length !== 0) throw Error.parameterCount(); + return this._commandSource; + } +Sys.CommandEventArgs.prototype = { + _commandName: null, + _commandArgument: null, + _commandSource: null, + get_commandName: Sys$CommandEventArgs$get_commandName, + get_commandArgument: Sys$CommandEventArgs$get_commandArgument, + get_commandSource: Sys$CommandEventArgs$get_commandSource +} +Sys.CommandEventArgs.registerClass("Sys.CommandEventArgs", Sys.CancelEventArgs); + +Sys.INotifyPropertyChange = function Sys$INotifyPropertyChange() { + /// + if (arguments.length !== 0) throw Error.parameterCount(); + throw Error.notImplemented(); +} + function Sys$INotifyPropertyChange$add_propertyChanged(handler) { + /// + var e = Function._validateParams(arguments, [{name: "handler", type: Function}]); + if (e) throw e; + throw Error.notImplemented(); + } + function Sys$INotifyPropertyChange$remove_propertyChanged(handler) { + var e = Function._validateParams(arguments, [{name: "handler", type: Function}]); + if (e) throw e; + throw Error.notImplemented(); + } +Sys.INotifyPropertyChange.prototype = { + add_propertyChanged: Sys$INotifyPropertyChange$add_propertyChanged, + remove_propertyChanged: Sys$INotifyPropertyChange$remove_propertyChanged +} +Sys.INotifyPropertyChange.registerInterface('Sys.INotifyPropertyChange'); + +Sys.PropertyChangedEventArgs = function Sys$PropertyChangedEventArgs(propertyName) { + /// + /// + var e = Function._validateParams(arguments, [ + {name: "propertyName", type: String} + ]); + if (e) throw e; + Sys.PropertyChangedEventArgs.initializeBase(this); + this._propertyName = propertyName; +} + + function Sys$PropertyChangedEventArgs$get_propertyName() { + /// + if (arguments.length !== 0) throw Error.parameterCount(); + return this._propertyName; + } +Sys.PropertyChangedEventArgs.prototype = { + get_propertyName: Sys$PropertyChangedEventArgs$get_propertyName +} +Sys.PropertyChangedEventArgs.registerClass('Sys.PropertyChangedEventArgs', Sys.EventArgs); + +Sys.INotifyDisposing = function Sys$INotifyDisposing() { + /// + if (arguments.length !== 0) throw Error.parameterCount(); + throw Error.notImplemented(); +} + function Sys$INotifyDisposing$add_disposing(handler) { + /// + var e = Function._validateParams(arguments, [{name: "handler", type: Function}]); + if (e) throw e; + throw Error.notImplemented(); + } + function Sys$INotifyDisposing$remove_disposing(handler) { + var e = Function._validateParams(arguments, [{name: "handler", type: Function}]); + if (e) throw e; + throw Error.notImplemented(); + } +Sys.INotifyDisposing.prototype = { + add_disposing: Sys$INotifyDisposing$add_disposing, + remove_disposing: Sys$INotifyDisposing$remove_disposing +} +Sys.INotifyDisposing.registerInterface("Sys.INotifyDisposing"); + +Sys.Component = function Sys$Component() { + /// + if (arguments.length !== 0) throw Error.parameterCount(); + if (Sys.Application) Sys.Application.registerDisposableObject(this); +} + function Sys$Component$get_events() { + /// + if (arguments.length !== 0) throw Error.parameterCount(); + if (!this._events) { + this._events = new Sys.EventHandlerList(); + } + return this._events; + } + function Sys$Component$get_id() { + /// + if (arguments.length !== 0) throw Error.parameterCount(); + return this._id; + } + function Sys$Component$set_id(value) { + var e = Function._validateParams(arguments, [{name: "value", type: String}]); + if (e) throw e; + if (this._idSet) throw Error.invalidOperation(Sys.Res.componentCantSetIdTwice); + this._idSet = true; + var oldId = this.get_id(); + if (oldId && Sys.Application.findComponent(oldId)) throw Error.invalidOperation(Sys.Res.componentCantSetIdAfterAddedToApp); + this._id = value; + } + function Sys$Component$get_isInitialized() { + /// + if (arguments.length !== 0) throw Error.parameterCount(); + return this._initialized; + } + function Sys$Component$get_isUpdating() { + /// + if (arguments.length !== 0) throw Error.parameterCount(); + return this._updating; + } + function Sys$Component$add_disposing(handler) { + /// + var e = Function._validateParams(arguments, [{name: "handler", type: Function}]); + if (e) throw e; + this.get_events().addHandler("disposing", handler); + } + function Sys$Component$remove_disposing(handler) { + var e = Function._validateParams(arguments, [{name: "handler", type: Function}]); + if (e) throw e; + this.get_events().removeHandler("disposing", handler); + } + function Sys$Component$add_propertyChanged(handler) { + /// + var e = Function._validateParams(arguments, [{name: "handler", type: Function}]); + if (e) throw e; + this.get_events().addHandler("propertyChanged", handler); + } + function Sys$Component$remove_propertyChanged(handler) { + var e = Function._validateParams(arguments, [{name: "handler", type: Function}]); + if (e) throw e; + this.get_events().removeHandler("propertyChanged", handler); + } + function Sys$Component$beginUpdate() { + this._updating = true; + } + function Sys$Component$dispose() { + if (this._events) { + var handler = this._events.getHandler("disposing"); + if (handler) { + handler(this, Sys.EventArgs.Empty); + } + } + delete this._events; + Sys.Application.unregisterDisposableObject(this); + Sys.Application.removeComponent(this); + } + function Sys$Component$endUpdate() { + this._updating = false; + if (!this._initialized) this.initialize(); + this.updated(); + } + function Sys$Component$initialize() { + this._initialized = true; + } + function Sys$Component$raisePropertyChanged(propertyName) { + /// + /// + var e = Function._validateParams(arguments, [ + {name: "propertyName", type: String} + ]); + if (e) throw e; + if (!this._events) return; + var handler = this._events.getHandler("propertyChanged"); + if (handler) { + handler(this, new Sys.PropertyChangedEventArgs(propertyName)); + } + } + function Sys$Component$updated() { + } +Sys.Component.prototype = { + _id: null, + _idSet: false, + _initialized: false, + _updating: false, + get_events: Sys$Component$get_events, + get_id: Sys$Component$get_id, + set_id: Sys$Component$set_id, + get_isInitialized: Sys$Component$get_isInitialized, + get_isUpdating: Sys$Component$get_isUpdating, + add_disposing: Sys$Component$add_disposing, + remove_disposing: Sys$Component$remove_disposing, + add_propertyChanged: Sys$Component$add_propertyChanged, + remove_propertyChanged: Sys$Component$remove_propertyChanged, + beginUpdate: Sys$Component$beginUpdate, + dispose: Sys$Component$dispose, + endUpdate: Sys$Component$endUpdate, + initialize: Sys$Component$initialize, + raisePropertyChanged: Sys$Component$raisePropertyChanged, + updated: Sys$Component$updated +} +Sys.Component.registerClass('Sys.Component', null, Sys.IDisposable, Sys.INotifyPropertyChange, Sys.INotifyDisposing); +function Sys$Component$_setProperties(target, properties) { + /// + /// + /// + var e = Function._validateParams(arguments, [ + {name: "target"}, + {name: "properties"} + ]); + if (e) throw e; + var current; + var targetType = Object.getType(target); + var isObject = (targetType === Object) || (targetType === Sys.UI.DomElement); + var isComponent = Sys.Component.isInstanceOfType(target) && !target.get_isUpdating(); + if (isComponent) target.beginUpdate(); + for (var name in properties) { + var val = properties[name]; + var getter = isObject ? null : target["get_" + name]; + if (isObject || typeof(getter) !== 'function') { + var targetVal = target[name]; + if (!isObject && typeof(targetVal) === 'undefined') throw Error.invalidOperation(String.format(Sys.Res.propertyUndefined, name)); + if (!val || (typeof(val) !== 'object') || (isObject && !targetVal)) { + target[name] = val; + } + else { + Sys$Component$_setProperties(targetVal, val); + } + } + else { + var setter = target["set_" + name]; + if (typeof(setter) === 'function') { + setter.apply(target, [val]); + } + else if (val instanceof Array) { + current = getter.apply(target); + if (!(current instanceof Array)) throw new Error.invalidOperation(String.format(Sys.Res.propertyNotAnArray, name)); + for (var i = 0, j = current.length, l= val.length; i < l; i++, j++) { + current[j] = val[i]; + } + } + else if ((typeof(val) === 'object') && (Object.getType(val) === Object)) { + current = getter.apply(target); + if ((typeof(current) === 'undefined') || (current === null)) throw new Error.invalidOperation(String.format(Sys.Res.propertyNullOrUndefined, name)); + Sys$Component$_setProperties(current, val); + } + else { + throw new Error.invalidOperation(String.format(Sys.Res.propertyNotWritable, name)); + } + } + } + if (isComponent) target.endUpdate(); +} +function Sys$Component$_setReferences(component, references) { + for (var name in references) { + var setter = component["set_" + name]; + var reference = $find(references[name]); + if (typeof(setter) !== 'function') throw new Error.invalidOperation(String.format(Sys.Res.propertyNotWritable, name)); + if (!reference) throw Error.invalidOperation(String.format(Sys.Res.referenceNotFound, references[name])); + setter.apply(component, [reference]); + } +} +var $create = Sys.Component.create = function Sys$Component$create(type, properties, events, references, element) { + /// + /// + /// + /// + /// + /// + /// + var e = Function._validateParams(arguments, [ + {name: "type", type: Type}, + {name: "properties", mayBeNull: true, optional: true}, + {name: "events", mayBeNull: true, optional: true}, + {name: "references", mayBeNull: true, optional: true}, + {name: "element", mayBeNull: true, domElement: true, optional: true} + ]); + if (e) throw e; + if (!type.inheritsFrom(Sys.Component)) { + throw Error.argument('type', String.format(Sys.Res.createNotComponent, type.getName())); + } + if (type.inheritsFrom(Sys.UI.Behavior) || type.inheritsFrom(Sys.UI.Control)) { + if (!element) throw Error.argument('element', Sys.Res.createNoDom); + } + else if (element) throw Error.argument('element', Sys.Res.createComponentOnDom); + var component = (element ? new type(element): new type()); + var app = Sys.Application; + var creatingComponents = app.get_isCreatingComponents(); + component.beginUpdate(); + if (properties) { + Sys$Component$_setProperties(component, properties); + } + if (events) { + for (var name in events) { + if (!(component["add_" + name] instanceof Function)) throw new Error.invalidOperation(String.format(Sys.Res.undefinedEvent, name)); + if (!(events[name] instanceof Function)) throw new Error.invalidOperation(Sys.Res.eventHandlerNotFunction); + component["add_" + name](events[name]); + } + } + if (component.get_id()) { + app.addComponent(component); + } + if (creatingComponents) { + app._createdComponents[app._createdComponents.length] = component; + if (references) { + app._addComponentToSecondPass(component, references); + } + else { + component.endUpdate(); + } + } + else { + if (references) { + Sys$Component$_setReferences(component, references); + } + component.endUpdate(); + } + return component; +} + +Sys.UI.MouseButton = function Sys$UI$MouseButton() { + /// + /// + /// + /// + if (arguments.length !== 0) throw Error.parameterCount(); + throw Error.notImplemented(); +} +Sys.UI.MouseButton.prototype = { + leftButton: 0, + middleButton: 1, + rightButton: 2 +} +Sys.UI.MouseButton.registerEnum("Sys.UI.MouseButton"); + +Sys.UI.Key = function Sys$UI$Key() { + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + if (arguments.length !== 0) throw Error.parameterCount(); + throw Error.notImplemented(); +} +Sys.UI.Key.prototype = { + backspace: 8, + tab: 9, + enter: 13, + esc: 27, + space: 32, + pageUp: 33, + pageDown: 34, + end: 35, + home: 36, + left: 37, + up: 38, + right: 39, + down: 40, + del: 127 +} +Sys.UI.Key.registerEnum("Sys.UI.Key"); + +Sys.UI.Point = function Sys$UI$Point(x, y) { + /// + /// + /// + /// + /// + var e = Function._validateParams(arguments, [ + {name: "x", type: Number, integer: true}, + {name: "y", type: Number, integer: true} + ]); + if (e) throw e; + this.x = x; + this.y = y; +} +Sys.UI.Point.registerClass('Sys.UI.Point'); + +Sys.UI.Bounds = function Sys$UI$Bounds(x, y, width, height) { + /// + /// + /// + /// + /// + /// + /// + /// + /// + var e = Function._validateParams(arguments, [ + {name: "x", type: Number, integer: true}, + {name: "y", type: Number, integer: true}, + {name: "width", type: Number, integer: true}, + {name: "height", type: Number, integer: true} + ]); + if (e) throw e; + this.x = x; + this.y = y; + this.height = height; + this.width = width; +} +Sys.UI.Bounds.registerClass('Sys.UI.Bounds'); + +Sys.UI.DomEvent = function Sys$UI$DomEvent(eventObject) { + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + var e = Function._validateParams(arguments, [ + {name: "eventObject"} + ]); + if (e) throw e; + var ev = eventObject; + var etype = this.type = ev.type.toLowerCase(); + this.rawEvent = ev; + this.altKey = ev.altKey; + if (typeof(ev.button) !== 'undefined') { + this.button = (typeof(ev.which) !== 'undefined') ? ev.button : + (ev.button === 4) ? Sys.UI.MouseButton.middleButton : + (ev.button === 2) ? Sys.UI.MouseButton.rightButton : + Sys.UI.MouseButton.leftButton; + } + if (etype === 'keypress') { + this.charCode = ev.charCode || ev.keyCode; + } + else if (ev.keyCode && (ev.keyCode === 46)) { + this.keyCode = 127; + } + else { + this.keyCode = ev.keyCode; + } + this.clientX = ev.clientX; + this.clientY = ev.clientY; + this.ctrlKey = ev.ctrlKey; + this.target = ev.target ? ev.target : ev.srcElement; + if (!etype.startsWith('key')) { + if ((typeof(ev.offsetX) !== 'undefined') && (typeof(ev.offsetY) !== 'undefined')) { + this.offsetX = ev.offsetX; + this.offsetY = ev.offsetY; + } + else if (this.target && (this.target.nodeType !== 3) && (typeof(ev.clientX) === 'number')) { + var loc = Sys.UI.DomElement.getLocation(this.target); + var w = Sys.UI.DomElement._getWindow(this.target); + this.offsetX = (w.pageXOffset || 0) + ev.clientX - loc.x; + this.offsetY = (w.pageYOffset || 0) + ev.clientY - loc.y; + } + } + this.screenX = ev.screenX; + this.screenY = ev.screenY; + this.shiftKey = ev.shiftKey; +} + function Sys$UI$DomEvent$preventDefault() { + /// + if (arguments.length !== 0) throw Error.parameterCount(); + if (this.rawEvent.preventDefault) { + this.rawEvent.preventDefault(); + } + else if (window.event) { + this.rawEvent.returnValue = false; + } + } + function Sys$UI$DomEvent$stopPropagation() { + /// + if (arguments.length !== 0) throw Error.parameterCount(); + if (this.rawEvent.stopPropagation) { + this.rawEvent.stopPropagation(); + } + else if (window.event) { + this.rawEvent.cancelBubble = true; + } + } +Sys.UI.DomEvent.prototype = { + preventDefault: Sys$UI$DomEvent$preventDefault, + stopPropagation: Sys$UI$DomEvent$stopPropagation +} +Sys.UI.DomEvent.registerClass('Sys.UI.DomEvent'); +var $addHandler = Sys.UI.DomEvent.addHandler = function Sys$UI$DomEvent$addHandler(element, eventName, handler, autoRemove) { + /// + /// + /// + /// + /// + var e = Function._validateParams(arguments, [ + {name: "element"}, + {name: "eventName", type: String}, + {name: "handler", type: Function}, + {name: "autoRemove", type: Boolean, optional: true} + ]); + if (e) throw e; + Sys.UI.DomEvent._ensureDomNode(element); + if (eventName === "error") throw Error.invalidOperation(Sys.Res.addHandlerCantBeUsedForError); + if (!element._events) { + element._events = {}; + } + var eventCache = element._events[eventName]; + if (!eventCache) { + element._events[eventName] = eventCache = []; + } + var browserHandler; + if (element.addEventListener) { + browserHandler = function(e) { + return handler.call(element, new Sys.UI.DomEvent(e)); + } + element.addEventListener(eventName, browserHandler, false); + } + else if (element.attachEvent) { + browserHandler = function() { + var e = {}; + try {e = Sys.UI.DomElement._getWindow(element).event} catch(ex) {} + return handler.call(element, new Sys.UI.DomEvent(e)); + } + element.attachEvent('on' + eventName, browserHandler); + } + eventCache[eventCache.length] = {handler: handler, browserHandler: browserHandler, autoRemove: autoRemove }; + if (autoRemove) { + var d = element.dispose; + if (d !== Sys.UI.DomEvent._disposeHandlers) { + element.dispose = Sys.UI.DomEvent._disposeHandlers; + if (typeof(d) !== "undefined") { + element._chainDispose = d; + } + } + } +} +var $addHandlers = Sys.UI.DomEvent.addHandlers = function Sys$UI$DomEvent$addHandlers(element, events, handlerOwner, autoRemove) { + /// + /// + /// + /// + /// + var e = Function._validateParams(arguments, [ + {name: "element"}, + {name: "events", type: Object}, + {name: "handlerOwner", optional: true}, + {name: "autoRemove", type: Boolean, optional: true} + ]); + if (e) throw e; + Sys.UI.DomEvent._ensureDomNode(element); + for (var name in events) { + var handler = events[name]; + if (typeof(handler) !== 'function') throw Error.invalidOperation(Sys.Res.cantAddNonFunctionhandler); + if (handlerOwner) { + handler = Function.createDelegate(handlerOwner, handler); + } + $addHandler(element, name, handler, autoRemove || false); + } +} +var $clearHandlers = Sys.UI.DomEvent.clearHandlers = function Sys$UI$DomEvent$clearHandlers(element) { + /// + /// + var e = Function._validateParams(arguments, [ + {name: "element"} + ]); + if (e) throw e; + Sys.UI.DomEvent._ensureDomNode(element); + Sys.UI.DomEvent._clearHandlers(element, false); +} +Sys.UI.DomEvent._clearHandlers = function Sys$UI$DomEvent$_clearHandlers(element, autoRemoving) { + if (element._events) { + var cache = element._events; + for (var name in cache) { + var handlers = cache[name]; + for (var i = handlers.length - 1; i >= 0; i--) { + var entry = handlers[i]; + if (!autoRemoving || entry.autoRemove) { + $removeHandler(element, name, entry.handler); + } + } + } + element._events = null; + } +} +Sys.UI.DomEvent._disposeHandlers = function Sys$UI$DomEvent$_disposeHandlers() { + Sys.UI.DomEvent._clearHandlers(this, true); + var d = this._chainDispose, type = typeof(d); + if (type !== "undefined") { + this.dispose = d; + this._chainDispose = null; + if (type === "function") { + this.dispose(); + } + } +} +var $removeHandler = Sys.UI.DomEvent.removeHandler = function Sys$UI$DomEvent$removeHandler(element, eventName, handler) { + /// + /// + /// + /// + var e = Function._validateParams(arguments, [ + {name: "element"}, + {name: "eventName", type: String}, + {name: "handler", type: Function} + ]); + if (e) throw e; + Sys.UI.DomEvent._removeHandler(element, eventName, handler); +} +Sys.UI.DomEvent._removeHandler = function Sys$UI$DomEvent$_removeHandler(element, eventName, handler) { + Sys.UI.DomEvent._ensureDomNode(element); + var browserHandler = null; + if ((typeof(element._events) !== 'object') || !element._events) throw Error.invalidOperation(Sys.Res.eventHandlerInvalid); + var cache = element._events[eventName]; + if (!(cache instanceof Array)) throw Error.invalidOperation(Sys.Res.eventHandlerInvalid); + for (var i = 0, l = cache.length; i < l; i++) { + if (cache[i].handler === handler) { + browserHandler = cache[i].browserHandler; + break; + } + } + if (typeof(browserHandler) !== 'function') throw Error.invalidOperation(Sys.Res.eventHandlerInvalid); + if (element.removeEventListener) { + element.removeEventListener(eventName, browserHandler, false); + } + else if (element.detachEvent) { + element.detachEvent('on' + eventName, browserHandler); + } + cache.splice(i, 1); +} +Sys.UI.DomEvent._ensureDomNode = function Sys$UI$DomEvent$_ensureDomNode(element) { + if (element.tagName && (element.tagName.toUpperCase() === "SCRIPT")) return; + + var doc = element.ownerDocument || element.document || element; + if ((typeof(element.document) !== 'object') && (element != doc) && (typeof(element.nodeType) !== 'number')) { + throw Error.argument("element", Sys.Res.argumentDomNode); + } +} + +Sys.UI.DomElement = function Sys$UI$DomElement() { + /// + if (arguments.length !== 0) throw Error.parameterCount(); + throw Error.notImplemented(); +} +Sys.UI.DomElement.registerClass('Sys.UI.DomElement'); +Sys.UI.DomElement.addCssClass = function Sys$UI$DomElement$addCssClass(element, className) { + /// + /// + /// + var e = Function._validateParams(arguments, [ + {name: "element", domElement: true}, + {name: "className", type: String} + ]); + if (e) throw e; + if (!Sys.UI.DomElement.containsCssClass(element, className)) { + if (element.className === '') { + element.className = className; + } + else { + element.className += ' ' + className; + } + } +} +Sys.UI.DomElement.containsCssClass = function Sys$UI$DomElement$containsCssClass(element, className) { + /// + /// + /// + /// + var e = Function._validateParams(arguments, [ + {name: "element", domElement: true}, + {name: "className", type: String} + ]); + if (e) throw e; + return Array.contains(element.className.split(' '), className); +} +Sys.UI.DomElement.getBounds = function Sys$UI$DomElement$getBounds(element) { + /// + /// + /// + var e = Function._validateParams(arguments, [ + {name: "element", domElement: true} + ]); + if (e) throw e; + var offset = Sys.UI.DomElement.getLocation(element); + return new Sys.UI.Bounds(offset.x, offset.y, element.offsetWidth || 0, element.offsetHeight || 0); +} +var $get = Sys.UI.DomElement.getElementById = function Sys$UI$DomElement$getElementById(id, element) { + /// + /// + /// + /// + var e = Function._validateParams(arguments, [ + {name: "id", type: String}, + {name: "element", mayBeNull: true, domElement: true, optional: true} + ]); + if (e) throw e; + if (!element) return document.getElementById(id); + if (element.getElementById) return element.getElementById(id); + var nodeQueue = []; + var childNodes = element.childNodes; + for (var i = 0; i < childNodes.length; i++) { + var node = childNodes[i]; + if (node.nodeType == 1) { + nodeQueue[nodeQueue.length] = node; + } + } + while (nodeQueue.length) { + node = nodeQueue.shift(); + if (node.id == id) { + return node; + } + childNodes = node.childNodes; + for (i = 0; i < childNodes.length; i++) { + node = childNodes[i]; + if (node.nodeType == 1) { + nodeQueue[nodeQueue.length] = node; + } + } + } + return null; +} +if (document.documentElement.getBoundingClientRect) { + Sys.UI.DomElement.getLocation = function Sys$UI$DomElement$getLocation(element) { + /// + /// + /// + var e = Function._validateParams(arguments, [ + {name: "element", domElement: true} + ]); + if (e) throw e; + if (element.self || element.nodeType === 9) return new Sys.UI.Point(0,0); + var clientRect = element.getBoundingClientRect(); + if (!clientRect) { + return new Sys.UI.Point(0,0); + } + var documentElement = element.ownerDocument.documentElement, + offsetX = Math.floor(clientRect.left + 0.5) + documentElement.scrollLeft, + offsetY = Math.floor(clientRect.top + 0.5) + documentElement.scrollTop; + if (Sys.Browser.agent === Sys.Browser.InternetExplorer) { + try { + var f = element.ownerDocument.parentWindow.frameElement || null; + if (f) { + var offset = (f.frameBorder === "0" || f.frameBorder === "no") ? 2 : 0; + offsetX += offset; + offsetY += offset; + } + } + catch(ex) { + } + if (Sys.Browser.version <= 7) { + + var multiplier, before, rect, d = document.createElement("div"); + d.style.cssText = "position:absolute !important;left:0px !important;right:0px !important;height:0px !important;width:1px !important;display:hidden !important"; + try { + before = document.body.childNodes[0]; + document.body.insertBefore(d, before); + rect = d.getBoundingClientRect(); + document.body.removeChild(d); + multiplier = (rect.right - rect.left); + } + catch (e) { + } + if (multiplier && (multiplier !== 1)) { + offsetX = Math.floor(offsetX / multiplier); + offsetY = Math.floor(offsetY / multiplier); + } + } + if ((document.documentMode || 0) < 8) { + offsetX -= 2; + offsetY -= 2; + } + } + return new Sys.UI.Point(offsetX, offsetY); + } +} +else if (Sys.Browser.agent === Sys.Browser.Safari) { + Sys.UI.DomElement.getLocation = function Sys$UI$DomElement$getLocation(element) { + /// + /// + /// + var e = Function._validateParams(arguments, [ + {name: "element", domElement: true} + ]); + if (e) throw e; + if ((element.window && (element.window === element)) || element.nodeType === 9) return new Sys.UI.Point(0,0); + var offsetX = 0, offsetY = 0, + parent, + previous = null, + previousStyle = null, + currentStyle; + for (parent = element; parent; previous = parent, previousStyle = currentStyle, parent = parent.offsetParent) { + currentStyle = Sys.UI.DomElement._getCurrentStyle(parent); + var tagName = parent.tagName ? parent.tagName.toUpperCase() : null; + if ((parent.offsetLeft || parent.offsetTop) && + ((tagName !== "BODY") || (!previousStyle || previousStyle.position !== "absolute"))) { + offsetX += parent.offsetLeft; + offsetY += parent.offsetTop; + } + if (previous && Sys.Browser.version >= 3) { + offsetX += parseInt(currentStyle.borderLeftWidth); + offsetY += parseInt(currentStyle.borderTopWidth); + } + } + currentStyle = Sys.UI.DomElement._getCurrentStyle(element); + var elementPosition = currentStyle ? currentStyle.position : null; + if (!elementPosition || (elementPosition !== "absolute")) { + for (parent = element.parentNode; parent; parent = parent.parentNode) { + tagName = parent.tagName ? parent.tagName.toUpperCase() : null; + if ((tagName !== "BODY") && (tagName !== "HTML") && (parent.scrollLeft || parent.scrollTop)) { + offsetX -= (parent.scrollLeft || 0); + offsetY -= (parent.scrollTop || 0); + } + currentStyle = Sys.UI.DomElement._getCurrentStyle(parent); + var parentPosition = currentStyle ? currentStyle.position : null; + if (parentPosition && (parentPosition === "absolute")) break; + } + } + return new Sys.UI.Point(offsetX, offsetY); + } +} +else { + Sys.UI.DomElement.getLocation = function Sys$UI$DomElement$getLocation(element) { + /// + /// + /// + var e = Function._validateParams(arguments, [ + {name: "element", domElement: true} + ]); + if (e) throw e; + if ((element.window && (element.window === element)) || element.nodeType === 9) return new Sys.UI.Point(0,0); + var offsetX = 0, offsetY = 0, + parent, + previous = null, + previousStyle = null, + currentStyle = null; + for (parent = element; parent; previous = parent, previousStyle = currentStyle, parent = parent.offsetParent) { + var tagName = parent.tagName ? parent.tagName.toUpperCase() : null; + currentStyle = Sys.UI.DomElement._getCurrentStyle(parent); + if ((parent.offsetLeft || parent.offsetTop) && + !((tagName === "BODY") && + (!previousStyle || previousStyle.position !== "absolute"))) { + offsetX += parent.offsetLeft; + offsetY += parent.offsetTop; + } + if (previous !== null && currentStyle) { + if ((tagName !== "TABLE") && (tagName !== "TD") && (tagName !== "HTML")) { + offsetX += parseInt(currentStyle.borderLeftWidth) || 0; + offsetY += parseInt(currentStyle.borderTopWidth) || 0; + } + if (tagName === "TABLE" && + (currentStyle.position === "relative" || currentStyle.position === "absolute")) { + offsetX += parseInt(currentStyle.marginLeft) || 0; + offsetY += parseInt(currentStyle.marginTop) || 0; + } + } + } + currentStyle = Sys.UI.DomElement._getCurrentStyle(element); + var elementPosition = currentStyle ? currentStyle.position : null; + if (!elementPosition || (elementPosition !== "absolute")) { + for (parent = element.parentNode; parent; parent = parent.parentNode) { + tagName = parent.tagName ? parent.tagName.toUpperCase() : null; + if ((tagName !== "BODY") && (tagName !== "HTML") && (parent.scrollLeft || parent.scrollTop)) { + offsetX -= (parent.scrollLeft || 0); + offsetY -= (parent.scrollTop || 0); + currentStyle = Sys.UI.DomElement._getCurrentStyle(parent); + if (currentStyle) { + offsetX += parseInt(currentStyle.borderLeftWidth) || 0; + offsetY += parseInt(currentStyle.borderTopWidth) || 0; + } + } + } + } + return new Sys.UI.Point(offsetX, offsetY); + } +} +Sys.UI.DomElement.isDomElement = function Sys$UI$DomElement$isDomElement(obj) { + /// + /// + /// + var e = Function._validateParams(arguments, [ + {name: "obj"} + ]); + if (e) throw e; + return Sys._isDomElement(obj); +} +Sys.UI.DomElement.removeCssClass = function Sys$UI$DomElement$removeCssClass(element, className) { + /// + /// + /// + var e = Function._validateParams(arguments, [ + {name: "element", domElement: true}, + {name: "className", type: String} + ]); + if (e) throw e; + var currentClassName = ' ' + element.className + ' '; + var index = currentClassName.indexOf(' ' + className + ' '); + if (index >= 0) { + element.className = (currentClassName.substr(0, index) + ' ' + + currentClassName.substring(index + className.length + 1, currentClassName.length)).trim(); + } +} +Sys.UI.DomElement.resolveElement = function Sys$UI$DomElement$resolveElement(elementOrElementId, containerElement) { + /// + /// + /// + /// + var e = Function._validateParams(arguments, [ + {name: "elementOrElementId", mayBeNull: true}, + {name: "containerElement", mayBeNull: true, domElement: true, optional: true} + ]); + if (e) throw e; + var el = elementOrElementId; + if (!el) return null; + if (typeof(el) === "string") { + el = Sys.UI.DomElement.getElementById(el, containerElement); + if (!el) { + throw Error.argument("elementOrElementId", String.format(Sys.Res.elementNotFound, elementOrElementId)); + } + } + else if(!Sys.UI.DomElement.isDomElement(el)) { + throw Error.argument("elementOrElementId", Sys.Res.expectedElementOrId); + } + return el; +} +Sys.UI.DomElement.raiseBubbleEvent = function Sys$UI$DomElement$raiseBubbleEvent(source, args) { + /// + /// + /// + var e = Function._validateParams(arguments, [ + {name: "source", domElement: true}, + {name: "args", type: Sys.EventArgs} + ]); + if (e) throw e; + var target = source; + while (target) { + var control = target.control; + if (control && control.onBubbleEvent && control.raiseBubbleEvent) { + Sys.UI.DomElement._raiseBubbleEventFromControl(control, source, args); + return; + } + target = target.parentNode; + } +} +Sys.UI.DomElement._raiseBubbleEventFromControl = function Sys$UI$DomElement$_raiseBubbleEventFromControl(control, source, args) { + if (!control.onBubbleEvent(source, args)) { + control._raiseBubbleEvent(source, args); + } +} +Sys.UI.DomElement.setLocation = function Sys$UI$DomElement$setLocation(element, x, y) { + /// + /// + /// + /// + var e = Function._validateParams(arguments, [ + {name: "element", domElement: true}, + {name: "x", type: Number, integer: true}, + {name: "y", type: Number, integer: true} + ]); + if (e) throw e; + var style = element.style; + style.position = 'absolute'; + style.left = x + "px"; + style.top = y + "px"; +} +Sys.UI.DomElement.toggleCssClass = function Sys$UI$DomElement$toggleCssClass(element, className) { + /// + /// + /// + var e = Function._validateParams(arguments, [ + {name: "element", domElement: true}, + {name: "className", type: String} + ]); + if (e) throw e; + if (Sys.UI.DomElement.containsCssClass(element, className)) { + Sys.UI.DomElement.removeCssClass(element, className); + } + else { + Sys.UI.DomElement.addCssClass(element, className); + } +} +Sys.UI.DomElement.getVisibilityMode = function Sys$UI$DomElement$getVisibilityMode(element) { + /// + /// + /// + var e = Function._validateParams(arguments, [ + {name: "element", domElement: true} + ]); + if (e) throw e; + return (element._visibilityMode === Sys.UI.VisibilityMode.hide) ? + Sys.UI.VisibilityMode.hide : + Sys.UI.VisibilityMode.collapse; +} +Sys.UI.DomElement.setVisibilityMode = function Sys$UI$DomElement$setVisibilityMode(element, value) { + /// + /// + /// + var e = Function._validateParams(arguments, [ + {name: "element", domElement: true}, + {name: "value", type: Sys.UI.VisibilityMode} + ]); + if (e) throw e; + Sys.UI.DomElement._ensureOldDisplayMode(element); + if (element._visibilityMode !== value) { + element._visibilityMode = value; + if (Sys.UI.DomElement.getVisible(element) === false) { + if (element._visibilityMode === Sys.UI.VisibilityMode.hide) { + element.style.display = element._oldDisplayMode; + } + else { + element.style.display = 'none'; + } + } + element._visibilityMode = value; + } +} +Sys.UI.DomElement.getVisible = function Sys$UI$DomElement$getVisible(element) { + /// + /// + /// + var e = Function._validateParams(arguments, [ + {name: "element", domElement: true} + ]); + if (e) throw e; + var style = element.currentStyle || Sys.UI.DomElement._getCurrentStyle(element); + if (!style) return true; + return (style.visibility !== 'hidden') && (style.display !== 'none'); +} +Sys.UI.DomElement.setVisible = function Sys$UI$DomElement$setVisible(element, value) { + /// + /// + /// + var e = Function._validateParams(arguments, [ + {name: "element", domElement: true}, + {name: "value", type: Boolean} + ]); + if (e) throw e; + if (value !== Sys.UI.DomElement.getVisible(element)) { + Sys.UI.DomElement._ensureOldDisplayMode(element); + element.style.visibility = value ? 'visible' : 'hidden'; + if (value || (element._visibilityMode === Sys.UI.VisibilityMode.hide)) { + element.style.display = element._oldDisplayMode; + } + else { + element.style.display = 'none'; + } + } +} +Sys.UI.DomElement._ensureOldDisplayMode = function Sys$UI$DomElement$_ensureOldDisplayMode(element) { + if (!element._oldDisplayMode) { + var style = element.currentStyle || Sys.UI.DomElement._getCurrentStyle(element); + element._oldDisplayMode = style ? style.display : null; + if (!element._oldDisplayMode || element._oldDisplayMode === 'none') { + switch(element.tagName.toUpperCase()) { + case 'DIV': case 'P': case 'ADDRESS': case 'BLOCKQUOTE': case 'BODY': case 'COL': + case 'COLGROUP': case 'DD': case 'DL': case 'DT': case 'FIELDSET': case 'FORM': + case 'H1': case 'H2': case 'H3': case 'H4': case 'H5': case 'H6': case 'HR': + case 'IFRAME': case 'LEGEND': case 'OL': case 'PRE': case 'TABLE': case 'TD': + case 'TH': case 'TR': case 'UL': + element._oldDisplayMode = 'block'; + break; + case 'LI': + element._oldDisplayMode = 'list-item'; + break; + default: + element._oldDisplayMode = 'inline'; + } + } + } +} +Sys.UI.DomElement._getWindow = function Sys$UI$DomElement$_getWindow(element) { + var doc = element.ownerDocument || element.document || element; + return doc.defaultView || doc.parentWindow; +} +Sys.UI.DomElement._getCurrentStyle = function Sys$UI$DomElement$_getCurrentStyle(element) { + if (element.nodeType === 3) return null; + var w = Sys.UI.DomElement._getWindow(element); + if (element.documentElement) element = element.documentElement; + var computedStyle = (w && (element !== w) && w.getComputedStyle) ? + w.getComputedStyle(element, null) : + element.currentStyle || element.style; + if (!computedStyle && (Sys.Browser.agent === Sys.Browser.Safari) && element.style) { + var oldDisplay = element.style.display; + var oldPosition = element.style.position; + element.style.position = 'absolute'; + element.style.display = 'block'; + var style = w.getComputedStyle(element, null); + element.style.display = oldDisplay; + element.style.position = oldPosition; + computedStyle = {}; + for (var n in style) { + computedStyle[n] = style[n]; + } + computedStyle.display = 'none'; + } + return computedStyle; +} + +Sys.IContainer = function Sys$IContainer() { + throw Error.notImplemented(); +} + function Sys$IContainer$addComponent(component) { + /// + /// + var e = Function._validateParams(arguments, [ + {name: "component", type: Sys.Component} + ]); + if (e) throw e; + throw Error.notImplemented(); + } + function Sys$IContainer$removeComponent(component) { + /// + /// + var e = Function._validateParams(arguments, [ + {name: "component", type: Sys.Component} + ]); + if (e) throw e; + throw Error.notImplemented(); + } + function Sys$IContainer$findComponent(id) { + /// + /// + /// + var e = Function._validateParams(arguments, [ + {name: "id", type: String} + ]); + if (e) throw e; + throw Error.notImplemented(); + } + function Sys$IContainer$getComponents() { + /// + /// + if (arguments.length !== 0) throw Error.parameterCount(); + throw Error.notImplemented(); + } +Sys.IContainer.prototype = { + addComponent: Sys$IContainer$addComponent, + removeComponent: Sys$IContainer$removeComponent, + findComponent: Sys$IContainer$findComponent, + getComponents: Sys$IContainer$getComponents +} +Sys.IContainer.registerInterface("Sys.IContainer"); + +Sys.ApplicationLoadEventArgs = function Sys$ApplicationLoadEventArgs(components, isPartialLoad) { + /// + /// + /// + var e = Function._validateParams(arguments, [ + {name: "components", type: Array, elementType: Sys.Component}, + {name: "isPartialLoad", type: Boolean} + ]); + if (e) throw e; + Sys.ApplicationLoadEventArgs.initializeBase(this); + this._components = components; + this._isPartialLoad = isPartialLoad; +} + + function Sys$ApplicationLoadEventArgs$get_components() { + /// + if (arguments.length !== 0) throw Error.parameterCount(); + return this._components; + } + function Sys$ApplicationLoadEventArgs$get_isPartialLoad() { + /// + if (arguments.length !== 0) throw Error.parameterCount(); + return this._isPartialLoad; + } +Sys.ApplicationLoadEventArgs.prototype = { + get_components: Sys$ApplicationLoadEventArgs$get_components, + get_isPartialLoad: Sys$ApplicationLoadEventArgs$get_isPartialLoad +} +Sys.ApplicationLoadEventArgs.registerClass('Sys.ApplicationLoadEventArgs', Sys.EventArgs); + +Sys._Application = function Sys$_Application() { + /// + if (arguments.length !== 0) throw Error.parameterCount(); + Sys._Application.initializeBase(this); + this._disposableObjects = []; + this._components = {}; + this._createdComponents = []; + this._secondPassComponents = []; + this._unloadHandlerDelegate = Function.createDelegate(this, this._unloadHandler); + Sys.UI.DomEvent.addHandler(window, "unload", this._unloadHandlerDelegate); + this._domReady(); +} + function Sys$_Application$get_isCreatingComponents() { + /// + if (arguments.length !== 0) throw Error.parameterCount(); + return this._creatingComponents; + } + function Sys$_Application$get_isDisposing() { + /// + if (arguments.length !== 0) throw Error.parameterCount(); + return this._disposing; + } + function Sys$_Application$add_init(handler) { + /// + var e = Function._validateParams(arguments, [{name: "handler", type: Function}]); + if (e) throw e; + if (this._initialized) { + handler(this, Sys.EventArgs.Empty); + } + else { + this.get_events().addHandler("init", handler); + } + } + function Sys$_Application$remove_init(handler) { + var e = Function._validateParams(arguments, [{name: "handler", type: Function}]); + if (e) throw e; + this.get_events().removeHandler("init", handler); + } + function Sys$_Application$add_load(handler) { + /// + var e = Function._validateParams(arguments, [{name: "handler", type: Function}]); + if (e) throw e; + this.get_events().addHandler("load", handler); + } + function Sys$_Application$remove_load(handler) { + var e = Function._validateParams(arguments, [{name: "handler", type: Function}]); + if (e) throw e; + this.get_events().removeHandler("load", handler); + } + function Sys$_Application$add_unload(handler) { + /// + var e = Function._validateParams(arguments, [{name: "handler", type: Function}]); + if (e) throw e; + this.get_events().addHandler("unload", handler); + } + function Sys$_Application$remove_unload(handler) { + var e = Function._validateParams(arguments, [{name: "handler", type: Function}]); + if (e) throw e; + this.get_events().removeHandler("unload", handler); + } + function Sys$_Application$addComponent(component) { + /// + /// + var e = Function._validateParams(arguments, [ + {name: "component", type: Sys.Component} + ]); + if (e) throw e; + var id = component.get_id(); + if (!id) throw Error.invalidOperation(Sys.Res.cantAddWithoutId); + if (typeof(this._components[id]) !== 'undefined') throw Error.invalidOperation(String.format(Sys.Res.appDuplicateComponent, id)); + this._components[id] = component; + } + function Sys$_Application$beginCreateComponents() { + /// + if (arguments.length !== 0) throw Error.parameterCount(); + this._creatingComponents = true; + } + function Sys$_Application$dispose() { + /// + if (arguments.length !== 0) throw Error.parameterCount(); + if (!this._disposing) { + this._disposing = true; + if (this._timerCookie) { + window.clearTimeout(this._timerCookie); + delete this._timerCookie; + } + if (this._endRequestHandler) { + Sys.WebForms.PageRequestManager.getInstance().remove_endRequest(this._endRequestHandler); + delete this._endRequestHandler; + } + if (this._beginRequestHandler) { + Sys.WebForms.PageRequestManager.getInstance().remove_beginRequest(this._beginRequestHandler); + delete this._beginRequestHandler; + } + if (window.pageUnload) { + window.pageUnload(this, Sys.EventArgs.Empty); + } + var unloadHandler = this.get_events().getHandler("unload"); + if (unloadHandler) { + unloadHandler(this, Sys.EventArgs.Empty); + } + var disposableObjects = Array.clone(this._disposableObjects); + for (var i = 0, l = disposableObjects.length; i < l; i++) { + var object = disposableObjects[i]; + if (typeof(object) !== "undefined") { + object.dispose(); + } + } + Array.clear(this._disposableObjects); + Sys.UI.DomEvent.removeHandler(window, "unload", this._unloadHandlerDelegate); + if (Sys._ScriptLoader) { + var sl = Sys._ScriptLoader.getInstance(); + if(sl) { + sl.dispose(); + } + } + Sys._Application.callBaseMethod(this, 'dispose'); + } + } + function Sys$_Application$disposeElement(element, childNodesOnly) { + /// + /// + /// + var e = Function._validateParams(arguments, [ + {name: "element"}, + {name: "childNodesOnly", type: Boolean} + ]); + if (e) throw e; + if (element.nodeType === 1) { + var children = element.getElementsByTagName("*"); + for (var i = children.length - 1; i >= 0; i--) { + this._disposeElementInternal(children[i]); + } + if (!childNodesOnly) { + this._disposeElementInternal(element); + } + } + } + function Sys$_Application$endCreateComponents() { + /// + if (arguments.length !== 0) throw Error.parameterCount(); + var components = this._secondPassComponents; + for (var i = 0, l = components.length; i < l; i++) { + var component = components[i].component; + Sys$Component$_setReferences(component, components[i].references); + component.endUpdate(); + } + this._secondPassComponents = []; + this._creatingComponents = false; + } + function Sys$_Application$findComponent(id, parent) { + /// + /// + /// + /// + var e = Function._validateParams(arguments, [ + {name: "id", type: String}, + {name: "parent", mayBeNull: true, optional: true} + ]); + if (e) throw e; + return (parent ? + ((Sys.IContainer.isInstanceOfType(parent)) ? + parent.findComponent(id) : + parent[id] || null) : + Sys.Application._components[id] || null); + } + function Sys$_Application$getComponents() { + /// + /// + if (arguments.length !== 0) throw Error.parameterCount(); + var res = []; + var components = this._components; + for (var name in components) { + res[res.length] = components[name]; + } + return res; + } + function Sys$_Application$initialize() { + /// + if (arguments.length !== 0) throw Error.parameterCount(); + if(!this.get_isInitialized() && !this._disposing) { + Sys._Application.callBaseMethod(this, 'initialize'); + this._raiseInit(); + if (this.get_stateString) { + if (Sys.WebForms && Sys.WebForms.PageRequestManager) { + this._beginRequestHandler = Function.createDelegate(this, this._onPageRequestManagerBeginRequest); + Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(this._beginRequestHandler); + this._endRequestHandler = Function.createDelegate(this, this._onPageRequestManagerEndRequest); + Sys.WebForms.PageRequestManager.getInstance().add_endRequest(this._endRequestHandler); + } + var loadedEntry = this.get_stateString(); + if (loadedEntry !== this._currentEntry) { + this._navigate(loadedEntry); + } + else { + this._ensureHistory(); + } + } + this.raiseLoad(); + } + } + function Sys$_Application$notifyScriptLoaded() { + /// + if (arguments.length !== 0) throw Error.parameterCount(); + } + function Sys$_Application$registerDisposableObject(object) { + /// + /// + var e = Function._validateParams(arguments, [ + {name: "object", type: Sys.IDisposable} + ]); + if (e) throw e; + if (!this._disposing) { + var objects = this._disposableObjects, + i = objects.length; + objects[i] = object; + object.__msdisposeindex = i; + } + } + function Sys$_Application$raiseLoad() { + /// + if (arguments.length !== 0) throw Error.parameterCount(); + var h = this.get_events().getHandler("load"); + var args = new Sys.ApplicationLoadEventArgs(Array.clone(this._createdComponents), !!this._loaded); + this._loaded = true; + if (h) { + h(this, args); + } + if (window.pageLoad) { + window.pageLoad(this, args); + } + this._createdComponents = []; + } + function Sys$_Application$removeComponent(component) { + /// + /// + var e = Function._validateParams(arguments, [ + {name: "component", type: Sys.Component} + ]); + if (e) throw e; + var id = component.get_id(); + if (id) delete this._components[id]; + } + function Sys$_Application$unregisterDisposableObject(object) { + /// + /// + var e = Function._validateParams(arguments, [ + {name: "object", type: Sys.IDisposable} + ]); + if (e) throw e; + if (!this._disposing) { + var i = object.__msdisposeindex; + if (typeof(i) === "number") { + var disposableObjects = this._disposableObjects; + delete disposableObjects[i]; + delete object.__msdisposeindex; + if (++this._deleteCount > 1000) { + var newArray = []; + for (var j = 0, l = disposableObjects.length; j < l; j++) { + object = disposableObjects[j]; + if (typeof(object) !== "undefined") { + object.__msdisposeindex = newArray.length; + newArray.push(object); + } + } + this._disposableObjects = newArray; + this._deleteCount = 0; + } + } + } + } + function Sys$_Application$_addComponentToSecondPass(component, references) { + this._secondPassComponents[this._secondPassComponents.length] = {component: component, references: references}; + } + function Sys$_Application$_disposeComponents(list) { + if (list) { + for (var i = list.length - 1; i >= 0; i--) { + var item = list[i]; + if (typeof(item.dispose) === "function") { + item.dispose(); + } + } + } + } + function Sys$_Application$_disposeElementInternal(element) { + var d = element.dispose; + if (d && typeof(d) === "function") { + element.dispose(); + } + else { + var c = element.control; + if (c && typeof(c.dispose) === "function") { + c.dispose(); + } + } + var list = element._behaviors; + if (list) { + this._disposeComponents(list); + } + list = element._components; + if (list) { + this._disposeComponents(list); + element._components = null; + } + } + function Sys$_Application$_domReady() { + var check, er, app = this; + function init() { app.initialize(); } + var onload = function() { + Sys.UI.DomEvent.removeHandler(window, "load", onload); + init(); + } + Sys.UI.DomEvent.addHandler(window, "load", onload); + + if (document.addEventListener) { + try { + document.addEventListener("DOMContentLoaded", check = function() { + document.removeEventListener("DOMContentLoaded", check, false); + init(); + }, false); + } + catch (er) { } + } + else if (document.attachEvent) { + if ((window == window.top) && document.documentElement.doScroll) { + var timeout, el = document.createElement("div"); + check = function() { + try { + el.doScroll("left"); + } + catch (er) { + timeout = window.setTimeout(check, 0); + return; + } + el = null; + init(); + } + check(); + } + else { + document.attachEvent("onreadystatechange", check = function() { + if (document.readyState === "complete") { + document.detachEvent("onreadystatechange", check); + init(); + } + }); + } + } + } + function Sys$_Application$_raiseInit() { + var handler = this.get_events().getHandler("init"); + if (handler) { + this.beginCreateComponents(); + handler(this, Sys.EventArgs.Empty); + this.endCreateComponents(); + } + } + function Sys$_Application$_unloadHandler(event) { + this.dispose(); + } +Sys._Application.prototype = { + _creatingComponents: false, + _disposing: false, + _deleteCount: 0, + get_isCreatingComponents: Sys$_Application$get_isCreatingComponents, + get_isDisposing: Sys$_Application$get_isDisposing, + add_init: Sys$_Application$add_init, + remove_init: Sys$_Application$remove_init, + add_load: Sys$_Application$add_load, + remove_load: Sys$_Application$remove_load, + add_unload: Sys$_Application$add_unload, + remove_unload: Sys$_Application$remove_unload, + addComponent: Sys$_Application$addComponent, + beginCreateComponents: Sys$_Application$beginCreateComponents, + dispose: Sys$_Application$dispose, + disposeElement: Sys$_Application$disposeElement, + endCreateComponents: Sys$_Application$endCreateComponents, + findComponent: Sys$_Application$findComponent, + getComponents: Sys$_Application$getComponents, + initialize: Sys$_Application$initialize, + notifyScriptLoaded: Sys$_Application$notifyScriptLoaded, + registerDisposableObject: Sys$_Application$registerDisposableObject, + raiseLoad: Sys$_Application$raiseLoad, + removeComponent: Sys$_Application$removeComponent, + unregisterDisposableObject: Sys$_Application$unregisterDisposableObject, + _addComponentToSecondPass: Sys$_Application$_addComponentToSecondPass, + _disposeComponents: Sys$_Application$_disposeComponents, + _disposeElementInternal: Sys$_Application$_disposeElementInternal, + _domReady: Sys$_Application$_domReady, + _raiseInit: Sys$_Application$_raiseInit, + _unloadHandler: Sys$_Application$_unloadHandler +} +Sys._Application.registerClass('Sys._Application', Sys.Component, Sys.IContainer); +Sys.Application = new Sys._Application(); +var $find = Sys.Application.findComponent; + +Sys.UI.Behavior = function Sys$UI$Behavior(element) { + /// + /// + var e = Function._validateParams(arguments, [ + {name: "element", domElement: true} + ]); + if (e) throw e; + Sys.UI.Behavior.initializeBase(this); + this._element = element; + var behaviors = element._behaviors; + if (!behaviors) { + element._behaviors = [this]; + } + else { + behaviors[behaviors.length] = this; + } +} + function Sys$UI$Behavior$get_element() { + /// + if (arguments.length !== 0) throw Error.parameterCount(); + return this._element; + } + function Sys$UI$Behavior$get_id() { + /// + if (arguments.length !== 0) throw Error.parameterCount(); + var baseId = Sys.UI.Behavior.callBaseMethod(this, 'get_id'); + if (baseId) return baseId; + if (!this._element || !this._element.id) return ''; + return this._element.id + '$' + this.get_name(); + } + function Sys$UI$Behavior$get_name() { + /// + if (arguments.length !== 0) throw Error.parameterCount(); + if (this._name) return this._name; + var name = Object.getTypeName(this); + var i = name.lastIndexOf('.'); + if (i !== -1) name = name.substr(i + 1); + if (!this.get_isInitialized()) this._name = name; + return name; + } + function Sys$UI$Behavior$set_name(value) { + var e = Function._validateParams(arguments, [{name: "value", type: String}]); + if (e) throw e; + if ((value === '') || (value.charAt(0) === ' ') || (value.charAt(value.length - 1) === ' ')) + throw Error.argument('value', Sys.Res.invalidId); + if (typeof(this._element[value]) !== 'undefined') + throw Error.invalidOperation(String.format(Sys.Res.behaviorDuplicateName, value)); + if (this.get_isInitialized()) throw Error.invalidOperation(Sys.Res.cantSetNameAfterInit); + this._name = value; + } + function Sys$UI$Behavior$initialize() { + Sys.UI.Behavior.callBaseMethod(this, 'initialize'); + var name = this.get_name(); + if (name) this._element[name] = this; + } + function Sys$UI$Behavior$dispose() { + Sys.UI.Behavior.callBaseMethod(this, 'dispose'); + var e = this._element; + if (e) { + var name = this.get_name(); + if (name) { + e[name] = null; + } + var behaviors = e._behaviors; + Array.remove(behaviors, this); + if (behaviors.length === 0) { + e._behaviors = null; + } + delete this._element; + } + } +Sys.UI.Behavior.prototype = { + _name: null, + get_element: Sys$UI$Behavior$get_element, + get_id: Sys$UI$Behavior$get_id, + get_name: Sys$UI$Behavior$get_name, + set_name: Sys$UI$Behavior$set_name, + initialize: Sys$UI$Behavior$initialize, + dispose: Sys$UI$Behavior$dispose +} +Sys.UI.Behavior.registerClass('Sys.UI.Behavior', Sys.Component); +Sys.UI.Behavior.getBehaviorByName = function Sys$UI$Behavior$getBehaviorByName(element, name) { + /// + /// + /// + /// + var e = Function._validateParams(arguments, [ + {name: "element", domElement: true}, + {name: "name", type: String} + ]); + if (e) throw e; + var b = element[name]; + return (b && Sys.UI.Behavior.isInstanceOfType(b)) ? b : null; +} +Sys.UI.Behavior.getBehaviors = function Sys$UI$Behavior$getBehaviors(element) { + /// + /// + /// + var e = Function._validateParams(arguments, [ + {name: "element", domElement: true} + ]); + if (e) throw e; + if (!element._behaviors) return []; + return Array.clone(element._behaviors); +} +Sys.UI.Behavior.getBehaviorsByType = function Sys$UI$Behavior$getBehaviorsByType(element, type) { + /// + /// + /// + /// + var e = Function._validateParams(arguments, [ + {name: "element", domElement: true}, + {name: "type", type: Type} + ]); + if (e) throw e; + var behaviors = element._behaviors; + var results = []; + if (behaviors) { + for (var i = 0, l = behaviors.length; i < l; i++) { + if (type.isInstanceOfType(behaviors[i])) { + results[results.length] = behaviors[i]; + } + } + } + return results; +} + +Sys.UI.VisibilityMode = function Sys$UI$VisibilityMode() { + /// + /// + /// + if (arguments.length !== 0) throw Error.parameterCount(); + throw Error.notImplemented(); +} +Sys.UI.VisibilityMode.prototype = { + hide: 0, + collapse: 1 +} +Sys.UI.VisibilityMode.registerEnum("Sys.UI.VisibilityMode"); + +Sys.UI.Control = function Sys$UI$Control(element) { + /// + /// + var e = Function._validateParams(arguments, [ + {name: "element", domElement: true} + ]); + if (e) throw e; + if (typeof(element.control) !== 'undefined') throw Error.invalidOperation(Sys.Res.controlAlreadyDefined); + Sys.UI.Control.initializeBase(this); + this._element = element; + element.control = this; + var role = this.get_role(); + if (role) { + element.setAttribute("role", role); + } +} + function Sys$UI$Control$get_element() { + /// + if (arguments.length !== 0) throw Error.parameterCount(); + return this._element; + } + function Sys$UI$Control$get_id() { + /// + if (arguments.length !== 0) throw Error.parameterCount(); + if (!this._element) return ''; + return this._element.id; + } + function Sys$UI$Control$set_id(value) { + var e = Function._validateParams(arguments, [{name: "value", type: String}]); + if (e) throw e; + throw Error.invalidOperation(Sys.Res.cantSetId); + } + function Sys$UI$Control$get_parent() { + /// + if (arguments.length !== 0) throw Error.parameterCount(); + if (this._parent) return this._parent; + if (!this._element) return null; + + var parentElement = this._element.parentNode; + while (parentElement) { + if (parentElement.control) { + return parentElement.control; + } + parentElement = parentElement.parentNode; + } + return null; + } + function Sys$UI$Control$set_parent(value) { + var e = Function._validateParams(arguments, [{name: "value", type: Sys.UI.Control}]); + if (e) throw e; + if (!this._element) throw Error.invalidOperation(Sys.Res.cantBeCalledAfterDispose); + var parents = [this]; + var current = value; + while (current) { + if (Array.contains(parents, current)) throw Error.invalidOperation(Sys.Res.circularParentChain); + parents[parents.length] = current; + current = current.get_parent(); + } + this._parent = value; + } + function Sys$UI$Control$get_role() { + /// + if (arguments.length !== 0) throw Error.parameterCount(); + return null; + } + function Sys$UI$Control$get_visibilityMode() { + /// + if (arguments.length !== 0) throw Error.parameterCount(); + if (!this._element) throw Error.invalidOperation(Sys.Res.cantBeCalledAfterDispose); + return Sys.UI.DomElement.getVisibilityMode(this._element); + } + function Sys$UI$Control$set_visibilityMode(value) { + var e = Function._validateParams(arguments, [{name: "value", type: Sys.UI.VisibilityMode}]); + if (e) throw e; + if (!this._element) throw Error.invalidOperation(Sys.Res.cantBeCalledAfterDispose); + Sys.UI.DomElement.setVisibilityMode(this._element, value); + } + function Sys$UI$Control$get_visible() { + /// + if (arguments.length !== 0) throw Error.parameterCount(); + if (!this._element) throw Error.invalidOperation(Sys.Res.cantBeCalledAfterDispose); + return Sys.UI.DomElement.getVisible(this._element); + } + function Sys$UI$Control$set_visible(value) { + var e = Function._validateParams(arguments, [{name: "value", type: Boolean}]); + if (e) throw e; + if (!this._element) throw Error.invalidOperation(Sys.Res.cantBeCalledAfterDispose); + Sys.UI.DomElement.setVisible(this._element, value) + } + function Sys$UI$Control$addCssClass(className) { + /// + /// + var e = Function._validateParams(arguments, [ + {name: "className", type: String} + ]); + if (e) throw e; + if (!this._element) throw Error.invalidOperation(Sys.Res.cantBeCalledAfterDispose); + Sys.UI.DomElement.addCssClass(this._element, className); + } + function Sys$UI$Control$dispose() { + Sys.UI.Control.callBaseMethod(this, 'dispose'); + if (this._element) { + this._element.control = null; + delete this._element; + } + if (this._parent) delete this._parent; + } + function Sys$UI$Control$onBubbleEvent(source, args) { + /// + /// + /// + /// + var e = Function._validateParams(arguments, [ + {name: "source"}, + {name: "args", type: Sys.EventArgs} + ]); + if (e) throw e; + return false; + } + function Sys$UI$Control$raiseBubbleEvent(source, args) { + /// + /// + /// + var e = Function._validateParams(arguments, [ + {name: "source"}, + {name: "args", type: Sys.EventArgs} + ]); + if (e) throw e; + this._raiseBubbleEvent(source, args); + } + function Sys$UI$Control$_raiseBubbleEvent(source, args) { + var currentTarget = this.get_parent(); + while (currentTarget) { + if (currentTarget.onBubbleEvent(source, args)) { + return; + } + currentTarget = currentTarget.get_parent(); + } + } + function Sys$UI$Control$removeCssClass(className) { + /// + /// + var e = Function._validateParams(arguments, [ + {name: "className", type: String} + ]); + if (e) throw e; + if (!this._element) throw Error.invalidOperation(Sys.Res.cantBeCalledAfterDispose); + Sys.UI.DomElement.removeCssClass(this._element, className); + } + function Sys$UI$Control$toggleCssClass(className) { + /// + /// + var e = Function._validateParams(arguments, [ + {name: "className", type: String} + ]); + if (e) throw e; + if (!this._element) throw Error.invalidOperation(Sys.Res.cantBeCalledAfterDispose); + Sys.UI.DomElement.toggleCssClass(this._element, className); + } +Sys.UI.Control.prototype = { + _parent: null, + _visibilityMode: Sys.UI.VisibilityMode.hide, + get_element: Sys$UI$Control$get_element, + get_id: Sys$UI$Control$get_id, + set_id: Sys$UI$Control$set_id, + get_parent: Sys$UI$Control$get_parent, + set_parent: Sys$UI$Control$set_parent, + get_role: Sys$UI$Control$get_role, + get_visibilityMode: Sys$UI$Control$get_visibilityMode, + set_visibilityMode: Sys$UI$Control$set_visibilityMode, + get_visible: Sys$UI$Control$get_visible, + set_visible: Sys$UI$Control$set_visible, + addCssClass: Sys$UI$Control$addCssClass, + dispose: Sys$UI$Control$dispose, + onBubbleEvent: Sys$UI$Control$onBubbleEvent, + raiseBubbleEvent: Sys$UI$Control$raiseBubbleEvent, + _raiseBubbleEvent: Sys$UI$Control$_raiseBubbleEvent, + removeCssClass: Sys$UI$Control$removeCssClass, + toggleCssClass: Sys$UI$Control$toggleCssClass +} +Sys.UI.Control.registerClass('Sys.UI.Control', Sys.Component); +Sys.HistoryEventArgs = function Sys$HistoryEventArgs(state) { + /// + /// + var e = Function._validateParams(arguments, [ + {name: "state", type: Object} + ]); + if (e) throw e; + Sys.HistoryEventArgs.initializeBase(this); + this._state = state; +} + function Sys$HistoryEventArgs$get_state() { + /// + if (arguments.length !== 0) throw Error.parameterCount(); + return this._state; + } +Sys.HistoryEventArgs.prototype = { + get_state: Sys$HistoryEventArgs$get_state +} +Sys.HistoryEventArgs.registerClass('Sys.HistoryEventArgs', Sys.EventArgs); +Sys.Application._appLoadHandler = null; +Sys.Application._beginRequestHandler = null; +Sys.Application._clientId = null; +Sys.Application._currentEntry = ''; +Sys.Application._endRequestHandler = null; +Sys.Application._history = null; +Sys.Application._enableHistory = false; +Sys.Application._historyEnabledInScriptManager = false; +Sys.Application._historyFrame = null; +Sys.Application._historyInitialized = false; +Sys.Application._historyPointIsNew = false; +Sys.Application._ignoreTimer = false; +Sys.Application._initialState = null; +Sys.Application._state = {}; +Sys.Application._timerCookie = 0; +Sys.Application._timerHandler = null; +Sys.Application._uniqueId = null; +Sys._Application.prototype.get_stateString = function Sys$_Application$get_stateString() { + /// + if (arguments.length !== 0) throw Error.parameterCount(); + var hash = null; + + if (Sys.Browser.agent === Sys.Browser.Firefox) { + var href = window.location.href; + var hashIndex = href.indexOf('#'); + if (hashIndex !== -1) { + hash = href.substring(hashIndex + 1); + } + else { + hash = ""; + } + return hash; + } + else { + hash = window.location.hash; + } + + if ((hash.length > 0) && (hash.charAt(0) === '#')) { + hash = hash.substring(1); + } + return hash; +}; +Sys._Application.prototype.get_enableHistory = function Sys$_Application$get_enableHistory() { + /// + if (arguments.length !== 0) throw Error.parameterCount(); + return this._enableHistory; +}; +Sys._Application.prototype.set_enableHistory = function Sys$_Application$set_enableHistory(value) { + if (this._initialized && !this._initializing) { + throw Error.invalidOperation(Sys.Res.historyCannotEnableHistory); + } + else if (this._historyEnabledInScriptManager && !value) { + throw Error.invalidOperation(Sys.Res.invalidHistorySettingCombination); + } + this._enableHistory = value; +}; +Sys._Application.prototype.add_navigate = function Sys$_Application$add_navigate(handler) { + /// + /// + var e = Function._validateParams(arguments, [ + {name: "handler", type: Function} + ]); + if (e) throw e; + this.get_events().addHandler("navigate", handler); +}; +Sys._Application.prototype.remove_navigate = function Sys$_Application$remove_navigate(handler) { + /// + /// + var e = Function._validateParams(arguments, [ + {name: "handler", type: Function} + ]); + if (e) throw e; + this.get_events().removeHandler("navigate", handler); +}; +Sys._Application.prototype.addHistoryPoint = function Sys$_Application$addHistoryPoint(state, title) { + /// + /// + /// + var e = Function._validateParams(arguments, [ + {name: "state", type: Object}, + {name: "title", type: String, mayBeNull: true, optional: true} + ]); + if (e) throw e; + if (!this._enableHistory) throw Error.invalidOperation(Sys.Res.historyCannotAddHistoryPointWithHistoryDisabled); + for (var n in state) { + var v = state[n]; + var t = typeof(v); + if ((v !== null) && ((t === 'object') || (t === 'function') || (t === 'undefined'))) { + throw Error.argument('state', Sys.Res.stateMustBeStringDictionary); + } + } + this._ensureHistory(); + var initialState = this._state; + for (var key in state) { + var value = state[key]; + if (value === null) { + if (typeof(initialState[key]) !== 'undefined') { + delete initialState[key]; + } + } + else { + initialState[key] = value; + } + } + var entry = this._serializeState(initialState); + this._historyPointIsNew = true; + this._setState(entry, title); + this._raiseNavigate(); +}; +Sys._Application.prototype.setServerId = function Sys$_Application$setServerId(clientId, uniqueId) { + /// + /// + /// + var e = Function._validateParams(arguments, [ + {name: "clientId", type: String}, + {name: "uniqueId", type: String} + ]); + if (e) throw e; + this._clientId = clientId; + this._uniqueId = uniqueId; +}; +Sys._Application.prototype.setServerState = function Sys$_Application$setServerState(value) { + /// + /// + var e = Function._validateParams(arguments, [ + {name: "value", type: String} + ]); + if (e) throw e; + this._ensureHistory(); + this._state.__s = value; + this._updateHiddenField(value); +}; +Sys._Application.prototype._deserializeState = function Sys$_Application$_deserializeState(entry) { + var result = {}; + entry = entry || ''; + var serverSeparator = entry.indexOf('&&'); + if ((serverSeparator !== -1) && (serverSeparator + 2 < entry.length)) { + result.__s = entry.substr(serverSeparator + 2); + entry = entry.substr(0, serverSeparator); + } + var tokens = entry.split('&'); + for (var i = 0, l = tokens.length; i < l; i++) { + var token = tokens[i]; + var equal = token.indexOf('='); + if ((equal !== -1) && (equal + 1 < token.length)) { + var name = token.substr(0, equal); + var value = token.substr(equal + 1); + result[name] = decodeURIComponent(value); + } + } + return result; +}; +Sys._Application.prototype._enableHistoryInScriptManager = function Sys$_Application$_enableHistoryInScriptManager() { + this._enableHistory = true; + this._historyEnabledInScriptManager = true; +}; +Sys._Application.prototype._ensureHistory = function Sys$_Application$_ensureHistory() { + if (!this._historyInitialized && this._enableHistory) { + if ((Sys.Browser.agent === Sys.Browser.InternetExplorer) && (Sys.Browser.documentMode < 8)) { + this._historyFrame = document.getElementById('__historyFrame'); + if (!this._historyFrame) throw Error.invalidOperation(Sys.Res.historyMissingFrame); + this._ignoreIFrame = true; + } + this._timerHandler = Function.createDelegate(this, this._onIdle); + this._timerCookie = window.setTimeout(this._timerHandler, 100); + + try { + this._initialState = this._deserializeState(this.get_stateString()); + } catch(e) {} + + this._historyInitialized = true; + } +}; +Sys._Application.prototype._navigate = function Sys$_Application$_navigate(entry) { + this._ensureHistory(); + var state = this._deserializeState(entry); + + if (this._uniqueId) { + var oldServerEntry = this._state.__s || ''; + var newServerEntry = state.__s || ''; + if (newServerEntry !== oldServerEntry) { + this._updateHiddenField(newServerEntry); + __doPostBack(this._uniqueId, newServerEntry); + this._state = state; + return; + } + } + this._setState(entry); + this._state = state; + this._raiseNavigate(); +}; +Sys._Application.prototype._onIdle = function Sys$_Application$_onIdle() { + delete this._timerCookie; + + var entry = this.get_stateString(); + if (entry !== this._currentEntry) { + if (!this._ignoreTimer) { + this._historyPointIsNew = false; + this._navigate(entry); + } + } + else { + this._ignoreTimer = false; + } + this._timerCookie = window.setTimeout(this._timerHandler, 100); +}; +Sys._Application.prototype._onIFrameLoad = function Sys$_Application$_onIFrameLoad(entry) { + this._ensureHistory(); + if (!this._ignoreIFrame) { + this._historyPointIsNew = false; + this._navigate(entry); + } + this._ignoreIFrame = false; +}; +Sys._Application.prototype._onPageRequestManagerBeginRequest = function Sys$_Application$_onPageRequestManagerBeginRequest(sender, args) { + this._ignoreTimer = true; +}; +Sys._Application.prototype._onPageRequestManagerEndRequest = function Sys$_Application$_onPageRequestManagerEndRequest(sender, args) { + var dataItem = args.get_dataItems()[this._clientId]; + var eventTarget = document.getElementById("__EVENTTARGET"); + if (eventTarget && eventTarget.value === this._uniqueId) { + eventTarget.value = ''; + } + if (typeof(dataItem) !== 'undefined') { + this.setServerState(dataItem); + this._historyPointIsNew = true; + } + else { + this._ignoreTimer = false; + } + var entry = this._serializeState(this._state); + if (entry !== this._currentEntry) { + this._ignoreTimer = true; + this._setState(entry); + this._raiseNavigate(); + } +}; +Sys._Application.prototype._raiseNavigate = function Sys$_Application$_raiseNavigate() { + var h = this.get_events().getHandler("navigate"); + var stateClone = {}; + for (var key in this._state) { + if (key !== '__s') { + stateClone[key] = this._state[key]; + } + } + var args = new Sys.HistoryEventArgs(stateClone); + if (h) { + h(this, args); + } + var err; + try { + if ((Sys.Browser.agent === Sys.Browser.Firefox) && window.location.hash && + (!window.frameElement || window.top.location.hash)) { + window.history.go(0); + } + } + catch(err) { + } +}; +Sys._Application.prototype._serializeState = function Sys$_Application$_serializeState(state) { + var serialized = []; + for (var key in state) { + var value = state[key]; + if (key === '__s') { + var serverState = value; + } + else { + if (key.indexOf('=') !== -1) throw Error.argument('state', Sys.Res.stateFieldNameInvalid); + serialized[serialized.length] = key + '=' + encodeURIComponent(value); + } + } + return serialized.join('&') + (serverState ? '&&' + serverState : ''); +}; +Sys._Application.prototype._setState = function Sys$_Application$_setState(entry, title) { + if (this._enableHistory) { + entry = entry || ''; + if (entry !== this._currentEntry) { + if (window.theForm) { + var action = window.theForm.action; + var hashIndex = action.indexOf('#'); + window.theForm.action = ((hashIndex !== -1) ? action.substring(0, hashIndex) : action) + '#' + entry; + } + + if (this._historyFrame && this._historyPointIsNew) { + this._ignoreIFrame = true; + var frameDoc = this._historyFrame.contentWindow.document; + frameDoc.open("javascript:''"); + frameDoc.write("" + (title || document.title) + + "parent.Sys.Application._onIFrameLoad(" + + Sys.Serialization.JavaScriptSerializer.serialize(entry) + + ");"); + frameDoc.close(); + } + this._ignoreTimer = false; + this._currentEntry = entry; + if (this._historyFrame || this._historyPointIsNew) { + var currentHash = this.get_stateString(); + if (entry !== currentHash) { + var loc = document.location; + if (loc.href.length - loc.hash.length + entry.length > 1024) { + throw Error.invalidOperation(Sys.Res.urlMustBeLessThan1024chars); + } + window.location.hash = entry; + this._currentEntry = this.get_stateString(); + if ((typeof(title) !== 'undefined') && (title !== null)) { + document.title = title; + } + } + } + this._historyPointIsNew = false; + } + } +}; +Sys._Application.prototype._updateHiddenField = function Sys$_Application$_updateHiddenField(value) { + if (this._clientId) { + var serverStateField = document.getElementById(this._clientId); + if (serverStateField) { + serverStateField.value = value; + } + } +}; + +if (!window.XMLHttpRequest) { + window.XMLHttpRequest = function window$XMLHttpRequest() { + var progIDs = [ 'Msxml2.XMLHTTP.3.0', 'Msxml2.XMLHTTP' ]; + for (var i = 0, l = progIDs.length; i < l; i++) { + try { + return new ActiveXObject(progIDs[i]); + } + catch (ex) { + } + } + return null; + } +} +Type.registerNamespace('Sys.Net'); + +Sys.Net.WebRequestExecutor = function Sys$Net$WebRequestExecutor() { + /// + if (arguments.length !== 0) throw Error.parameterCount(); + this._webRequest = null; + this._resultObject = null; +} + function Sys$Net$WebRequestExecutor$get_webRequest() { + /// + if (arguments.length !== 0) throw Error.parameterCount(); + return this._webRequest; + } + function Sys$Net$WebRequestExecutor$_set_webRequest(value) { + if (this.get_started()) { + throw Error.invalidOperation(String.format(Sys.Res.cannotCallOnceStarted, 'set_webRequest')); + } + this._webRequest = value; + } + function Sys$Net$WebRequestExecutor$get_started() { + /// + if (arguments.length !== 0) throw Error.parameterCount(); + throw Error.notImplemented(); + } + function Sys$Net$WebRequestExecutor$get_responseAvailable() { + /// + if (arguments.length !== 0) throw Error.parameterCount(); + throw Error.notImplemented(); + } + function Sys$Net$WebRequestExecutor$get_timedOut() { + /// + if (arguments.length !== 0) throw Error.parameterCount(); + throw Error.notImplemented(); + } + function Sys$Net$WebRequestExecutor$get_aborted() { + /// + if (arguments.length !== 0) throw Error.parameterCount(); + throw Error.notImplemented(); + } + function Sys$Net$WebRequestExecutor$get_responseData() { + /// + if (arguments.length !== 0) throw Error.parameterCount(); + throw Error.notImplemented(); + } + function Sys$Net$WebRequestExecutor$get_statusCode() { + /// + if (arguments.length !== 0) throw Error.parameterCount(); + throw Error.notImplemented(); + } + function Sys$Net$WebRequestExecutor$get_statusText() { + /// + if (arguments.length !== 0) throw Error.parameterCount(); + throw Error.notImplemented(); + } + function Sys$Net$WebRequestExecutor$get_xml() { + /// + if (arguments.length !== 0) throw Error.parameterCount(); + throw Error.notImplemented(); + } + function Sys$Net$WebRequestExecutor$get_object() { + /// + if (arguments.length !== 0) throw Error.parameterCount(); + if (!this._resultObject) { + this._resultObject = Sys.Serialization.JavaScriptSerializer.deserialize(this.get_responseData()); + } + return this._resultObject; + } + function Sys$Net$WebRequestExecutor$executeRequest() { + /// + if (arguments.length !== 0) throw Error.parameterCount(); + throw Error.notImplemented(); + } + function Sys$Net$WebRequestExecutor$abort() { + /// + if (arguments.length !== 0) throw Error.parameterCount(); + throw Error.notImplemented(); + } + function Sys$Net$WebRequestExecutor$getResponseHeader(header) { + /// + /// + var e = Function._validateParams(arguments, [ + {name: "header", type: String} + ]); + if (e) throw e; + throw Error.notImplemented(); + } + function Sys$Net$WebRequestExecutor$getAllResponseHeaders() { + /// + if (arguments.length !== 0) throw Error.parameterCount(); + throw Error.notImplemented(); + } +Sys.Net.WebRequestExecutor.prototype = { + get_webRequest: Sys$Net$WebRequestExecutor$get_webRequest, + _set_webRequest: Sys$Net$WebRequestExecutor$_set_webRequest, + get_started: Sys$Net$WebRequestExecutor$get_started, + get_responseAvailable: Sys$Net$WebRequestExecutor$get_responseAvailable, + get_timedOut: Sys$Net$WebRequestExecutor$get_timedOut, + get_aborted: Sys$Net$WebRequestExecutor$get_aborted, + get_responseData: Sys$Net$WebRequestExecutor$get_responseData, + get_statusCode: Sys$Net$WebRequestExecutor$get_statusCode, + get_statusText: Sys$Net$WebRequestExecutor$get_statusText, + get_xml: Sys$Net$WebRequestExecutor$get_xml, + get_object: Sys$Net$WebRequestExecutor$get_object, + executeRequest: Sys$Net$WebRequestExecutor$executeRequest, + abort: Sys$Net$WebRequestExecutor$abort, + getResponseHeader: Sys$Net$WebRequestExecutor$getResponseHeader, + getAllResponseHeaders: Sys$Net$WebRequestExecutor$getAllResponseHeaders +} +Sys.Net.WebRequestExecutor.registerClass('Sys.Net.WebRequestExecutor'); + +Sys.Net.XMLDOM = function Sys$Net$XMLDOM(markup) { + /// + /// + var e = Function._validateParams(arguments, [ + {name: "markup", type: String} + ]); + if (e) throw e; + if (!window.DOMParser) { + var progIDs = [ 'Msxml2.DOMDocument.3.0', 'Msxml2.DOMDocument' ]; + for (var i = 0, l = progIDs.length; i < l; i++) { + try { + var xmlDOM = new ActiveXObject(progIDs[i]); + xmlDOM.async = false; + xmlDOM.loadXML(markup); + xmlDOM.setProperty('SelectionLanguage', 'XPath'); + return xmlDOM; + } + catch (ex) { + } + } + } + else { + try { + var domParser = new window.DOMParser(); + return domParser.parseFromString(markup, 'text/xml'); + } + catch (ex) { + } + } + return null; +} +Sys.Net.XMLHttpExecutor = function Sys$Net$XMLHttpExecutor() { + /// + if (arguments.length !== 0) throw Error.parameterCount(); + Sys.Net.XMLHttpExecutor.initializeBase(this); + var _this = this; + this._xmlHttpRequest = null; + this._webRequest = null; + this._responseAvailable = false; + this._timedOut = false; + this._timer = null; + this._aborted = false; + this._started = false; + this._onReadyStateChange = (function () { + + if (_this._xmlHttpRequest.readyState === 4 ) { + try { + if (typeof(_this._xmlHttpRequest.status) === "undefined") { + return; + } + } + catch(ex) { + return; + } + + _this._clearTimer(); + _this._responseAvailable = true; + _this._webRequest.completed(Sys.EventArgs.Empty); + if (_this._xmlHttpRequest != null) { + _this._xmlHttpRequest.onreadystatechange = Function.emptyMethod; + _this._xmlHttpRequest = null; + } + } + }); + this._clearTimer = (function() { + if (_this._timer != null) { + window.clearTimeout(_this._timer); + _this._timer = null; + } + }); + this._onTimeout = (function() { + if (!_this._responseAvailable) { + _this._clearTimer(); + _this._timedOut = true; + _this._xmlHttpRequest.onreadystatechange = Function.emptyMethod; + _this._xmlHttpRequest.abort(); + _this._webRequest.completed(Sys.EventArgs.Empty); + _this._xmlHttpRequest = null; + } + }); +} + function Sys$Net$XMLHttpExecutor$get_timedOut() { + /// + if (arguments.length !== 0) throw Error.parameterCount(); + return this._timedOut; + } + function Sys$Net$XMLHttpExecutor$get_started() { + /// + if (arguments.length !== 0) throw Error.parameterCount(); + return this._started; + } + function Sys$Net$XMLHttpExecutor$get_responseAvailable() { + /// + if (arguments.length !== 0) throw Error.parameterCount(); + return this._responseAvailable; + } + function Sys$Net$XMLHttpExecutor$get_aborted() { + /// + if (arguments.length !== 0) throw Error.parameterCount(); + return this._aborted; + } + function Sys$Net$XMLHttpExecutor$executeRequest() { + /// + if (arguments.length !== 0) throw Error.parameterCount(); + this._webRequest = this.get_webRequest(); + if (this._started) { + throw Error.invalidOperation(String.format(Sys.Res.cannotCallOnceStarted, 'executeRequest')); + } + if (this._webRequest === null) { + throw Error.invalidOperation(Sys.Res.nullWebRequest); + } + var body = this._webRequest.get_body(); + var headers = this._webRequest.get_headers(); + this._xmlHttpRequest = new XMLHttpRequest(); + this._xmlHttpRequest.onreadystatechange = this._onReadyStateChange; + var verb = this._webRequest.get_httpVerb(); + this._xmlHttpRequest.open(verb, this._webRequest.getResolvedUrl(), true ); + this._xmlHttpRequest.setRequestHeader("X-Requested-With", "XMLHttpRequest"); + if (headers) { + for (var header in headers) { + var val = headers[header]; + if (typeof(val) !== "function") + this._xmlHttpRequest.setRequestHeader(header, val); + } + } + if (verb.toLowerCase() === "post") { + if ((headers === null) || !headers['Content-Type']) { + this._xmlHttpRequest.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=utf-8'); + } + if (!body) { + body = ""; + } + } + var timeout = this._webRequest.get_timeout(); + if (timeout > 0) { + this._timer = window.setTimeout(Function.createDelegate(this, this._onTimeout), timeout); + } + this._xmlHttpRequest.send(body); + this._started = true; + } + function Sys$Net$XMLHttpExecutor$getResponseHeader(header) { + /// + /// + /// + var e = Function._validateParams(arguments, [ + {name: "header", type: String} + ]); + if (e) throw e; + if (!this._responseAvailable) { + throw Error.invalidOperation(String.format(Sys.Res.cannotCallBeforeResponse, 'getResponseHeader')); + } + if (!this._xmlHttpRequest) { + throw Error.invalidOperation(String.format(Sys.Res.cannotCallOutsideHandler, 'getResponseHeader')); + } + var result; + try { + result = this._xmlHttpRequest.getResponseHeader(header); + } catch (e) { + } + if (!result) result = ""; + return result; + } + function Sys$Net$XMLHttpExecutor$getAllResponseHeaders() { + /// + /// + if (arguments.length !== 0) throw Error.parameterCount(); + if (!this._responseAvailable) { + throw Error.invalidOperation(String.format(Sys.Res.cannotCallBeforeResponse, 'getAllResponseHeaders')); + } + if (!this._xmlHttpRequest) { + throw Error.invalidOperation(String.format(Sys.Res.cannotCallOutsideHandler, 'getAllResponseHeaders')); + } + return this._xmlHttpRequest.getAllResponseHeaders(); + } + function Sys$Net$XMLHttpExecutor$get_responseData() { + /// + if (arguments.length !== 0) throw Error.parameterCount(); + if (!this._responseAvailable) { + throw Error.invalidOperation(String.format(Sys.Res.cannotCallBeforeResponse, 'get_responseData')); + } + if (!this._xmlHttpRequest) { + throw Error.invalidOperation(String.format(Sys.Res.cannotCallOutsideHandler, 'get_responseData')); + } + return this._xmlHttpRequest.responseText; + } + function Sys$Net$XMLHttpExecutor$get_statusCode() { + /// + if (arguments.length !== 0) throw Error.parameterCount(); + if (!this._responseAvailable) { + throw Error.invalidOperation(String.format(Sys.Res.cannotCallBeforeResponse, 'get_statusCode')); + } + if (!this._xmlHttpRequest) { + throw Error.invalidOperation(String.format(Sys.Res.cannotCallOutsideHandler, 'get_statusCode')); + } + var result = 0; + try { + result = this._xmlHttpRequest.status; + } + catch(ex) { + } + return result; + } + function Sys$Net$XMLHttpExecutor$get_statusText() { + /// + if (arguments.length !== 0) throw Error.parameterCount(); + if (!this._responseAvailable) { + throw Error.invalidOperation(String.format(Sys.Res.cannotCallBeforeResponse, 'get_statusText')); + } + if (!this._xmlHttpRequest) { + throw Error.invalidOperation(String.format(Sys.Res.cannotCallOutsideHandler, 'get_statusText')); + } + return this._xmlHttpRequest.statusText; + } + function Sys$Net$XMLHttpExecutor$get_xml() { + /// + if (arguments.length !== 0) throw Error.parameterCount(); + if (!this._responseAvailable) { + throw Error.invalidOperation(String.format(Sys.Res.cannotCallBeforeResponse, 'get_xml')); + } + if (!this._xmlHttpRequest) { + throw Error.invalidOperation(String.format(Sys.Res.cannotCallOutsideHandler, 'get_xml')); + } + var xml = this._xmlHttpRequest.responseXML; + if (!xml || !xml.documentElement) { + xml = Sys.Net.XMLDOM(this._xmlHttpRequest.responseText); + if (!xml || !xml.documentElement) + return null; + } + else if (navigator.userAgent.indexOf('MSIE') !== -1) { + xml.setProperty('SelectionLanguage', 'XPath'); + } + if (xml.documentElement.namespaceURI === "http://www.mozilla.org/newlayout/xml/parsererror.xml" && + xml.documentElement.tagName === "parsererror") { + return null; + } + + if (xml.documentElement.firstChild && xml.documentElement.firstChild.tagName === "parsererror") { + return null; + } + + return xml; + } + function Sys$Net$XMLHttpExecutor$abort() { + /// + if (arguments.length !== 0) throw Error.parameterCount(); + if (!this._started) { + throw Error.invalidOperation(Sys.Res.cannotAbortBeforeStart); + } + if (this._aborted || this._responseAvailable || this._timedOut) + return; + this._aborted = true; + this._clearTimer(); + if (this._xmlHttpRequest && !this._responseAvailable) { + this._xmlHttpRequest.onreadystatechange = Function.emptyMethod; + this._xmlHttpRequest.abort(); + + this._xmlHttpRequest = null; + this._webRequest.completed(Sys.EventArgs.Empty); + } + } +Sys.Net.XMLHttpExecutor.prototype = { + get_timedOut: Sys$Net$XMLHttpExecutor$get_timedOut, + get_started: Sys$Net$XMLHttpExecutor$get_started, + get_responseAvailable: Sys$Net$XMLHttpExecutor$get_responseAvailable, + get_aborted: Sys$Net$XMLHttpExecutor$get_aborted, + executeRequest: Sys$Net$XMLHttpExecutor$executeRequest, + getResponseHeader: Sys$Net$XMLHttpExecutor$getResponseHeader, + getAllResponseHeaders: Sys$Net$XMLHttpExecutor$getAllResponseHeaders, + get_responseData: Sys$Net$XMLHttpExecutor$get_responseData, + get_statusCode: Sys$Net$XMLHttpExecutor$get_statusCode, + get_statusText: Sys$Net$XMLHttpExecutor$get_statusText, + get_xml: Sys$Net$XMLHttpExecutor$get_xml, + abort: Sys$Net$XMLHttpExecutor$abort +} +Sys.Net.XMLHttpExecutor.registerClass('Sys.Net.XMLHttpExecutor', Sys.Net.WebRequestExecutor); + +Sys.Net._WebRequestManager = function Sys$Net$_WebRequestManager() { + /// + if (arguments.length !== 0) throw Error.parameterCount(); + this._defaultTimeout = 0; + this._defaultExecutorType = "Sys.Net.XMLHttpExecutor"; +} + function Sys$Net$_WebRequestManager$add_invokingRequest(handler) { + /// + var e = Function._validateParams(arguments, [{name: "handler", type: Function}]); + if (e) throw e; + this._get_eventHandlerList().addHandler("invokingRequest", handler); + } + function Sys$Net$_WebRequestManager$remove_invokingRequest(handler) { + var e = Function._validateParams(arguments, [{name: "handler", type: Function}]); + if (e) throw e; + this._get_eventHandlerList().removeHandler("invokingRequest", handler); + } + function Sys$Net$_WebRequestManager$add_completedRequest(handler) { + /// + var e = Function._validateParams(arguments, [{name: "handler", type: Function}]); + if (e) throw e; + this._get_eventHandlerList().addHandler("completedRequest", handler); + } + function Sys$Net$_WebRequestManager$remove_completedRequest(handler) { + var e = Function._validateParams(arguments, [{name: "handler", type: Function}]); + if (e) throw e; + this._get_eventHandlerList().removeHandler("completedRequest", handler); + } + function Sys$Net$_WebRequestManager$_get_eventHandlerList() { + if (!this._events) { + this._events = new Sys.EventHandlerList(); + } + return this._events; + } + function Sys$Net$_WebRequestManager$get_defaultTimeout() { + /// + if (arguments.length !== 0) throw Error.parameterCount(); + return this._defaultTimeout; + } + function Sys$Net$_WebRequestManager$set_defaultTimeout(value) { + var e = Function._validateParams(arguments, [{name: "value", type: Number}]); + if (e) throw e; + if (value < 0) { + throw Error.argumentOutOfRange("value", value, Sys.Res.invalidTimeout); + } + this._defaultTimeout = value; + } + function Sys$Net$_WebRequestManager$get_defaultExecutorType() { + /// + if (arguments.length !== 0) throw Error.parameterCount(); + return this._defaultExecutorType; + } + function Sys$Net$_WebRequestManager$set_defaultExecutorType(value) { + var e = Function._validateParams(arguments, [{name: "value", type: String}]); + if (e) throw e; + this._defaultExecutorType = value; + } + function Sys$Net$_WebRequestManager$executeRequest(webRequest) { + /// + /// + var e = Function._validateParams(arguments, [ + {name: "webRequest", type: Sys.Net.WebRequest} + ]); + if (e) throw e; + var executor = webRequest.get_executor(); + if (!executor) { + var failed = false; + try { + var executorType = eval(this._defaultExecutorType); + executor = new executorType(); + } catch (e) { + failed = true; + } + if (failed || !Sys.Net.WebRequestExecutor.isInstanceOfType(executor) || !executor) { + throw Error.argument("defaultExecutorType", String.format(Sys.Res.invalidExecutorType, this._defaultExecutorType)); + } + webRequest.set_executor(executor); + } + if (executor.get_aborted()) { + return; + } + var evArgs = new Sys.Net.NetworkRequestEventArgs(webRequest); + var handler = this._get_eventHandlerList().getHandler("invokingRequest"); + if (handler) { + handler(this, evArgs); + } + if (!evArgs.get_cancel()) { + executor.executeRequest(); + } + } +Sys.Net._WebRequestManager.prototype = { + add_invokingRequest: Sys$Net$_WebRequestManager$add_invokingRequest, + remove_invokingRequest: Sys$Net$_WebRequestManager$remove_invokingRequest, + add_completedRequest: Sys$Net$_WebRequestManager$add_completedRequest, + remove_completedRequest: Sys$Net$_WebRequestManager$remove_completedRequest, + _get_eventHandlerList: Sys$Net$_WebRequestManager$_get_eventHandlerList, + get_defaultTimeout: Sys$Net$_WebRequestManager$get_defaultTimeout, + set_defaultTimeout: Sys$Net$_WebRequestManager$set_defaultTimeout, + get_defaultExecutorType: Sys$Net$_WebRequestManager$get_defaultExecutorType, + set_defaultExecutorType: Sys$Net$_WebRequestManager$set_defaultExecutorType, + executeRequest: Sys$Net$_WebRequestManager$executeRequest +} +Sys.Net._WebRequestManager.registerClass('Sys.Net._WebRequestManager'); +Sys.Net.WebRequestManager = new Sys.Net._WebRequestManager(); + +Sys.Net.NetworkRequestEventArgs = function Sys$Net$NetworkRequestEventArgs(webRequest) { + /// + /// + var e = Function._validateParams(arguments, [ + {name: "webRequest", type: Sys.Net.WebRequest} + ]); + if (e) throw e; + Sys.Net.NetworkRequestEventArgs.initializeBase(this); + this._webRequest = webRequest; +} + function Sys$Net$NetworkRequestEventArgs$get_webRequest() { + /// + if (arguments.length !== 0) throw Error.parameterCount(); + return this._webRequest; + } +Sys.Net.NetworkRequestEventArgs.prototype = { + get_webRequest: Sys$Net$NetworkRequestEventArgs$get_webRequest +} +Sys.Net.NetworkRequestEventArgs.registerClass('Sys.Net.NetworkRequestEventArgs', Sys.CancelEventArgs); + +Sys.Net.WebRequest = function Sys$Net$WebRequest() { + /// + if (arguments.length !== 0) throw Error.parameterCount(); + this._url = ""; + this._headers = { }; + this._body = null; + this._userContext = null; + this._httpVerb = null; + this._executor = null; + this._invokeCalled = false; + this._timeout = 0; +} + function Sys$Net$WebRequest$add_completed(handler) { + /// + var e = Function._validateParams(arguments, [{name: "handler", type: Function}]); + if (e) throw e; + this._get_eventHandlerList().addHandler("completed", handler); + } + function Sys$Net$WebRequest$remove_completed(handler) { + var e = Function._validateParams(arguments, [{name: "handler", type: Function}]); + if (e) throw e; + this._get_eventHandlerList().removeHandler("completed", handler); + } + function Sys$Net$WebRequest$completed(eventArgs) { + /// + /// + var e = Function._validateParams(arguments, [ + {name: "eventArgs", type: Sys.EventArgs} + ]); + if (e) throw e; + var handler = Sys.Net.WebRequestManager._get_eventHandlerList().getHandler("completedRequest"); + if (handler) { + handler(this._executor, eventArgs); + } + handler = this._get_eventHandlerList().getHandler("completed"); + if (handler) { + handler(this._executor, eventArgs); + } + } + function Sys$Net$WebRequest$_get_eventHandlerList() { + if (!this._events) { + this._events = new Sys.EventHandlerList(); + } + return this._events; + } + function Sys$Net$WebRequest$get_url() { + /// + if (arguments.length !== 0) throw Error.parameterCount(); + return this._url; + } + function Sys$Net$WebRequest$set_url(value) { + var e = Function._validateParams(arguments, [{name: "value", type: String}]); + if (e) throw e; + this._url = value; + } + function Sys$Net$WebRequest$get_headers() { + /// + if (arguments.length !== 0) throw Error.parameterCount(); + return this._headers; + } + function Sys$Net$WebRequest$get_httpVerb() { + /// + if (arguments.length !== 0) throw Error.parameterCount(); + if (this._httpVerb === null) { + if (this._body === null) { + return "GET"; + } + return "POST"; + } + return this._httpVerb; + } + function Sys$Net$WebRequest$set_httpVerb(value) { + var e = Function._validateParams(arguments, [{name: "value", type: String}]); + if (e) throw e; + if (value.length === 0) { + throw Error.argument('value', Sys.Res.invalidHttpVerb); + } + this._httpVerb = value; + } + function Sys$Net$WebRequest$get_body() { + /// + if (arguments.length !== 0) throw Error.parameterCount(); + return this._body; + } + function Sys$Net$WebRequest$set_body(value) { + var e = Function._validateParams(arguments, [{name: "value", mayBeNull: true}]); + if (e) throw e; + this._body = value; + } + function Sys$Net$WebRequest$get_userContext() { + /// + if (arguments.length !== 0) throw Error.parameterCount(); + return this._userContext; + } + function Sys$Net$WebRequest$set_userContext(value) { + var e = Function._validateParams(arguments, [{name: "value", mayBeNull: true}]); + if (e) throw e; + this._userContext = value; + } + function Sys$Net$WebRequest$get_executor() { + /// + if (arguments.length !== 0) throw Error.parameterCount(); + return this._executor; + } + function Sys$Net$WebRequest$set_executor(value) { + var e = Function._validateParams(arguments, [{name: "value", type: Sys.Net.WebRequestExecutor}]); + if (e) throw e; + if (this._executor !== null && this._executor.get_started()) { + throw Error.invalidOperation(Sys.Res.setExecutorAfterActive); + } + this._executor = value; + this._executor._set_webRequest(this); + } + function Sys$Net$WebRequest$get_timeout() { + /// + if (arguments.length !== 0) throw Error.parameterCount(); + if (this._timeout === 0) { + return Sys.Net.WebRequestManager.get_defaultTimeout(); + } + return this._timeout; + } + function Sys$Net$WebRequest$set_timeout(value) { + var e = Function._validateParams(arguments, [{name: "value", type: Number}]); + if (e) throw e; + if (value < 0) { + throw Error.argumentOutOfRange("value", value, Sys.Res.invalidTimeout); + } + this._timeout = value; + } + function Sys$Net$WebRequest$getResolvedUrl() { + /// + /// + if (arguments.length !== 0) throw Error.parameterCount(); + return Sys.Net.WebRequest._resolveUrl(this._url); + } + function Sys$Net$WebRequest$invoke() { + /// + if (arguments.length !== 0) throw Error.parameterCount(); + if (this._invokeCalled) { + throw Error.invalidOperation(Sys.Res.invokeCalledTwice); + } + Sys.Net.WebRequestManager.executeRequest(this); + this._invokeCalled = true; + } +Sys.Net.WebRequest.prototype = { + add_completed: Sys$Net$WebRequest$add_completed, + remove_completed: Sys$Net$WebRequest$remove_completed, + completed: Sys$Net$WebRequest$completed, + _get_eventHandlerList: Sys$Net$WebRequest$_get_eventHandlerList, + get_url: Sys$Net$WebRequest$get_url, + set_url: Sys$Net$WebRequest$set_url, + get_headers: Sys$Net$WebRequest$get_headers, + get_httpVerb: Sys$Net$WebRequest$get_httpVerb, + set_httpVerb: Sys$Net$WebRequest$set_httpVerb, + get_body: Sys$Net$WebRequest$get_body, + set_body: Sys$Net$WebRequest$set_body, + get_userContext: Sys$Net$WebRequest$get_userContext, + set_userContext: Sys$Net$WebRequest$set_userContext, + get_executor: Sys$Net$WebRequest$get_executor, + set_executor: Sys$Net$WebRequest$set_executor, + get_timeout: Sys$Net$WebRequest$get_timeout, + set_timeout: Sys$Net$WebRequest$set_timeout, + getResolvedUrl: Sys$Net$WebRequest$getResolvedUrl, + invoke: Sys$Net$WebRequest$invoke +} +Sys.Net.WebRequest._resolveUrl = function Sys$Net$WebRequest$_resolveUrl(url, baseUrl) { + if (url && url.indexOf('://') !== -1) { + return url; + } + if (!baseUrl || baseUrl.length === 0) { + var baseElement = document.getElementsByTagName('base')[0]; + if (baseElement && baseElement.href && baseElement.href.length > 0) { + baseUrl = baseElement.href; + } + else { + baseUrl = document.URL; + } + } + var qsStart = baseUrl.indexOf('?'); + if (qsStart !== -1) { + baseUrl = baseUrl.substr(0, qsStart); + } + qsStart = baseUrl.indexOf('#'); + if (qsStart !== -1) { + baseUrl = baseUrl.substr(0, qsStart); + } + baseUrl = baseUrl.substr(0, baseUrl.lastIndexOf('/') + 1); + if (!url || url.length === 0) { + return baseUrl; + } + if (url.charAt(0) === '/') { + var slashslash = baseUrl.indexOf('://'); + if (slashslash === -1) { + throw Error.argument("baseUrl", Sys.Res.badBaseUrl1); + } + var nextSlash = baseUrl.indexOf('/', slashslash + 3); + if (nextSlash === -1) { + throw Error.argument("baseUrl", Sys.Res.badBaseUrl2); + } + return baseUrl.substr(0, nextSlash) + url; + } + else { + var lastSlash = baseUrl.lastIndexOf('/'); + if (lastSlash === -1) { + throw Error.argument("baseUrl", Sys.Res.badBaseUrl3); + } + return baseUrl.substr(0, lastSlash+1) + url; + } +} +Sys.Net.WebRequest._createQueryString = function Sys$Net$WebRequest$_createQueryString(queryString, encodeMethod, addParams) { + encodeMethod = encodeMethod || encodeURIComponent; + var i = 0, obj, val, arg, sb = new Sys.StringBuilder(); + if (queryString) { + for (arg in queryString) { + obj = queryString[arg]; + if (typeof(obj) === "function") continue; + val = Sys.Serialization.JavaScriptSerializer.serialize(obj); + if (i++) { + sb.append('&'); + } + sb.append(arg); + sb.append('='); + sb.append(encodeMethod(val)); + } + } + if (addParams) { + if (i) { + sb.append('&'); + } + sb.append(addParams); + } + return sb.toString(); +} +Sys.Net.WebRequest._createUrl = function Sys$Net$WebRequest$_createUrl(url, queryString, addParams) { + if (!queryString && !addParams) { + return url; + } + var qs = Sys.Net.WebRequest._createQueryString(queryString, null, addParams); + return qs.length + ? url + ((url && url.indexOf('?') >= 0) ? "&" : "?") + qs + : url; +} +Sys.Net.WebRequest.registerClass('Sys.Net.WebRequest'); + +Sys._ScriptLoaderTask = function Sys$_ScriptLoaderTask(scriptElement, completedCallback) { + /// + /// + /// + var e = Function._validateParams(arguments, [ + {name: "scriptElement", domElement: true}, + {name: "completedCallback", type: Function} + ]); + if (e) throw e; + this._scriptElement = scriptElement; + this._completedCallback = completedCallback; +} + function Sys$_ScriptLoaderTask$get_scriptElement() { + /// + if (arguments.length !== 0) throw Error.parameterCount(); + return this._scriptElement; + } + function Sys$_ScriptLoaderTask$dispose() { + if(this._disposed) { + return; + } + this._disposed = true; + this._removeScriptElementHandlers(); + Sys._ScriptLoaderTask._clearScript(this._scriptElement); + this._scriptElement = null; + } + function Sys$_ScriptLoaderTask$execute() { + /// + if (arguments.length !== 0) throw Error.parameterCount(); + this._addScriptElementHandlers(); + var headElements = document.getElementsByTagName('head'); + if (headElements.length === 0) { + throw new Error.invalidOperation(Sys.Res.scriptLoadFailedNoHead); + } + else { + headElements[0].appendChild(this._scriptElement); + } + } + function Sys$_ScriptLoaderTask$_addScriptElementHandlers() { + this._scriptLoadDelegate = Function.createDelegate(this, this._scriptLoadHandler); + + if (Sys.Browser.agent !== Sys.Browser.InternetExplorer) { + this._scriptElement.readyState = 'loaded'; + $addHandler(this._scriptElement, 'load', this._scriptLoadDelegate); + } + else { + $addHandler(this._scriptElement, 'readystatechange', this._scriptLoadDelegate); + } + if (this._scriptElement.addEventListener) { + this._scriptErrorDelegate = Function.createDelegate(this, this._scriptErrorHandler); + this._scriptElement.addEventListener('error', this._scriptErrorDelegate, false); + } + } + function Sys$_ScriptLoaderTask$_removeScriptElementHandlers() { + if(this._scriptLoadDelegate) { + var scriptElement = this.get_scriptElement(); + if (Sys.Browser.agent !== Sys.Browser.InternetExplorer) { + $removeHandler(scriptElement, 'load', this._scriptLoadDelegate); + } + else { + $removeHandler(scriptElement, 'readystatechange', this._scriptLoadDelegate); + } + if (this._scriptErrorDelegate) { + this._scriptElement.removeEventListener('error', this._scriptErrorDelegate, false); + this._scriptErrorDelegate = null; + } + this._scriptLoadDelegate = null; + } + } + function Sys$_ScriptLoaderTask$_scriptErrorHandler() { + if(this._disposed) { + return; + } + + this._completedCallback(this.get_scriptElement(), false); + } + function Sys$_ScriptLoaderTask$_scriptLoadHandler() { + if(this._disposed) { + return; + } + var scriptElement = this.get_scriptElement(); + if ((scriptElement.readyState !== 'loaded') && + (scriptElement.readyState !== 'complete')) { + return; + } + + this._completedCallback(scriptElement, true); + } +Sys._ScriptLoaderTask.prototype = { + get_scriptElement: Sys$_ScriptLoaderTask$get_scriptElement, + dispose: Sys$_ScriptLoaderTask$dispose, + execute: Sys$_ScriptLoaderTask$execute, + _addScriptElementHandlers: Sys$_ScriptLoaderTask$_addScriptElementHandlers, + _removeScriptElementHandlers: Sys$_ScriptLoaderTask$_removeScriptElementHandlers, + _scriptErrorHandler: Sys$_ScriptLoaderTask$_scriptErrorHandler, + _scriptLoadHandler: Sys$_ScriptLoaderTask$_scriptLoadHandler +} +Sys._ScriptLoaderTask.registerClass("Sys._ScriptLoaderTask", null, Sys.IDisposable); +Sys._ScriptLoaderTask._clearScript = function Sys$_ScriptLoaderTask$_clearScript(scriptElement) { + if (!Sys.Debug.isDebug) { + scriptElement.parentNode.removeChild(scriptElement); + } +} +Type.registerNamespace('Sys.Net'); + +Sys.Net.WebServiceProxy = function Sys$Net$WebServiceProxy() { +} + function Sys$Net$WebServiceProxy$get_timeout() { + /// + if (arguments.length !== 0) throw Error.parameterCount(); + return this._timeout || 0; + } + function Sys$Net$WebServiceProxy$set_timeout(value) { + var e = Function._validateParams(arguments, [{name: "value", type: Number}]); + if (e) throw e; + if (value < 0) { throw Error.argumentOutOfRange('value', value, Sys.Res.invalidTimeout); } + this._timeout = value; + } + function Sys$Net$WebServiceProxy$get_defaultUserContext() { + /// + if (arguments.length !== 0) throw Error.parameterCount(); + return (typeof(this._userContext) === "undefined") ? null : this._userContext; + } + function Sys$Net$WebServiceProxy$set_defaultUserContext(value) { + var e = Function._validateParams(arguments, [{name: "value", mayBeNull: true}]); + if (e) throw e; + this._userContext = value; + } + function Sys$Net$WebServiceProxy$get_defaultSucceededCallback() { + /// + if (arguments.length !== 0) throw Error.parameterCount(); + return this._succeeded || null; + } + function Sys$Net$WebServiceProxy$set_defaultSucceededCallback(value) { + var e = Function._validateParams(arguments, [{name: "value", type: Function, mayBeNull: true}]); + if (e) throw e; + this._succeeded = value; + } + function Sys$Net$WebServiceProxy$get_defaultFailedCallback() { + /// + if (arguments.length !== 0) throw Error.parameterCount(); + return this._failed || null; + } + function Sys$Net$WebServiceProxy$set_defaultFailedCallback(value) { + var e = Function._validateParams(arguments, [{name: "value", type: Function, mayBeNull: true}]); + if (e) throw e; + this._failed = value; + } + function Sys$Net$WebServiceProxy$get_enableJsonp() { + /// + if (arguments.length !== 0) throw Error.parameterCount(); + return !!this._jsonp; + } + function Sys$Net$WebServiceProxy$set_enableJsonp(value) { + var e = Function._validateParams(arguments, [{name: "value", type: Boolean}]); + if (e) throw e; + this._jsonp = value; + } + function Sys$Net$WebServiceProxy$get_path() { + /// + if (arguments.length !== 0) throw Error.parameterCount(); + return this._path || null; + } + function Sys$Net$WebServiceProxy$set_path(value) { + var e = Function._validateParams(arguments, [{name: "value", type: String}]); + if (e) throw e; + this._path = value; + } + function Sys$Net$WebServiceProxy$get_jsonpCallbackParameter() { + /// + if (arguments.length !== 0) throw Error.parameterCount(); + return this._callbackParameter || "callback"; + } + function Sys$Net$WebServiceProxy$set_jsonpCallbackParameter(value) { + var e = Function._validateParams(arguments, [{name: "value", type: String}]); + if (e) throw e; + this._callbackParameter = value; + } + function Sys$Net$WebServiceProxy$_invoke(servicePath, methodName, useGet, params, onSuccess, onFailure, userContext) { + /// + /// + /// + /// + /// + /// + /// + /// + /// + var e = Function._validateParams(arguments, [ + {name: "servicePath", type: String}, + {name: "methodName", type: String}, + {name: "useGet", type: Boolean}, + {name: "params"}, + {name: "onSuccess", type: Function, mayBeNull: true, optional: true}, + {name: "onFailure", type: Function, mayBeNull: true, optional: true}, + {name: "userContext", mayBeNull: true, optional: true} + ]); + if (e) throw e; + onSuccess = onSuccess || this.get_defaultSucceededCallback(); + onFailure = onFailure || this.get_defaultFailedCallback(); + if (userContext === null || typeof userContext === 'undefined') userContext = this.get_defaultUserContext(); + return Sys.Net.WebServiceProxy.invoke(servicePath, methodName, useGet, params, onSuccess, onFailure, userContext, this.get_timeout(), this.get_enableJsonp(), this.get_jsonpCallbackParameter()); + } +Sys.Net.WebServiceProxy.prototype = { + get_timeout: Sys$Net$WebServiceProxy$get_timeout, + set_timeout: Sys$Net$WebServiceProxy$set_timeout, + get_defaultUserContext: Sys$Net$WebServiceProxy$get_defaultUserContext, + set_defaultUserContext: Sys$Net$WebServiceProxy$set_defaultUserContext, + get_defaultSucceededCallback: Sys$Net$WebServiceProxy$get_defaultSucceededCallback, + set_defaultSucceededCallback: Sys$Net$WebServiceProxy$set_defaultSucceededCallback, + get_defaultFailedCallback: Sys$Net$WebServiceProxy$get_defaultFailedCallback, + set_defaultFailedCallback: Sys$Net$WebServiceProxy$set_defaultFailedCallback, + get_enableJsonp: Sys$Net$WebServiceProxy$get_enableJsonp, + set_enableJsonp: Sys$Net$WebServiceProxy$set_enableJsonp, + get_path: Sys$Net$WebServiceProxy$get_path, + set_path: Sys$Net$WebServiceProxy$set_path, + get_jsonpCallbackParameter: Sys$Net$WebServiceProxy$get_jsonpCallbackParameter, + set_jsonpCallbackParameter: Sys$Net$WebServiceProxy$set_jsonpCallbackParameter, + _invoke: Sys$Net$WebServiceProxy$_invoke +} +Sys.Net.WebServiceProxy.registerClass('Sys.Net.WebServiceProxy'); +Sys.Net.WebServiceProxy.invoke = function Sys$Net$WebServiceProxy$invoke(servicePath, methodName, useGet, params, onSuccess, onFailure, userContext, timeout, enableJsonp, jsonpCallbackParameter) { + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + var e = Function._validateParams(arguments, [ + {name: "servicePath", type: String}, + {name: "methodName", type: String, mayBeNull: true, optional: true}, + {name: "useGet", type: Boolean, optional: true}, + {name: "params", mayBeNull: true, optional: true}, + {name: "onSuccess", type: Function, mayBeNull: true, optional: true}, + {name: "onFailure", type: Function, mayBeNull: true, optional: true}, + {name: "userContext", mayBeNull: true, optional: true}, + {name: "timeout", type: Number, optional: true}, + {name: "enableJsonp", type: Boolean, mayBeNull: true, optional: true}, + {name: "jsonpCallbackParameter", type: String, mayBeNull: true, optional: true} + ]); + if (e) throw e; + var schemeHost = (enableJsonp !== false) ? Sys.Net.WebServiceProxy._xdomain.exec(servicePath) : null, + tempCallback, jsonp = schemeHost && (schemeHost.length === 3) && + ((schemeHost[1] !== location.protocol) || (schemeHost[2] !== location.host)); + useGet = jsonp || useGet; + if (jsonp) { + jsonpCallbackParameter = jsonpCallbackParameter || "callback"; + tempCallback = "_jsonp" + Sys._jsonp++; + } + if (!params) params = {}; + var urlParams = params; + if (!useGet || !urlParams) urlParams = {}; + var script, error, timeoutcookie = null, loader, body = null, + url = Sys.Net.WebRequest._createUrl(methodName + ? (servicePath+"/"+encodeURIComponent(methodName)) + : servicePath, urlParams, jsonp ? (jsonpCallbackParameter + "=Sys." + tempCallback) : null); + if (jsonp) { + script = document.createElement("script"); + script.src = url; + loader = new Sys._ScriptLoaderTask(script, function(script, loaded) { + if (!loaded || tempCallback) { + jsonpComplete({ Message: String.format(Sys.Res.webServiceFailedNoMsg, methodName) }, -1); + } + }); + function jsonpComplete(data, statusCode) { + if (timeoutcookie !== null) { + window.clearTimeout(timeoutcookie); + timeoutcookie = null; + } + loader.dispose(); + delete Sys[tempCallback]; + tempCallback = null; + if ((typeof(statusCode) !== "undefined") && (statusCode !== 200)) { + if (onFailure) { + error = new Sys.Net.WebServiceError(false, + data.Message || String.format(Sys.Res.webServiceFailedNoMsg, methodName), + data.StackTrace || null, + data.ExceptionType || null, + data); + error._statusCode = statusCode; + onFailure(error, userContext, methodName); + } + else { + if (data.StackTrace && data.Message) { + error = data.StackTrace + "-- " + data.Message; + } + else { + error = data.StackTrace || data.Message; + } + error = String.format(error ? Sys.Res.webServiceFailed : Sys.Res.webServiceFailedNoMsg, methodName, error); + throw Sys.Net.WebServiceProxy._createFailedError(methodName, String.format(Sys.Res.webServiceFailed, methodName, error)); + } + } + else if (onSuccess) { + onSuccess(data, userContext, methodName); + } + } + Sys[tempCallback] = jsonpComplete; + loader.execute(); + return null; + } + var request = new Sys.Net.WebRequest(); + request.set_url(url); + request.get_headers()['Content-Type'] = 'application/json; charset=utf-8'; + if (!useGet) { + body = Sys.Serialization.JavaScriptSerializer.serialize(params); + if (body === "{}") body = ""; + } + request.set_body(body); + request.add_completed(onComplete); + if (timeout && timeout > 0) request.set_timeout(timeout); + request.invoke(); + + function onComplete(response, eventArgs) { + if (response.get_responseAvailable()) { + var statusCode = response.get_statusCode(); + var result = null; + + try { + var contentType = response.getResponseHeader("Content-Type"); + if (contentType.startsWith("application/json")) { + result = response.get_object(); + } + else if (contentType.startsWith("text/xml")) { + result = response.get_xml(); + } + else { + result = response.get_responseData(); + } + } catch (ex) { + } + var error = response.getResponseHeader("jsonerror"); + var errorObj = (error === "true"); + if (errorObj) { + if (result) { + result = new Sys.Net.WebServiceError(false, result.Message, result.StackTrace, result.ExceptionType, result); + } + } + else if (contentType.startsWith("application/json")) { + result = (!result || (typeof(result.d) === "undefined")) ? result : result.d; + } + if (((statusCode < 200) || (statusCode >= 300)) || errorObj) { + if (onFailure) { + if (!result || !errorObj) { + result = new Sys.Net.WebServiceError(false , String.format(Sys.Res.webServiceFailedNoMsg, methodName)); + } + result._statusCode = statusCode; + onFailure(result, userContext, methodName); + } + else { + if (result && errorObj) { + error = result.get_exceptionType() + "-- " + result.get_message(); + } + else { + error = response.get_responseData(); + } + throw Sys.Net.WebServiceProxy._createFailedError(methodName, String.format(Sys.Res.webServiceFailed, methodName, error)); + } + } + else if (onSuccess) { + onSuccess(result, userContext, methodName); + } + } + else { + var msg; + if (response.get_timedOut()) { + msg = String.format(Sys.Res.webServiceTimedOut, methodName); + } + else { + msg = String.format(Sys.Res.webServiceFailedNoMsg, methodName) + } + if (onFailure) { + onFailure(new Sys.Net.WebServiceError(response.get_timedOut(), msg, "", ""), userContext, methodName); + } + else { + throw Sys.Net.WebServiceProxy._createFailedError(methodName, msg); + } + } + } + return request; +} +Sys.Net.WebServiceProxy._createFailedError = function Sys$Net$WebServiceProxy$_createFailedError(methodName, errorMessage) { + var displayMessage = "Sys.Net.WebServiceFailedException: " + errorMessage; + var e = Error.create(displayMessage, { 'name': 'Sys.Net.WebServiceFailedException', 'methodName': methodName }); + e.popStackFrame(); + return e; +} +Sys.Net.WebServiceProxy._defaultFailedCallback = function Sys$Net$WebServiceProxy$_defaultFailedCallback(err, methodName) { + var error = err.get_exceptionType() + "-- " + err.get_message(); + throw Sys.Net.WebServiceProxy._createFailedError(methodName, String.format(Sys.Res.webServiceFailed, methodName, error)); +} +Sys.Net.WebServiceProxy._generateTypedConstructor = function Sys$Net$WebServiceProxy$_generateTypedConstructor(type) { + return function(properties) { + if (properties) { + for (var name in properties) { + this[name] = properties[name]; + } + } + this.__type = type; + } +} +Sys._jsonp = 0; +Sys.Net.WebServiceProxy._xdomain = /^\s*([a-zA-Z0-9\+\-\.]+\:)\/\/([^?#\/]+)/; + +Sys.Net.WebServiceError = function Sys$Net$WebServiceError(timedOut, message, stackTrace, exceptionType, errorObject) { + /// + /// + /// + /// + /// + /// + var e = Function._validateParams(arguments, [ + {name: "timedOut", type: Boolean}, + {name: "message", type: String, mayBeNull: true}, + {name: "stackTrace", type: String, mayBeNull: true, optional: true}, + {name: "exceptionType", type: String, mayBeNull: true, optional: true}, + {name: "errorObject", type: Object, mayBeNull: true, optional: true} + ]); + if (e) throw e; + this._timedOut = timedOut; + this._message = message; + this._stackTrace = stackTrace; + this._exceptionType = exceptionType; + this._errorObject = errorObject; + this._statusCode = -1; +} + function Sys$Net$WebServiceError$get_timedOut() { + /// + if (arguments.length !== 0) throw Error.parameterCount(); + return this._timedOut; + } + function Sys$Net$WebServiceError$get_statusCode() { + /// + if (arguments.length !== 0) throw Error.parameterCount(); + return this._statusCode; + } + function Sys$Net$WebServiceError$get_message() { + /// + if (arguments.length !== 0) throw Error.parameterCount(); + return this._message; + } + function Sys$Net$WebServiceError$get_stackTrace() { + /// + if (arguments.length !== 0) throw Error.parameterCount(); + return this._stackTrace || ""; + } + function Sys$Net$WebServiceError$get_exceptionType() { + /// + if (arguments.length !== 0) throw Error.parameterCount(); + return this._exceptionType || ""; + } + function Sys$Net$WebServiceError$get_errorObject() { + /// + if (arguments.length !== 0) throw Error.parameterCount(); + return this._errorObject || null; + } +Sys.Net.WebServiceError.prototype = { + get_timedOut: Sys$Net$WebServiceError$get_timedOut, + get_statusCode: Sys$Net$WebServiceError$get_statusCode, + get_message: Sys$Net$WebServiceError$get_message, + get_stackTrace: Sys$Net$WebServiceError$get_stackTrace, + get_exceptionType: Sys$Net$WebServiceError$get_exceptionType, + get_errorObject: Sys$Net$WebServiceError$get_errorObject +} +Sys.Net.WebServiceError.registerClass('Sys.Net.WebServiceError'); + + +Type.registerNamespace('Sys'); + +Sys.Res={ +'urlMustBeLessThan1024chars':'The history state must be small enough to not make the url larger than 1024 characters.', +'argumentTypeName':'Value is not the name of an existing type.', +'cantBeCalledAfterDispose':'Can\'t be called after dispose.', +'componentCantSetIdAfterAddedToApp':'The id property of a component can\'t be set after it\'s been added to the Application object.', +'behaviorDuplicateName':'A behavior with name \'{0}\' already exists or it is the name of an existing property on the target element.', +'notATypeName':'Value is not a valid type name.', +'elementNotFound':'An element with id \'{0}\' could not be found.', +'stateMustBeStringDictionary':'The state object can only have null and string fields.', +'boolTrueOrFalse':'Value must be \'true\' or \'false\'.', +'scriptLoadFailedNoHead':'ScriptLoader requires pages to contain a element.', +'stringFormatInvalid':'The format string is invalid.', +'referenceNotFound':'Component \'{0}\' was not found.', +'enumReservedName':'\'{0}\' is a reserved name that can\'t be used as an enum value name.', +'circularParentChain':'The chain of control parents can\'t have circular references.', +'namespaceContainsNonObject':'Object {0} already exists and is not an object.', +'undefinedEvent':'\'{0}\' is not an event.', +'propertyUndefined':'\'{0}\' is not a property or an existing field.', +'observableConflict':'Object already contains a member with the name \'{0}\'.', +'historyCannotEnableHistory':'Cannot set enableHistory after initialization.', +'eventHandlerInvalid':'Handler was not added through the Sys.UI.DomEvent.addHandler method.', +'scriptLoadFailedDebug':'The script \'{0}\' failed to load. Check for:\r\n Inaccessible path.\r\n Script errors. (IE) Enable \'Display a notification about every script error\' under advanced settings.', +'propertyNotWritable':'\'{0}\' is not a writable property.', +'enumInvalidValueName':'\'{0}\' is not a valid name for an enum value.', +'controlAlreadyDefined':'A control is already associated with the element.', +'addHandlerCantBeUsedForError':'Can\'t add a handler for the error event using this method. Please set the window.onerror property instead.', +'cantAddNonFunctionhandler':'Can\'t add a handler that is not a function.', +'invalidNameSpace':'Value is not a valid namespace identifier.', +'notAnInterface':'Value is not a valid interface.', +'eventHandlerNotFunction':'Handler must be a function.', +'propertyNotAnArray':'\'{0}\' is not an Array property.', +'namespaceContainsClass':'Object {0} already exists as a class, enum, or interface.', +'typeRegisteredTwice':'Type {0} has already been registered. The type may be defined multiple times or the script file that defines it may have already been loaded. A possible cause is a change of settings during a partial update.', +'cantSetNameAfterInit':'The name property can\'t be set on this object after initialization.', +'historyMissingFrame':'For the history feature to work in IE, the page must have an iFrame element with id \'__historyFrame\' pointed to a page that gets its title from the \'title\' query string parameter and calls Sys.Application._onIFrameLoad() on the parent window. This can be done by setting EnableHistory to true on ScriptManager.', +'appDuplicateComponent':'Two components with the same id \'{0}\' can\'t be added to the application.', +'historyCannotAddHistoryPointWithHistoryDisabled':'A history point can only be added if enableHistory is set to true.', +'baseNotAClass':'Value is not a class.', +'expectedElementOrId':'Value must be a DOM element or DOM element Id.', +'methodNotFound':'No method found with name \'{0}\'.', +'arrayParseBadFormat':'Value must be a valid string representation for an array. It must start with a \'[\' and end with a \']\'.', +'stateFieldNameInvalid':'State field names must not contain any \'=\' characters.', +'cantSetId':'The id property can\'t be set on this object.', +'stringFormatBraceMismatch':'The format string contains an unmatched opening or closing brace.', +'enumValueNotInteger':'An enumeration definition can only contain integer values.', +'propertyNullOrUndefined':'Cannot set the properties of \'{0}\' because it returned a null value.', +'argumentDomNode':'Value must be a DOM element or a text node.', +'componentCantSetIdTwice':'The id property of a component can\'t be set more than once.', +'createComponentOnDom':'Value must be null for Components that are not Controls or Behaviors.', +'createNotComponent':'{0} does not derive from Sys.Component.', +'createNoDom':'Value must not be null for Controls and Behaviors.', +'cantAddWithoutId':'Can\'t add a component that doesn\'t have an id.', +'notObservable':'Instances of type \'{0}\' cannot be observed.', +'badTypeName':'Value is not the name of the type being registered or the name is a reserved word.', +'argumentInteger':'Value must be an integer.', +'invokeCalledTwice':'Cannot call invoke more than once.', +'webServiceFailed':'The server method \'{0}\' failed with the following error: {1}', +'argumentType':'Object cannot be converted to the required type.', +'argumentNull':'Value cannot be null.', +'scriptAlreadyLoaded':'The script \'{0}\' has been referenced multiple times. If referencing Microsoft AJAX scripts explicitly, set the MicrosoftAjaxMode property of the ScriptManager to Explicit.', +'scriptDependencyNotFound':'The script \'{0}\' failed to load because it is dependent on script \'{1}\'.', +'formatBadFormatSpecifier':'Format specifier was invalid.', +'requiredScriptReferenceNotIncluded':'\'{0}\' requires that you have included a script reference to \'{1}\'.', +'webServiceFailedNoMsg':'The server method \'{0}\' failed.', +'argumentDomElement':'Value must be a DOM element.', +'invalidExecutorType':'Could not create a valid Sys.Net.WebRequestExecutor from: {0}.', +'cannotCallBeforeResponse':'Cannot call {0} when responseAvailable is false.', +'actualValue':'Actual value was {0}.', +'enumInvalidValue':'\'{0}\' is not a valid value for enum {1}.', +'scriptLoadFailed':'The script \'{0}\' could not be loaded.', +'parameterCount':'Parameter count mismatch.', +'cannotDeserializeEmptyString':'Cannot deserialize empty string.', +'formatInvalidString':'Input string was not in a correct format.', +'invalidTimeout':'Value must be greater than or equal to zero.', +'cannotAbortBeforeStart':'Cannot abort when executor has not started.', +'argument':'Value does not fall within the expected range.', +'cannotDeserializeInvalidJson':'Cannot deserialize. The data does not correspond to valid JSON.', +'invalidHttpVerb':'httpVerb cannot be set to an empty or null string.', +'nullWebRequest':'Cannot call executeRequest with a null webRequest.', +'eventHandlerInvalid':'Handler was not added through the Sys.UI.DomEvent.addHandler method.', +'cannotSerializeNonFiniteNumbers':'Cannot serialize non finite numbers.', +'argumentUndefined':'Value cannot be undefined.', +'webServiceInvalidReturnType':'The server method \'{0}\' returned an invalid type. Expected type: {1}', +'servicePathNotSet':'The path to the web service has not been set.', +'argumentTypeWithTypes':'Object of type \'{0}\' cannot be converted to type \'{1}\'.', +'cannotCallOnceStarted':'Cannot call {0} once started.', +'badBaseUrl1':'Base URL does not contain ://.', +'badBaseUrl2':'Base URL does not contain another /.', +'badBaseUrl3':'Cannot find last / in base URL.', +'setExecutorAfterActive':'Cannot set executor after it has become active.', +'paramName':'Parameter name: {0}', +'nullReferenceInPath':'Null reference while evaluating data path: \'{0}\'.', +'cannotCallOutsideHandler':'Cannot call {0} outside of a completed event handler.', +'cannotSerializeObjectWithCycle':'Cannot serialize object with cyclic reference within child properties.', +'format':'One of the identified items was in an invalid format.', +'assertFailedCaller':'Assertion Failed: {0}\r\nat {1}', +'argumentOutOfRange':'Specified argument was out of the range of valid values.', +'webServiceTimedOut':'The server method \'{0}\' timed out.', +'notImplemented':'The method or operation is not implemented.', +'assertFailed':'Assertion Failed: {0}', +'invalidOperation':'Operation is not valid due to the current state of the object.', +'breakIntoDebugger':'{0}\r\n\r\nBreak into debugger?' +}; diff --git a/NzbDrone.Web/Scripts/MicrosoftAjax.js b/NzbDrone.Web/Scripts/MicrosoftAjax.js new file mode 100644 index 000000000..52e6626a0 --- /dev/null +++ b/NzbDrone.Web/Scripts/MicrosoftAjax.js @@ -0,0 +1,6 @@ +//---------------------------------------------------------- +// Copyright (C) Microsoft Corporation. All rights reserved. +//---------------------------------------------------------- +// MicrosoftAjax.js +Function.__typeName="Function";Function.__class=true;Function.createCallback=function(b,a){return function(){var e=arguments.length;if(e>0){var d=[];for(var c=0;c=d)break;a=Function._validateParameter(g[b],f,h);if(a){a.popStackFrame();return a}}return null};Function._validateParameterCount=function(j,d,i){var a,c,b=d.length,e=j.length;if(eb){c=true;for(a=0;a0&&(d=0};Array.dequeue=function(a){return a.shift()};Array.forEach=function(b,e,d){for(var a=0,f=b.length;a=0)b.splice(a,1);return a>=0};Array.removeAt=function(a,b){a.splice(b,1)};Sys._indexOf=function(d,e,a){if(typeof e==="undefined")return -1;var c=d.length;if(c!==0){a=a-0;if(isNaN(a))a=0;else{if(isFinite(a))a=a-a%1;if(a<0)a=Math.max(0,c+a)}for(var b=a;b-1){Sys.Browser.agent=Sys.Browser.InternetExplorer;Sys.Browser.version=parseFloat(navigator.userAgent.match(/MSIE (\d+\.\d+)/)[1]);if(Sys.Browser.version>=8)if(document.documentMode>=7)Sys.Browser.documentMode=document.documentMode;Sys.Browser.hasDebuggerStatement=true}else if(navigator.userAgent.indexOf(" Firefox/")>-1){Sys.Browser.agent=Sys.Browser.Firefox;Sys.Browser.version=parseFloat(navigator.userAgent.match(/Firefox\/(\d+\.\d+)/)[1]);Sys.Browser.name="Firefox";Sys.Browser.hasDebuggerStatement=true}else if(navigator.userAgent.indexOf(" AppleWebKit/")>-1){Sys.Browser.agent=Sys.Browser.Safari;Sys.Browser.version=parseFloat(navigator.userAgent.match(/AppleWebKit\/(\d+(\.\d+)?)/)[1]);Sys.Browser.name="Safari"}else if(navigator.userAgent.indexOf("Opera/")>-1)Sys.Browser.agent=Sys.Browser.Opera;Sys.EventArgs=function(){};Sys.EventArgs.registerClass("Sys.EventArgs");Sys.EventArgs.Empty=new Sys.EventArgs;Sys.CancelEventArgs=function(){Sys.CancelEventArgs.initializeBase(this);this._cancel=false};Sys.CancelEventArgs.prototype={get_cancel:function(){return this._cancel},set_cancel:function(a){this._cancel=a}};Sys.CancelEventArgs.registerClass("Sys.CancelEventArgs",Sys.EventArgs);Type.registerNamespace("Sys.UI");Sys._Debug=function(){};Sys._Debug.prototype={_appendConsole:function(a){if(typeof Debug!=="undefined"&&Debug.writeln)Debug.writeln(a);if(window.console&&window.console.log)window.console.log(a);if(window.opera)window.opera.postError(a);if(window.debugService)window.debugService.trace(a)},_appendTrace:function(b){var a=document.getElementById("TraceConsole");if(a&&a.tagName.toUpperCase()==="TEXTAREA")a.value+=b+"\n"},assert:function(c,a,b){if(!c){a=b&&this.assert.caller?String.format(Sys.Res.assertFailedCaller,a,this.assert.caller):String.format(Sys.Res.assertFailed,a);if(confirm(String.format(Sys.Res.breakIntoDebugger,a)))this.fail(a)}},clearTrace:function(){var a=document.getElementById("TraceConsole");if(a&&a.tagName.toUpperCase()==="TEXTAREA")a.value=""},fail:function(message){this._appendConsole(message);if(Sys.Browser.hasDebuggerStatement)eval("debugger")},trace:function(a){this._appendConsole(a);this._appendTrace(a)},traceDump:function(a,b){var c=this._traceDump(a,b,true)},_traceDump:function(a,c,f,b,d){c=c?c:"traceDump";b=b?b:"";if(a===null){this.trace(b+c+": null");return}switch(typeof a){case "undefined":this.trace(b+c+": Undefined");break;case "number":case "string":case "boolean":this.trace(b+c+": "+a);break;default:if(Date.isInstanceOfType(a)||RegExp.isInstanceOfType(a)){this.trace(b+c+": "+a.toString());break}if(!d)d=[];else if(Array.contains(d,a)){this.trace(b+c+": ...");return}Array.add(d,a);if(a==window||a===document||window.HTMLElement&&a instanceof HTMLElement||typeof a.nodeName==="string"){var k=a.tagName?a.tagName:"DomElement";if(a.id)k+=" - "+a.id;this.trace(b+c+" {"+k+"}")}else{var i=Object.getTypeName(a);this.trace(b+c+(typeof i==="string"?" {"+i+"}":""));if(b===""||f){b+=" ";var e,j,l,g,h;if(Array.isInstanceOfType(a)){j=a.length;for(e=0;e=0;d--){var k=h[d].trim();b=a[k];if(typeof b!=="number")throw Error.argument("value",String.format(Sys.Res.enumInvalidValue,c.split(",")[d].trim(),this.__typeName));j|=b}return j}}function Sys$Enum$toString(c){if(typeof c==="undefined"||c===null)return this.__string;var d=this.prototype,a;if(!this.__flags||c===0){for(a in d)if(d[a]===c)return a}else{var b=this.__sortedValues;if(!b){b=[];for(a in d)b[b.length]={key:a,value:d[a]};b.sort(function(a,b){return a.value-b.value});this.__sortedValues=b}var e=[],g=c;for(a=b.length-1;a>=0;a--){var h=b[a],f=h.value;if(f===0)continue;if((f&c)===f){e[e.length]=h.key;g-=f;if(g===0)break}}if(e.length&&g===0)return e.reverse().join(", ")}return ""}Type.prototype.registerEnum=function(b,c){Sys.__upperCaseTypes[b.toUpperCase()]=this;for(var a in this.prototype)this[a]=this.prototype[a];this.__typeName=b;this.parse=Sys$Enum$parse;this.__string=this.toString();this.toString=Sys$Enum$toString;this.__flags=c;this.__enum=true};Type.isEnum=function(a){if(typeof a==="undefined"||a===null)return false;return !!a.__enum};Type.isFlags=function(a){if(typeof a==="undefined"||a===null)return false;return !!a.__flags};Sys.CollectionChange=function(e,a,c,b,d){this.action=e;if(a)if(!(a instanceof Array))a=[a];this.newItems=a||null;if(typeof c!=="number")c=-1;this.newStartingIndex=c;if(b)if(!(b instanceof Array))b=[b];this.oldItems=b||null;if(typeof d!=="number")d=-1;this.oldStartingIndex=d};Sys.CollectionChange.registerClass("Sys.CollectionChange");Sys.NotifyCollectionChangedAction=function(){throw Error.notImplemented()};Sys.NotifyCollectionChangedAction.prototype={add:0,remove:1,reset:2};Sys.NotifyCollectionChangedAction.registerEnum("Sys.NotifyCollectionChangedAction");Sys.NotifyCollectionChangedEventArgs=function(a){this._changes=a;Sys.NotifyCollectionChangedEventArgs.initializeBase(this)};Sys.NotifyCollectionChangedEventArgs.prototype={get_changes:function(){return this._changes||[]}};Sys.NotifyCollectionChangedEventArgs.registerClass("Sys.NotifyCollectionChangedEventArgs",Sys.EventArgs);Sys.Observer=function(){};Sys.Observer.registerClass("Sys.Observer");Sys.Observer.makeObservable=function(a){var c=a instanceof Array,b=Sys.Observer;if(a.setValue===b._observeMethods.setValue)return a;b._addMethods(a,b._observeMethods);if(c)b._addMethods(a,b._arrayMethods);return a};Sys.Observer._addMethods=function(c,b){for(var a in b)c[a]=b[a]};Sys.Observer._addEventHandler=function(c,a,b){Sys.Observer._getContext(c,true).events._addHandler(a,b)};Sys.Observer.addEventHandler=function(c,a,b){Sys.Observer._addEventHandler(c,a,b)};Sys.Observer._removeEventHandler=function(c,a,b){Sys.Observer._getContext(c,true).events._removeHandler(a,b)};Sys.Observer.removeEventHandler=function(c,a,b){Sys.Observer._removeEventHandler(c,a,b)};Sys.Observer.raiseEvent=function(b,e,d){var c=Sys.Observer._getContext(b);if(!c)return;var a=c.events.getHandler(e);if(a)a(b,d)};Sys.Observer.addPropertyChanged=function(b,a){Sys.Observer._addEventHandler(b,"propertyChanged",a)};Sys.Observer.removePropertyChanged=function(b,a){Sys.Observer._removeEventHandler(b,"propertyChanged",a)};Sys.Observer.beginUpdate=function(a){Sys.Observer._getContext(a,true).updating=true};Sys.Observer.endUpdate=function(b){var a=Sys.Observer._getContext(b);if(!a||!a.updating)return;a.updating=false;var d=a.dirty;a.dirty=false;if(d){if(b instanceof Array){var c=a.changes;a.changes=null;Sys.Observer.raiseCollectionChanged(b,c)}Sys.Observer.raisePropertyChanged(b,"")}};Sys.Observer.isUpdating=function(b){var a=Sys.Observer._getContext(b);return a?a.updating:false};Sys.Observer._setValue=function(a,j,g){var b,f,k=a,d=j.split(".");for(var i=0,m=d.length-1;i-1&&ac.Calendar.TwoDigitYearMax)a-=100}return a};Date._getEra=function(e,c){if(!c)return 0;var b,d=e.getTime();for(var a=0,f=c.length;a=b)return a}return 0};Date._getEraYear=function(d,b,e,c){var a=d.getFullYear();if(!c&&b.eras)a-=b.eras[e+3];return a};Date._getParseRegExp=function(b,e){if(!b._parseRegExp)b._parseRegExp={};else if(b._parseRegExp[e])return b._parseRegExp[e];var c=Date._expandFormat(b,e);c=c.replace(/([\^\$\.\*\+\?\|\[\]\(\)\{\}])/g,"\\\\$1");var a=new Sys.StringBuilder("^"),j=[],f=0,i=0,h=Date._getTokenRegExp(),d;while((d=h.exec(c))!==null){var l=c.slice(f,d.index);f=h.lastIndex;i+=Date._appendPreOrPostMatch(l,a);if(i%2===1){a.append(d[0]);continue}switch(d[0]){case "dddd":case "ddd":case "MMMM":case "MMM":case "gg":case "g":a.append("(\\D+)");break;case "tt":case "t":a.append("(\\D*)");break;case "yyyy":a.append("(\\d{4})");break;case "fff":a.append("(\\d{3})");break;case "ff":a.append("(\\d{2})");break;case "f":a.append("(\\d)");break;case "dd":case "d":case "MM":case "M":case "yy":case "y":case "HH":case "H":case "hh":case "h":case "mm":case "m":case "ss":case "s":a.append("(\\d\\d?)");break;case "zzz":a.append("([+-]?\\d\\d?:\\d{2})");break;case "zz":case "z":a.append("([+-]?\\d\\d?)");break;case "/":a.append("(\\"+b.DateSeparator+")")}Array.add(j,d[0])}Date._appendPreOrPostMatch(c.slice(f),a);a.append("$");var k=a.toString().replace(/\s+/g,"\\s+"),g={"regExp":k,"groups":j};b._parseRegExp[e]=g;return g};Date._getTokenRegExp=function(){return /\/|dddd|ddd|dd|d|MMMM|MMM|MM|M|yyyy|yy|y|hh|h|HH|H|mm|m|ss|s|tt|t|fff|ff|f|zzz|zz|z|gg|g/g};Date.parseLocale=function(a){return Date._parse(a,Sys.CultureInfo.CurrentCulture,arguments)};Date.parseInvariant=function(a){return Date._parse(a,Sys.CultureInfo.InvariantCulture,arguments)};Date._parse=function(h,d,i){var a,c,b,f,e,g=false;for(a=1,c=i.length;a31)return null;break;case "MMMM":c=k._getMonthIndex(a);if(c<0||c>11)return null;break;case "MMM":c=k._getAbbrMonthIndex(a);if(c<0||c>11)return null;break;case "M":case "MM":c=parseInt(a,10)-1;if(c<0||c>11)return null;break;case "y":case "yy":e=Date._expandYear(g,parseInt(a,10));if(e<0||e>9999)return null;break;case "yyyy":e=parseInt(a,10);if(e<0||e>9999)return null;break;case "h":case "hh":d=parseInt(a,10);if(d===12)d=0;if(d<0||d>11)return null;break;case "H":case "HH":d=parseInt(a,10);if(d<0||d>23)return null;break;case "m":case "mm":q=parseInt(a,10);if(q<0||q>59)return null;break;case "s":case "ss":r=parseInt(a,10);if(r<0||r>59)return null;break;case "tt":case "t":var z=a.toUpperCase();v=z===g.PMDesignator.toUpperCase();if(!v&&z!==g.AMDesignator.toUpperCase())return null;break;case "f":f=parseInt(a,10)*100;if(f<0||f>999)return null;break;case "ff":f=parseInt(a,10)*10;if(f<0||f>999)return null;break;case "fff":f=parseInt(a,10);if(f<0||f>999)return null;break;case "dddd":i=k._getDayIndex(a);if(i<0||i>6)return null;break;case "ddd":i=k._getAbbrDayIndex(a);if(i<0||i>6)return null;break;case "zzz":var u=a.split(/:/);if(u.length!==2)return null;h=parseInt(u[0],10);if(h<-12||h>13)return null;var o=parseInt(u[1],10);if(o<0||o>59)return null;n=h*60+(a.startsWith("-")?-o:o);break;case "z":case "zz":h=parseInt(a,10);if(h<-12||h>13)return null;n=h*60;break;case "g":case "gg":var p=a;if(!p||!g.eras)return null;p=p.toLowerCase().trim();for(var s=0,F=g.eras.length;s0)return this.toLocaleString();else return this.toString();var o=["n %","n%","%n"],n=["-n %","-n%","-%n"],p=["(n)","-n","- n","n-","n -"],m=["$n","n$","$ n","n $"],l=["($n)","-$n","$-n","$n-","(n$)","-n$","n-$","n$-","-n $","-$ n","n $-","$ n-","$ -n","n- $","($ n)","(n $)"];function g(a,c,d){for(var b=a.length;b1?parseInt(e[1]):0;e=b.split(".");b=e[0];a=e.length>1?e[1]:"";var q;if(c>0){a=g(a,c,false);b+=a.slice(0,c);a=a.substr(c)}else if(c<0){c=-c;b=g(b,c+1,true);a=b.slice(-c,b.length)+a;b=b.slice(0,-c)}if(i>0){if(a.length>i)a=a.slice(0,i);else a=g(a,i,false);a=p+a}else a="";var d=b.length-1,f="";while(d>=0){if(h===0||h>d)if(f.length>0)return b.slice(0,d+1)+n+f+a;else return b.slice(0,d+1)+a;if(f.length>0)f=b.slice(d-h+1,d+1)+n+f;else f=b.slice(d-h+1,d+1);d-=h;if(k1)b=parseInt(e.slice(1),10);var c;switch(e.charAt(0)){case "d":case "D":c="n";if(b!==-1)d=g(""+d,b,true);if(this<0)d=-d;break;case "c":case "C":if(this<0)c=l[a.CurrencyNegativePattern];else c=m[a.CurrencyPositivePattern];if(b===-1)b=a.CurrencyDecimalDigits;d=i(Math.abs(this),b,a.CurrencyGroupSizes,a.CurrencyGroupSeparator,a.CurrencyDecimalSeparator);break;case "n":case "N":if(this<0)c=p[a.NumberNegativePattern];else c="n";if(b===-1)b=a.NumberDecimalDigits;d=i(Math.abs(this),b,a.NumberGroupSizes,a.NumberGroupSeparator,a.NumberDecimalSeparator);break;case "p":case "P":if(this<0)c=n[a.PercentNegativePattern];else c=o[a.PercentPositivePattern];if(b===-1)b=a.PercentDecimalDigits;d=i(Math.abs(this)*100,b,a.PercentGroupSizes,a.PercentGroupSeparator,a.PercentDecimalSeparator);break;default:throw Error.format(Sys.Res.formatBadFormatSpecifier)}var k=/n|\$|-|%/g,f="";for(;true;){var q=k.lastIndex,h=k.exec(c);f+=c.slice(q,h?h.index:c.length);if(!h)break;switch(h[0]){case "n":f+=d;break;case "$":f+=a.CurrencySymbol;break;case "-":if(/[1-9]/.test(d))f+=a.NegativeSign;break;case "%":f+=a.PercentSymbol}}return f};Sys.CultureInfo=function(c,b,a){this.name=c;this.numberFormat=b;this.dateTimeFormat=a};Sys.CultureInfo.prototype={_getDateTimeFormats:function(){if(!this._dateTimeFormats){var a=this.dateTimeFormat;this._dateTimeFormats=[a.MonthDayPattern,a.YearMonthPattern,a.ShortDatePattern,a.ShortTimePattern,a.LongDatePattern,a.LongTimePattern,a.FullDateTimePattern,a.RFC1123Pattern,a.SortableDateTimePattern,a.UniversalSortableDateTimePattern]}return this._dateTimeFormats},_getIndex:function(c,d,e){var b=this._toUpper(c),a=Array.indexOf(d,b);if(a===-1)a=Array.indexOf(e,b);return a},_getMonthIndex:function(a){if(!this._upperMonths){this._upperMonths=this._toUpperArray(this.dateTimeFormat.MonthNames);this._upperMonthsGenitive=this._toUpperArray(this.dateTimeFormat.MonthGenitiveNames)}return this._getIndex(a,this._upperMonths,this._upperMonthsGenitive)},_getAbbrMonthIndex:function(a){if(!this._upperAbbrMonths){this._upperAbbrMonths=this._toUpperArray(this.dateTimeFormat.AbbreviatedMonthNames);this._upperAbbrMonthsGenitive=this._toUpperArray(this.dateTimeFormat.AbbreviatedMonthGenitiveNames)}return this._getIndex(a,this._upperAbbrMonths,this._upperAbbrMonthsGenitive)},_getDayIndex:function(a){if(!this._upperDays)this._upperDays=this._toUpperArray(this.dateTimeFormat.DayNames);return Array.indexOf(this._upperDays,this._toUpper(a))},_getAbbrDayIndex:function(a){if(!this._upperAbbrDays)this._upperAbbrDays=this._toUpperArray(this.dateTimeFormat.AbbreviatedDayNames);return Array.indexOf(this._upperAbbrDays,this._toUpper(a))},_toUpperArray:function(c){var b=[];for(var a=0,d=c.length;a0)a.append(",");Sys.Serialization.JavaScriptSerializer._serializeWithBuilder(b[c],a,false,g)}a.append("]")}else{if(Date.isInstanceOfType(b)){a.append('"\\/Date(');a.append(b.getTime());a.append(')\\/"');break}var d=[],f=0;for(var e in b){if(e.startsWith("$"))continue;if(e===Sys.Serialization.JavaScriptSerializer._serverTypeFieldName&&f!==0){d[f++]=d[0];d[0]=e}else d[f++]=e}if(i)d.sort();a.append("{");var j=false;for(c=0;c=0;c--){var f=d[c];if(!g||f.autoRemove)$removeHandler(a,b,f.handler)}}a._events=null}};Sys.UI.DomEvent._disposeHandlers=function(){Sys.UI.DomEvent._clearHandlers(this,true);var b=this._chainDispose,a=typeof b;if(a!=="undefined"){this.dispose=b;this._chainDispose=null;if(a==="function")this.dispose()}};var $removeHandler=Sys.UI.DomEvent.removeHandler=function(b,a,c){Sys.UI.DomEvent._removeHandler(b,a,c)};Sys.UI.DomEvent._removeHandler=function(a,e,f){var d=null,c=a._events[e];for(var b=0,g=c.length;b=3){d+=parseInt(b.borderLeftWidth);e+=parseInt(b.borderTopWidth)}}b=Sys.UI.DomElement._getCurrentStyle(c);var h=b?b.position:null;if(!h||h!=="absolute")for(a=c.parentNode;a;a=a.parentNode){f=a.tagName?a.tagName.toUpperCase():null;if(f!=="BODY"&&f!=="HTML"&&(a.scrollLeft||a.scrollTop)){d-=a.scrollLeft||0;e-=a.scrollTop||0}b=Sys.UI.DomElement._getCurrentStyle(a);var i=b?b.position:null;if(i&&i==="absolute")break}return new Sys.UI.Point(d,e)};else Sys.UI.DomElement.getLocation=function(d){if(d.window&&d.window===d||d.nodeType===9)return new Sys.UI.Point(0,0);var e=0,f=0,a,i=null,g=null,b=null;for(a=d;a;i=a,(g=b,a=a.offsetParent)){var c=a.tagName?a.tagName.toUpperCase():null;b=Sys.UI.DomElement._getCurrentStyle(a);if((a.offsetLeft||a.offsetTop)&&!(c==="BODY"&&(!g||g.position!=="absolute"))){e+=a.offsetLeft;f+=a.offsetTop}if(i!==null&&b){if(c!=="TABLE"&&c!=="TD"&&c!=="HTML"){e+=parseInt(b.borderLeftWidth)||0;f+=parseInt(b.borderTopWidth)||0}if(c==="TABLE"&&(b.position==="relative"||b.position==="absolute")){e+=parseInt(b.marginLeft)||0;f+=parseInt(b.marginTop)||0}}}b=Sys.UI.DomElement._getCurrentStyle(d);var h=b?b.position:null;if(!h||h!=="absolute")for(a=d.parentNode;a;a=a.parentNode){c=a.tagName?a.tagName.toUpperCase():null;if(c!=="BODY"&&c!=="HTML"&&(a.scrollLeft||a.scrollTop)){e-=a.scrollLeft||0;f-=a.scrollTop||0;b=Sys.UI.DomElement._getCurrentStyle(a);if(b){e+=parseInt(b.borderLeftWidth)||0;f+=parseInt(b.borderTopWidth)||0}}}return new Sys.UI.Point(e,f)};Sys.UI.DomElement.isDomElement=function(a){return Sys._isDomElement(a)};Sys.UI.DomElement.removeCssClass=function(d,c){var a=" "+d.className+" ",b=a.indexOf(" "+c+" ");if(b>=0)d.className=(a.substr(0,b)+" "+a.substring(b+c.length+1,a.length)).trim()};Sys.UI.DomElement.resolveElement=function(b,c){var a=b;if(!a)return null;if(typeof a==="string")a=Sys.UI.DomElement.getElementById(a,c);return a};Sys.UI.DomElement.raiseBubbleEvent=function(c,d){var b=c;while(b){var a=b.control;if(a&&a.onBubbleEvent&&a.raiseBubbleEvent){Sys.UI.DomElement._raiseBubbleEventFromControl(a,c,d);return}b=b.parentNode}};Sys.UI.DomElement._raiseBubbleEventFromControl=function(a,b,c){if(!a.onBubbleEvent(b,c))a._raiseBubbleEvent(b,c)};Sys.UI.DomElement.setLocation=function(b,c,d){var a=b.style;a.position="absolute";a.left=c+"px";a.top=d+"px"};Sys.UI.DomElement.toggleCssClass=function(b,a){if(Sys.UI.DomElement.containsCssClass(b,a))Sys.UI.DomElement.removeCssClass(b,a);else Sys.UI.DomElement.addCssClass(b,a)};Sys.UI.DomElement.getVisibilityMode=function(a){return a._visibilityMode===Sys.UI.VisibilityMode.hide?Sys.UI.VisibilityMode.hide:Sys.UI.VisibilityMode.collapse};Sys.UI.DomElement.setVisibilityMode=function(a,b){Sys.UI.DomElement._ensureOldDisplayMode(a);if(a._visibilityMode!==b){a._visibilityMode=b;if(Sys.UI.DomElement.getVisible(a)===false)if(a._visibilityMode===Sys.UI.VisibilityMode.hide)a.style.display=a._oldDisplayMode;else a.style.display="none";a._visibilityMode=b}};Sys.UI.DomElement.getVisible=function(b){var a=b.currentStyle||Sys.UI.DomElement._getCurrentStyle(b);if(!a)return true;return a.visibility!=="hidden"&&a.display!=="none"};Sys.UI.DomElement.setVisible=function(a,b){if(b!==Sys.UI.DomElement.getVisible(a)){Sys.UI.DomElement._ensureOldDisplayMode(a);a.style.visibility=b?"visible":"hidden";if(b||a._visibilityMode===Sys.UI.VisibilityMode.hide)a.style.display=a._oldDisplayMode;else a.style.display="none"}};Sys.UI.DomElement._ensureOldDisplayMode=function(a){if(!a._oldDisplayMode){var b=a.currentStyle||Sys.UI.DomElement._getCurrentStyle(a);a._oldDisplayMode=b?b.display:null;if(!a._oldDisplayMode||a._oldDisplayMode==="none")switch(a.tagName.toUpperCase()){case "DIV":case "P":case "ADDRESS":case "BLOCKQUOTE":case "BODY":case "COL":case "COLGROUP":case "DD":case "DL":case "DT":case "FIELDSET":case "FORM":case "H1":case "H2":case "H3":case "H4":case "H5":case "H6":case "HR":case "IFRAME":case "LEGEND":case "OL":case "PRE":case "TABLE":case "TD":case "TH":case "TR":case "UL":a._oldDisplayMode="block";break;case "LI":a._oldDisplayMode="list-item";break;default:a._oldDisplayMode="inline"}}};Sys.UI.DomElement._getWindow=function(a){var b=a.ownerDocument||a.document||a;return b.defaultView||b.parentWindow};Sys.UI.DomElement._getCurrentStyle=function(a){if(a.nodeType===3)return null;var c=Sys.UI.DomElement._getWindow(a);if(a.documentElement)a=a.documentElement;var b=c&&a!==c&&c.getComputedStyle?c.getComputedStyle(a,null):a.currentStyle||a.style;if(!b&&Sys.Browser.agent===Sys.Browser.Safari&&a.style){var g=a.style.display,f=a.style.position;a.style.position="absolute";a.style.display="block";var e=c.getComputedStyle(a,null);a.style.display=g;a.style.position=f;b={};for(var d in e)b[d]=e[d];b.display="none"}return b};Sys.IContainer=function(){};Sys.IContainer.prototype={};Sys.IContainer.registerInterface("Sys.IContainer");Sys.ApplicationLoadEventArgs=function(b,a){Sys.ApplicationLoadEventArgs.initializeBase(this);this._components=b;this._isPartialLoad=a};Sys.ApplicationLoadEventArgs.prototype={get_components:function(){return this._components},get_isPartialLoad:function(){return this._isPartialLoad}};Sys.ApplicationLoadEventArgs.registerClass("Sys.ApplicationLoadEventArgs",Sys.EventArgs);Sys._Application=function(){Sys._Application.initializeBase(this);this._disposableObjects=[];this._components={};this._createdComponents=[];this._secondPassComponents=[];this._unloadHandlerDelegate=Function.createDelegate(this,this._unloadHandler);Sys.UI.DomEvent.addHandler(window,"unload",this._unloadHandlerDelegate);this._domReady()};Sys._Application.prototype={_creatingComponents:false,_disposing:false,_deleteCount:0,get_isCreatingComponents:function(){return this._creatingComponents},get_isDisposing:function(){return this._disposing},add_init:function(a){if(this._initialized)a(this,Sys.EventArgs.Empty);else this.get_events().addHandler("init",a)},remove_init:function(a){this.get_events().removeHandler("init",a)},add_load:function(a){this.get_events().addHandler("load",a)},remove_load:function(a){this.get_events().removeHandler("load",a)},add_unload:function(a){this.get_events().addHandler("unload",a)},remove_unload:function(a){this.get_events().removeHandler("unload",a)},addComponent:function(a){this._components[a.get_id()]=a},beginCreateComponents:function(){this._creatingComponents=true},dispose:function(){if(!this._disposing){this._disposing=true;if(this._timerCookie){window.clearTimeout(this._timerCookie);delete this._timerCookie}if(this._endRequestHandler){Sys.WebForms.PageRequestManager.getInstance().remove_endRequest(this._endRequestHandler);delete this._endRequestHandler}if(this._beginRequestHandler){Sys.WebForms.PageRequestManager.getInstance().remove_beginRequest(this._beginRequestHandler);delete this._beginRequestHandler}if(window.pageUnload)window.pageUnload(this,Sys.EventArgs.Empty);var c=this.get_events().getHandler("unload");if(c)c(this,Sys.EventArgs.Empty);var b=Array.clone(this._disposableObjects);for(var a=0,f=b.length;a=0;b--)this._disposeElementInternal(c[b]);if(!d)this._disposeElementInternal(a)}},endCreateComponents:function(){var b=this._secondPassComponents;for(var a=0,d=b.length;a1000){var c=[];for(var d=0,f=b.length;d=0;b--){var c=a[b];if(typeof c.dispose==="function")c.dispose()}},_disposeElementInternal:function(a){var d=a.dispose;if(d&&typeof d==="function")a.dispose();else{var c=a.control;if(c&&typeof c.dispose==="function")c.dispose()}var b=a._behaviors;if(b)this._disposeComponents(b);b=a._components;if(b){this._disposeComponents(b);a._components=null}},_domReady:function(){var a,g,f=this;function b(){f.initialize()}var c=function(){Sys.UI.DomEvent.removeHandler(window,"load",c);b()};Sys.UI.DomEvent.addHandler(window,"load",c);if(document.addEventListener)try{document.addEventListener("DOMContentLoaded",a=function(){document.removeEventListener("DOMContentLoaded",a,false);b()},false)}catch(h){}else if(document.attachEvent)if(window==window.top&&document.documentElement.doScroll){var e,d=document.createElement("div");a=function(){try{d.doScroll("left")}catch(c){e=window.setTimeout(a,0);return}d=null;b()};a()}else document.attachEvent("onreadystatechange",a=function(){if(document.readyState==="complete"){document.detachEvent("onreadystatechange",a);b()}})},_raiseInit:function(){var a=this.get_events().getHandler("init");if(a){this.beginCreateComponents();a(this,Sys.EventArgs.Empty);this.endCreateComponents()}},_unloadHandler:function(){this.dispose()}};Sys._Application.registerClass("Sys._Application",Sys.Component,Sys.IContainer);Sys.Application=new Sys._Application;var $find=Sys.Application.findComponent;Sys.UI.Behavior=function(b){Sys.UI.Behavior.initializeBase(this);this._element=b;var a=b._behaviors;if(!a)b._behaviors=[this];else a[a.length]=this};Sys.UI.Behavior.prototype={_name:null,get_element:function(){return this._element},get_id:function(){var a=Sys.UI.Behavior.callBaseMethod(this,"get_id");if(a)return a;if(!this._element||!this._element.id)return "";return this._element.id+"$"+this.get_name()},get_name:function(){if(this._name)return this._name;var a=Object.getTypeName(this),b=a.lastIndexOf(".");if(b!==-1)a=a.substr(b+1);if(!this.get_isInitialized())this._name=a;return a},set_name:function(a){this._name=a},initialize:function(){Sys.UI.Behavior.callBaseMethod(this,"initialize");var a=this.get_name();if(a)this._element[a]=this},dispose:function(){Sys.UI.Behavior.callBaseMethod(this,"dispose");var a=this._element;if(a){var c=this.get_name();if(c)a[c]=null;var b=a._behaviors;Array.remove(b,this);if(b.length===0)a._behaviors=null;delete this._element}}};Sys.UI.Behavior.registerClass("Sys.UI.Behavior",Sys.Component);Sys.UI.Behavior.getBehaviorByName=function(b,c){var a=b[c];return a&&Sys.UI.Behavior.isInstanceOfType(a)?a:null};Sys.UI.Behavior.getBehaviors=function(a){if(!a._behaviors)return [];return Array.clone(a._behaviors)};Sys.UI.Behavior.getBehaviorsByType=function(d,e){var a=d._behaviors,c=[];if(a)for(var b=0,f=a.length;b0&&a.charAt(0)==="#")a=a.substring(1);return a};Sys._Application.prototype.get_enableHistory=function(){return this._enableHistory};Sys._Application.prototype.set_enableHistory=function(a){this._enableHistory=a};Sys._Application.prototype.add_navigate=function(a){this.get_events().addHandler("navigate",a)};Sys._Application.prototype.remove_navigate=function(a){this.get_events().removeHandler("navigate",a)};Sys._Application.prototype.addHistoryPoint=function(c,f){this._ensureHistory();var b=this._state;for(var a in c){var d=c[a];if(d===null){if(typeof b[a]!=="undefined")delete b[a]}else b[a]=d}var e=this._serializeState(b);this._historyPointIsNew=true;this._setState(e,f);this._raiseNavigate()};Sys._Application.prototype.setServerId=function(a,b){this._clientId=a;this._uniqueId=b};Sys._Application.prototype.setServerState=function(a){this._ensureHistory();this._state.__s=a;this._updateHiddenField(a)};Sys._Application.prototype._deserializeState=function(a){var e={};a=a||"";var b=a.indexOf("&&");if(b!==-1&&b+2'");c.write(""+(b||document.title)+"parent.Sys.Application._onIFrameLoad('+Sys.Serialization.JavaScriptSerializer.serialize(a)+");");c.close()}this._ignoreTimer=false;this._currentEntry=a;if(this._historyFrame||this._historyPointIsNew){var f=this.get_stateString();if(a!==f){window.location.hash=a;this._currentEntry=this.get_stateString();if(typeof b!=="undefined"&&b!==null)document.title=b}}this._historyPointIsNew=false}}};Sys._Application.prototype._updateHiddenField=function(b){if(this._clientId){var a=document.getElementById(this._clientId);if(a)a.value=b}};if(!window.XMLHttpRequest)window.XMLHttpRequest=function(){var b=["Msxml2.XMLHTTP.3.0","Msxml2.XMLHTTP"];for(var a=0,c=b.length;a0)this._timer=window.setTimeout(Function.createDelegate(this,this._onTimeout),d);this._xmlHttpRequest.send(c);this._started=true},getResponseHeader:function(b){var a;try{a=this._xmlHttpRequest.getResponseHeader(b)}catch(c){}if(!a)a="";return a},getAllResponseHeaders:function(){return this._xmlHttpRequest.getAllResponseHeaders()},get_responseData:function(){return this._xmlHttpRequest.responseText},get_statusCode:function(){var a=0;try{a=this._xmlHttpRequest.status}catch(b){}return a},get_statusText:function(){return this._xmlHttpRequest.statusText},get_xml:function(){var a=this._xmlHttpRequest.responseXML;if(!a||!a.documentElement){a=Sys.Net.XMLDOM(this._xmlHttpRequest.responseText);if(!a||!a.documentElement)return null}else if(navigator.userAgent.indexOf("MSIE")!==-1)a.setProperty("SelectionLanguage","XPath");if(a.documentElement.namespaceURI==="http://www.mozilla.org/newlayout/xml/parsererror.xml"&&a.documentElement.tagName==="parsererror")return null;if(a.documentElement.firstChild&&a.documentElement.firstChild.tagName==="parsererror")return null;return a},abort:function(){if(this._aborted||this._responseAvailable||this._timedOut)return;this._aborted=true;this._clearTimer();if(this._xmlHttpRequest&&!this._responseAvailable){this._xmlHttpRequest.onreadystatechange=Function.emptyMethod;this._xmlHttpRequest.abort();this._xmlHttpRequest=null;this._webRequest.completed(Sys.EventArgs.Empty)}}};Sys.Net.XMLHttpExecutor.registerClass("Sys.Net.XMLHttpExecutor",Sys.Net.WebRequestExecutor);Sys.Net._WebRequestManager=function(){this._defaultTimeout=0;this._defaultExecutorType="Sys.Net.XMLHttpExecutor"};Sys.Net._WebRequestManager.prototype={add_invokingRequest:function(a){this._get_eventHandlerList().addHandler("invokingRequest",a)},remove_invokingRequest:function(a){this._get_eventHandlerList().removeHandler("invokingRequest",a)},add_completedRequest:function(a){this._get_eventHandlerList().addHandler("completedRequest",a)},remove_completedRequest:function(a){this._get_eventHandlerList().removeHandler("completedRequest",a)},_get_eventHandlerList:function(){if(!this._events)this._events=new Sys.EventHandlerList;return this._events},get_defaultTimeout:function(){return this._defaultTimeout},set_defaultTimeout:function(a){this._defaultTimeout=a},get_defaultExecutorType:function(){return this._defaultExecutorType},set_defaultExecutorType:function(a){this._defaultExecutorType=a},executeRequest:function(webRequest){var executor=webRequest.get_executor();if(!executor){var failed=false;try{var executorType=eval(this._defaultExecutorType);executor=new executorType}catch(a){failed=true}webRequest.set_executor(executor)}if(executor.get_aborted())return;var evArgs=new Sys.Net.NetworkRequestEventArgs(webRequest),handler=this._get_eventHandlerList().getHandler("invokingRequest");if(handler)handler(this,evArgs);if(!evArgs.get_cancel())executor.executeRequest()}};Sys.Net._WebRequestManager.registerClass("Sys.Net._WebRequestManager");Sys.Net.WebRequestManager=new Sys.Net._WebRequestManager;Sys.Net.NetworkRequestEventArgs=function(a){Sys.Net.NetworkRequestEventArgs.initializeBase(this);this._webRequest=a};Sys.Net.NetworkRequestEventArgs.prototype={get_webRequest:function(){return this._webRequest}};Sys.Net.NetworkRequestEventArgs.registerClass("Sys.Net.NetworkRequestEventArgs",Sys.CancelEventArgs);Sys.Net.WebRequest=function(){this._url="";this._headers={};this._body=null;this._userContext=null;this._httpVerb=null;this._executor=null;this._invokeCalled=false;this._timeout=0};Sys.Net.WebRequest.prototype={add_completed:function(a){this._get_eventHandlerList().addHandler("completed",a)},remove_completed:function(a){this._get_eventHandlerList().removeHandler("completed",a)},completed:function(b){var a=Sys.Net.WebRequestManager._get_eventHandlerList().getHandler("completedRequest");if(a)a(this._executor,b);a=this._get_eventHandlerList().getHandler("completed");if(a)a(this._executor,b)},_get_eventHandlerList:function(){if(!this._events)this._events=new Sys.EventHandlerList;return this._events},get_url:function(){return this._url},set_url:function(a){this._url=a},get_headers:function(){return this._headers},get_httpVerb:function(){if(this._httpVerb===null){if(this._body===null)return "GET";return "POST"}return this._httpVerb},set_httpVerb:function(a){this._httpVerb=a},get_body:function(){return this._body},set_body:function(a){this._body=a},get_userContext:function(){return this._userContext},set_userContext:function(a){this._userContext=a},get_executor:function(){return this._executor},set_executor:function(a){this._executor=a;this._executor._set_webRequest(this)},get_timeout:function(){if(this._timeout===0)return Sys.Net.WebRequestManager.get_defaultTimeout();return this._timeout},set_timeout:function(a){this._timeout=a},getResolvedUrl:function(){return Sys.Net.WebRequest._resolveUrl(this._url)},invoke:function(){Sys.Net.WebRequestManager.executeRequest(this);this._invokeCalled=true}};Sys.Net.WebRequest._resolveUrl=function(b,a){if(b&&b.indexOf("://")!==-1)return b;if(!a||a.length===0){var d=document.getElementsByTagName("base")[0];if(d&&d.href&&d.href.length>0)a=d.href;else a=document.URL}var c=a.indexOf("?");if(c!==-1)a=a.substr(0,c);c=a.indexOf("#");if(c!==-1)a=a.substr(0,c);a=a.substr(0,a.lastIndexOf("/")+1);if(!b||b.length===0)return a;if(b.charAt(0)==="/"){var e=a.indexOf("://"),g=a.indexOf("/",e+3);return a.substr(0,g)+b}else{var f=a.lastIndexOf("/");return a.substr(0,f+1)+b}};Sys.Net.WebRequest._createQueryString=function(c,b,f){b=b||encodeURIComponent;var h=0,e,g,d,a=new Sys.StringBuilder;if(c)for(d in c){e=c[d];if(typeof e==="function")continue;g=Sys.Serialization.JavaScriptSerializer.serialize(e);if(h++)a.append("&");a.append(d);a.append("=");a.append(b(g))}if(f){if(h)a.append("&");a.append(f)}return a.toString()};Sys.Net.WebRequest._createUrl=function(a,b,c){if(!b&&!c)return a;var d=Sys.Net.WebRequest._createQueryString(b,null,c);return d.length?a+(a&&a.indexOf("?")>=0?"&":"?")+d:a};Sys.Net.WebRequest.registerClass("Sys.Net.WebRequest");Sys._ScriptLoaderTask=function(b,a){this._scriptElement=b;this._completedCallback=a};Sys._ScriptLoaderTask.prototype={get_scriptElement:function(){return this._scriptElement},dispose:function(){if(this._disposed)return;this._disposed=true;this._removeScriptElementHandlers();Sys._ScriptLoaderTask._clearScript(this._scriptElement);this._scriptElement=null},execute:function(){this._addScriptElementHandlers();document.getElementsByTagName("head")[0].appendChild(this._scriptElement)},_addScriptElementHandlers:function(){this._scriptLoadDelegate=Function.createDelegate(this,this._scriptLoadHandler);if(Sys.Browser.agent!==Sys.Browser.InternetExplorer){this._scriptElement.readyState="loaded";$addHandler(this._scriptElement,"load",this._scriptLoadDelegate)}else $addHandler(this._scriptElement,"readystatechange",this._scriptLoadDelegate);if(this._scriptElement.addEventListener){this._scriptErrorDelegate=Function.createDelegate(this,this._scriptErrorHandler);this._scriptElement.addEventListener("error",this._scriptErrorDelegate,false)}},_removeScriptElementHandlers:function(){if(this._scriptLoadDelegate){var a=this.get_scriptElement();if(Sys.Browser.agent!==Sys.Browser.InternetExplorer)$removeHandler(a,"load",this._scriptLoadDelegate);else $removeHandler(a,"readystatechange",this._scriptLoadDelegate);if(this._scriptErrorDelegate){this._scriptElement.removeEventListener("error",this._scriptErrorDelegate,false);this._scriptErrorDelegate=null}this._scriptLoadDelegate=null}},_scriptErrorHandler:function(){if(this._disposed)return;this._completedCallback(this.get_scriptElement(),false)},_scriptLoadHandler:function(){if(this._disposed)return;var a=this.get_scriptElement();if(a.readyState!=="loaded"&&a.readyState!=="complete")return;this._completedCallback(a,true)}};Sys._ScriptLoaderTask.registerClass("Sys._ScriptLoaderTask",null,Sys.IDisposable);Sys._ScriptLoaderTask._clearScript=function(a){if(!Sys.Debug.isDebug)a.parentNode.removeChild(a)};Type.registerNamespace("Sys.Net");Sys.Net.WebServiceProxy=function(){};Sys.Net.WebServiceProxy.prototype={get_timeout:function(){return this._timeout||0},set_timeout:function(a){if(a<0)throw Error.argumentOutOfRange("value",a,Sys.Res.invalidTimeout);this._timeout=a},get_defaultUserContext:function(){return typeof this._userContext==="undefined"?null:this._userContext},set_defaultUserContext:function(a){this._userContext=a},get_defaultSucceededCallback:function(){return this._succeeded||null},set_defaultSucceededCallback:function(a){this._succeeded=a},get_defaultFailedCallback:function(){return this._failed||null},set_defaultFailedCallback:function(a){this._failed=a},get_enableJsonp:function(){return !!this._jsonp},set_enableJsonp:function(a){this._jsonp=a},get_path:function(){return this._path||null},set_path:function(a){this._path=a},get_jsonpCallbackParameter:function(){return this._callbackParameter||"callback"},set_jsonpCallbackParameter:function(a){this._callbackParameter=a},_invoke:function(d,e,g,f,c,b,a){c=c||this.get_defaultSucceededCallback();b=b||this.get_defaultFailedCallback();if(a===null||typeof a==="undefined")a=this.get_defaultUserContext();return Sys.Net.WebServiceProxy.invoke(d,e,g,f,c,b,a,this.get_timeout(),this.get_enableJsonp(),this.get_jsonpCallbackParameter())}};Sys.Net.WebServiceProxy.registerClass("Sys.Net.WebServiceProxy");Sys.Net.WebServiceProxy.invoke=function(q,a,m,l,j,b,g,e,w,p){var i=w!==false?Sys.Net.WebServiceProxy._xdomain.exec(q):null,c,n=i&&i.length===3&&(i[1]!==location.protocol||i[2]!==location.host);m=n||m;if(n){p=p||"callback";c="_jsonp"+Sys._jsonp++}if(!l)l={};var r=l;if(!m||!r)r={};var s,h,f=null,k,o=null,u=Sys.Net.WebRequest._createUrl(a?q+"/"+encodeURIComponent(a):q,r,n?p+"=Sys."+c:null);if(n){s=document.createElement("script");s.src=u;k=new Sys._ScriptLoaderTask(s,function(d,b){if(!b||c)t({Message:String.format(Sys.Res.webServiceFailedNoMsg,a)},-1)});function v(){if(f===null)return;f=null;h=new Sys.Net.WebServiceError(true,String.format(Sys.Res.webServiceTimedOut,a));k.dispose();delete Sys[c];if(b)b(h,g,a)}function t(d,e){if(f!==null){window.clearTimeout(f);f=null}k.dispose();delete Sys[c];c=null;if(typeof e!=="undefined"&&e!==200){if(b){h=new Sys.Net.WebServiceError(false,d.Message||String.format(Sys.Res.webServiceFailedNoMsg,a),d.StackTrace||null,d.ExceptionType||null,d);h._statusCode=e;b(h,g,a)}}else if(j)j(d,g,a)}Sys[c]=t;e=e||Sys.Net.WebRequestManager.get_defaultTimeout();if(e>0)f=window.setTimeout(v,e);k.execute();return null}var d=new Sys.Net.WebRequest;d.set_url(u);d.get_headers()["Content-Type"]="application/json; charset=utf-8";if(!m){o=Sys.Serialization.JavaScriptSerializer.serialize(l);if(o==="{}")o=""}d.set_body(o);d.add_completed(x);if(e&&e>0)d.set_timeout(e);d.invoke();function x(d){if(d.get_responseAvailable()){var f=d.get_statusCode(),c=null;try{var e=d.getResponseHeader("Content-Type");if(e.startsWith("application/json"))c=d.get_object();else if(e.startsWith("text/xml"))c=d.get_xml();else c=d.get_responseData()}catch(m){}var k=d.getResponseHeader("jsonerror"),h=k==="true";if(h){if(c)c=new Sys.Net.WebServiceError(false,c.Message,c.StackTrace,c.ExceptionType,c)}else if(e.startsWith("application/json"))c=!c||typeof c.d==="undefined"?c:c.d;if(f<200||f>=300||h){if(b){if(!c||!h)c=new Sys.Net.WebServiceError(false,String.format(Sys.Res.webServiceFailedNoMsg,a));c._statusCode=f;b(c,g,a)}}else if(j)j(c,g,a)}else{var i;if(d.get_timedOut())i=String.format(Sys.Res.webServiceTimedOut,a);else i=String.format(Sys.Res.webServiceFailedNoMsg,a);if(b)b(new Sys.Net.WebServiceError(d.get_timedOut(),i,"",""),g,a)}}return d};Sys.Net.WebServiceProxy._generateTypedConstructor=function(a){return function(b){if(b)for(var c in b)this[c]=b[c];this.__type=a}};Sys._jsonp=0;Sys.Net.WebServiceProxy._xdomain=/^\s*([a-zA-Z0-9\+\-\.]+\:)\/\/([^?#\/]+)/;Sys.Net.WebServiceError=function(d,e,c,a,b){this._timedOut=d;this._message=e;this._stackTrace=c;this._exceptionType=a;this._errorObject=b;this._statusCode=-1};Sys.Net.WebServiceError.prototype={get_timedOut:function(){return this._timedOut},get_statusCode:function(){return this._statusCode},get_message:function(){return this._message},get_stackTrace:function(){return this._stackTrace||""},get_exceptionType:function(){return this._exceptionType||""},get_errorObject:function(){return this._errorObject||null}};Sys.Net.WebServiceError.registerClass("Sys.Net.WebServiceError"); +Type.registerNamespace('Sys');Sys.Res={'argumentInteger':'Value must be an integer.','invokeCalledTwice':'Cannot call invoke more than once.','webServiceFailed':'The server method \'{0}\' failed with the following error: {1}','argumentType':'Object cannot be converted to the required type.','argumentNull':'Value cannot be null.','scriptAlreadyLoaded':'The script \'{0}\' has been referenced multiple times. If referencing Microsoft AJAX scripts explicitly, set the MicrosoftAjaxMode property of the ScriptManager to Explicit.','scriptDependencyNotFound':'The script \'{0}\' failed to load because it is dependent on script \'{1}\'.','formatBadFormatSpecifier':'Format specifier was invalid.','requiredScriptReferenceNotIncluded':'\'{0}\' requires that you have included a script reference to \'{1}\'.','webServiceFailedNoMsg':'The server method \'{0}\' failed.','argumentDomElement':'Value must be a DOM element.','invalidExecutorType':'Could not create a valid Sys.Net.WebRequestExecutor from: {0}.','cannotCallBeforeResponse':'Cannot call {0} when responseAvailable is false.','actualValue':'Actual value was {0}.','enumInvalidValue':'\'{0}\' is not a valid value for enum {1}.','scriptLoadFailed':'The script \'{0}\' could not be loaded.','parameterCount':'Parameter count mismatch.','cannotDeserializeEmptyString':'Cannot deserialize empty string.','formatInvalidString':'Input string was not in a correct format.','invalidTimeout':'Value must be greater than or equal to zero.','cannotAbortBeforeStart':'Cannot abort when executor has not started.','argument':'Value does not fall within the expected range.','cannotDeserializeInvalidJson':'Cannot deserialize. The data does not correspond to valid JSON.','invalidHttpVerb':'httpVerb cannot be set to an empty or null string.','nullWebRequest':'Cannot call executeRequest with a null webRequest.','eventHandlerInvalid':'Handler was not added through the Sys.UI.DomEvent.addHandler method.','cannotSerializeNonFiniteNumbers':'Cannot serialize non finite numbers.','argumentUndefined':'Value cannot be undefined.','webServiceInvalidReturnType':'The server method \'{0}\' returned an invalid type. Expected type: {1}','servicePathNotSet':'The path to the web service has not been set.','argumentTypeWithTypes':'Object of type \'{0}\' cannot be converted to type \'{1}\'.','cannotCallOnceStarted':'Cannot call {0} once started.','badBaseUrl1':'Base URL does not contain ://.','badBaseUrl2':'Base URL does not contain another /.','badBaseUrl3':'Cannot find last / in base URL.','setExecutorAfterActive':'Cannot set executor after it has become active.','paramName':'Parameter name: {0}','nullReferenceInPath':'Null reference while evaluating data path: \'{0}\'.','cannotCallOutsideHandler':'Cannot call {0} outside of a completed event handler.','cannotSerializeObjectWithCycle':'Cannot serialize object with cyclic reference within child properties.','format':'One of the identified items was in an invalid format.','assertFailedCaller':'Assertion Failed: {0}\r\nat {1}','argumentOutOfRange':'Specified argument was out of the range of valid values.','webServiceTimedOut':'The server method \'{0}\' timed out.','notImplemented':'The method or operation is not implemented.','assertFailed':'Assertion Failed: {0}','invalidOperation':'Operation is not valid due to the current state of the object.','breakIntoDebugger':'{0}\r\n\r\nBreak into debugger?'}; diff --git a/NzbDrone.Web/Scripts/MicrosoftMvcAjax.debug.js b/NzbDrone.Web/Scripts/MicrosoftMvcAjax.debug.js new file mode 100644 index 000000000..eb68ba7e7 --- /dev/null +++ b/NzbDrone.Web/Scripts/MicrosoftMvcAjax.debug.js @@ -0,0 +1,408 @@ +//!---------------------------------------------------------- +//! Copyright (C) Microsoft Corporation. All rights reserved. +//!---------------------------------------------------------- +//! MicrosoftMvcAjax.js + +Type.registerNamespace('Sys.Mvc'); + +//////////////////////////////////////////////////////////////////////////////// +// Sys.Mvc.AjaxOptions + +Sys.Mvc.$create_AjaxOptions = function Sys_Mvc_AjaxOptions() { return {}; } + + +//////////////////////////////////////////////////////////////////////////////// +// Sys.Mvc.InsertionMode + +Sys.Mvc.InsertionMode = function() { + /// + /// + /// + /// + /// + /// +}; +Sys.Mvc.InsertionMode.prototype = { + replace: 0, + insertBefore: 1, + insertAfter: 2 +} +Sys.Mvc.InsertionMode.registerEnum('Sys.Mvc.InsertionMode', false); + + +//////////////////////////////////////////////////////////////////////////////// +// Sys.Mvc.AjaxContext + +Sys.Mvc.AjaxContext = function Sys_Mvc_AjaxContext(request, updateTarget, loadingElement, insertionMode) { + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + this._request = request; + this._updateTarget = updateTarget; + this._loadingElement = loadingElement; + this._insertionMode = insertionMode; +} +Sys.Mvc.AjaxContext.prototype = { + _insertionMode: 0, + _loadingElement: null, + _response: null, + _request: null, + _updateTarget: null, + + get_data: function Sys_Mvc_AjaxContext$get_data() { + /// + if (this._response) { + return this._response.get_responseData(); + } + else { + return null; + } + }, + + get_insertionMode: function Sys_Mvc_AjaxContext$get_insertionMode() { + /// + return this._insertionMode; + }, + + get_loadingElement: function Sys_Mvc_AjaxContext$get_loadingElement() { + /// + return this._loadingElement; + }, + + get_object: function Sys_Mvc_AjaxContext$get_object() { + /// + var executor = this.get_response(); + return (executor) ? executor.get_object() : null; + }, + + get_response: function Sys_Mvc_AjaxContext$get_response() { + /// + return this._response; + }, + set_response: function Sys_Mvc_AjaxContext$set_response(value) { + /// + this._response = value; + return value; + }, + + get_request: function Sys_Mvc_AjaxContext$get_request() { + /// + return this._request; + }, + + get_updateTarget: function Sys_Mvc_AjaxContext$get_updateTarget() { + /// + return this._updateTarget; + } +} + + +//////////////////////////////////////////////////////////////////////////////// +// Sys.Mvc.AsyncHyperlink + +Sys.Mvc.AsyncHyperlink = function Sys_Mvc_AsyncHyperlink() { +} +Sys.Mvc.AsyncHyperlink.handleClick = function Sys_Mvc_AsyncHyperlink$handleClick(anchor, evt, ajaxOptions) { + /// + /// + /// + /// + /// + /// + evt.preventDefault(); + Sys.Mvc.MvcHelpers._asyncRequest(anchor.href, 'post', '', anchor, ajaxOptions); +} + + +//////////////////////////////////////////////////////////////////////////////// +// Sys.Mvc.MvcHelpers + +Sys.Mvc.MvcHelpers = function Sys_Mvc_MvcHelpers() { +} +Sys.Mvc.MvcHelpers._serializeSubmitButton = function Sys_Mvc_MvcHelpers$_serializeSubmitButton(element, offsetX, offsetY) { + /// + /// + /// + /// + /// + /// + /// + if (element.disabled) { + return null; + } + var name = element.name; + if (name) { + var tagName = element.tagName.toUpperCase(); + var encodedName = encodeURIComponent(name); + var inputElement = element; + if (tagName === 'INPUT') { + var type = inputElement.type; + if (type === 'submit') { + return encodedName + '=' + encodeURIComponent(inputElement.value); + } + else if (type === 'image') { + return encodedName + '.x=' + offsetX + '&' + encodedName + '.y=' + offsetY; + } + } + else if ((tagName === 'BUTTON') && (name.length) && (inputElement.type === 'submit')) { + return encodedName + '=' + encodeURIComponent(inputElement.value); + } + } + return null; +} +Sys.Mvc.MvcHelpers._serializeForm = function Sys_Mvc_MvcHelpers$_serializeForm(form) { + /// + /// + /// + var formElements = form.elements; + var formBody = new Sys.StringBuilder(); + var count = formElements.length; + for (var i = 0; i < count; i++) { + var element = formElements[i]; + var name = element.name; + if (!name || !name.length) { + continue; + } + var tagName = element.tagName.toUpperCase(); + if (tagName === 'INPUT') { + var inputElement = element; + var type = inputElement.type; + if ((type === 'text') || (type === 'password') || (type === 'hidden') || (((type === 'checkbox') || (type === 'radio')) && element.checked)) { + formBody.append(encodeURIComponent(name)); + formBody.append('='); + formBody.append(encodeURIComponent(inputElement.value)); + formBody.append('&'); + } + } + else if (tagName === 'SELECT') { + var selectElement = element; + var optionCount = selectElement.options.length; + for (var j = 0; j < optionCount; j++) { + var optionElement = selectElement.options[j]; + if (optionElement.selected) { + formBody.append(encodeURIComponent(name)); + formBody.append('='); + formBody.append(encodeURIComponent(optionElement.value)); + formBody.append('&'); + } + } + } + else if (tagName === 'TEXTAREA') { + formBody.append(encodeURIComponent(name)); + formBody.append('='); + formBody.append(encodeURIComponent((element.value))); + formBody.append('&'); + } + } + var additionalInput = form._additionalInput; + if (additionalInput) { + formBody.append(additionalInput); + formBody.append('&'); + } + return formBody.toString(); +} +Sys.Mvc.MvcHelpers._asyncRequest = function Sys_Mvc_MvcHelpers$_asyncRequest(url, verb, body, triggerElement, ajaxOptions) { + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + if (ajaxOptions.confirm) { + if (!confirm(ajaxOptions.confirm)) { + return; + } + } + if (ajaxOptions.url) { + url = ajaxOptions.url; + } + if (ajaxOptions.httpMethod) { + verb = ajaxOptions.httpMethod; + } + if (body.length > 0 && !body.endsWith('&')) { + body += '&'; + } + body += 'X-Requested-With=XMLHttpRequest'; + var upperCaseVerb = verb.toUpperCase(); + var isGetOrPost = (upperCaseVerb === 'GET' || upperCaseVerb === 'POST'); + if (!isGetOrPost) { + body += '&'; + body += 'X-HTTP-Method-Override=' + upperCaseVerb; + } + var requestBody = ''; + if (upperCaseVerb === 'GET' || upperCaseVerb === 'DELETE') { + if (url.indexOf('?') > -1) { + if (!url.endsWith('&')) { + url += '&'; + } + url += body; + } + else { + url += '?'; + url += body; + } + } + else { + requestBody = body; + } + var request = new Sys.Net.WebRequest(); + request.set_url(url); + if (isGetOrPost) { + request.set_httpVerb(verb); + } + else { + request.set_httpVerb('POST'); + request.get_headers()['X-HTTP-Method-Override'] = upperCaseVerb; + } + request.set_body(requestBody); + if (verb.toUpperCase() === 'PUT') { + request.get_headers()['Content-Type'] = 'application/x-www-form-urlencoded;'; + } + request.get_headers()['X-Requested-With'] = 'XMLHttpRequest'; + var updateElement = null; + if (ajaxOptions.updateTargetId) { + updateElement = $get(ajaxOptions.updateTargetId); + } + var loadingElement = null; + if (ajaxOptions.loadingElementId) { + loadingElement = $get(ajaxOptions.loadingElementId); + } + var ajaxContext = new Sys.Mvc.AjaxContext(request, updateElement, loadingElement, ajaxOptions.insertionMode); + var continueRequest = true; + if (ajaxOptions.onBegin) { + continueRequest = ajaxOptions.onBegin(ajaxContext) !== false; + } + if (loadingElement) { + Sys.UI.DomElement.setVisible(ajaxContext.get_loadingElement(), true); + } + if (continueRequest) { + request.add_completed(Function.createDelegate(null, function(executor) { + Sys.Mvc.MvcHelpers._onComplete(request, ajaxOptions, ajaxContext); + })); + request.invoke(); + } +} +Sys.Mvc.MvcHelpers._onComplete = function Sys_Mvc_MvcHelpers$_onComplete(request, ajaxOptions, ajaxContext) { + /// + /// + /// + /// + /// + /// + ajaxContext.set_response(request.get_executor()); + if (ajaxOptions.onComplete && ajaxOptions.onComplete(ajaxContext) === false) { + return; + } + var statusCode = ajaxContext.get_response().get_statusCode(); + if ((statusCode >= 200 && statusCode < 300) || statusCode === 304 || statusCode === 1223) { + if (statusCode !== 204 && statusCode !== 304 && statusCode !== 1223) { + var contentType = ajaxContext.get_response().getResponseHeader('Content-Type'); + if ((contentType) && (contentType.indexOf('application/x-javascript') !== -1)) { + eval(ajaxContext.get_data()); + } + else { + Sys.Mvc.MvcHelpers.updateDomElement(ajaxContext.get_updateTarget(), ajaxContext.get_insertionMode(), ajaxContext.get_data()); + } + } + if (ajaxOptions.onSuccess) { + ajaxOptions.onSuccess(ajaxContext); + } + } + else { + if (ajaxOptions.onFailure) { + ajaxOptions.onFailure(ajaxContext); + } + } + if (ajaxContext.get_loadingElement()) { + Sys.UI.DomElement.setVisible(ajaxContext.get_loadingElement(), false); + } +} +Sys.Mvc.MvcHelpers.updateDomElement = function Sys_Mvc_MvcHelpers$updateDomElement(target, insertionMode, content) { + /// + /// + /// + /// + /// + /// + if (target) { + switch (insertionMode) { + case Sys.Mvc.InsertionMode.replace: + target.innerHTML = content; + break; + case Sys.Mvc.InsertionMode.insertBefore: + if (content && content.length > 0) { + target.innerHTML = content + target.innerHTML.trimStart(); + } + break; + case Sys.Mvc.InsertionMode.insertAfter: + if (content && content.length > 0) { + target.innerHTML = target.innerHTML.trimEnd() + content; + } + break; + } + } +} + + +//////////////////////////////////////////////////////////////////////////////// +// Sys.Mvc.AsyncForm + +Sys.Mvc.AsyncForm = function Sys_Mvc_AsyncForm() { +} +Sys.Mvc.AsyncForm.handleClick = function Sys_Mvc_AsyncForm$handleClick(form, evt) { + /// + /// + /// + /// + var additionalInput = Sys.Mvc.MvcHelpers._serializeSubmitButton(evt.target, evt.offsetX, evt.offsetY); + form._additionalInput = additionalInput; +} +Sys.Mvc.AsyncForm.handleSubmit = function Sys_Mvc_AsyncForm$handleSubmit(form, evt, ajaxOptions) { + /// + /// + /// + /// + /// + /// + evt.preventDefault(); + var validationCallbacks = form.validationCallbacks; + if (validationCallbacks) { + for (var i = 0; i < validationCallbacks.length; i++) { + var callback = validationCallbacks[i]; + if (!callback()) { + return; + } + } + } + var body = Sys.Mvc.MvcHelpers._serializeForm(form); + Sys.Mvc.MvcHelpers._asyncRequest(form.action, form.method || 'post', body, form, ajaxOptions); +} + + +Sys.Mvc.AjaxContext.registerClass('Sys.Mvc.AjaxContext'); +Sys.Mvc.AsyncHyperlink.registerClass('Sys.Mvc.AsyncHyperlink'); +Sys.Mvc.MvcHelpers.registerClass('Sys.Mvc.MvcHelpers'); +Sys.Mvc.AsyncForm.registerClass('Sys.Mvc.AsyncForm'); + +// ---- Do not remove this footer ---- +// Generated using Script# v0.5.0.0 (http://projects.nikhilk.net) +// ----------------------------------- diff --git a/NzbDrone.Web/Scripts/MicrosoftMvcAjax.js b/NzbDrone.Web/Scripts/MicrosoftMvcAjax.js new file mode 100644 index 000000000..c5a6165e7 --- /dev/null +++ b/NzbDrone.Web/Scripts/MicrosoftMvcAjax.js @@ -0,0 +1,25 @@ +//---------------------------------------------------------- +// Copyright (C) Microsoft Corporation. All rights reserved. +//---------------------------------------------------------- +// MicrosoftMvcAjax.js + +Type.registerNamespace('Sys.Mvc');Sys.Mvc.$create_AjaxOptions=function(){return {};} +Sys.Mvc.InsertionMode=function(){};Sys.Mvc.InsertionMode.prototype = {replace:0,insertBefore:1,insertAfter:2} +Sys.Mvc.InsertionMode.registerEnum('Sys.Mvc.InsertionMode',false);Sys.Mvc.AjaxContext=function(request,updateTarget,loadingElement,insertionMode){this.$3=request;this.$4=updateTarget;this.$1=loadingElement;this.$0=insertionMode;} +Sys.Mvc.AjaxContext.prototype={$0:0,$1:null,$2:null,$3:null,$4:null,get_data:function(){if(this.$2){return this.$2.get_responseData();}else{return null;}},get_insertionMode:function(){return this.$0;},get_loadingElement:function(){return this.$1;},get_object:function(){var $0=this.get_response();return ($0)?$0.get_object():null;},get_response:function(){return this.$2;},set_response:function(value){this.$2=value;return value;},get_request:function(){return this.$3;},get_updateTarget:function(){return this.$4;}} +Sys.Mvc.AsyncHyperlink=function(){} +Sys.Mvc.AsyncHyperlink.handleClick=function(anchor,evt,ajaxOptions){evt.preventDefault();Sys.Mvc.MvcHelpers.$2(anchor.href,'post','',anchor,ajaxOptions);} +Sys.Mvc.MvcHelpers=function(){} +Sys.Mvc.MvcHelpers.$0=function($p0,$p1,$p2){if($p0.disabled){return null;}var $0=$p0.name;if($0){var $1=$p0.tagName.toUpperCase();var $2=encodeURIComponent($0);var $3=$p0;if($1==='INPUT'){var $4=$3.type;if($4==='submit'){return $2+'='+encodeURIComponent($3.value);}else if($4==='image'){return $2+'.x='+$p1+'&'+$2+'.y='+$p2;}}else if(($1==='BUTTON')&&($0.length)&&($3.type==='submit')){return $2+'='+encodeURIComponent($3.value);}}return null;} +Sys.Mvc.MvcHelpers.$1=function($p0){var $0=$p0.elements;var $1=new Sys.StringBuilder();var $2=$0.length;for(var $4=0;$4<$2;$4++){var $5=$0[$4];var $6=$5.name;if(!$6||!$6.length){continue;}var $7=$5.tagName.toUpperCase();if($7==='INPUT'){var $8=$5;var $9=$8.type;if(($9==='text')||($9==='password')||($9==='hidden')||((($9==='checkbox')||($9==='radio'))&&$5.checked)){$1.append(encodeURIComponent($6));$1.append('=');$1.append(encodeURIComponent($8.value));$1.append('&');}}else if($7==='SELECT'){var $A=$5;var $B=$A.options.length;for(var $C=0;$C<$B;$C++){var $D=$A.options[$C];if($D.selected){$1.append(encodeURIComponent($6));$1.append('=');$1.append(encodeURIComponent($D.value));$1.append('&');}}}else if($7==='TEXTAREA'){$1.append(encodeURIComponent($6));$1.append('=');$1.append(encodeURIComponent(($5.value)));$1.append('&');}}var $3=$p0._additionalInput;if($3){$1.append($3);$1.append('&');}return $1.toString();} +Sys.Mvc.MvcHelpers.$2=function($p0,$p1,$p2,$p3,$p4){if($p4.confirm){if(!confirm($p4.confirm)){return;}}if($p4.url){$p0=$p4.url;}if($p4.httpMethod){$p1=$p4.httpMethod;}if($p2.length>0&&!$p2.endsWith('&')){$p2+='&';}$p2+='X-Requested-With=XMLHttpRequest';var $0=$p1.toUpperCase();var $1=($0==='GET'||$0==='POST');if(!$1){$p2+='&';$p2+='X-HTTP-Method-Override='+$0;}var $2='';if($0==='GET'||$0==='DELETE'){if($p0.indexOf('?')>-1){if(!$p0.endsWith('&')){$p0+='&';}$p0+=$p2;}else{$p0+='?';$p0+=$p2;}}else{$2=$p2;}var $3=new Sys.Net.WebRequest();$3.set_url($p0);if($1){$3.set_httpVerb($p1);}else{$3.set_httpVerb('POST');$3.get_headers()['X-HTTP-Method-Override']=$0;}$3.set_body($2);if($p1.toUpperCase()==='PUT'){$3.get_headers()['Content-Type']='application/x-www-form-urlencoded;';}$3.get_headers()['X-Requested-With']='XMLHttpRequest';var $4=null;if($p4.updateTargetId){$4=$get($p4.updateTargetId);}var $5=null;if($p4.loadingElementId){$5=$get($p4.loadingElementId);}var $6=new Sys.Mvc.AjaxContext($3,$4,$5,$p4.insertionMode);var $7=true;if($p4.onBegin){$7=$p4.onBegin($6)!==false;}if($5){Sys.UI.DomElement.setVisible($6.get_loadingElement(),true);}if($7){$3.add_completed(Function.createDelegate(null,function($p1_0){ +Sys.Mvc.MvcHelpers.$3($3,$p4,$6);}));$3.invoke();}} +Sys.Mvc.MvcHelpers.$3=function($p0,$p1,$p2){$p2.set_response($p0.get_executor());if($p1.onComplete&&$p1.onComplete($p2)===false){return;}var $0=$p2.get_response().get_statusCode();if(($0>=200&&$0<300)||$0===304||$0===1223){if($0!==204&&$0!==304&&$0!==1223){var $1=$p2.get_response().getResponseHeader('Content-Type');if(($1)&&($1.indexOf('application/x-javascript')!==-1)){eval($p2.get_data());}else{Sys.Mvc.MvcHelpers.updateDomElement($p2.get_updateTarget(),$p2.get_insertionMode(),$p2.get_data());}}if($p1.onSuccess){$p1.onSuccess($p2);}}else{if($p1.onFailure){$p1.onFailure($p2);}}if($p2.get_loadingElement()){Sys.UI.DomElement.setVisible($p2.get_loadingElement(),false);}} +Sys.Mvc.MvcHelpers.updateDomElement=function(target,insertionMode,content){if(target){switch(insertionMode){case 0:target.innerHTML=content;break;case 1:if(content&&content.length>0){target.innerHTML=content+target.innerHTML.trimStart();}break;case 2:if(content&&content.length>0){target.innerHTML=target.innerHTML.trimEnd()+content;}break;}}} +Sys.Mvc.AsyncForm=function(){} +Sys.Mvc.AsyncForm.handleClick=function(form,evt){var $0=Sys.Mvc.MvcHelpers.$0(evt.target,evt.offsetX,evt.offsetY);form._additionalInput = $0;} +Sys.Mvc.AsyncForm.handleSubmit=function(form,evt,ajaxOptions){evt.preventDefault();var $0=form.validationCallbacks;if($0){for(var $2=0;$2<$0.length;$2++){var $3=$0[$2];if(!$3()){return;}}}var $1=Sys.Mvc.MvcHelpers.$1(form);Sys.Mvc.MvcHelpers.$2(form.action,form.method||'post',$1,form,ajaxOptions);} +Sys.Mvc.AjaxContext.registerClass('Sys.Mvc.AjaxContext');Sys.Mvc.AsyncHyperlink.registerClass('Sys.Mvc.AsyncHyperlink');Sys.Mvc.MvcHelpers.registerClass('Sys.Mvc.MvcHelpers');Sys.Mvc.AsyncForm.registerClass('Sys.Mvc.AsyncForm'); +// ---- Do not remove this footer ---- +// Generated using Script# v0.5.0.0 (http://projects.nikhilk.net) +// ----------------------------------- diff --git a/NzbDrone.Web/Scripts/MicrosoftMvcValidation.debug.js b/NzbDrone.Web/Scripts/MicrosoftMvcValidation.debug.js new file mode 100644 index 000000000..9896f90ae --- /dev/null +++ b/NzbDrone.Web/Scripts/MicrosoftMvcValidation.debug.js @@ -0,0 +1,881 @@ +//!---------------------------------------------------------- +//! Copyright (C) Microsoft Corporation. All rights reserved. +//!---------------------------------------------------------- +//! MicrosoftMvcValidation.js + + +Type.registerNamespace('Sys.Mvc'); + +//////////////////////////////////////////////////////////////////////////////// +// Sys.Mvc.Validation + +Sys.Mvc.$create_Validation = function Sys_Mvc_Validation() { return {}; } + + +//////////////////////////////////////////////////////////////////////////////// +// Sys.Mvc.JsonValidationField + +Sys.Mvc.$create_JsonValidationField = function Sys_Mvc_JsonValidationField() { return {}; } + + +//////////////////////////////////////////////////////////////////////////////// +// Sys.Mvc.JsonValidationOptions + +Sys.Mvc.$create_JsonValidationOptions = function Sys_Mvc_JsonValidationOptions() { return {}; } + + +//////////////////////////////////////////////////////////////////////////////// +// Sys.Mvc.JsonValidationRule + +Sys.Mvc.$create_JsonValidationRule = function Sys_Mvc_JsonValidationRule() { return {}; } + + +//////////////////////////////////////////////////////////////////////////////// +// Sys.Mvc.ValidationContext + +Sys.Mvc.$create_ValidationContext = function Sys_Mvc_ValidationContext() { return {}; } + + +//////////////////////////////////////////////////////////////////////////////// +// Sys.Mvc.NumberValidator + +Sys.Mvc.NumberValidator = function Sys_Mvc_NumberValidator() { +} +Sys.Mvc.NumberValidator.create = function Sys_Mvc_NumberValidator$create(rule) { + /// + /// + /// + return Function.createDelegate(new Sys.Mvc.NumberValidator(), new Sys.Mvc.NumberValidator().validate); +} +Sys.Mvc.NumberValidator.prototype = { + + validate: function Sys_Mvc_NumberValidator$validate(value, context) { + /// + /// + /// + /// + /// + if (Sys.Mvc._validationUtil.stringIsNullOrEmpty(value)) { + return true; + } + var n = Number.parseLocale(value); + return (!isNaN(n)); + } +} + + +//////////////////////////////////////////////////////////////////////////////// +// Sys.Mvc.FormContext + +Sys.Mvc.FormContext = function Sys_Mvc_FormContext(formElement, validationSummaryElement) { + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + this._errors = []; + this.fields = new Array(0); + this._formElement = formElement; + this._validationSummaryElement = validationSummaryElement; + formElement[Sys.Mvc.FormContext._formValidationTag] = this; + if (validationSummaryElement) { + var ulElements = validationSummaryElement.getElementsByTagName('ul'); + if (ulElements.length > 0) { + this._validationSummaryULElement = ulElements[0]; + } + } + this._onClickHandler = Function.createDelegate(this, this._form_OnClick); + this._onSubmitHandler = Function.createDelegate(this, this._form_OnSubmit); +} +Sys.Mvc.FormContext._Application_Load = function Sys_Mvc_FormContext$_Application_Load() { + var allFormOptions = window.mvcClientValidationMetadata; + if (allFormOptions) { + while (allFormOptions.length > 0) { + var thisFormOptions = allFormOptions.pop(); + Sys.Mvc.FormContext._parseJsonOptions(thisFormOptions); + } + } +} +Sys.Mvc.FormContext._getFormElementsWithName = function Sys_Mvc_FormContext$_getFormElementsWithName(formElement, name) { + /// + /// + /// + /// + /// + var allElementsWithNameInForm = []; + var allElementsWithName = document.getElementsByName(name); + for (var i = 0; i < allElementsWithName.length; i++) { + var thisElement = allElementsWithName[i]; + if (Sys.Mvc.FormContext._isElementInHierarchy(formElement, thisElement)) { + Array.add(allElementsWithNameInForm, thisElement); + } + } + return allElementsWithNameInForm; +} +Sys.Mvc.FormContext.getValidationForForm = function Sys_Mvc_FormContext$getValidationForForm(formElement) { + /// + /// + /// + return formElement[Sys.Mvc.FormContext._formValidationTag]; +} +Sys.Mvc.FormContext._isElementInHierarchy = function Sys_Mvc_FormContext$_isElementInHierarchy(parent, child) { + /// + /// + /// + /// + /// + while (child) { + if (parent === child) { + return true; + } + child = child.parentNode; + } + return false; +} +Sys.Mvc.FormContext._parseJsonOptions = function Sys_Mvc_FormContext$_parseJsonOptions(options) { + /// + /// + /// + var formElement = $get(options.FormId); + var validationSummaryElement = (!Sys.Mvc._validationUtil.stringIsNullOrEmpty(options.ValidationSummaryId)) ? $get(options.ValidationSummaryId) : null; + var formContext = new Sys.Mvc.FormContext(formElement, validationSummaryElement); + formContext.enableDynamicValidation(); + formContext.replaceValidationSummary = options.ReplaceValidationSummary; + for (var i = 0; i < options.Fields.length; i++) { + var field = options.Fields[i]; + var fieldElements = Sys.Mvc.FormContext._getFormElementsWithName(formElement, field.FieldName); + var validationMessageElement = (!Sys.Mvc._validationUtil.stringIsNullOrEmpty(field.ValidationMessageId)) ? $get(field.ValidationMessageId) : null; + var fieldContext = new Sys.Mvc.FieldContext(formContext); + Array.addRange(fieldContext.elements, fieldElements); + fieldContext.validationMessageElement = validationMessageElement; + fieldContext.replaceValidationMessageContents = field.ReplaceValidationMessageContents; + for (var j = 0; j < field.ValidationRules.length; j++) { + var rule = field.ValidationRules[j]; + var validator = Sys.Mvc.ValidatorRegistry.getValidator(rule); + if (validator) { + var validation = Sys.Mvc.$create_Validation(); + validation.fieldErrorMessage = rule.ErrorMessage; + validation.validator = validator; + Array.add(fieldContext.validations, validation); + } + } + fieldContext.enableDynamicValidation(); + Array.add(formContext.fields, fieldContext); + } + var registeredValidatorCallbacks = formElement.validationCallbacks; + if (!registeredValidatorCallbacks) { + registeredValidatorCallbacks = []; + formElement.validationCallbacks = registeredValidatorCallbacks; + } + registeredValidatorCallbacks.push(Function.createDelegate(null, function() { + return Sys.Mvc._validationUtil.arrayIsNullOrEmpty(formContext.validate('submit')); + })); + return formContext; +} +Sys.Mvc.FormContext.prototype = { + _onClickHandler: null, + _onSubmitHandler: null, + _submitButtonClicked: null, + _validationSummaryElement: null, + _validationSummaryULElement: null, + _formElement: null, + replaceValidationSummary: false, + + addError: function Sys_Mvc_FormContext$addError(message) { + /// + /// + this.addErrors([ message ]); + }, + + addErrors: function Sys_Mvc_FormContext$addErrors(messages) { + /// + /// + if (!Sys.Mvc._validationUtil.arrayIsNullOrEmpty(messages)) { + Array.addRange(this._errors, messages); + this._onErrorCountChanged(); + } + }, + + clearErrors: function Sys_Mvc_FormContext$clearErrors() { + Array.clear(this._errors); + this._onErrorCountChanged(); + }, + + _displayError: function Sys_Mvc_FormContext$_displayError() { + if (this._validationSummaryElement) { + if (this._validationSummaryULElement) { + Sys.Mvc._validationUtil.removeAllChildren(this._validationSummaryULElement); + for (var i = 0; i < this._errors.length; i++) { + var liElement = document.createElement('li'); + Sys.Mvc._validationUtil.setInnerText(liElement, this._errors[i]); + this._validationSummaryULElement.appendChild(liElement); + } + } + Sys.UI.DomElement.removeCssClass(this._validationSummaryElement, Sys.Mvc.FormContext._validationSummaryValidCss); + Sys.UI.DomElement.addCssClass(this._validationSummaryElement, Sys.Mvc.FormContext._validationSummaryErrorCss); + } + }, + + _displaySuccess: function Sys_Mvc_FormContext$_displaySuccess() { + var validationSummaryElement = this._validationSummaryElement; + if (validationSummaryElement) { + var validationSummaryULElement = this._validationSummaryULElement; + if (validationSummaryULElement) { + validationSummaryULElement.innerHTML = ''; + } + Sys.UI.DomElement.removeCssClass(validationSummaryElement, Sys.Mvc.FormContext._validationSummaryErrorCss); + Sys.UI.DomElement.addCssClass(validationSummaryElement, Sys.Mvc.FormContext._validationSummaryValidCss); + } + }, + + enableDynamicValidation: function Sys_Mvc_FormContext$enableDynamicValidation() { + Sys.UI.DomEvent.addHandler(this._formElement, 'click', this._onClickHandler); + Sys.UI.DomEvent.addHandler(this._formElement, 'submit', this._onSubmitHandler); + }, + + _findSubmitButton: function Sys_Mvc_FormContext$_findSubmitButton(element) { + /// + /// + /// + if (element.disabled) { + return null; + } + var tagName = element.tagName.toUpperCase(); + var inputElement = element; + if (tagName === 'INPUT') { + var type = inputElement.type; + if (type === 'submit' || type === 'image') { + return inputElement; + } + } + else if ((tagName === 'BUTTON') && (inputElement.type === 'submit')) { + return inputElement; + } + return null; + }, + + _form_OnClick: function Sys_Mvc_FormContext$_form_OnClick(e) { + /// + /// + this._submitButtonClicked = this._findSubmitButton(e.target); + }, + + _form_OnSubmit: function Sys_Mvc_FormContext$_form_OnSubmit(e) { + /// + /// + var form = e.target; + var submitButton = this._submitButtonClicked; + if (submitButton && submitButton.disableValidation) { + return; + } + var errorMessages = this.validate('submit'); + if (!Sys.Mvc._validationUtil.arrayIsNullOrEmpty(errorMessages)) { + e.preventDefault(); + } + }, + + _onErrorCountChanged: function Sys_Mvc_FormContext$_onErrorCountChanged() { + if (!this._errors.length) { + this._displaySuccess(); + } + else { + this._displayError(); + } + }, + + validate: function Sys_Mvc_FormContext$validate(eventName) { + /// + /// + /// + var fields = this.fields; + var errors = []; + for (var i = 0; i < fields.length; i++) { + var field = fields[i]; + var thisErrors = field.validate(eventName); + if (thisErrors) { + Array.addRange(errors, thisErrors); + } + } + if (this.replaceValidationSummary) { + this.clearErrors(); + this.addErrors(errors); + } + return errors; + } +} + + +//////////////////////////////////////////////////////////////////////////////// +// Sys.Mvc.FieldContext + +Sys.Mvc.FieldContext = function Sys_Mvc_FieldContext(formContext) { + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + this._errors = []; + this.elements = new Array(0); + this.validations = new Array(0); + this.formContext = formContext; + this._onBlurHandler = Function.createDelegate(this, this._element_OnBlur); + this._onChangeHandler = Function.createDelegate(this, this._element_OnChange); + this._onInputHandler = Function.createDelegate(this, this._element_OnInput); + this._onPropertyChangeHandler = Function.createDelegate(this, this._element_OnPropertyChange); +} +Sys.Mvc.FieldContext.prototype = { + _onBlurHandler: null, + _onChangeHandler: null, + _onInputHandler: null, + _onPropertyChangeHandler: null, + defaultErrorMessage: null, + formContext: null, + replaceValidationMessageContents: false, + validationMessageElement: null, + + addError: function Sys_Mvc_FieldContext$addError(message) { + /// + /// + this.addErrors([ message ]); + }, + + addErrors: function Sys_Mvc_FieldContext$addErrors(messages) { + /// + /// + if (!Sys.Mvc._validationUtil.arrayIsNullOrEmpty(messages)) { + Array.addRange(this._errors, messages); + this._onErrorCountChanged(); + } + }, + + clearErrors: function Sys_Mvc_FieldContext$clearErrors() { + Array.clear(this._errors); + this._onErrorCountChanged(); + }, + + _displayError: function Sys_Mvc_FieldContext$_displayError() { + var validationMessageElement = this.validationMessageElement; + if (validationMessageElement) { + if (this.replaceValidationMessageContents) { + Sys.Mvc._validationUtil.setInnerText(validationMessageElement, this._errors[0]); + } + Sys.UI.DomElement.removeCssClass(validationMessageElement, Sys.Mvc.FieldContext._validationMessageValidCss); + Sys.UI.DomElement.addCssClass(validationMessageElement, Sys.Mvc.FieldContext._validationMessageErrorCss); + } + var elements = this.elements; + for (var i = 0; i < elements.length; i++) { + var element = elements[i]; + Sys.UI.DomElement.removeCssClass(element, Sys.Mvc.FieldContext._inputElementValidCss); + Sys.UI.DomElement.addCssClass(element, Sys.Mvc.FieldContext._inputElementErrorCss); + } + }, + + _displaySuccess: function Sys_Mvc_FieldContext$_displaySuccess() { + var validationMessageElement = this.validationMessageElement; + if (validationMessageElement) { + if (this.replaceValidationMessageContents) { + Sys.Mvc._validationUtil.setInnerText(validationMessageElement, ''); + } + Sys.UI.DomElement.removeCssClass(validationMessageElement, Sys.Mvc.FieldContext._validationMessageErrorCss); + Sys.UI.DomElement.addCssClass(validationMessageElement, Sys.Mvc.FieldContext._validationMessageValidCss); + } + var elements = this.elements; + for (var i = 0; i < elements.length; i++) { + var element = elements[i]; + Sys.UI.DomElement.removeCssClass(element, Sys.Mvc.FieldContext._inputElementErrorCss); + Sys.UI.DomElement.addCssClass(element, Sys.Mvc.FieldContext._inputElementValidCss); + } + }, + + _element_OnBlur: function Sys_Mvc_FieldContext$_element_OnBlur(e) { + /// + /// + if (e.target[Sys.Mvc.FieldContext._hasTextChangedTag] || e.target[Sys.Mvc.FieldContext._hasValidationFiredTag]) { + this.validate('blur'); + } + }, + + _element_OnChange: function Sys_Mvc_FieldContext$_element_OnChange(e) { + /// + /// + e.target[Sys.Mvc.FieldContext._hasTextChangedTag] = true; + }, + + _element_OnInput: function Sys_Mvc_FieldContext$_element_OnInput(e) { + /// + /// + e.target[Sys.Mvc.FieldContext._hasTextChangedTag] = true; + if (e.target[Sys.Mvc.FieldContext._hasValidationFiredTag]) { + this.validate('input'); + } + }, + + _element_OnPropertyChange: function Sys_Mvc_FieldContext$_element_OnPropertyChange(e) { + /// + /// + if (e.rawEvent.propertyName === 'value') { + e.target[Sys.Mvc.FieldContext._hasTextChangedTag] = true; + if (e.target[Sys.Mvc.FieldContext._hasValidationFiredTag]) { + this.validate('input'); + } + } + }, + + enableDynamicValidation: function Sys_Mvc_FieldContext$enableDynamicValidation() { + var elements = this.elements; + for (var i = 0; i < elements.length; i++) { + var element = elements[i]; + if (Sys.Mvc._validationUtil.elementSupportsEvent(element, 'onpropertychange')) { + var compatMode = document.documentMode; + if (compatMode && compatMode >= 8) { + Sys.UI.DomEvent.addHandler(element, 'propertychange', this._onPropertyChangeHandler); + } + } + else { + Sys.UI.DomEvent.addHandler(element, 'input', this._onInputHandler); + } + Sys.UI.DomEvent.addHandler(element, 'change', this._onChangeHandler); + Sys.UI.DomEvent.addHandler(element, 'blur', this._onBlurHandler); + } + }, + + _getErrorString: function Sys_Mvc_FieldContext$_getErrorString(validatorReturnValue, fieldErrorMessage) { + /// + /// + /// + /// + /// + var fallbackErrorMessage = fieldErrorMessage || this.defaultErrorMessage; + if (Boolean.isInstanceOfType(validatorReturnValue)) { + return (validatorReturnValue) ? null : fallbackErrorMessage; + } + if (String.isInstanceOfType(validatorReturnValue)) { + return ((validatorReturnValue).length) ? validatorReturnValue : fallbackErrorMessage; + } + return null; + }, + + _getStringValue: function Sys_Mvc_FieldContext$_getStringValue() { + /// + var elements = this.elements; + return (elements.length > 0) ? elements[0].value : null; + }, + + _markValidationFired: function Sys_Mvc_FieldContext$_markValidationFired() { + var elements = this.elements; + for (var i = 0; i < elements.length; i++) { + var element = elements[i]; + element[Sys.Mvc.FieldContext._hasValidationFiredTag] = true; + } + }, + + _onErrorCountChanged: function Sys_Mvc_FieldContext$_onErrorCountChanged() { + if (!this._errors.length) { + this._displaySuccess(); + } + else { + this._displayError(); + } + }, + + validate: function Sys_Mvc_FieldContext$validate(eventName) { + /// + /// + /// + var validations = this.validations; + var errors = []; + var value = this._getStringValue(); + for (var i = 0; i < validations.length; i++) { + var validation = validations[i]; + var context = Sys.Mvc.$create_ValidationContext(); + context.eventName = eventName; + context.fieldContext = this; + context.validation = validation; + var retVal = validation.validator(value, context); + var errorMessage = this._getErrorString(retVal, validation.fieldErrorMessage); + if (!Sys.Mvc._validationUtil.stringIsNullOrEmpty(errorMessage)) { + Array.add(errors, errorMessage); + } + } + this._markValidationFired(); + this.clearErrors(); + this.addErrors(errors); + return errors; + } +} + + +//////////////////////////////////////////////////////////////////////////////// +// Sys.Mvc.RangeValidator + +Sys.Mvc.RangeValidator = function Sys_Mvc_RangeValidator(minimum, maximum) { + /// + /// + /// + /// + /// + /// + /// + /// + this._minimum = minimum; + this._maximum = maximum; +} +Sys.Mvc.RangeValidator.create = function Sys_Mvc_RangeValidator$create(rule) { + /// + /// + /// + var min = rule.ValidationParameters['minimum']; + var max = rule.ValidationParameters['maximum']; + return Function.createDelegate(new Sys.Mvc.RangeValidator(min, max), new Sys.Mvc.RangeValidator(min, max).validate); +} +Sys.Mvc.RangeValidator.prototype = { + _minimum: null, + _maximum: null, + + validate: function Sys_Mvc_RangeValidator$validate(value, context) { + /// + /// + /// + /// + /// + if (Sys.Mvc._validationUtil.stringIsNullOrEmpty(value)) { + return true; + } + var n = Number.parseLocale(value); + return (!isNaN(n) && this._minimum <= n && n <= this._maximum); + } +} + + +//////////////////////////////////////////////////////////////////////////////// +// Sys.Mvc.RegularExpressionValidator + +Sys.Mvc.RegularExpressionValidator = function Sys_Mvc_RegularExpressionValidator(pattern) { + /// + /// + /// + /// + this._pattern = pattern; +} +Sys.Mvc.RegularExpressionValidator.create = function Sys_Mvc_RegularExpressionValidator$create(rule) { + /// + /// + /// + var pattern = rule.ValidationParameters['pattern']; + return Function.createDelegate(new Sys.Mvc.RegularExpressionValidator(pattern), new Sys.Mvc.RegularExpressionValidator(pattern).validate); +} +Sys.Mvc.RegularExpressionValidator.prototype = { + _pattern: null, + + validate: function Sys_Mvc_RegularExpressionValidator$validate(value, context) { + /// + /// + /// + /// + /// + if (Sys.Mvc._validationUtil.stringIsNullOrEmpty(value)) { + return true; + } + var regExp = new RegExp(this._pattern); + var matches = regExp.exec(value); + return (!Sys.Mvc._validationUtil.arrayIsNullOrEmpty(matches) && matches[0].length === value.length); + } +} + + +//////////////////////////////////////////////////////////////////////////////// +// Sys.Mvc.RequiredValidator + +Sys.Mvc.RequiredValidator = function Sys_Mvc_RequiredValidator() { +} +Sys.Mvc.RequiredValidator.create = function Sys_Mvc_RequiredValidator$create(rule) { + /// + /// + /// + return Function.createDelegate(new Sys.Mvc.RequiredValidator(), new Sys.Mvc.RequiredValidator().validate); +} +Sys.Mvc.RequiredValidator._isRadioInputElement = function Sys_Mvc_RequiredValidator$_isRadioInputElement(element) { + /// + /// + /// + if (element.tagName.toUpperCase() === 'INPUT') { + var inputType = (element.type).toUpperCase(); + if (inputType === 'RADIO') { + return true; + } + } + return false; +} +Sys.Mvc.RequiredValidator._isSelectInputElement = function Sys_Mvc_RequiredValidator$_isSelectInputElement(element) { + /// + /// + /// + if (element.tagName.toUpperCase() === 'SELECT') { + return true; + } + return false; +} +Sys.Mvc.RequiredValidator._isTextualInputElement = function Sys_Mvc_RequiredValidator$_isTextualInputElement(element) { + /// + /// + /// + if (element.tagName.toUpperCase() === 'INPUT') { + var inputType = (element.type).toUpperCase(); + switch (inputType) { + case 'TEXT': + case 'PASSWORD': + case 'FILE': + return true; + } + } + if (element.tagName.toUpperCase() === 'TEXTAREA') { + return true; + } + return false; +} +Sys.Mvc.RequiredValidator._validateRadioInput = function Sys_Mvc_RequiredValidator$_validateRadioInput(elements) { + /// + /// + /// + for (var i = 0; i < elements.length; i++) { + var element = elements[i]; + if (element.checked) { + return true; + } + } + return false; +} +Sys.Mvc.RequiredValidator._validateSelectInput = function Sys_Mvc_RequiredValidator$_validateSelectInput(optionElements) { + /// + /// + /// + for (var i = 0; i < optionElements.length; i++) { + var element = optionElements[i]; + if (element.selected) { + if (!Sys.Mvc._validationUtil.stringIsNullOrEmpty(element.value)) { + return true; + } + } + } + return false; +} +Sys.Mvc.RequiredValidator._validateTextualInput = function Sys_Mvc_RequiredValidator$_validateTextualInput(element) { + /// + /// + /// + return (!Sys.Mvc._validationUtil.stringIsNullOrEmpty(element.value)); +} +Sys.Mvc.RequiredValidator.prototype = { + + validate: function Sys_Mvc_RequiredValidator$validate(value, context) { + /// + /// + /// + /// + /// + var elements = context.fieldContext.elements; + if (!elements.length) { + return true; + } + var sampleElement = elements[0]; + if (Sys.Mvc.RequiredValidator._isTextualInputElement(sampleElement)) { + return Sys.Mvc.RequiredValidator._validateTextualInput(sampleElement); + } + if (Sys.Mvc.RequiredValidator._isRadioInputElement(sampleElement)) { + return Sys.Mvc.RequiredValidator._validateRadioInput(elements); + } + if (Sys.Mvc.RequiredValidator._isSelectInputElement(sampleElement)) { + return Sys.Mvc.RequiredValidator._validateSelectInput((sampleElement).options); + } + return true; + } +} + + +//////////////////////////////////////////////////////////////////////////////// +// Sys.Mvc.StringLengthValidator + +Sys.Mvc.StringLengthValidator = function Sys_Mvc_StringLengthValidator(minLength, maxLength) { + /// + /// + /// + /// + /// + /// + /// + /// + this._minLength = minLength; + this._maxLength = maxLength; +} +Sys.Mvc.StringLengthValidator.create = function Sys_Mvc_StringLengthValidator$create(rule) { + /// + /// + /// + var minLength = rule.ValidationParameters['minimumLength']; + var maxLength = rule.ValidationParameters['maximumLength']; + return Function.createDelegate(new Sys.Mvc.StringLengthValidator(minLength, maxLength), new Sys.Mvc.StringLengthValidator(minLength, maxLength).validate); +} +Sys.Mvc.StringLengthValidator.prototype = { + _maxLength: 0, + _minLength: 0, + + validate: function Sys_Mvc_StringLengthValidator$validate(value, context) { + /// + /// + /// + /// + /// + if (Sys.Mvc._validationUtil.stringIsNullOrEmpty(value)) { + return true; + } + return (this._minLength <= value.length && value.length <= this._maxLength); + } +} + + +//////////////////////////////////////////////////////////////////////////////// +// Sys.Mvc._validationUtil + +Sys.Mvc._validationUtil = function Sys_Mvc__validationUtil() { +} +Sys.Mvc._validationUtil.arrayIsNullOrEmpty = function Sys_Mvc__validationUtil$arrayIsNullOrEmpty(array) { + /// + /// + /// + return (!array || !array.length); +} +Sys.Mvc._validationUtil.stringIsNullOrEmpty = function Sys_Mvc__validationUtil$stringIsNullOrEmpty(value) { + /// + /// + /// + return (!value || !value.length); +} +Sys.Mvc._validationUtil.elementSupportsEvent = function Sys_Mvc__validationUtil$elementSupportsEvent(element, eventAttributeName) { + /// + /// + /// + /// + /// + return (eventAttributeName in element); +} +Sys.Mvc._validationUtil.removeAllChildren = function Sys_Mvc__validationUtil$removeAllChildren(element) { + /// + /// + while (element.firstChild) { + element.removeChild(element.firstChild); + } +} +Sys.Mvc._validationUtil.setInnerText = function Sys_Mvc__validationUtil$setInnerText(element, innerText) { + /// + /// + /// + /// + var textNode = document.createTextNode(innerText); + Sys.Mvc._validationUtil.removeAllChildren(element); + element.appendChild(textNode); +} + + +//////////////////////////////////////////////////////////////////////////////// +// Sys.Mvc.ValidatorRegistry + +Sys.Mvc.ValidatorRegistry = function Sys_Mvc_ValidatorRegistry() { + /// + /// +} +Sys.Mvc.ValidatorRegistry.getValidator = function Sys_Mvc_ValidatorRegistry$getValidator(rule) { + /// + /// + /// + var creator = Sys.Mvc.ValidatorRegistry.validators[rule.ValidationType]; + return (creator) ? creator(rule) : null; +} +Sys.Mvc.ValidatorRegistry._getDefaultValidators = function Sys_Mvc_ValidatorRegistry$_getDefaultValidators() { + /// + return { required: Function.createDelegate(null, Sys.Mvc.RequiredValidator.create), stringLength: Function.createDelegate(null, Sys.Mvc.StringLengthValidator.create), regularExpression: Function.createDelegate(null, Sys.Mvc.RegularExpressionValidator.create), range: Function.createDelegate(null, Sys.Mvc.RangeValidator.create), number: Function.createDelegate(null, Sys.Mvc.NumberValidator.create) }; +} + + +Sys.Mvc.NumberValidator.registerClass('Sys.Mvc.NumberValidator'); +Sys.Mvc.FormContext.registerClass('Sys.Mvc.FormContext'); +Sys.Mvc.FieldContext.registerClass('Sys.Mvc.FieldContext'); +Sys.Mvc.RangeValidator.registerClass('Sys.Mvc.RangeValidator'); +Sys.Mvc.RegularExpressionValidator.registerClass('Sys.Mvc.RegularExpressionValidator'); +Sys.Mvc.RequiredValidator.registerClass('Sys.Mvc.RequiredValidator'); +Sys.Mvc.StringLengthValidator.registerClass('Sys.Mvc.StringLengthValidator'); +Sys.Mvc._validationUtil.registerClass('Sys.Mvc._validationUtil'); +Sys.Mvc.ValidatorRegistry.registerClass('Sys.Mvc.ValidatorRegistry'); +Sys.Mvc.FormContext._validationSummaryErrorCss = 'validation-summary-errors'; +Sys.Mvc.FormContext._validationSummaryValidCss = 'validation-summary-valid'; +Sys.Mvc.FormContext._formValidationTag = '__MVC_FormValidation'; +Sys.Mvc.FieldContext._hasTextChangedTag = '__MVC_HasTextChanged'; +Sys.Mvc.FieldContext._hasValidationFiredTag = '__MVC_HasValidationFired'; +Sys.Mvc.FieldContext._inputElementErrorCss = 'input-validation-error'; +Sys.Mvc.FieldContext._inputElementValidCss = 'input-validation-valid'; +Sys.Mvc.FieldContext._validationMessageErrorCss = 'field-validation-error'; +Sys.Mvc.FieldContext._validationMessageValidCss = 'field-validation-valid'; +Sys.Mvc.ValidatorRegistry.validators = Sys.Mvc.ValidatorRegistry._getDefaultValidators(); + +// ---- Do not remove this footer ---- +// Generated using Script# v0.5.0.0 (http://projects.nikhilk.net) +// ----------------------------------- + +// register validation +Sys.Application.add_load(function() { + Sys.Application.remove_load(arguments.callee); + Sys.Mvc.FormContext._Application_Load(); +}); diff --git a/NzbDrone.Web/Scripts/MicrosoftMvcValidation.js b/NzbDrone.Web/Scripts/MicrosoftMvcValidation.js new file mode 100644 index 000000000..2d1789ddc --- /dev/null +++ b/NzbDrone.Web/Scripts/MicrosoftMvcValidation.js @@ -0,0 +1,55 @@ +//---------------------------------------------------------- +// Copyright (C) Microsoft Corporation. All rights reserved. +//---------------------------------------------------------- +// MicrosoftMvcValidation.js + +Type.registerNamespace('Sys.Mvc');Sys.Mvc.$create_Validation=function(){return {};} +Sys.Mvc.$create_JsonValidationField=function(){return {};} +Sys.Mvc.$create_JsonValidationOptions=function(){return {};} +Sys.Mvc.$create_JsonValidationRule=function(){return {};} +Sys.Mvc.$create_ValidationContext=function(){return {};} +Sys.Mvc.NumberValidator=function(){} +Sys.Mvc.NumberValidator.create=function(rule){return Function.createDelegate(new Sys.Mvc.NumberValidator(),new Sys.Mvc.NumberValidator().validate);} +Sys.Mvc.NumberValidator.prototype={validate:function(value,context){if(Sys.Mvc._ValidationUtil.$1(value)){return true;}var $0=Number.parseLocale(value);return (!isNaN($0));}} +Sys.Mvc.FormContext=function(formElement,validationSummaryElement){this.$5=[];this.fields=new Array(0);this.$9=formElement;this.$7=validationSummaryElement;formElement['__MVC_FormValidation'] = this;if(validationSummaryElement){var $0=validationSummaryElement.getElementsByTagName('ul');if($0.length>0){this.$8=$0[0];}}this.$3=Function.createDelegate(this,this.$D);this.$4=Function.createDelegate(this,this.$E);} +Sys.Mvc.FormContext._Application_Load=function(){var $0=window.mvcClientValidationMetadata;if($0){while($0.length>0){var $1=$0.pop();Sys.Mvc.FormContext.$12($1);}}} +Sys.Mvc.FormContext.$F=function($p0,$p1){var $0=[];var $1=document.getElementsByName($p1);for(var $2=0;$2<$1.length;$2++){var $3=$1[$2];if(Sys.Mvc.FormContext.$10($p0,$3)){Array.add($0,$3);}}return $0;} +Sys.Mvc.FormContext.getValidationForForm=function(formElement){return formElement['__MVC_FormValidation'];} +Sys.Mvc.FormContext.$10=function($p0,$p1){while($p1){if($p0===$p1){return true;}$p1=$p1.parentNode;}return false;} +Sys.Mvc.FormContext.$12=function($p0){var $0=$get($p0.FormId);var $1=(!Sys.Mvc._ValidationUtil.$1($p0.ValidationSummaryId))?$get($p0.ValidationSummaryId):null;var $2=new Sys.Mvc.FormContext($0,$1);$2.enableDynamicValidation();$2.replaceValidationSummary=$p0.ReplaceValidationSummary;for(var $4=0;$4<$p0.Fields.length;$4++){var $5=$p0.Fields[$4];var $6=Sys.Mvc.FormContext.$F($0,$5.FieldName);var $7=(!Sys.Mvc._ValidationUtil.$1($5.ValidationMessageId))?$get($5.ValidationMessageId):null;var $8=new Sys.Mvc.FieldContext($2);Array.addRange($8.elements,$6);$8.validationMessageElement=$7;$8.replaceValidationMessageContents=$5.ReplaceValidationMessageContents;for(var $9=0;$9<$5.ValidationRules.length;$9++){var $A=$5.ValidationRules[$9];var $B=Sys.Mvc.ValidatorRegistry.getValidator($A);if($B){var $C=Sys.Mvc.$create_Validation();$C.fieldErrorMessage=$A.ErrorMessage;$C.validator=$B;Array.add($8.validations,$C);}}$8.enableDynamicValidation();Array.add($2.fields,$8);}var $3=$0.validationCallbacks;if(!$3){$3=[];$0.validationCallbacks = $3;}$3.push(Function.createDelegate(null,function(){ +return Sys.Mvc._ValidationUtil.$0($2.validate('submit'));}));return $2;} +Sys.Mvc.FormContext.prototype={$3:null,$4:null,$6:null,$7:null,$8:null,$9:null,replaceValidationSummary:false,addError:function(message){this.addErrors([message]);},addErrors:function(messages){if(!Sys.Mvc._ValidationUtil.$0(messages)){Array.addRange(this.$5,messages);this.$11();}},clearErrors:function(){Array.clear(this.$5);this.$11();},$A:function(){if(this.$7){if(this.$8){Sys.Mvc._ValidationUtil.$3(this.$8);for(var $0=0;$0=8){Sys.UI.DomEvent.addHandler($2,'propertychange',this.$9);}}else{Sys.UI.DomEvent.addHandler($2,'input',this.$8);}Sys.UI.DomEvent.addHandler($2,'change',this.$7);Sys.UI.DomEvent.addHandler($2,'blur',this.$6);}},$11:function($p0,$p1){var $0=$p1||this.defaultErrorMessage;if(Boolean.isInstanceOfType($p0)){return ($p0)?null:$0;}if(String.isInstanceOfType($p0)){return (($p0).length)?$p0:$0;}return null;},$12:function(){var $0=this.elements;return ($0.length>0)?$0[0].value:null;},$13:function(){var $0=this.elements;for(var $1=0;$1<$0.length;$1++){var $2=$0[$1];$2['__MVC_HasValidationFired'] = true;}},$14:function(){if(!this.$A.length){this.$C();}else{this.$B();}},validate:function(eventName){var $0=this.validations;var $1=[];var $2=this.$12();for(var $3=0;$3<$0.length;$3++){var $4=$0[$3];var $5=Sys.Mvc.$create_ValidationContext();$5.eventName=eventName;$5.fieldContext=this;$5.validation=$4;var $6=$4.validator($2,$5);var $7=this.$11($6,$4.fieldErrorMessage);if(!Sys.Mvc._ValidationUtil.$1($7)){Array.add($1,$7);}}this.$13();this.clearErrors();this.addErrors($1);return $1;}} +Sys.Mvc.RangeValidator=function(minimum,maximum){this.$0=minimum;this.$1=maximum;} +Sys.Mvc.RangeValidator.create=function(rule){var $0=rule.ValidationParameters['minimum'];var $1=rule.ValidationParameters['maximum'];return Function.createDelegate(new Sys.Mvc.RangeValidator($0,$1),new Sys.Mvc.RangeValidator($0,$1).validate);} +Sys.Mvc.RangeValidator.prototype={$0:null,$1:null,validate:function(value,context){if(Sys.Mvc._ValidationUtil.$1(value)){return true;}var $0=Number.parseLocale(value);return (!isNaN($0)&&this.$0<=$0&&$0<=this.$1);}} +Sys.Mvc.RegularExpressionValidator=function(pattern){this.$0=pattern;} +Sys.Mvc.RegularExpressionValidator.create=function(rule){var $0=rule.ValidationParameters['pattern'];return Function.createDelegate(new Sys.Mvc.RegularExpressionValidator($0),new Sys.Mvc.RegularExpressionValidator($0).validate);} +Sys.Mvc.RegularExpressionValidator.prototype={$0:null,validate:function(value,context){if(Sys.Mvc._ValidationUtil.$1(value)){return true;}var $0=new RegExp(this.$0);var $1=$0.exec(value);return (!Sys.Mvc._ValidationUtil.$0($1)&&$1[0].length===value.length);}} +Sys.Mvc.RequiredValidator=function(){} +Sys.Mvc.RequiredValidator.create=function(rule){return Function.createDelegate(new Sys.Mvc.RequiredValidator(),new Sys.Mvc.RequiredValidator().validate);} +Sys.Mvc.RequiredValidator.$0=function($p0){if($p0.tagName.toUpperCase()==='INPUT'){var $0=($p0.type).toUpperCase();if($0==='RADIO'){return true;}}return false;} +Sys.Mvc.RequiredValidator.$1=function($p0){if($p0.tagName.toUpperCase()==='SELECT'){return true;}return false;} +Sys.Mvc.RequiredValidator.$2=function($p0){if($p0.tagName.toUpperCase()==='INPUT'){var $0=($p0.type).toUpperCase();switch($0){case 'TEXT':case 'PASSWORD':case 'FILE':return true;}}if($p0.tagName.toUpperCase()==='TEXTAREA'){return true;}return false;} +Sys.Mvc.RequiredValidator.$3=function($p0){for(var $0=0;$0<$p0.length;$0++){var $1=$p0[$0];if($1.checked){return true;}}return false;} +Sys.Mvc.RequiredValidator.$4=function($p0){for(var $0=0;$0<$p0.length;$0++){var $1=$p0[$0];if($1.selected){if(!Sys.Mvc._ValidationUtil.$1($1.value)){return true;}}}return false;} +Sys.Mvc.RequiredValidator.$5=function($p0){return (!Sys.Mvc._ValidationUtil.$1($p0.value));} +Sys.Mvc.RequiredValidator.prototype={validate:function(value,context){var $0=context.fieldContext.elements;if(!$0.length){return true;}var $1=$0[0];if(Sys.Mvc.RequiredValidator.$2($1)){return Sys.Mvc.RequiredValidator.$5($1);}if(Sys.Mvc.RequiredValidator.$0($1)){return Sys.Mvc.RequiredValidator.$3($0);}if(Sys.Mvc.RequiredValidator.$1($1)){return Sys.Mvc.RequiredValidator.$4(($1).options);}return true;}} +Sys.Mvc.StringLengthValidator=function(minLength,maxLength){this.$1=minLength;this.$0=maxLength;} +Sys.Mvc.StringLengthValidator.create=function(rule){var $0=rule.ValidationParameters['minimumLength'];var $1=rule.ValidationParameters['maximumLength'];return Function.createDelegate(new Sys.Mvc.StringLengthValidator($0,$1),new Sys.Mvc.StringLengthValidator($0,$1).validate);} +Sys.Mvc.StringLengthValidator.prototype={$0:0,$1:0,validate:function(value,context){if(Sys.Mvc._ValidationUtil.$1(value)){return true;}return (this.$1<=value.length&&value.length<=this.$0);}} +Sys.Mvc._ValidationUtil=function(){} +Sys.Mvc._ValidationUtil.$0=function($p0){return (!$p0||!$p0.length);} +Sys.Mvc._ValidationUtil.$1=function($p0){return (!$p0||!$p0.length);} +Sys.Mvc._ValidationUtil.$2=function($p0,$p1){return ($p1 in $p0);} +Sys.Mvc._ValidationUtil.$3=function($p0){while($p0.firstChild){$p0.removeChild($p0.firstChild);}} +Sys.Mvc._ValidationUtil.$4=function($p0,$p1){var $0=document.createTextNode($p1);Sys.Mvc._ValidationUtil.$3($p0);$p0.appendChild($0);} +Sys.Mvc.ValidatorRegistry=function(){} +Sys.Mvc.ValidatorRegistry.getValidator=function(rule){var $0=Sys.Mvc.ValidatorRegistry.validators[rule.ValidationType];return ($0)?$0(rule):null;} +Sys.Mvc.ValidatorRegistry.$0=function(){return {required:Function.createDelegate(null,Sys.Mvc.RequiredValidator.create),stringLength:Function.createDelegate(null,Sys.Mvc.StringLengthValidator.create),regularExpression:Function.createDelegate(null,Sys.Mvc.RegularExpressionValidator.create),range:Function.createDelegate(null,Sys.Mvc.RangeValidator.create),number:Function.createDelegate(null,Sys.Mvc.NumberValidator.create)};} +Sys.Mvc.NumberValidator.registerClass('Sys.Mvc.NumberValidator');Sys.Mvc.FormContext.registerClass('Sys.Mvc.FormContext');Sys.Mvc.FieldContext.registerClass('Sys.Mvc.FieldContext');Sys.Mvc.RangeValidator.registerClass('Sys.Mvc.RangeValidator');Sys.Mvc.RegularExpressionValidator.registerClass('Sys.Mvc.RegularExpressionValidator');Sys.Mvc.RequiredValidator.registerClass('Sys.Mvc.RequiredValidator');Sys.Mvc.StringLengthValidator.registerClass('Sys.Mvc.StringLengthValidator');Sys.Mvc._ValidationUtil.registerClass('Sys.Mvc._ValidationUtil');Sys.Mvc.ValidatorRegistry.registerClass('Sys.Mvc.ValidatorRegistry');Sys.Mvc.ValidatorRegistry.validators=Sys.Mvc.ValidatorRegistry.$0(); +// ---- Do not remove this footer ---- +// Generated using Script# v0.5.0.0 (http://projects.nikhilk.net) +// ----------------------------------- +Sys.Application.add_load(function(){Sys.Application.remove_load(arguments.callee);Sys.Mvc.FormContext._Application_Load();}); \ No newline at end of file diff --git a/NzbDrone.Web/Scripts/jquery-1.4.1-vsdoc.js b/NzbDrone.Web/Scripts/jquery-1.4.1-vsdoc.js new file mode 100644 index 000000000..681241d10 --- /dev/null +++ b/NzbDrone.Web/Scripts/jquery-1.4.1-vsdoc.js @@ -0,0 +1,8061 @@ +/* + * This file has been commented to support Visual Studio Intellisense. + * You should not use this file at runtime inside the browser--it is only + * intended to be used only for design-time IntelliSense. Please use the + * standard jQuery library for all production use. + * + * Comment version: 1.4.1a + */ + +/*! + * jQuery JavaScript Library v1.4.1 + * http://jquery.com/ + * + * Distributed in whole under the terms of the MIT + * + * Copyright 2010, John Resig + * + * 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. + * + * Includes Sizzle.js + * http://sizzlejs.com/ + * Copyright 2010, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * + * Date: Mon Jan 25 19:43:33 2010 -0500 + */ + +(function( window, undefined ) { + +// Define a local copy of jQuery +var jQuery = function( selector, context ) { + /// + /// 1: $(expression, context) - This function accepts a string containing a CSS selector which is then used to match a set of elements. + /// 2: $(html) - Create DOM elements on-the-fly from the provided String of raw HTML. + /// 3: $(elements) - Wrap jQuery functionality around a single or multiple DOM Element(s). + /// 4: $(callback) - A shorthand for $(document).ready(). + /// 5: $() - As of jQuery 1.4, if you pass no arguments in to the jQuery() method, an empty jQuery set will be returned. + /// + /// + /// 1: expression - An expression to search with. + /// 2: html - A string of HTML to create on the fly. + /// 3: elements - DOM element(s) to be encapsulated by a jQuery object. + /// 4: callback - The function to execute when the DOM is ready. + /// + /// + /// 1: context - A DOM Element, Document or jQuery to use as context. + /// + /// + + // The jQuery object is actually just the init constructor 'enhanced' + return new jQuery.fn.init( selector, context ); + }, + + // Map over jQuery in case of overwrite + _jQuery = window.jQuery, + + // Map over the $ in case of overwrite + _$ = window.$, + + // Use the correct document accordingly with window argument (sandbox) + document = window.document, + + // A central reference to the root jQuery(document) + rootjQuery, + + // A simple way to check for HTML strings or ID strings + // (both of which we optimize for) + quickExpr = /^[^<]*(<[\w\W]+>)[^>]*$|^#([\w-]+)$/, + + // Is it a simple selector + isSimple = /^.[^:#\[\.,]*$/, + + // Check if a string has a non-whitespace character in it + rnotwhite = /\S/, + + // Used for trimming whitespace + rtrim = /^(\s|\u00A0)+|(\s|\u00A0)+$/g, + + // Match a standalone tag + rsingleTag = /^<(\w+)\s*\/?>(?:<\/\1>)?$/, + + // Keep a UserAgent string for use with jQuery.browser + userAgent = navigator.userAgent, + + // For matching the engine and version of the browser + browserMatch, + + // Has the ready events already been bound? + readyBound = false, + + // The functions to execute on DOM ready + readyList = [], + + // The ready event handler + DOMContentLoaded, + + // Save a reference to some core methods + toString = Object.prototype.toString, + hasOwnProperty = Object.prototype.hasOwnProperty, + push = Array.prototype.push, + slice = Array.prototype.slice, + indexOf = Array.prototype.indexOf; + +jQuery.fn = jQuery.prototype = { + init: function( selector, context ) { + + var match, elem, ret, doc; + + // Handle $(""), $(null), or $(undefined) + if ( !selector ) { + return this; + } + + // Handle $(DOMElement) + if ( selector.nodeType ) { + this.context = this[0] = selector; + this.length = 1; + return this; + } + + // Handle HTML strings + if ( typeof selector === "string" ) { + // Are we dealing with HTML string or an ID? + match = quickExpr.exec( selector ); + + // Verify a match, and that no context was specified for #id + if ( match && (match[1] || !context) ) { + + // HANDLE: $(html) -> $(array) + if ( match[1] ) { + doc = (context ? context.ownerDocument || context : document); + + // If a single string is passed in and it's a single tag + // just do a createElement and skip the rest + ret = rsingleTag.exec( selector ); + + if ( ret ) { + if ( jQuery.isPlainObject( context ) ) { + selector = [ document.createElement( ret[1] ) ]; + jQuery.fn.attr.call( selector, context, true ); + + } else { + selector = [ doc.createElement( ret[1] ) ]; + } + + } else { + ret = buildFragment( [ match[1] ], [ doc ] ); + selector = (ret.cacheable ? ret.fragment.cloneNode(true) : ret.fragment).childNodes; + } + + // HANDLE: $("#id") + } else { + elem = document.getElementById( match[2] ); + + if ( elem ) { + // Handle the case where IE and Opera return items + // by name instead of ID + if ( elem.id !== match[2] ) { + return rootjQuery.find( selector ); + } + + // Otherwise, we inject the element directly into the jQuery object + this.length = 1; + this[0] = elem; + } + + this.context = document; + this.selector = selector; + return this; + } + + // HANDLE: $("TAG") + } else if ( !context && /^\w+$/.test( selector ) ) { + this.selector = selector; + this.context = document; + selector = document.getElementsByTagName( selector ); + + // HANDLE: $(expr, $(...)) + } else if ( !context || context.jquery ) { + return (context || rootjQuery).find( selector ); + + // HANDLE: $(expr, context) + // (which is just equivalent to: $(context).find(expr) + } else { + return jQuery( context ).find( selector ); + } + + // HANDLE: $(function) + // Shortcut for document ready + } else if ( jQuery.isFunction( selector ) ) { + return rootjQuery.ready( selector ); + } + + if (selector.selector !== undefined) { + this.selector = selector.selector; + this.context = selector.context; + } + + return jQuery.isArray( selector ) ? + this.setArray( selector ) : + jQuery.makeArray( selector, this ); + }, + + // Start with an empty selector + selector: "", + + // The current version of jQuery being used + jquery: "1.4.1", + + // The default length of a jQuery object is 0 + length: 0, + + // The number of elements contained in the matched element set + size: function() { + /// + /// The number of elements currently matched. + /// Part of Core + /// + /// + + return this.length; + }, + + toArray: function() { + /// + /// Retrieve all the DOM elements contained in the jQuery set, as an array. + /// + /// + return slice.call( this, 0 ); + }, + + // Get the Nth element in the matched element set OR + // Get the whole matched element set as a clean array + get: function( num ) { + /// + /// Access a single matched element. num is used to access the + /// Nth element matched. + /// Part of Core + /// + /// + /// + /// Access the element in the Nth position. + /// + + return num == null ? + + // Return a 'clean' array + this.toArray() : + + // Return just the object + ( num < 0 ? this.slice(num)[ 0 ] : this[ num ] ); + }, + + // Take an array of elements and push it onto the stack + // (returning the new matched element set) + pushStack: function( elems, name, selector ) { + /// + /// Set the jQuery object to an array of elements, while maintaining + /// the stack. + /// Part of Core + /// + /// + /// + /// An array of elements + /// + + // Build a new jQuery matched element set + var ret = jQuery( elems || null ); + + // Add the old object onto the stack (as a reference) + ret.prevObject = this; + + ret.context = this.context; + + if ( name === "find" ) { + ret.selector = this.selector + (this.selector ? " " : "") + selector; + } else if ( name ) { + ret.selector = this.selector + "." + name + "(" + selector + ")"; + } + + // Return the newly-formed element set + return ret; + }, + + // Force the current matched set of elements to become + // the specified array of elements (destroying the stack in the process) + // You should use pushStack() in order to do this, but maintain the stack + setArray: function( elems ) { + /// + /// Set the jQuery object to an array of elements. This operation is + /// completely destructive - be sure to use .pushStack() if you wish to maintain + /// the jQuery stack. + /// Part of Core + /// + /// + /// + /// An array of elements + /// + + // Resetting the length to 0, then using the native Array push + // is a super-fast way to populate an object with array-like properties + this.length = 0; + push.apply( this, elems ); + + return this; + }, + + // Execute a callback for every element in the matched set. + // (You can seed the arguments with an array of args, but this is + // only used internally.) + each: function( callback, args ) { + /// + /// Execute a function within the context of every matched element. + /// This means that every time the passed-in function is executed + /// (which is once for every element matched) the 'this' keyword + /// points to the specific element. + /// Additionally, the function, when executed, is passed a single + /// argument representing the position of the element in the matched + /// set. + /// Part of Core + /// + /// + /// + /// A function to execute + /// + + return jQuery.each( this, callback, args ); + }, + + ready: function( fn ) { + /// + /// Binds a function to be executed whenever the DOM is ready to be traversed and manipulated. + /// + /// The function to be executed when the DOM is ready. + + // Attach the listeners + jQuery.bindReady(); + + // If the DOM is already ready + if ( jQuery.isReady ) { + // Execute the function immediately + fn.call( document, jQuery ); + + // Otherwise, remember the function for later + } else if ( readyList ) { + // Add the function to the wait list + readyList.push( fn ); + } + + return this; + }, + + eq: function( i ) { + /// + /// Reduce the set of matched elements to a single element. + /// The position of the element in the set of matched elements + /// starts at 0 and goes to length - 1. + /// Part of Core + /// + /// + /// + /// pos The index of the element that you wish to limit to. + /// + + return i === -1 ? + this.slice( i ) : + this.slice( i, +i + 1 ); + }, + + first: function() { + /// + /// Reduce the set of matched elements to the first in the set. + /// + /// + + return this.eq( 0 ); + }, + + last: function() { + /// + /// Reduce the set of matched elements to the final one in the set. + /// + /// + + return this.eq( -1 ); + }, + + slice: function() { + /// + /// Selects a subset of the matched elements. Behaves exactly like the built-in Array slice method. + /// + /// Where to start the subset (0-based). + /// Where to end the subset (not including the end element itself). + /// If omitted, ends at the end of the selection + /// The sliced elements + + return this.pushStack( slice.apply( this, arguments ), + "slice", slice.call(arguments).join(",") ); + }, + + map: function( callback ) { + /// + /// This member is internal. + /// + /// + /// + + return this.pushStack( jQuery.map(this, function( elem, i ) { + return callback.call( elem, i, elem ); + })); + }, + + end: function() { + /// + /// End the most recent 'destructive' operation, reverting the list of matched elements + /// back to its previous state. After an end operation, the list of matched elements will + /// revert to the last state of matched elements. + /// If there was no destructive operation before, an empty set is returned. + /// Part of DOM/Traversing + /// + /// + + return this.prevObject || jQuery(null); + }, + + // For internal use only. + // Behaves like an Array's method, not like a jQuery method. + push: push, + sort: [].sort, + splice: [].splice +}; + +// Give the init function the jQuery prototype for later instantiation +jQuery.fn.init.prototype = jQuery.fn; + +jQuery.extend = jQuery.fn.extend = function() { + /// + /// Extend one object with one or more others, returning the original, + /// modified, object. This is a great utility for simple inheritance. + /// jQuery.extend(settings, options); + /// var settings = jQuery.extend({}, defaults, options); + /// Part of JavaScript + /// + /// + /// The object to extend + /// + /// + /// The object that will be merged into the first. + /// + /// + /// (optional) More objects to merge into the first + /// + /// + + // copy reference to target object + var target = arguments[0] || {}, i = 1, length = arguments.length, deep = false, options, name, src, copy; + + // Handle a deep copy situation + if ( typeof target === "boolean" ) { + deep = target; + target = arguments[1] || {}; + // skip the boolean and the target + i = 2; + } + + // Handle case when target is a string or something (possible in deep copy) + if ( typeof target !== "object" && !jQuery.isFunction(target) ) { + target = {}; + } + + // extend jQuery itself if only one argument is passed + if ( length === i ) { + target = this; + --i; + } + + for ( ; i < length; i++ ) { + // Only deal with non-null/undefined values + if ( (options = arguments[ i ]) != null ) { + // Extend the base object + for ( name in options ) { + src = target[ name ]; + copy = options[ name ]; + + // Prevent never-ending loop + if ( target === copy ) { + continue; + } + + // Recurse if we're merging object literal values or arrays + if ( deep && copy && ( jQuery.isPlainObject(copy) || jQuery.isArray(copy) ) ) { + var clone = src && ( jQuery.isPlainObject(src) || jQuery.isArray(src) ) ? src + : jQuery.isArray(copy) ? [] : {}; + + // Never move original objects, clone them + target[ name ] = jQuery.extend( deep, clone, copy ); + + // Don't bring in undefined values + } else if ( copy !== undefined ) { + target[ name ] = copy; + } + } + } + } + + // Return the modified object + return target; +}; + +jQuery.extend({ + noConflict: function( deep ) { + /// + /// Run this function to give control of the $ variable back + /// to whichever library first implemented it. This helps to make + /// sure that jQuery doesn't conflict with the $ object + /// of other libraries. + /// By using this function, you will only be able to access jQuery + /// using the 'jQuery' variable. For example, where you used to do + /// $("div p"), you now must do jQuery("div p"). + /// Part of Core + /// + /// + + window.$ = _$; + + if ( deep ) { + window.jQuery = _jQuery; + } + + return jQuery; + }, + + // Is the DOM ready to be used? Set to true once it occurs. + isReady: false, + + // Handle when the DOM is ready + ready: function() { + /// + /// This method is internal. + /// + /// + + // Make sure that the DOM is not already loaded + if ( !jQuery.isReady ) { + // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443). + if ( !document.body ) { + return setTimeout( jQuery.ready, 13 ); + } + + // Remember that the DOM is ready + jQuery.isReady = true; + + // If there are functions bound, to execute + if ( readyList ) { + // Execute all of them + var fn, i = 0; + while ( (fn = readyList[ i++ ]) ) { + fn.call( document, jQuery ); + } + + // Reset the list of functions + readyList = null; + } + + // Trigger any bound ready events + if ( jQuery.fn.triggerHandler ) { + jQuery( document ).triggerHandler( "ready" ); + } + } + }, + + bindReady: function() { + if ( readyBound ) { + return; + } + + readyBound = true; + + // Catch cases where $(document).ready() is called after the + // browser event has already occurred. + if ( document.readyState === "complete" ) { + return jQuery.ready(); + } + + // Mozilla, Opera and webkit nightlies currently support this event + if ( document.addEventListener ) { + // Use the handy event callback + document.addEventListener( "DOMContentLoaded", DOMContentLoaded, false ); + + // A fallback to window.onload, that will always work + window.addEventListener( "load", jQuery.ready, false ); + + // If IE event model is used + } else if ( document.attachEvent ) { + // ensure firing before onload, + // maybe late but safe also for iframes + document.attachEvent("onreadystatechange", DOMContentLoaded); + + // A fallback to window.onload, that will always work + window.attachEvent( "onload", jQuery.ready ); + + // If IE and not a frame + // continually check to see if the document is ready + var toplevel = false; + + try { + toplevel = window.frameElement == null; + } catch(e) {} + + if ( document.documentElement.doScroll && toplevel ) { + doScrollCheck(); + } + } + }, + + // See test/unit/core.js for details concerning isFunction. + // Since version 1.3, DOM methods and functions like alert + // aren't supported. They return false on IE (#2968). + isFunction: function( obj ) { + /// + /// Determines if the parameter passed is a function. + /// + /// The object to check + /// True if the parameter is a function; otherwise false. + + return toString.call(obj) === "[object Function]"; + }, + + isArray: function( obj ) { + /// + /// Determine if the parameter passed is an array. + /// + /// Object to test whether or not it is an array. + /// True if the parameter is a function; otherwise false. + + return toString.call(obj) === "[object Array]"; + }, + + isPlainObject: function( obj ) { + /// + /// Check to see if an object is a plain object (created using "{}" or "new Object"). + /// + /// + /// The object that will be checked to see if it's a plain object. + /// + /// + + // Must be an Object. + // Because of IE, we also have to check the presence of the constructor property. + // Make sure that DOM nodes and window objects don't pass through, as well + if ( !obj || toString.call(obj) !== "[object Object]" || obj.nodeType || obj.setInterval ) { + return false; + } + + // Not own constructor property must be Object + if ( obj.constructor + && !hasOwnProperty.call(obj, "constructor") + && !hasOwnProperty.call(obj.constructor.prototype, "isPrototypeOf") ) { + return false; + } + + // Own properties are enumerated firstly, so to speed up, + // if last one is own, then all properties are own. + + var key; + for ( key in obj ) {} + + return key === undefined || hasOwnProperty.call( obj, key ); + }, + + isEmptyObject: function( obj ) { + /// + /// Check to see if an object is empty (contains no properties). + /// + /// + /// The object that will be checked to see if it's empty. + /// + /// + + for ( var name in obj ) { + return false; + } + return true; + }, + + error: function( msg ) { + throw msg; + }, + + parseJSON: function( data ) { + if ( typeof data !== "string" || !data ) { + return null; + } + + // Make sure the incoming data is actual JSON + // Logic borrowed from http://json.org/json2.js + if ( /^[\],:{}\s]*$/.test(data.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, "@") + .replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, "]") + .replace(/(?:^|:|,)(?:\s*\[)+/g, "")) ) { + + // Try to use the native JSON parser first + return window.JSON && window.JSON.parse ? + window.JSON.parse( data ) : + (new Function("return " + data))(); + + } else { + jQuery.error( "Invalid JSON: " + data ); + } + }, + + noop: function() { + /// + /// An empty function. + /// + /// + }, + + // Evalulates a script in a global context + globalEval: function( data ) { + /// + /// Internally evaluates a script in a global context. + /// + /// + + if ( data && rnotwhite.test(data) ) { + // Inspired by code by Andrea Giammarchi + // http://webreflection.blogspot.com/2007/08/global-scope-evaluation-and-dom.html + var head = document.getElementsByTagName("head")[0] || document.documentElement, + script = document.createElement("script"); + + script.type = "text/javascript"; + + if ( jQuery.support.scriptEval ) { + script.appendChild( document.createTextNode( data ) ); + } else { + script.text = data; + } + + // Use insertBefore instead of appendChild to circumvent an IE6 bug. + // This arises when a base node is used (#2709). + head.insertBefore( script, head.firstChild ); + head.removeChild( script ); + } + }, + + nodeName: function( elem, name ) { + /// + /// Checks whether the specified element has the specified DOM node name. + /// + /// The element to examine + /// The node name to check + /// True if the specified node name matches the node's DOM node name; otherwise false + + return elem.nodeName && elem.nodeName.toUpperCase() === name.toUpperCase(); + }, + + // args is for internal usage only + each: function( object, callback, args ) { + /// + /// A generic iterator function, which can be used to seemlessly + /// iterate over both objects and arrays. This function is not the same + /// as $().each() - which is used to iterate, exclusively, over a jQuery + /// object. This function can be used to iterate over anything. + /// The callback has two arguments:the key (objects) or index (arrays) as first + /// the first, and the value as the second. + /// Part of JavaScript + /// + /// + /// The object, or array, to iterate over. + /// + /// + /// The function that will be executed on every object. + /// + /// + + var name, i = 0, + length = object.length, + isObj = length === undefined || jQuery.isFunction(object); + + if ( args ) { + if ( isObj ) { + for ( name in object ) { + if ( callback.apply( object[ name ], args ) === false ) { + break; + } + } + } else { + for ( ; i < length; ) { + if ( callback.apply( object[ i++ ], args ) === false ) { + break; + } + } + } + + // A special, fast, case for the most common use of each + } else { + if ( isObj ) { + for ( name in object ) { + if ( callback.call( object[ name ], name, object[ name ] ) === false ) { + break; + } + } + } else { + for ( var value = object[0]; + i < length && callback.call( value, i, value ) !== false; value = object[++i] ) {} + } + } + + return object; + }, + + trim: function( text ) { + /// + /// Remove the whitespace from the beginning and end of a string. + /// Part of JavaScript + /// + /// + /// + /// The string to trim. + /// + + return (text || "").replace( rtrim, "" ); + }, + + // results is for internal usage only + makeArray: function( array, results ) { + /// + /// Turns anything into a true array. This is an internal method. + /// + /// Anything to turn into an actual Array + /// + /// + + var ret = results || []; + + if ( array != null ) { + // The window, strings (and functions) also have 'length' + // The extra typeof function check is to prevent crashes + // in Safari 2 (See: #3039) + if ( array.length == null || typeof array === "string" || jQuery.isFunction(array) || (typeof array !== "function" && array.setInterval) ) { + push.call( ret, array ); + } else { + jQuery.merge( ret, array ); + } + } + + return ret; + }, + + inArray: function( elem, array ) { + if ( array.indexOf ) { + return array.indexOf( elem ); + } + + for ( var i = 0, length = array.length; i < length; i++ ) { + if ( array[ i ] === elem ) { + return i; + } + } + + return -1; + }, + + merge: function( first, second ) { + /// + /// Merge two arrays together, removing all duplicates. + /// The new array is: All the results from the first array, followed + /// by the unique results from the second array. + /// Part of JavaScript + /// + /// + /// + /// The first array to merge. + /// + /// + /// The second array to merge. + /// + + var i = first.length, j = 0; + + if ( typeof second.length === "number" ) { + for ( var l = second.length; j < l; j++ ) { + first[ i++ ] = second[ j ]; + } + } else { + while ( second[j] !== undefined ) { + first[ i++ ] = second[ j++ ]; + } + } + + first.length = i; + + return first; + }, + + grep: function( elems, callback, inv ) { + /// + /// Filter items out of an array, by using a filter function. + /// The specified function will be passed two arguments: The + /// current array item and the index of the item in the array. The + /// function must return 'true' to keep the item in the array, + /// false to remove it. + /// }); + /// Part of JavaScript + /// + /// + /// + /// array The Array to find items in. + /// + /// + /// The function to process each item against. + /// + /// + /// Invert the selection - select the opposite of the function. + /// + + var ret = []; + + // Go through the array, only saving the items + // that pass the validator function + for ( var i = 0, length = elems.length; i < length; i++ ) { + if ( !inv !== !callback( elems[ i ], i ) ) { + ret.push( elems[ i ] ); + } + } + + return ret; + }, + + // arg is for internal usage only + map: function( elems, callback, arg ) { + /// + /// Translate all items in an array to another array of items. + /// The translation function that is provided to this method is + /// called for each item in the array and is passed one argument: + /// The item to be translated. + /// The function can then return the translated value, 'null' + /// (to remove the item), or an array of values - which will + /// be flattened into the full array. + /// Part of JavaScript + /// + /// + /// + /// array The Array to translate. + /// + /// + /// The function to process each item against. + /// + + var ret = [], value; + + // Go through the array, translating each of the items to their + // new value (or values). + for ( var i = 0, length = elems.length; i < length; i++ ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret[ ret.length ] = value; + } + } + + return ret.concat.apply( [], ret ); + }, + + // A global GUID counter for objects + guid: 1, + + proxy: function( fn, proxy, thisObject ) { + /// + /// Takes a function and returns a new one that will always have a particular scope. + /// + /// + /// The function whose scope will be changed. + /// + /// + /// The object to which the scope of the function should be set. + /// + /// + + if ( arguments.length === 2 ) { + if ( typeof proxy === "string" ) { + thisObject = fn; + fn = thisObject[ proxy ]; + proxy = undefined; + + } else if ( proxy && !jQuery.isFunction( proxy ) ) { + thisObject = proxy; + proxy = undefined; + } + } + + if ( !proxy && fn ) { + proxy = function() { + return fn.apply( thisObject || this, arguments ); + }; + } + + // Set the guid of unique handler to the same of original handler, so it can be removed + if ( fn ) { + proxy.guid = fn.guid = fn.guid || proxy.guid || jQuery.guid++; + } + + // So proxy can be declared as an argument + return proxy; + }, + + // Use of jQuery.browser is frowned upon. + // More details: http://docs.jquery.com/Utilities/jQuery.browser + uaMatch: function( ua ) { + ua = ua.toLowerCase(); + + var match = /(webkit)[ \/]([\w.]+)/.exec( ua ) || + /(opera)(?:.*version)?[ \/]([\w.]+)/.exec( ua ) || + /(msie) ([\w.]+)/.exec( ua ) || + !/compatible/.test( ua ) && /(mozilla)(?:.*? rv:([\w.]+))?/.exec( ua ) || + []; + + return { browser: match[1] || "", version: match[2] || "0" }; + }, + + browser: {} +}); + +browserMatch = jQuery.uaMatch( userAgent ); +if ( browserMatch.browser ) { + jQuery.browser[ browserMatch.browser ] = true; + jQuery.browser.version = browserMatch.version; +} + +// Deprecated, use jQuery.browser.webkit instead +if ( jQuery.browser.webkit ) { + jQuery.browser.safari = true; +} + +if ( indexOf ) { + jQuery.inArray = function( elem, array ) { + /// + /// Determines the index of the first parameter in the array. + /// + /// The value to see if it exists in the array. + /// The array to look through for the value + /// The 0-based index of the item if it was found, otherwise -1. + + return indexOf.call( array, elem ); + }; +} + +// All jQuery objects should point back to these +rootjQuery = jQuery(document); + +// Cleanup functions for the document ready method +if ( document.addEventListener ) { + DOMContentLoaded = function() { + document.removeEventListener( "DOMContentLoaded", DOMContentLoaded, false ); + jQuery.ready(); + }; + +} else if ( document.attachEvent ) { + DOMContentLoaded = function() { + // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443). + if ( document.readyState === "complete" ) { + document.detachEvent( "onreadystatechange", DOMContentLoaded ); + jQuery.ready(); + } + }; +} + +// The DOM ready check for Internet Explorer +function doScrollCheck() { + if ( jQuery.isReady ) { + return; + } + + try { + // If IE is used, use the trick by Diego Perini + // http://javascript.nwbox.com/IEContentLoaded/ + document.documentElement.doScroll("left"); + } catch( error ) { + setTimeout( doScrollCheck, 1 ); + return; + } + + // and execute any waiting functions + jQuery.ready(); +} + +function evalScript( i, elem ) { + /// + /// This method is internal. + /// + /// + + if ( elem.src ) { + jQuery.ajax({ + url: elem.src, + async: false, + dataType: "script" + }); + } else { + jQuery.globalEval( elem.text || elem.textContent || elem.innerHTML || "" ); + } + + if ( elem.parentNode ) { + elem.parentNode.removeChild( elem ); + } +} + +// Mutifunctional method to get and set values to a collection +// The value/s can be optionally by executed if its a function +function access( elems, key, value, exec, fn, pass ) { + var length = elems.length; + + // Setting many attributes + if ( typeof key === "object" ) { + for ( var k in key ) { + access( elems, k, key[k], exec, fn, value ); + } + return elems; + } + + // Setting one attribute + if ( value !== undefined ) { + // Optionally, function values get executed if exec is true + exec = !pass && exec && jQuery.isFunction(value); + + for ( var i = 0; i < length; i++ ) { + fn( elems[i], key, exec ? value.call( elems[i], i, fn( elems[i], key ) ) : value, pass ); + } + + return elems; + } + + // Getting an attribute + return length ? fn( elems[0], key ) : null; +} + +function now() { + /// + /// Gets the current date. + /// + /// The current date. + + return (new Date).getTime(); +} + +// [vsdoc] The following function has been modified for IntelliSense. +// [vsdoc] Stubbing support properties to "false" for IntelliSense compat. +(function() { + + jQuery.support = {}; + + // var root = document.documentElement, + // script = document.createElement("script"), + // div = document.createElement("div"), + // id = "script" + now(); + + // div.style.display = "none"; + // div.innerHTML = "
a"; + + // var all = div.getElementsByTagName("*"), + // a = div.getElementsByTagName("a")[0]; + + // // Can't get basic test support + // if ( !all || !all.length || !a ) { + // return; + // } + + jQuery.support = { + // IE strips leading whitespace when .innerHTML is used + leadingWhitespace: false, + + // Make sure that tbody elements aren't automatically inserted + // IE will insert them into empty tables + tbody: false, + + // Make sure that link elements get serialized correctly by innerHTML + // This requires a wrapper element in IE + htmlSerialize: false, + + // Get the style information from getAttribute + // (IE uses .cssText insted) + style: false, + + // Make sure that URLs aren't manipulated + // (IE normalizes it by default) + hrefNormalized: false, + + // Make sure that element opacity exists + // (IE uses filter instead) + // Use a regex to work around a WebKit issue. See #5145 + opacity: false, + + // Verify style float existence + // (IE uses styleFloat instead of cssFloat) + cssFloat: false, + + // Make sure that if no value is specified for a checkbox + // that it defaults to "on". + // (WebKit defaults to "" instead) + checkOn: false, + + // Make sure that a selected-by-default option has a working selected property. + // (WebKit defaults to false instead of true, IE too, if it's in an optgroup) + optSelected: false, + + // Will be defined later + checkClone: false, + scriptEval: false, + noCloneEvent: false, + boxModel: false + }; + + // script.type = "text/javascript"; + // try { + // script.appendChild( document.createTextNode( "window." + id + "=1;" ) ); + // } catch(e) {} + + // root.insertBefore( script, root.firstChild ); + + // // Make sure that the execution of code works by injecting a script + // // tag with appendChild/createTextNode + // // (IE doesn't support this, fails, and uses .text instead) + // if ( window[ id ] ) { + // jQuery.support.scriptEval = true; + // delete window[ id ]; + // } + + // root.removeChild( script ); + + // if ( div.attachEvent && div.fireEvent ) { + // div.attachEvent("onclick", function click() { + // // Cloning a node shouldn't copy over any + // // bound event handlers (IE does this) + // jQuery.support.noCloneEvent = false; + // div.detachEvent("onclick", click); + // }); + // div.cloneNode(true).fireEvent("onclick"); + // } + + // div = document.createElement("div"); + // div.innerHTML = ""; + + // var fragment = document.createDocumentFragment(); + // fragment.appendChild( div.firstChild ); + + // // WebKit doesn't clone checked state correctly in fragments + // jQuery.support.checkClone = fragment.cloneNode(true).cloneNode(true).lastChild.checked; + + // // Figure out if the W3C box model works as expected + // // document.body must exist before we can do this + // jQuery(function() { + // var div = document.createElement("div"); + // div.style.width = div.style.paddingLeft = "1px"; + + // document.body.appendChild( div ); + // jQuery.boxModel = jQuery.support.boxModel = div.offsetWidth === 2; + // document.body.removeChild( div ).style.display = 'none'; + // div = null; + // }); + + // // Technique from Juriy Zaytsev + // // http://thinkweb2.com/projects/prototype/detecting-event-support-without-browser-sniffing/ + // var eventSupported = function( eventName ) { + // var el = document.createElement("div"); + // eventName = "on" + eventName; + + // var isSupported = (eventName in el); + // if ( !isSupported ) { + // el.setAttribute(eventName, "return;"); + // isSupported = typeof el[eventName] === "function"; + // } + // el = null; + + // return isSupported; + // }; + + jQuery.support.submitBubbles = false; + jQuery.support.changeBubbles = false; + + // // release memory in IE + // root = script = div = all = a = null; +})(); + +jQuery.props = { + "for": "htmlFor", + "class": "className", + readonly: "readOnly", + maxlength: "maxLength", + cellspacing: "cellSpacing", + rowspan: "rowSpan", + colspan: "colSpan", + tabindex: "tabIndex", + usemap: "useMap", + frameborder: "frameBorder" +}; +var expando = "jQuery" + now(), uuid = 0, windowData = {}; +var emptyObject = {}; + +jQuery.extend({ + cache: {}, + + expando:expando, + + // The following elements throw uncatchable exceptions if you + // attempt to add expando properties to them. + noData: { + "embed": true, + "object": true, + "applet": true + }, + + data: function( elem, name, data ) { + /// + /// Store arbitrary data associated with the specified element. + /// + /// + /// The DOM element to associate with the data. + /// + /// + /// A string naming the piece of data to set. + /// + /// + /// The new data value. + /// + /// + + if ( elem.nodeName && jQuery.noData[elem.nodeName.toLowerCase()] ) { + return; + } + + elem = elem == window ? + windowData : + elem; + + var id = elem[ expando ], cache = jQuery.cache, thisCache; + + // Handle the case where there's no name immediately + if ( !name && !id ) { + return null; + } + + // Compute a unique ID for the element + if ( !id ) { + id = ++uuid; + } + + // Avoid generating a new cache unless none exists and we + // want to manipulate it. + if ( typeof name === "object" ) { + elem[ expando ] = id; + thisCache = cache[ id ] = jQuery.extend(true, {}, name); + } else if ( cache[ id ] ) { + thisCache = cache[ id ]; + } else if ( typeof data === "undefined" ) { + thisCache = emptyObject; + } else { + thisCache = cache[ id ] = {}; + } + + // Prevent overriding the named cache with undefined values + if ( data !== undefined ) { + elem[ expando ] = id; + thisCache[ name ] = data; + } + + return typeof name === "string" ? thisCache[ name ] : thisCache; + }, + + removeData: function( elem, name ) { + if ( elem.nodeName && jQuery.noData[elem.nodeName.toLowerCase()] ) { + return; + } + + elem = elem == window ? + windowData : + elem; + + var id = elem[ expando ], cache = jQuery.cache, thisCache = cache[ id ]; + + // If we want to remove a specific section of the element's data + if ( name ) { + if ( thisCache ) { + // Remove the section of cache data + delete thisCache[ name ]; + + // If we've removed all the data, remove the element's cache + if ( jQuery.isEmptyObject(thisCache) ) { + jQuery.removeData( elem ); + } + } + + // Otherwise, we want to remove all of the element's data + } else { + // Clean up the element expando + try { + delete elem[ expando ]; + } catch( e ) { + // IE has trouble directly removing the expando + // but it's ok with using removeAttribute + if ( elem.removeAttribute ) { + elem.removeAttribute( expando ); + } + } + + // Completely remove the data cache + delete cache[ id ]; + } + } +}); + +jQuery.fn.extend({ + data: function( key, value ) { + /// + /// Store arbitrary data associated with the matched elements. + /// + /// + /// A string naming the piece of data to set. + /// + /// + /// The new data value. + /// + /// + + if ( typeof key === "undefined" && this.length ) { + return jQuery.data( this[0] ); + + } else if ( typeof key === "object" ) { + return this.each(function() { + jQuery.data( this, key ); + }); + } + + var parts = key.split("."); + parts[1] = parts[1] ? "." + parts[1] : ""; + + if ( value === undefined ) { + var data = this.triggerHandler("getData" + parts[1] + "!", [parts[0]]); + + if ( data === undefined && this.length ) { + data = jQuery.data( this[0], key ); + } + return data === undefined && parts[1] ? + this.data( parts[0] ) : + data; + } else { + return this.trigger("setData" + parts[1] + "!", [parts[0], value]).each(function() { + jQuery.data( this, key, value ); + }); + } + }, + + removeData: function( key ) { + return this.each(function() { + jQuery.removeData( this, key ); + }); + } +}); +jQuery.extend({ + queue: function( elem, type, data ) { + if ( !elem ) { + return; + } + + type = (type || "fx") + "queue"; + var q = jQuery.data( elem, type ); + + // Speed up dequeue by getting out quickly if this is just a lookup + if ( !data ) { + return q || []; + } + + if ( !q || jQuery.isArray(data) ) { + q = jQuery.data( elem, type, jQuery.makeArray(data) ); + + } else { + q.push( data ); + } + + return q; + }, + + dequeue: function( elem, type ) { + type = type || "fx"; + + var queue = jQuery.queue( elem, type ), fn = queue.shift(); + + // If the fx queue is dequeued, always remove the progress sentinel + if ( fn === "inprogress" ) { + fn = queue.shift(); + } + + if ( fn ) { + // Add a progress sentinel to prevent the fx queue from being + // automatically dequeued + if ( type === "fx" ) { + queue.unshift("inprogress"); + } + + fn.call(elem, function() { + jQuery.dequeue(elem, type); + }); + } + } +}); + +jQuery.fn.extend({ + queue: function( type, data ) { + /// + /// 1: queue() - Returns a reference to the first element's queue (which is an array of functions). + /// 2: queue(callback) - Adds a new function, to be executed, onto the end of the queue of all matched elements. + /// 3: queue(queue) - Replaces the queue of all matched element with this new queue (the array of functions). + /// + /// The function to add to the queue. + /// + + if ( typeof type !== "string" ) { + data = type; + type = "fx"; + } + + if ( data === undefined ) { + return jQuery.queue( this[0], type ); + } + return this.each(function( i, elem ) { + var queue = jQuery.queue( this, type, data ); + + if ( type === "fx" && queue[0] !== "inprogress" ) { + jQuery.dequeue( this, type ); + } + }); + }, + dequeue: function( type ) { + /// + /// Removes a queued function from the front of the queue and executes it. + /// + /// The type of queue to access. + /// + + return this.each(function() { + jQuery.dequeue( this, type ); + }); + }, + + // Based off of the plugin by Clint Helfers, with permission. + // http://blindsignals.com/index.php/2009/07/jquery-delay/ + delay: function( time, type ) { + /// + /// Set a timer to delay execution of subsequent items in the queue. + /// + /// + /// An integer indicating the number of milliseconds to delay execution of the next item in the queue. + /// + /// + /// A string containing the name of the queue. Defaults to fx, the standard effects queue. + /// + /// + + time = jQuery.fx ? jQuery.fx.speeds[time] || time : time; + type = type || "fx"; + + return this.queue( type, function() { + var elem = this; + setTimeout(function() { + jQuery.dequeue( elem, type ); + }, time ); + }); + }, + + clearQueue: function( type ) { + /// + /// Remove from the queue all items that have not yet been run. + /// + /// + /// A string containing the name of the queue. Defaults to fx, the standard effects queue. + /// + /// + + return this.queue( type || "fx", [] ); + } +}); +var rclass = /[\n\t]/g, + rspace = /\s+/, + rreturn = /\r/g, + rspecialurl = /href|src|style/, + rtype = /(button|input)/i, + rfocusable = /(button|input|object|select|textarea)/i, + rclickable = /^(a|area)$/i, + rradiocheck = /radio|checkbox/; + +jQuery.fn.extend({ + attr: function( name, value ) { + /// + /// Set a single property to a computed value, on all matched elements. + /// Instead of a value, a function is provided, that computes the value. + /// Part of DOM/Attributes + /// + /// + /// + /// The name of the property to set. + /// + /// + /// A function returning the value to set. + /// + + return access( this, name, value, true, jQuery.attr ); + }, + + removeAttr: function( name, fn ) { + /// + /// Remove an attribute from each of the matched elements. + /// Part of DOM/Attributes + /// + /// + /// An attribute to remove. + /// + /// + + return this.each(function(){ + jQuery.attr( this, name, "" ); + if ( this.nodeType === 1 ) { + this.removeAttribute( name ); + } + }); + }, + + addClass: function( value ) { + /// + /// Adds the specified class(es) to each of the set of matched elements. + /// Part of DOM/Attributes + /// + /// + /// One or more class names to be added to the class attribute of each matched element. + /// + /// + + if ( jQuery.isFunction(value) ) { + return this.each(function(i) { + var self = jQuery(this); + self.addClass( value.call(this, i, self.attr("class")) ); + }); + } + + if ( value && typeof value === "string" ) { + var classNames = (value || "").split( rspace ); + + for ( var i = 0, l = this.length; i < l; i++ ) { + var elem = this[i]; + + if ( elem.nodeType === 1 ) { + if ( !elem.className ) { + elem.className = value; + + } else { + var className = " " + elem.className + " "; + for ( var c = 0, cl = classNames.length; c < cl; c++ ) { + if ( className.indexOf( " " + classNames[c] + " " ) < 0 ) { + elem.className += " " + classNames[c]; + } + } + } + } + } + } + + return this; + }, + + removeClass: function( value ) { + /// + /// Removes all or the specified class(es) from the set of matched elements. + /// Part of DOM/Attributes + /// + /// + /// (Optional) A class name to be removed from the class attribute of each matched element. + /// + /// + + if ( jQuery.isFunction(value) ) { + return this.each(function(i) { + var self = jQuery(this); + self.removeClass( value.call(this, i, self.attr("class")) ); + }); + } + + if ( (value && typeof value === "string") || value === undefined ) { + var classNames = (value || "").split(rspace); + + for ( var i = 0, l = this.length; i < l; i++ ) { + var elem = this[i]; + + if ( elem.nodeType === 1 && elem.className ) { + if ( value ) { + var className = (" " + elem.className + " ").replace(rclass, " "); + for ( var c = 0, cl = classNames.length; c < cl; c++ ) { + className = className.replace(" " + classNames[c] + " ", " "); + } + elem.className = className.substring(1, className.length - 1); + + } else { + elem.className = ""; + } + } + } + } + + return this; + }, + + toggleClass: function( value, stateVal ) { + /// + /// Add or remove a class from each element in the set of matched elements, depending + /// on either the class's presence or the value of the switch argument. + /// + /// + /// A class name to be toggled for each element in the matched set. + /// + /// + /// A boolean value to determine whether the class should be added or removed. + /// + /// + + var type = typeof value, isBool = typeof stateVal === "boolean"; + + if ( jQuery.isFunction( value ) ) { + return this.each(function(i) { + var self = jQuery(this); + self.toggleClass( value.call(this, i, self.attr("class"), stateVal), stateVal ); + }); + } + + return this.each(function() { + if ( type === "string" ) { + // toggle individual class names + var className, i = 0, self = jQuery(this), + state = stateVal, + classNames = value.split( rspace ); + + while ( (className = classNames[ i++ ]) ) { + // check each className given, space seperated list + state = isBool ? state : !self.hasClass( className ); + self[ state ? "addClass" : "removeClass" ]( className ); + } + + } else if ( type === "undefined" || type === "boolean" ) { + if ( this.className ) { + // store className if set + jQuery.data( this, "__className__", this.className ); + } + + // toggle whole className + this.className = this.className || value === false ? "" : jQuery.data( this, "__className__" ) || ""; + } + }); + }, + + hasClass: function( selector ) { + /// + /// Checks the current selection against a class and returns whether at least one selection has a given class. + /// + /// The class to check against + /// True if at least one element in the selection has the class, otherwise false. + + var className = " " + selector + " "; + for ( var i = 0, l = this.length; i < l; i++ ) { + if ( (" " + this[i].className + " ").replace(rclass, " ").indexOf( className ) > -1 ) { + return true; + } + } + + return false; + }, + + val: function( value ) { + /// + /// Set the value of every matched element. + /// Part of DOM/Attributes + /// + /// + /// + /// A string of text or an array of strings to set as the value property of each + /// matched element. + /// + + if ( value === undefined ) { + var elem = this[0]; + + if ( elem ) { + if ( jQuery.nodeName( elem, "option" ) ) { + return (elem.attributes.value || {}).specified ? elem.value : elem.text; + } + + // We need to handle select boxes special + if ( jQuery.nodeName( elem, "select" ) ) { + var index = elem.selectedIndex, + values = [], + options = elem.options, + one = elem.type === "select-one"; + + // Nothing was selected + if ( index < 0 ) { + return null; + } + + // Loop through all the selected options + for ( var i = one ? index : 0, max = one ? index + 1 : options.length; i < max; i++ ) { + var option = options[ i ]; + + if ( option.selected ) { + // Get the specifc value for the option + value = jQuery(option).val(); + + // We don't need an array for one selects + if ( one ) { + return value; + } + + // Multi-Selects return an array + values.push( value ); + } + } + + return values; + } + + // Handle the case where in Webkit "" is returned instead of "on" if a value isn't specified + if ( rradiocheck.test( elem.type ) && !jQuery.support.checkOn ) { + return elem.getAttribute("value") === null ? "on" : elem.value; + } + + + // Everything else, we just grab the value + return (elem.value || "").replace(rreturn, ""); + + } + + return undefined; + } + + var isFunction = jQuery.isFunction(value); + + return this.each(function(i) { + var self = jQuery(this), val = value; + + if ( this.nodeType !== 1 ) { + return; + } + + if ( isFunction ) { + val = value.call(this, i, self.val()); + } + + // Typecast each time if the value is a Function and the appended + // value is therefore different each time. + if ( typeof val === "number" ) { + val += ""; + } + + if ( jQuery.isArray(val) && rradiocheck.test( this.type ) ) { + this.checked = jQuery.inArray( self.val(), val ) >= 0; + + } else if ( jQuery.nodeName( this, "select" ) ) { + var values = jQuery.makeArray(val); + + jQuery( "option", this ).each(function() { + this.selected = jQuery.inArray( jQuery(this).val(), values ) >= 0; + }); + + if ( !values.length ) { + this.selectedIndex = -1; + } + + } else { + this.value = val; + } + }); + } +}); + +jQuery.extend({ + attrFn: { + val: true, + css: true, + html: true, + text: true, + data: true, + width: true, + height: true, + offset: true + }, + + attr: function( elem, name, value, pass ) { + /// + /// This method is internal. + /// + /// + + // don't set attributes on text and comment nodes + if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 ) { + return undefined; + } + + if ( pass && name in jQuery.attrFn ) { + return jQuery(elem)[name](value); + } + + var notxml = elem.nodeType !== 1 || !jQuery.isXMLDoc( elem ), + // Whether we are setting (or getting) + set = value !== undefined; + + // Try to normalize/fix the name + name = notxml && jQuery.props[ name ] || name; + + // Only do all the following if this is a node (faster for style) + if ( elem.nodeType === 1 ) { + // These attributes require special treatment + var special = rspecialurl.test( name ); + + // Safari mis-reports the default selected property of an option + // Accessing the parent's selectedIndex property fixes it + if ( name === "selected" && !jQuery.support.optSelected ) { + var parent = elem.parentNode; + if ( parent ) { + parent.selectedIndex; + + // Make sure that it also works with optgroups, see #5701 + if ( parent.parentNode ) { + parent.parentNode.selectedIndex; + } + } + } + + // If applicable, access the attribute via the DOM 0 way + if ( name in elem && notxml && !special ) { + if ( set ) { + // We can't allow the type property to be changed (since it causes problems in IE) + if ( name === "type" && rtype.test( elem.nodeName ) && elem.parentNode ) { + jQuery.error( "type property can't be changed" ); + } + + elem[ name ] = value; + } + + // browsers index elements by id/name on forms, give priority to attributes. + if ( jQuery.nodeName( elem, "form" ) && elem.getAttributeNode(name) ) { + return elem.getAttributeNode( name ).nodeValue; + } + + // elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set + // http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/ + if ( name === "tabIndex" ) { + var attributeNode = elem.getAttributeNode( "tabIndex" ); + + return attributeNode && attributeNode.specified ? + attributeNode.value : + rfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ? + 0 : + undefined; + } + + return elem[ name ]; + } + + if ( !jQuery.support.style && notxml && name === "style" ) { + if ( set ) { + elem.style.cssText = "" + value; + } + + return elem.style.cssText; + } + + if ( set ) { + // convert the value to a string (all browsers do this but IE) see #1070 + elem.setAttribute( name, "" + value ); + } + + var attr = !jQuery.support.hrefNormalized && notxml && special ? + // Some attributes require a special call on IE + elem.getAttribute( name, 2 ) : + elem.getAttribute( name ); + + // Non-existent attributes return null, we normalize to undefined + return attr === null ? undefined : attr; + } + + // elem is actually elem.style ... set the style + // Using attr for specific style information is now deprecated. Use style insead. + return jQuery.style( elem, name, value ); + } +}); +var fcleanup = function( nm ) { + return nm.replace(/[^\w\s\.\|`]/g, function( ch ) { + return "\\" + ch; + }); +}; + +/* + * A number of helper functions used for managing events. + * Many of the ideas behind this code originated from + * Dean Edwards' addEvent library. + */ +jQuery.event = { + + // Bind an event to an element + // Original by Dean Edwards + add: function( elem, types, handler, data ) { + /// + /// This method is internal. + /// + /// + + if ( elem.nodeType === 3 || elem.nodeType === 8 ) { + return; + } + + // For whatever reason, IE has trouble passing the window object + // around, causing it to be cloned in the process + if ( elem.setInterval && ( elem !== window && !elem.frameElement ) ) { + elem = window; + } + + // Make sure that the function being executed has a unique ID + if ( !handler.guid ) { + handler.guid = jQuery.guid++; + } + + // if data is passed, bind to handler + if ( data !== undefined ) { + // Create temporary function pointer to original handler + var fn = handler; + + // Create unique handler function, wrapped around original handler + handler = jQuery.proxy( fn ); + + // Store data in unique handler + handler.data = data; + } + + // Init the element's event structure + var events = jQuery.data( elem, "events" ) || jQuery.data( elem, "events", {} ), + handle = jQuery.data( elem, "handle" ), eventHandle; + + if ( !handle ) { + eventHandle = function() { + // Handle the second event of a trigger and when + // an event is called after a page has unloaded + return typeof jQuery !== "undefined" && !jQuery.event.triggered ? + jQuery.event.handle.apply( eventHandle.elem, arguments ) : + undefined; + }; + + handle = jQuery.data( elem, "handle", eventHandle ); + } + + // If no handle is found then we must be trying to bind to one of the + // banned noData elements + if ( !handle ) { + return; + } + + // Add elem as a property of the handle function + // This is to prevent a memory leak with non-native + // event in IE. + handle.elem = elem; + + // Handle multiple events separated by a space + // jQuery(...).bind("mouseover mouseout", fn); + types = types.split( /\s+/ ); + + var type, i = 0; + + while ( (type = types[ i++ ]) ) { + // Namespaced event handlers + var namespaces = type.split("."); + type = namespaces.shift(); + + if ( i > 1 ) { + handler = jQuery.proxy( handler ); + + if ( data !== undefined ) { + handler.data = data; + } + } + + handler.type = namespaces.slice(0).sort().join("."); + + // Get the current list of functions bound to this event + var handlers = events[ type ], + special = this.special[ type ] || {}; + + // Init the event handler queue + if ( !handlers ) { + handlers = events[ type ] = {}; + + // Check for a special event handler + // Only use addEventListener/attachEvent if the special + // events handler returns false + if ( !special.setup || special.setup.call( elem, data, namespaces, handler) === false ) { + // Bind the global event handler to the element + if ( elem.addEventListener ) { + elem.addEventListener( type, handle, false ); + } else if ( elem.attachEvent ) { + elem.attachEvent( "on" + type, handle ); + } + } + } + + if ( special.add ) { + var modifiedHandler = special.add.call( elem, handler, data, namespaces, handlers ); + if ( modifiedHandler && jQuery.isFunction( modifiedHandler ) ) { + modifiedHandler.guid = modifiedHandler.guid || handler.guid; + modifiedHandler.data = modifiedHandler.data || handler.data; + modifiedHandler.type = modifiedHandler.type || handler.type; + handler = modifiedHandler; + } + } + + // Add the function to the element's handler list + handlers[ handler.guid ] = handler; + + // Keep track of which events have been used, for global triggering + this.global[ type ] = true; + } + + // Nullify elem to prevent memory leaks in IE + elem = null; + }, + + global: {}, + + // Detach an event or set of events from an element + remove: function( elem, types, handler ) { + /// + /// This method is internal. + /// + /// + + // don't do events on text and comment nodes + if ( elem.nodeType === 3 || elem.nodeType === 8 ) { + return; + } + + var events = jQuery.data( elem, "events" ), ret, type, fn; + + if ( events ) { + // Unbind all events for the element + if ( types === undefined || (typeof types === "string" && types.charAt(0) === ".") ) { + for ( type in events ) { + this.remove( elem, type + (types || "") ); + } + } else { + // types is actually an event object here + if ( types.type ) { + handler = types.handler; + types = types.type; + } + + // Handle multiple events separated by a space + // jQuery(...).unbind("mouseover mouseout", fn); + types = types.split(/\s+/); + var i = 0; + while ( (type = types[ i++ ]) ) { + // Namespaced event handlers + var namespaces = type.split("."); + type = namespaces.shift(); + var all = !namespaces.length, + cleaned = jQuery.map( namespaces.slice(0).sort(), fcleanup ), + namespace = new RegExp("(^|\\.)" + cleaned.join("\\.(?:.*\\.)?") + "(\\.|$)"), + special = this.special[ type ] || {}; + + if ( events[ type ] ) { + // remove the given handler for the given type + if ( handler ) { + fn = events[ type ][ handler.guid ]; + delete events[ type ][ handler.guid ]; + + // remove all handlers for the given type + } else { + for ( var handle in events[ type ] ) { + // Handle the removal of namespaced events + if ( all || namespace.test( events[ type ][ handle ].type ) ) { + delete events[ type ][ handle ]; + } + } + } + + if ( special.remove ) { + special.remove.call( elem, namespaces, fn); + } + + // remove generic event handler if no more handlers exist + for ( ret in events[ type ] ) { + break; + } + if ( !ret ) { + if ( !special.teardown || special.teardown.call( elem, namespaces ) === false ) { + if ( elem.removeEventListener ) { + elem.removeEventListener( type, jQuery.data( elem, "handle" ), false ); + } else if ( elem.detachEvent ) { + elem.detachEvent( "on" + type, jQuery.data( elem, "handle" ) ); + } + } + ret = null; + delete events[ type ]; + } + } + } + } + + // Remove the expando if it's no longer used + for ( ret in events ) { + break; + } + if ( !ret ) { + var handle = jQuery.data( elem, "handle" ); + if ( handle ) { + handle.elem = null; + } + jQuery.removeData( elem, "events" ); + jQuery.removeData( elem, "handle" ); + } + } + }, + + // bubbling is internal + trigger: function( event, data, elem /*, bubbling */ ) { + /// + /// This method is internal. + /// + /// + + // Event object or event type + var type = event.type || event, + bubbling = arguments[3]; + + if ( !bubbling ) { + event = typeof event === "object" ? + // jQuery.Event object + event[expando] ? event : + // Object literal + jQuery.extend( jQuery.Event(type), event ) : + // Just the event type (string) + jQuery.Event(type); + + if ( type.indexOf("!") >= 0 ) { + event.type = type = type.slice(0, -1); + event.exclusive = true; + } + + // Handle a global trigger + if ( !elem ) { + // Don't bubble custom events when global (to avoid too much overhead) + event.stopPropagation(); + + // Only trigger if we've ever bound an event for it + if ( this.global[ type ] ) { + jQuery.each( jQuery.cache, function() { + if ( this.events && this.events[type] ) { + jQuery.event.trigger( event, data, this.handle.elem ); + } + }); + } + } + + // Handle triggering a single element + + // don't do events on text and comment nodes + if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 ) { + return undefined; + } + + // Clean up in case it is reused + event.result = undefined; + event.target = elem; + + // Clone the incoming data, if any + data = jQuery.makeArray( data ); + data.unshift( event ); + } + + event.currentTarget = elem; + + // Trigger the event, it is assumed that "handle" is a function + var handle = jQuery.data( elem, "handle" ); + if ( handle ) { + handle.apply( elem, data ); + } + + var parent = elem.parentNode || elem.ownerDocument; + + // Trigger an inline bound script + try { + if ( !(elem && elem.nodeName && jQuery.noData[elem.nodeName.toLowerCase()]) ) { + if ( elem[ "on" + type ] && elem[ "on" + type ].apply( elem, data ) === false ) { + event.result = false; + } + } + + // prevent IE from throwing an error for some elements with some event types, see #3533 + } catch (e) {} + + if ( !event.isPropagationStopped() && parent ) { + jQuery.event.trigger( event, data, parent, true ); + + } else if ( !event.isDefaultPrevented() ) { + var target = event.target, old, + isClick = jQuery.nodeName(target, "a") && type === "click"; + + if ( !isClick && !(target && target.nodeName && jQuery.noData[target.nodeName.toLowerCase()]) ) { + try { + if ( target[ type ] ) { + // Make sure that we don't accidentally re-trigger the onFOO events + old = target[ "on" + type ]; + + if ( old ) { + target[ "on" + type ] = null; + } + + this.triggered = true; + target[ type ](); + } + + // prevent IE from throwing an error for some elements with some event types, see #3533 + } catch (e) {} + + if ( old ) { + target[ "on" + type ] = old; + } + + this.triggered = false; + } + } + }, + + handle: function( event ) { + /// + /// This method is internal. + /// + /// + + // returned undefined or false + var all, handlers; + + event = arguments[0] = jQuery.event.fix( event || window.event ); + event.currentTarget = this; + + // Namespaced event handlers + var namespaces = event.type.split("."); + event.type = namespaces.shift(); + + // Cache this now, all = true means, any handler + all = !namespaces.length && !event.exclusive; + + var namespace = new RegExp("(^|\\.)" + namespaces.slice(0).sort().join("\\.(?:.*\\.)?") + "(\\.|$)"); + + handlers = ( jQuery.data(this, "events") || {} )[ event.type ]; + + for ( var j in handlers ) { + var handler = handlers[ j ]; + + // Filter the functions by class + if ( all || namespace.test(handler.type) ) { + // Pass in a reference to the handler function itself + // So that we can later remove it + event.handler = handler; + event.data = handler.data; + + var ret = handler.apply( this, arguments ); + + if ( ret !== undefined ) { + event.result = ret; + if ( ret === false ) { + event.preventDefault(); + event.stopPropagation(); + } + } + + if ( event.isImmediatePropagationStopped() ) { + break; + } + + } + } + + return event.result; + }, + + props: "altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "), + + fix: function( event ) { + /// + /// This method is internal. + /// + /// + + if ( event[ expando ] ) { + return event; + } + + // store a copy of the original event object + // and "clone" to set read-only properties + var originalEvent = event; + event = jQuery.Event( originalEvent ); + + for ( var i = this.props.length, prop; i; ) { + prop = this.props[ --i ]; + event[ prop ] = originalEvent[ prop ]; + } + + // Fix target property, if necessary + if ( !event.target ) { + event.target = event.srcElement || document; // Fixes #1925 where srcElement might not be defined either + } + + // check if target is a textnode (safari) + if ( event.target.nodeType === 3 ) { + event.target = event.target.parentNode; + } + + // Add relatedTarget, if necessary + if ( !event.relatedTarget && event.fromElement ) { + event.relatedTarget = event.fromElement === event.target ? event.toElement : event.fromElement; + } + + // Calculate pageX/Y if missing and clientX/Y available + if ( event.pageX == null && event.clientX != null ) { + var doc = document.documentElement, body = document.body; + event.pageX = event.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc && doc.clientLeft || body && body.clientLeft || 0); + event.pageY = event.clientY + (doc && doc.scrollTop || body && body.scrollTop || 0) - (doc && doc.clientTop || body && body.clientTop || 0); + } + + // Add which for key events + if ( !event.which && ((event.charCode || event.charCode === 0) ? event.charCode : event.keyCode) ) { + event.which = event.charCode || event.keyCode; + } + + // Add metaKey to non-Mac browsers (use ctrl for PC's and Meta for Macs) + if ( !event.metaKey && event.ctrlKey ) { + event.metaKey = event.ctrlKey; + } + + // Add which for click: 1 === left; 2 === middle; 3 === right + // Note: button is not normalized, so don't use it + if ( !event.which && event.button !== undefined ) { + event.which = (event.button & 1 ? 1 : ( event.button & 2 ? 3 : ( event.button & 4 ? 2 : 0 ) )); + } + + return event; + }, + + // Deprecated, use jQuery.guid instead + guid: 1E8, + + // Deprecated, use jQuery.proxy instead + proxy: jQuery.proxy, + + special: { + ready: { + // Make sure the ready event is setup + setup: jQuery.bindReady, + teardown: jQuery.noop + }, + + live: { + add: function( proxy, data, namespaces, live ) { + jQuery.extend( proxy, data || {} ); + + proxy.guid += data.selector + data.live; + data.liveProxy = proxy; + + jQuery.event.add( this, data.live, liveHandler, data ); + + }, + + remove: function( namespaces ) { + if ( namespaces.length ) { + var remove = 0, name = new RegExp("(^|\\.)" + namespaces[0] + "(\\.|$)"); + + jQuery.each( (jQuery.data(this, "events").live || {}), function() { + if ( name.test(this.type) ) { + remove++; + } + }); + + if ( remove < 1 ) { + jQuery.event.remove( this, namespaces[0], liveHandler ); + } + } + }, + special: {} + }, + beforeunload: { + setup: function( data, namespaces, fn ) { + // We only want to do this special case on windows + if ( this.setInterval ) { + this.onbeforeunload = fn; + } + + return false; + }, + teardown: function( namespaces, fn ) { + if ( this.onbeforeunload === fn ) { + this.onbeforeunload = null; + } + } + } + } +}; + +jQuery.Event = function( src ) { + // Allow instantiation without the 'new' keyword + if ( !this.preventDefault ) { + return new jQuery.Event( src ); + } + + // Event object + if ( src && src.type ) { + this.originalEvent = src; + this.type = src.type; + // Event type + } else { + this.type = src; + } + + // timeStamp is buggy for some events on Firefox(#3843) + // So we won't rely on the native value + this.timeStamp = now(); + + // Mark it as fixed + this[ expando ] = true; +}; + +function returnFalse() { + return false; +} +function returnTrue() { + return true; +} + +// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding +// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html +jQuery.Event.prototype = { + preventDefault: function() { + this.isDefaultPrevented = returnTrue; + + var e = this.originalEvent; + if ( !e ) { + return; + } + + // if preventDefault exists run it on the original event + if ( e.preventDefault ) { + e.preventDefault(); + } + // otherwise set the returnValue property of the original event to false (IE) + e.returnValue = false; + }, + stopPropagation: function() { + this.isPropagationStopped = returnTrue; + + var e = this.originalEvent; + if ( !e ) { + return; + } + // if stopPropagation exists run it on the original event + if ( e.stopPropagation ) { + e.stopPropagation(); + } + // otherwise set the cancelBubble property of the original event to true (IE) + e.cancelBubble = true; + }, + stopImmediatePropagation: function() { + this.isImmediatePropagationStopped = returnTrue; + this.stopPropagation(); + }, + isDefaultPrevented: returnFalse, + isPropagationStopped: returnFalse, + isImmediatePropagationStopped: returnFalse +}; + +// Checks if an event happened on an element within another element +// Used in jQuery.event.special.mouseenter and mouseleave handlers +var withinElement = function( event ) { + // Check if mouse(over|out) are still within the same parent element + var parent = event.relatedTarget; + + // Traverse up the tree + while ( parent && parent !== this ) { + // Firefox sometimes assigns relatedTarget a XUL element + // which we cannot access the parentNode property of + try { + parent = parent.parentNode; + + // assuming we've left the element since we most likely mousedover a xul element + } catch(e) { + break; + } + } + + if ( parent !== this ) { + // set the correct event type + event.type = event.data; + + // handle event if we actually just moused on to a non sub-element + jQuery.event.handle.apply( this, arguments ); + } + +}, + +// In case of event delegation, we only need to rename the event.type, +// liveHandler will take care of the rest. +delegate = function( event ) { + event.type = event.data; + jQuery.event.handle.apply( this, arguments ); +}; + +// Create mouseenter and mouseleave events +jQuery.each({ + mouseenter: "mouseover", + mouseleave: "mouseout" +}, function( orig, fix ) { + jQuery.event.special[ orig ] = { + setup: function( data ) { + jQuery.event.add( this, fix, data && data.selector ? delegate : withinElement, orig ); + }, + teardown: function( data ) { + jQuery.event.remove( this, fix, data && data.selector ? delegate : withinElement ); + } + }; +}); + +// submit delegation +if ( !jQuery.support.submitBubbles ) { + +jQuery.event.special.submit = { + setup: function( data, namespaces, fn ) { + if ( this.nodeName.toLowerCase() !== "form" ) { + jQuery.event.add(this, "click.specialSubmit." + fn.guid, function( e ) { + var elem = e.target, type = elem.type; + + if ( (type === "submit" || type === "image") && jQuery( elem ).closest("form").length ) { + return trigger( "submit", this, arguments ); + } + }); + + jQuery.event.add(this, "keypress.specialSubmit." + fn.guid, function( e ) { + var elem = e.target, type = elem.type; + + if ( (type === "text" || type === "password") && jQuery( elem ).closest("form").length && e.keyCode === 13 ) { + return trigger( "submit", this, arguments ); + } + }); + + } else { + return false; + } + }, + + remove: function( namespaces, fn ) { + jQuery.event.remove( this, "click.specialSubmit" + (fn ? "."+fn.guid : "") ); + jQuery.event.remove( this, "keypress.specialSubmit" + (fn ? "."+fn.guid : "") ); + } +}; + +} + +// change delegation, happens here so we have bind. +if ( !jQuery.support.changeBubbles ) { + +var formElems = /textarea|input|select/i; + +function getVal( elem ) { + var type = elem.type, val = elem.value; + + if ( type === "radio" || type === "checkbox" ) { + val = elem.checked; + + } else if ( type === "select-multiple" ) { + val = elem.selectedIndex > -1 ? + jQuery.map( elem.options, function( elem ) { + return elem.selected; + }).join("-") : + ""; + + } else if ( elem.nodeName.toLowerCase() === "select" ) { + val = elem.selectedIndex; + } + + return val; +} + +function testChange( e ) { + var elem = e.target, data, val; + + if ( !formElems.test( elem.nodeName ) || elem.readOnly ) { + return; + } + + data = jQuery.data( elem, "_change_data" ); + val = getVal(elem); + + // the current data will be also retrieved by beforeactivate + if ( e.type !== "focusout" || elem.type !== "radio" ) { + jQuery.data( elem, "_change_data", val ); + } + + if ( data === undefined || val === data ) { + return; + } + + if ( data != null || val ) { + e.type = "change"; + return jQuery.event.trigger( e, arguments[1], elem ); + } +} + +jQuery.event.special.change = { + filters: { + focusout: testChange, + + click: function( e ) { + var elem = e.target, type = elem.type; + + if ( type === "radio" || type === "checkbox" || elem.nodeName.toLowerCase() === "select" ) { + return testChange.call( this, e ); + } + }, + + // Change has to be called before submit + // Keydown will be called before keypress, which is used in submit-event delegation + keydown: function( e ) { + var elem = e.target, type = elem.type; + + if ( (e.keyCode === 13 && elem.nodeName.toLowerCase() !== "textarea") || + (e.keyCode === 32 && (type === "checkbox" || type === "radio")) || + type === "select-multiple" ) { + return testChange.call( this, e ); + } + }, + + // Beforeactivate happens also before the previous element is blurred + // with this event you can't trigger a change event, but you can store + // information/focus[in] is not needed anymore + beforeactivate: function( e ) { + var elem = e.target; + + if ( elem.nodeName.toLowerCase() === "input" && elem.type === "radio" ) { + jQuery.data( elem, "_change_data", getVal(elem) ); + } + } + }, + setup: function( data, namespaces, fn ) { + for ( var type in changeFilters ) { + jQuery.event.add( this, type + ".specialChange." + fn.guid, changeFilters[type] ); + } + + return formElems.test( this.nodeName ); + }, + remove: function( namespaces, fn ) { + for ( var type in changeFilters ) { + jQuery.event.remove( this, type + ".specialChange" + (fn ? "."+fn.guid : ""), changeFilters[type] ); + } + + return formElems.test( this.nodeName ); + } +}; + +var changeFilters = jQuery.event.special.change.filters; + +} + +function trigger( type, elem, args ) { + args[0].type = type; + return jQuery.event.handle.apply( elem, args ); +} + +// Create "bubbling" focus and blur events +if ( document.addEventListener ) { + jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) { + jQuery.event.special[ fix ] = { + setup: function() { + /// + /// This method is internal. + /// + /// + + this.addEventListener( orig, handler, true ); + }, + teardown: function() { + /// + /// This method is internal. + /// + /// + + this.removeEventListener( orig, handler, true ); + } + }; + + function handler( e ) { + e = jQuery.event.fix( e ); + e.type = fix; + return jQuery.event.handle.call( this, e ); + } + }); +} + +// jQuery.each(["bind", "one"], function( i, name ) { +// jQuery.fn[ name ] = function( type, data, fn ) { +// // Handle object literals +// if ( typeof type === "object" ) { +// for ( var key in type ) { +// this[ name ](key, data, type[key], fn); +// } +// return this; +// } +// +// if ( jQuery.isFunction( data ) ) { +// fn = data; +// data = undefined; +// } +// +// var handler = name === "one" ? jQuery.proxy( fn, function( event ) { +// jQuery( this ).unbind( event, handler ); +// return fn.apply( this, arguments ); +// }) : fn; +// +// return type === "unload" && name !== "one" ? +// this.one( type, data, fn ) : +// this.each(function() { +// jQuery.event.add( this, type, handler, data ); +// }); +// }; +// }); + +jQuery.fn[ "bind" ] = function( type, data, fn ) { + /// + /// Binds a handler to one or more events for each matched element. Can also bind custom events. + /// + /// One or more event types separated by a space. Built-in event type values are: blur, focus, load, resize, scroll, unload, click, dblclick, mousedown, mouseup, mousemove, mouseover, mouseout, mouseenter, mouseleave, change, select, submit, keydown, keypress, keyup, error . + /// Additional data passed to the event handler as event.data + /// A function to bind to the event on each of the set of matched elements. function callback(eventObject) such that this corresponds to the dom element. + + // Handle object literals + if ( typeof type === "object" ) { + for ( var key in type ) { + this[ "bind" ](key, data, type[key], fn); + } + return this; + } + + if ( jQuery.isFunction( data ) ) { + fn = data; + data = undefined; + } + + var handler = "bind" === "one" ? jQuery.proxy( fn, function( event ) { + jQuery( this ).unbind( event, handler ); + return fn.apply( this, arguments ); + }) : fn; + + return type === "unload" && "bind" !== "one" ? + this.one( type, data, fn ) : + this.each(function() { + jQuery.event.add( this, type, handler, data ); + }); +}; + +jQuery.fn[ "one" ] = function( type, data, fn ) { + /// + /// Binds a handler to one or more events to be executed exactly once for each matched element. + /// + /// One or more event types separated by a space. Built-in event type values are: blur, focus, load, resize, scroll, unload, click, dblclick, mousedown, mouseup, mousemove, mouseover, mouseout, mouseenter, mouseleave, change, select, submit, keydown, keypress, keyup, error . + /// Additional data passed to the event handler as event.data + /// A function to bind to the event on each of the set of matched elements. function callback(eventObject) such that this corresponds to the dom element. + + // Handle object literals + if ( typeof type === "object" ) { + for ( var key in type ) { + this[ "one" ](key, data, type[key], fn); + } + return this; + } + + if ( jQuery.isFunction( data ) ) { + fn = data; + data = undefined; + } + + var handler = "one" === "one" ? jQuery.proxy( fn, function( event ) { + jQuery( this ).unbind( event, handler ); + return fn.apply( this, arguments ); + }) : fn; + + return type === "unload" && "one" !== "one" ? + this.one( type, data, fn ) : + this.each(function() { + jQuery.event.add( this, type, handler, data ); + }); +}; + +jQuery.fn.extend({ + unbind: function( type, fn ) { + /// + /// Unbinds a handler from one or more events for each matched element. + /// + /// One or more event types separated by a space. Built-in event type values are: blur, focus, load, resize, scroll, unload, click, dblclick, mousedown, mouseup, mousemove, mouseover, mouseout, mouseenter, mouseleave, change, select, submit, keydown, keypress, keyup, error . + /// A function to bind to the event on each of the set of matched elements. function callback(eventObject) such that this corresponds to the dom element. + + // Handle object literals + if ( typeof type === "object" && !type.preventDefault ) { + for ( var key in type ) { + this.unbind(key, type[key]); + } + return this; + } + + return this.each(function() { + jQuery.event.remove( this, type, fn ); + }); + }, + trigger: function( type, data ) { + /// + /// Triggers a type of event on every matched element. + /// + /// One or more event types separated by a space. Built-in event type values are: blur, focus, load, resize, scroll, unload, click, dblclick, mousedown, mouseup, mousemove, mouseover, mouseout, mouseenter, mouseleave, change, select, submit, keydown, keypress, keyup, error . + /// Additional data passed to the event handler as additional arguments. + /// This parameter is undocumented. + + return this.each(function() { + jQuery.event.trigger( type, data, this ); + }); + }, + + triggerHandler: function( type, data ) { + /// + /// Triggers all bound event handlers on an element for a specific event type without executing the browser's default actions. + /// + /// One or more event types separated by a space. Built-in event type values are: blur, focus, load, resize, scroll, unload, click, dblclick, mousedown, mouseup, mousemove, mouseover, mouseout, mouseenter, mouseleave, change, select, submit, keydown, keypress, keyup, error . + /// Additional data passed to the event handler as additional arguments. + /// This parameter is undocumented. + + if ( this[0] ) { + var event = jQuery.Event( type ); + event.preventDefault(); + event.stopPropagation(); + jQuery.event.trigger( event, data, this[0] ); + return event.result; + } + }, + + toggle: function( fn ) { + /// + /// Toggles among two or more function calls every other click. + /// + /// The functions among which to toggle execution + + // Save reference to arguments for access in closure + var args = arguments, i = 1; + + // link all the functions, so any of them can unbind this click handler + while ( i < args.length ) { + jQuery.proxy( fn, args[ i++ ] ); + } + + return this.click( jQuery.proxy( fn, function( event ) { + // Figure out which function to execute + var lastToggle = ( jQuery.data( this, "lastToggle" + fn.guid ) || 0 ) % i; + jQuery.data( this, "lastToggle" + fn.guid, lastToggle + 1 ); + + // Make sure that clicks stop + event.preventDefault(); + + // and execute the function + return args[ lastToggle ].apply( this, arguments ) || false; + })); + }, + + hover: function( fnOver, fnOut ) { + /// + /// Simulates hovering (moving the mouse on or off of an object). + /// + /// The function to fire when the mouse is moved over a matched element. + /// The function to fire when the mouse is moved off of a matched element. + + return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver ); + } +}); + +// jQuery.each(["live", "die"], function( i, name ) { +// jQuery.fn[ name ] = function( types, data, fn ) { +// var type, i = 0; +// +// if ( jQuery.isFunction( data ) ) { +// fn = data; +// data = undefined; +// } +// +// types = (types || "").split( /\s+/ ); +// +// while ( (type = types[ i++ ]) != null ) { +// type = type === "focus" ? "focusin" : // focus --> focusin +// type === "blur" ? "focusout" : // blur --> focusout +// type === "hover" ? types.push("mouseleave") && "mouseenter" : // hover support +// type; +// +// if ( name === "live" ) { +// // bind live handler +// jQuery( this.context ).bind( liveConvert( type, this.selector ), { +// data: data, selector: this.selector, live: type +// }, fn ); +// +// } else { +// // unbind live handler +// jQuery( this.context ).unbind( liveConvert( type, this.selector ), fn ? { guid: fn.guid + this.selector + type } : null ); +// } +// } +// +// return this; +// } +// }); + +jQuery.fn[ "live" ] = function( types, data, fn ) { + /// + /// Attach a handler to the event for all elements which match the current selector, now or + /// in the future. + /// + /// + /// A string containing a JavaScript event type, such as "click" or "keydown". + /// + /// + /// A map of data that will be passed to the event handler. + /// + /// + /// A function to execute at the time the event is triggered. + /// + /// + + var type, i = 0; + + if ( jQuery.isFunction( data ) ) { + fn = data; + data = undefined; + } + + types = (types || "").split( /\s+/ ); + + while ( (type = types[ i++ ]) != null ) { + type = type === "focus" ? "focusin" : // focus --> focusin + type === "blur" ? "focusout" : // blur --> focusout + type === "hover" ? types.push("mouseleave") && "mouseenter" : // hover support + type; + + if ( "live" === "live" ) { + // bind live handler + jQuery( this.context ).bind( liveConvert( type, this.selector ), { + data: data, selector: this.selector, live: type + }, fn ); + + } else { + // unbind live handler + jQuery( this.context ).unbind( liveConvert( type, this.selector ), fn ? { guid: fn.guid + this.selector + type } : null ); + } + } + + return this; +} + +jQuery.fn[ "die" ] = function( types, data, fn ) { + /// + /// Remove all event handlers previously attached using .live() from the elements. + /// + /// + /// A string containing a JavaScript event type, such as click or keydown. + /// + /// + /// The function that is to be no longer executed. + /// + /// + + var type, i = 0; + + if ( jQuery.isFunction( data ) ) { + fn = data; + data = undefined; + } + + types = (types || "").split( /\s+/ ); + + while ( (type = types[ i++ ]) != null ) { + type = type === "focus" ? "focusin" : // focus --> focusin + type === "blur" ? "focusout" : // blur --> focusout + type === "hover" ? types.push("mouseleave") && "mouseenter" : // hover support + type; + + if ( "die" === "live" ) { + // bind live handler + jQuery( this.context ).bind( liveConvert( type, this.selector ), { + data: data, selector: this.selector, live: type + }, fn ); + + } else { + // unbind live handler + jQuery( this.context ).unbind( liveConvert( type, this.selector ), fn ? { guid: fn.guid + this.selector + type } : null ); + } + } + + return this; +} + +function liveHandler( event ) { + var stop, elems = [], selectors = [], args = arguments, + related, match, fn, elem, j, i, l, data, + live = jQuery.extend({}, jQuery.data( this, "events" ).live); + + // Make sure we avoid non-left-click bubbling in Firefox (#3861) + if ( event.button && event.type === "click" ) { + return; + } + + for ( j in live ) { + fn = live[j]; + if ( fn.live === event.type || + fn.altLive && jQuery.inArray(event.type, fn.altLive) > -1 ) { + + data = fn.data; + if ( !(data.beforeFilter && data.beforeFilter[event.type] && + !data.beforeFilter[event.type](event)) ) { + selectors.push( fn.selector ); + } + } else { + delete live[j]; + } + } + + match = jQuery( event.target ).closest( selectors, event.currentTarget ); + + for ( i = 0, l = match.length; i < l; i++ ) { + for ( j in live ) { + fn = live[j]; + elem = match[i].elem; + related = null; + + if ( match[i].selector === fn.selector ) { + // Those two events require additional checking + if ( fn.live === "mouseenter" || fn.live === "mouseleave" ) { + related = jQuery( event.relatedTarget ).closest( fn.selector )[0]; + } + + if ( !related || related !== elem ) { + elems.push({ elem: elem, fn: fn }); + } + } + } + } + + for ( i = 0, l = elems.length; i < l; i++ ) { + match = elems[i]; + event.currentTarget = match.elem; + event.data = match.fn.data; + if ( match.fn.apply( match.elem, args ) === false ) { + stop = false; + break; + } + } + + return stop; +} + +function liveConvert( type, selector ) { + return "live." + (type ? type + "." : "") + selector.replace(/\./g, "`").replace(/ /g, "&"); +} + +// jQuery.each( ("blur focus focusin focusout load resize scroll unload click dblclick " + +// "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " + +// "change select submit keydown keypress keyup error").split(" "), function( i, name ) { +// +// // Handle event binding +// jQuery.fn[ name ] = function( fn ) { +// return fn ? this.bind( name, fn ) : this.trigger( name ); +// }; +// +// if ( jQuery.attrFn ) { +// jQuery.attrFn[ name ] = true; +// } +// }); + +jQuery.fn[ "blur" ] = function( fn ) { + /// + /// 1: blur() - Triggers the blur event of each matched element. + /// 2: blur(fn) - Binds a function to the blur event of each matched element. + /// + /// The function to execute. + /// + + return fn ? this.bind( "blur", fn ) : this.trigger( "blur" ); +}; + +jQuery.fn[ "focus" ] = function( fn ) { + /// + /// 1: focus() - Triggers the focus event of each matched element. + /// 2: focus(fn) - Binds a function to the focus event of each matched element. + /// + /// The function to execute. + /// + + return fn ? this.bind( "focus", fn ) : this.trigger( "focus" ); +}; + +jQuery.fn[ "focusin" ] = function( fn ) { + /// + /// Bind an event handler to the "focusin" JavaScript event. + /// + /// + /// A function to execute each time the event is triggered. + /// + /// + + return fn ? this.bind( "focusin", fn ) : this.trigger( "focusin" ); +}; + +jQuery.fn[ "focusout" ] = function( fn ) { + /// + /// Bind an event handler to the "focusout" JavaScript event. + /// + /// + /// A function to execute each time the event is triggered. + /// + /// + + return fn ? this.bind( "focusout", fn ) : this.trigger( "focusout" ); +}; + +jQuery.fn[ "load" ] = function( fn ) { + /// + /// 1: load() - Triggers the load event of each matched element. + /// 2: load(fn) - Binds a function to the load event of each matched element. + /// + /// The function to execute. + /// + + return fn ? this.bind( "load", fn ) : this.trigger( "load" ); +}; + +jQuery.fn[ "resize" ] = function( fn ) { + /// + /// 1: resize() - Triggers the resize event of each matched element. + /// 2: resize(fn) - Binds a function to the resize event of each matched element. + /// + /// The function to execute. + /// + + return fn ? this.bind( "resize", fn ) : this.trigger( "resize" ); +}; + +jQuery.fn[ "scroll" ] = function( fn ) { + /// + /// 1: scroll() - Triggers the scroll event of each matched element. + /// 2: scroll(fn) - Binds a function to the scroll event of each matched element. + /// + /// The function to execute. + /// + + return fn ? this.bind( "scroll", fn ) : this.trigger( "scroll" ); +}; + +jQuery.fn[ "unload" ] = function( fn ) { + /// + /// 1: unload() - Triggers the unload event of each matched element. + /// 2: unload(fn) - Binds a function to the unload event of each matched element. + /// + /// The function to execute. + /// + + return fn ? this.bind( "unload", fn ) : this.trigger( "unload" ); +}; + +jQuery.fn[ "click" ] = function( fn ) { + /// + /// 1: click() - Triggers the click event of each matched element. + /// 2: click(fn) - Binds a function to the click event of each matched element. + /// + /// The function to execute. + /// + + return fn ? this.bind( "click", fn ) : this.trigger( "click" ); +}; + +jQuery.fn[ "dblclick" ] = function( fn ) { + /// + /// 1: dblclick() - Triggers the dblclick event of each matched element. + /// 2: dblclick(fn) - Binds a function to the dblclick event of each matched element. + /// + /// The function to execute. + /// + + return fn ? this.bind( "dblclick", fn ) : this.trigger( "dblclick" ); +}; + +jQuery.fn[ "mousedown" ] = function( fn ) { + /// + /// Binds a function to the mousedown event of each matched element. + /// + /// The function to execute. + /// + + return fn ? this.bind( "mousedown", fn ) : this.trigger( "mousedown" ); +}; + +jQuery.fn[ "mouseup" ] = function( fn ) { + /// + /// Bind a function to the mouseup event of each matched element. + /// + /// The function to execute. + /// + + return fn ? this.bind( "mouseup", fn ) : this.trigger( "mouseup" ); +}; + +jQuery.fn[ "mousemove" ] = function( fn ) { + /// + /// Bind a function to the mousemove event of each matched element. + /// + /// The function to execute. + /// + + return fn ? this.bind( "mousemove", fn ) : this.trigger( "mousemove" ); +}; + +jQuery.fn[ "mouseover" ] = function( fn ) { + /// + /// Bind a function to the mouseover event of each matched element. + /// + /// The function to execute. + /// + + return fn ? this.bind( "mouseover", fn ) : this.trigger( "mouseover" ); +}; + +jQuery.fn[ "mouseout" ] = function( fn ) { + /// + /// Bind a function to the mouseout event of each matched element. + /// + /// The function to execute. + /// + + return fn ? this.bind( "mouseout", fn ) : this.trigger( "mouseout" ); +}; + +jQuery.fn[ "mouseenter" ] = function( fn ) { + /// + /// Bind a function to the mouseenter event of each matched element. + /// + /// The function to execute. + /// + + return fn ? this.bind( "mouseenter", fn ) : this.trigger( "mouseenter" ); +}; + +jQuery.fn[ "mouseleave" ] = function( fn ) { + /// + /// Bind a function to the mouseleave event of each matched element. + /// + /// The function to execute. + /// + + return fn ? this.bind( "mouseleave", fn ) : this.trigger( "mouseleave" ); +}; + +jQuery.fn[ "change" ] = function( fn ) { + /// + /// 1: change() - Triggers the change event of each matched element. + /// 2: change(fn) - Binds a function to the change event of each matched element. + /// + /// The function to execute. + /// + + return fn ? this.bind( "change", fn ) : this.trigger( "change" ); +}; + +jQuery.fn[ "select" ] = function( fn ) { + /// + /// 1: select() - Triggers the select event of each matched element. + /// 2: select(fn) - Binds a function to the select event of each matched element. + /// + /// The function to execute. + /// + + return fn ? this.bind( "select", fn ) : this.trigger( "select" ); +}; + +jQuery.fn[ "submit" ] = function( fn ) { + /// + /// 1: submit() - Triggers the submit event of each matched element. + /// 2: submit(fn) - Binds a function to the submit event of each matched element. + /// + /// The function to execute. + /// + + return fn ? this.bind( "submit", fn ) : this.trigger( "submit" ); +}; + +jQuery.fn[ "keydown" ] = function( fn ) { + /// + /// 1: keydown() - Triggers the keydown event of each matched element. + /// 2: keydown(fn) - Binds a function to the keydown event of each matched element. + /// + /// The function to execute. + /// + + return fn ? this.bind( "keydown", fn ) : this.trigger( "keydown" ); +}; + +jQuery.fn[ "keypress" ] = function( fn ) { + /// + /// 1: keypress() - Triggers the keypress event of each matched element. + /// 2: keypress(fn) - Binds a function to the keypress event of each matched element. + /// + /// The function to execute. + /// + + return fn ? this.bind( "keypress", fn ) : this.trigger( "keypress" ); +}; + +jQuery.fn[ "keyup" ] = function( fn ) { + /// + /// 1: keyup() - Triggers the keyup event of each matched element. + /// 2: keyup(fn) - Binds a function to the keyup event of each matched element. + /// + /// The function to execute. + /// + + return fn ? this.bind( "keyup", fn ) : this.trigger( "keyup" ); +}; + +jQuery.fn[ "error" ] = function( fn ) { + /// + /// 1: error() - Triggers the error event of each matched element. + /// 2: error(fn) - Binds a function to the error event of each matched element. + /// + /// The function to execute. + /// + + return fn ? this.bind( "error", fn ) : this.trigger( "error" ); +}; + +// Prevent memory leaks in IE +// Window isn't included so as not to unbind existing unload events +// More info: +// - http://isaacschlueter.com/2006/10/msie-memory-leaks/ +if ( window.attachEvent && !window.addEventListener ) { + window.attachEvent("onunload", function() { + for ( var id in jQuery.cache ) { + if ( jQuery.cache[ id ].handle ) { + // Try/Catch is to handle iframes being unloaded, see #4280 + try { + jQuery.event.remove( jQuery.cache[ id ].handle.elem ); + } catch(e) {} + } + } + }); +} +/*! + * Sizzle CSS Selector Engine - v1.0 + * Copyright 2009, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * More information: http://sizzlejs.com/ + */ +(function(){ + +var chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g, + done = 0, + toString = Object.prototype.toString, + hasDuplicate = false, + baseHasDuplicate = true; + +// Here we check if the JavaScript engine is using some sort of +// optimization where it does not always call our comparision +// function. If that is the case, discard the hasDuplicate value. +// Thus far that includes Google Chrome. +[0, 0].sort(function(){ + baseHasDuplicate = false; + return 0; +}); + +var Sizzle = function(selector, context, results, seed) { + results = results || []; + var origContext = context = context || document; + + if ( context.nodeType !== 1 && context.nodeType !== 9 ) { + return []; + } + + if ( !selector || typeof selector !== "string" ) { + return results; + } + + var parts = [], m, set, checkSet, extra, prune = true, contextXML = isXML(context), + soFar = selector; + + // Reset the position of the chunker regexp (start from head) + while ( (chunker.exec(""), m = chunker.exec(soFar)) !== null ) { + soFar = m[3]; + + parts.push( m[1] ); + + if ( m[2] ) { + extra = m[3]; + break; + } + } + + if ( parts.length > 1 && origPOS.exec( selector ) ) { + if ( parts.length === 2 && Expr.relative[ parts[0] ] ) { + set = posProcess( parts[0] + parts[1], context ); + } else { + set = Expr.relative[ parts[0] ] ? + [ context ] : + Sizzle( parts.shift(), context ); + + while ( parts.length ) { + selector = parts.shift(); + + if ( Expr.relative[ selector ] ) { + selector += parts.shift(); + } + + set = posProcess( selector, set ); + } + } + } else { + // Take a shortcut and set the context if the root selector is an ID + // (but not if it'll be faster if the inner selector is an ID) + if ( !seed && parts.length > 1 && context.nodeType === 9 && !contextXML && + Expr.match.ID.test(parts[0]) && !Expr.match.ID.test(parts[parts.length - 1]) ) { + var ret = Sizzle.find( parts.shift(), context, contextXML ); + context = ret.expr ? Sizzle.filter( ret.expr, ret.set )[0] : ret.set[0]; + } + + if ( context ) { + var ret = seed ? + { expr: parts.pop(), set: makeArray(seed) } : + Sizzle.find( parts.pop(), parts.length === 1 && (parts[0] === "~" || parts[0] === "+") && context.parentNode ? context.parentNode : context, contextXML ); + set = ret.expr ? Sizzle.filter( ret.expr, ret.set ) : ret.set; + + if ( parts.length > 0 ) { + checkSet = makeArray(set); + } else { + prune = false; + } + + while ( parts.length ) { + var cur = parts.pop(), pop = cur; + + if ( !Expr.relative[ cur ] ) { + cur = ""; + } else { + pop = parts.pop(); + } + + if ( pop == null ) { + pop = context; + } + + Expr.relative[ cur ]( checkSet, pop, contextXML ); + } + } else { + checkSet = parts = []; + } + } + + if ( !checkSet ) { + checkSet = set; + } + + if ( !checkSet ) { + Sizzle.error( cur || selector ); + } + + if ( toString.call(checkSet) === "[object Array]" ) { + if ( !prune ) { + results.push.apply( results, checkSet ); + } else if ( context && context.nodeType === 1 ) { + for ( var i = 0; checkSet[i] != null; i++ ) { + if ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && contains(context, checkSet[i])) ) { + results.push( set[i] ); + } + } + } else { + for ( var i = 0; checkSet[i] != null; i++ ) { + if ( checkSet[i] && checkSet[i].nodeType === 1 ) { + results.push( set[i] ); + } + } + } + } else { + makeArray( checkSet, results ); + } + + if ( extra ) { + Sizzle( extra, origContext, results, seed ); + Sizzle.uniqueSort( results ); + } + + return results; +}; + +Sizzle.uniqueSort = function(results){ + /// + /// Removes all duplicate elements from an array of elements. + /// + /// The array to translate + /// The array after translation. + + if ( sortOrder ) { + hasDuplicate = baseHasDuplicate; + results.sort(sortOrder); + + if ( hasDuplicate ) { + for ( var i = 1; i < results.length; i++ ) { + if ( results[i] === results[i-1] ) { + results.splice(i--, 1); + } + } + } + } + + return results; +}; + +Sizzle.matches = function(expr, set){ + return Sizzle(expr, null, null, set); +}; + +Sizzle.find = function(expr, context, isXML){ + var set, match; + + if ( !expr ) { + return []; + } + + for ( var i = 0, l = Expr.order.length; i < l; i++ ) { + var type = Expr.order[i], match; + + if ( (match = Expr.leftMatch[ type ].exec( expr )) ) { + var left = match[1]; + match.splice(1,1); + + if ( left.substr( left.length - 1 ) !== "\\" ) { + match[1] = (match[1] || "").replace(/\\/g, ""); + set = Expr.find[ type ]( match, context, isXML ); + if ( set != null ) { + expr = expr.replace( Expr.match[ type ], "" ); + break; + } + } + } + } + + if ( !set ) { + set = context.getElementsByTagName("*"); + } + + return {set: set, expr: expr}; +}; + +Sizzle.filter = function(expr, set, inplace, not){ + var old = expr, result = [], curLoop = set, match, anyFound, + isXMLFilter = set && set[0] && isXML(set[0]); + + while ( expr && set.length ) { + for ( var type in Expr.filter ) { + if ( (match = Expr.leftMatch[ type ].exec( expr )) != null && match[2] ) { + var filter = Expr.filter[ type ], found, item, left = match[1]; + anyFound = false; + + match.splice(1,1); + + if ( left.substr( left.length - 1 ) === "\\" ) { + continue; + } + + if ( curLoop === result ) { + result = []; + } + + if ( Expr.preFilter[ type ] ) { + match = Expr.preFilter[ type ]( match, curLoop, inplace, result, not, isXMLFilter ); + + if ( !match ) { + anyFound = found = true; + } else if ( match === true ) { + continue; + } + } + + if ( match ) { + for ( var i = 0; (item = curLoop[i]) != null; i++ ) { + if ( item ) { + found = filter( item, match, i, curLoop ); + var pass = not ^ !!found; + + if ( inplace && found != null ) { + if ( pass ) { + anyFound = true; + } else { + curLoop[i] = false; + } + } else if ( pass ) { + result.push( item ); + anyFound = true; + } + } + } + } + + if ( found !== undefined ) { + if ( !inplace ) { + curLoop = result; + } + + expr = expr.replace( Expr.match[ type ], "" ); + + if ( !anyFound ) { + return []; + } + + break; + } + } + } + + // Improper expression + if ( expr === old ) { + if ( anyFound == null ) { + Sizzle.error( expr ); + } else { + break; + } + } + + old = expr; + } + + return curLoop; +}; + +Sizzle.error = function( msg ) { + throw "Syntax error, unrecognized expression: " + msg; +}; + +var Expr = Sizzle.selectors = { + order: [ "ID", "NAME", "TAG" ], + match: { + ID: /#((?:[\w\u00c0-\uFFFF-]|\\.)+)/, + CLASS: /\.((?:[\w\u00c0-\uFFFF-]|\\.)+)/, + NAME: /\[name=['"]*((?:[\w\u00c0-\uFFFF-]|\\.)+)['"]*\]/, + ATTR: /\[\s*((?:[\w\u00c0-\uFFFF-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/, + TAG: /^((?:[\w\u00c0-\uFFFF\*-]|\\.)+)/, + CHILD: /:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/, + POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/, + PSEUDO: /:((?:[\w\u00c0-\uFFFF-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/ + }, + leftMatch: {}, + attrMap: { + "class": "className", + "for": "htmlFor" + }, + attrHandle: { + href: function(elem){ + return elem.getAttribute("href"); + } + }, + relative: { + "+": function(checkSet, part){ + var isPartStr = typeof part === "string", + isTag = isPartStr && !/\W/.test(part), + isPartStrNotTag = isPartStr && !isTag; + + if ( isTag ) { + part = part.toLowerCase(); + } + + for ( var i = 0, l = checkSet.length, elem; i < l; i++ ) { + if ( (elem = checkSet[i]) ) { + while ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {} + + checkSet[i] = isPartStrNotTag || elem && elem.nodeName.toLowerCase() === part ? + elem || false : + elem === part; + } + } + + if ( isPartStrNotTag ) { + Sizzle.filter( part, checkSet, true ); + } + }, + ">": function(checkSet, part){ + var isPartStr = typeof part === "string"; + + if ( isPartStr && !/\W/.test(part) ) { + part = part.toLowerCase(); + + for ( var i = 0, l = checkSet.length; i < l; i++ ) { + var elem = checkSet[i]; + if ( elem ) { + var parent = elem.parentNode; + checkSet[i] = parent.nodeName.toLowerCase() === part ? parent : false; + } + } + } else { + for ( var i = 0, l = checkSet.length; i < l; i++ ) { + var elem = checkSet[i]; + if ( elem ) { + checkSet[i] = isPartStr ? + elem.parentNode : + elem.parentNode === part; + } + } + + if ( isPartStr ) { + Sizzle.filter( part, checkSet, true ); + } + } + }, + "": function(checkSet, part, isXML){ + var doneName = done++, checkFn = dirCheck; + + if ( typeof part === "string" && !/\W/.test(part) ) { + var nodeCheck = part = part.toLowerCase(); + checkFn = dirNodeCheck; + } + + checkFn("parentNode", part, doneName, checkSet, nodeCheck, isXML); + }, + "~": function(checkSet, part, isXML){ + var doneName = done++, checkFn = dirCheck; + + if ( typeof part === "string" && !/\W/.test(part) ) { + var nodeCheck = part = part.toLowerCase(); + checkFn = dirNodeCheck; + } + + checkFn("previousSibling", part, doneName, checkSet, nodeCheck, isXML); + } + }, + find: { + ID: function(match, context, isXML){ + if ( typeof context.getElementById !== "undefined" && !isXML ) { + var m = context.getElementById(match[1]); + return m ? [m] : []; + } + }, + NAME: function(match, context){ + if ( typeof context.getElementsByName !== "undefined" ) { + var ret = [], results = context.getElementsByName(match[1]); + + for ( var i = 0, l = results.length; i < l; i++ ) { + if ( results[i].getAttribute("name") === match[1] ) { + ret.push( results[i] ); + } + } + + return ret.length === 0 ? null : ret; + } + }, + TAG: function(match, context){ + return context.getElementsByTagName(match[1]); + } + }, + preFilter: { + CLASS: function(match, curLoop, inplace, result, not, isXML){ + match = " " + match[1].replace(/\\/g, "") + " "; + + if ( isXML ) { + return match; + } + + for ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) { + if ( elem ) { + if ( not ^ (elem.className && (" " + elem.className + " ").replace(/[\t\n]/g, " ").indexOf(match) >= 0) ) { + if ( !inplace ) { + result.push( elem ); + } + } else if ( inplace ) { + curLoop[i] = false; + } + } + } + + return false; + }, + ID: function(match){ + return match[1].replace(/\\/g, ""); + }, + TAG: function(match, curLoop){ + return match[1].toLowerCase(); + }, + CHILD: function(match){ + if ( match[1] === "nth" ) { + // parse equations like 'even', 'odd', '5', '2n', '3n+2', '4n-1', '-n+6' + var test = /(-?)(\d*)n((?:\+|-)?\d*)/.exec( + match[2] === "even" && "2n" || match[2] === "odd" && "2n+1" || + !/\D/.test( match[2] ) && "0n+" + match[2] || match[2]); + + // calculate the numbers (first)n+(last) including if they are negative + match[2] = (test[1] + (test[2] || 1)) - 0; + match[3] = test[3] - 0; + } + + // TODO: Move to normal caching system + match[0] = done++; + + return match; + }, + ATTR: function(match, curLoop, inplace, result, not, isXML){ + var name = match[1].replace(/\\/g, ""); + + if ( !isXML && Expr.attrMap[name] ) { + match[1] = Expr.attrMap[name]; + } + + if ( match[2] === "~=" ) { + match[4] = " " + match[4] + " "; + } + + return match; + }, + PSEUDO: function(match, curLoop, inplace, result, not){ + if ( match[1] === "not" ) { + // If we're dealing with a complex expression, or a simple one + if ( ( chunker.exec(match[3]) || "" ).length > 1 || /^\w/.test(match[3]) ) { + match[3] = Sizzle(match[3], null, null, curLoop); + } else { + var ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not); + if ( !inplace ) { + result.push.apply( result, ret ); + } + return false; + } + } else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( match[0] ) ) { + return true; + } + + return match; + }, + POS: function(match){ + match.unshift( true ); + return match; + } + }, + filters: { + enabled: function(elem){ + return elem.disabled === false && elem.type !== "hidden"; + }, + disabled: function(elem){ + return elem.disabled === true; + }, + checked: function(elem){ + return elem.checked === true; + }, + selected: function(elem){ + // Accessing this property makes selected-by-default + // options in Safari work properly + elem.parentNode.selectedIndex; + return elem.selected === true; + }, + parent: function(elem){ + return !!elem.firstChild; + }, + empty: function(elem){ + return !elem.firstChild; + }, + has: function(elem, i, match){ + /// + /// Internal use only; use hasClass('class') + /// + /// + + return !!Sizzle( match[3], elem ).length; + }, + header: function(elem){ + return /h\d/i.test( elem.nodeName ); + }, + text: function(elem){ + return "text" === elem.type; + }, + radio: function(elem){ + return "radio" === elem.type; + }, + checkbox: function(elem){ + return "checkbox" === elem.type; + }, + file: function(elem){ + return "file" === elem.type; + }, + password: function(elem){ + return "password" === elem.type; + }, + submit: function(elem){ + return "submit" === elem.type; + }, + image: function(elem){ + return "image" === elem.type; + }, + reset: function(elem){ + return "reset" === elem.type; + }, + button: function(elem){ + return "button" === elem.type || elem.nodeName.toLowerCase() === "button"; + }, + input: function(elem){ + return /input|select|textarea|button/i.test(elem.nodeName); + } + }, + setFilters: { + first: function(elem, i){ + return i === 0; + }, + last: function(elem, i, match, array){ + return i === array.length - 1; + }, + even: function(elem, i){ + return i % 2 === 0; + }, + odd: function(elem, i){ + return i % 2 === 1; + }, + lt: function(elem, i, match){ + return i < match[3] - 0; + }, + gt: function(elem, i, match){ + return i > match[3] - 0; + }, + nth: function(elem, i, match){ + return match[3] - 0 === i; + }, + eq: function(elem, i, match){ + return match[3] - 0 === i; + } + }, + filter: { + PSEUDO: function(elem, match, i, array){ + var name = match[1], filter = Expr.filters[ name ]; + + if ( filter ) { + return filter( elem, i, match, array ); + } else if ( name === "contains" ) { + return (elem.textContent || elem.innerText || getText([ elem ]) || "").indexOf(match[3]) >= 0; + } else if ( name === "not" ) { + var not = match[3]; + + for ( var i = 0, l = not.length; i < l; i++ ) { + if ( not[i] === elem ) { + return false; + } + } + + return true; + } else { + Sizzle.error( "Syntax error, unrecognized expression: " + name ); + } + }, + CHILD: function(elem, match){ + var type = match[1], node = elem; + switch (type) { + case 'only': + case 'first': + while ( (node = node.previousSibling) ) { + if ( node.nodeType === 1 ) { + return false; + } + } + if ( type === "first" ) { + return true; + } + node = elem; + case 'last': + while ( (node = node.nextSibling) ) { + if ( node.nodeType === 1 ) { + return false; + } + } + return true; + case 'nth': + var first = match[2], last = match[3]; + + if ( first === 1 && last === 0 ) { + return true; + } + + var doneName = match[0], + parent = elem.parentNode; + + if ( parent && (parent.sizcache !== doneName || !elem.nodeIndex) ) { + var count = 0; + for ( node = parent.firstChild; node; node = node.nextSibling ) { + if ( node.nodeType === 1 ) { + node.nodeIndex = ++count; + } + } + parent.sizcache = doneName; + } + + var diff = elem.nodeIndex - last; + if ( first === 0 ) { + return diff === 0; + } else { + return ( diff % first === 0 && diff / first >= 0 ); + } + } + }, + ID: function(elem, match){ + return elem.nodeType === 1 && elem.getAttribute("id") === match; + }, + TAG: function(elem, match){ + return (match === "*" && elem.nodeType === 1) || elem.nodeName.toLowerCase() === match; + }, + CLASS: function(elem, match){ + return (" " + (elem.className || elem.getAttribute("class")) + " ") + .indexOf( match ) > -1; + }, + ATTR: function(elem, match){ + var name = match[1], + result = Expr.attrHandle[ name ] ? + Expr.attrHandle[ name ]( elem ) : + elem[ name ] != null ? + elem[ name ] : + elem.getAttribute( name ), + value = result + "", + type = match[2], + check = match[4]; + + return result == null ? + type === "!=" : + type === "=" ? + value === check : + type === "*=" ? + value.indexOf(check) >= 0 : + type === "~=" ? + (" " + value + " ").indexOf(check) >= 0 : + !check ? + value && result !== false : + type === "!=" ? + value !== check : + type === "^=" ? + value.indexOf(check) === 0 : + type === "$=" ? + value.substr(value.length - check.length) === check : + type === "|=" ? + value === check || value.substr(0, check.length + 1) === check + "-" : + false; + }, + POS: function(elem, match, i, array){ + var name = match[2], filter = Expr.setFilters[ name ]; + + if ( filter ) { + return filter( elem, i, match, array ); + } + } + } +}; + +var origPOS = Expr.match.POS; + +for ( var type in Expr.match ) { + Expr.match[ type ] = new RegExp( Expr.match[ type ].source + /(?![^\[]*\])(?![^\(]*\))/.source ); + Expr.leftMatch[ type ] = new RegExp( /(^(?:.|\r|\n)*?)/.source + Expr.match[ type ].source.replace(/\\(\d+)/g, function(all, num){ + return "\\" + (num - 0 + 1); + })); +} + +var makeArray = function(array, results) { + array = Array.prototype.slice.call( array, 0 ); + + if ( results ) { + results.push.apply( results, array ); + return results; + } + + return array; +}; + +// Perform a simple check to determine if the browser is capable of +// converting a NodeList to an array using builtin methods. +try { + Array.prototype.slice.call( document.documentElement.childNodes, 0 ); + +// Provide a fallback method if it does not work +} catch(e){ + makeArray = function(array, results) { + var ret = results || []; + + if ( toString.call(array) === "[object Array]" ) { + Array.prototype.push.apply( ret, array ); + } else { + if ( typeof array.length === "number" ) { + for ( var i = 0, l = array.length; i < l; i++ ) { + ret.push( array[i] ); + } + } else { + for ( var i = 0; array[i]; i++ ) { + ret.push( array[i] ); + } + } + } + + return ret; + }; +} + +var sortOrder; + +if ( document.documentElement.compareDocumentPosition ) { + sortOrder = function( a, b ) { + if ( !a.compareDocumentPosition || !b.compareDocumentPosition ) { + if ( a == b ) { + hasDuplicate = true; + } + return a.compareDocumentPosition ? -1 : 1; + } + + var ret = a.compareDocumentPosition(b) & 4 ? -1 : a === b ? 0 : 1; + if ( ret === 0 ) { + hasDuplicate = true; + } + return ret; + }; +} else if ( "sourceIndex" in document.documentElement ) { + sortOrder = function( a, b ) { + if ( !a.sourceIndex || !b.sourceIndex ) { + if ( a == b ) { + hasDuplicate = true; + } + return a.sourceIndex ? -1 : 1; + } + + var ret = a.sourceIndex - b.sourceIndex; + if ( ret === 0 ) { + hasDuplicate = true; + } + return ret; + }; +} else if ( document.createRange ) { + sortOrder = function( a, b ) { + if ( !a.ownerDocument || !b.ownerDocument ) { + if ( a == b ) { + hasDuplicate = true; + } + return a.ownerDocument ? -1 : 1; + } + + var aRange = a.ownerDocument.createRange(), bRange = b.ownerDocument.createRange(); + aRange.setStart(a, 0); + aRange.setEnd(a, 0); + bRange.setStart(b, 0); + bRange.setEnd(b, 0); + var ret = aRange.compareBoundaryPoints(Range.START_TO_END, bRange); + if ( ret === 0 ) { + hasDuplicate = true; + } + return ret; + }; +} + +// Utility function for retreiving the text value of an array of DOM nodes +function getText( elems ) { + var ret = "", elem; + + for ( var i = 0; elems[i]; i++ ) { + elem = elems[i]; + + // Get the text from text nodes and CDATA nodes + if ( elem.nodeType === 3 || elem.nodeType === 4 ) { + ret += elem.nodeValue; + + // Traverse everything else, except comment nodes + } else if ( elem.nodeType !== 8 ) { + ret += getText( elem.childNodes ); + } + } + + return ret; +} + +// [vsdoc] The following function has been modified for IntelliSense. +// Check to see if the browser returns elements by name when +// querying by getElementById (and provide a workaround) +(function(){ + // We're going to inject a fake input element with a specified name + // var form = document.createElement("div"), + // id = "script" + (new Date).getTime(); + // form.innerHTML = ""; + + // // Inject it into the root element, check its status, and remove it quickly + // var root = document.documentElement; + // root.insertBefore( form, root.firstChild ); + + // The workaround has to do additional checks after a getElementById + // Which slows things down for other browsers (hence the branching) + // if ( document.getElementById( id ) ) { + Expr.find.ID = function(match, context, isXML){ + if ( typeof context.getElementById !== "undefined" && !isXML ) { + var m = context.getElementById(match[1]); + return m ? m.id === match[1] || typeof m.getAttributeNode !== "undefined" && m.getAttributeNode("id").nodeValue === match[1] ? [m] : undefined : []; + } + }; + + Expr.filter.ID = function(elem, match){ + var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id"); + return elem.nodeType === 1 && node && node.nodeValue === match; + }; + // } + + // root.removeChild( form ); + root = form = null; // release memory in IE +})(); + +// [vsdoc] The following function has been modified for IntelliSense. +(function(){ + // Check to see if the browser returns only elements + // when doing getElementsByTagName("*") + + // Create a fake element + // var div = document.createElement("div"); + // div.appendChild( document.createComment("") ); + + // Make sure no comments are found + // if ( div.getElementsByTagName("*").length > 0 ) { + Expr.find.TAG = function(match, context){ + var results = context.getElementsByTagName(match[1]); + + // Filter out possible comments + if ( match[1] === "*" ) { + var tmp = []; + + for ( var i = 0; results[i]; i++ ) { + if ( results[i].nodeType === 1 ) { + tmp.push( results[i] ); + } + } + + results = tmp; + } + + return results; + }; + // } + + // Check to see if an attribute returns normalized href attributes + // div.innerHTML = ""; + // if ( div.firstChild && typeof div.firstChild.getAttribute !== "undefined" && + // div.firstChild.getAttribute("href") !== "#" ) { + Expr.attrHandle.href = function(elem){ + return elem.getAttribute("href", 2); + }; + // } + + div = null; // release memory in IE +})(); + +if ( document.querySelectorAll ) { + (function(){ + var oldSizzle = Sizzle, div = document.createElement("div"); + div.innerHTML = "

"; + + // Safari can't handle uppercase or unicode characters when + // in quirks mode. + if ( div.querySelectorAll && div.querySelectorAll(".TEST").length === 0 ) { + return; + } + + Sizzle = function(query, context, extra, seed){ + context = context || document; + + // Only use querySelectorAll on non-XML documents + // (ID selectors don't work in non-HTML documents) + if ( !seed && context.nodeType === 9 && !isXML(context) ) { + try { + return makeArray( context.querySelectorAll(query), extra ); + } catch(e){} + } + + return oldSizzle(query, context, extra, seed); + }; + + for ( var prop in oldSizzle ) { + Sizzle[ prop ] = oldSizzle[ prop ]; + } + + div = null; // release memory in IE + })(); +} + +(function(){ + var div = document.createElement("div"); + + div.innerHTML = "
"; + + // Opera can't find a second classname (in 9.6) + // Also, make sure that getElementsByClassName actually exists + if ( !div.getElementsByClassName || div.getElementsByClassName("e").length === 0 ) { + return; + } + + // Safari caches class attributes, doesn't catch changes (in 3.2) + div.lastChild.className = "e"; + + if ( div.getElementsByClassName("e").length === 1 ) { + return; + } + + Expr.order.splice(1, 0, "CLASS"); + Expr.find.CLASS = function(match, context, isXML) { + if ( typeof context.getElementsByClassName !== "undefined" && !isXML ) { + return context.getElementsByClassName(match[1]); + } + }; + + div = null; // release memory in IE +})(); + +function dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) { + for ( var i = 0, l = checkSet.length; i < l; i++ ) { + var elem = checkSet[i]; + if ( elem ) { + elem = elem[dir]; + var match = false; + + while ( elem ) { + if ( elem.sizcache === doneName ) { + match = checkSet[elem.sizset]; + break; + } + + if ( elem.nodeType === 1 && !isXML ){ + elem.sizcache = doneName; + elem.sizset = i; + } + + if ( elem.nodeName.toLowerCase() === cur ) { + match = elem; + break; + } + + elem = elem[dir]; + } + + checkSet[i] = match; + } + } +} + +function dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) { + for ( var i = 0, l = checkSet.length; i < l; i++ ) { + var elem = checkSet[i]; + if ( elem ) { + elem = elem[dir]; + var match = false; + + while ( elem ) { + if ( elem.sizcache === doneName ) { + match = checkSet[elem.sizset]; + break; + } + + if ( elem.nodeType === 1 ) { + if ( !isXML ) { + elem.sizcache = doneName; + elem.sizset = i; + } + if ( typeof cur !== "string" ) { + if ( elem === cur ) { + match = true; + break; + } + + } else if ( Sizzle.filter( cur, [elem] ).length > 0 ) { + match = elem; + break; + } + } + + elem = elem[dir]; + } + + checkSet[i] = match; + } + } +} + +var contains = document.compareDocumentPosition ? function(a, b){ + /// + /// Check to see if a DOM node is within another DOM node. + /// + /// + /// The DOM element that may contain the other element. + /// + /// + /// The DOM node that may be contained by the other element. + /// + /// + + return a.compareDocumentPosition(b) & 16; +} : function(a, b){ + /// + /// Check to see if a DOM node is within another DOM node. + /// + /// + /// The DOM element that may contain the other element. + /// + /// + /// The DOM node that may be contained by the other element. + /// + /// + + return a !== b && (a.contains ? a.contains(b) : true); +}; + +var isXML = function(elem){ + /// + /// Determines if the parameter passed is an XML document. + /// + /// The object to test + /// True if the parameter is an XML document; otherwise false. + + // documentElement is verified for cases where it doesn't yet exist + // (such as loading iframes in IE - #4833) + var documentElement = (elem ? elem.ownerDocument || elem : 0).documentElement; + return documentElement ? documentElement.nodeName !== "HTML" : false; +}; + +var posProcess = function(selector, context){ + var tmpSet = [], later = "", match, + root = context.nodeType ? [context] : context; + + // Position selectors must be done after the filter + // And so must :not(positional) so we move all PSEUDOs to the end + while ( (match = Expr.match.PSEUDO.exec( selector )) ) { + later += match[0]; + selector = selector.replace( Expr.match.PSEUDO, "" ); + } + + selector = Expr.relative[selector] ? selector + "*" : selector; + + for ( var i = 0, l = root.length; i < l; i++ ) { + Sizzle( selector, root[i], tmpSet ); + } + + return Sizzle.filter( later, tmpSet ); +}; + +// EXPOSE +jQuery.find = Sizzle; +jQuery.expr = Sizzle.selectors; +jQuery.expr[":"] = jQuery.expr.filters; +jQuery.unique = Sizzle.uniqueSort; +jQuery.getText = getText; +jQuery.isXMLDoc = isXML; +jQuery.contains = contains; + +return; + +window.Sizzle = Sizzle; + +})(); +var runtil = /Until$/, + rparentsprev = /^(?:parents|prevUntil|prevAll)/, + // Note: This RegExp should be improved, or likely pulled from Sizzle + rmultiselector = /,/, + slice = Array.prototype.slice; + +// Implement the identical functionality for filter and not +var winnow = function( elements, qualifier, keep ) { + if ( jQuery.isFunction( qualifier ) ) { + return jQuery.grep(elements, function( elem, i ) { + return !!qualifier.call( elem, i, elem ) === keep; + }); + + } else if ( qualifier.nodeType ) { + return jQuery.grep(elements, function( elem, i ) { + return (elem === qualifier) === keep; + }); + + } else if ( typeof qualifier === "string" ) { + var filtered = jQuery.grep(elements, function( elem ) { + return elem.nodeType === 1; + }); + + if ( isSimple.test( qualifier ) ) { + return jQuery.filter(qualifier, filtered, !keep); + } else { + qualifier = jQuery.filter( qualifier, filtered ); + } + } + + return jQuery.grep(elements, function( elem, i ) { + return (jQuery.inArray( elem, qualifier ) >= 0) === keep; + }); +}; + +jQuery.fn.extend({ + find: function( selector ) { + /// + /// Searches for all elements that match the specified expression. + /// This method is a good way to find additional descendant + /// elements with which to process. + /// All searching is done using a jQuery expression. The expression can be + /// written using CSS 1-3 Selector syntax, or basic XPath. + /// Part of DOM/Traversing + /// + /// + /// + /// An expression to search with. + /// + /// + + var ret = this.pushStack( "", "find", selector ), length = 0; + + for ( var i = 0, l = this.length; i < l; i++ ) { + length = ret.length; + jQuery.find( selector, this[i], ret ); + + if ( i > 0 ) { + // Make sure that the results are unique + for ( var n = length; n < ret.length; n++ ) { + for ( var r = 0; r < length; r++ ) { + if ( ret[r] === ret[n] ) { + ret.splice(n--, 1); + break; + } + } + } + } + } + + return ret; + }, + + has: function( target ) { + /// + /// Reduce the set of matched elements to those that have a descendant that matches the + /// selector or DOM element. + /// + /// + /// A string containing a selector expression to match elements against. + /// + /// + + var targets = jQuery( target ); + return this.filter(function() { + for ( var i = 0, l = targets.length; i < l; i++ ) { + if ( jQuery.contains( this, targets[i] ) ) { + return true; + } + } + }); + }, + + not: function( selector ) { + /// + /// Removes any elements inside the array of elements from the set + /// of matched elements. This method is used to remove one or more + /// elements from a jQuery object. + /// Part of DOM/Traversing + /// + /// + /// A set of elements to remove from the jQuery set of matched elements. + /// + /// + + return this.pushStack( winnow(this, selector, false), "not", selector); + }, + + filter: function( selector ) { + /// + /// Removes all elements from the set of matched elements that do not + /// pass the specified filter. This method is used to narrow down + /// the results of a search. + /// }) + /// Part of DOM/Traversing + /// + /// + /// + /// A function to use for filtering + /// + /// + + return this.pushStack( winnow(this, selector, true), "filter", selector ); + }, + + is: function( selector ) { + /// + /// Checks the current selection against an expression and returns true, + /// if at least one element of the selection fits the given expression. + /// Does return false, if no element fits or the expression is not valid. + /// filter(String) is used internally, therefore all rules that apply there + /// apply here, too. + /// Part of DOM/Traversing + /// + /// + /// + /// The expression with which to filter + /// + + return !!selector && jQuery.filter( selector, this ).length > 0; + }, + + closest: function( selectors, context ) { + /// + /// Get a set of elements containing the closest parent element that matches the specified selector, the starting element included. + /// + /// + /// A string containing a selector expression to match elements against. + /// + /// + /// A DOM element within which a matching element may be found. If no context is passed + /// in then the context of the jQuery set will be used instead. + /// + /// + + if ( jQuery.isArray( selectors ) ) { + var ret = [], cur = this[0], match, matches = {}, selector; + + if ( cur && selectors.length ) { + for ( var i = 0, l = selectors.length; i < l; i++ ) { + selector = selectors[i]; + + if ( !matches[selector] ) { + matches[selector] = jQuery.expr.match.POS.test( selector ) ? + jQuery( selector, context || this.context ) : + selector; + } + } + + while ( cur && cur.ownerDocument && cur !== context ) { + for ( selector in matches ) { + match = matches[selector]; + + if ( match.jquery ? match.index(cur) > -1 : jQuery(cur).is(match) ) { + ret.push({ selector: selector, elem: cur }); + delete matches[selector]; + } + } + cur = cur.parentNode; + } + } + + return ret; + } + + var pos = jQuery.expr.match.POS.test( selectors ) ? + jQuery( selectors, context || this.context ) : null; + + return this.map(function( i, cur ) { + while ( cur && cur.ownerDocument && cur !== context ) { + if ( pos ? pos.index(cur) > -1 : jQuery(cur).is(selectors) ) { + return cur; + } + cur = cur.parentNode; + } + return null; + }); + }, + + // Determine the position of an element within + // the matched set of elements + index: function( elem ) { + /// + /// Searches every matched element for the object and returns + /// the index of the element, if found, starting with zero. + /// Returns -1 if the object wasn't found. + /// Part of Core + /// + /// + /// + /// Object to search for + /// + + if ( !elem || typeof elem === "string" ) { + return jQuery.inArray( this[0], + // If it receives a string, the selector is used + // If it receives nothing, the siblings are used + elem ? jQuery( elem ) : this.parent().children() ); + } + // Locate the position of the desired element + return jQuery.inArray( + // If it receives a jQuery object, the first element is used + elem.jquery ? elem[0] : elem, this ); + }, + + add: function( selector, context ) { + /// + /// Adds one or more Elements to the set of matched elements. + /// Part of DOM/Traversing + /// + /// + /// A string containing a selector expression to match additional elements against. + /// + /// + /// Add some elements rooted against the specified context. + /// + /// + + var set = typeof selector === "string" ? + jQuery( selector, context || this.context ) : + jQuery.makeArray( selector ), + all = jQuery.merge( this.get(), set ); + + return this.pushStack( isDisconnected( set[0] ) || isDisconnected( all[0] ) ? + all : + jQuery.unique( all ) ); + }, + + andSelf: function() { + /// + /// Adds the previous selection to the current selection. + /// + /// + + return this.add( this.prevObject ); + } +}); + +// A painfully simple check to see if an element is disconnected +// from a document (should be improved, where feasible). +function isDisconnected( node ) { + return !node || !node.parentNode || node.parentNode.nodeType === 11; +} + +jQuery.each({ + parent: function( elem ) { + var parent = elem.parentNode; + return parent && parent.nodeType !== 11 ? parent : null; + }, + parents: function( elem ) { + return jQuery.dir( elem, "parentNode" ); + }, + next: function( elem ) { + return jQuery.nth( elem, 2, "nextSibling" ); + }, + prev: function( elem ) { + return jQuery.nth( elem, 2, "previousSibling" ); + }, + nextAll: function( elem ) { + return jQuery.dir( elem, "nextSibling" ); + }, + prevAll: function( elem ) { + return jQuery.dir( elem, "previousSibling" ); + }, + siblings: function( elem ) { + return jQuery.sibling( elem.parentNode.firstChild, elem ); + }, + children: function( elem ) { + return jQuery.sibling( elem.firstChild ); + }, + contents: function( elem ) { + return jQuery.nodeName( elem, "iframe" ) ? + elem.contentDocument || elem.contentWindow.document : + jQuery.makeArray( elem.childNodes ); + } +}, function( name, fn ) { + jQuery.fn[ name ] = function( until, selector ) { + var ret = jQuery.map( this, fn, until ); + + if ( !runtil.test( name ) ) { + selector = until; + } + + if ( selector && typeof selector === "string" ) { + ret = jQuery.filter( selector, ret ); + } + + ret = this.length > 1 ? jQuery.unique( ret ) : ret; + + if ( (this.length > 1 || rmultiselector.test( selector )) && rparentsprev.test( name ) ) { + ret = ret.reverse(); + } + + return this.pushStack( ret, name, slice.call(arguments).join(",") ); + }; +}); + +jQuery.fn[ "parentsUntil" ] = function( until, selector ) { + /// + /// Get the ancestors of each element in the current set of matched elements, up to but not + /// including the element matched by the selector. + /// + /// + /// A string containing a selector expression to indicate where to stop matching ancestor + /// elements. + /// + /// + + var fn = function( elem, i, until ) { + return jQuery.dir( elem, "parentNode", until ); + } + + var ret = jQuery.map( this, fn, until ); + + if ( !runtil.test( "parentsUntil" ) ) { + selector = until; + } + + if ( selector && typeof selector === "string" ) { + ret = jQuery.filter( selector, ret ); + } + + ret = this.length > 1 ? jQuery.unique( ret ) : ret; + + if ( (this.length > 1 || rmultiselector.test( selector )) && rparentsprev.test( "parentsUntil" ) ) { + ret = ret.reverse(); + } + + return this.pushStack( ret, "parentsUntil", slice.call(arguments).join(",") ); +}; + +jQuery.fn[ "nextUntil" ] = function( until, selector ) { + /// + /// Get all following siblings of each element up to but not including the element matched + /// by the selector. + /// + /// + /// A string containing a selector expression to indicate where to stop matching following + /// sibling elements. + /// + /// + + var fn = function( elem, i, until ) { + return jQuery.dir( elem, "nextSibling", until ); + } + + var ret = jQuery.map( this, fn, until ); + + if ( !runtil.test( "nextUntil" ) ) { + selector = until; + } + + if ( selector && typeof selector === "string" ) { + ret = jQuery.filter( selector, ret ); + } + + ret = this.length > 1 ? jQuery.unique( ret ) : ret; + + if ( (this.length > 1 || rmultiselector.test( selector )) && rparentsprev.test( "nextUntil" ) ) { + ret = ret.reverse(); + } + + return this.pushStack( ret, "nextUntil", slice.call(arguments).join(",") ); +}; + +jQuery.fn[ "prevUntil" ] = function( until, selector ) { + /// + /// Get all preceding siblings of each element up to but not including the element matched + /// by the selector. + /// + /// + /// A string containing a selector expression to indicate where to stop matching preceding + /// sibling elements. + /// + /// + + var fn = function( elem, i, until ) { + return jQuery.dir( elem, "previousSibling", until ); + } + + var ret = jQuery.map( this, fn, until ); + + if ( !runtil.test( "prevUntil" ) ) { + selector = until; + } + + if ( selector && typeof selector === "string" ) { + ret = jQuery.filter( selector, ret ); + } + + ret = this.length > 1 ? jQuery.unique( ret ) : ret; + + if ( (this.length > 1 || rmultiselector.test( selector )) && rparentsprev.test( "prevUntil" ) ) { + ret = ret.reverse(); + } + + return this.pushStack( ret, "prevUntil", slice.call(arguments).join(",") ); +}; + +jQuery.extend({ + filter: function( expr, elems, not ) { + if ( not ) { + expr = ":not(" + expr + ")"; + } + + return jQuery.find.matches(expr, elems); + }, + + dir: function( elem, dir, until ) { + /// + /// This member is internal only. + /// + /// + + var matched = [], cur = elem[dir]; + while ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) { + if ( cur.nodeType === 1 ) { + matched.push( cur ); + } + cur = cur[dir]; + } + return matched; + }, + + nth: function( cur, result, dir, elem ) { + /// + /// This member is internal only. + /// + /// + + result = result || 1; + var num = 0; + + for ( ; cur; cur = cur[dir] ) { + if ( cur.nodeType === 1 && ++num === result ) { + break; + } + } + + return cur; + }, + + sibling: function( n, elem ) { + /// + /// This member is internal only. + /// + /// + + var r = []; + + for ( ; n; n = n.nextSibling ) { + if ( n.nodeType === 1 && n !== elem ) { + r.push( n ); + } + } + + return r; + } +}); +var rinlinejQuery = / jQuery\d+="(?:\d+|null)"/g, + rleadingWhitespace = /^\s+/, + rxhtmlTag = /(<([\w:]+)[^>]*?)\/>/g, + rselfClosing = /^(?:area|br|col|embed|hr|img|input|link|meta|param)$/i, + rtagName = /<([\w:]+)/, + rtbody = /"; + }, + wrapMap = { + option: [ 1, "" ], + legend: [ 1, "
", "
" ], + thead: [ 1, "", "
" ], + tr: [ 2, "", "
" ], + td: [ 3, "", "
" ], + col: [ 2, "", "
" ], + area: [ 1, "", "" ], + _default: [ 0, "", "" ] + }; + +wrapMap.optgroup = wrapMap.option; +wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; +wrapMap.th = wrapMap.td; + +// IE can't serialize and

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