public ProcessingResult TryExtractClientWatsonData(ClientLogEvent watsonEvent, out ClientWatsonReportData reportData) { reportData = default(ClientWatsonReportData); string text; if (watsonEvent.TryGetValue <string>("BuildType", out text)) { return(new ProcessingResult { Code = ResultCode.DebugBuild }); } bool flag = watsonEvent.TryGetValue <string>("est", out reportData.OriginalCallStack); if (!flag && !watsonEvent.TryGetValue <string>("st", out reportData.OriginalCallStack)) { return(new ProcessingResult { Code = ResultCode.NoStackTrace }); } reportData.IsUnhandledException = new bool?(flag); if (!reportData.OriginalCallStack.Contains(this.parameters.OwaVersion)) { return(new ProcessingResult { Code = ResultCode.VersionMismatch }); } if (!watsonEvent.TryGetValue <string>("s", out reportData.TraceComponent)) { return(new ProcessingResult { Code = ResultCode.NoTraceComponent }); } StringBuilder stringBuilder = new StringBuilder(reportData.OriginalCallStack.Length); bool flag2 = true; string functionName = null; string packageName = null; foreach (string frame in ClientWatsonDatapointHandler.EnumerateFrames(reportData.OriginalCallStack)) { CallStackFrameInfo callStackFrameInfo; ProcessingResult result = this.TryProcessCallStackFrame(frame, out callStackFrameInfo); if (result.Code != ResultCode.Success) { return(result); } if (flag2) { functionName = callStackFrameInfo.SanitizedFunctionName; packageName = callStackFrameInfo.PackageName; } if (reportData.FunctionName == null && !ClientWatsonDatapointHandler.ExternalScriptRegex.IsMatch(callStackFrameInfo.PackageName) && (flag || !flag2)) { reportData.FunctionName = callStackFrameInfo.SanitizedFunctionName; reportData.PackageName = callStackFrameInfo.PackageName; } callStackFrameInfo.UpdateHash(ref reportData.CallStackHash); stringBuilder.AppendFormat(callStackFrameInfo.ToString(), new object[0]); flag2 = false; } if (!flag2) { reportData.NormalizedCallStack = stringBuilder.ToString(); if (!watsonEvent.TryGetValue <string>("em", out reportData.ExceptionMessage)) { reportData.ExceptionMessage = "unknown"; } if (!watsonEvent.TryGetValue <string>("en", out reportData.ExceptionType)) { string text2; if (!flag && watsonEvent.TryGetValue <string>("f", out text2) && !string.IsNullOrEmpty(text2)) { reportData.ExceptionType = ClientWatsonDatapointHandler.SanitizeExceptionType(text2); reportData.ExceptionMessage = ClientWatsonDatapointHandler.FormatExceptionMessage(text2, watsonEvent); } else { reportData.ExceptionType = "unknown"; } } if (string.IsNullOrEmpty(reportData.FunctionName)) { reportData.FunctionName = functionName; reportData.PackageName = packageName; } return(new ProcessingResult { Code = ResultCode.Success }); } return(new ProcessingResult { Code = ResultCode.NoFrames }); }