ReservedTypeRef DebugDisplay

ReservedTypeRef DebugDisplay

--- Source/Devsense.PHP.Parser/Ast/TypeRef.cs
+++ Source/Devsense.PHP.Parser/Ast/TypeRef.cs
@@ -275,7 +275,7 @@
     /// <summary>
     /// Primitive type reference.
     /// </summary>
-    [DebuggerDisplay("{_typeName.Name,nq}")]
+    [DebuggerDisplay("{Type,nq}")]
     public sealed class ReservedTypeRef : TypeRef
     {
         public enum ReservedType


mark ILightSource as IAether element

mark ILightSource as IAether element

--- Source/Elementary/Photons/ILightSource.cs
+++ Source/Elementary/Photons/ILightSource.cs
@@ -18,7 +18,7 @@

 namespace tainicom.Aether.Elementary.Photons
 {
-    public interface ILightSource
+    public interface ILightSource: IAether
     {
         Vector3 LightSourceColor {get;set;}
         float Intensity {get;set;}


Always return a default Observable for any IO<T> type

--- Source/NSubstitute/Core/DefaultForType.cs
+++ Source/NSubstitute/Core/DefaultForType.cs
@@ -8,6 +8,13 @@
         {
             if (IsVoid(type)) return null;
             if (type.IsValueType) return DefaultInstanceOfValueType(type);
+
+            if (type.IsGenericType && type.GetGenericTypeDefinition() == typeof(IObservable<>))
+            {
+                Type innerType = type.GetGenericArguments()[0];
+                return Activator.CreateInstance(typeof(ReturnObservable<>).MakeGenericType(innerType));
+            }
+
             return null;
         }


Simplified Task name in SEVizAttribute.

Simplified Task name in SEVizAttribute.

--- Source/SEViz.Monitoring/SEVizAttribute.cs
+++ Source/SEViz.Monitoring/SEVizAttribute.cs
@@ -68,7 +68,7 @@

         private List<string> Z3CallLocations { get; set; }

-        private Dictionary<int,System.Threading.Tasks.Task<string>> PrettyPathConditionTasks { get; set; }
+        private Dictionary<int, Task<string>> PrettyPathConditionTasks { get; set; }

         private Dictionary<int,int> ParentNodes { get; set; }

@@ -322,7 +322,7 @@
             Edges = new Dictionary<int, Dictionary<int,SEEdge>>();
             EmittedTestResult = new Dictionary<int, Tuple<bool,string>>();
             Z3CallLocations = new List<string>();
-            PrettyPathConditionTasks = new Dictionary<int, System.Threading.Tasks.Task<string>>();
+            PrettyPathConditionTasks = new Dictionary<int, Task<string>>();
             ParentNodes = new Dictionary<int, int>();
         }

@@ -382,9 +382,9 @@
         /// <param name="host">Host of the Pex Path Component</param>
         /// <param name="node">The execution node to map</param>
         /// <returns>The pretty printed path condition string</returns>
-        private System.Threading.Tasks.Task<string> PrettyPrintPathCondition(TermEmitter emitter, IMethodBodyWriter mbw, SafeStringWriter ssw, IExecutionNode node)
-        {
-            var task = System.Threading.Tasks.Task.Factory.StartNew(() =>
+        private Task<string> PrettyPrintPathCondition(TermEmitter emitter, IMethodBodyWriter mbw, SafeStringWriter ssw, IExecutionNode node)
+        {
+            var task = Task.Factory.StartNew(() =>
             {
                 string output = "";
                 try


[brainmoment] :thinking:

[brainmoment] :thinking:

--- DataTool/Program.cs
+++ DataTool/Program.cs
@@ -206,7 +206,7 @@
                     {
                         dbPath = Path.Combine(Path.GetFullPath(Flags.ScratchDBPath), "Scratch.db");
                     }
-                    SaveLogic.Combo.LoadScratchDB(Path.Combine(Path.GetFullPath(Flags.ScratchDBPath), "Scratch.db"));
+                    SaveLogic.Combo.LoadScratchDB(dbPath);
                 }
             }
             stopwatch.Start();


イベントの破棄し忘れ

イベントの破棄し忘れ

--- DemoP2P/Resolver.cs
+++ DemoP2P/Resolver.cs
@@ -159,6 +159,9 @@

         public void Dispose()
         {
+            peerNameResolver.ResolveProgressChanged -= pnr_ResolveProgressChanged;
+            peerNameResolver.ResolveCompleted -= pnr_ResolveCompleted;
+            peerNameResolver = null;
             peerName = null;
         }
     }


Compare NoAutoLF flag using case-insensitive comparison (#243)

--- SourceLink.Create.Shared/GitCreateTask.cs
+++ SourceLink.Create.Shared/GitCreateTask.cs
@@ -1,5 +1,6 @@
 using Microsoft.Build.Framework;
 using MSBuildTask = Microsoft.Build.Utilities.Task;
+using System;
 using System.Text;
 using IO = System.IO;
 using System.Collections.Generic;
@@ -77,7 +78,7 @@
             {
                 sbArgs.Append(" --hashmismatch \"" + HashMismatch + "\"");
             }
-            if ("true".Equals(NoAutoLF))
+            if ("true".Equals(NoAutoLF, StringComparison.OrdinalIgnoreCase))
             {
                 sbArgs.Append(" --noautolf");
             }


Proper call to get service settings

Proper call to get service settings

--- MobileAppsCrm-preview/server/MobileCrmDomainManager-preview/Azure.Mobile.Server.DynamicsCrm/DynamicsCrmDomainManager.cs
+++ MobileAppsCrm-preview/server/MobileCrmDomainManager-preview/Azure.Mobile.Server.DynamicsCrm/DynamicsCrmDomainManager.cs
@@ -62,7 +62,7 @@
         {
             if(_organizationService == null)
             {
-                var settings = new ServiceSettingsDictionary();
+                var settings = this.Request.GetConfiguration().GetServiceSettingsProvider().GetServiceSettings();

                 string crmUrl = settings[CrmUrlSettingsKey];
                 string servicePath = "/XRMServices/2011/Organization.svc/web";


Shifting by wrong data width in FusedDataArray

--- SubstrateCS/Source/Core/FusedDataArray.cs
+++ SubstrateCS/Source/Core/FusedDataArray.cs
@@ -27,7 +27,7 @@

         public int this[int x, int y, int z]
         {
-            get { return (_array0[x, y, z] << _array0.DataWidth) + _array1[x, y, z]; }
+            get { return (_array0[x, y, z] << _array1.DataWidth) + _array1[x, y, z]; }
             set
             {
                 if (value >= (1 << _array1.DataWidth)) {
@@ -66,7 +66,7 @@

         public int this[int i]
         {
-            get { return (_array0[i] << _array0.DataWidth) + _array1[i]; }
+            get { return (_array0[i] << _array1.DataWidth) + _array1[i]; }
             set
             {
                 if (value >= (1 << _array1.DataWidth)) {


fix for punctuation wrapping so it works properly in RTL

--- System.Drawing.Html/CssBoxWordSplitter.cs
+++ System.Drawing.Html/CssBoxWordSplitter.cs
@@ -274,6 +274,18 @@

 				}

+				else if (IsPunctuation(c))
+
+				{
+
+					CutWord();
+
+					_curword.AppendChar(c);
+
+					CutWord();
+
+				}
+
 				else if (IsAsianWord(c, next))

 				{
@@ -303,6 +315,16 @@

 			CutWord();
+
+		}
+
+
+
+		private bool IsPunctuation(char c)
+
+		{
+
+			return ".?!,:;".Contains(c.ToString());

 		}


code format

code format

--- INotify/Notifier.cs
+++ INotify/Notifier.cs
@@ -15,11 +15,11 @@
         internal static readonly PropertiesSessionDictionary PropertySessions = new PropertiesSessionDictionary();
         private static long _session;
         private static readonly object Locker = new object();
+        protected internal bool IsNotificationsEnabled = true;
         internal readonly PropertyDependenciesDictionary LocalPropertyDependencies = new PropertyDependenciesDictionary();
         internal readonly PropertyDependenciesDictionary ReferencedCollectionDependencies = new PropertyDependenciesDictionary();
         internal readonly ReferencePropertyDependenciesDictionary ReferencedCollectionItemPropertyDependencies = new ReferencePropertyDependenciesDictionary();
         internal readonly ReferencePropertyDependenciesDictionary ReferencedPropertyDependencies = new ReferencePropertyDependenciesDictionary();
-        internal protected bool IsNotificationsEnabled = true;
         private readonly PropertyReferenceDictionary<IReactToCollectionItemProperty> _collectionItemsReferenceMap = new PropertyReferenceDictionary<IReactToCollectionItemProperty>();
         private readonly PropertyReferenceDictionary<INotifyCollectionChanged> _collectionReferenceMap = new PropertyReferenceDictionary<INotifyCollectionChanged>();
         private readonly ConcurrentDictionary<string, object> _dependentPropertyValuesDictionary = new ConcurrentDictionary<string, object>();


Updated for changes made to DDay.iCal version 0.30.2

--- Example3/Program.cs
+++ Example3/Program.cs
@@ -12,7 +12,7 @@
         static void Main(string[] args)
         {
             // Create an empty list of iCalendars
-            List<iCalendar> iCalendars = new List<iCalendar>();
+            iCalendarCollection iCalendars = new iCalendarCollection();

             // First, load the example iCalendar file normally
             iCalendars.Add(iCalendar.LoadFromFile(@"Example3.ics"));
@@ -20,7 +20,7 @@
             // Next, load the example iCalendar file into our CustomICalendar object,
             // so we can show the difference between loading it normally and loading
             // it into a custom object.
-            iCalendars.Add(iCalendar.LoadFromFile(typeof(CustomICalendar), @"Example3.ics"));
+            iCalendars.Add(iCalendar.LoadFromFile<CustomICalendar>(@"Example3.ics"));

             // Since our CustomICalendar objects has its ComponentBaseTypeAttribute set
             // to our CustomComponentBase class, all of our objects are created with it.


Use a path for storage that doesn't include version and company name

--- Kyru/Core/Config.cs
+++ Kyru/Core/Config.cs
@@ -1,17 +1,15 @@
 using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
 using System.IO;

 namespace Kyru.Core
 {
-    class Config
-    {
-        internal readonly string storeDirectory;
+	internal sealed class Config
+	{
+		internal string storeDirectory;

-        internal Config() {
-            storeDirectory = Path.Combine(System.Windows.Forms.Application.UserAppDataPath);
-        }
-    }
-}
+		internal Config()
+		{
+			storeDirectory = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "Kyru", "objects");
+		}
+	}
+}


Workaround a bug in a old Mono C# compiler for debug symbols in iterators

--- symbols/mdb/Mono.Cecil.Mdb/MdbReader.cs
+++ symbols/mdb/Mono.Cecil.Mdb/MdbReader.cs
@@ -82,7 +82,11 @@
 		static void ReadLocalVariables (MethodEntry entry, MethodBody body, Scope [] scopes)
 		{
 			var locals = entry.GetLocals ();
+
 			foreach (var local in locals) {
+				if (local.Index < 0 || local.Index >= body.Variables.Count) // Mono 2.6 emits wrong local infos for iterators
+					continue;
+
 				var variable = body.Variables [local.Index];
 				variable.Name = local.Name;

@@ -202,6 +206,9 @@
 		static void ReadLocalVariables (MethodEntry entry, MethodSymbols symbols)
 		{
 			foreach (var local in entry.GetLocals ()) {
+				if (local.Index < 0 || local.Index >= symbols.Variables.Count) // Mono 2.6 emits wrong local infos for iterators
+					continue;
+
 				var variable = symbols.Variables [local.Index];
 				variable.Name = local.Name;
 			}


대각선을 그리는 알고리즘 수정.

대각선을 그리는 알고리즘 수정.

--- FrmEveryChart.cs
+++ FrmEveryChart.cs
@@ -82,6 +82,10 @@
             RectangleF GraphRect = new RectangleF(NewGraph.GraphMargin.Left, NewGraph.GraphMargin.Top,
                                     panel1.Width - NewGraph.GraphMargin.Left - NewGraph.GraphMargin.Right,
                                     panel1.Height - NewGraph.GraphMargin.Top - NewGraph.GraphMargin.Bottom);
+            // 대각선의 시작점
+            PointF DiagonalStartPoint;
+            // 대각선의 끝점
+            PointF DiagonalEndPoint;

             // 그래프 영역을 정의한다.
             NewGraph.DrawRect = GraphRect;
@@ -105,6 +109,13 @@
             // 긴 수직선을 그린다.
             e.Graphics.DrawLine(LinePen, LongVerticalStartPoint, LongVerticalEndPoint);

+            // 대각선을 그리는 부분
+            // 대각선의 시작점을 구한다.
+            DiagonalStartPoint = new PointF(0, panel1.Height);
+            // 대각선의 끝점을 구한다.
+            DiagonalEndPoint = new PointF(GraphRect.Left, GraphRect.Bottom);
+            // 대각선을 그린다.
+            e.Graphics.DrawLine(LinePen, DiagonalStartPoint, DiagonalEndPoint);

         }
     }


.NET arrays to lua tables

--- Lua.NET/Advanced.cs
+++ Lua.NET/Advanced.cs
@@ -176,7 +176,19 @@
 			if (Ret != null)
 				T = Ret.GetType();

-			if (NetToLuaMarshals.ContainsKey(T))
+			if (T.IsArray) {
+				Array Array = (Array)Ret;
+				int i = 1;
+
+				Lua.lua_createtable(L, Array.Length, 0);
+
+				foreach (var Obj in Array) {
+					Push(L, Obj);
+					Lua.lua_rawseti(L, -2, i++);
+				}
+
+				return 1;
+			} else if (NetToLuaMarshals.ContainsKey(T))
 				return NetToLuaMarshals[T](L, Ret);
 			else
 				foreach (var KV in NetToLuaMarshals)


fix(login)

fix(login)

add timezoneoffset cookie which blocks login sometimes

--- TeamFortressOutpostApi/Rest/RestClient.cs
+++ TeamFortressOutpostApi/Rest/RestClient.cs
@@ -1,4 +1,5 @@
-using HedgehogSoft.TeamFortressOutpostApi.Interfaces;
+using System;
+using HedgehogSoft.TeamFortressOutpostApi.Interfaces;
 using HedgehogSoft.TeamFortressOutpostApi.Models;
 using System.Net;
 using System.Net.Http;
@@ -71,6 +72,7 @@
         {
             var httpHeaders = RequestHeaders.SteamLoginHeaders(referer);
             var httpClientHandler = GetDefaultHttpClientHandler(true);
+            httpClientHandler.CookieContainer.Add(new Uri("https://steamcommunity.com"),new Cookie("timezoneoffset", "7200"));
             var httpClient = new HttpClient(httpClientHandler).AddRequestHeaders(httpHeaders);
             return httpClient.PostAsync("https://steamcommunity.com/login/getrsakey/", FormDataGenerator.SteamRsa(username)).Result;
         }


ReSharper >.>

ReSharper >.>

--- TestRunner/System/Threading/ThreadTest.cs
+++ TestRunner/System/Threading/ThreadTest.cs
@@ -25,9 +25,11 @@
         {
             ThreadStart start = null;
             // ReSharper disable once ExpressionIsAlwaysNull
+            // ReSharper disable once AssignNullToNotNullAttribute
             Assert.Throws<ArgumentNullException>(() => GC.KeepAlive(new Thread(start)));
             ParameterizedThreadStart parameterizedStart = null;
             // ReSharper disable once ExpressionIsAlwaysNull
+            // ReSharper disable once AssignNullToNotNullAttribute
             Assert.Throws<ArgumentNullException>(() => GC.KeepAlive(new Thread(parameterizedStart)));
         }


Using TPL to send

Using TPL to send

--- Facility/Program.cs
+++ Facility/Program.cs
@@ -1,4 +1,5 @@
 using System;
+using System.Collections.Generic;
 using System.Diagnostics;
 using System.Threading.Tasks;
 using Messages;
@@ -30,10 +31,22 @@

             var destination = "Chocolate.Facility.Producer";
             stopWatch.Start();
-            Parallel.For(0, Constants.NumberOfMessages, new ParallelOptions(), i =>
+
+            var tasks = new List<Task>();
+
+            for (int i = 0; i < 8; i++)
             {
-                bus.Send(destination, new ProduceChocolateBar { LotNumber = i, MaxLotNumber = Constants.NumberOfMessages });
-            });
+                var task = Task.Run(() =>
+                {
+                    for (int j = 0; j < Constants.NumberOfMessages / 8; j++)
+                    {
+                        bus.Send(destination, new ProduceChocolateBar { LotNumber = j, MaxLotNumber = Constants.NumberOfMessages });
+                    }
+                });
+                tasks.Add(task);
+            }
+
+            Task.WhenAll(tasks).GetAwaiter().GetResult();
             stopWatch.Stop();
             Console.WriteLine($"Sending #{ Constants.NumberOfMessages } of msgs over the bus took { stopWatch.Elapsed.ToString("G")}");


taking screenshots

taking screenshots

--- Tiny/KinectSerializer/SerializableBody.cs
+++ Tiny/KinectSerializer/SerializableBody.cs
@@ -17,7 +17,6 @@
         public const string NameIsTracked = "IsTracked";
         public const string NameTrackingId = "TrackingId";
         public const string NameJointsDictionary = "JointsDict";
-        public const string NameJointsDepthPositionDictionary = "JointsCameraPositionDict";

         private bool isTracked;


I did some notes

I did some notes

--- UnityProject/Assets/Scripts/Debug/TADB.cs
+++ UnityProject/Assets/Scripts/Debug/TADB.cs
@@ -37,6 +37,10 @@
 		Lighting,
 		Electrical,
 	};
+	//-1 will not show anything
+	// 0 Only will show errors
+	// 1 will show errors and warnings
+	// 2 will show errors, warnings and logs
 	private static Dictionary<string, int> NameDictionary = new Dictionary<string, int>{
 		["Atmospherics"] = 0,
 		["Movement"] = 0,
@@ -68,7 +72,7 @@
 		["Lighting"] = 0,
 		["Electrical"] = 0,
 	};
-
+	//Example of how to call TADB_Debug.Log("Message",TADB_Debug.Category.#Something#.ToString());
 	private static Dictionary<int, string> LevelMessage = new Dictionary<int, string>{
 		[0]= "Error ",
 		[1]= "Warning ",


Enabled validate async for query

Enabled validate async for query

--- src/SFA.DAS.EmployerAccounts/Queries/GetMinimumSignedAgreementVersion/GetMinimumSignedAgreementVersionQueryValidator.cs
+++ src/SFA.DAS.EmployerAccounts/Queries/GetMinimumSignedAgreementVersion/GetMinimumSignedAgreementVersionQueryValidator.cs
@@ -21,9 +21,9 @@
             return validationResult;
         }

-        public Task<ValidationResult> ValidateAsync(GetMinimumSignedAgreementVersionQuery item)
+        public async Task<ValidationResult> ValidateAsync(GetMinimumSignedAgreementVersionQuery item)
         {
-            throw new System.NotImplementedException();
+            return await Task.FromResult(Validate(item));
         }
     }
 }


api: adding Trees and Leaves accessors to Tree. They allow to iterate over subrees ore subleaves of a tree as opposed to Children that returns all trees and leaves as abstract objects.

--- GitSharp/Tree.cs
+++ GitSharp/Tree.cs
@@ -112,6 +112,9 @@
             }
         }

+        /// <summary>
+        /// Entries of the tree. These are either Tree or Leaf objects representing sub-directories or files.
+        /// </summary>
         public IEnumerable<AbstractObject> Children
         {
             get
@@ -125,6 +128,28 @@
                     else
                         return new Tree(_repo, tree_entry as CoreTree) as AbstractObject; // <--- is this always correct? we'll see :P
                 }).ToArray();
+            }
+        }
+
+        /// <summary>
+        /// Tree entries representing this directory's subdirectories
+        /// </summary>
+        public IEnumerable<Tree> Trees
+        {
+            get
+            {
+                return Children.Where(child => child.IsTree).Cast<Tree>().ToArray();
+            }
+        }
+
+        /// <summary>
+        /// Leaf entries representing this directory's files
+        /// </summary>
+        public IEnumerable<Leaf> Leaves
+        {
+            get
+            {
+                return Children.Where(child => child.IsBlob).Cast<Leaf>().ToArray();
             }
         }


Fix RedisProfilerEntryToActivityConverterTests for UTC offset > 0. (#1680)

--- test/OpenTelemetry.Instrumentation.StackExchangeRedis.Tests/Implementation/RedisProfilerEntryToActivityConverterTests.cs
+++ test/OpenTelemetry.Instrumentation.StackExchangeRedis.Tests/Implementation/RedisProfilerEntryToActivityConverterTests.cs
@@ -131,6 +131,7 @@
             var activity = new Activity("redis-profiler");
             IPEndPoint ipLocalEndPoint = new IPEndPoint(address, port);
             var profiledCommand = new Mock<IProfiledCommand>();
+            profiledCommand.Setup(m => m.CommandCreated).Returns(DateTime.UtcNow);
             profiledCommand.Setup(m => m.EndPoint).Returns(ipLocalEndPoint);

             var result = RedisProfilerEntryToActivityConverter.ProfilerCommandToActivity(activity, profiledCommand.Object);
@@ -148,6 +149,7 @@

             var activity = new Activity("redis-profiler");
             var profiledCommand = new Mock<IProfiledCommand>();
+            profiledCommand.Setup(m => m.CommandCreated).Returns(DateTime.UtcNow);
             profiledCommand.Setup(m => m.EndPoint).Returns(dnsEndPoint);

             var result = RedisProfilerEntryToActivityConverter.ProfilerCommandToActivity(activity, profiledCommand.Object);
@@ -165,6 +167,7 @@
             var unixEndPoint = new UnixDomainSocketEndPoint("https://opentelemetry.io/");
             var activity = new Activity("redis-profiler");
             var profiledCommand = new Mock<IProfiledCommand>();
+            profiledCommand.Setup(m => m.CommandCreated).Returns(DateTime.UtcNow);
             profiledCommand.Setup(m => m.EndPoint).Returns(unixEndPoint);

             var result = RedisProfilerEntryToActivityConverter.ProfilerCommandToActivity(activity, profiledCommand.Object);


Added .ToChar() Method to base library

Added .ToChar() Method to base library

this will convert any integer number to a char

--- Base/Base.cs
+++ Base/Base.cs
@@ -61,6 +61,24 @@
         [CalcCallableMethod(".ToString")]
         public static object ToString(ScriptThread thread, object thisRef, object[] parameters) => thisRef.ToString();

+        [CalcCallableMethod(".ToChar")]
+        public static object ToChar(ScriptThread thread, object instance, object[] parameters)
+        {
+            char result;
+            switch(instance.GetType().Name)
+            {
+                case "Int32":
+                case "Int64":
+                case "Int16":
+                    result = (char)(long)instance;
+                    break;
+                default:
+                    result = '\0';
+                    break;
+            }
+            return result;
+        }
+
         [CalcCallableMethod("Throw", -1)]
         public static object Throw(ScriptThread thread, object thisRef, object[] p)
         {


add caffe model to my Google Drive

add caffe model to my Google Drive

--- test/OpenCvSharp.Tests/dnn/CaffeTest.cs
+++ test/OpenCvSharp.Tests/dnn/CaffeTest.cs
@@ -15,7 +15,7 @@
         public void LoadCaffeModel()
         {
             const string protoTxt = @"_data/text/bvlc_googlenet.prototxt";
-            const string caffeModelUrl = "http://dl.caffe.berkeleyvision.org/bvlc_googlenet.caffemodel";
+            const string caffeModelUrl = "https://drive.google.com/uc?id=1RUsoiLiXrKBQu9ibwsMqR3n_UkhnZLRR"; //"http://dl.caffe.berkeleyvision.org/bvlc_googlenet.caffemodel";
             const string caffeModel = "_data/model/bvlc_googlenet.caffemodel";
             const string synsetWords = @"_data/text/synset_words.txt";
             var classNames = File.ReadAllLines(synsetWords)


Fixed NullLogger

Fixed NullLogger

--- test/Orchard.Tests/StubLoggerFactory.cs
+++ test/Orchard.Tests/StubLoggerFactory.cs
@@ -36,6 +36,11 @@

     public class NullLogger : ILogger
     {
+        public IDisposable BeginScope<TState>(TState state)
+        {
+            throw new NotImplementedException();
+        }
+
         public IDisposable BeginScopeImpl(object state)
         {
             throw new NotImplementedException();


[+] abletointeract bool in hands

[+] abletointeract bool in hands

--- NewtonVR/NVRHand.cs
+++ NewtonVR/NVRHand.cs
@@ -43,6 +43,8 @@
 		public NVRButtons MenuButton3 = NVRButtons.ApplicationMenu;
 		public bool MenuButtonDown { get { return Inputs[MenuButton1].PressDown || Inputs[MenuButton2].PressDown || Inputs[MenuButton3].PressDown; } }

+		[HideInInspector]
+		public bool AbleToInteract = true;

         [HideInInspector]
         public bool IsRight;
@@ -380,6 +382,11 @@

         protected void UpdateInteractions()
         {
+			if(!AbleToInteract)
+			{
+				return;
+			}
+
             if (CurrentInteractionStyle == InterationStyle.Hold)
             {
 				bool isHoldButtonUp = (HoldButtonUp && !SecondHoldButtonPressed);


Allow SA1610 to have a code fix, where the value text is derived from the summary text

--- StyleCop.Analyzers/StyleCop.Analyzers/DocumentationRules/SA1610PropertyDocumentationMustHaveValueText.cs
+++ StyleCop.Analyzers/StyleCop.Analyzers/DocumentationRules/SA1610PropertyDocumentationMustHaveValueText.cs
@@ -22,7 +22,6 @@
     /// <para>A violation of this rule occurs when the <c><value></c> tag for a property is empty.</para>
     /// </remarks>
     [DiagnosticAnalyzer(LanguageNames.CSharp)]
-    [NoCodeFix("Cannot generate documentation")]
     public class SA1610PropertyDocumentationMustHaveValueText : PropertyDocumentationSummaryBase
     {
         /// <summary>


minor name changes

minor name changes

--- Behaviour.cs
+++ Behaviour.cs
@@ -16,33 +16,33 @@

         private uint eventsProceed = 0;

-        private uint startPlayingParkTs = 0;
+        private uint tsSessionStart = 0;

         private void Awake()
         {
-            Parkitect.UI.EventManager.Instance.OnStartPlayingPark += myOnStartPlayingParkHandler;
+            Parkitect.UI.EventManager.Instance.OnStartPlayingPark += onStartPlayingParkHandler;
         }

         void Start()
         {
-            Parkitect.UI.EventManager.Instance.OnStartPlayingPark -= myOnStartPlayingParkHandler;
+            Parkitect.UI.EventManager.Instance.OnStartPlayingPark -= onStartPlayingParkHandler;

             initSession();

-            GameController.Instance.park.OnNameChanged += myOnParkNameChangedHandler;
-        }
-
-        private void myOnParkNameChangedHandler(string oldName, string newName)
+            GameController.Instance.park.OnNameChanged += onParkNameChangedHandler;
+        }
+
+        private void onParkNameChangedHandler(string oldName, string newName)
         {
             _debug.notification("Park name change to " + newName);
             addParkName(newName);
             eventsProceed++;
         }

-        private void myOnStartPlayingParkHandler()
-        {
-            startPlayingParkTs = getCurrentTimestamp();
-            _debug.notificationTs("Started playing at ", startPlayingParkTs);
+        private void onStartPlayingParkHandler()
+        {
+            tsSessionStart = getCurrentTimestamp();
+            _debug.notificationTs("Started playing at ", tsSessionStart);
             eventsProceed++;
         }

@@ -58,9 +58,9 @@

             _data = new Data();
             if (!loadDataFile()) _data = new Data();
-            if (_data.tsStart == 0) _data.tsStart = startPlayingParkTs;
-
-            uint cTs = startPlayingParkTs;
+            if (_data.tsStart == 0) _data.tsStart = tsSessionStart;
+
+            uint cTs = tsSessionStart;
             _data.tsSessionStarts.Add(cTs);
             _data.sessionIdx++;

@@ -250,7 +250,7 @@

         void OnDisable()
         {
-            GameController.Instance.park.OnNameChanged -= myOnParkNameChangedHandler;
+            GameController.Instance.park.OnNameChanged -= onParkNameChangedHandler;

             if (_deleteDataFileOnDisable)
             {


Clean +1

Clean +1

--- Bite/Bite.cs
+++ Bite/Bite.cs
@@ -3,29 +3,6 @@
 using System.IO;
 using System.Net.Sockets;
 using System.Threading;
-using UnityEngine;
-
-// To connect.
-
-// Bite bite = new Bite("127.0.0.1", 1984);
-
-// To send.
-
-// bite.Send("s author Andrés Villalobos");
-// bite.Send("j author");
-
-// You can use a System.Action callback on send to deal directly with the response.
-
-// bite.Send("g author", response => {
-//     // Handle your response.
-// });
-
-// You also have a couple System.Action to subscribe.
-
-// bite.OnResponse += YourOnResponse;
-// bite.OnError += YourOnError;
-
-// That's it!

 public class BiteMsg
 {
@@ -80,8 +57,6 @@
             return;
         }

-        Debug.Log($"Queued {message}");
-
         lock(queue)
         {
             queue.Enqueue(new BiteMsg(message, callback));
@@ -134,10 +109,9 @@
                 writer.WriteLine(some.message);
                 writer.Flush();

-                // Receive
+                // Receive or subscription?

-                Debug.Log($"{some.message}");
-                var isSubscription = some.message.Trim().ToLower().StartsWith("#");
+                var sub = some.message.Trim().ToLower().StartsWith("#");

                 var reader = new StreamReader(stream);

@@ -151,7 +125,7 @@
                     if (OnResponse != null)
                         OnResponse(response);
                 }
-                while (isSubscription && allowThread);
+                while (sub && allowThread);
             }
         }
         catch (Exception e)


Fixed the GadgetWindow AlwaysOnTop option (could be lost by tracking "Show Desktop" events even when AlwaysOnTop = true).

--- GUI/GadgetWindow.cs
+++ GUI/GadgetWindow.cs
@@ -226,10 +226,13 @@
           NativeMethods.SetWindowPos(Handle, IntPtr.Zero, 0, 0, 0, 0,
             SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE | SWP_NOZORDER |
             (value ? SWP_SHOWWINDOW : SWP_HIDEWINDOW));
-          if (value)
-            ShowDesktop.Instance.ShowDesktopChanged += ShowDesktopChanged;
-          else
-            ShowDesktop.Instance.ShowDesktopChanged -= ShowDesktopChanged;
+          if (value) {
+            if (!alwaysOnTop)
+              ShowDesktop.Instance.ShowDesktopChanged += ShowDesktopChanged;
+          } else {
+            if (!alwaysOnTop)
+              ShowDesktop.Instance.ShowDesktopChanged -= ShowDesktopChanged;
+          }
         }
       }
     }
@@ -252,11 +255,13 @@
         if (value != alwaysOnTop) {
           alwaysOnTop = value;
           if (alwaysOnTop) {
-            ShowDesktop.Instance.ShowDesktopChanged -= ShowDesktopChanged;
+            if (visible)
+              ShowDesktop.Instance.ShowDesktopChanged -= ShowDesktopChanged;
             MoveToTopMost(Handle);
           } else {
             MoveToBottom(Handle);
-            ShowDesktop.Instance.ShowDesktopChanged += ShowDesktopChanged;
+            if (visible)
+              ShowDesktop.Instance.ShowDesktopChanged += ShowDesktopChanged;
           }
         }
       }


fix for commands that get stuck due to standard output buffer size

--- GitTool/MainForm.cs
+++ GitTool/MainForm.cs
@@ -218,18 +218,17 @@
             Process proc = new Process();
             proc.StartInfo = info;
             proc.Start();
-            proc.WaitForExit();
-            string error = proc.StandardError.ReadToEnd();
-            log.AppendText(ReplaceNewLine(error).Replace("\r", Environment.NewLine));
-            string output = proc.StandardOutput.ReadToEnd();
-            log.AppendText(ReplaceNewLine(output));
-            log.AppendText(Environment.NewLine);
+            string output = string.Empty;
+            while (!proc.StandardOutput.EndOfStream)
+            {
+                string line = proc.StandardOutput.ReadLine() + Environment.NewLine;
+                output += line;
+                log.AppendText(line);
+            }
+            log.AppendText(proc.StandardError.ReadToEnd().Replace("\n",
+                Environment.NewLine).Replace("\r", Environment.NewLine));
+            log.AppendText(Environment.NewLine);
             return output;
-        }
-
-        private static string ReplaceNewLine(string old)
-        {
-            return old.Replace("\n", Environment.NewLine);
         }

         private void rootFolder_TextChanged(object sender, EventArgs e)


So it seems I didn't set my email address before... bummer.

--- GnoPatch/Program.cs
+++ GnoPatch/Program.cs
@@ -64,6 +64,7 @@

             // var patches = Patches.Load("patches.json");

+            // this is the default patch we'll apply for the steam engine patch.
             var patches = new PatchGroup()
             {
                 Target = "Gnomoria.exe",
@@ -89,8 +90,8 @@
                 }

             };
-

+            // I'll get rid of this hardcoded path soon
             var path = "c:\\program files (x86)\\steam\\steamapps\\common\\gnomoria";

             var patcher = new Patcher();


Finished control of online cores

Finished control of online cores

--- H3Control/H3Main.cs
+++ H3Control/H3Main.cs
@@ -69,9 +69,11 @@

             if (!nologo)
             {
-                Console.WriteLine("H3Control " + H3Environment.VerAsPublic +
-                                  " is a console/daemon which \n   * \"Displays\" temperature, frequency and usage via built-in http server.\n   * Allows to control CPU & DDR frequency");
-                Console.WriteLine();
+                Console.WriteLine(@"H3Control " + H3Environment.VerAsPublic + @"is a console/daemon which
+   * ""Shows"" temperature, frequency and usage via built-in http server.
+   * Allows to control CPU & DDR frequency
+   * Allows to control number of online CPU cores
+");
             }

             if (help)


Added missing DataMember attribute to ensure properties are serialized

--- Homie.Model/User.cs
+++ Homie.Model/User.cs
@@ -5,16 +5,22 @@
     [DataContract]
     public class User
     {
+        [DataMember]
         public int ID { get; set; }

+        [DataMember]
         public string Username { get; set; }

+        [DataMember]
         public byte[] PasswordHash { get; set; }

+        [DataMember]
         public string FirstName { get; set; }

+        [DataMember]
         public string LastName { get; set; }

+        [DataMember]
         public string EmailAddress { get; set; }

         //TODO: Add permissions/roles


Performance enhancement for specs with large numbers of activities

--- Penfold/Activity.cs
+++ Penfold/Activity.cs
@@ -13,7 +13,7 @@
         {
             get
             {
-                return Context.Steps.After(this).Any(s => s.Executed);
+                return Context.Steps.After(this).OfType<Assertion>().Any(s => s.Executed);
             }
         }
     }


Initial work

Initial work

--- src/Features/Core/Portable/InitializeParameter/AbstractInitializeMemberFromParameterCodeRefactoringProviderMemberCreation.cs
+++ src/Features/Core/Portable/InitializeParameter/AbstractInitializeMemberFromParameterCodeRefactoringProviderMemberCreation.cs
@@ -16,6 +16,7 @@
 using Microsoft.CodeAnalysis.Diagnostics.Analyzers.NamingStyles;
 using Microsoft.CodeAnalysis.Editing;
 using Microsoft.CodeAnalysis.Operations;
+using Microsoft.CodeAnalysis.Options;
 using Microsoft.CodeAnalysis.PooledObjects;
 using Microsoft.CodeAnalysis.Shared.Extensions;
 using Microsoft.CodeAnalysis.Shared.Naming;
@@ -75,53 +76,139 @@
             var rules = await document.GetNamingRulesAsync(FallbackNamingRules.RefactoringMatchLookupRules, cancellationToken).ConfigureAwait(false);
             var parameterNameParts = IdentifierNameParts.CreateIdentifierNameParts(parameter, rules);
             if (parameterNameParts.BaseName == "")
-            {
                 return ImmutableArray<CodeAction>.Empty;
-            }

             var fieldOrProperty = await TryFindMatchingUninitializedFieldOrPropertySymbolAsync(
                 document, parameter, blockStatementOpt, rules, parameterNameParts.BaseNameParts, cancellationToken).ConfigureAwait(false);

             if (fieldOrProperty != null)
             {
-                // Found a field/property that this parameter should be assigned to.
-                // Just offer the simple assignment to it.
-
-                var resource = fieldOrProperty.Kind == SymbolKind.Field
-                    ? FeaturesResources.Initialize_field_0
-                    : FeaturesResources.Initialize_property_0;
-
-                var title = string.Format(resource, fieldOrProperty.Name);
-
-                return ImmutableArray.Create<CodeAction>(new MyCodeAction(
-                    title,
-                    c => AddSymbolInitializationAsync(
-                        document, parameter, functionDeclaration, method, blockStatementOpt, fieldOrProperty, c)));
+                return HandleExistingFieldOrProperty(
+                    document, parameter, functionDeclaration, method, blockStatementOpt, fieldOrProperty);
+            }
+
+            return await HandleNoExistingFieldOrPropertyAsync(
+                document, parameter, functionDeclaration, method,
+                blockStatementOpt, rules, parameterNameParts, cancellationToken).ConfigureAwait(false);
+        }
+
+        private async Task<ImmutableArray<CodeAction>> HandleNoExistingFieldOrPropertyAsync(
+            Document document,
+            IParameterSymbol parameter,
+            SyntaxNode functionDeclaration,
+            IMethodSymbol method,
+            IBlockOperation? blockStatementOpt,
+            ImmutableArray<NamingRule> rules,
+            CancellationToken cancellationToken)
+        {
+            // Didn't find a field/prop that this parameter could be assigned to.
+            // Offer to create new one and assign to that.
+            var codeGenService = document.GetLanguageService<ICodeGenerationService>();
+
+            var options = await document.GetOptionsAsync(cancellationToken).ConfigureAwait(false);
+
+            var (field, property) = CreateFieldAndProperty(parameter, options, rules);
+
+            var fieldAction = new MyCodeAction(
+                string.Format(FeaturesResources.Create_and_initialize_field_0, field.Name),
+                c => AddSymbolInitializationAsync(document, parameter, functionDeclaration, method, blockStatementOpt, field, c));
+            var propertyAction = new MyCodeAction(
+                string.Format(FeaturesResources.Create_and_initialize_property_0, property.Name),
+                c => AddSymbolInitializationAsync(document, parameter, functionDeclaration, method, blockStatementOpt, property, c));
+
+            using var _ = ArrayBuilder<CodeAction>.GetInstance(out var allActions);
+
+            // Check if the surrounding parameters are assigned to another field in this class.  If so, offer to
+            // make this parameter into a field as well.  Otherwise, default to generating a property
+            var siblingFieldOrProperty = TryFindSiblingFieldOrProperty(parameter, blockStatementOpt);
+            if (siblingFieldOrProperty is IFieldSymbol)
+            {
+                allActions.Add(fieldAction);
+                allActions.Add(propertyAction);
             }
             else
             {
-                // Didn't find a field/prop that this parameter could be assigned to.
-                // Offer to create new one and assign to that.
-                var codeGenService = document.GetLanguageService<ICodeGenerationService>();
-
-                var options = await document.GetOptionsAsync(cancellationToken).ConfigureAwait(false);
-                var requireAccessibilityModifiers = options.GetOption(CodeStyleOptions.RequireAccessibilityModifiers);
+                allActions.Add(propertyAction);
+                allActions.Add(fieldAction);
+            }
+
+            var siblingParameters = await GetSiblingParameterWithoutAssociatedMembers(
+                document, blockStatementOpt, rules, parameter, cancellationToken).ConfigureAwait(false);
+
+            if (siblingParameters.Length > 0)
+            {
+                if (siblingFieldOrProperty is IFieldSymbol)
+                {
+
+                }
+                else
+                {
+                }
+            }
+
+            return allActions.ToImmutable();
+        }
+
+        private (IFieldSymbol, IPropertySymbol) CreateFieldAndProperty(
+            IParameterSymbol parameter,
+            DocumentOptionSet options,
+            ImmutableArray<NamingRule> rules)
+        {
+            var requireAccessibilityModifiers = options.GetOption(CodeStyleOptions.RequireAccessibilityModifiers);
+
+            var nameParts = IdentifierNameParts.CreateIdentifierNameParts(parameter, rules);
+            var field = CreateField(requireAccessibilityModifiers, parameter, rules, nameParts.BaseNameParts);
+            var property = CreateProperty(requireAccessibilityModifiers, parameter, rules, nameParts.BaseNameParts);
+
+            return (field, property);
+        }
+
+        private async Task<ImmutableArray<(IParameterSymbol, IFieldSymbol, IPropertySymbol)>> GetSiblingParameterWithoutAssociatedMembers(
+            Document document,
+            IBlockOperation? blockStatementOpt,
+            ImmutableArray<NamingRule> rules,
+            IParameterSymbol parameter,
+            CancellationToken cancellationToken)
+        {
+            var siblingParameters = GetSiblingParameters(parameter);
+
+            using var _ = ArrayBuilder<IParameterSymbol>.GetInstance(out var matches);
+
+            foreach (var (sibling, _) in siblingParameters)
+            {
+                var parameterNameParts = IdentifierNameParts.CreateIdentifierNameParts(parameter, rules);
+                if (parameterNameParts.BaseName == "")
+                    continue;
+
+                var fieldOrProperty = await TryFindMatchingUninitializedFieldOrPropertySymbolAsync(
+                    document, parameter, blockStatementOpt, rules, parameterNameParts.BaseNameParts, cancellationToken).ConfigureAwait(false);
+                if (fieldOrProperty != null)
+                    continue;

                 var field = CreateField(requireAccessibilityModifiers, parameter, rules, parameterNameParts.BaseNameParts);
                 var property = CreateProperty(requireAccessibilityModifiers, parameter, rules, parameterNameParts.BaseNameParts);

-                var fieldAction = new MyCodeAction(string.Format(FeaturesResources.Create_and_initialize_field_0, field.Name),
-                    c => AddSymbolInitializationAsync(document, parameter, functionDeclaration, method, blockStatementOpt, field, c));
-                var propertyAction = new MyCodeAction(string.Format(FeaturesResources.Create_and_initialize_property_0, property.Name),
-                    c => AddSymbolInitializationAsync(document, parameter, functionDeclaration, method, blockStatementOpt, property, c));
-
-                // Check if the surrounding parameters are assigned to another field in this class.  If so, offer to
-                // make this parameter into a field as well.  Otherwise, default to generating a property
-                var siblingFieldOrProperty = TryFindSiblingFieldOrProperty(parameter, blockStatementOpt);
-                return siblingFieldOrProperty is IFieldSymbol
-                    ? ImmutableArray.Create<CodeAction>(fieldAction, propertyAction)
-                    : ImmutableArray.Create<CodeAction>(propertyAction, fieldAction);
-            }
+                matches.Add(sibling);
+            }
+
+            return matches.ToImmutable();
+        }
+
+        private ImmutableArray<CodeAction> HandleExistingFieldOrProperty(Document document, IParameterSymbol parameter, SyntaxNode functionDeclaration, IMethodSymbol method, IBlockOperation? blockStatementOpt, ISymbol fieldOrProperty)
+        {
+            // Found a field/property that this parameter should be assigned to.
+            // Just offer the simple assignment to it.
+
+            var resource = fieldOrProperty.Kind == SymbolKind.Field
+                ? FeaturesResources.Initialize_field_0
+                : FeaturesResources.Initialize_property_0;
+
+            var title = string.Format(resource, fieldOrProperty.Name);
+
+            return ImmutableArray.Create<CodeAction>(new MyCodeAction(
+                title,
+                c => AddSymbolInitializationAsync(
+                    document, parameter, functionDeclaration, method, blockStatementOpt, fieldOrProperty, c)));
         }

         private ISymbol? TryFindSiblingFieldOrProperty(IParameterSymbol parameter, IBlockOperation? blockStatementOpt)


Address CRs

Address CRs

--- src/ServiceManagement/Compute/Commands.ServiceManagement.Test/FunctionalTests/IaasCmdletInfo/SetAzureDeploymentCmdletInfo.cs
+++ src/ServiceManagement/Compute/Commands.ServiceManagement.Test/FunctionalTests/IaasCmdletInfo/SetAzureDeploymentCmdletInfo.cs
@@ -45,7 +45,11 @@

             result.cmdletParams.Add(new CmdletParam("Config"));
             result.cmdletParams.Add(new CmdletParam("Configuration", configPath));
-            result.cmdletParams.Add(new CmdletParam("ExtensionConfiguration", extConfig));
+
+            if (extConfig != null)
+            {
+                result.cmdletParams.Add(new CmdletParam("ExtensionConfiguration", extConfig));
+            }

             return result;
         }


Print headers at startup

Print headers at startup

--- HttpMock/Program.cs
+++ HttpMock/Program.cs
@@ -54,6 +54,16 @@

         static void Run()
         {
+            var allHeaders = Options.Headers.Concat(ServiceHeaders.Get(Options.Service));
+
+            Console.WriteLine("=== Headers ===");
+            foreach (var header in allHeaders)
+            {
+                Console.WriteLine(header);
+            }
+            Console.WriteLine();
+
+            Console.WriteLine("=== Startup ===");
             new WebHostBuilder()
                 .UseKestrel(options =>
                 {
@@ -71,7 +81,7 @@
                         var request = context.Request;
                         var response = context.Response;

-                        var key = new RequestCacheKey(request, Options.Headers.Concat(ServiceHeaders.Get(Options.Service)));
+                        var key = new RequestCacheKey(request, allHeaders);

                         if (_cache.TryGetValue(key, out var upstreamResponse))
                         {


Closes #73 (reverted f0d03a6)

Closes #73 (reverted f0d03a6)

--- Library/Registry.cs
+++ Library/Registry.cs
@@ -56,7 +56,7 @@
             Justification = "The 'T' requirement is on purpose.")]
         public Schedule Schedule<T>() where T : IJob
         {
-            var schedule = new Schedule(JobManager.JobFactory.GetJobInstance<T>());
+            var schedule = new Schedule(() => JobManager.JobFactory.GetJobInstance<T>().Execute());

             if (_allJobsConfiguredAsNonReentrant)
                 schedule.NonReentrant();


implemented ExtractPublicKey

implemented ExtractPublicKey

--- Kyru/Core/Crypto.cs
+++ Kyru/Core/Crypto.cs
@@ -9,26 +9,29 @@
 		private static readonly SHA1CryptoServiceProvider hash = new SHA1CryptoServiceProvider();

 		internal const int RsaPublicKeySize = 2048;
+		private const int ITERATIONS = 10000;

 		/// <summary>
-		/// Generates a private key from a username and password
+		/// Generates an RSA from a username and password
 		/// </summary>
 		/// <param name="username">Username</param>
 		/// <param name="password">Password</param>
 		/// <returns>The private key</returns>
-		internal static byte[] GeneratePrivateKey(string username, string password)
+		internal static byte[] GenerateKey(byte[] username, byte[] password)
 		{
 			throw new NotImplementedException();
 		}

 		/// <summary>
-		/// Extracts the public key from private key data
+		/// Extracts the public key from RSA private key data
 		/// </summary>
 		/// <param name="privateKey">The private key</param>
 		/// <returns>The public key</returns>
 		internal static byte[] ExtractPublicKey(byte[] privateKey)
 		{
-			throw new NotImplementedException();
+			var rsa = new RSACryptoServiceProvider();
+			rsa.ImportCspBlob(privateKey);
+			return rsa.ExportCspBlob(false);
 		}

 		/// <summary>


Use out argument instead of ref

Use out argument instead of ref

--- src/Features/CSharp/Portable/ConvertSwitchStatementToExpression/ConvertSwitchStatementToExpressionDiagnosticAnalyzer.Analyzer.cs
+++ src/Features/CSharp/Portable/ConvertSwitchStatementToExpression/ConvertSwitchStatementToExpressionDiagnosticAnalyzer.Analyzer.cs
@@ -111,31 +111,31 @@

             private SyntaxKind AnalyzeSwitchStatement(SwitchStatementSyntax switchStatement, out bool shouldRemoveNextStatement)
             {
-                shouldRemoveNextStatement = false;
-
                 // Fail if the switch statement is empty or any of sections have more than one "case" label.
                 // Once we have "or" patterns, we can relax this to accept multi-case sections.
                 var sections = switchStatement.Sections;
                 if (sections.Count == 0 || !sections.All(s => s.Labels.Count == 1 || s.Labels.Any(x => x.IsKind(SyntaxKind.DefaultSwitchLabel))))
                 {
+                    shouldRemoveNextStatement = false;
                     return default;
                 }

                 // If there's no "default" case, we look at the next statement.
                 // For instance, it could be a "return" statement which we'll use
                 // as the default case in the switch expression.
-                var nextStatement = AnalyzeNextStatement(switchStatement, ref shouldRemoveNextStatement);
+                var nextStatement = AnalyzeNextStatement(switchStatement, out shouldRemoveNextStatement);

                 // We do need to intersect the next statement analysis result to catch possible
                 // arm kind mismatch, e.g. a "return" after a non-exhaustive assignment switch.
                 return Aggregate(nextStatement, sections, (result, section) => Intersect(result, AnalyzeSwitchSection(section)));
             }

-            private SyntaxKind AnalyzeNextStatement(SwitchStatementSyntax switchStatement, ref bool shouldRemoveNextStatement)
+            private SyntaxKind AnalyzeNextStatement(SwitchStatementSyntax switchStatement, out bool shouldRemoveNextStatement)
             {
                 if (switchStatement.Sections.Any(section => section.Labels.Count > 1 || IsDefaultSwitchLabel(section.Labels[0])))
                 {
                     // Throw can be overridden by other section bodies, therefore it has no effect on the result.
+                    shouldRemoveNextStatement = false;
                     return SyntaxKind.ThrowStatement;
                 }


更新Demo

更新Demo

--- src/Senparc.Weixin.MP.Sample/Senparc.Weixin.MP.Sample.CommonService/MessageHandlers/CustomMessageHandler/CustomMessageHandler.cs
+++ src/Senparc.Weixin.MP.Sample/Senparc.Weixin.MP.Sample.CommonService/MessageHandlers/CustomMessageHandler/CustomMessageHandler.cs
@@ -420,6 +420,8 @@
             var responseMessage = CreateResponseMessage<ResponseMessageText>();
             responseMessage.Content = "您发送了一条视频信息，ID：" + requestMessage.MediaId;

+            #region 上传素材并推送到客户端
+
             Task.Factory.StartNew(async () =>
              {
                  //上传素材
@@ -435,13 +437,22 @@

                      throw;
                  }
-             }).ContinueWith(task =>
+             }).ContinueWith(async task =>
              {
                  if (task.Exception != null)
                  {
                      WeixinTrace.Log("OnVideoRequest()储存Video过程发生错误：", task.Exception.Message);
+
+                     var msg = string.Format("上传素材出错：{0}\r\n{1}",
+                                task.Exception.Message,
+                                task.Exception.InnerException != null
+                                    ? task.Exception.InnerException.Message
+                                    : null);
+                     await CustomApi.SendTextAsync(appId, base.WeixinOpenId, msg);
                  }
              });
+
+            #endregion

             return responseMessage;
         }


Hash:GetHashCode()

Hash:GetHashCode()

Now it's necessary because we want to use hash as key for dictionary.

--- Novacoin/Hash.cs
+++ Novacoin/Hash.cs
@@ -94,8 +94,15 @@

         public override int GetHashCode()
         {
-            // It's a hash already, so any idea of trying to get its hashcode doesn't make any sense to me
-            throw new NotSupportedException();
+            int hash = 17;
+            unchecked
+            {
+                foreach (var element in _hashBytes)
+                {
+                    hash = hash * 31 + element.GetHashCode();
+                }
+            }
+            return hash;
         }

         public int CompareTo(Hash item)


升级Demo

升级Demo

--- Senparc.Weixin.MP.Sample/Senparc.Weixin.MP.Sample.CommonService/MessageHandlers/CustomMessageHandler/CustomMessageHandler_Events.cs
+++ Senparc.Weixin.MP.Sample/Senparc.Weixin.MP.Sample.CommonService/MessageHandlers/CustomMessageHandler/CustomMessageHandler_Events.cs
@@ -100,9 +100,14 @@
                     break;
                 case "SubClickRoot_Image":
                     {
+                        //上传图片
+                        var accessToken = CommonAPIs.AccessTokenContainer.TryGetToken(appId, appSecret);
+                        var uploadResult = AdvancedAPIs.Media.Upload(accessToken, UploadMediaFileType.image,
+                                                                     Server.GetMapPath("~/Images/Logo.jpg"));
+                        //设置图片信息
                         var strongResponseMessage = CreateResponseMessage<ResponseMessageImage>();
                         reponseMessage = strongResponseMessage;
-                        strongResponseMessage.Image.MediaId = "Mj0WUTZeeG9yuBKhGP7iR5n1xUJO9IpTjGNC4buMuswfEOmk6QSIRb_i98do5nwo";
+                        strongResponseMessage.Image.MediaId = uploadResult.media_id;
                     }
                     break;
                 case "SubClickRoot_Agent"://代理消息


spelling

spelling

--- Oak/BootStrap.cs
+++ Oak/BootStrap.cs
@@ -1215,7 +1215,7 @@

Looks like you're using DynamicDb

 You're getting this error because you tried to access a table that doesn't exist in your database, or the columns in the tables
-do not match the prescribed conventions. DynamicDb will try to find table relationships for you. Here are the conventions DyanmicDb will look for:
+do not match the prescribed conventions. DynamicDb will try to find table relationships for you. Here are the conventions DynamicDb will look for:

Invoking an assocation that ends with ""s"" will return a collection. Example:


fix 2

fix 2

--- src/backend/SO115App.Models/Servizi/CQRS/Commands/GestioneSoccorso/GestionePartenza/ModificaPartenza/ModificaPartenzaCommandHandler.cs
+++ src/backend/SO115App.Models/Servizi/CQRS/Commands/GestioneSoccorso/GestionePartenza/ModificaPartenza/ModificaPartenzaCommandHandler.cs
@@ -107,7 +107,7 @@
                 else if (stato.Stato == Costanti.MezzoInRientro)
                 {
                     partenzaDaLavorare.Partenza.Mezzo.Stato = Costanti.MezzoInRientro;
-                    partenzaDaLavorare.Partenza.Mezzo.IdRichiesta = null;
+                    //partenzaDaLavorare.Partenza.Mezzo.IdRichiesta = null;
                     //partenzaDaLavorare.Partenza.Terminata = true;

                     new PartenzaInRientro(Richiesta, partenzaDaLavorare.Partenza.Mezzo.Codice, stato.DataOraAggiornamento, Richiesta.CodOperatore);


Aggiornamento stato mezzo - Fix

Aggiornamento stato mezzo - Fix

--- src/backend/SO115App.Models/Servizi/CQRS/Commands/GestioneSoccorso/GestionePartenza/AggiornaStatoMezzo/AggiornaStatoMezzoCommandHandler.cs
+++ src/backend/SO115App.Models/Servizi/CQRS/Commands/GestioneSoccorso/GestionePartenza/AggiornaStatoMezzo/AggiornaStatoMezzoCommandHandler.cs
@@ -109,18 +109,18 @@
             }
             else
             {
-                switch (command.StatoMezzo)
-                {
-                    case Costanti.MezzoInViaggio:
-                        if (ultimoEvento is ArrivoSulPosto || ultimoEvento is PartenzaInRientro || ultimoEvento is PartenzaRientrata)
-                            throw new System.Exception("Sequenza stati non congurente.");
-                        break;
-
-                    case Costanti.MezzoSulPosto:
-                        if (ultimoEvento is PartenzaInRientro || ultimoEvento is PartenzaRientrata)
-                            throw new System.Exception("Sequenza stati non congurente.");
-                        break;
-                }
+                //switch (command.StatoMezzo)
+                //{
+                //    case Costanti.MezzoInViaggio:
+                //        if (ultimoEvento is ArrivoSulPosto || ultimoEvento is PartenzaInRientro || ultimoEvento is PartenzaRientrata)
+                //            throw new System.Exception("Sequenza stati non congurente.");
+                //        break;
+
+                //    case Costanti.MezzoSulPosto:
+                //        if (ultimoEvento is PartenzaInRientro || ultimoEvento is PartenzaRientrata)
+                //            throw new System.Exception("Sequenza stati non congurente.");
+                //        break;
+                //}

                 string statoMezzoReale = "";


Rusty.Core.Mouse: Remove an unused variable.

--- Rusty/Core/Mouse.cs
+++ Rusty/Core/Mouse.cs
@@ -55,7 +55,6 @@
                 {
                     var foreGroundWindow = Window.WindowItemProvider.Instance.ActiveWindow;
                     if(foreGroundWindow != null) {
-						var name = foreGroundWindow.Title;
                         var location = foreGroundWindow.Location;
                         MousePos.X += location.X;
                         MousePos.Y += location.Y;


ExecuteAsync will no longer log when a task is cancelled in release builds

--- Monkeyspeak/Page.cs
+++ Monkeyspeak/Page.cs
@@ -1029,14 +1029,12 @@
                     await Task.Run(() =>
                     {
                         Execute(id, args);
-                    }, cancellationToken).ContinueWith(t => Logger.Error<Page>(t.Exception.InnerException), TaskContinuationOptions.OnlyOnFaulted | TaskContinuationOptions.ExecuteSynchronously);
+                    }, cancellationToken);
                 }
                 catch (OperationCanceledException ex)
                 {
 #if DEBUG
                     ex.Log<Page>();
-#else
-                ex.LogMessage<Page>();
 #endif
                 }
                 catch (Exception ex)
@@ -1060,14 +1058,12 @@
                 await Task.Run(() =>
                 {
                     Execute(id, args);
-                }, cancellationToken).ContinueWith(t => Logger.Error<Page>(t.Exception.InnerException), TaskContinuationOptions.OnlyOnFaulted | TaskContinuationOptions.ExecuteSynchronously);
+                }, cancellationToken);
             }
             catch (OperationCanceledException ex)
             {
 #if DEBUG
                 ex.Log<Page>();
-#else
-                ex.LogMessage<Page>();
 #endif
             }
             catch (Exception ex)


On global Exception, print stack trace to a %TEMP% file.

--- LostSoul/Program.cs
+++ LostSoul/Program.cs
@@ -18,8 +18,30 @@
         [STAThread]
         static void Main()
         {
-            using (var game = new LostSoulGame())
-                game.Run();
+            try
+            {
+                using (var game = new LostSoulGame())
+                    game.Run();
+            }
+            catch (Exception e)
+            {
+                string stackfile = System.IO.Path.GetTempPath() + "lostsoul_" + Guid.NewGuid().ToString();
+                System.IO.StreamWriter file = new System.IO.StreamWriter(stackfile);
+                WriteExceptionsUntilNoMoreInner(e, file);
+                file.Close();
+                throw e;
+            }
+        }
+
+        private static void WriteExceptionsUntilNoMoreInner(Exception e, System.IO.StreamWriter file)
+        {
+            while (e != null)
+            {
+                file.WriteLine(e.Message);
+                file.WriteLine(e.StackTrace);
+                file.WriteLine("");
+                e = e.InnerException;
+            }
         }
     }
 #endif


wedding_optimal_chart.cs Fixed constraint for b (min number of persons known at a table)

--- csharp/wedding_optimal_chart.cs
+++ csharp/wedding_optimal_chart.cs
@@ -63,7 +63,6 @@
     int a = 10; // maximum number of guests a table can seat
     int b = 1;  // minimum number of people each guest knows at their table

-
     /*
     // Sligthly harder problem (also from the paper)
     int n = 5; // number of tables
@@ -153,11 +152,20 @@
     // Constraints
     //
     foreach(int i in NRANGE) {
+
+      solver.Add((from j in MRANGE
+                  from k in MRANGE
+                  where j < k
+                  select ((solver.MakeIntConst(C[j,k]).IsGreater(0))*
+                          (tables[j].IsEqual(i))*
+                          (tables[k].IsEqual(i))).Var()
+                  ).ToArray().Sum() >= b);
+
+
       IntVar tmp = (from j in MRANGE
                     select tables[j].IsEqual(i).Var()
                     ).ToArray().Sum().Var();
       solver.Add(tmp <= a);
-      solver.Add(tmp >= b);

     }


Added more HeaderId's

Added more HeaderId's

--- MimeKit/HeaderId.cs
+++ MimeKit/HeaderId.cs
@@ -42,11 +42,21 @@
 	/// </remarks>
 	public enum HeaderId {
 		/// <summary>
+		/// The Accept-Language header field.
+		/// </summary>
+		AcceptLanguage,
+
+		/// <summary>
 		/// The Ad-Hoc header field.
 		/// </summary>
 		AdHoc,

 		/// <summary>
+		/// The Alternate-Recipient header field.
+		/// </summary>
+		AlternateRecipient,
+
+		/// <summary>
 		/// The Apparently-To header field.
 		/// </summary>
 		ApparentlyTo,
@@ -57,16 +67,89 @@
 		Approved,

 		/// <summary>
+		/// The ARC-Authentication-Results header field.
+		/// </summary>
+		[HeaderName ("ARC-Authentication-Results")]
+		ArcAuthenticationResults,
+
+		/// <summary>
+		/// The ARC-Message-Signature header field.
+		/// </summary>
+		[HeaderName ("ARC-Message-Signature")]
+		ArcMessageSignature,
+
+		/// <summary>
+		/// The ARC-Seal header field.
+		/// </summary>
+		[HeaderName ("ARC-Seal")]
+		ArcSeal,
+
+		/// <summary>
+		/// The Archive header field.
+		/// </summary>
+		Archive,
+
+		/// <summary>
+		/// The Archived-At header field.
+		/// </summary>
+		ArchivedAt,
+
+		/// <summary>
 		/// The Article header field.
 		/// </summary>
 		Article,

 		/// <summary>
+		/// The Authentication-Results header field.
+		/// </summary>
+		AuthenticationResults,
+
+		/// <summary>
+		/// The Autocrypt header field.
+		/// </summary>
+		Autocrypt,
+
+		/// <summary>
+		/// The Autocrypt-Gossip header field.
+		/// </summary>
+		AutocryptGossip,
+
+		/// <summary>
+		/// The Autocrypt-Setup-Message header field.
+		/// </summary>
+		AutocryptSetupMessage,
+
+		/// <summary>
+		/// The Autoforwarded header field.
+		/// </summary>
+		Autoforwarded,
+
+		/// <summary>
+		/// The Auto-Submitted header field.
+		/// </summary>
+		AutoSubmitted,
+
+		/// <summary>
+		/// The Autosubmitted header field.
+		/// </summary>
+		Autosubmitted,
+
+		/// <summary>
+		/// The Base header field.
+		/// </summary>
+		Base,
+
+		/// <summary>
 		/// The Bcc header field.
 		/// </summary>
 		Bcc,

 		/// <summary>
+		/// The Body header field.
+		/// </summary>
+		Body,
+
+		/// <summary>
 		/// The Bytes header field.
 		/// </summary>
 		Bytes,
@@ -82,6 +165,11 @@
 		Comments,

 		/// <summary>
+		/// The Content-Alternative header field.
+		/// </summary>
+		ContentAlternative,
+
+		/// <summary>
 		/// The Content-Base header field.
 		/// </summary>
 		ContentBase,
@@ -107,11 +195,21 @@
 		ContentDuration,

 		/// <summary>
+		/// The Content-Features header field.
+		/// </summary>
+		ContentFeatures,
+
+		/// <summary>
 		/// The Content-Id header field.
 		/// </summary>
 		ContentId,

 		/// <summary>
+		/// The Content-Identifier header field.
+		/// </summary>
+		ContentIdentifier,
+
+		/// <summary>
 		/// The Content-Language header field.
 		/// </summary>
 		ContentLanguage,
@@ -132,11 +230,21 @@
 		ContentMd5,

 		/// <summary>
+		/// The Content-Return header field.
+		/// </summary>
+		ContentReturn,
+
+		/// <summary>
 		/// The Content-Transfer-Encoding header field.
 		/// </summary>
 		ContentTransferEncoding,

 		/// <summary>
+		/// The Content-Translation-Type header field.
+		/// </summary>
+		ContentTranslationType,
+
+		/// <summary>
 		/// The Content-Type header field.
 		/// </summary>
 		ContentType,
@@ -147,14 +255,39 @@
 		Control,

 		/// <summary>
+		/// The Conversion header field.
+		/// </summary>
+		Conversion,
+
+		/// <summary>
+		/// The Conversion-With-Loss header field.
+		/// </summary>
+		ConversionWithLoss,
+
+		/// <summary>
 		/// The Date header field.
 		/// </summary>
 		Date,

 		/// <summary>
+		/// The Date-Received header field.
+		/// </summary>
+		DateReceived,
+
+		/// <summary>
 		/// The Deferred-Delivery header field.
 		/// </summary>
 		DeferredDelivery,
+
+		/// <summary>
+		/// The Delivery-Date header field.
+		/// </summary>
+		DeliveryDate,
+
+		/// <summary>
+		/// The Disclose-Recipients header field.
+		/// </summary>
+		DiscloseRecipients,

 		/// <summary>
 		/// The Disposition-Notification-Options header field.
@@ -214,11 +347,26 @@
 		From,

 		/// <summary>
+		/// The Generate-Delivery-Report header field.
+		/// </summary>
+		GenerateDeliveryReport,
+
+		/// <summary>
 		/// The Importance header field.
 		/// </summary>
 		Importance,

 		/// <summary>
+		/// The Injection-Date header field.
+		/// </summary>
+		InjectionDate,
+
+		/// <summary>
+		/// The Injection-Info header field.
+		/// </summary>
+		InjectionInfo,
+
+		/// <summary>
 		/// The In-Reply-To header field.
 		/// </summary>
 		InReplyTo,
@@ -229,16 +377,46 @@
 		Keywords,

 		/// <summary>
+		/// The Language header.
+		/// </summary>
+		Language,
+
+		/// <summary>
+		/// The Latest-Delivery-Time header.
+		/// </summary>
+		LatestDeliveryTime,
+
+		/// <summary>
 		/// The Lines header field.
 		/// </summary>
 		Lines,

 		/// <summary>
+		/// THe List-Archive header field.
+		/// </summary>
+		ListArchive,
+
+		/// <summary>
 		/// The List-Help header field.
 		/// </summary>
 		ListHelp,

 		/// <summary>
+		/// The List-Id header field.
+		/// </summary>
+		ListId,
+
+		/// <summary>
+		/// The List-Owner header field.
+		/// </summary>
+		ListOwner,
+
+		/// <summary>
+		/// The List-Post header field.
+		/// </summary>
+		ListPost,
+
+		/// <summary>
 		/// The List-Subscribe header field.
 		/// </summary>
 		ListSubscribe,
@@ -247,6 +425,11 @@
 		/// The List-Unsubscribe header field.
 		/// </summary>
 		ListUnsubscribe,
+
+		/// <summary>
+		/// The List-Unsubscribe-Post header field.
+		/// </summary>
+		ListUnsubscribePost,

 		/// <summary>
 		/// The Message-Id header field.
@@ -275,11 +458,31 @@
 		Organization,

 		/// <summary>
+		/// The Original-From header field.
+		/// </summary>
+		OriginalFrom,
+
+		/// <summary>
+		/// The Original-Message-Id header field.
+		/// </summary>
+		OriginalMessageId,
+
+		/// <summary>
 		/// The Original-Recipient header field.
 		/// </summary>
 		OriginalRecipient,

 		/// <summary>
+		/// The Original-Return-Address header field.
+		/// </summary>
+		OriginalReturnAddress,
+
+		/// <summary>
+		/// The Original-Subject header field.
+		/// </summary>
+		OriginalSubject,
+
+		/// <summary>
 		/// The Path header field.
 		/// </summary>
 		Path,
@@ -290,6 +493,12 @@
 		Precedence,

 		/// <summary>
+		/// The Prevent-NonDelivery-Report header field.
+		/// </summary>
+		[HeaderName ("Prevent-NonDelivery-Report")]
+		PreventNonDeliveryReport,
+
+		/// <summary>
 		/// The Priority header field.
 		/// </summary>
 		Priority,
@@ -300,11 +509,22 @@
 		Received,

 		/// <summary>
+		/// The Received-SPF header field.
+		/// </summary>
+		[HeaderName ("Received-SPF")]
+		ReceivedSPF,
+
+		/// <summary>
 		/// The References header field.
 		/// </summary>
 		References,

 		/// <summary>
+		/// The Relay-Version header field.
+		/// </summary>
+		RelayVersion,
+
+		/// <summary>
 		/// The Reply-By header field.
 		/// </summary>
 		ReplyBy,
@@ -315,6 +535,11 @@
 		ReplyTo,

 		/// <summary>
+		/// The Require-Recipient-Valid-Since header field.
+		/// </summary>
+		RequireRecipientValidSince,
+
+		/// <summary>
 		/// The Resent-Bcc header field.
 		/// </summary>
 		ResentBcc,
@@ -365,6 +590,11 @@
 		ReturnReceiptTo,

 		/// <summary>
+		/// The See-Also header field.
+		/// </summary>
+		SeeAlso,
+
+		/// <summary>
 		/// The Sender header field.
 		/// </summary>
 		Sender,
@@ -375,6 +605,11 @@
 		Sensitivity,

 		/// <summary>
+		/// The Solicitation header field.
+		/// </summary>
+		Solicitation,
+
+		/// <summary>
 		/// The Status header field.
 		/// </summary>
 		Status,
@@ -403,6 +638,54 @@
 		/// The User-Agent header field.
 		/// </summary>
 		UserAgent,
+
+		/// <summary>
+		/// The X400-Content-Identifier header field.
+		/// </summary>
+		[HeaderName ("X400-Content-Identifier")]
+		X400ContentIdentifier,
+
+		/// <summary>
+		/// The X400-Content-Return header field.
+		/// </summary>
+		[HeaderName ("X400-Content-Return")]
+		X400ContentReturn,
+
+		/// <summary>
+		/// The X400-Content-Type header field.
+		/// </summary>
+		[HeaderName ("X400-Content-Type")]
+		X400ContentType,
+
+		/// <summary>
+		/// The X400-MTS-Identifier header field.
+		/// </summary>
+		[HeaderName ("X400-MTS-Identifier")]
+		X400MTSIdentifier,
+
+		/// <summary>
+		/// The X400-Originator header field.
+		/// </summary>
+		[HeaderName ("X400-Originator")]
+		X400Originator,
+
+		/// <summary>
+		/// The X400-Received header field.
+		/// </summary>
+		[HeaderName ("X400-Received")]
+		X400Received,
+
+		/// <summary>
+		/// The X400-Recipients header field.
+		/// </summary>
+		[HeaderName ("X400-Recipients")]
+		X400Recipients,
+
+		/// <summary>
+		/// The X400-Trace header field.
+		/// </summary>
+		[HeaderName ("X400-Trace")]
+		X400Trace,

 		/// <summary>
 		/// The X-Mailer header field.


Removed extra line from quick start example code

--- ReadmeQuickStartExamples/Program.cs
+++ ReadmeQuickStartExamples/Program.cs
@@ -86,8 +86,6 @@

 				document.Save("cpix.xml");
 			}
-
-			document.Save("cpix.xml");
 		}

 		private static void ReadingCpixExample()


[+] add button

[+] add button

--- NewtonVR/NVRHand.cs
+++ NewtonVR/NVRHand.cs
@@ -37,6 +37,11 @@
         public NVRButtons RemoteCentreButton = NVRButtons.A;
         public bool RemoteCentreClickDown { get { return Inputs[RemoteCentreButton].PressDown; } }

+		// menu
+		public NVRButtons MenuButton = NVRButtons.ApplicationMenu;
+		public bool MenuButtonDown { get { return Inputs[MenuButton].PressDown; } }
+
+
         [HideInInspector]
         public bool IsRight;
         [HideInInspector]


Perform a small readability improvement for the help text

--- RepoZ.UI.Win.Wpf/MainWindow.xaml.cs
+++ RepoZ.UI.Win.Wpf/MainWindow.xaml.cs
@@ -109,17 +109,23 @@
 			return $@"
 RepoZ is showing all Git repositories found on local drives. Each repository is listed with a status string which could look like this:

-[CurrentBranch S +A ~B -C | +D ~E -F ]
+    S   +A   ~B   -C   |   +D   ~E   -F

-S represents the branch status in relation to remote (tracked origin) branch. Note: This information reflects the state of the remote tracked branch after the last git fetch/pull of the remote.
+S
+Represents the branch status in relation to remote (tracked origin) branch.
+Note: This information reflects the state of the remote tracked branch after the last git fetch/pull of the remote.

-{statusCharacterMap.IdenticalSign} = The local branch in at the same commit level as the remote branch (BranchIdenticalStatus)
+{statusCharacterMap.IdenticalSign}
+The local branch in at the same commit level as the remote branch.

-{statusCharacterMap.ArrowUpSign}<num> = The local branch is ahead of the remote branch by the specified number of commits; a 'git push' is required to update the remote branch (BranchAheadStatus)
+{statusCharacterMap.ArrowUpSign}<num>
+The local branch is ahead of the remote branch by the specified number of commits; a 'git push' is required to update the remote branch.

-{statusCharacterMap.ArrowDownSign}<num> = The local branch is behind the remote branch by the specified number of commits; a 'git pull' is required to update the local branch (BranchBehindStatus)
+{statusCharacterMap.ArrowDownSign}<num>
+The local branch is behind the remote branch by the specified number of commits; a 'git pull' is required to update the local branch.

-{statusCharacterMap.NoUpstreamSign} = The branch is a local branch with no upstream branch information.
+{statusCharacterMap.NoUpstreamSign}
+The branch is a local branch with no upstream branch information.

 ABC represent the index; DEF represent the working directory
   + = Added files


Capture the unknown bits in a frame more reliably

--- RocketLeagueReplayParser/Frame.cs
+++ RocketLeagueReplayParser/Frame.cs
@@ -41,50 +41,12 @@
             while ( (lastActorState == null || lastActorState.Complete) && br.ReadBit() )// TODO: Switch to while(br.ReadBit()) // bit=1 means replicating another actor
             {
                 lastActorState = ActorState.Deserialize(br);
+                f.ActorStates.Add(lastActorState);
+            }

-                if ( !lastActorState.Complete)
-                {
-                    while(!br.EndOfStream)
-                    {
-                        f.UnknownBits.Add(br.ReadBit());
-                    }
-                }
-
-                f.ActorStates.Add(lastActorState);
-                /*
-                var actorId = br.ReadInt32FromBits(10);
-                var channelStateOpen = br.ReadBit();
-
-                if (channelStateOpen)
-                    continue;
-
-                var isNewActor = br.ReadBit();
-                if (!isNewActor)
-                {
-                    while (br.ReadBit()) //Has some properties to read!!!
-                    {
-                        //read 6 bits = property id
-                        //the rest is a data which is variable depending on size of property id
-                    }
-                    //check for and read the properties
-                    continue;
-                }
-
-                //parse new actor!!!!!!!
-                //read a variable sized int to get the type //typeIndex = readVarInt();
-                //var ints are read 8 bits at a time, the first 7 bits are data (be careful about the order of these), the 8th bit signifies to keep reading another 8 bits (if 1) or to stop (if 0).
-                //from here we can get the string representing this type by looking it up in the objects list given the type index
-
-                bool keepReading;
-
-                do
-                {
-                    byte[] varInt = br.ReadBitsAsBytes(8);
-                    keepReading = (varInt[0] & 0x01) == 0x01; //Check 8th bit to see if we should expect another thingy
-
-                    var typeIndex = 0xfe & varInt[0]; //Get first 7 bits which represents the type index
-                } while (keepReading);
-                 * */
+            while (!br.EndOfStream)
+            {
+                f.UnknownBits.Add(br.ReadBit());
             }

             return f;


Remove copyright when a player joins

Remove copyright when a player joins

--- Rocket_Safezone/SafeZonePlugin.cs
+++ Rocket_Safezone/SafeZonePlugin.cs
@@ -122,11 +122,6 @@
         {
             var untPlayer = PlayerUtil.GetUnturnedPlayer(player);

-            if (!player.HasPermission("info"))
-            {
-                UnturnedChat.Say(player, "This server is running Safezones by Trojaner", Color.gray);
-            }
-
             SafeZone safeZone = GetSafeZoneAt(untPlayer.Position);
             if (safeZone != null)
             {


Trim track names

Trim track names

To unify duplicate entries like "Citadel XIV " and "Citadel XIV".

--- RuneScapeCacheTools/Soundtrack.cs
+++ RuneScapeCacheTools/Soundtrack.cs
@@ -44,7 +44,7 @@
 					var trackName = resolveFile.ReadNullTerminatedString();

 					//replace characters that can't be used in files from trackName
-					trackName = regex.Replace(trackName, "");
+					trackName = regex.Replace(trackName, "").Trim();

 					//add only if the string is of any use
 					if (!string.IsNullOrWhiteSpace(trackName))


Minor fix

Minor fix

--- eFormCore/Core.cs
+++ eFormCore/Core.cs
@@ -3475,10 +3475,8 @@
                                     List<a_interaction_case_lists> caseList = sqlController.InteractionCaseListRead(iC.id);

                                     foreach (var item in caseList)
-                                        if (item.stat != "Completed")
-                                            if (item.stat != "Created")
-                                                if (item.microting_uid != null)
-                                                    found += 1 - t.Bool(CaseDelete(item.microting_uid));
+                                        if (item.stat == "Sent" || item.stat == "Retrived")
+                                            found += 1 - t.Bool(CaseDelete(item.microting_uid));

                                     if (found == 0)
                                         sqlController.InteractionCaseProcessedDelete(iC.id);


RA-1277 further refinement of tests.

RA-1277 further refinement of tests.

--- src/Esfa.Vacancy.Register.UnitTests/SearchApprenticeship/Application/GivenASearchApprenticeshipVacanciesRequestValidator/WhenValidatingLocationFields.cs
+++ src/Esfa.Vacancy.Register.UnitTests/SearchApprenticeship/Application/GivenASearchApprenticeshipVacanciesRequestValidator/WhenValidatingLocationFields.cs
@@ -1,8 +1,6 @@
 using System;
 using System.Collections.Generic;
-using System.Linq;
 using Esfa.Vacancy.Register.Application.Queries.SearchApprenticeshipVacancies;
-using Esfa.Vacancy.Register.Domain.Entities;
 using Esfa.Vacancy.Register.Domain.Validation;
 using FluentAssertions;
 using FluentValidation.Results;
@@ -13,21 +11,7 @@
     [TestFixture]
     public class WhenValidatingLocationFields : GivenSearchApprenticeshipVacanciesRequestValidatorBase
     {
-        [Test]
-        public void AndAllThreeFieldsArePresentAndEachFieldIsValid_ThenRequestIsValid()
-        {
-            var result = Validator.Validate(new SearchApprenticeshipVacanciesRequest
-            {
-                StandardLarsCodes = ValidStandardCodes,
-                Latitude = 52.399085,
-                Longitude = -1.506115,
-                DistanceInMiles = 342
-            });
-
-            result.IsValid.Should().BeTrue();
-        }
-
-        private static List<TestCaseData> FailingTestCases => new List<TestCaseData>
+        private static List<TestCaseData> TestCases => new List<TestCaseData>
         {
             new TestCaseData(new SearchApprenticeshipVacanciesRequest
                 {
@@ -35,7 +19,7 @@
                     Latitude = 52.399085,
                     Longitude = -1.506115,
                     DistanceInMiles = 235
-                }, new ValidationResult())
+                }, new ValidationResult()) // IsValid == true when Errors collection is empty
                 .SetName("And all fields present then valid"),
             new TestCaseData(new SearchApprenticeshipVacanciesRequest
                 {
@@ -123,8 +107,8 @@
                 .SetName("And only distance then invalid")
         };

-        [TestCaseSource(nameof(FailingTestCases))]
-        public void ValidateMissingFields(SearchApprenticeshipVacanciesRequest request, ValidationResult expectedResult)
+        [TestCaseSource(nameof(TestCases))]
+        public void AndRunningTestCases(SearchApprenticeshipVacanciesRequest request, ValidationResult expectedResult)
         {
             var actualResult = Validator.Validate(request);


Fixed function patching to change ret instructions into a stop call and insert a new ret instruction after it. Avoids issues if there is a branch directly to a ret instruction.

--- PatchAsm/Program.cs
+++ PatchAsm/Program.cs
@@ -32,15 +32,14 @@
                 MethodDefinition stopFunc = tUtils.Methods.First(x => x.Name == "StopTimed");

                 PatchFunc(asm, "Part", "requestResource", startFunc0, stopFunc);
-                //PatchFunc(asm, "Part", "TransferResource", startFunc0, stopFunc);
-                //PatchFunc(asm, "Part", "GetConnectedResources", startFunc0, stopFunc);
+                PatchFunc(asm, "Part", "TransferResource", startFunc0, stopFunc);
+                PatchFunc(asm, "Part", "GetConnectedResources", startFunc0, stopFunc);

                 PatchFunc(asm, "ModuleDockingNode", "FixedUpdate", startFunc1, stopFunc);

                 PatchFunc(asm, "ResourceConverter", "ProcessRecipe", startFunc2, stopFunc);

-                // This doesn't work too well,
-                //PatchFunc(asm, "FlightIntegrator", "FixedUpdate", startFunc3, stopFunc);
+                PatchFunc(asm, "FlightIntegrator", "FixedUpdate", startFunc3, stopFunc);

                 Print("Writing file {0}", outfilename);
                 asm.Write(outfilename);
@@ -66,13 +65,18 @@
                 ILProcessor proc = func.Body.GetILProcessor();

                 var callStart = proc.Create(OpCodes.Call, func.Module.Import(startFunc));
-                var callStop = proc.Create(OpCodes.Call, func.Module.Import(stopFunc));
+                var methodStop = func.Module.Import(stopFunc);
+                var ret = proc.Create(OpCodes.Ret);

                 // Insert call to stop before every return
                 for (int i = insList.Count - 1; i >= 0; i--)
                 {
                     if (insList[i].OpCode == OpCodes.Ret)
-                        proc.InsertBefore(insList[i], callStop);
+                    {
+                        proc.InsertAfter(insList[i], ret);
+                        insList[i].OpCode = OpCodes.Call;
+                        insList[i].Operand = methodStop;
+                    }
                 }

                 // Insert call to start at the beginning


Spaces, not tabs

Spaces, not tabs

--- PayPalNvp/PayPal.cs
+++ PayPalNvp/PayPal.cs
@@ -6,105 +6,105 @@

 namespace NeoSmart.PayPalNvp
 {
-	public class PayPal
-	{
-		public const double NvpVersion = 87.0;
-		public const string NvpEndPoint = "https://api-3t.paypal.com/nvp";
-		//public const string NvpEndPoint = "https://api-3t.sandbox.paypal.com/nvp";
+    public class PayPal
+    {
+        public const double NvpVersion = 87.0;
+        public const string NvpEndPoint = "https://api-3t.paypal.com/nvp";
+        //public const string NvpEndPoint = "https://api-3t.sandbox.paypal.com/nvp";

-		private string _user;
-		private string _pass;
-		private string _sig;
+        private string _user;
+        private string _pass;
+        private string _sig;

-		public PayPal(string user, string pass, string signature)
-		{
-			_user = user;
-			_pass = pass;
-			_sig = signature;
-		}
+        public PayPal(string user, string pass, string signature)
+        {
+            _user = user;
+            _pass = pass;
+            _sig = signature;
+        }

-		private string EncodeNvpString(Dictionary<string, string> fields)
-		{
-			var sb = new StringBuilder();
+        private string EncodeNvpString(Dictionary<string, string> fields)
+        {
+            var sb = new StringBuilder();

-			foreach (var kv in fields)
-			{
-				sb.AppendFormat("{0}={1}&", Uri.EscapeUriString(kv.Key.ToUpper()), Uri.EscapeUriString(kv.Value));
-			}
+            foreach (var kv in fields)
+            {
+                sb.AppendFormat("{0}={1}&", Uri.EscapeUriString(kv.Key.ToUpper()), Uri.EscapeUriString(kv.Value));
+            }

-			return sb.ToString();
-		}
+            return sb.ToString();
+        }

-		private Dictionary<string, string> DecodeNvpString(string nvpstr)
-		{
-			var nvpMap = new Dictionary<string, string>();
+        private Dictionary<string, string> DecodeNvpString(string nvpstr)
+        {
+            var nvpMap = new Dictionary<string, string>();

-			string[] pairs = nvpstr.Split('&');
-			foreach (var pair in pairs)
-			{
-				string[] halves = pair.Split('=');
+            string[] pairs = nvpstr.Split('&');
+            foreach (var pair in pairs)
+            {
+                string[] halves = pair.Split('=');

-				nvpMap[Uri.UnescapeDataString(halves[0])] = halves.Length == 2 ? Uri.UnescapeDataString(halves[1]) : string.Empty;
-			}
+                nvpMap[Uri.UnescapeDataString(halves[0])] = halves.Length == 2 ? Uri.UnescapeDataString(halves[1]) : string.Empty;
+            }

-			return nvpMap;
-		}
+            return nvpMap;
+        }

-		public Dictionary<string, string> GenericNvp(string method, Dictionary<string, string> fields)
-		{
-			//Add some default PayPal-specific values
-			fields["USER"] = _user;
-			fields["PWD"] = _pass;
-			fields["SIGNATURE"] = _sig;
-			fields["VERSION"] = NvpVersion.ToString();
-			fields["METHOD"] = method;
+        public Dictionary<string, string> GenericNvp(string method, Dictionary<string, string> fields)
+        {
+            //Add some default PayPal-specific values
+            fields["USER"] = _user;
+            fields["PWD"] = _pass;
+            fields["SIGNATURE"] = _sig;
+            fields["VERSION"] = NvpVersion.ToString();
+            fields["METHOD"] = method;

-			string nvpstr = EncodeNvpString(fields);
+            string nvpstr = EncodeNvpString(fields);

-			//Send the POST request to PayPal
-			var request = (HttpWebRequest)WebRequest.Create(NvpEndPoint);
-			request.CachePolicy = new System.Net.Cache.RequestCachePolicy(System.Net.Cache.RequestCacheLevel.NoCacheNoStore);
-			request.Method = "POST";
-			request.ContentType = "application/x-www-form-urlencoded";
-			request.ContentLength = nvpstr.Length;
-			using (var writer = new StreamWriter(request.GetRequestStream()))
-			{
-				writer.Write(nvpstr);
-			}
+            //Send the POST request to PayPal
+            var request = (HttpWebRequest)WebRequest.Create(NvpEndPoint);
+            request.CachePolicy = new System.Net.Cache.RequestCachePolicy(System.Net.Cache.RequestCacheLevel.NoCacheNoStore);
+            request.Method = "POST";
+            request.ContentType = "application/x-www-form-urlencoded";
+            request.ContentLength = nvpstr.Length;
+            using (var writer = new StreamWriter(request.GetRequestStream()))
+            {
+                writer.Write(nvpstr);
+            }

-			//Get the result
-			var response = request.GetResponse();
-			using (var reader = new StreamReader(response.GetResponseStream()))
-			{
-				nvpstr = reader.ReadToEnd();
-			}
+            //Get the result
+            var response = request.GetResponse();
+            using (var reader = new StreamReader(response.GetResponseStream()))
+            {
+                nvpstr = reader.ReadToEnd();
+            }

-			return DecodeNvpString(nvpstr);
-		}
+            return DecodeNvpString(nvpstr);
+        }

-		//Start of PayPal convenience methods
-		public Dictionary<string, string> SetExpressCheckout(Dictionary<string, string> fields)
-		{
-			string method = "SetExpressCheckout";
-			return GenericNvp(method, fields);
-		}
+        //Start of PayPal convenience methods
+        public Dictionary<string, string> SetExpressCheckout(Dictionary<string, string> fields)
+        {
+            string method = "SetExpressCheckout";
+            return GenericNvp(method, fields);
+        }

-		public Dictionary<string, string> GetExpressCheckoutDetails(Dictionary<string, string> fields)
-		{
-			string method = "GetExpressCheckoutDetails";
-			return GenericNvp(method, fields);
-		}
+        public Dictionary<string, string> GetExpressCheckoutDetails(Dictionary<string, string> fields)
+        {
+            string method = "GetExpressCheckoutDetails";
+            return GenericNvp(method, fields);
+        }

-		public Dictionary<string, string> DoExpressCheckoutPayment(Dictionary<string, string> fields)
-		{
-			string method = "DoExpressCheckoutPayment";
-			return GenericNvp(method, fields);
-		}
-
-		public Dictionary<string, string> RefundTransaction(Dictionary<string, string> fields)
-		{
-			string method = "RefundTransaction";
-			return GenericNvp(method, fields);
-		}
-	}
+        public Dictionary<string, string> DoExpressCheckoutPayment(Dictionary<string, string> fields)
+        {
+            string method = "DoExpressCheckoutPayment";
+            return GenericNvp(method, fields);
+        }
+
+        public Dictionary<string, string> RefundTransaction(Dictionary<string, string> fields)
+        {
+            string method = "RefundTransaction";
+            return GenericNvp(method, fields);
+        }
+    }
 }


Revised DataUpdaterTests

Revised DataUpdaterTests

--- src/tests/DreamMisc/DataUpdaterTests.cs
+++ src/tests/DreamMisc/DataUpdaterTests.cs
@@ -179,6 +179,7 @@
         [Test]
         public void load_and_execute() {
             _dataUpdater.LoadMethodsAndExecute(_testAssembly);
+            Assert.IsTrue(DummyUpgradeClass.ExecutedMethods.Count > 0, "No Methods were executed");
         }

         [Test]
@@ -192,6 +193,7 @@
             }

             // Check that methods were executed in proper order
+            Assert.IsTrue(DummyUpgradeClass.ExecutedMethods.Count > 0, "No Methods were executed");
             for(int i = 1; i < DummyUpgradeClass.ExecutedMethods.Count; i++) {
                 Assert.IsTrue(DummyUpgradeClass.ExecutedMethods[i].CompareTo(DummyUpgradeClass.ExecutedMethods[i - 1]) == 1, "Ordering of methods is wrong.");
             }
@@ -217,6 +219,7 @@
             var maxVersion = new VersionInfo(version);
             var dataUpdater = new TestDataUpdater(version);
             dataUpdater.LoadMethodsAndExecute(_testAssembly);
+            Assert.IsTrue(DummyUpgradeClass.ExecutedMethods.Count > 0, "No Methods were executed");
             foreach(var method in DummyUpgradeClass.ExecutedMethods) {
                 var maxCompare = method._version.CompareTo(maxVersion).Change;
                 Assert.IsTrue(maxCompare == VersionChange.Downgrade || maxCompare == VersionChange.None, string.Format("Version is larger than {0}", version));
@@ -232,6 +235,7 @@
             var dataUpdater = new TestDataUpdater(targetVersion);
             dataUpdater.SourceVersion = sourceVersion;
             dataUpdater.LoadMethodsAndExecute(_testAssembly);
+            Assert.IsTrue(DummyUpgradeClass.ExecutedMethods.Count > 0, "No Methods were executed");
             foreach(var method in DummyUpgradeClass.ExecutedMethods) {
                 var maxCompare = method._version.CompareTo(maxVersion).Change;
                 var minCompare = method._version.CompareTo(minVersion).Change;


Now smaller is OK

Now smaller is OK

--- PerfTest/Program.cs
+++ PerfTest/Program.cs
@@ -27,7 +27,7 @@
             var init = sw.Elapsed;
             Console.WriteLine("initialization took " + init.TotalMilliseconds);
             sw.Restart();
-            const int iters = 1000;
+            const int iters = 500;
             for (var k = 0; k < iters; k++) {
                 foreach (var word in words) {
                     sum += AvsAn.Query(word).Article == "an" ? 1 : 0;


Adding comments

Adding comments

--- src/tests/UnitTests/UI/TreeBaseTests.cs
+++ src/tests/UnitTests/UI/TreeBaseTests.cs
@@ -753,6 +753,8 @@
             var bNode = testTree.CreatedTreeNodes[4];
             var cNode = testTree.CreatedTreeNodes[5];

+            // Initial state, everything unchecked
+
             Assert.AreEqual(CheckState.Empty, rootNode.CheckState);
             Assert.AreEqual(CheckState.Empty, parentNode.CheckState);
             Assert.AreEqual(CheckState.Empty, aNode.CheckState);
@@ -761,6 +763,8 @@

             testTree.ToggleNodeChecked(1, rootNode);

+            // Checked the root node, everything checked
+
             Assert.AreEqual(CheckState.Checked, rootNode.CheckState);
             Assert.AreEqual(CheckState.Checked, parentNode.CheckState);
             Assert.AreEqual(CheckState.Checked, aNode.CheckState);
@@ -770,6 +774,8 @@
             testTreeListener.Received(3).AddCheckedNode(Arg.Any<TestTreeNode>());
             testTreeListener.ClearReceivedCalls();

+            // Unchecked c.txt, c.txt unchecked, parents mixed
+
             testTree.ToggleNodeChecked(5, cNode);

             Assert.AreEqual(CheckState.Mixed, rootNode.CheckState);
@@ -783,6 +789,8 @@

             testTree.ToggleNodeChecked(5, cNode);

+            // Checked c.txt, everything checked
+
             Assert.AreEqual(CheckState.Checked, rootNode.CheckState);
             Assert.AreEqual(CheckState.Checked, parentNode.CheckState);
             Assert.AreEqual(CheckState.Checked, aNode.CheckState);


PlayerController: Remove unneeded variables.

Signed-off-by: V10lator <fd1911a80a45064cec08d87c592168c9000a1489@myway.de>

--- PlayerController.cs
+++ PlayerController.cs
@@ -4,9 +4,6 @@
 {
 	internal class PlayerController : MonoBehaviour
 	{
-		private float speed; // = 7.0f;
-		private float gravity; // = 20.0f;
-
 		private float upSpeed = 0.0f;

 		private Vector3 moveDirection = Vector3.zero;
@@ -19,8 +16,6 @@
 		void Start()
 		{
 			config = UltimateMain.Instance.config;
-			speed = config.WalkingSpeed;
-			gravity = config.Gravity;

 			controller = GetComponent<CharacterController>();
 			controller.detectCollisions = controller.enableOverlapRecovery = true;
@@ -29,10 +24,12 @@
 		// Update is called once per frame
 		void Update()
 		{
+			float speed = config.WalkingSpeed * 50.0f * Time.deltaTime;
 			if (Input.GetKey(config.GetKey(UltimateSettings.ROTATE_LEFT_KEY_SETTING)))
-				Camera.main.gameObject.GetComponent<UltimateMouse>().yaw -= speed * 50.0f * Time.deltaTime;
+				Camera.main.gameObject.GetComponent<UltimateMouse>().yaw -= speed;
 			else if(Input.GetKey(config.GetKey(UltimateSettings.ROTATE_RIGHT_KEY_SETTING)))
-				Camera.main.gameObject.GetComponent<UltimateMouse>().yaw += speed * 50.0f * Time.deltaTime;
+				Camera.main.gameObject.GetComponent<UltimateMouse>().yaw += speed;
+			speed = config.WalkingSpeed;

 			// Detect tunnels
 			bool grounded;
@@ -118,7 +115,7 @@
 				falling = true;

 			if (falling)
-				upSpeed -= gravity * Time.deltaTime;
+				upSpeed -= config.Gravity * Time.deltaTime;

 			moveDirection.y = upSpeed;

@@ -207,7 +204,6 @@
 		// Set everything to 0 / null so it can be garbage collected
 		void OnDestroy()
 		{
-			speed = gravity = 0.0f;
 			moveDirection = Vector3.zero;
 			config = null;
 			controller = null;


remove get certificates for all hosts function because it would trigger both DNS and HTTP validations for the same sites. it seems to risky to do in practice anyway for large amounts of sites

--- letsencrypt-win-simple/Program.cs
+++ letsencrypt-win-simple/Program.cs
@@ -139,11 +139,7 @@
                                 Console.WriteLine();
                                 PrintMenuForPlugins();

-                                if (string.IsNullOrWhiteSpace(Options.Plugin))
-                                {
-                                    Console.WriteLine(" A: Get certificates for all hosts");
-                                }
-                                else if (!string.IsNullOrWhiteSpace(Options.Plugin))
+                                if (!string.IsNullOrWhiteSpace(Options.Plugin))
                                 {
                                     // If there's a plugin in the options, only do ProcessDefaultCommand for the selected plugin
                                     // Plugins that can run automatically should allow for an empty string as menu response to work
@@ -156,9 +152,6 @@
                                 var command = ReadCommandFromConsole();
                                 switch (command)
                                 {
-                                    case "a":
-                                        GetCertificatesForAllHosts(targets);
-                                        break;
                                     case "q":
                                         return;
                                     default:
@@ -293,12 +286,6 @@
                 Target binding = targets[targetIndex];
                 binding.Plugin.Auto(binding);
             }
-        }
-
-        private static void GetCertificatesForAllHosts(List<Target> targets)
-        {
-            foreach (var target in targets)
-                target.Plugin.Auto(target);
         }

         private static void CheckRenewalsAndWaitForEnterKey()


Renamed conflicting field name in CvMatDataHandle.

--- OpenCV.Net/CvMat.cs
+++ OpenCV.Net/CvMat.cs
@@ -190,7 +190,7 @@

         class CvMatDataHandle : CvMat
         {
-            GCHandle handle;
+            GCHandle dataHandle;

             public CvMatDataHandle(int rows, int cols, CvMatDepth depth, int channels, object data)
                 : this(rows, cols, depth, channels, GCHandle.Alloc(data, GCHandleType.Pinned))
@@ -200,13 +200,13 @@
             private CvMatDataHandle(int rows, int cols, CvMatDepth depth, int channels, GCHandle dataHandle)
                 : base(rows, cols, depth, channels, dataHandle.AddrOfPinnedObject())
             {
-                handle = dataHandle;
+                this.dataHandle = dataHandle;
             }

             protected override bool ReleaseHandle()
             {
                 base.ReleaseHandle();
-                handle.Free();
+                dataHandle.Free();
                 return true;
             }
         }


Reordered tests

Reordered tests

--- Runtime/CoreLib.Tests/Core/Tests.cs
+++ Runtime/CoreLib.Tests/Core/Tests.cs
@@ -18,13 +18,10 @@
 	public class ArrayTests : CoreLibTestBase {}

 	[TestFixture]
-	public class StopwatchTests : CoreLibTestBase {}
+	public class ConvertTests : CoreLibTestBase {}

 	[TestFixture]
 	public class CultureInfoTests : CoreLibTestBase {}
-
-	[TestFixture]
-	public class NumberFormatInfoTests : CoreLibTestBase {}

 	[TestFixture]
 	public class DateTimeFormatInfoTests : CoreLibTestBase {}
@@ -34,6 +31,9 @@

 	[TestFixture]
 	public class ExceptionTests : CoreLibTestBase {}
+
+	[TestFixture]
+	public class GuidTests : CoreLibTestBase {}

 	[TestFixture]
 	public class IComparableTests : CoreLibTestBase {}
@@ -57,11 +57,14 @@
 	public class NullableTests : CoreLibTestBase {}

 	[TestFixture]
+	public class NumberFormatInfoTests : CoreLibTestBase {}
+
+	[TestFixture]
 	public class RandomTests : CoreLibTestBase {}

 	[TestFixture]
 	public class ScriptTests : CoreLibTestBase {}

 	[TestFixture]
-	public class GuidTests : CoreLibTestBase {}
+	public class StopwatchTests : CoreLibTestBase {}
 }