diff --git a/Emby.Photos/Emby.Photos.csproj b/Emby.Photos/Emby.Photos.csproj
index ed126a41c..21631aeb5 100644
--- a/Emby.Photos/Emby.Photos.csproj
+++ b/Emby.Photos/Emby.Photos.csproj
@@ -37,6 +37,9 @@
+
+ Properties\SharedVersion.cs
+
diff --git a/Emby.Photos/Properties/AssemblyInfo.cs b/Emby.Photos/Properties/AssemblyInfo.cs
index abef142ef..49ac83345 100644
--- a/Emby.Photos/Properties/AssemblyInfo.cs
+++ b/Emby.Photos/Properties/AssemblyInfo.cs
@@ -31,6 +31,4 @@ using System.Runtime.InteropServices;
//
// 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")]
+// [assembly: AssemblyVersion("1.0.*")]
\ No newline at end of file
diff --git a/MediaBrowser.Server.Implementations/Channels/ChannelConfigurations.cs b/Emby.Server.Implementations/Channels/ChannelConfigurations.cs
similarity index 93%
rename from MediaBrowser.Server.Implementations/Channels/ChannelConfigurations.cs
rename to Emby.Server.Implementations/Channels/ChannelConfigurations.cs
index 9dfb0404e..ef0973e7f 100644
--- a/MediaBrowser.Server.Implementations/Channels/ChannelConfigurations.cs
+++ b/Emby.Server.Implementations/Channels/ChannelConfigurations.cs
@@ -2,7 +2,7 @@
using MediaBrowser.Model.Configuration;
using System.Collections.Generic;
-namespace MediaBrowser.Server.Implementations.Channels
+namespace Emby.Server.Implementations.Channels
{
public static class ChannelConfigurationExtension
{
diff --git a/MediaBrowser.Server.Implementations/Channels/ChannelDynamicMediaSourceProvider.cs b/Emby.Server.Implementations/Channels/ChannelDynamicMediaSourceProvider.cs
similarity index 96%
rename from MediaBrowser.Server.Implementations/Channels/ChannelDynamicMediaSourceProvider.cs
rename to Emby.Server.Implementations/Channels/ChannelDynamicMediaSourceProvider.cs
index fae78b9bc..98011ddd4 100644
--- a/MediaBrowser.Server.Implementations/Channels/ChannelDynamicMediaSourceProvider.cs
+++ b/Emby.Server.Implementations/Channels/ChannelDynamicMediaSourceProvider.cs
@@ -7,7 +7,7 @@ using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
-namespace MediaBrowser.Server.Implementations.Channels
+namespace Emby.Server.Implementations.Channels
{
public class ChannelDynamicMediaSourceProvider : IMediaSourceProvider
{
diff --git a/MediaBrowser.Server.Implementations/Channels/ChannelImageProvider.cs b/Emby.Server.Implementations/Channels/ChannelImageProvider.cs
similarity index 96%
rename from MediaBrowser.Server.Implementations/Channels/ChannelImageProvider.cs
rename to Emby.Server.Implementations/Channels/ChannelImageProvider.cs
index c98f71ce2..f892b1e62 100644
--- a/MediaBrowser.Server.Implementations/Channels/ChannelImageProvider.cs
+++ b/Emby.Server.Implementations/Channels/ChannelImageProvider.cs
@@ -7,7 +7,7 @@ using System.Linq;
using System.Threading;
using System.Threading.Tasks;
-namespace MediaBrowser.Server.Implementations.Channels
+namespace Emby.Server.Implementations.Channels
{
public class ChannelImageProvider : IDynamicImageProvider, IHasItemChangeMonitor
{
diff --git a/MediaBrowser.Server.Implementations/Channels/ChannelManager.cs b/Emby.Server.Implementations/Channels/ChannelManager.cs
similarity index 99%
rename from MediaBrowser.Server.Implementations/Channels/ChannelManager.cs
rename to Emby.Server.Implementations/Channels/ChannelManager.cs
index 300973ce1..2ce880c93 100644
--- a/MediaBrowser.Server.Implementations/Channels/ChannelManager.cs
+++ b/Emby.Server.Implementations/Channels/ChannelManager.cs
@@ -31,7 +31,7 @@ using MediaBrowser.Controller.Entities.TV;
using MediaBrowser.Controller.IO;
using MediaBrowser.Model.Globalization;
-namespace MediaBrowser.Server.Implementations.Channels
+namespace Emby.Server.Implementations.Channels
{
public class ChannelManager : IChannelManager
{
@@ -410,7 +410,7 @@ namespace MediaBrowser.Server.Implementations.Channels
}
}
}
- catch (DirectoryNotFoundException)
+ catch (IOException)
{
}
@@ -781,7 +781,7 @@ namespace MediaBrowser.Server.Implementations.Channels
{
}
- catch (DirectoryNotFoundException)
+ catch (IOException)
{
}
@@ -801,7 +801,7 @@ namespace MediaBrowser.Server.Implementations.Channels
{
}
- catch (DirectoryNotFoundException)
+ catch (IOException)
{
}
@@ -943,7 +943,7 @@ namespace MediaBrowser.Server.Implementations.Channels
{
}
- catch (DirectoryNotFoundException)
+ catch (IOException)
{
}
@@ -963,7 +963,7 @@ namespace MediaBrowser.Server.Implementations.Channels
{
}
- catch (DirectoryNotFoundException)
+ catch (IOException)
{
}
@@ -1104,7 +1104,7 @@ namespace MediaBrowser.Server.Implementations.Channels
{
}
- catch (DirectoryNotFoundException)
+ catch (IOException)
{
}
@@ -1127,7 +1127,7 @@ namespace MediaBrowser.Server.Implementations.Channels
{
}
- catch (DirectoryNotFoundException)
+ catch (IOException)
{
}
diff --git a/MediaBrowser.Server.Implementations/Channels/ChannelPostScanTask.cs b/Emby.Server.Implementations/Channels/ChannelPostScanTask.cs
similarity index 99%
rename from MediaBrowser.Server.Implementations/Channels/ChannelPostScanTask.cs
rename to Emby.Server.Implementations/Channels/ChannelPostScanTask.cs
index afb842c1c..aef06bd1d 100644
--- a/MediaBrowser.Server.Implementations/Channels/ChannelPostScanTask.cs
+++ b/Emby.Server.Implementations/Channels/ChannelPostScanTask.cs
@@ -11,7 +11,7 @@ using System.Threading;
using System.Threading.Tasks;
using MediaBrowser.Model.Extensions;
-namespace MediaBrowser.Server.Implementations.Channels
+namespace Emby.Server.Implementations.Channels
{
public class ChannelPostScanTask
{
diff --git a/MediaBrowser.Server.Implementations/Channels/RefreshChannelsScheduledTask.cs b/Emby.Server.Implementations/Channels/RefreshChannelsScheduledTask.cs
similarity index 97%
rename from MediaBrowser.Server.Implementations/Channels/RefreshChannelsScheduledTask.cs
rename to Emby.Server.Implementations/Channels/RefreshChannelsScheduledTask.cs
index 8bcb3cda9..d5ec86445 100644
--- a/MediaBrowser.Server.Implementations/Channels/RefreshChannelsScheduledTask.cs
+++ b/Emby.Server.Implementations/Channels/RefreshChannelsScheduledTask.cs
@@ -6,7 +6,7 @@ using System.Collections.Generic;
using System.Threading.Tasks;
using MediaBrowser.Model.Tasks;
-namespace MediaBrowser.Server.Implementations.Channels
+namespace Emby.Server.Implementations.Channels
{
class RefreshChannelsScheduledTask : IScheduledTask
{
diff --git a/Emby.Server.Implementations/Emby.Server.Implementations.csproj b/Emby.Server.Implementations/Emby.Server.Implementations.csproj
new file mode 100644
index 000000000..317b1b9b8
--- /dev/null
+++ b/Emby.Server.Implementations/Emby.Server.Implementations.csproj
@@ -0,0 +1,74 @@
+
+
+
+
+ 11.0
+ Debug
+ AnyCPU
+ {D08B8079-08B3-48F2-83C4-E9CCCE48AFF1}
+ Library
+ Properties
+ Emby.Server.Implementations
+ Emby.Server.Implementations
+ en-US
+ 512
+ {786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
+ Profile75
+ v4.5
+
+
+ true
+ full
+ false
+ bin\Debug\
+ DEBUG;TRACE
+ prompt
+ 4
+
+
+ pdbonly
+ true
+ bin\Release\
+ TRACE
+ prompt
+ 4
+
+
+
+
+ {9142eefa-7570-41e1-bfcc-468bb571af2f}
+ MediaBrowser.Common
+
+
+ {17e1f4e6-8abd-4fe5-9ecf-43d4b6087ba2}
+ MediaBrowser.Controller
+
+
+ {7eeeb4bb-f3e8-48fc-b4c5-70f0fff8329b}
+ MediaBrowser.Model
+
+
+
+
+ Properties\SharedVersion.cs
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/MediaBrowser.Server.Implementations/Intros/DefaultIntroProvider.cs b/Emby.Server.Implementations/Intros/DefaultIntroProvider.cs
similarity index 99%
rename from MediaBrowser.Server.Implementations/Intros/DefaultIntroProvider.cs
rename to Emby.Server.Implementations/Intros/DefaultIntroProvider.cs
index 72a63c547..180f6aba7 100644
--- a/MediaBrowser.Server.Implementations/Intros/DefaultIntroProvider.cs
+++ b/Emby.Server.Implementations/Intros/DefaultIntroProvider.cs
@@ -11,13 +11,11 @@ using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Threading.Tasks;
-using MediaBrowser.Common.IO;
-using MediaBrowser.Controller.IO;
using MediaBrowser.Model.IO;
using MediaBrowser.Model.Extensions;
using MediaBrowser.Model.Globalization;
-namespace MediaBrowser.Server.Implementations.Intros
+namespace Emby.Server.Implementations.Intros
{
public class DefaultIntroProvider : IIntroProvider
{
diff --git a/MediaBrowser.Server.Implementations/News/NewsService.cs b/Emby.Server.Implementations/News/NewsService.cs
similarity index 95%
rename from MediaBrowser.Server.Implementations/News/NewsService.cs
rename to Emby.Server.Implementations/News/NewsService.cs
index 0059ba421..80e799634 100644
--- a/MediaBrowser.Server.Implementations/News/NewsService.cs
+++ b/Emby.Server.Implementations/News/NewsService.cs
@@ -6,7 +6,7 @@ using System.Collections.Generic;
using System.IO;
using System.Linq;
-namespace MediaBrowser.Server.Implementations.News
+namespace Emby.Server.Implementations.News
{
public class NewsService : INewsService
{
@@ -25,7 +25,7 @@ namespace MediaBrowser.Server.Implementations.News
{
return GetProductNewsInternal(query);
}
- catch (DirectoryNotFoundException)
+ catch (FileNotFoundException)
{
// No biggie
return new QueryResult
@@ -33,7 +33,7 @@ namespace MediaBrowser.Server.Implementations.News
Items = new NewsItem[] { }
};
}
- catch (FileNotFoundException)
+ catch (IOException)
{
// No biggie
return new QueryResult
diff --git a/Emby.Server.Implementations/Properties/AssemblyInfo.cs b/Emby.Server.Implementations/Properties/AssemblyInfo.cs
new file mode 100644
index 000000000..28ffcbac6
--- /dev/null
+++ b/Emby.Server.Implementations/Properties/AssemblyInfo.cs
@@ -0,0 +1,28 @@
+using System.Resources;
+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("Emby.Server.Implementations")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("Emby.Server.Implementations")]
+[assembly: AssemblyCopyright("Copyright © 2016")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+[assembly: NeutralResourcesLanguage("en")]
+
+// 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.*")]
\ No newline at end of file
diff --git a/MediaBrowser.Server.Implementations/Updates/InstallationManager.cs b/Emby.Server.Implementations/Updates/InstallationManager.cs
similarity index 97%
rename from MediaBrowser.Server.Implementations/Updates/InstallationManager.cs
rename to Emby.Server.Implementations/Updates/InstallationManager.cs
index c6930e487..943977a28 100644
--- a/MediaBrowser.Server.Implementations/Updates/InstallationManager.cs
+++ b/Emby.Server.Implementations/Updates/InstallationManager.cs
@@ -3,7 +3,6 @@ using System.Collections.Concurrent;
using System.Collections.Generic;
using System.IO;
using System.Linq;
-using System.Security.Cryptography;
using System.Threading;
using System.Threading.Tasks;
using MediaBrowser.Common;
@@ -14,13 +13,14 @@ using MediaBrowser.Common.Plugins;
using MediaBrowser.Common.Progress;
using MediaBrowser.Common.Security;
using MediaBrowser.Common.Updates;
+using MediaBrowser.Model.Cryptography;
using MediaBrowser.Model.Events;
using MediaBrowser.Model.IO;
using MediaBrowser.Model.Logging;
using MediaBrowser.Model.Serialization;
using MediaBrowser.Model.Updates;
-namespace MediaBrowser.Server.Implementations.Updates
+namespace Emby.Server.Implementations.Updates
{
///
/// Manages all install, uninstall and update operations (both plugins and system)
@@ -115,7 +115,9 @@ namespace MediaBrowser.Server.Implementations.Updates
/// The application host.
private readonly IApplicationHost _applicationHost;
- public InstallationManager(ILogger logger, IApplicationHost appHost, IApplicationPaths appPaths, IHttpClient httpClient, IJsonSerializer jsonSerializer, ISecurityManager securityManager, IConfigurationManager config, IFileSystem fileSystem)
+ private readonly ICryptographyProvider _cryptographyProvider;
+
+ public InstallationManager(ILogger logger, IApplicationHost appHost, IApplicationPaths appPaths, IHttpClient httpClient, IJsonSerializer jsonSerializer, ISecurityManager securityManager, IConfigurationManager config, IFileSystem fileSystem, ICryptographyProvider cryptographyProvider)
{
if (logger == null)
{
@@ -132,6 +134,7 @@ namespace MediaBrowser.Server.Implementations.Updates
_securityManager = securityManager;
_config = config;
_fileSystem = fileSystem;
+ _cryptographyProvider = cryptographyProvider;
_logger = logger;
}
@@ -597,13 +600,12 @@ namespace MediaBrowser.Server.Implementations.Updates
var packageChecksum = string.IsNullOrWhiteSpace(package.checksum) ? Guid.Empty : new Guid(package.checksum);
if (packageChecksum != Guid.Empty) // support for legacy uploads for now
{
- using (var crypto = new MD5CryptoServiceProvider())
- using (var stream = new BufferedStream(_fileSystem.OpenRead(tempFile), 100000))
+ using (var stream = _fileSystem.OpenRead(tempFile))
{
- var check = Guid.Parse(BitConverter.ToString(crypto.ComputeHash(stream)).Replace("-", String.Empty));
+ var check = Guid.Parse(BitConverter.ToString(_cryptographyProvider.GetMD5Bytes(stream)).Replace("-", String.Empty));
if (check != packageChecksum)
{
- throw new ApplicationException(string.Format("Download validation failed for {0}. Probably corrupted during transfer.", package.name));
+ throw new Exception(string.Format("Download validation failed for {0}. Probably corrupted during transfer.", package.name));
}
}
}
diff --git a/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj b/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj
index 15c2368e1..a2975c860 100644
--- a/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj
+++ b/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj
@@ -112,12 +112,6 @@
-
-
-
-
-
-
@@ -175,7 +169,6 @@
-
@@ -273,6 +266,7 @@
+
@@ -293,11 +287,8 @@
-
-
-
diff --git a/MediaBrowser.Server.Startup.Common/ApplicationHost.cs b/MediaBrowser.Server.Startup.Common/ApplicationHost.cs
index 2e86b6c3e..9484bca7d 100644
--- a/MediaBrowser.Server.Startup.Common/ApplicationHost.cs
+++ b/MediaBrowser.Server.Startup.Common/ApplicationHost.cs
@@ -50,7 +50,6 @@ using MediaBrowser.Providers.Manager;
using MediaBrowser.Providers.Subtitles;
using MediaBrowser.Server.Implementations;
using MediaBrowser.Server.Implementations.Activity;
-using MediaBrowser.Server.Implementations.Channels;
using MediaBrowser.Server.Implementations.Collections;
using MediaBrowser.Server.Implementations.Configuration;
using MediaBrowser.Server.Implementations.Connect;
@@ -108,6 +107,8 @@ using Emby.Dlna.ContentDirectory;
using Emby.Dlna.Main;
using Emby.Dlna.MediaReceiverRegistrar;
using Emby.Dlna.Ssdp;
+using Emby.Server.Implementations.Channels;
+using Emby.Server.Implementations.Updates;
using MediaBrowser.Model.Activity;
using MediaBrowser.Model.Dlna;
using MediaBrowser.Model.Globalization;
@@ -123,7 +124,6 @@ using MediaBrowser.Server.Implementations.Archiving;
using MediaBrowser.Server.Implementations.Reflection;
using MediaBrowser.Server.Implementations.Serialization;
using MediaBrowser.Server.Implementations.TextEncoding;
-using MediaBrowser.Server.Implementations.Updates;
using MediaBrowser.Server.Implementations.Xml;
using OpenSubtitlesHandler;
using ServiceStack;
@@ -530,7 +530,7 @@ namespace MediaBrowser.Server.Startup.Common
SecurityManager = new PluginSecurityManager(this, HttpClient, JsonSerializer, ApplicationPaths, LogManager, FileSystemManager);
RegisterSingleInstance(SecurityManager);
- InstallationManager = new InstallationManager(LogManager.GetLogger("InstallationManager"), this, ApplicationPaths, HttpClient, JsonSerializer, SecurityManager, ConfigurationManager, FileSystemManager);
+ InstallationManager = new InstallationManager(LogManager.GetLogger("InstallationManager"), this, ApplicationPaths, HttpClient, JsonSerializer, SecurityManager, ConfigurationManager, FileSystemManager, CryptographyProvider);
RegisterSingleInstance(InstallationManager);
ZipClient = new ZipClient(FileSystemManager);
@@ -626,7 +626,7 @@ namespace MediaBrowser.Server.Startup.Common
DeviceManager = new DeviceManager(new DeviceRepository(ApplicationPaths, JsonSerializer, LogManager.GetLogger("DeviceManager"), FileSystemManager), UserManager, FileSystemManager, LibraryMonitor, ServerConfigurationManager, LogManager.GetLogger("DeviceManager"), NetworkManager);
RegisterSingleInstance(DeviceManager);
- var newsService = new Implementations.News.NewsService(ApplicationPaths, JsonSerializer);
+ var newsService = new Emby.Server.Implementations.News.NewsService(ApplicationPaths, JsonSerializer);
RegisterSingleInstance(newsService);
var fileOrganizationService = new FileOrganizationService(TaskManager, FileOrganizationRepository, LogManager.GetLogger("FileOrganizationService"), LibraryMonitor, LibraryManager, ServerConfigurationManager, FileSystemManager, ProviderManager);
@@ -1160,9 +1160,12 @@ namespace MediaBrowser.Server.Startup.Common
// Common implementations
list.Add(typeof(TaskManager).Assembly);
- // Server implementations
+ // MediaBrowser.Server implementations
list.Add(typeof(ServerApplicationPaths).Assembly);
+ // Emby.Server implementations
+ list.Add(typeof(InstallationManager).Assembly);
+
// MediaEncoding
list.Add(typeof(MediaEncoder).Assembly);
diff --git a/MediaBrowser.Server.Startup.Common/MediaBrowser.Server.Startup.Common.csproj b/MediaBrowser.Server.Startup.Common/MediaBrowser.Server.Startup.Common.csproj
index 32d5d5f8e..2a5653725 100644
--- a/MediaBrowser.Server.Startup.Common/MediaBrowser.Server.Startup.Common.csproj
+++ b/MediaBrowser.Server.Startup.Common/MediaBrowser.Server.Startup.Common.csproj
@@ -102,6 +102,10 @@
{89ab4548-770d-41fd-a891-8daff44f452c}
Emby.Photos
+
+ {d08b8079-08b3-48f2-83c4-e9ccce48aff1}
+ Emby.Server.Implementations
+
{4fd51ac5-2c16-4308-a993-c3a84f3b4582}
MediaBrowser.Api
diff --git a/MediaBrowser.sln b/MediaBrowser.sln
index bf226a699..cec9d68c8 100644
--- a/MediaBrowser.sln
+++ b/MediaBrowser.sln
@@ -75,6 +75,8 @@ Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "Emby.Dlna", "Emby.Dlna\Emby
EndProject
Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "RSSDP", "RSSDP\RSSDP.xproj", "{C227ADB7-E256-4E70-A8B9-22B9E0CF4F55}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Emby.Server.Implementations", "Emby.Server.Implementations\Emby.Server.Implementations.csproj", "{D08B8079-08B3-48F2-83C4-E9CCCE48AFF1}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -659,6 +661,36 @@ Global
{C227ADB7-E256-4E70-A8B9-22B9E0CF4F55}.Release|x64.Build.0 = Release|Any CPU
{C227ADB7-E256-4E70-A8B9-22B9E0CF4F55}.Release|x86.ActiveCfg = Release|Any CPU
{C227ADB7-E256-4E70-A8B9-22B9E0CF4F55}.Release|x86.Build.0 = Release|Any CPU
+ {D08B8079-08B3-48F2-83C4-E9CCCE48AFF1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {D08B8079-08B3-48F2-83C4-E9CCCE48AFF1}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {D08B8079-08B3-48F2-83C4-E9CCCE48AFF1}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {D08B8079-08B3-48F2-83C4-E9CCCE48AFF1}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+ {D08B8079-08B3-48F2-83C4-E9CCCE48AFF1}.Debug|Win32.ActiveCfg = Debug|Any CPU
+ {D08B8079-08B3-48F2-83C4-E9CCCE48AFF1}.Debug|Win32.Build.0 = Debug|Any CPU
+ {D08B8079-08B3-48F2-83C4-E9CCCE48AFF1}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {D08B8079-08B3-48F2-83C4-E9CCCE48AFF1}.Debug|x64.Build.0 = Debug|Any CPU
+ {D08B8079-08B3-48F2-83C4-E9CCCE48AFF1}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {D08B8079-08B3-48F2-83C4-E9CCCE48AFF1}.Debug|x86.Build.0 = Debug|Any CPU
+ {D08B8079-08B3-48F2-83C4-E9CCCE48AFF1}.Release Mono|Any CPU.ActiveCfg = Release|Any CPU
+ {D08B8079-08B3-48F2-83C4-E9CCCE48AFF1}.Release Mono|Any CPU.Build.0 = Release|Any CPU
+ {D08B8079-08B3-48F2-83C4-E9CCCE48AFF1}.Release Mono|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {D08B8079-08B3-48F2-83C4-E9CCCE48AFF1}.Release Mono|Mixed Platforms.Build.0 = Release|Any CPU
+ {D08B8079-08B3-48F2-83C4-E9CCCE48AFF1}.Release Mono|Win32.ActiveCfg = Release|Any CPU
+ {D08B8079-08B3-48F2-83C4-E9CCCE48AFF1}.Release Mono|Win32.Build.0 = Release|Any CPU
+ {D08B8079-08B3-48F2-83C4-E9CCCE48AFF1}.Release Mono|x64.ActiveCfg = Release|Any CPU
+ {D08B8079-08B3-48F2-83C4-E9CCCE48AFF1}.Release Mono|x64.Build.0 = Release|Any CPU
+ {D08B8079-08B3-48F2-83C4-E9CCCE48AFF1}.Release Mono|x86.ActiveCfg = Release|Any CPU
+ {D08B8079-08B3-48F2-83C4-E9CCCE48AFF1}.Release Mono|x86.Build.0 = Release|Any CPU
+ {D08B8079-08B3-48F2-83C4-E9CCCE48AFF1}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {D08B8079-08B3-48F2-83C4-E9CCCE48AFF1}.Release|Any CPU.Build.0 = Release|Any CPU
+ {D08B8079-08B3-48F2-83C4-E9CCCE48AFF1}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {D08B8079-08B3-48F2-83C4-E9CCCE48AFF1}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+ {D08B8079-08B3-48F2-83C4-E9CCCE48AFF1}.Release|Win32.ActiveCfg = Release|Any CPU
+ {D08B8079-08B3-48F2-83C4-E9CCCE48AFF1}.Release|Win32.Build.0 = Release|Any CPU
+ {D08B8079-08B3-48F2-83C4-E9CCCE48AFF1}.Release|x64.ActiveCfg = Release|Any CPU
+ {D08B8079-08B3-48F2-83C4-E9CCCE48AFF1}.Release|x64.Build.0 = Release|Any CPU
+ {D08B8079-08B3-48F2-83C4-E9CCCE48AFF1}.Release|x86.ActiveCfg = Release|Any CPU
+ {D08B8079-08B3-48F2-83C4-E9CCCE48AFF1}.Release|x86.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE