Parallal Publish

Parallal Publish

--- Sriracha.Deploy.Data/Impl/BuildPublisher.cs
+++ Sriracha.Deploy.Data/Impl/BuildPublisher.cs
@@ -118,35 +118,61 @@
 										   .ToList();
 			_logger.Info("Publishing file pattern {0}, the following {1} files were found:", options.FilePattern, fileList.Count());
 			var taskList = new  List<System.Threading.Tasks.Task>();
-			foreach(var fileBatch in batchedFileListList)
-			{
-				_logger.Info("- {0}", string.Join(",", fileBatch));
-				var task = Task.Factory.StartNew(()=>
-				{
-					foreach(var filePath in fileBatch)
+			foreach(var filePath in fileList)
+			{
+				_logger.Info("- {0}", string.Join(",", filePath));
+				var task = Task.Factory.StartNew(() =>
+				{
+					//var fileOptions = AutoMapper.Mapper.Map(options, new BuildPublishOptions());
+					// Don't try to use automapper here.  Something about it evaluating it later during the task causes
+					//	it to pollute values between threads.  Not sure why, but ouch ouch ouch
+					var fileOptions = new BuildPublishOptions
 					{
-						//var fileOptions = AutoMapper.Mapper.Map(options, new BuildPublishOptions());
-						// Don't try to use automapper here.  Something about it evaluating it later during the task causes
-						//	it to pollute values between threads.  Not sure why, but ouch ouch ouch
-						var fileOptions = new BuildPublishOptions
-						{
-							File = filePath,
-							ApiUrl = options.ApiUrl,
-							BranchId = options.BranchId,
-							ComponentId = options.ComponentId,
-							Directory = options.Directory,
-							FilePattern = null,
-							NewFileName = options.NewFileName,
-							ProjectId = options.ProjectId,
-							Version = options.Version
-						};
-						fileOptions.File = filePath;
-						fileOptions.FilePattern = null;
-						this.PublishFile(fileOptions);
-					}
+						File = filePath,
+						ApiUrl = options.ApiUrl,
+						BranchId = options.BranchId,
+						ComponentId = options.ComponentId,
+						Directory = options.Directory,
+						FilePattern = null,
+						NewFileName = options.NewFileName,
+						ProjectId = options.ProjectId,
+						Version = options.Version
+					};
+					fileOptions.File = filePath;
+					fileOptions.FilePattern = null;
+					this.PublishFile(fileOptions);
 				});
 				taskList.Add(task);
 			}
+			//foreach(var fileBatch in batchedFileListList)
+			//{
+			//	_logger.Info("- {0}", string.Join(",", fileBatch));
+			//	var task = Task.Factory.StartNew(()=>
+			//	{
+			//		foreach(var filePath in fileBatch)
+			//		{
+			//			//var fileOptions = AutoMapper.Mapper.Map(options, new BuildPublishOptions());
+			//			// Don't try to use automapper here.  Something about it evaluating it later during the task causes
+			//			//	it to pollute values between threads.  Not sure why, but ouch ouch ouch
+			//			var fileOptions = new BuildPublishOptions
+			//			{
+			//				File = filePath,
+			//				ApiUrl = options.ApiUrl,
+			//				BranchId = options.BranchId,
+			//				ComponentId = options.ComponentId,
+			//				Directory = options.Directory,
+			//				FilePattern = null,
+			//				NewFileName = options.NewFileName,
+			//				ProjectId = options.ProjectId,
+			//				Version = options.Version
+			//			};
+			//			fileOptions.File = filePath;
+			//			fileOptions.FilePattern = null;
+			//			this.PublishFile(fileOptions);
+			//		}
+			//	});
+			//	taskList.Add(task);
+			//}
 			Task.WaitAll(taskList.ToArray());
 			var exceptionList = taskList.Where(i=>i.Exception != null).Select(i=>i.Exception);
 			foreach(var exception in exceptionList)


Core.Tests: is null&is not null tests

Core.Tests: is null&is not null tests

--- StaTypPocoQueries.Core.Tests/LibraryTest.cs
+++ StaTypPocoQueries.Core.Tests/LibraryTest.cs
@@ -61,6 +61,34 @@
             AreEqual("where nullableBool = @0", new object[] {(bool?)true},
                 ExpressionToSql.Translate<SomeEntity>(x => x.nullableBool == true));
         }
+
+        [Fact]
+        public void TestEqualsNullableIsNull() {
+            AreEqual("where nullableInt is null",
+                ExpressionToSql.Translate<SomeEntity>(x => x.nullableInt == null));
+            AreEqual("where nullableDecimal is null",
+                ExpressionToSql.Translate<SomeEntity>(x => x.nullableDecimal == null));
+            AreEqual("where nullableLong is null",
+                ExpressionToSql.Translate<SomeEntity>(x => x.nullableLong == null));
+            AreEqual("where nullableDate is null",
+                ExpressionToSql.Translate<SomeEntity>(x => x.nullableDate == null));
+            AreEqual("where nullableBool is null",
+                ExpressionToSql.Translate<SomeEntity>(x => x.nullableBool == null));
+        }
+
+        [Fact]
+        public void TestEqualsNullableIsNotNull() {
+            AreEqual("where nullableInt is not null",
+                ExpressionToSql.Translate<SomeEntity>(x => x.nullableInt != null));
+            AreEqual("where nullableDecimal is not null",
+                ExpressionToSql.Translate<SomeEntity>(x => x.nullableDecimal != null));
+            AreEqual("where nullableLong is not null",
+                ExpressionToSql.Translate<SomeEntity>(x => x.nullableLong != null));
+            AreEqual("where nullableDate is not null",
+                ExpressionToSql.Translate<SomeEntity>(x => x.nullableDate != null));
+            AreEqual("where nullableBool is not null",
+                ExpressionToSql.Translate<SomeEntity>(x => x.nullableBool != null));
+        }

         [Fact]
         public void TestEqualsNonNullLiteral() {


make guild bam notification last 2 mins (spawn time)

--- TCC.Core/Parsing/SystemMessagesProcessor.cs
+++ TCC.Core/Parsing/SystemMessagesProcessor.cs
@@ -212,7 +212,7 @@
         private static void HandleGuilBamSpawn(string parameters, SystemMessageData template)
         {
             var msg = ChatWindowManager.Instance.Factory.CreateSystemMessage(parameters, template, (ChatChannel)template.ChatChannel);
-            Log.N("Guild BAM", msg.ToString(), NotificationType.Normal);
+            Log.N("Guild BAM", msg.ToString(), NotificationType.Normal, 2*60*1000);
             ChatWindowManager.Instance.AddChatMessage(msg);

             TimeManager.Instance.UploadGuildBamTimestamp();


fix missing own guild name in CU window

fix missing own guild name in CU window

--- TCC.Core/ViewModels/CivilUnrestViewModel.cs
+++ TCC.Core/ViewModels/CivilUnrestViewModel.cs
@@ -104,11 +104,15 @@
             if (g != null)
             {
                 g.TowerHp = guildInfo.TowerHp;
+                if (g.Name != "") return;
+                if(guildInfo.Self && InfoWindowViewModel.Instance.CurrentCharacter != null) g.Name = InfoWindowViewModel.Instance.CurrentCharacter.GuildName;
                 //TODO: add kills and deaths?
             }
             else
             {
-                _guilds.Add(new CivilUnrestGuild() { Id = guildInfo.Id, Name = "", TowerHp = guildInfo.TowerHp, TowersDestroyed = 0 });
+                var name = "";
+                if (guildInfo.Self && InfoWindowViewModel.Instance.CurrentCharacter != null) name = InfoWindowViewModel.Instance.CurrentCharacter.GuildName;
+                _guilds.Add(new CivilUnrestGuild() { Id = guildInfo.Id, Name = name, TowerHp = guildInfo.TowerHp, TowersDestroyed = 0 });
             }
         }


fix roll pass clearing winning status

fix roll pass clearing winning status

--- TCC.Core/ViewModels/GroupWindowViewModel.cs
+++ TCC.Core/ViewModels/GroupWindowViewModel.cs
@@ -342,13 +342,13 @@
         public void SetRoll(ulong entityId, int rollResult)
         {
             if (rollResult == int.MaxValue) rollResult = -1;
-            Members.ToSyncArray().ToList().ForEach(x =>
-            {
-                if (x.EntityId == entityId)
-                {
-                    x.RollResult = rollResult;
-                }
-                x.IsWinning = x.EntityId == GetWinningUser() && rollResult != -1;
+            Members.ToSyncArray().ToList().ForEach(member =>
+            {
+                if (member.EntityId == entityId)
+                {
+                    member.RollResult = rollResult;
+                }
+                member.IsWinning = member.EntityId == GetWinningUser() && member.RollResult != -1;
             });
             //var u = Members.ToSyncArray().FirstOrDefault(x => x.EntityId == entityId);
             //if (u == null) return;


Compile error

Compile error

--- EDDiscovery/EDDiscoveryForm.Designer.cs
+++ EDDiscovery/EDDiscoveryForm.Designer.cs
@@ -337,8 +337,7 @@
             this.configureAddOnActionsToolStripMenuItem,
             this.editInTextCurrentSpeechSynthesisVariablesToolStripMenuItem,
             this.stopCurrentlyRunningActionProgramToolStripMenuItem,
-            this.speechSynthesisSettingsToolStripMenuItem,
-            this.stopCurrentlyRunningActionProgramToolStripMenuItem,
+             this.stopCurrentlyRunningActionProgramToolStripMenuItem,
             this.cAPIToolStripMenuItem,
             this.soundSettingsToolStripMenuItem});
             this.addOnsToolStripMenuItem.Name = "addOnsToolStripMenuItem";


prefetch is still leaking somewhere

prefetch is still leaking somewhere

--- Titanium.Web.Proxy/ExplicitClientHandler.cs
+++ Titanium.Web.Proxy/ExplicitClientHandler.cs
@@ -155,7 +155,7 @@
                         //it could cause floating server connections when client exits
                         prefetchConnectionTask = getServerConnection(connectArgs, true,
                                 null, false, CancellationToken.None);
-
+
                         try
                         {
                             sslStream = new SslStream(clientStream);
@@ -254,7 +254,7 @@
                         {
                             await tcpConnectionFactory.Release(connection, true);
                         }
-                        calledRequestHandler = true;
+
                         return;
                     }
                 }


Log transport errors to Info instead of Error

 Transport errors do happen a lot because borkers may close
 connections at any time. Real errors are reported as Error
 when nodes are dead instead of just disconnected.

Change-Id: I6b5d31408ebbfa68263320959d6d29fcd7148db6

--- kafka-sharp/kafka-sharp/Cluster/Cluster.cs
+++ kafka-sharp/kafka-sharp/Cluster/Cluster.cs
@@ -276,9 +276,20 @@
                         Logger.LogWarning(string.Format("Failed to connect to {0}, retrying.", n));
                         break;

+                        // Brokers very often close their connexions unilateraly,
+                        // so we consider transport errors as "normal". "Real" errors
+                        // will be logged with the proper severity level in case of
+                        // dead nodes (see 'ProcessDeadNode')
                     case TransportError.ReadError:
                     case TransportError.WriteError:
-                        Logger.LogError(string.Format("Transport error to {0}: {1}", n, ex));
+                        Logger.LogInformation(string.Format("Transport error to {0}: {1}", n, ex));
+                        break;
+
+                        // We cannot get there, but just in case and because dumb
+                        // static checkers like Sonar are complaining:
+                    default:
+                        Logger.LogError("Unknown transport error");
+                        InternalError(ex);
                         break;
                 }
             }


adding assembly version info auto increment 1.2.*

--- TranslatorHelper/Properties/AssemblyInfo.cs
+++ TranslatorHelper/Properties/AssemblyInfo.cs
@@ -1,5 +1,4 @@
 using System.Reflection;
-using System.Runtime.CompilerServices;
 using System.Runtime.InteropServices;

 // Les informations générales relatives à un assembly dépendent de
@@ -32,5 +31,5 @@
 // Vous pouvez spécifier toutes les valeurs ou indiquer les numéros de build et de révision par défaut
 // en utilisant '*', comme indiqué ci-dessous :
 // [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("1.2.0.0")]
+[assembly: AssemblyVersion("1.2.*")]
 [assembly: AssemblyFileVersion("1.2.0.0")]


fix merge conflicts

fix merge conflicts

--- Tynamix.ObjectFiller/NetTypeApiExtension.cs
+++ Tynamix.ObjectFiller/NetTypeApiExtension.cs
@@ -14,8 +14,6 @@
 #else
             return source.IsEnum;
 #endif
-
-
         }

         internal static PropertyInfo GetProperty(this Type source, string name)


Will this work?

Will this work?

--- UnityProject/Assets/Scripts/Debug/Logger.cs
+++ UnityProject/Assets/Scripts/Debug/Logger.cs
@@ -169,6 +169,5 @@
 	TileMaps,
 	Construction,
 	DatabaseAPI,
-	PlayerSprites,
-	Electrical
+	PlayerSprites
 }


Fix typo in Enroll window

Fix typo in Enroll window

Closes #18

--- EnrollmentStation/DlgEnroll.Designer.cs
+++ EnrollmentStation/DlgEnroll.Designer.cs
@@ -53,8 +53,8 @@
             this.cmdEnroll = new System.Windows.Forms.Button();
             this.prgEnroll = new System.Windows.Forms.ProgressBar();
             this.groupBox2 = new System.Windows.Forms.GroupBox();
+            this.drpAlgorithm = new System.Windows.Forms.ComboBox();
             this.label1 = new System.Windows.Forms.Label();
-            this.drpAlgorithm = new System.Windows.Forms.ComboBox();
             this.groupBox1.SuspendLayout();
             this.gbInsertedYubikey.SuspendLayout();
             this.groupBox3.SuspendLayout();
@@ -146,7 +146,7 @@
             this.label5.Name = "label5";
             this.label5.Size = new System.Drawing.Size(97, 13);
             this.label5.TabIndex = 6;
-            this.label5.Text = "YubiHSM avaliable";
+            this.label5.Text = "YubiHSM available";
             //
             // lblInsertedFirmware
             //
@@ -284,6 +284,14 @@
             this.groupBox2.TabStop = false;
             this.groupBox2.Text = "Card details";
             //
+            // drpAlgorithm
+            //
+            this.drpAlgorithm.FormattingEnabled = true;
+            this.drpAlgorithm.Location = new System.Drawing.Point(114, 17);
+            this.drpAlgorithm.Name = "drpAlgorithm";
+            this.drpAlgorithm.Size = new System.Drawing.Size(177, 21);
+            this.drpAlgorithm.TabIndex = 1;
+            //
             // label1
             //
             this.label1.AutoSize = true;
@@ -292,14 +300,6 @@
             this.label1.Size = new System.Drawing.Size(50, 13);
             this.label1.TabIndex = 0;
             this.label1.Text = "Algorithm";
-            //
-            // drpAlgorithm
-            //
-            this.drpAlgorithm.FormattingEnabled = true;
-            this.drpAlgorithm.Location = new System.Drawing.Point(114, 17);
-            this.drpAlgorithm.Name = "drpAlgorithm";
-            this.drpAlgorithm.Size = new System.Drawing.Size(177, 21);
-            this.drpAlgorithm.TabIndex = 1;
             //
             // DlgEnroll
             //


change order

change order

--- Extensions/MissingSnoPowerExtensions.cs
+++ Extensions/MissingSnoPowerExtensions.cs
@@ -643,6 +643,7 @@
         public MissingSnoPowerExtensionsPlugin()
         {
             Enabled = true;
+            Order = int.MinValue;
         }

         public override void Load(IController hud)


Change guide button behaviour to be a long 1 second press

--- XBox360ControllerManager/MainWindow.xaml.cs
+++ XBox360ControllerManager/MainWindow.xaml.cs
@@ -42,11 +42,16 @@
         private void InitializeXBox360Timer()
         {
             Timer timer = new Timer { Enabled = true };
+            int guideCounter = 0;
             timer.Tick += (sender, args) =>
             {
                 if (AnyGamepadHasButton(XBox360GamepadButton.Guide) && !IsVisible)
                 {
-                    Show();
+                    guideCounter++;
+                    if (guideCounter == 10)
+                    {
+                        Show();
+                    }
                 }
                 else if (AnyGamepadHasButton(XBox360GamepadButton.B) && IsVisible)
                 {
@@ -55,6 +60,10 @@
                 else if (AnyGamepadHasButton(XBox360GamepadButton.X) && IsVisible)
                 {
                     PowerOff();
+                }
+                else
+                {
+                    guideCounter = 0;
                 }
             };
         }


In some cases running-info is null.

In some cases running-info is null.

--- src/Buildron/Assets/_Assets/Scripts/Infrastructure/BuildsProviders/TeamCity/BuildParser.cs
+++ src/Buildron/Assets/_Assets/Scripts/Infrastructure/BuildsProviders/TeamCity/BuildParser.cs
@@ -74,8 +74,15 @@
 		}

 		private static BuildStatus ParseRunningStates (Build build, XmlNode e)
-		{
-			var statusText = e.SelectSingleNode ("running-info").Attributes ["currentStageText"].Value;
+		{
+            var runningInfoNode = e.SelectSingleNode("running-info");
+
+            if (runningInfoNode == null)
+            {
+                return BuildStatus.Running;
+            }
+
+            var statusText = runningInfoNode.Attributes ["currentStageText"].Value;
 			var status = BuildStatus.Running;
 			var m = s_getStepNumberRegex.Match (statusText);


Ensured non-null enumeration as result of listing packaged modules.

--- src/Catel.Extensions.Prism/Catel.Extensions.Prism.NET40/Modules/NuGetBasedModuleCatalog.cs
+++ src/Catel.Extensions.Prism/Catel.Extensions.Prism.NET40/Modules/NuGetBasedModuleCatalog.cs
@@ -158,18 +158,13 @@
         {
             get
             {
-                foreach (var moduleInfo in base.Modules)
-                {
-                    yield return moduleInfo;
-                }
-
+                var moduleInfos = base.Modules.ToList();
                 if (!string.IsNullOrWhiteSpace(PackagedModuleIdFilterExpression))
                 {
-                    foreach (var moduleInfo in PackagedModules)
-                    {
-                        yield return moduleInfo;
-                    }
-                }
+                    moduleInfos.AddRange(PackagedModules);
+                }
+
+                return moduleInfos;
             }
         }


Add final integration test

Add final integration test

--- src/Umbraco.Tests.Integration/Umbraco.Web.BackOffice/Controllers/ContentControllerTests.cs
+++ src/Umbraco.Tests.Integration/Umbraco.Web.BackOffice/Controllers/ContentControllerTests.cs
@@ -513,5 +513,94 @@
                 Assert.AreEqual(expectedMessage, display.Notifications.FirstOrDefault(x => x.NotificationType == NotificationStyle.Warning)?.Message);
             });
         }
+
+        [Test]
+        public async Task PostSave_Checks_Ancestors_For_Domains()
+        {
+            var enString = "en-US";
+            var dkString = "da-DK";
+
+            ILocalizationService localizationService = GetRequiredService<ILocalizationService>();
+            localizationService.Save(new LanguageBuilder()
+                .WithCultureInfo(dkString)
+                .WithIsDefault(false)
+                .Build());
+
+            IContentTypeService contentTypeService = GetRequiredService<IContentTypeService>();
+            IContentType contentType = new ContentTypeBuilder().WithContentVariation(ContentVariation.Culture).Build();
+            contentTypeService.Save(contentType);
+
+            Content rootNode = new ContentBuilder()
+                .WithoutIdentity()
+                .WithContentType(contentType)
+                .WithCultureName(enString, "Root")
+                .WithCultureName(dkString, "Rod")
+                .Build();
+
+            IContentService contentService = GetRequiredService<IContentService>();
+            contentService.SaveAndPublish(rootNode);
+
+            Content childNode = new ContentBuilder()
+                .WithoutIdentity()
+                .WithParent(rootNode)
+                .WithContentType(contentType)
+                .WithCultureName(dkString, "Barn")
+                .WithCultureName(enString, "Child")
+                .Build();
+
+            contentService.SaveAndPublish(childNode);
+
+            Content grandChild = new ContentBuilder()
+                .WithoutIdentity()
+                .WithParent(childNode)
+                .WithContentType(contentType)
+                .WithCultureName(dkString, "BarneBarn")
+                .WithCultureName(enString, "GrandChild")
+                .Build();
+
+            contentService.Save(grandChild);
+
+            ILanguage dkLanguage = localizationService.GetLanguageByIsoCode(dkString);
+            ILanguage usLanguage = localizationService.GetLanguageByIsoCode(enString);
+            IDomainService domainService = GetRequiredService<IDomainService>();
+            var dkDomain = new UmbracoDomain("/")
+            {
+                RootContentId = rootNode.Id,
+                LanguageId = dkLanguage.Id
+            };
+
+            var usDomain = new UmbracoDomain("/en")
+            {
+                RootContentId = childNode.Id,
+                LanguageId = usLanguage.Id
+            };
+
+            domainService.Save(dkDomain);
+            domainService.Save(usDomain);
+
+            var url = PrepareApiControllerUrl<ContentController>(x => x.PostSave(null));
+
+            ContentItemSave model = new ContentItemSaveBuilder()
+                .WithContent(grandChild)
+                .WithAction(ContentSaveAction.Publish)
+                .Build();
+
+            HttpResponseMessage response = await Client.PostAsync(url, new MultipartFormDataContent
+            {
+                { new StringContent(JsonConvert.SerializeObject(model)), "contentItem" }
+            });
+
+            var body = await response.Content.ReadAsStringAsync();
+            body = body.TrimStart(AngularJsonMediaTypeFormatter.XsrfPrefix);
+            ContentItemDisplay display = JsonConvert.DeserializeObject<ContentItemDisplay>(body);
+
+            Assert.Multiple(() =>
+            {
+                Assert.NotNull(display);
+                // Assert all is good, a success notification for each culture published and no warnings.
+                Assert.AreEqual(2, display.Notifications.Count(x => x.NotificationType == NotificationStyle.Success));
+                Assert.AreEqual(0, display.Notifications.Count(x => x.NotificationType == NotificationStyle.Warning));
+            });
+        }
     }
 }


feat: Testando ambiente.

feat: Testando ambiente.

--- FamintusApi/Views/Shared/_Layout.cshtml
+++ FamintusApi/Views/Shared/_Layout.cshtml
@@ -26,7 +26,11 @@

     @RenderBody()

+
Testando ambiente!

+

+
Que lindo...

+
     @Scripts.Render("~/bundles/jquery")
     @RenderSection("scripts", required: false)

-
+


Fix TemplateMapProvider to include Rendering Parameters

--- Fortis/Providers/TemplateMapProvider.cs
+++ Fortis/Providers/TemplateMapProvider.cs
@@ -64,6 +64,7 @@
         }

         private Dictionary<Type, Guid> _interfaceTemplateMap;
+
         public Dictionary<Type, Guid> InterfaceTemplateMap
         {
             get
@@ -79,11 +80,9 @@
                         {
                             foreach (var t in modelAssemblyProvider.Assembly.GetTypes())
                             {
-                                foreach (
-                                    TemplateMappingAttribute templateAttribute in
-                                        t.GetCustomAttributes(typeof(TemplateMappingAttribute), false))
+                                foreach (TemplateMappingAttribute templateAttribute in t.GetCustomAttributes(typeof (TemplateMappingAttribute), false))
                                 {
-                                    if (string.Equals(templateAttribute.Type, "InterfaceMap"))
+                                    if (string.Equals(templateAttribute.Type, "InterfaceMap") || string.Equals(templateAttribute.Type, "InterfaceRenderingParameter"))
                                     {
                                         if (!_interfaceTemplateMap.Keys.Contains(t))
                                         {


Bump version to 1.8

Bump version to 1.8

--- Hudl.Mjolnir/Properties/AssemblyInfo.cs
+++ Hudl.Mjolnir/Properties/AssemblyInfo.cs
@@ -36,6 +36,6 @@
 // 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: AssemblyInformationalVersion("1.7.6.0")]
-[assembly: AssemblyFileVersion("1.7.6.0")]
+[assembly: AssemblyInformationalVersion("1.8.0.0")]
+[assembly: AssemblyFileVersion("1.8.0.0")]
 [assembly: AssemblyVersion("1.0.0.0")]


remove usings

remove usings

--- UCRS.Data.Models/Course.cs
+++ UCRS.Data.Models/Course.cs
@@ -1,6 +1,5 @@
 using System.Collections.Generic;
 using System.ComponentModel.DataAnnotations;
-using System.ComponentModel.DataAnnotations.Schema;

 using UCRS.Common;


Bumped the version.

Bumped the version.

--- JexusManager/Properties/AssemblyInfo.cs
+++ JexusManager/Properties/AssemblyInfo.cs
@@ -32,5 +32,5 @@
 + "190a69a439dbfb969ebad72a6f7e2e047907da4a7b9c08c6e98d5f1be8b8cafaf3eb978914059a"
 + "245d4bc1")]

-[assembly: AssemblyVersion("12.0.5.0")]
-[assembly: AssemblyFileVersion("12.0.5.0")]
+[assembly: AssemblyVersion("12.0.6.0")]
+[assembly: AssemblyFileVersion("12.0.6.0")]


removed unnecessary cancellation token from delivery client

--- KenticoCloud.Delivery/DeliveryClient.cs
+++ KenticoCloud.Delivery/DeliveryClient.cs
@@ -21,8 +21,6 @@

         private HttpClient _httpClient;
         private DeliveryEndpointUrlBuilder _urlBuilder;
-        private CancellationTokenSource _tokenSource;
-

         private ICodeFirstModelProvider _codeFirstModelProvider;

@@ -84,22 +82,6 @@
             set { _httpClient = value; }
         }

-        /// <summary>
-        /// Cancelation token source used while sending the request to the endpoint.
-        /// </summary>
-        public CancellationTokenSource TokenSource
-        {
-            get
-            {
-                if (_tokenSource == null)
-                {
-                    return _tokenSource = new CancellationTokenSource();
-                }
-                return _tokenSource;
-            }
-            set { _tokenSource = value; }
-        }
-
         private QueryParameters.Utilities.ContentTypeExtractor _extractor;

         /// <summary>
@@ -545,8 +527,8 @@
             {
                 message.Headers.Authorization = new AuthenticationHeaderValue("Bearer", _deliveryOptions.PreviewApiKey);
             }
-
-            var response = await HttpClient.SendAsync(message, TokenSource.Token);
+
+            var response = await HttpClient.SendAsync(message);

             if (response.StatusCode == HttpStatusCode.OK)
             {


Correct fixed bits in SC register

Correct fixed bits in SC register

--- elbgb_core/SerialCommunicationController.cs
+++ elbgb_core/SerialCommunicationController.cs
@@ -14,8 +14,6 @@
             public const ushort SB = 0xFF01;
             public const ushort SC = 0xFF02;
         }
-
-        private const byte SerialControlMask = 0x7E;

         private InterruptController _interruptController;

@@ -84,7 +82,7 @@
                         return 0xFF;

                 case Registers.SC:
-                    return _serialControl;
+                    return (byte)(_serialControl | 0x7E);

                 default:
                     throw new ArgumentOutOfRangeException("address");
@@ -104,9 +102,6 @@
                     break;

                 case Registers.SC:
-                    // mask the unused bits in the control register, set unused to 1
-                    value |= SerialControlMask;
-
                     _serialControl = value;

                     // bit 1 sets internal or external shift clock source


Improve Filter documentation

Improve Filter documentation

--- LibGit2Sharp/Filter.cs
+++ LibGit2Sharp/Filter.cs
@@ -26,8 +26,8 @@
         ///   A pointer to a commit object or a list of pointers to consider as starting points.
         ///   <para>
         ///     Can be either a <see cref = "string" /> containing the sha or reference canonical name to use,
-        ///     a <see cref = "Branch" />, a <see cref = "Reference" />, a <see cref = "Commit" />, a <see cref = "Tag" />
-        ///     or a <see cref = "TagAnnotation" /> or even a mixed collection of all of the above.
+        ///     a <see cref = "Branch" />, a <see cref = "Reference" />, a <see cref = "Commit" />, a <see cref = "Tag" />,
+        ///     a <see cref = "TagAnnotation" />, an <see cref="ObjectId"/> or even a mixed collection of all of the above.
         ///     By default, the <see cref = "Repository.Head" /> will be used as boundary.
         ///   </para>
         /// </summary>
@@ -37,8 +37,8 @@
         ///   A pointer to a commit object or a list of pointers which will be excluded (along with ancestors) from the enumeration.
         ///   <para>
         ///     Can be either a <see cref = "string" /> containing the sha or reference canonical name to use,
-        ///     a <see cref = "Branch" />, a <see cref = "Reference" />, a <see cref = "Commit" />, a <see cref = "Tag" />
-        ///     or a <see cref = "TagAnnotation" /> or even a mixed collection of all of the above.
+        ///     a <see cref = "Branch" />, a <see cref = "Reference" />, a <see cref = "Commit" />, a <see cref = "Tag" />,
+        ///     a <see cref = "TagAnnotation" />, an <see cref="ObjectId"/> or even a mixed collection of all of the above.
         ///   </para>
         /// </summary>
         public object Until { get; set; }


Fixed an issue with argument preparation requiring literals instead of arbitrary expressions.

git-svn-id: 1b52f0a7ed2a8098cb721f3b9b4408691a7bfc16@599 c93b7781-d36b-0e4d-be4f-9d94f2a838be

--- Libraries/SQLDevice/Source/SQLDevice.cs
+++ Libraries/SQLDevice/Source/SQLDevice.cs
@@ -3807,7 +3807,7 @@
             SQLScalarType LParamType;
 			foreach (SQLPlanParameter LPlanParameter in ADevicePlan.DevicePlanNode.PlanParameters)
 			{
-				LParamValue = ADevicePlan.Plan.EvaluateLiteralArgument(LPlanParameter.PlanNode, LPlanParameter.SQLParameter.Name);
+				LParamValue = ADevicePlan.Plan.ExecuteNode(LPlanParameter.PlanNode);
 				LParamType = (SQLScalarType)Device.ResolveDeviceScalarType(ADevicePlan.Plan, (Schema.ScalarType)LPlanParameter.PlanNode.DataType);
                 LNativeParamValue = (LParamValue == null) ? null : LParamType.ParameterFromScalar(LParamValue);
                 if (LNativeParamValue != null)


Insert missing URI scheme in MangaFox chapter URIs

Chapter URIs listed in the series' page do not include the scheme which
throws an "InvalidOperationException" when generating a new URI. Using
regex, check if the URI starts with either HTTP or HTTPS and prefix
the HTTP scheme if false.

Referencing issue #95

--- MangaRipper.Plugin.MangaFox/MangaFox.cs
+++ MangaRipper.Plugin.MangaFox/MangaFox.cs
@@ -36,11 +36,21 @@
             var downloader = new DownloadService();

             var parser = new ParserHelper();
+
+            manga = CheckAndInsertMissingScheme(manga);

             // find all chapters in a manga
             string input = await downloader.DownloadStringAsync(manga, cancellationToken);
             var chaps = parser.ParseGroup("<a href=\"(?<Value>[^\"]+)\" title=\"(|[^\"]+)\" class=\"tips\">(?<Name>[^<]+)", input, "Name", "Value");
             progress.Report(100);
+
+            // Insert missing URI schemes in each chapter's URI.
+            // Provisional solution, the current implementation may not be the best way to go about it.
+            chaps = chaps.Select(chap => {
+                var newUri = CheckAndInsertMissingScheme(chap.Url);
+                return new Chapter(chap.OriginalName, newUri);
+            });
+
             return chaps;
         }

@@ -83,8 +93,38 @@
             return pages.Select(p =>
             {
                 var value = new Uri(new Uri(chapterUrl), (p + ".html")).AbsoluteUri;
+
                 return value;
             });
         }
+
+        ///
+        /// Checks if the URI is missing the HTTP or HTTPS scheme.
+        ///
+        /// <param name="uri">The URI to check.</param>
+        /// <param name="preferredScheme">The scheme to insert if it is missing one.</param>
+        /// <returns></returns>
+        public string CheckAndInsertMissingScheme(string uri, string preferredScheme = "http")
+        {
+            var missingSchemePattern = "^(?!http[s]:)(?=//)";
+
+            if (System.Text.RegularExpressions.Regex.IsMatch(uri, missingSchemePattern, System.Text.RegularExpressions.RegexOptions.IgnoreCase))
+            {
+                // Insert the missing colon if the preferred scheme doesn't end with one.
+                if (!preferredScheme.EndsWith(":"))
+                {
+                    preferredScheme = string.Concat(preferredScheme, ":");
+                }
+
+                // Return the uri with the preferred scheme prefixed.
+                return uri.Insert(0, preferredScheme);
+            }
+            else
+            {
+                // Return the unchanged value.
+                return uri;
+            }
+
+        }
     }
 }


fixed help generation

fixed help generation

--- ModuleFilesGenerator/CmdletsAnalyzer.cs
+++ ModuleFilesGenerator/CmdletsAnalyzer.cs
@@ -60,10 +60,21 @@
                     var aliasAttribute = attribute as AliasAttribute;
                     if (aliasAttribute != null)
                     {
+#if !NETCOREAPP2_0
                         foreach (var name in aliasAttribute.AliasNames)
                         {
                             cmdletInfo.Aliases.Add(name);
                         }
+#else
+                        var customAttributeData = type.GetCustomAttributesData().FirstOrDefault(c => c.AttributeType == typeof(AliasAttribute));
+                        if (customAttributeData != null)
+                        {
+                            foreach (var name in customAttributeData.ConstructorArguments)
+                            {
+                                cmdletInfo.Aliases.Add(name.Value as string);
+                            }
+                        }
+#endif
                     }

                     var helpAttribute = attribute as CmdletHelpAttribute;
@@ -78,21 +89,22 @@
                         cmdletInfo.OutputType = a.OutputType;
                         cmdletInfo.OutputTypeLink = a.OutputTypeLink;
                         cmdletInfo.OutputTypeDescription = a.OutputTypeDescription;
-                        if(a.SupportedPlatform.HasFlag(CmdletSupportedPlatform.All))
+                        if (a.SupportedPlatform.HasFlag(CmdletSupportedPlatform.All))
                         {
                             cmdletInfo.Platform = "All";
-                        } else
+                        }
+                        else
                         {
                             List<string> platforms = new List<string>();
-                            if(a.SupportedPlatform.HasFlag(CmdletSupportedPlatform.OnPremises))
+                            if (a.SupportedPlatform.HasFlag(CmdletSupportedPlatform.OnPremises))
                             {
                                 platforms.Add("SharePoint On-Premises");
                             }
-                            if(a.SupportedPlatform.HasFlag(CmdletSupportedPlatform.Online))
+                            if (a.SupportedPlatform.HasFlag(CmdletSupportedPlatform.Online))
                             {
                                 platforms.Add("SharePoint Online");
                             }
-                            if(a.SupportedPlatform.HasFlag(CmdletSupportedPlatform.SP2013))
+                            if (a.SupportedPlatform.HasFlag(CmdletSupportedPlatform.SP2013))
                             {
                                 platforms.Add("SharePoint 2013");
                             }
@@ -102,7 +114,7 @@
                             }
                             cmdletInfo.Platform = string.Join(", ", platforms);
                         }
-
+
                     }
                     var exampleAttribute = attribute as CmdletExampleAttribute;
                     if (exampleAttribute != null)
@@ -377,7 +389,7 @@

-#region Helpers
+        #region Helpers
         private static List<FieldInfo> GetFields(Type t)
         {
             var fieldInfoList = new List<FieldInfo>();
@@ -406,6 +418,6 @@
                 return name;
             }
         }
-#endregion
+        #endregion
     }
 }


Add a leading space in the Sender and Resent-Sender header values

--- MimeKit/MimeMessage.cs
+++ MimeKit/MimeMessage.cs
@@ -340,7 +340,7 @@
 				}

 				var options = FormatOptions.Default;
-				var builder = new StringBuilder ();
+				var builder = new StringBuilder (" ");
 				int len = "Sender: ".Length;

 				value.Encode (options, builder, ref len);
@@ -375,7 +375,7 @@
 				}

 				var options = FormatOptions.Default;
-				var builder = new StringBuilder ();
+				var builder = new StringBuilder (" ");
 				int len = "Resent-Sender: ".Length;

 				value.Encode (options, builder, ref len);


Deleting commented out code

Deleting commented out code

--- MoreLinq/Interleave.cs
+++ MoreLinq/Interleave.cs
@@ -84,7 +84,7 @@
         {
             // produce an iterator collection for all IEnumerable<T> instancess passed to us
             var seqIterators = new List<IEnumerator<T>>(sequences.GetEnumerators());
-            //var seqIterators = sequences.Select(e => e.GetEnumerator()).ToList();
+
             try
             {
                 var shouldContinue = true;


Removed Reverse() in invocation

Removed Reverse() in invocation

--- MrAdvice/Invocation.cs
+++ MrAdvice/Invocation.cs
@@ -66,28 +66,34 @@
             var adviceValues = new AdviceValues(target, aspectInfo.AdvisedMethod.DeclaringType, parameters);
             // at least there is one context
             AdviceContext adviceContext = new InnerMethodContext(adviceValues, aspectInfo.PointcutMethod);
-            foreach (var advice in aspectInfo.Advices.Reverse())
-            {
+            for (var adviceIndex = aspectInfo.Advices.Count - 1; adviceIndex >= 0; adviceIndex--)
+            {
+                var advice = aspectInfo.Advices[adviceIndex];
                 // aspects are processed from highest to lowest level, so they are linked here in the opposite order
                 // 3. as parameter
                 if (advice.ParameterAdvice != null && advice.ParameterIndex.HasValue)
                 {
                     var parameterIndex = advice.ParameterIndex.Value;
                     var parameterInfo = GetParameterInfo(aspectInfo.AdvisedMethod, parameterIndex);
-                    adviceContext = new ParameterAdviceContext(advice.ParameterAdvice, parameterInfo, parameterIndex, adviceValues, adviceContext);
+                    adviceContext = new ParameterAdviceContext(advice.ParameterAdvice, parameterInfo, parameterIndex,
+                        adviceValues, adviceContext);
                 }
                 // 2. as method
                 if (advice.MethodAdvice != null)
-                    adviceContext = new MethodAdviceContext(advice.MethodAdvice, aspectInfo.AdvisedMethod, adviceValues, adviceContext);
+                    adviceContext = new MethodAdviceContext(advice.MethodAdvice, aspectInfo.AdvisedMethod, adviceValues,
+                        adviceContext);
                 // 2b. as async method
                 if (advice.AsyncMethodAdvice != null)
-                    adviceContext = new MethodAsyncAdviceContext(advice.AsyncMethodAdvice, aspectInfo.AdvisedMethod, adviceValues, adviceContext);
+                    adviceContext = new MethodAsyncAdviceContext(advice.AsyncMethodAdvice, aspectInfo.AdvisedMethod,
+                        adviceValues, adviceContext);
                 // 1. as property
                 if (advice.PropertyAdvice != null && aspectInfo.PointcutProperty != null)
-                    adviceContext = new PropertyAdviceContext(advice.PropertyAdvice, aspectInfo.PointcutProperty, aspectInfo.IsPointcutPropertySetter, adviceValues, adviceContext);
+                    adviceContext = new PropertyAdviceContext(advice.PropertyAdvice, aspectInfo.PointcutProperty,
+                        aspectInfo.IsPointcutPropertySetter, adviceValues, adviceContext);
                 // 1b. as event
                 if (advice.EventAdvice != null && aspectInfo.PointcutEvent != null)
-                    adviceContext = new EventAdviceContext(advice.EventAdvice, aspectInfo.PointcutEvent, aspectInfo.IsPointcutEventAdder, adviceValues, adviceContext);
+                    adviceContext = new EventAdviceContext(advice.EventAdvice, aspectInfo.PointcutEvent,
+                        aspectInfo.IsPointcutEventAdder, adviceValues, adviceContext);
             }

             // if the method is no task, then we return immediately


fixed console app

fixed console app

--- NSpecRunner/Program.cs
+++ NSpecRunner/Program.cs
@@ -12,10 +12,10 @@
             {
                 var classFilter = args.Length > 1 ? args[1] : "";

-                //var finder = new SpecFinder(args[0], new Reflector(), classFilter);
+                var finder = new SpecFinder(args[0], new Reflector(), classFilter);

                 //var finder = new SpecFinder(@"C:\Development\GameTrader\GameTrader.Specs\bin\Debug\GameTrader.Specs.dll", new Reflector(), "desribe_AuthenticationController");
-                var finder = new SpecFinder(@"C:\users\amir\nspec\samplespecs\bin\debug\samplespecs.dll", new Reflector(), "describe_car");
+                //var finder = new SpecFinder(@"C:\users\amir\nspec\samplespecs\bin\debug\samplespecs.dll", new Reflector(), "describe_car");

                 var builder = new ContextBuilder(finder);


[Core] Add warnings for 'load' and 'nolog' usage

--- Oxide.Core/OxideMod.cs
+++ Oxide.Core/OxideMod.cs
@@ -221,6 +221,12 @@
                 watcher.OnPluginAdded += watcher_OnPluginAdded;
                 watcher.OnPluginRemoved += watcher_OnPluginRemoved;
             }
+
+            // Check for 'load' variable and warn
+            if (CommandLine.HasVariable("load")) LogWarning("The 'load' variable is unused and can be removed");
+
+            // Check for 'nolog' variable and warn
+            if (CommandLine.HasVariable("nolog")) LogWarning("Usage of the 'nolog' variable will prevent logging");
         }

         /// <summary>


Change source generated filename

Change source generated filename

--- OneOf.SourceGenerator/OneOfGenerator.cs
+++ OneOf.SourceGenerator/OneOfGenerator.cs
@@ -81,7 +81,7 @@
                     continue;
                 }

-                context.AddSource($"{namedSymbol.ContainingNamespace}_{namedSymbol.Name}.generated.cs",
+                context.AddSource($"{namedSymbol.ContainingNamespace}_{namedSymbol.Name}.g.cs",
                     SourceText.From(classSource, Encoding.UTF8));
             }
         }


Binary version 2.0

Binary version 2.0

--- PSEverything/Properties/AssemblyInfo.cs
+++ PSEverything/Properties/AssemblyInfo.cs
@@ -35,4 +35,4 @@
 // by using the '*' as shown below:
 // [assembly: AssemblyVersion("1.0.*")]
 [assembly: AssemblyVersion("1.0.0.0")]
-[assembly: AssemblyFileVersion("1.3.1.0")]
+[assembly: AssemblyFileVersion("2.0.0.0")]


added a new log

added a new log

--- PSharpActors/PSharpActors/ActorModel.cs
+++ PSharpActors/PSharpActors/ActorModel.cs
@@ -219,6 +219,7 @@
         /// <param name="actor">IPSharpActor</param>
         public static void Halt(IPSharpActor actor)
         {
+            ActorModel.Runtime.Log($"<ActorModelLog> Halt invoked on '{actor.Id}'.");
             ActorModel.Runtime.SendEvent(actor.Id, new Halt());
         }


making DefaultIfEmpty support objects

making DefaultIfEmpty support objects

--- Packager/Extensions/StringExtensions.cs
+++ Packager/Extensions/StringExtensions.cs
@@ -9,13 +9,6 @@
             return string.Format("\"{0}\"", value);
         }

-        public static string ToDefaultIfEmpty(this string value, string defaultValue = "")
-        {
-            return string.IsNullOrWhiteSpace(value)
-                ? defaultValue
-                : value;
-        }
-
         public static int? ToInteger(this string value, int? defaultValue = null)
         {
             if (string.IsNullOrWhiteSpace(value))
@@ -50,9 +43,21 @@

         public static string FromCamelCaseToSpaces(this string value)
         {
-            return string.IsNullOrWhiteSpace(value)
-                ? string.Empty
+            return string.IsNullOrWhiteSpace(value)
+                ? string.Empty
                 : Regex.Replace(value, "([a-z](?=[A-Z])|[A-Z](?=[A-Z][a-z]))", "$1 ");
         }
+
+        public static string ToDefaultIfEmpty(this object value, string defaultValue = "")
+        {
+            if (value == null)
+            {
+                return defaultValue;
+            }
+
+            return string.IsNullOrWhiteSpace(value.ToString()) == false
+                ? value.ToString()
+                : defaultValue;
+        }
     }
-}
+}


Correctly updated menu item style.

Correctly updated menu item style.

--- Perspex.Themes.Default/MenuItemStyle.cs
+++ Perspex.Themes.Default/MenuItemStyle.cs
@@ -52,7 +52,7 @@
                         new Setter(Path.IsVisibleProperty, false),
                     },
                 },
-                new Style(x => x.OfType<MenuItem>().PropertyEquals(MenuItem.IsSubMenuOpenProperty, true).Template().Name("root"))
+                new Style(x => x.OfType<Menu>().Child().OfType<MenuItem>().PropertyEquals(MenuItem.IsSubMenuOpenProperty, true).Template().Name("root"))
                 {
                     Setters = new[]
                     {


v0.3: route matching fix;

v0.3: route matching fix;

--- system/core/SillyRouteMap.cs
+++ system/core/SillyRouteMap.cs
@@ -117,6 +117,11 @@

                 if (Controller == null)
                 {
+                    if (!String.IsNullOrEmpty(primary))
+                    {
+                        return(false);
+                    }
+
                     Controller = GetController(fallback);

                     return(Controller != null);
@@ -149,6 +154,11 @@

                 if (Method == null)
                 {
+                    if (!String.IsNullOrEmpty(primary))
+                    {
+                        return(false);
+                    }
+
                     Method = GetMethod(fallback, allMethods);

                     return (Method != null);


Fix Preaccoppiati

Fix Preaccoppiati

--- src/backend/SO115App.FakePersistance.ExternalAPI/Servizi/Preaccoppiati/GetPreAccoppiati.cs
+++ src/backend/SO115App.FakePersistance.ExternalAPI/Servizi/Preaccoppiati/GetPreAccoppiati.cs
@@ -51,9 +51,9 @@
                 {
                     var lstSquadre = _getSquadre.GetAllByCodiceDistaccamento(codice.Split('.')[0]).Result.Squadre.ToList();

-                    lstSquadre.ForEach(squadra => squadra.CodiciMezziPreaccoppiati?.ToList().ForEach(m =>
+                    lstSquadre.Where(s => !s.spotType.Equals("MODULE")).ToList().ForEach(squadra => squadra.CodiciMezziPreaccoppiati?.ToList().ForEach(m =>
                         lstSquadreMezzo.TryAdd(m, lstSquadre
-                            .Where(s => s.Codice.Equals(squadra.Codice) && !s.spotType.Equals("MODULE"))
+                            .Where(s => s.Codice.Equals(squadra.Codice))
                             .Select(s => new Squadra(s.Codice, s.Descrizione, MappaStatoSquadraDaStatoMezzo.MappaStato(squadra.Stato)))
                             .ToArray())));
                 });


Fixed end of frame sometimes causing errors

--- Archon.SwissArmyLib/Coroutines/BetterCoroutines.cs
+++ Archon.SwissArmyLib/Coroutines/BetterCoroutines.cs
@@ -597,15 +597,18 @@
                 var next = current.Next;
                 var routine = current.Value;

-                routine.WaitingForEndOfFrame = false;
-
-                var scaledTime = GetTime(routine.UpdateLoop, false);
-                var unscaledTime = GetTime(routine.UpdateLoop, true);
-
-                var shouldContinue = UpdateCoroutine(scaledTime, unscaledTime, routine);
-
-                if (!shouldContinue)
-                    Stop(routine);
+                if (routine.WaitingForEndOfFrame)
+                {
+                    routine.WaitingForEndOfFrame = false;
+
+                    var scaledTime = GetTime(routine.UpdateLoop, false);
+                    var unscaledTime = GetTime(routine.UpdateLoop, true);
+
+                    var shouldContinue = UpdateCoroutine(scaledTime, unscaledTime, routine);
+
+                    if (!shouldContinue)
+                        Stop(routine);
+                }

                 CoroutinesWaitingForEndOfFrame.Remove(current);


Fix #290

Fix #290

--- letsencrypt-win-simple/Plugin/IISPlugin.cs
+++ letsencrypt-win-simple/Plugin/IISPlugin.cs
@@ -164,6 +164,13 @@
             File.Copy(_sourceFilePath, webConfigPath, true);
         }

+        /// <summary>
+        /// Install for regular bindings
+        /// </summary>
+        /// <param name="target"></param>
+        /// <param name="pfxFilename"></param>
+        /// <param name="store"></param>
+        /// <param name="certificate"></param>
         public override void Install(Target target, string pfxFilename, X509Store store, X509Certificate2 certificate)
         {
             using (var iisManager = new ServerManager())
@@ -172,32 +179,31 @@
                 var hosts = target.GetHosts(true);
                 foreach (var host in hosts)
                 {
-                    var existingBinding =
-                        (from b in site.Bindings where b.Host == host && b.Protocol == "https" select b).FirstOrDefault();
-                    if (existingBinding != null)
-                    {
-                        Program.Log.Information(true, "Updating existing https binding for {host}", host);
-                        Program.Log.Information("IIS will serve the new certificate after the Application Pool IdleTimeout has been reached.");
-
-                        // Replace instead of change binding because of #371
-                        Binding replacement = site.Bindings.CreateElement("binding");
-                        replacement.Protocol = existingBinding.Protocol;
-                        replacement.BindingInformation = existingBinding.BindingInformation;
-                        replacement.CertificateStoreName = store.Name;
-                        replacement.CertificateHash = certificate.GetCertHash();
-                        foreach (ConfigurationAttribute attr in existingBinding.Attributes)
-                        {
-                            replacement.SetAttributeValue(attr.Name, attr.Value);
-                        }
-                        site.Bindings.Remove(existingBinding);
-                        site.Bindings.Add(replacement);
+                    var existingBindings = (from b in site.Bindings where b.Host == host && b.Protocol == "https" select b).ToList();
+                    if (existingBindings.Any())
+                    {
+                        foreach (var existingBinding in existingBindings)
+                        {
+                            Program.Log.Information(true, "Updating existing https binding {host}:{port}", host, existingBinding.EndPoint.Port);
+
+                            // Replace instead of change binding because of #371
+                            Binding replacement = site.Bindings.CreateElement("binding");
+                            replacement.Protocol = existingBinding.Protocol;
+                            replacement.BindingInformation = existingBinding.BindingInformation;
+                            replacement.CertificateStoreName = store.Name;
+                            replacement.CertificateHash = certificate.GetCertHash();
+                            foreach (ConfigurationAttribute attr in existingBinding.Attributes)
+                            {
+                                replacement.SetAttributeValue(attr.Name, attr.Value);
+                            }
+                            site.Bindings.Remove(existingBinding);
+                            site.Bindings.Add(replacement);
+                        }
                     }
                     else
                     {
                         Program.Log.Information(true, "Adding new https binding for {host}", host);
-                        var existingHTTPBinding =
-                            (from b in site.Bindings where b.Host == host && b.Protocol == "http" select b)
-                                .FirstOrDefault();
+                        var existingHTTPBinding = (from b in site.Bindings where b.Host == host && b.Protocol == "http" select b).FirstOrDefault();
                         if (existingHTTPBinding != null)
                         {
                             string IP = GetIP(existingHTTPBinding.EndPoint.ToString(), host);
@@ -220,12 +226,24 @@
                 }
                 Program.Log.Information("Committing binding changes to IIS");
                 iisManager.CommitChanges();
-            }
-        }
-
-        //This doesn't take any certificate info to enable centralized ssl
+                Program.Log.Information("IIS will serve the new certificate after the Application Pool IdleTimeout has been reached.");
+            }
+        }
+
+        /// <summary>
+        /// Install for Central SSL bindings
+        /// </summary>
+        /// <param name="target"></param>
         public override void Install(Target target)
         {
+            if (!(_iisVersion.Major >= 8))
+            {
+                var errorMessage = "You aren't using IIS 8 or greater, so Centralized SSL is not supported";
+                Program.Log.Error(errorMessage);
+                //Not using IIS 8+ so can't set centralized certificates
+                throw new InvalidOperationException(errorMessage);
+            }
+
             try
             {
                 using (var iisManager = new ServerManager())
@@ -234,37 +252,29 @@
                     var hosts = target.GetHosts(true);
                     foreach (var host in hosts)
                     {
-                        var existingBinding =
-                            (from b in site.Bindings where b.Host == host && b.Protocol == "https" select b)
-                                .FirstOrDefault();
-                        if (!(_iisVersion.Major >= 8))
-                        {
-                            var errorMessage = "You aren't using IIS 8 or greater, so centralized SSL is not supported";
-                            Program.Log.Error(errorMessage);
-                            //Not using IIS 8+ so can't set centralized certificates
-                            throw new InvalidOperationException(errorMessage);
-                        }
-                        else if (existingBinding != null)
-                        {
-                            if (existingBinding.GetAttributeValue("sslFlags").ToString() != "3")
-                            {
-                                Program.Log.Information("Updating existing https binding");
-                                //IIS 8+ and not using centralized SSL with SNI
-                                existingBinding.CertificateStoreName = null;
-                                existingBinding.CertificateHash = null;
-                                existingBinding.SetAttributeValue("sslFlags", 3);
-                            }
-                            else
-                            {
-                                Program.Log.Information("You specified Central SSL, have an existing binding using Central SSL with SNI, so there is nothing to update for this binding");
+                        var existingBindings = (from b in site.Bindings where b.Host == host && b.Protocol == "https" select b).ToList();
+                        if (existingBindings.Any())
+                        {
+                            foreach (var existingBinding in existingBindings)
+                            {
+                                if (existingBinding.GetAttributeValue("sslFlags").ToString() != "3")
+                                {
+                                    Program.Log.Information(true, "Converting existing https binding {host}:{port} to Central SSL", host, existingBinding.EndPoint.Port);
+                                    //IIS 8+ and not using centralized SSL with SNI
+                                    existingBinding.CertificateStoreName = null;
+                                    existingBinding.CertificateHash = null;
+                                    existingBinding.SetAttributeValue("sslFlags", 3);
+                                }
+                                else
+                                {
+                                    Program.Log.Verbose("You specified Central SSL, have an existing binding using Central SSL with SNI, so there is nothing to update for this binding");
+                                }
                             }
                         }
                         else
                         {
                             Program.Log.Information(true, "Adding Central SSL https binding");
-                            var existingHTTPBinding =
-                                (from b in site.Bindings where b.Host == host && b.Protocol == "http" select b)
-                                    .FirstOrDefault();
+                            var existingHTTPBinding = (from b in site.Bindings where b.Host == host && b.Protocol == "http" select b).FirstOrDefault();
                             if (existingHTTPBinding != null)
                             //This had been a fix for the multiple site San cert, now it's a precaution against erroring out
                             {
@@ -315,7 +325,6 @@
         {
             Auto(target);
         }
-

         public override void DeleteAuthorization(string answerPath, string token, string webRootPath, string filePath)
         {


Checking for dead links (mp3 match engine)

--- Audiotica.Data/Service/RunTime/Mp3SearchService.cs
+++ Audiotica.Data/Service/RunTime/Mp3SearchService.cs
@@ -22,8 +22,6 @@
 {
     public class Mp3SearchService : IMp3SearchService
     {
-        private readonly IAppSettingsHelper _appSettingsHelper;
-
         private const string SoundCloudSearchUrl =
             "https://api.soundcloud.com/search/sounds?client_id={0}&limit={1}&q={2}";

@@ -34,6 +32,7 @@
         private const string NeteaseSuggestApi = "http://music.163.com/api/search/suggest/web?csrf_token=";
         private const string NeteaseDetailApi = "http://music.163.com/api/song/detail/?ids=%5B{0}%5D";
         private const string Mp3SkullSearchUrl = "http://mp3skull.com/search_db.php?q={0}&fckh={1}";
+        private readonly IAppSettingsHelper _appSettingsHelper;
         private string _mp3SkullFckh;

         public Mp3SearchService(IAppSettingsHelper appSettingsHelper)
@@ -83,7 +82,7 @@
                     song.artwork_url = song.artwork_url.Replace("large", "t500x500");
                 }

-                return FilterByTypeAndMatch(parseResp.collection.Select(p => new WebSong(p)).ToList(),
+                return await FilterByTypeAndMatch(parseResp.collection.Select(p => new WebSong(p)).ToList(),
                     title, artist);
             }
         }
@@ -104,7 +103,7 @@

                 if (parseResp == null || parseResp.response == null || !resp.IsSuccessStatusCode) return null;

-                return FilterByTypeAndMatch(parseResp.response.Select(p => new WebSong(p)).ToList(),
+                return await FilterByTypeAndMatch(parseResp.response.Select(p => new WebSong(p)).ToList(),
                     title, artist);
             }
         }
@@ -152,7 +151,7 @@
                         if (songNode.Attributes.Contains("data-bitrate"))
                             song.BitRate = int.Parse(songNode.Attributes["data-bitrate"].Value);
                         if (songNode.Attributes.Contains("data-filesize"))
-                            song.ByteSize = (int) double.Parse(songNode.Attributes["data-filesize"].Value);
+                            song.ByteSize = (int)double.Parse(songNode.Attributes["data-filesize"].Value);
                         if (songNode.Attributes.Contains("data-duration"))
                         {
                             var duration = songNode.Attributes["data-duration"].Value;
@@ -197,7 +196,7 @@
                         songs.Add(song);
                     }

-                    return songs.Any() ? FilterByTypeAndMatch(songs, title, artist) : null;
+                    return songs.Any() ? await FilterByTypeAndMatch(songs, title, artist) : null;
                 }
             }
         }
@@ -237,7 +236,7 @@
                     }
                 }

-                return songs.Any() ? FilterByTypeAndMatch(songs, title, artist) : null;
+                return songs.Any() ? await FilterByTypeAndMatch(songs, title, artist) : null;
             }
         }

@@ -275,7 +274,7 @@
                         }
                     }

-                    return songs.Any() ? FilterByTypeAndMatch(songs, title, artist) : null;
+                    return songs.Any() ? await FilterByTypeAndMatch(songs, title, artist) : null;
                 }
             }
         }
@@ -306,8 +305,8 @@
                 var songs = new List<WebSong>();

                 foreach (var vid in from searchResult in searchListResponse.Items
-                    where searchResult.Id.Kind == "youtube#video"
-                    select new WebSong(searchResult))
+                                    where searchResult.Id.Kind == "youtube#video"
+                                    select new WebSong(searchResult))
                 {
                     using (var client = new HttpClient())
                     {
@@ -337,7 +336,7 @@
                         songs.Add(vid);
                     }
                 }
-                return FilterByTypeAndMatch(songs, title, artist);
+                return await FilterByTypeAndMatch(songs, title, artist);
             }
             catch
             {
@@ -454,7 +453,7 @@
                     songs.Add(song);
                 }

-                return songs.Any() ? FilterByTypeAndMatch(songs, title, artist) : null;
+                return songs.Any() ? await FilterByTypeAndMatch(songs, title, artist) : null;
             }
         }

@@ -487,7 +486,7 @@
             return minuteDic.OrderByDescending(p => p.Value).FirstOrDefault().Key;
         }

-        private List<WebSong> FilterByTypeAndMatch(IEnumerable<WebSong> songs, string title, string artist)
+        private async Task<List<WebSong>> FilterByTypeAndMatch(IEnumerable<WebSong> songs, string title, string artist)
         {
             //just in case a song is "acoustic version"
             var cleanTile = title.Replace("(acoustic)", "");
@@ -525,7 +524,36 @@
              *it will be best to eliminate the two minute songs
              */
             var mostUsedMinute = GetMostUsedMinute(filterSongs);
-            return filterSongs.Where(p => p.Duration.Minutes == mostUsedMinute).ToList();
+            var filtered = filterSongs.Where(p => p.Duration.Minutes == mostUsedMinute).ToList();
+            var matches = new List<WebSong>();
+
+            foreach (var webSong in filtered)
+            {
+                if (await IsUrlOnlineAsync(webSong.AudioUrl))
+                    matches.Add(webSong);
+            }
+
+            return matches;
+        }
+
+        private async Task<bool> IsUrlOnlineAsync(string url)
+        {
+            try
+            {
+                using (var client = new HttpClient())
+                {
+                    client.Timeout = TimeSpan.FromSeconds(10);
+                    var resp =
+                        await
+                            client.SendAsync(new HttpRequestMessage(HttpMethod.Head, new Uri(url)),
+                                HttpCompletionOption.ResponseHeadersRead);
+                    return resp.IsSuccessStatusCode;
+                }
+            }
+            catch
+            {
+                return false;
+            }
         }

         private bool IsCorrectType(string title, string songTitle, string type)


Returns fallback feerate for coins not supporting fee rate query in NBXplorer

--- BTCPayServer/Services/Fees/NBxplorerFeeProvider.cs
+++ BTCPayServer/Services/Fees/NBxplorerFeeProvider.cs
@@ -39,6 +39,8 @@
         ExplorerClient _ExplorerClient;
         public async Task<FeeRate> GetFeeRateAsync()
         {
+            if (!_ExplorerClient.Network.SupportEstimatesSmartFee)
+                return _Factory.Fallback;
             try
             {
                 return (await _ExplorerClient.GetFeeRateAsync(_Factory.BlockTarget).ConfigureAwait(false)).FeeRate;


Update to camera position handling when bounds is smaller than game siz

--- Raccoon/Core/Camera.cs
+++ Raccoon/Core/Camera.cs
@@ -53,6 +53,10 @@
             set {
                 if (ClampValues) {
                     value = Math.Round(value);
+                }
+
+                if (Bounds.Width < Width && Bounds.Height < Height) {
+                    return;
                 }

                 _position = !UseBounds ? value : Math.Clamp(value, new Rectangle(Bounds.Position, Bounds.Size - Size));


[fix]: 読み込み処理を変更

[fix]: 読み込み処理を変更

文字コードによる問題だと嫌なので、byteをきっちり取るようにしました

--- block-program/Communication/CommunicationService.cs
+++ block-program/Communication/CommunicationService.cs
@@ -89,6 +89,11 @@
                 return;
             }
             var port = sender as SerialPort;
+            if(port.BytesToRead < 7)
+            {
+                return;
+            }
+            /*
             string indata = port.ReadExisting();
             byte[] data = System.Text.ASCIIEncoding.ASCII.GetBytes(indata);
             int headIndex = Array.FindIndex(
@@ -100,6 +105,13 @@
                 return;
             }
             byte[] packetData = data.Skip(headIndex).Take(7).ToArray();
+             */
+            byte[] packetData = new byte[7];
+            port.Read(packetData, 0, 7);
+            port.ReadExisting();
+//            System.Diagnostics.Debug.WriteLine(indata);
+//            System.Diagnostics.Debug.WriteLine(BitConverter.ToString(data));
+            System.Diagnostics.Debug.WriteLine(BitConverter.ToString(packetData));
             try
             {
                 var packet = new Robot.Robot2PcPacket(packetData);


Change to Android Location Manager - some devices reporting issues with 5000, 2 default - so using 0,0

Expect this code to be replaced by new interface soon - see #413 and #398

--- Cirrious/Location/Cirrious.MvvmCross.Plugins.Location.Droid/MvxAndroidGeoLocationWatcher.cs
+++ Cirrious/Location/Cirrious.MvvmCross.Plugins.Location.Droid/MvxAndroidGeoLocationWatcher.cs
@@ -65,7 +65,8 @@
                 SendError(MvxLocationErrorCode.ServiceUnavailable);
                 return;
             }
-            _locationManager.RequestLocationUpdates(bestProvider, 5000, 2, _locationListener);
+            // 4th September 2013 - defaults changed to 0,0 - meaning send updates as often as possible
+            _locationManager.RequestLocationUpdates(bestProvider, 0, 0, _locationListener);
             // TODO - Ideally - _geoWatcher.MovementThreshold needed too
         }


nuevo y corregido

nuevo y corregido

(TFS CS 5)

--- Bancos/BancosDF/Domiciliaciones/Domiciliaciones.cs
+++ Bancos/BancosDF/Domiciliaciones/Domiciliaciones.cs
@@ -13,7 +13,7 @@

 namespace BancosDF.Domiciliaciones
 {
-    solo corrigiendo unchecked bug
+    hola dola coregido

     [ArchivoTextoIncontextual(162, TipoLinea = typeof(Linea), Culture = "es-ES", Codificacion = Codificacion.OEMMultilingualLatinIAndEuro, RellenarConCeros=RellenarConCeros.SoloNumeros)]
     public class Fichero


Wonder if this is the issue

Wonder if this is the issue

--- Battery-Commander.Web/Models/UnitStatsViewModel.cs
+++ Battery-Commander.Web/Models/UnitStatsViewModel.cs
@@ -26,7 +26,7 @@
             public int Completed { get; set; }

             [DisplayFormat(DataFormatString = SSDStatusModel.Format)]
-            public Decimal Percentage => Assigned > 0 ? Completed / Assigned * 100 : Decimal.Zero;
+            public Decimal Percentage => Assigned > 0 ? (Decimal)Completed / Assigned * 100 : Decimal.Zero;
         }

         public class Stat


Added null checks to FocusIndicator in OnScreenKeyboard.

--- Engines/Forms/FlatRedBall.Forms/FlatRedBall.Forms.Shared/Controls/Games/OnScreenKeyboard.cs
+++ Engines/Forms/FlatRedBall.Forms/FlatRedBall.Forms.Shared/Controls/Games/OnScreenKeyboard.cs
@@ -188,10 +188,10 @@

         private void HandleLetterSelect()
         {
-            var selected = FocusIndicator.Parent;
+            var selected = FocusIndicator?.Parent;

             var wordAfterKey = String.Empty;
-            if(selected.Name.Length > 2)
+            if(selected?.Name.Length > 2)
             {
                 wordAfterKey = selected.Name.Substring(3);
             }
@@ -272,7 +272,7 @@

         private void HandleMove(RepositionDirections direction)
         {
-            var selected = FocusIndicator.Parent as IRenderableIpso;
+            var selected = FocusIndicator?.Parent as IRenderableIpso;

             float x = 0;
             float y = 0;
@@ -302,7 +302,7 @@
             }

             var newItem = GetKeyOrButtonAt(x, y);
-            if (newItem != null)
+            if (newItem != null && FocusIndicator != null)
             {
                 FocusIndicator.Parent = newItem;
             }


Paste is formatting because we're not intercepting the 97 paste command, just the 2k paste command. So now we intercept both.

--- Release/Product/Node/Node/EditFilter.cs
+++ Release/Product/Node/Node/EditFilter.cs
@@ -65,6 +65,12 @@
                         _editorOps.Paste();
                         return VSConstants.S_OK;
                 }
+            } else if (pguidCmdGroup == VSConstants.GUID_VSStandardCommandSet97) {
+                switch ((VSConstants.VSStd97CmdID)nCmdID) {
+                    case VSConstants.VSStd97CmdID.Paste:
+                        _editorOps.Paste();
+                        return VSConstants.S_OK;
+                }
             }

             return _next.Exec(ref pguidCmdGroup, nCmdID, nCmdexecopt, pvaIn, pvaOut);


Build error fix.

Build error fix.

--- Manager.Integration/Manager.Integration.Test/FunctionalTests/OneManagerAndZeroNodesTests.cs
+++ Manager.Integration/Manager.Integration.Test/FunctionalTests/OneManagerAndZeroNodesTests.cs
@@ -4,9 +4,7 @@
 using System.IO;
 using System.Threading;
 using System.Threading.Tasks;
-using log4net;
 using log4net.Config;
-using log4net.Repository.Hierarchy;
 using Manager.Integration.Test.Constants;
 using Manager.Integration.Test.Helpers;
 using Manager.Integration.Test.Tasks;
@@ -33,10 +31,6 @@
 		{
 		}

-		private bool _clearDatabase = true;
-		private string _buildMode = "Debug";
-
-
 		[TestFixtureSetUp]
 		public void TestFixtureSetUp()
 		{
@@ -49,14 +43,14 @@
 			XmlConfigurator.ConfigureAndWatch(new FileInfo(configurationFile));

-			if (_clearDatabase)
+			if (ClearDatabase)
 			{
 				DatabaseHelper.TryClearDatabase(ManagerDbConnectionString);
 			}

 			CancellationTokenSource = new CancellationTokenSource();

-			AppDomainTask = new AppDomainTask(_buildMode);
+			AppDomainTask = new AppDomainTask(BuildMode);

 			Task = AppDomainTask.StartTask(numberOfManagers: 1,
 			                               numberOfNodes: 0,
@@ -84,7 +78,7 @@
 			if (exp != null)
 			{
 				this.Log().FatalWithLineNumber(exp.Message,
-				                                 exp);
+				                               exp);
 			}
 		}

@@ -136,7 +130,7 @@
 			var startJobTaskHelper = new StartJobTaskHelper();

 			var taskHlp = startJobTaskHelper.ExecuteCreateNewJobTasks(jobManagerTaskCreators,
-																	  CancellationTokenSource,
+			                                                          CancellationTokenSource,
 			                                                          timeout);

 			checkJobHistoryStatusTimer.ManualResetEventSlim.Wait(timeout);


IRefactorProperty Tests

IRefactorProperty Tests

--- Blueprint41.UnitTest/Tests/TestRefactorProperty.cs
+++ Blueprint41.UnitTest/Tests/TestRefactorProperty.cs
@@ -4,6 +4,7 @@
 using System.Collections.Generic;
 using System.Text;
 using System.Text.RegularExpressions;
+using System.Threading.Tasks;

 namespace Blueprint41.UnitTest.Tests
 {
@@ -55,7 +56,7 @@
                 Assert.Throws<ArgumentNullException>(() => Entities["Person"].Properties["FullName"].Refactor.Rename(null));

                 // TODO: Failed: Should not support empty string
-                Assert.Throws<Exception>(() => Entities["Person"].Properties["FullName"].Refactor.Rename(""));
+                Assert.Throws<Exception>(() => Entities["Person"].Properties["FullName"].Refactor.Rename(""));
             }
         }

@@ -316,5 +317,402 @@
             model.Execute(true);
         }
         #endregion
+
+        #region IRefactorPropertyConvert
+        private class DataModelPropertyConvert : DatastoreModel<DataModelPropertyConvert>
+        {
+            protected override void SubscribeEventHandlers()
+            {
+
+            }
+
+            [Version(0, 0, 0)]
+            public void Script_0_0_0()
+            {
+                FunctionalIds.Default = FunctionalIds.New("Shared", "0", IdFormat.Numeric, 0);
+
+                Entities.New("BaseEntity")
+                       .AddProperty("Uid", typeof(string), false, IndexType.Unique)
+                       .Abstract(true)
+                       .Virtual(true)
+                       .SetKey("Uid", true)
+                       .AddProperty("LastModifiedOn", typeof(DateTime))
+                       .SetRowVersionField("LastModifiedOn");
+
+                Entities.New("Scene", Entities["BaseEntity"])
+                       .AddProperty("Name", typeof(string), IndexType.Unique)
+                       .AddProperty("BoolToLong", typeof(bool))
+                       .AddProperty("BoolToDouble", typeof(bool))
+                       .AddProperty("BoolToString", typeof(bool))
+                       .AddProperty("LongToBool", typeof(long))
+                       .AddProperty("LongToDouble", typeof(long))
+                       .AddProperty("LongToString", typeof(long))
+                       .AddProperty("DoubleToBool", typeof(double))
+                       .AddProperty("DoubleToLong", typeof(double))
+                       .AddProperty("DoubleToString", typeof(double))
+                       .AddProperty("StringToBool", typeof(string))
+                       .AddProperty("StringToLong", typeof(string))
+                       .AddProperty("StringToDouble", typeof(string));
+            }
+
+            [Version(0, 0, 1)]
+            public void Script_0_0_1()
+            {
+                // TODO: Not able to convert types specified by genericConvertTabel (Property.cs)
+
+                Assert.IsTrue(typeof(bool) == Entities["Scene"].Properties["BoolToLong"].SystemReturnType);
+                Assert.IsTrue(typeof(bool) == Entities["Scene"].Properties["BoolToDouble"].SystemReturnType);
+                Assert.IsTrue(typeof(bool) == Entities["Scene"].Properties["BoolToString"].SystemReturnType);
+
+                Assert.IsTrue(typeof(long) == Entities["Scene"].Properties["LongToBool"].SystemReturnType);
+                Assert.IsTrue(typeof(long) == Entities["Scene"].Properties["LongToDouble"].SystemReturnType);
+                Assert.IsTrue(typeof(long) == Entities["Scene"].Properties["LongToString"].SystemReturnType);
+
+                Assert.IsTrue(typeof(double) == Entities["Scene"].Properties["DoubleToBool"].SystemReturnType);
+                Assert.IsTrue(typeof(double) == Entities["Scene"].Properties["DoubleToLong"].SystemReturnType);
+                Assert.IsTrue(typeof(double) == Entities["Scene"].Properties["DoubleToString"].SystemReturnType);
+
+                Assert.IsTrue(typeof(string) == Entities["Scene"].Properties["StringToBool"].SystemReturnType);
+                Assert.IsTrue(typeof(string) == Entities["Scene"].Properties["StringToLong"].SystemReturnType);
+                Assert.IsTrue(typeof(string) == Entities["Scene"].Properties["StringToDouble"].SystemReturnType);
+
+                Assert.DoesNotThrow(() => Entities["Scene"].Properties["BoolToLong"].Refactor.Convert(typeof(long)));
+                Assert.DoesNotThrow(() => Entities["Scene"].Properties["BoolToDouble"].Refactor.Convert(typeof(double)));
+                Assert.DoesNotThrow(() => Entities["Scene"].Properties["BoolToString"].Refactor.Convert(typeof(string)));
+
+                Assert.DoesNotThrow(() => Entities["Scene"].Properties["LongToBool"].Refactor.Convert(typeof(bool)));
+                Assert.DoesNotThrow(() => Entities["Scene"].Properties["LongToDouble"].Refactor.Convert(typeof(double)));
+                Assert.DoesNotThrow(() => Entities["Scene"].Properties["LongToString"].Refactor.Convert(typeof(string)));
+
+                Assert.DoesNotThrow(() => Entities["Scene"].Properties["DoubleToBool"].Refactor.Convert(typeof(bool)));
+                Assert.DoesNotThrow(() => Entities["Scene"].Properties["DoubleToLong"].Refactor.Convert(typeof(long)));
+                Assert.DoesNotThrow(() => Entities["Scene"].Properties["DoubleToString"].Refactor.Convert(typeof(string)));
+
+                Assert.DoesNotThrow(() => Entities["Scene"].Properties["StringToBool"].Refactor.Convert(typeof(bool)));
+                Assert.DoesNotThrow(() => Entities["Scene"].Properties["StringToLong"].Refactor.Convert(typeof(long)));
+                Assert.DoesNotThrow(() => Entities["Scene"].Properties["StringToDouble"].Refactor.Convert(typeof(double)));
+            }
+        }
+
+        [Test]
+        public void IRefactorPropertyConvert()
+        {
+            DataModelPropertyConvert model = new DataModelPropertyConvert();
+            model.Execute(true);
+        }
+        #endregion
+
+        #region IRefactorPropertySetIndexTypeAndDeprecate
+        private class DataModelPropertySetIndexTypeAndDeprecate : DatastoreModel<DataModelPropertySetIndexTypeAndDeprecate>
+        {
+            protected override void SubscribeEventHandlers()
+            {
+
+            }
+
+            [Version(0, 0, 0)]
+            public void Script_0_0_0()
+            {
+                FunctionalIds.Default = FunctionalIds.New("Shared", "0", IdFormat.Numeric, 0);
+
+                Entities.New("BaseEntity")
+                       .AddProperty("Uid", typeof(string), false, IndexType.Unique)
+                       .Abstract(true)
+                       .Virtual(true)
+                       .SetKey("Uid", true)
+                       .AddProperty("LastModifiedOn", typeof(DateTime))
+                       .SetRowVersionField("LastModifiedOn");
+
+                Entities.New("Person", Entities["BaseEntity"])
+                       .AddProperty("Name", typeof(string));
+
+                Entities.New("Movie", Entities["BaseEntity"])
+                       .AddProperty("Title", typeof(string), IndexType.Unique)
+                       .AddProperty("ReleaseDate", typeof(DateTime));
+
+                Entities.New("Scene", Entities["Movie"])
+                       .AddProperty("Name", typeof(string), IndexType.Unique)
+                       .AddProperty("Number", typeof(bool));
+
+                Entities.New("Genre", Entities["BaseEntity"])
+                    .AddProperty("Name", typeof(string), IndexType.Unique)
+                    .HasStaticData(true)
+                    .SetFullTextProperty("Name");
+
+                Entities["Genre"].Refactor.CreateNode(new { Uid = "7", Name = "Action" });
+                Entities["Genre"].Refactor.CreateNode(new { Uid = "8", Name = "Adventure" });
+                Entities["Genre"].Refactor.CreateNode(new { Uid = "9", Name = "Comedy" });
+                Entities["Genre"].Refactor.CreateNode(new { Uid = "10", Name = "Drama" });
+                Entities["Genre"].Refactor.CreateNode(new { Uid = "11", Name = "Horror" });
+                Entities["Genre"].Refactor.CreateNode(new { Uid = "12", Name = "Musical" });
+                Entities["Genre"].Refactor.CreateNode(new { Uid = "13", Name = "Science Fiction" });
+
+                Relations.New(Entities["Person"], Entities["Movie"], "PERSON_DIRECTED", "DIRECTED_BY")
+                    .SetInProperty("DirectedMovies", PropertyType.Collection)
+                    .SetOutProperty("Director", PropertyType.Lookup);
+
+                Relations.New(Entities["Person"], Entities["Movie"], "ACTED_IN", "ACTORS")
+                    .SetInProperty("ActedInMovies", PropertyType.Collection)
+                    .SetOutProperty("Actors", PropertyType.Collection);
+
+                Relations.New(Entities["Movie"], Entities["Scene"], "MOVIES_HAS", "MOVIES_HAS")
+                    .SetInProperty("MovieScenes", PropertyType.Collection)
+                    .SetOutProperty("Scenes", PropertyType.Collection);
+            }
+
+            [Version(0, 0, 1)]
+            public void Script_0_0_1()
+            {
+                Assert.IsTrue(IndexType.Unique == Entities["Scene"].Properties["Name"].IndexType);
+                Assert.IsTrue(IndexType.None == Entities["Scene"].Properties["Number"].IndexType);
+                Assert.IsTrue(IndexType.Unique == Entities["Genre"].Properties["Name"].IndexType);
+
+                Entities["Scene"].Properties["Name"].Refactor.SetIndexType(IndexType.None);
+                Entities["Scene"].Properties["Number"].Refactor.SetIndexType(IndexType.Unique);
+                Entities["Genre"].Properties["Name"].Refactor.SetIndexType(IndexType.Indexed);
+
+                Assert.IsTrue(IndexType.None == Entities["Scene"].Properties["Name"].IndexType);
+                Assert.IsTrue(IndexType.Unique == Entities["Scene"].Properties["Number"].IndexType);
+                Assert.IsTrue(IndexType.Indexed == Entities["Genre"].Properties["Name"].IndexType);
+            }
+
+            [Version(0, 0, 2)]
+            public void Script_0_0_2()
+            {
+                Entities["Scene"].Properties["Name"].Refactor.Deprecate();
+                Entities["Scene"].Properties["Number"].Refactor.Deprecate();
+                Entities["Genre"].Properties["Name"].Refactor.Deprecate();
+
+                Assert.Throws<ArgumentOutOfRangeException>(() => { var name = Entities["Scene"].Properties["Name"]; });
+                Assert.Throws<ArgumentOutOfRangeException>(() => { var num = Entities["Scene"].Properties["Number"]; });
+                Assert.Throws<ArgumentOutOfRangeException>(() => { var name = Entities["Genre"].Properties["Name"]; });
+            }
+        }
+
+        [Test]
+        public void IRefactorPropertySetIndexTypeAndDeprecate()
+        {
+            DataModelPropertySetIndexTypeAndDeprecate model = new DataModelPropertySetIndexTypeAndDeprecate();
+            model.Execute(true);
+        }
+        #endregion
+
+        #region IRefactorReroute
+
+        private class DataModelPropertyReroute : DatastoreModel<DataModelPropertyReroute>
+        {
+            protected override void SubscribeEventHandlers()
+            {
+
+            }
+
+            [Version(0, 0, 0)]
+            public void Script_0_0_0()
+            {
+                FunctionalIds.Default = FunctionalIds.New("Shared", "0", IdFormat.Numeric, 0);
+
+                Entities.New("BaseEntity")
+                       .AddProperty("Uid", typeof(string), false, IndexType.Unique)
+                       .Abstract(true)
+                       .Virtual(true)
+                       .SetKey("Uid", true)
+                       .AddProperty("LastModifiedOn", typeof(DateTime))
+                       .SetRowVersionField("LastModifiedOn");
+
+                Entities.New("Person", Entities["BaseEntity"])
+                       .AddProperty("Name", typeof(string));
+
+                Entities.New("Movie", Entities["BaseEntity"])
+                       .AddProperty("Title", typeof(string), IndexType.Unique)
+                       .AddProperty("ReleaseDate", typeof(DateTime));
+
+                Entities.New("Scene", Entities["Movie"])
+                       .AddProperty("Name", typeof(string), IndexType.Unique)
+                       .AddProperty("Number", typeof(int));
+
+                Entities.New("Genre", Entities["BaseEntity"])
+                    .AddProperty("Name", typeof(string), IndexType.Unique)
+                    .HasStaticData(true)
+                    .SetFullTextProperty("Name");
+
+                Entities["Genre"].Refactor.CreateNode(new { Uid = "7", Name = "Action" });
+                Entities["Genre"].Refactor.CreateNode(new { Uid = "8", Name = "Adventure" });
+                Entities["Genre"].Refactor.CreateNode(new { Uid = "9", Name = "Comedy" });
+                Entities["Genre"].Refactor.CreateNode(new { Uid = "10", Name = "Drama" });
+                Entities["Genre"].Refactor.CreateNode(new { Uid = "11", Name = "Horror" });
+                Entities["Genre"].Refactor.CreateNode(new { Uid = "12", Name = "Musical" });
+                Entities["Genre"].Refactor.CreateNode(new { Uid = "13", Name = "Science Fiction" });
+
+                Relations.New(Entities["Person"], Entities["Movie"], "PERSON_DIRECTED", "DIRECTED_BY")
+                    .SetInProperty("DirectedMovies", PropertyType.Collection)
+                    .SetOutProperty("Director", PropertyType.Lookup);
+
+                Relations.New(Entities["Person"], Entities["Movie"], "ACTED_IN", "ACTORS")
+                    .SetInProperty("ActedInMovies", PropertyType.Collection)
+                    .SetOutProperty("Actors", PropertyType.Collection);
+
+                Relations.New(Entities["Movie"], Entities["Scene"], "MOVIES_HAS", "MOVIES_HAS")
+                    .SetInProperty("MovieScenes", PropertyType.Collection)
+                    .SetOutProperty("Scenes", PropertyType.Collection);
+            }
+
+            [Version(0, 0, 1)]
+            public void Script_0_0_1()
+            {
+                Entities["Movie"].Properties["MovieScenes"].Refactor.Reroute("(from:Scene)-[]->(to:Genre)", "Genres", "MOVIE_CONTAINS_GENRE", "MOVIE_GENRE", false);
+            }
+        }
+
+        [Test]
+        public void IRefactorPropertyReroute()
+        {
+            DataModelPropertyReroute model = new DataModelPropertyReroute();
+            model.Execute(true);
+        }
+        #endregion
+
+        #region IRefactorConvert, IRefactorMakeMandatory(), IRefactorMakeNullable
+        private class DataModelPropertyConvertRel : DatastoreModel<DataModelPropertyConvertRel>
+        {
+            protected override void SubscribeEventHandlers()
+            {
+
+            }
+
+            [Version(0, 0, 0)]
+            public void Script_0_0_0()
+            {
+                FunctionalIds.Default = FunctionalIds.New("Shared", "0", IdFormat.Numeric, 0);
+
+                Entities.New("BaseEntity")
+                       .AddProperty("Uid", typeof(string), false, IndexType.Unique)
+                       .Abstract(true)
+                       .Virtual(true)
+                       .SetKey("Uid", true)
+                       .AddProperty("LastModifiedOn", typeof(DateTime))
+                       .SetRowVersionField("LastModifiedOn");
+
+                Entities.New("Person", Entities["BaseEntity"])
+                       .AddProperty("Name", typeof(string))
+                       .AddProperty("NotNullableProperty", typeof(int), false);
+
+                Entities.New("Movie", Entities["BaseEntity"])
+                       .AddProperty("Title", typeof(string), IndexType.Unique)
+                       .AddProperty("ReleaseDate", typeof(DateTime));
+
+                Relations.New(Entities["Person"], Entities["Movie"], "DIRECTED_BY", "DIRECTED_BY")
+                    .SetInProperty("DirectedMovies", PropertyType.Collection)
+                    .SetOutProperty("Director", PropertyType.Lookup);
+
+                Relations.New(Entities["Person"], Entities["Movie"], "ACTED_IN", "ACTORS")
+                    .SetInProperty("ActedInMovies", PropertyType.Collection)
+                    .SetOutProperty("Actors", PropertyType.Collection);
+            }
+
+            [Version(0, 0, 1)]
+            public void Script_0_0_1()
+            {
+                Assert.IsTrue(Relations["DIRECTED_BY"].InProperty.PropertyType == PropertyType.Collection);
+                Assert.IsTrue(Relations["DIRECTED_BY"].OutProperty.PropertyType == PropertyType.Lookup);
+
+                Assert.Throws<NotImplementedException>(() => Relations["DIRECTED_BY"].InProperty.Refactor.ConvertToLookup(ConvertAlgorithm.TakeFirst));
+                Relations["DIRECTED_BY"].OutProperty.Refactor.ConvertToCollection();
+
+                Assert.IsTrue(Relations["DIRECTED_BY"].InProperty.PropertyType == PropertyType.Lookup);
+                Assert.IsTrue(Relations["DIRECTED_BY"].OutProperty.PropertyType == PropertyType.Collection);
+            }
+
+            [Version(0, 0, 2)]
+            public void Script_0_0_2()
+            {
+                Assert.IsTrue(Entities["Person"].Properties["Name"].Nullable == true);
+                Assert.IsTrue(Entities["Person"].Properties["NotNullableProperty"].Nullable == false);
+
+                Entities["Person"].Properties["Name"].Refactor.MakeMandatory();
+                Entities["Person"].Properties["NotNullableProperty"].Refactor.MakeNullable();
+
+                Assert.IsTrue(Entities["Person"].Properties["Name"].Nullable == false);
+                Assert.IsTrue(Entities["Person"].Properties["NotNullableProperty"].Nullable == true);
+            }
+        }
+
+        [Test]
+        public void IRefactorPropertyConvertToCollectionOrLookup()
+        {
+            DataModelPropertyConvertRel model = new DataModelPropertyConvertRel();
+            model.Execute(true);
+        }
+        #endregion
+
+        #region IRefactorMakeMandatory with values
+        private class DataModelPropertyMandatory : DatastoreModel<DataModelPropertyMandatory>
+        {
+            protected override void SubscribeEventHandlers()
+            {
+
+            }
+
+            [Version(0, 0, 0)]
+            public void Script_0_0_0()
+            {
+                FunctionalIds.Default = FunctionalIds.New("Shared", "0", IdFormat.Numeric, 0);
+
+                Entities.New("BaseEntity")
+                       .AddProperty("Uid", typeof(string), false, IndexType.Unique)
+                       .Abstract(true)
+                       .Virtual(true)
+                       .SetKey("Uid", true)
+                       .AddProperty("LastModifiedOn", typeof(DateTime))
+                       .SetRowVersionField("LastModifiedOn");
+
+                Entities.New("Person", Entities["BaseEntity"])
+                       .AddProperty("Name", typeof(string))
+                       .AddProperty("MandatoryProperty", typeof(int), false);
+
+                Entities.New("Movie", Entities["BaseEntity"])
+                       .AddProperty("Title", typeof(string), IndexType.Unique)
+                       .AddProperty("ReleaseDate", typeof(DateTime));
+
+                Relations.New(Entities["Person"], Entities["Movie"], "DIRECTED_BY", "DIRECTED_BY")
+                    .SetInProperty("DirectedMovies", PropertyType.Collection)
+                    .SetOutProperty("Director", PropertyType.Lookup);
+
+                Relations.New(Entities["Person"], Entities["Movie"], "ACTED_IN", "ACTORS")
+                    .SetInProperty("ActedInMovies", PropertyType.Collection)
+                    .SetOutProperty("Actors", PropertyType.Collection);
+
+                Entities.New("Genre", Entities["BaseEntity"])
+                    .AddProperty("Name", typeof(string), IndexType.Unique)
+                    .HasStaticData(true)
+                    .SetFullTextProperty("Name");
+
+                Relations.New(Entities["Movie"], Entities["Genre"], "MOVIE_HAS", "MOVIE_HAS")
+                    .SetInProperty("MovieGenre", PropertyType.Lookup)
+                    .SetOutProperty("Movies", PropertyType.Collection);
+
+                Entities["Genre"].Refactor.CreateNode(new { Uid = "7", Name = "Action" });
+                Entities["Genre"].Refactor.CreateNode(new { Uid = "8", Name = "Adventure" });
+                Entities["Genre"].Refactor.CreateNode(new { Uid = "9", Name = "Comedy" });
+                Entities["Genre"].Refactor.CreateNode(new { Uid = "10", Name = "Drama" });
+                Entities["Genre"].Refactor.CreateNode(new { Uid = "11", Name = "Horror" });
+                Entities["Genre"].Refactor.CreateNode(new { Uid = "12", Name = "Musical" });
+                Entities["Genre"].Refactor.CreateNode(new { Uid = "13", Name = "Science Fiction" });
+            }
+
+            [Version(0, 0, 1)]
+            public void Script_0_0_1()
+            {
+                Entities["Person"].Properties["Name"].Refactor.MakeMandatory("Mr/Mrs.");
+                Relations["MOVIE_HAS"].InProperty.Refactor.MakeMandatory("Action");
+            }
+        }
+
+        [Test]
+        public void IRefactorPropertyMakeMandatoryWithValues()
+        {
+            DataModelPropertyMandatory model = new DataModelPropertyMandatory();
+            model.Execute(true);
+        }
+        #endregion
     }
 }


1080: SmoothShader

1080: SmoothShader

--- a_mini/projects/PixelFarm/MiniAgg.HardwareGraphics/MiniAgg.Hw3/GLShader/SmoothLineShader.cs
+++ a_mini/projects/PixelFarm/MiniAgg.HardwareGraphics/MiniAgg.Hw3/GLShader/SmoothLineShader.cs
@@ -8,7 +8,7 @@
     {
         MiniShaderProgram shaderProgram = new MiniShaderProgram();
         ShaderVtxAttrib4f a_position;
-        ShaderVtxAttrib4f a_color;
+
         ShaderUniformMatrix4 u_matrix;
         ShaderUniformVar1 u_useSolidColor;
         ShaderUniformVar4 u_solidColor;
@@ -23,12 +23,11 @@
         bool InitShader()
         {
             string vs = @"
-            attribute vec4 a_position;
-            attribute vec4 a_color;
+            attribute vec4 a_position;

             uniform mat4 u_mvpMatrix;
             uniform vec4 u_solidColor;
-            uniform int u_useSolidColor;
+
             uniform float u_linewidth;

             varying vec4 v_color;
@@ -55,8 +54,7 @@
                     p0 = 0.5;
                 }else if(u_linewidth <=1.0){
                     p0 = 0.45;
-                }else if(u_linewidth>1.0 && u_linewidth<3.0){
-
+                }else if(u_linewidth>1.0 && u_linewidth<3.0){
                     p0 = 0.25;
                 }else{
                     p0= 0.1;
@@ -64,15 +62,7 @@

                 vec4 pos = vec4(a_position[0],a_position[1],0,1) + delta;
                 gl_Position = u_mvpMatrix* pos;
-
-                if(u_useSolidColor !=0)
-                {
-                    v_color= u_solidColor;
-                }
-                else
-                {
-                    v_color = a_color;
-                }
+                v_color= u_solidColor;
             }
             ";
             //fragment source
@@ -104,10 +94,9 @@
             }
             //-----------------------

-            a_position = shaderProgram.GetAttrV4f("a_position");
-            a_color = shaderProgram.GetAttrV4f("a_color");
+            a_position = shaderProgram.GetAttrV4f("a_position");
             u_matrix = shaderProgram.GetUniformMat4("u_mvpMatrix");
-            u_useSolidColor = shaderProgram.GetUniform1("u_useSolidColor");
+
             u_solidColor = shaderProgram.GetUniform4("u_solidColor");
             u_linewidth = shaderProgram.GetUniform1("u_linewidth");
             return true;
@@ -150,7 +139,7 @@
             };
             shaderProgram.UseProgram();
             u_matrix.SetData(orthoView.data);
-            u_useSolidColor.SetValue(1);
+
             u_solidColor.SetValue(
                   _strokeColor.R / 255f,
                   _strokeColor.G / 255f,
@@ -166,7 +155,7 @@
         {
             shaderProgram.UseProgram();
             u_matrix.SetData(orthoView.data);
-            u_useSolidColor.SetValue(1);
+
             u_solidColor.SetValue(
                   _strokeColor.R / 255f,
                   _strokeColor.G / 255f,


Reset TestAny

Reset TestAny

--- web/Tests/TestAny.cshtml
+++ web/Tests/TestAny.cshtml
@@ -6,14 +6,8 @@

     DateTime start = DateTime.Now;
     dynamic data;
-    var r = "";
+
     try {
-
-        foreach(var a in LcCalendar.BulkImport()) {
-            if (a != null) {
-                r += "<br/>" + a.Message + "::" + a.StackTrace;
-            }
-        }
         data = null;
     }
     catch (Exception ex) {
@@ -21,6 +15,5 @@
     }
 }
 @(data)
-@Html.Raw(r)

 PROCESS DURATION: @((DateTime.Now - start).ToString())


Added ContentType link to Admin menu

Added ContentType link to Admin menu


fix: move title to div iframe is attached for twitter/instgram


CompactCore fix

CompactCore fix

EnterRead may return null

--- Core/Theraot/Collections/ThreadSafe/CompactCore.cs
+++ Core/Theraot/Collections/ThreadSafe/CompactCore.cs
@@ -78,9 +78,12 @@
                 try
                 {
                     var bucket = CoreHelper.EnterRead(ref _bucketsUse[bucketIndex], ref _bucketsFirst[bucketIndex]);
-                    foreach (var value in bucket)
+                    if (bucket != null)
                     {
-                        yield return value;
+                        foreach (var value in bucket)
+                        {
+                            yield return value;
+                        }
                     }
                 }
                 finally