Merge m-c to b2g-inbound.
authorRyan VanderMeulen <ryanvm@gmail.com>
Tue, 12 Nov 2013 15:36:21 -0500
changeset 154639 a4d117491fc8be37fae59a53c4a5af1f7aa41c4f
parent 154638 de741c95973e8e0ddb207cf4ae61bba5fc5de90f (current diff)
parent 154606 0b4b1330fafaa4992db9e1cffbc647b9a7f9aaab (diff)
child 154640 20c672a567c5ac50db8d42fa380644f2d6c01c4d
push id25651
push userkwierso@gmail.com
push dateWed, 13 Nov 2013 00:40:26 +0000
treeherdermozilla-central@bb502bb5ed5f [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
milestone28.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Merge m-c to b2g-inbound.
layout/reftests/bugs/388367-1.html
toolkit/xre/nsWindowsDllBlocklist.cpp
--- a/b2g/app/nsBrowserApp.cpp
+++ b/b2g/app/nsBrowserApp.cpp
@@ -37,16 +37,17 @@
 
 #include "nsXPCOMPrivate.h" // for MAXPATHLEN and XPCOM_DLL
 
 #ifdef MOZ_WIDGET_GONK
 # include <binder/ProcessState.h>
 #endif
 
 #include "mozilla/Telemetry.h"
+#include "mozilla/WindowsDllBlocklist.h"
 
 static void Output(const char *fmt, ... )
 {
   va_list ap;
   va_start(ap, fmt);
 
 #if defined(XP_WIN) && !MOZ_WINCONSOLE
   PRUnichar msg[2048];
@@ -87,29 +88,23 @@ class ScopedLogging
 public:
   ScopedLogging() { NS_LogInit(); }
   ~ScopedLogging() { NS_LogTerm(); }
 };
 
 XRE_GetFileFromPathType XRE_GetFileFromPath;
 XRE_CreateAppDataType XRE_CreateAppData;
 XRE_FreeAppDataType XRE_FreeAppData;
-#ifdef XRE_HAS_DLL_BLOCKLIST
-XRE_SetupDllBlocklistType XRE_SetupDllBlocklist;
-#endif
 XRE_TelemetryAccumulateType XRE_TelemetryAccumulate;
 XRE_mainType XRE_main;
 
 static const nsDynamicFunctionLoad kXULFuncs[] = {
     { "XRE_GetFileFromPath", (NSFuncPtr*) &XRE_GetFileFromPath },
     { "XRE_CreateAppData", (NSFuncPtr*) &XRE_CreateAppData },
     { "XRE_FreeAppData", (NSFuncPtr*) &XRE_FreeAppData },
-#ifdef XRE_HAS_DLL_BLOCKLIST
-    { "XRE_SetupDllBlocklist", (NSFuncPtr*) &XRE_SetupDllBlocklist },
-#endif
     { "XRE_TelemetryAccumulate", (NSFuncPtr*) &XRE_TelemetryAccumulate },
     { "XRE_main", (NSFuncPtr*) &XRE_main },
     { nullptr, nullptr }
 };
 
 static int do_main(int argc, char* argv[])
 {
   nsCOMPtr<nsIFile> appini;
@@ -205,16 +200,20 @@ int main(int argc, char* argv[])
 #if defined(XP_UNIX)
   struct rusage initialRUsage;
   gotCounters = !getrusage(RUSAGE_SELF, &initialRUsage);
 #elif defined(XP_WIN)
   IO_COUNTERS ioCounters;
   gotCounters = GetProcessIoCounters(GetCurrentProcess(), &ioCounters);
 #endif
 
+#ifdef HAS_DLL_BLOCKLIST
+  DllBlocklist_Initialize();
+#endif
+
   // We do this because of data in bug 771745
   XPCOMGlueEnablePreload();
 
   rv = XPCOMGlueStartup(exePath);
   if (NS_FAILED(rv)) {
     Output("Couldn't load XPCOM.\n");
     return 255;
   }
@@ -222,20 +221,16 @@ int main(int argc, char* argv[])
   *lastSlash = 0;
 
   rv = XPCOMGlueLoadXULFunctions(kXULFuncs);
   if (NS_FAILED(rv)) {
     Output("Couldn't load XRE functions.\n");
     return 255;
   }
 
-#ifdef XRE_HAS_DLL_BLOCKLIST
-  XRE_SetupDllBlocklist();
-#endif
-
   if (gotCounters) {
 #if defined(XP_WIN)
     XRE_TelemetryAccumulate(mozilla::Telemetry::EARLY_GLUESTARTUP_READ_OPS,
                             int(ioCounters.ReadOperationCount));
     XRE_TelemetryAccumulate(mozilla::Telemetry::EARLY_GLUESTARTUP_READ_TRANSFER,
                             int(ioCounters.ReadTransferCount / 1024));
     IO_COUNTERS newIoCounters;
     if (GetProcessIoCounters(GetCurrentProcess(), &newIoCounters)) {
--- a/browser/app/nsBrowserApp.cpp
+++ b/browser/app/nsBrowserApp.cpp
@@ -41,16 +41,17 @@
 #define snprintf _snprintf
 #define strcasecmp _stricmp
 #endif
 #include "BinaryPath.h"
 
 #include "nsXPCOMPrivate.h" // for MAXPATHLEN and XPCOM_DLL
 
 #include "mozilla/Telemetry.h"
+#include "mozilla/WindowsDllBlocklist.h"
 
 using namespace mozilla;
 
 #define kDesktopFolder "browser"
 #define kMetroFolder "metro"
 #define kMetroAppIniFilename "metroapp.ini"
 #ifdef XP_WIN
 #define kMetroTestFile "tests.ini"
@@ -73,19 +74,29 @@ static void Output(const char *fmt, ... 
                       0,
                       msg,
                       -1,
                       wide_msg,
                       _countof(wide_msg));
 #if MOZ_WINCONSOLE
   fwprintf_s(stderr, wide_msg);
 #else
-  MessageBoxW(nullptr, wide_msg, L"Firefox", MB_OK
-                                           | MB_ICONERROR
-                                           | MB_SETFOREGROUND);
+  // Linking user32 at load-time interferes with the DLL blocklist (bug 932100).
+  // This is a rare codepath, so we can load user32 at run-time instead.
+  HMODULE user32 = LoadLibraryW(L"user32.dll");
+  if (user32) {
+    typedef int (WINAPI * MessageBoxWFn)(HWND, LPCWSTR, LPCWSTR, UINT);
+    MessageBoxWFn messageBoxW = (MessageBoxWFn)GetProcAddress(user32, "MessageBoxW");
+    if (messageBoxW) {
+      messageBoxW(nullptr, wide_msg, L"Firefox", MB_OK
+                                               | MB_ICONERROR
+                                               | MB_SETFOREGROUND);
+    }
+    FreeLibrary(user32);
+  }
 #endif
 #endif
 
   va_end(ap);
 }
 
 /**
  * Return true if |arg| matches the given argument name.
@@ -139,31 +150,25 @@ static void AttachToTestHarness()
   FILE *fp = _fdopen(stdOut, "a");
   *stdout = *fp;
 }
 #endif
 
 XRE_GetFileFromPathType XRE_GetFileFromPath;
 XRE_CreateAppDataType XRE_CreateAppData;
 XRE_FreeAppDataType XRE_FreeAppData;
-#ifdef XRE_HAS_DLL_BLOCKLIST
-XRE_SetupDllBlocklistType XRE_SetupDllBlocklist;
-#endif
 XRE_TelemetryAccumulateType XRE_TelemetryAccumulate;
 XRE_StartupTimelineRecordType XRE_StartupTimelineRecord;
 XRE_mainType XRE_main;
 XRE_StopLateWriteChecksType XRE_StopLateWriteChecks;
 
 static const nsDynamicFunctionLoad kXULFuncs[] = {
     { "XRE_GetFileFromPath", (NSFuncPtr*) &XRE_GetFileFromPath },
     { "XRE_CreateAppData", (NSFuncPtr*) &XRE_CreateAppData },
     { "XRE_FreeAppData", (NSFuncPtr*) &XRE_FreeAppData },
-#ifdef XRE_HAS_DLL_BLOCKLIST
-    { "XRE_SetupDllBlocklist", (NSFuncPtr*) &XRE_SetupDllBlocklist },
-#endif
     { "XRE_TelemetryAccumulate", (NSFuncPtr*) &XRE_TelemetryAccumulate },
     { "XRE_StartupTimelineRecord", (NSFuncPtr*) &XRE_StartupTimelineRecord },
     { "XRE_main", (NSFuncPtr*) &XRE_main },
     { "XRE_StopLateWriteChecks", (NSFuncPtr*) &XRE_StopLateWriteChecks },
     { nullptr, nullptr }
 };
 
 static int do_main(int argc, char* argv[], nsIFile *xreDirectory)
@@ -592,27 +597,34 @@ int main(int argc, char* argv[])
   gotCounters = !getrusage(RUSAGE_SELF, &initialRUsage);
 #elif defined(XP_WIN)
   IO_COUNTERS ioCounters;
   gotCounters = GetProcessIoCounters(GetCurrentProcess(), &ioCounters);
 #endif
 
   nsIFile *xreDirectory;
 
+#ifdef HAS_DLL_BLOCKLIST
+  DllBlocklist_Initialize();
+
+  // In order to be effective against AppInit DLLs, the blocklist must be
+  // initialized before user32.dll is loaded into the process. If this assert
+  // ever fires, then the fix for bug 932100 has been defeated and the
+  // blocklist will miss AppInit DLLs. You should use a delayload or reorder
+  // the code to prevent user32.dll from loading during early startup.
+  MOZ_ASSERT(!GetModuleHandleA("user32.dll"));
+#endif
+
   nsresult rv = InitXPCOMGlue(argv[0], &xreDirectory);
   if (NS_FAILED(rv)) {
     return 255;
   }
 
   XRE_StartupTimelineRecord(mozilla::StartupTimeline::START, start);
 
-#ifdef XRE_HAS_DLL_BLOCKLIST
-  XRE_SetupDllBlocklist();
-#endif
-
   if (gotCounters) {
 #if defined(XP_WIN)
     XRE_TelemetryAccumulate(mozilla::Telemetry::EARLY_GLUESTARTUP_READ_OPS,
                             int(ioCounters.ReadOperationCount));
     XRE_TelemetryAccumulate(mozilla::Telemetry::EARLY_GLUESTARTUP_READ_TRANSFER,
                             int(ioCounters.ReadTransferCount / 1024));
     IO_COUNTERS newIoCounters;
     if (GetProcessIoCounters(GetCurrentProcess(), &newIoCounters)) {
--- a/config/rules.mk
+++ b/config/rules.mk
@@ -795,17 +795,17 @@ ifdef MOZ_PROFILE_GENERATE
 	touch -t `date +%Y%m%d%H%M.%S -d "now+5seconds"` pgo.relink
 endif
 else # !WINNT || GNU_CC
 	$(EXPAND_CCC) -o $@ $(CXXFLAGS) $(PROGOBJS) $(RESFILE) $(WIN32_EXE_LDFLAGS) $(LDFLAGS) $(WRAP_LDFLAGS) $(LIBS_DIR) $(LIBS) $(MOZ_GLUE_PROGRAM_LDFLAGS) $(OS_LIBS) $(EXTRA_LIBS) $(BIN_FLAGS) $(EXE_DEF_FILE) $(STLPORT_LIBS)
 	@$(call CHECK_STDCXX,$@)
 endif # WINNT && !GNU_CC
 
 ifdef ENABLE_STRIP
-	$(STRIP) $@
+	$(STRIP) $(STRIP_FLAGS) $@
 endif
 ifdef MOZ_POST_PROGRAM_COMMAND
 	$(MOZ_POST_PROGRAM_COMMAND) $@
 endif
 
 $(HOST_PROGRAM): $(HOST_PROGOBJS) $(HOST_LIBS_DEPS) $(HOST_EXTRA_DEPS) $(GLOBAL_DEPS)
 	$(REPORT_BUILD)
 ifeq (_WINNT,$(GNU_CC)_$(HOST_OS_ARCH))
@@ -851,17 +851,17 @@ ifdef MSMANIFEST_TOOL
 	fi
 endif	# MSVC with manifest tool
 else
 	$(EXPAND_CCC) $(CXXFLAGS) -o $@ $< $(WIN32_EXE_LDFLAGS) $(LDFLAGS) $(WRAP_LDFLAGS) $(LIBS_DIR) $(LIBS) $(MOZ_GLUE_PROGRAM_LDFLAGS) $(OS_LIBS) $(EXTRA_LIBS) $(BIN_FLAGS) $(STLPORT_LIBS)
 	@$(call CHECK_STDCXX,$@)
 endif # WINNT && !GNU_CC
 
 ifdef ENABLE_STRIP
-	$(STRIP) $@
+	$(STRIP) $(STRIP_FLAGS) $@
 endif
 ifdef MOZ_POST_PROGRAM_COMMAND
 	$(MOZ_POST_PROGRAM_COMMAND) $@
 endif
 
 $(HOST_SIMPLE_PROGRAMS): host_%$(HOST_BIN_SUFFIX): host_%.$(OBJ_SUFFIX) $(HOST_LIBS_DEPS) $(HOST_EXTRA_DEPS) $(GLOBAL_DEPS)
 	$(REPORT_BUILD)
 ifeq (WINNT_,$(HOST_OS_ARCH)_$(GNU_CC))
@@ -878,17 +878,16 @@ ifdef DTRACE_PROBE_OBJ
 EXTRA_DEPS += $(DTRACE_PROBE_OBJ)
 OBJS += $(DTRACE_PROBE_OBJ)
 endif
 
 $(filter %.$(LIB_SUFFIX),$(LIBRARY)): $(OBJS) $(EXTRA_DEPS) $(GLOBAL_DEPS)
 	$(REPORT_BUILD)
 	$(RM) $(LIBRARY)
 	$(EXPAND_AR) $(AR_FLAGS) $(OBJS) $(SHARED_LIBRARY_LIBS)
-	$(RANLIB) $@
 
 $(filter-out %.$(LIB_SUFFIX),$(LIBRARY)): $(filter %.$(LIB_SUFFIX),$(LIBRARY)) $(OBJS) $(EXTRA_DEPS) $(GLOBAL_DEPS)
 # When we only build a library descriptor, blow out any existing library
 	$(REPORT_BUILD)
 	$(if $(filter %.$(LIB_SUFFIX),$(LIBRARY)),,$(RM) $(REAL_LIBRARY) $(EXPORT_LIBRARY:%=%/$(REAL_LIBRARY)))
 	$(EXPAND_LIBS_GEN) -o $@ $(OBJS) $(SHARED_LIBRARY_LIBS)
 
 ifeq ($(OS_ARCH),WINNT)
@@ -912,24 +911,22 @@ ifeq ($(OS_ARCH),OS2)
 	echo EXPORTS >> $@
 
 	$(ADD_TO_DEF_FILE)
 
 $(IMPORT_LIBRARY): $(SHARED_LIBRARY)
 	$(REPORT_BUILD)
 	$(RM) $@
 	$(IMPLIB) $@ $^
-	$(RANLIB) $@
 endif # OS/2
 
 $(HOST_LIBRARY): $(HOST_OBJS) Makefile
 	$(REPORT_BUILD)
 	$(RM) $@
 	$(EXPAND_LIBS_EXEC) --extract -- $(HOST_AR) $(HOST_AR_FLAGS) $(HOST_OBJS)
-	$(HOST_RANLIB) $@
 
 ifdef HAVE_DTRACE
 ifndef XP_MACOSX
 ifdef DTRACE_PROBE_OBJ
 ifndef DTRACE_LIB_DEPENDENT
 NON_DTRACE_OBJS := $(filter-out $(DTRACE_PROBE_OBJ),$(OBJS))
 $(DTRACE_PROBE_OBJ): $(NON_DTRACE_OBJS)
 	dtrace -G -C -s $(MOZILLA_DTRACE_SRC) -o $(DTRACE_PROBE_OBJ) $(NON_DTRACE_OBJS)
@@ -970,17 +967,17 @@ endif   # EMBED_MANIFEST_AT
 endif	# MSVC with manifest tool
 ifdef MOZ_PROFILE_GENERATE
 	touch -t `date +%Y%m%d%H%M.%S -d "now+5seconds"` pgo.relink
 endif
 endif	# WINNT && !GCC
 	@$(RM) foodummyfilefoo $(DELETE_AFTER_LINK)
 	chmod +x $@
 ifdef ENABLE_STRIP
-	$(STRIP) $@
+	$(STRIP) $(STRIP_FLAGS) $@
 endif
 ifdef MOZ_POST_DSO_LIB_COMMAND
 	$(MOZ_POST_DSO_LIB_COMMAND) $@
 endif
 
 ifeq ($(SOLARIS_SUNPRO_CC),1)
 _MDDEPFILE = $(MDDEPDIR)/$(@F).pp
 
--- a/configure.in
+++ b/configure.in
@@ -301,17 +301,17 @@ AC_SUBST(OBJCOPY)
 dnl ========================================================
 dnl Checks for compilers.
 dnl ========================================================
 dnl Set CROSS_COMPILE in the environment when running configure
 dnl to use the cross-compile setup for now
 dnl ========================================================
 
 dnl AR_FLAGS set here so HOST_AR_FLAGS can be set correctly (see bug 538269)
-AR_FLAGS='cr $@'
+AR_FLAGS='crs $@'
 
 if test "$COMPILE_ENVIRONMENT"; then
 
 if test -n "$CROSS_COMPILE" -a "$target" != "$host"; then
     MOZ_CROSS_COMPILER
 else
     AC_PROG_CC
     case "$target" in
@@ -8867,17 +8867,37 @@ dnl so that regeneration via dependencie
    fi
 
    if test -n "$MOZ_WEBRTC_HAVE_ETHTOOL_SPEED_HI"; then
       WEBRTC_CONFIG="${WEBRTC_CONFIG} -D have_ethtool_cmd_speed_hi=1"
    else
       WEBRTC_CONFIG="${WEBRTC_CONFIG} -D have_ethtool_cmd_speed_hi=0"
    fi
 
-   GYP_WEBRTC_OPTIONS="--format=mozmake ${WEBRTC_CONFIG} -D target_arch=${WEBRTC_TARGET_ARCH} ${EXTRA_GYP_DEFINES} --depth=${srcdir}/media/webrtc/trunk --toplevel-dir=${srcdir} -G OBJDIR=${_objdir}"
+   if test -n "$CROSS_COMPILE"; then
+      case "$target" in
+      *-mingw*)
+      	GYP_MOZMAKE_OPTIONS="-G os=win"
+        ;;
+      *-darwin*)
+        GYP_MOZMAKE_OPTIONS="-G os=mac"
+        if test "$MACOS_SDK_DIR"; then
+           GYP_MOZMAKE_OPTIONS="${GYP_MOZMAKE_OPTIONS} -D mac_sdk_path=$MACOS_SDK_DIR"
+        fi
+        ;;
+      *-android*)
+        GYP_MOZMAKE_OPTIONS="-G os=linux"
+        ;;
+      *)
+        AC_MSG_ERROR([Don't know what options to give to WebRTC for cross-compilation])
+    	;;
+      esac
+   fi
+
+   GYP_WEBRTC_OPTIONS="--format=mozmake ${GYP_MOZMAKE_OPTIONS} ${WEBRTC_CONFIG} -D target_arch=${WEBRTC_TARGET_ARCH} ${EXTRA_GYP_DEFINES} --depth=${srcdir}/media/webrtc/trunk --toplevel-dir=${srcdir} -G OBJDIR=${_objdir}"
 
    $PYTHON ${srcdir}/media/webrtc/trunk/build/gyp_chromium \
      $GYP_WEBRTC_OPTIONS \
      --generator-output=${_objdir}/media/webrtc/trunk \
      ${srcdir}/media/webrtc/trunk/peerconnection.gyp
    if test "$?" != 0; then
       AC_MSG_ERROR([failed to generate WebRTC Makefiles])
    fi
--- a/content/base/test/csp/test_policyuri_regression_from_multipolicy.html
+++ b/content/base/test/csp/test_policyuri_regression_from_multipolicy.html
@@ -10,20 +10,22 @@
   <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
 </head>
 <body>
 <iframe style="width:200px;height:200px;" id='testframe'></iframe>
 <script class="testbody" type="text/javascript">
 SpecialPowers.pushPrefEnv(
   {'set':[["security.csp.speccompliant", true]]},
   function() {
+    SimpleTest.waitForExplicitFinish();
     var testframe = document.getElementById('testframe');
     testframe.src = 'file_policyuri_regression_from_multipolicy.html';
     testframe.addEventListener('load', function checkInlineScriptExecuted () {
       is(this.contentDocument.getElementById('testdiv').innerHTML,
          'Inline Script Executed',
          'Inline script should execute (it would be blocked by the policy, but the policy is report-only)');
+      SimpleTest.finish();
     });
   }
 );
 </script>
 </body>
 </html>
--- a/content/canvas/src/WebGLContextGL.cpp
+++ b/content/canvas/src/WebGLContextGL.cpp
@@ -2711,76 +2711,56 @@ WebGLContext::SurfaceFromElementResultTo
 
 void
 WebGLContext::Uniform1i(WebGLUniformLocation *location_object, GLint a1)
 {
     GLint location;
     if (!ValidateUniformSetter("Uniform1i", location_object, location))
         return;
 
+    // Only uniform1i can take sampler settings.
     if (!ValidateSamplerUniformSetter("Uniform1i", location_object, a1))
         return;
 
     MakeContextCurrent();
     gl->fUniform1i(location, a1);
 }
 
 void
 WebGLContext::Uniform2i(WebGLUniformLocation *location_object, GLint a1,
                         GLint a2)
 {
     GLint location;
     if (!ValidateUniformSetter("Uniform2i", location_object, location))
         return;
 
-    if (!ValidateSamplerUniformSetter("Uniform2i", location_object, a1) ||
-        !ValidateSamplerUniformSetter("Uniform2i", location_object, a2))
-    {
-        return;
-    }
-
     MakeContextCurrent();
     gl->fUniform2i(location, a1, a2);
 }
 
 void
 WebGLContext::Uniform3i(WebGLUniformLocation *location_object, GLint a1,
                         GLint a2, GLint a3)
 {
     GLint location;
     if (!ValidateUniformSetter("Uniform3i", location_object, location))
         return;
 
-    if (!ValidateSamplerUniformSetter("Uniform3i", location_object, a1) ||
-        !ValidateSamplerUniformSetter("Uniform3i", location_object, a2) ||
-        !ValidateSamplerUniformSetter("Uniform3i", location_object, a3))
-    {
-        return;
-    }
-
     MakeContextCurrent();
     gl->fUniform3i(location, a1, a2, a3);
 }
 
 void
 WebGLContext::Uniform4i(WebGLUniformLocation *location_object, GLint a1,
                         GLint a2, GLint a3, GLint a4)
 {
     GLint location;
     if (!ValidateUniformSetter("Uniform4i", location_object, location))
         return;
 
-    if (!ValidateSamplerUniformSetter("Uniform4i", location_object, a1) ||
-        !ValidateSamplerUniformSetter("Uniform4i", location_object, a2) ||
-        !ValidateSamplerUniformSetter("Uniform4i", location_object, a3) ||
-        !ValidateSamplerUniformSetter("Uniform4i", location_object, a4))
-    {
-        return;
-    }
-
     MakeContextCurrent();
     gl->fUniform4i(location, a1, a2, a3, a4);
 }
 
 void
 WebGLContext::Uniform1f(WebGLUniformLocation *location_object, GLfloat a1)
 {
     GLint location;
--- a/content/html/content/test/file_iframe_sandbox_d_if5.html
+++ b/content/html/content/test/file_iframe_sandbox_d_if5.html
@@ -3,18 +3,18 @@
 <head>
   <meta charset="utf-8">
   <title>Test for Bug 341604</title>
   <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
   <script type="text/javascript" src="/tests/SimpleTest/EventUtils.js"></script>
 </head>
 <script type="application/javascript">
 function doTest() {
+  window.parent.postMessage({type: "attempted"}, "*");
   sendMouseEvent({type:'click'}, 'anchor');
-  window.parent.postMessage({type: "attempted"}, "*");
 }
 </script>
 <body onload="doTest()">
   I am sandboxed with 'allow-scripts allow-same-origin'
 
   <a href="file_iframe_sandbox_navigation_fail.html?Test 4: Navigate sibling iframe by name:%20" target='if_sibling' id='anchor'>
 </body>
 </html>
--- a/content/html/content/test/test_iframe_sandbox_navigation.html
+++ b/content/html/content/test/test_iframe_sandbox_navigation.html
@@ -262,18 +262,18 @@ function doIf10TestPart2() {
 </script>
 <body onunload="checkTestsFinished()">
 <a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=341604">Mozilla Bug 341604</a> - Implement HTML5 sandbox attribute for IFRAMEs
 <p id="display"></p>
 <div id="content">
 <iframe sandbox="allow-scripts" id="if_1" src="file_iframe_sandbox_d_if1.html" height="10" width="10"></iframe>
 <iframe sandbox="allow-scripts" id="if_2" src="file_iframe_sandbox_d_if2.html" height="10" width="10"></iframe>
 <iframe sandbox="allow-scripts" id="if_3" src="file_iframe_sandbox_d_if3.html" height="10" width="10"></iframe>
+<iframe id="if_sibling" name="if_sibling" src="about:blank" height="10" width="10"></iframe>
 <iframe sandbox="allow-scripts allow-same-origin" id="if_5" src="file_iframe_sandbox_d_if5.html" height="10" width="10"></iframe>
-<iframe id="if_sibling" name="if_sibling" src="file_iframe_sandbox_navigation_start.html" height="10" width="10"></iframe>
 <iframe sandbox="allow-scripts" id="if_6" src="file_iframe_sandbox_d_if6.html" height="10" width="10"></iframe>
 <iframe sandbox="allow-same-origin allow-scripts" id="if_8" src="file_iframe_sandbox_d_if8.html" height="10" width="10"></iframe>
 <iframe sandbox="allow-same-origin allow-scripts" id="if_9" src="file_iframe_sandbox_d_if9.html" height="10" width="10"></iframe>
 <iframe sandbox="allow-scripts" id="if_10" src="file_iframe_sandbox_navigation_start.html" onload='doIf10TestPart1()' height="10" width="10"></iframe>
 </div>
 <input type='button' id="a_button" onclick='reload_if_8()'>
 <input type='button' id="a_button2" onclick='reload_if_9()'>
 </body>
--- a/dom/base/nsWrapperCache.cpp
+++ b/dom/base/nsWrapperCache.cpp
@@ -50,17 +50,18 @@ public:
     mFlags = WANT_ALL_TRACES;
   }
 
   NS_IMETHOD_(void) DescribeRefCountedNode(nsrefcnt aRefCount,
                                            const char* aObjName)
   {
   }
   NS_IMETHOD_(void) DescribeGCedNode(bool aIsMarked,
-                                     const char* aObjName)
+                                     const char* aObjName,
+                                     uint64_t aCompartmentAddress)
   {
   }
 
   NS_IMETHOD_(void) NoteJSChild(void* aChild)
   {
     if (aChild == mWrapper) {
       mFound = true;
     }
--- a/dom/media/PeerConnection.js
+++ b/dom/media/PeerConnection.js
@@ -485,23 +485,27 @@ RTCPeerConnection.prototype = {
                           });
   },
 
   createOffer: function(onSuccess, onError, constraints) {
     if (!constraints) {
       constraints = {};
     }
     this._mustValidateConstraints(constraints, "createOffer passed invalid constraints");
+
+    this._queueOrRun({
+      func: this._createOffer,
+      args: [onSuccess, onError, constraints],
+      wait: true
+    });
+  },
+
+  _createOffer: function(onSuccess, onError, constraints) {
     this._onCreateOfferSuccess = onSuccess;
     this._onCreateOfferFailure = onError;
-
-    this._queueOrRun({ func: this._createOffer, args: [constraints], wait: true });
-  },
-
-  _createOffer: function(constraints) {
     this._getPC().createOffer(constraints);
   },
 
   _createAnswer: function(onSuccess, onError, constraints, provisional) {
     this._onCreateAnswerSuccess = onSuccess;
     this._onCreateAnswerFailure = onError;
 
     if (!this.remoteDescription) {
@@ -537,22 +541,16 @@ RTCPeerConnection.prototype = {
     this._queueOrRun({
       func: this._createAnswer,
       args: [onSuccess, onError, constraints, provisional],
       wait: true
     });
   },
 
   setLocalDescription: function(desc, onSuccess, onError) {
-    // TODO -- if we have two setLocalDescriptions in the
-    // queue,this code overwrites the callbacks for the first
-    // one with the callbacks for the second one. See Bug 831759.
-    this._onSetLocalDescriptionSuccess = onSuccess;
-    this._onSetLocalDescriptionFailure = onError;
-
     let type;
     switch (desc.type) {
       case "offer":
         type = Ci.IPeerConnection.kActionOffer;
         break;
       case "answer":
         type = Ci.IPeerConnection.kActionAnswer;
         break;
@@ -560,33 +558,29 @@ RTCPeerConnection.prototype = {
         throw new this._win.DOMError("", "pranswer not yet implemented");
       default:
         throw new this._win.DOMError("",
             "Invalid type " + desc.type + " provided to setLocalDescription");
     }
 
     this._queueOrRun({
       func: this._setLocalDescription,
-      args: [type, desc.sdp],
+      args: [type, desc.sdp, onSuccess, onError],
       wait: true,
       type: desc.type
     });
   },
 
-  _setLocalDescription: function(type, sdp) {
+  _setLocalDescription: function(type, sdp, onSuccess, onError) {
+    this._onSetLocalDescriptionSuccess = onSuccess;
+    this._onSetLocalDescriptionFailure = onError;
     this._getPC().setLocalDescription(type, sdp);
   },
 
   setRemoteDescription: function(desc, onSuccess, onError) {
-    // TODO -- if we have two setRemoteDescriptions in the
-    // queue, this code overwrites the callbacks for the first
-    // one with the callbacks for the second one. See Bug 831759.
-    this._onSetRemoteDescriptionSuccess = onSuccess;
-    this._onSetRemoteDescriptionFailure = onError;
-
     let type;
     switch (desc.type) {
       case "offer":
         type = Ci.IPeerConnection.kActionOffer;
         break;
       case "answer":
         type = Ci.IPeerConnection.kActionAnswer;
         break;
@@ -594,23 +588,25 @@ RTCPeerConnection.prototype = {
         throw new this._win.DOMError("", "pranswer not yet implemented");
       default:
         throw new this._win.DOMError("",
             "Invalid type " + desc.type + " provided to setRemoteDescription");
     }
 
     this._queueOrRun({
       func: this._setRemoteDescription,
-      args: [type, desc.sdp],
+      args: [type, desc.sdp, onSuccess, onError],
       wait: true,
       type: desc.type
     });
   },
 
-  _setRemoteDescription: function(type, sdp) {
+  _setRemoteDescription: function(type, sdp, onSuccess, onError) {
+    this._onSetRemoteDescriptionSuccess = onSuccess;
+    this._onSetRemoteDescriptionFailure = onError;
     this._getPC().setRemoteDescription(type, sdp);
   },
 
   updateIce: function(config, constraints) {
     throw new this._win.DOMError("", "updateIce not yet implemented");
   },
 
   addIceCandidate: function(cand, onSuccess, onError) {
--- a/editor/composer/src/moz.build
+++ b/editor/composer/src/moz.build
@@ -1,17 +1,17 @@
 # -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 MODULE = 'editor'
 
-SOURCES += [
+UNIFIED_SOURCES += [
     'nsComposerCommands.cpp',
     'nsComposerCommandsUpdater.cpp',
     'nsComposerController.cpp',
     'nsComposerDocumentCommands.cpp',
     'nsComposerRegistration.cpp',
     'nsComposeTxtSrvFilter.cpp',
     'nsEditingSession.cpp',
     'nsEditorSpellCheck.cpp',
--- a/editor/libeditor/base/CreateElementTxn.cpp
+++ b/editor/libeditor/base/CreateElementTxn.cpp
@@ -18,20 +18,16 @@
 #include "nsISupportsUtils.h"
 #include "nsMemory.h"
 #include "nsReadableUtils.h"
 #include "nsStringFwd.h"
 #include "nsString.h"
 #include "nsAString.h"
 #include <algorithm>
 
-#ifdef DEBUG
-static bool gNoisy = false;
-#endif
-
 using namespace mozilla;
 
 CreateElementTxn::CreateElementTxn()
   : EditTxn()
 {
 }
 
 NS_IMPL_CYCLE_COLLECTION_INHERITED_3(CreateElementTxn, EditTxn,
@@ -56,47 +52,30 @@ NS_IMETHODIMP CreateElementTxn::Init(nsE
   mParent = do_QueryInterface(aParent);
   mOffsetInParent = aOffsetInParent;
   return NS_OK;
 }
 
 
 NS_IMETHODIMP CreateElementTxn::DoTransaction(void)
 {
-#ifdef DEBUG
-  if (gNoisy)
-  {
-    char* nodename = ToNewCString(mTag);
-    printf("Do Create Element parent = %p <%s>, offset = %d\n", 
-           static_cast<void*>(mParent.get()), nodename, mOffsetInParent);
-    nsMemory::Free(nodename);
-  }
-#endif
-
   NS_ASSERTION(mEditor && mParent, "bad state");
   NS_ENSURE_TRUE(mEditor && mParent, NS_ERROR_NOT_INITIALIZED);
 
   nsCOMPtr<dom::Element> newContent;
 
   //new call to use instead to get proper HTML element, bug# 39919
   nsresult result = mEditor->CreateHTMLContent(mTag, getter_AddRefs(newContent));
   NS_ENSURE_SUCCESS(result, result);
   NS_ENSURE_STATE(newContent);
 
   mNewNode = newContent;
   // Try to insert formatting whitespace for the new node:
   mEditor->MarkNodeDirty(mNewNode);
 
-#ifdef DEBUG
-  if (gNoisy)
-  {
-    printf("  newNode = %p\n", static_cast<void*>(mNewNode.get()));
-  }
-#endif
-
   // insert the new node
   if (CreateElementTxn::eAppend == int32_t(mOffsetInParent)) {
     ErrorResult rv;
     mParent->AppendChild(*mNewNode, rv);
     return rv.ErrorCode();
   }
 
 
@@ -128,39 +107,26 @@ NS_IMETHODIMP CreateElementTxn::DoTransa
   result = selection->CollapseNative(parentContent,
                                      parentContent->IndexOf(newContent) + 1);
   NS_ASSERTION((NS_SUCCEEDED(result)), "selection could not be collapsed after insert.");
   return result;
 }
 
 NS_IMETHODIMP CreateElementTxn::UndoTransaction(void)
 {
-#ifdef DEBUG
-  if (gNoisy)
-  {
-    printf("Undo Create Element, mParent = %p, node = %p\n",
-           static_cast<void*>(mParent.get()),
-           static_cast<void*>(mNewNode.get()));
-  }
-#endif
-
   NS_ASSERTION(mEditor && mParent, "bad state");
   NS_ENSURE_TRUE(mEditor && mParent, NS_ERROR_NOT_INITIALIZED);
 
   ErrorResult rv;
   mParent->RemoveChild(*mNewNode, rv);
   return rv.ErrorCode();
 }
 
 NS_IMETHODIMP CreateElementTxn::RedoTransaction(void)
 {
-#ifdef DEBUG
-  if (gNoisy) { printf("Redo Create Element\n"); }
-#endif
-
   NS_ASSERTION(mEditor && mParent, "bad state");
   NS_ENSURE_TRUE(mEditor && mParent, NS_ERROR_NOT_INITIALIZED);
 
   // first, reset mNewNode so it has no attributes or content
   nsCOMPtr<nsIDOMCharacterData>nodeAsText = do_QueryInterface(mNewNode);
   if (nodeAsText)
   {
     nodeAsText->SetData(EmptyString());
--- a/editor/libeditor/base/InsertElementTxn.cpp
+++ b/editor/libeditor/base/InsertElementTxn.cpp
@@ -14,21 +14,16 @@
 #include "nsINode.h"                    // for nsINode
 #include "nsISelection.h"               // for nsISelection
 #include "nsMemory.h"                   // for nsMemory
 #include "nsReadableUtils.h"            // for ToNewCString
 #include "nsString.h"                   // for nsString
 
 using namespace mozilla;
 
-#ifdef DEBUG
-static bool gNoisy = false;
-#endif
-
-
 InsertElementTxn::InsertElementTxn()
   : EditTxn()
 {
 }
 
 NS_IMPL_CYCLE_COLLECTION_INHERITED_2(InsertElementTxn, EditTxn,
                                      mNode,
                                      mParent)
@@ -52,33 +47,16 @@ NS_IMETHODIMP InsertElementTxn::Init(nsI
   mEditor = aEditor;
   NS_ENSURE_TRUE(mNode && mParent && mEditor, NS_ERROR_INVALID_ARG);
   return NS_OK;
 }
 
 
 NS_IMETHODIMP InsertElementTxn::DoTransaction(void)
 {
-#ifdef DEBUG
-  if (gNoisy) 
-  { 
-    nsCOMPtr<nsIContent>nodeAsContent = do_QueryInterface(mNode);
-    nsCOMPtr<nsIContent>parentAsContent = do_QueryInterface(mParent);
-    nsString namestr = mNode->NodeName();
-    char* nodename = ToNewCString(namestr);
-    printf("%p Do Insert Element of %p <%s> into parent %p at offset %d\n", 
-           static_cast<void*>(this),
-           static_cast<void*>(nodeAsContent.get()),
-           nodename,
-           static_cast<void*>(parentAsContent.get()),
-           mOffset); 
-    nsMemory::Free(nodename);
-  }
-#endif
-
   NS_ENSURE_TRUE(mNode && mParent, NS_ERROR_NOT_INITIALIZED);
 
   nsCOMPtr<nsINode> parent = do_QueryInterface(mParent);
   NS_ENSURE_STATE(parent);
 
   uint32_t count = parent->GetChildCount();
   if (mOffset > int32_t(count) || mOffset == -1) {
     // -1 is sentinel value meaning "append at end"
@@ -110,27 +88,16 @@ NS_IMETHODIMP InsertElementTxn::DoTransa
   {
     // do nothing - dom range gravity will adjust selection
   }
   return NS_OK;
 }
 
 NS_IMETHODIMP InsertElementTxn::UndoTransaction(void)
 {
-#ifdef DEBUG
-  if (gNoisy)
-  {
-    printf("%p Undo Insert Element of %p into parent %p at offset %d\n",
-           static_cast<void*>(this),
-           static_cast<void*>(mNode.get()),
-           static_cast<void*>(mParent.get()),
-           mOffset);
-  }
-#endif
-
   NS_ENSURE_TRUE(mNode && mParent, NS_ERROR_NOT_INITIALIZED);
 
   ErrorResult rv;
   mParent->RemoveChild(*mNode, rv);
   return rv.ErrorCode();
 }
 
 NS_IMETHODIMP InsertElementTxn::GetTxnDescription(nsAString& aString)
--- a/editor/libeditor/base/InsertTextTxn.cpp
+++ b/editor/libeditor/base/InsertTextTxn.cpp
@@ -10,20 +10,16 @@
 #include "nsDebug.h"                    // for NS_ASSERTION, etc
 #include "nsError.h"                    // for NS_OK, etc
 #include "nsIDOMCharacterData.h"        // for nsIDOMCharacterData
 #include "nsIEditor.h"                  // for nsIEditor
 #include "nsISelection.h"               // for nsISelection
 #include "nsISupportsUtils.h"           // for NS_ADDREF_THIS, NS_RELEASE
 #include "nsITransaction.h"             // for nsITransaction
 
-#ifdef DEBUG
-static bool gNoisy = false;
-#endif
-
 InsertTextTxn::InsertTextTxn()
   : EditTxn()
 {
 }
 
 NS_IMPL_CYCLE_COLLECTION_INHERITED_1(InsertTextTxn, EditTxn,
                                      mElement)
 
@@ -57,24 +53,16 @@ NS_IMETHODIMP InsertTextTxn::Init(nsIDOM
   mOffset = aOffset;
   mStringToInsert = aStringToInsert;
   mEditor = aEditor;
   return NS_OK;
 }
 
 NS_IMETHODIMP InsertTextTxn::DoTransaction(void)
 {
-#ifdef DEBUG
-  if (gNoisy)
-  {
-    printf("Do Insert Text element = %p\n",
-           static_cast<void*>(mElement.get()));
-  }
-#endif
-
   NS_ASSERTION(mElement && mEditor, "bad state");
   if (!mElement || !mEditor) { return NS_ERROR_NOT_INITIALIZED; }
 
   nsresult result = mElement->InsertData(mOffset, mStringToInsert);
   NS_ENSURE_SUCCESS(result, result);
 
   // only set selection to insertion point if editor gives permission
   bool bAdjustSelection;
@@ -93,24 +81,16 @@ NS_IMETHODIMP InsertTextTxn::DoTransacti
     // do nothing - dom range gravity will adjust selection
   }
 
   return result;
 }
 
 NS_IMETHODIMP InsertTextTxn::UndoTransaction(void)
 {
-#ifdef DEBUG
-  if (gNoisy)
-  {
-    printf("Undo Insert Text element = %p\n",
-           static_cast<void*>(mElement.get()));
-  }
-#endif
-
   NS_ASSERTION(mElement && mEditor, "bad state");
   if (!mElement || !mEditor) { return NS_ERROR_NOT_INITIALIZED; }
 
   uint32_t length = mStringToInsert.Length();
   return mElement->DeleteData(mOffset, length);
 }
 
 NS_IMETHODIMP InsertTextTxn::Merge(nsITransaction *aTransaction, bool *aDidMerge)
@@ -128,23 +108,16 @@ NS_IMETHODIMP InsertTextTxn::Merge(nsITr
     if (otherInsTxn)
     {
       if (IsSequentialInsert(otherInsTxn))
       {
         nsAutoString otherData;
         otherInsTxn->GetData(otherData);
         mStringToInsert += otherData;
         *aDidMerge = true;
-#ifdef DEBUG
-        if (gNoisy)
-        {
-          printf("InsertTextTxn assimilated %p\n",
-                 static_cast<void*>(aTransaction));
-        }
-#endif
       }
       NS_RELEASE(otherInsTxn);
     }
   }
   return result;
 }
 
 NS_IMETHODIMP InsertTextTxn::GetTxnDescription(nsAString& aString)
--- a/editor/libeditor/base/JoinElementTxn.cpp
+++ b/editor/libeditor/base/JoinElementTxn.cpp
@@ -12,20 +12,16 @@
 #include "nsError.h"                    // for NS_ERROR_NULL_POINTER, etc
 #include "nsIContent.h"                 // for nsIContent
 #include "nsIDOMCharacterData.h"        // for nsIDOMCharacterData
 #include "nsIEditor.h"                  // for nsEditor::IsModifiableNode
 #include "nsISupportsImpl.h"            // for EditTxn::QueryInterface, etc
 
 using namespace mozilla;
 
-#ifdef DEBUG
-static bool gNoisy = false;
-#endif
-
 JoinElementTxn::JoinElementTxn()
   : EditTxn()
 {
 }
 
 NS_IMPL_CYCLE_COLLECTION_INHERITED_3(JoinElementTxn, EditTxn,
                                      mLeftNode,
                                      mRightNode,
@@ -49,26 +45,16 @@ NS_IMETHODIMP JoinElementTxn::Init(nsEdi
   mRightNode = aRightNode;
   mOffset = 0;
   return NS_OK;
 }
 
 // After DoTransaction() and RedoTransaction(), the left node is removed from the content tree and right node remains.
 NS_IMETHODIMP JoinElementTxn::DoTransaction(void)
 {
-#ifdef DEBUG
-  if (gNoisy)
-  {
-    printf("%p Do Join of %p and %p\n",
-           static_cast<void*>(this),
-           static_cast<void*>(mLeftNode.get()),
-           static_cast<void*>(mRightNode.get()));
-  }
-#endif
-
   NS_PRECONDITION((mEditor && mLeftNode && mRightNode), "null arg");
   if (!mEditor || !mLeftNode || !mRightNode) { return NS_ERROR_NOT_INITIALIZED; }
 
   // get the parent node
   nsCOMPtr<nsINode> leftParent = mLeftNode->GetParentNode();
   NS_ENSURE_TRUE(leftParent, NS_ERROR_NULL_POINTER);
 
   // verify that mLeftNode and mRightNode have the same parent
@@ -80,40 +66,23 @@ NS_IMETHODIMP JoinElementTxn::DoTransact
     return NS_ERROR_INVALID_ARG;
   }
 
   // set this instance mParent. 
   // Other methods will see a non-null mParent and know all is well
   mParent = leftParent;
   mOffset = mLeftNode->Length();
 
-  nsresult rv = mEditor->JoinNodesImpl(mRightNode, mLeftNode, mParent);
-
-#ifdef DEBUG
-  if (NS_SUCCEEDED(rv) && gNoisy) {
-    printf("  left node = %p removed\n", static_cast<void*>(mLeftNode.get()));
-  }
-#endif
-
-  return rv;
+  return mEditor->JoinNodesImpl(mRightNode, mLeftNode, mParent);
 }
 
 //XXX: what if instead of split, we just deleted the unneeded children of mRight
 //     and re-inserted mLeft?
 NS_IMETHODIMP JoinElementTxn::UndoTransaction(void)
 {
-#ifdef DEBUG
-  if (gNoisy)
-  {
-    printf("%p Undo Join, right node = %p\n",
-           static_cast<void*>(this),
-           static_cast<void*>(mRightNode.get()));
-  }
-#endif
-
   NS_ASSERTION(mRightNode && mLeftNode && mParent, "bad state");
   if (!mRightNode || !mLeftNode || !mParent) { return NS_ERROR_NOT_INITIALIZED; }
   // first, massage the existing node so it is in its post-split state
   nsCOMPtr<nsIDOMCharacterData>rightNodeAsText = do_QueryInterface(mRightNode);
   ErrorResult rv;
   if (rightNodeAsText)
   {
     rv = rightNodeAsText->DeleteData(0, mOffset);
--- a/editor/libeditor/base/SplitElementTxn.cpp
+++ b/editor/libeditor/base/SplitElementTxn.cpp
@@ -13,21 +13,16 @@
 #include "nsIContent.h"                 // for nsIContent
 #include "nsIDOMCharacterData.h"        // for nsIDOMCharacterData
 #include "nsIEditor.h"                  // for nsEditor::DebugDumpContent, etc
 #include "nsISelection.h"               // for nsISelection
 #include "nsISupportsUtils.h"           // for NS_ADDREF
 
 using namespace mozilla;
 
-#ifdef DEBUG
-static bool gNoisy = false;
-#endif
-
-
 // note that aEditor is not refcounted
 SplitElementTxn::SplitElementTxn()
   : EditTxn()
 {
 }
 
 NS_IMPL_CYCLE_COLLECTION_INHERITED_2(SplitElementTxn, EditTxn,
                                      mParent,
@@ -48,45 +43,27 @@ NS_IMETHODIMP SplitElementTxn::Init(nsEd
   mEditor = aEditor;
   mExistingRightNode = do_QueryInterface(aNode);
   mOffset = aOffset;
   return NS_OK;
 }
 
 NS_IMETHODIMP SplitElementTxn::DoTransaction(void)
 {
-#ifdef DEBUG
-  if (gNoisy)
-  {
-    printf("%p Do Split of node %p offset %d\n",
-           static_cast<void*>(this),
-           static_cast<void*>(mExistingRightNode.get()),
-           mOffset);
-  }
-#endif
-
   NS_ASSERTION(mExistingRightNode && mEditor, "bad state");
   if (!mExistingRightNode || !mEditor) { return NS_ERROR_NOT_INITIALIZED; }
 
   // create a new node
   ErrorResult rv;
   mNewLeftNode = mExistingRightNode->CloneNode(false, rv);
   NS_ENSURE_SUCCESS(rv.ErrorCode(), rv.ErrorCode());
   NS_ASSERTION(mNewLeftNode, "could not create element.");
   NS_ENSURE_TRUE(mNewLeftNode, NS_ERROR_NULL_POINTER);
   mEditor->MarkNodeDirty(mExistingRightNode);
 
-#ifdef DEBUG
-  if (gNoisy)
-  {
-    printf("  created left node = %p\n",
-           static_cast<void*>(mNewLeftNode.get()));
-  }
-#endif
-
   // get the parent node
   mParent = mExistingRightNode->GetParentNode();
   NS_ENSURE_TRUE(mParent, NS_ERROR_NULL_POINTER);
 
   // insert the new node
   nsresult result = mEditor->SplitNodeImpl(mExistingRightNode->AsDOMNode(),
                                            mOffset,
                                            mNewLeftNode->AsDOMNode(),
@@ -108,130 +85,61 @@ NS_IMETHODIMP SplitElementTxn::DoTransac
       // do nothing - dom range gravity will adjust selection
     }
   }
   return result;
 }
 
 NS_IMETHODIMP SplitElementTxn::UndoTransaction(void)
 {
-#ifdef DEBUG
-  if (gNoisy) { 
-    printf("%p Undo Split of existing node %p and new node %p offset %d\n",
-           static_cast<void*>(this),
-           static_cast<void*>(mExistingRightNode.get()),
-           static_cast<void*>(mNewLeftNode.get()),
-           mOffset);
-  }
-#endif
-
   NS_ASSERTION(mEditor && mExistingRightNode && mNewLeftNode && mParent, "bad state");
   if (!mEditor || !mExistingRightNode || !mNewLeftNode || !mParent) {
     return NS_ERROR_NOT_INITIALIZED;
   }
 
   // this assumes Do inserted the new node in front of the prior existing node
-  nsresult rv = mEditor->JoinNodesImpl(mExistingRightNode, mNewLeftNode,
-                                       mParent);
-#ifdef DEBUG
-  if (gNoisy) 
-  { 
-    printf("** after join left child node %p into right node %p\n",
-           static_cast<void*>(mNewLeftNode.get()),
-           static_cast<void*>(mExistingRightNode.get()));
-    if (gNoisy) {mEditor->DebugDumpContent(); } // DEBUG
-  }
-  if (NS_SUCCEEDED(rv))
-  {
-    if (gNoisy)
-    {
-      printf("  left node = %p removed\n",
-             static_cast<void*>(mNewLeftNode.get()));
-    }
-  }
-#endif
-
-  return rv;
+  return mEditor->JoinNodesImpl(mExistingRightNode, mNewLeftNode, mParent);
 }
 
 /* redo cannot simply resplit the right node, because subsequent transactions
  * on the redo stack may depend on the left node existing in its previous state.
  */
 NS_IMETHODIMP SplitElementTxn::RedoTransaction(void)
 {
   NS_ASSERTION(mEditor && mExistingRightNode && mNewLeftNode && mParent, "bad state");
   if (!mEditor || !mExistingRightNode || !mNewLeftNode || !mParent) {
     return NS_ERROR_NOT_INITIALIZED;
   }
 
-#ifdef DEBUG
-  if (gNoisy) { 
-    printf("%p Redo Split of existing node %p and new node %p offset %d\n",
-           static_cast<void*>(this),
-           static_cast<void*>(mExistingRightNode.get()),
-           static_cast<void*>(mNewLeftNode.get()),
-           mOffset);
-    if (gNoisy) {mEditor->DebugDumpContent(); } // DEBUG
-  }
-#endif
-
   // first, massage the existing node so it is in its post-split state
   nsCOMPtr<nsIDOMCharacterData>rightNodeAsText = do_QueryInterface(mExistingRightNode);
   if (rightNodeAsText)
   {
     nsresult result = rightNodeAsText->DeleteData(0, mOffset);
     NS_ENSURE_SUCCESS(result, result);
-#ifdef DEBUG
-    if (gNoisy) 
-    { 
-      printf("** after delete of text in right text node %p offset %d\n",
-             static_cast<void*>(rightNodeAsText.get()),
-             mOffset);
-      mEditor->DebugDumpContent();  // DEBUG
-    }
-#endif
   }
   else
   {
     nsCOMPtr<nsINode> child = mExistingRightNode->GetFirstChild();
     for (int32_t i=0; i<mOffset; i++)
     {
       if (!child) {return NS_ERROR_NULL_POINTER;}
       ErrorResult rv;
       mExistingRightNode->RemoveChild(*child, rv);
       if (NS_SUCCEEDED(rv.ErrorCode()))
       {
         mNewLeftNode->AppendChild(*child, rv);
         NS_ENSURE_SUCCESS(rv.ErrorCode(), rv.ErrorCode());
-#ifdef DEBUG
-        if (gNoisy)
-        {
-          printf("** move child node %p from right node %p to left node %p\n",
-                 static_cast<void*>(child),
-                 static_cast<void*>(mExistingRightNode.get()),
-                 static_cast<void*>(mNewLeftNode.get()));
-          if (gNoisy) {mEditor->DebugDumpContent(); } // DEBUG
-        }
-#endif
       }
       child = child->GetNextSibling();
     }
   }
   // second, re-insert the left node into the tree
   ErrorResult rv;
   mParent->InsertBefore(*mNewLeftNode, mExistingRightNode, rv);
-#ifdef DEBUG
-  if (gNoisy)
-  {
-    printf("** reinsert left child node %p before right node %p\n",
-           static_cast<void*>(mNewLeftNode.get()),
-           static_cast<void*>(mExistingRightNode.get()));
-    if (gNoisy) {mEditor->DebugDumpContent(); } // DEBUG
-  }
-#endif
   return rv.ErrorCode();
 }
 
 
 NS_IMETHODIMP SplitElementTxn::GetTxnDescription(nsAString& aString)
 {
   aString.AssignLiteral("SplitElementTxn");
   return NS_OK;
--- a/editor/libeditor/base/moz.build
+++ b/editor/libeditor/base/moz.build
@@ -3,17 +3,17 @@
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 TEST_DIRS += ['tests']
 
 MODULE = 'editor'
 
-SOURCES += [
+UNIFIED_SOURCES += [
     'ChangeAttributeTxn.cpp',
     'ChangeCSSInlineStyleTxn.cpp',
     'CreateElementTxn.cpp',
     'DeleteNodeTxn.cpp',
     'DeleteRangeTxn.cpp',
     'DeleteTextTxn.cpp',
     'EditAggregateTxn.cpp',
     'EditTxn.cpp',
--- a/editor/libeditor/base/nsEditor.cpp
+++ b/editor/libeditor/base/nsEditor.cpp
@@ -107,20 +107,16 @@
 #include "nsThreadUtils.h"              // for nsRunnable
 #include "nsTransactionManager.h"       // for nsTransactionManager
 #include "prtime.h"                     // for PR_Now
 
 class nsIOutputStream;
 class nsIParserService;
 class nsITransferable;
 
-#ifdef NS_DEBUG_EDITOR
-static bool gNoisy = false;
-#endif
-
 #ifdef DEBUG
 #include "nsIDOMHTMLDocument.h"         // for nsIDOMHTMLDocument
 #endif
 
 using namespace mozilla;
 using namespace mozilla::dom;
 using namespace mozilla::widget;
 
@@ -774,20 +770,16 @@ nsEditor::SetTransactionManager(nsITrans
   // nsITransactionManager is builtinclass, so this is safe
   mTxnMgr = static_cast<nsTransactionManager*>(aTxnManager);
   return NS_OK;
 }
 
 NS_IMETHODIMP 
 nsEditor::Undo(uint32_t aCount)
 {
-#ifdef NS_DEBUG_EDITOR
-  if (gNoisy) { printf("Editor::Undo ----------\n"); }
-#endif
-
   ForceCompositionEnd();
 
   bool hasTxnMgr, hasTransaction = false;
   CanUndo(&hasTxnMgr, &hasTransaction);
   NS_ENSURE_TRUE(hasTransaction, NS_OK);
 
   nsAutoRules beginRulesSniffing(this, EditAction::undo, nsIEditor::eNone);
 
@@ -819,20 +811,16 @@ NS_IMETHODIMP nsEditor::CanUndo(bool *aI
   }
   return NS_OK;
 }
 
 
 NS_IMETHODIMP 
 nsEditor::Redo(uint32_t aCount)
 {
-#ifdef NS_DEBUG_EDITOR
-  if (gNoisy) { printf("Editor::Redo ----------\n"); }
-#endif
-
   bool hasTxnMgr, hasTransaction = false;
   CanRedo(&hasTxnMgr, &hasTransaction);
   NS_ENSURE_TRUE(hasTransaction, NS_OK);
 
   nsAutoRules beginRulesSniffing(this, EditAction::redo, nsIEditor::eNone);
 
   if (!mTxnMgr) {
     return NS_OK;
@@ -2709,20 +2697,16 @@ NS_IMETHODIMP nsEditor::CreateTxnForJoin
 // BEGIN nsEditor public helper methods
 
 nsresult
 nsEditor::SplitNodeImpl(nsIDOMNode * aExistingRightNode,
                         int32_t      aOffset,
                         nsIDOMNode*  aNewLeftNode,
                         nsIDOMNode*  aParent)
 {
-#ifdef NS_DEBUG_EDITOR
-  if (gNoisy) { printf("SplitNodeImpl: left=%p, right=%p, offset=%d\n", (void*)aNewLeftNode, (void*)aExistingRightNode, aOffset); }
-#endif
-
   NS_ASSERTION(((nullptr!=aExistingRightNode) &&
                 (nullptr!=aNewLeftNode) &&
                 (nullptr!=aParent)),
                 "null arg");
   nsresult result;
   if ((nullptr!=aExistingRightNode) &&
       (nullptr!=aNewLeftNode) &&
       (nullptr!=aParent))
--- a/editor/libeditor/html/moz.build
+++ b/editor/libeditor/html/moz.build
@@ -3,17 +3,17 @@
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 TEST_DIRS += ['tests']
 
 MODULE = 'editor'
 
-SOURCES += [
+UNIFIED_SOURCES += [
     'nsEditProperty.cpp',
     'nsHTMLAbsPosition.cpp',
     'nsHTMLAnonymousUtils.cpp',
     'nsHTMLCSSUtils.cpp',
     'nsHTMLDataTransfer.cpp',
     'nsHTMLEditor.cpp',
     'nsHTMLEditorEventListener.cpp',
     'nsHTMLEditorStyle.cpp',
--- a/editor/libeditor/text/moz.build
+++ b/editor/libeditor/text/moz.build
@@ -3,17 +3,17 @@
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 TEST_DIRS += ['tests']
 
 MODULE = 'editor'
 
-SOURCES += [
+UNIFIED_SOURCES += [
     'nsInternetCiter.cpp',
     'nsPlaintextDataTransfer.cpp',
     'nsPlaintextEditor.cpp',
     'nsTextEditRules.cpp',
     'nsTextEditRulesBidi.cpp',
     'nsTextEditUtils.cpp',
 ]
 
--- a/editor/txmgr/src/moz.build
+++ b/editor/txmgr/src/moz.build
@@ -1,17 +1,17 @@
 # -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 MODULE = 'txmgr'
 
-SOURCES += [
+UNIFIED_SOURCES += [
     'nsTransactionItem.cpp',
     'nsTransactionList.cpp',
     'nsTransactionManager.cpp',
     'nsTransactionManagerFactory.cpp',
     'nsTransactionStack.cpp',
 ]
 
 LIBRARY_NAME = 'txmgr'
--- a/editor/txtsvc/src/moz.build
+++ b/editor/txtsvc/src/moz.build
@@ -1,17 +1,17 @@
 # -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 MODULE = 'txtsvc'
 
-SOURCES += [
+UNIFIED_SOURCES += [
     'nsFilteredContentIterator.cpp',
     'nsTextServicesDocument.cpp',
 ]
 
 LIBRARY_NAME = 'txtsvc_s'
 
 FAIL_ON_WARNINGS = True
 
--- a/extensions/spellcheck/locales/en-US/hunspell/dictionary-sources/upstream-hunspell.diff
+++ b/extensions/spellcheck/locales/en-US/hunspell/dictionary-sources/upstream-hunspell.diff
@@ -2132,7480 +2132,7486 @@ 2384a3744,3745
 > Cyrille/M
 2385a3747
 > Cyrillus/M
 2393c3755,3756
 < D/M
 ---
 > D'Arcy
 > D/MN
-2424a3788
+2418a3782
+> DRM
+2422a3787
+> DVR/S
+2424a3790
 > Dacey/M
-2425a3790,3791
+2425a3792,3793
 > Dacia
 > Dacie/M
-2426a3793
+2426a3795
 > Dacy/M
-2429a3797,3803
+2429a3799,3805
 > Dael/M
 > Daffi/M
 > Daffie/M
 > Daffy/M
 > Dag/M
 > Dagmar/M
 > Dagny/M
-2431a3806
+2431a3808
 > Dahlia/M
-2432a3808
+2432a3810
 > Daile/M
-2433a3810,3812
+2433a3812,3814
 > Daisey/M
 > Daisi/M
 > Daisie/M
-2437a3817
+2437a3819
 > Dal/M
-2438a3819
+2438a3821
 > Dalenna/M
-2440c3821,3822
+2440c3823,3824
 < Dali
 ---
 > Dali/S
 > Dalia/M
-2441a3824,3825
+2441a3826,3827
 > Dalila/M
 > Dall/M
-2442a3827,3828
+2442a3829,3830
 > Dalli/MS
 > Dallon/M
-2444a3831,3833
+2444a3833,3835
 > Daloris/M
 > Dalston/M
 > Dalt/M
-2445a3835,3836
+2445a3837,3838
 > Damara/M
 > Damaris/M
-2448a3840
+2448a3842
 > Damiano/M
-2450a3843
+2450a3845
 > Damita/M
-2457a3851,3853
+2457a3853,3855
 > Danell/M
 > Danella/M
 > Danette/M
-2458a3855,3856
+2458a3857,3858
 > Dani/M
 > Dania/M
-2459a3858,3860
+2459a3860,3862
 > Danica/M
 > Danice/M
 > Danie/M
-2460a3862,3864
+2460a3864,3866
 > Daniela/M
 > Daniele/M
 > Daniella/M
-2461a3866,3867
+2461a3868,3869
 > Danika/M
 > Danila/M
-2462a3869,3873
+2462a3871,3875
 > Danit/M
 > Danita/M
 > Danna/M
 > Dannel/M
 > Danni/M
-2464a3876
+2464a3878
 > Dannye/M
-2469a3882,3886
+2469a3884,3888
 > Danya/M
 > Danyelle/M
 > Danyette/M
 > Daphene/M
 > Daphna/M
-2470a3888,3892
+2470a3890,3894
 > Dar/MNH
 > Dara/M
 > Darb/M
 > Darbee/M
 > Darbie/M
-2471a3894,3897
+2471a3896,3899
 > Darcee/M
 > Darcey/M
 > Darci/M
 > Darcie/M
-2472a3899
+2472a3901
 > Darda/M
-2474a3902,3904
+2474a3904,3906
 > Dareen/M
 > Darell/M
 > Darelle/M
-2476a3907,3910
+2476a3909,3912
 > Dari/M
 > Daria/M
 > Darice/M
 > Darill/M
-2481a3916
+2481a3918
 > Darleen/M
-2482a3918
+2482a3920
 > Darline/M
-2483a3920,3922
+2483a3922,3924
 > Darlleen/M
 > Darn/M
 > Darnall/M
-2484a3924
+2484a3926
 > Daron/M
-2486a3927
+2486a3929
 > Darrelle/M
-2487a3929
+2487a3931
 > Darrick/M
-2490a3933,3934
+2490a3935,3936
 > Darsey/M
 > Darsie/M
-2498a3943
+2498a3945
 > Darya/M
-2499a3945,3950
+2499a3947,3952
 > Daryle/M
 > Daryn/M
 > Dasha/M
 > Dasi/M
 > Dasie/M
 > Dasya/M
-2500a3952
+2500a3954
 > Datha/M
-2502a3955,3956
+2502a3957,3958
 > Daune/M
 > Dav/MN
-2504a3959,3960
+2504a3961,3962
 > Daveen/M
 > Daven/M
-2505a3962,3963
+2505a3964,3965
 > Daveta/M
 > Davey/M
-2506a3965,3967
+2506a3967,3969
 > Davida/M
 > Davidde/M
 > Davide/M
-2507a3969,3972
+2507a3971,3974
 > Davie/MS
 > Davin/M
 > Davina/M
 > Davine/M
-2511a3977
+2511a3979
 > Dawna/M
-2514a3981,3982
+2514a3983,3984
 > Dayle/M
 > Dayna/M
-2515a3984,3985
+2515a3986,3987
 > Ddene/M
 > De/RSMN
-2516a3987
+2516a3989
 > DeKalb/M
-2520a3992
+2520a3994
 > Deane/M
-2523a3996,3997
+2523a3998,3999
 > Deb/SM
 > Debbi/M
-2525a4000,4002
+2525a4002,4004
 > Debee/M
 > Debera/M
 > Debi/M
-2526a4004
+2526a4006
 > Debor/M
-2540c4018,4019
+2540c4020,4021
 < Decker
 ---
 > Deck/MR
 > Dede/M
-2541a4021,4022
+2541a4023,4024
 > Dedie/M
 > Dedra/M
-2542a4024,4026
+2542a4026,4028
 > Deeann/M
 > Deeanne/M
 > Deedee/M
-2543a4028
+2543a4030
 > Deerdre/M
-2544a4030
+2544a4032
 > Deeyn/M
-2546a4033
+2546a4035
 > Dehlia/M
-2548a4036
+2548a4038
 > Deina/M
-2552c4040,4041
+2552c4042,4043
 < Del
 ---
 > Del/Y
 > Dela/M
-2554a4044
+2554a4046
 > Delainey/M
-2559a4050,4051
+2559a4052,4053
 > Delcina/M
 > Delcine/M
-2565a4058
+2565a4060
 > Delila/M
-2567a4061
+2567a4063
 > Delinda/M
-2570a4065
+2570a4067
 > Delly/M
-2574a4070,4072
+2574a4072,4074
 > Delmor/M
 > Delmore/M
 > Delora/M
-2575a4074
+2575a4076
 > Deloria/M
-2578a4078,4079
+2578a4080,4081
 > Delphine/M
 > Delphinia/M
-2584a4086,4089
+2584a4088,4091
 > Demetra/M
 > Demetre/M
 > Demetri/SM
 > Demetria/M
-2590a4096
+2590a4098
 > Demott/M
-2593a4100
+2593a4102
 > Dene
-2597c4104,4105
+2597c4106,4107
 < Denis
 ---
 > Deni/SM
 > Denice/M
-2600c4108,4113
+2600c4110,4115
 < Dennis
 ---
 > Denna/M
 > Dennet/M
 > Denney/M
 > Denni/MS
 > Dennie/M
 > Dennison/M
-2602a4116,4118
+2602a4118,4120
 > Deny/M
 > Denys
 > Denyse/M
-2603a4120
+2603a4122
 > Deonne/M
-2604a4122
+2604a4124
 > Der/M
-2607a4126,4128
+2607a4128,4130
 > Derk/M
 > Dermot/M
 > Derrek/M
-2609a4131,4136
+2609a4133,4138
 > Derrik/M
 > Derril/M
 > Derron/M
 > Derry
 > Derward/M
 > Derwin/M
-2611a4139,4140
+2611a4141,4142
 > Desi/M
 > Desirae/M
-2612a4142
+2612a4144
 > Desiri/M
-2613a4144
+2613a4146
 > Desmund/M
-2616a4148,4150
+2616a4150,4152
 > Dev/M
 > Deva/M
 > Devan/M
-2620a4155,4159
+2620a4157,4161
 > Devina/M
 > Devinne/M
 > Devland/M
 > Devlen/M
 > Devlin/M
-2621a4161
+2621a4163
 > Devondra/M
-2622a4163,4168
+2622a4165,4170
 > Devonna/M
 > Devonne/M
 > Devora/M
 > Devy/M
 > Dew/M
 > Dewain/M
-2625a4172
+2625a4174
 > Dewie/M
-2626a4174
+2626a4176
 > Dex/M
-2628a4177
+2628a4179
 > Dhabi
-2634a4184
+2634a4186
 > Diahann/M
-2635a4186
+2635a4188
 > Dian/M
-2636a4188
+2636a4190
 > Diandra/M
-2637a4190
+2637a4192
 > Dianemarie/M
-2640a4194,4195
+2640a4196,4197
 > Diannne/M
 > Diarmid/M
-2646a4202
+2646a4204
 > Dickie/M
-2648a4205
+2648a4207
 > Dicky/M
-2650a4208
+2650a4210
 > Didi/M
-2655a4214,4215
+2655a4216,4217
 > Diena/M
 > Dierdre/M
-2656a4217
+2656a4219
 > Dieter/M
-2659a4221
+2659a4223
 > Dilan/M
-2660a4223
+2660a4225
 > Dill/M
-2661a4225
+2661a4227
 > Dillie/M
-2663a4228,4230
+2663a4230,4232
 > Dilly/M
 > Dimitri/M
 > Dimitry/M
-2665a4233,4234
+2665a4235,4236
 > Dinnie/M
 > Dinny/M
-2669a4239,4241
+2669a4241,4243
 > Dione
 > Dionis/M
 > Dionisio/M
-2683a4256
+2683a4258
 > Dita/M
-2697a4271
+2697a4273
 > Dniren/M
-2702a4277
+2702a4279
 > Dode/M
-2704a4280,4281
+2704a4282,4283
 > Dodi/M
 > Dodie/M
-2706a4284
+2706a4286
 > Dody/M
-2710a4289,4292
+2710a4291,4294
 > Dolf/M
 > Doll/M
 > Dolley/M
 > Dolli/M
-2713a4296,4301
+2713a4298,4303
 > Dolorita/SM
 > Dolph/M
 > Dom
 > Domenic/M
 > Domenico/M
 > Domeniga/M
-2714a4303
+2714a4305
 > Dominga/M
-2716a4306
+2716a4308
 > Domini/M
-2720a4311
+2720a4313
 > Dominik/M
-2724a4316
+2724a4318
 > Don't
-2726a4319
+2726a4321
 > Donal/M
-2728a4322,4323
+2728a4324,4325
 > Donall/M
 > Donalt/M
-2729a4325,4328
+2729a4327,4330
 > Donaugh/M
 > Donavon/M
 > Donella/M
 > Donelle/M
-2730a4330,4333
+2730a4332,4335
 > Donetta/M
 > Donia/M
 > Donica/M
 > Donielle/M
-2733a4337
+2733a4339
 > Donnamarie/M
-2736a4341
+2736a4343
 > Donni/M
-2744a4350,4354
+2744a4352,4356
 > Doralia/M
 > Doralin/M
 > Doralyn/M
 > Doralynn/M
 > Doralynne/M
-2745a4356
+2745a4358
 > Dore/M
-2746a4358,4367
+2746a4360,4369
 > Dorelia/M
 > Dorella/M
 > Dorelle/M
 > Dorena/M
 > Dorene/M
 > Doretta/M
 > Dorette/M
 > Dorey/M
 > Dori/SM
 > Doria/M
-2748a4370,4372
+2748a4372,4374
 > Dorice/M
 > Dorie/M
 > Dorine/M
-2749a4374,4376
+2749a4376,4378
 > Dorisa/M
 > Dorise/M
 > Dorita/M
-2750a4378,4382
+2750a4380,4384
 > Doro/M
 > Dorolice/M
 > Dorolisa/M
 > Dorotea/M
 > Doroteya/M
-2751a4384
+2751a4386
 > Dorothee/M
-2752a4386,4389
+2752a4388,4391
 > Dorree/M
 > Dorri/SM
 > Dorrie/M
 > Dorry/M
-2754a4392
+2754a4394
 > Dorthea/M
-2756a4395,4396
+2756a4397,4398
 > Dory/M
 > Dosi/M
-2759a4400
+2759a4402
 > Doti/M
-2760a4402,4404
+2760a4404,4406
 > Dotti/M
 > Dottie/M
 > Dotty/M
-2764a4409
+2764a4411
 > Dougie/M
-2766a4412
+2766a4414
 > Dougy/M
-2767a4414
+2767a4416
 > Dov/MR
-2771a4419
+2771a4421
 > Doy/M
-2781a4430,4432
+2781a4432,4434
 > Dre/M
 > Dreddy/M
 > Dredi/M
-2786a4438,4444
+2786a4440,4446
 > Drona/M
 > Dru/M
 > Druci/M
 > Drucie/M
 > Drucill/M
 > Drucy/M
 > Drud/M
-2787a4446,4450
+2787a4448,4452
 > Drugi/M
 > Drusi/M
 > Drusie/M
 > Drusilla/M
 > Drusy/M
-2799a4463
+2799a4465
 > Dud/M
-2800a4465,4466
+2800a4467,4468
 > Duff/M
 > Duffie/M
-2801a4468
+2801a4470
 > Dugald/M
-2803a4471,4482
+2803a4473,4484
 > Dukey/M
 > Dukie/M
 > Duky/M
 > Dulce/M
 > Dulcea/M
 > Dulci/M
 > Dulcia/M
 > Dulciana/M
 > Dulcie/M
 > Dulcine/M
 > Dulcinea/M
 > Dulcy/M
-2804a4484
+2804a4486
 > Dulsea/M
-2809a4490
+2809a4492
 > Dun/M
-2811a4493
+2811a4495
 > Dunc/M
-2818a4501,4502
+2818a4503,4504
 > Dunstan
 > Dur/R
-2820a4505
+2820a4507
 > Durand/M
-2829a4515
+2829a4517
 > Durward/M
-2842a4529
+2842a4531
 > Dwain/M
-2845a4533,4538
+2845a4535,4540
 > Dyan/M
 > Dyana/M
 > Dyane/M
 > Dyann/M
 > Dyanna/M
 > Dyanne/M
-2847a4541,4542
+2847a4543,4544
 > Dyna/M
 > Dynah/M
-2851c4546
+2851c4548
 < E/SM
 ---
 > E/SMY
-2853a4549
+2853a4551
 > ECMAScript/M
-2879a4576,4580
+2879a4578,4582
 > Eachelle/M
 > Eada/M
 > Eadie/M
 > Eadith/M
 > Eadmund/M
-2880a4582,4584
+2880a4584,4586
 > Eal/M
 > Ealasaid/M
 > Eamon/M
-2884a4589
+2884a4591
 > Earlie/M
-2885a4591
+2885a4593
 > Early/M
-2890a4597,4598
+2890a4599,4600
 > Eartha/M
 > Earvin/M
-2896a4605,4607
+2896a4607,4609
 > Eb/MN
 > Eba/M
 > Ebba/M
-2898a4610,4612
+2898a4612,4614
 > Ebeneser/M
 > Ebenezer/M
 > Eberhard/M
-2899a4614
+2899a4616
 > Eberto/M
-2900a4616
+2900a4618
 > Ebonee/M
-2904a4621
+2904a4623
 > Ecma/M
-2911a4629
+2911a4631
 > Eda/M
-2912a4631,4632
+2912a4633,4634
 > Edan/M
 > Edd/M
-2913a4634
+2913a4636
 > Eddi/M
-2916a4638,4640
+2916a4640,4642
 > Ede
 > Edee/M
 > Edeline/M
-2918a4643
+2918a4645
 > Edgard/M
-2919a4645,4648
+2919a4647,4650
 > Edi/MH
 > Edie/M
 > Edik/M
 > Edin/M
-2921a4651
+2921a4653
 > Edita/M
-2922a4653,4657
+2922a4655,4659
 > Editha/M
 > Edithe/M
 > Ediva/M
 > Edlin/M
 > Edmon/M
-2926a4662
+2926a4664
 > Edouard/M
-2927a4664
+2927a4666
 > Eduard/M
-2928a4666,4667
+2928a4668,4669
 > Eduino/M
 > Edvard/M
-2933a4673,4675
+2933a4675,4677
 > Edy/M
 > Edyth/M
 > Edythe/M
-2936a4679
+2936a4681
 > Efrem/M
-2937a4681,4682
+2937a4683,4684
 > Egan/M
 > Egbert
-2938a4684,4685
+2938a4686,4687
 > Egon/M
 > Egor/M
-2946a4694,4695
+2946a4696,4697
 > Eilis/M
 > Eimile/M
-2948a4698
+2948a4700
 > Eirena/M
-2951a4702,4704
+2951a4704,4706
 > Ekaterina/M
 > El/Y
 > Elaina/M
-2953a4707,4708
+2953a4709,4710
 > Elana/M
 > Elane/M
-2954a4710
+2954a4712
 > Elayne/M
-2958a4715,4717
+2958a4717,4719
 > Elberta/M
 > Elbertina/M
 > Elbertine/M
-2959a4719,4720
+2959a4721,4722
 > Elden/M
 > Eldin/M
-2960a4722,4723
+2960a4724,4725
 > Eldredge/M
 > Eldridge/M
-2962a4726,4727
+2962a4728,4729
 > Eleanora/M
 > Eleanore/M
-2964a4730
+2964a4732
 > Eleen/M
-2965a4732,4741
+2965a4734,4743
 > Elene/M
 > Eleni/M
 > Elenore/M
 > Eleonora/M
 > Eleonore/M
 > Elfie/M
 > Elfreda/M
 > Elfrida/M
 > Elfrieda/M
 > Elga/M
-2968c4744,4749
+2968c4746,4751
 < Elias
 ---
 > Elia/S
 > Elianora/M
 > Elianore/M
 > Elicia/M
 > Elie/M
 > Elihu/M
-2970a4752
+2970a4754
 > Elinore/M
-2972a4755
+2972a4757
 > Elisabet/M
-2973a4757
+2973a4759
 > Elisabetta/M
-2976a4761,4762
+2976a4763,4764
 > Elissa/M
 > Elita/M
-2977a4764
+2977a4766
 > Elizabet/M
-2979a4767,4768
+2979a4769,4770
 > Elka/M
 > Elke/M
-2980a4770,4772
+2980a4772,4774
 > Elladine/M
 > Ellary/M
 > Elle/M
-2981a4774,4776
+2981a4776,4778
 > Ellene/M
 > Ellerey/M
 > Ellery/M
-2982a4778,4779
+2982a4780,4781
 > Ellette/M
 > Elli/SM
-2988a4786,4792
+2988a4788,4794
 > Ellissa/M
 > Ellswerth/M
 > Ellsworth/M
 > Ellwood/M
 > Elly/M
 > Ellyn/M
 > Ellynn/M
-2990a4795
+2990a4797
 > Elmira/M
-2991a4797,4799
+2991a4799,4801
 > Elmore/M
 > Elna/MH
 > Elnar/M
-2993a4802
+2993a4804
 > Elnore/M
-2994a4804
+2994a4806
 > Eloisa/M
-2995a4806,4807
+2995a4808,4809
 > Elonore/M
 > Elora/M
-2998a4811,4815
+2998a4813,4817
 > Elsbeth/M
 > Else/M
 > Elset/M
 > Elsey/M
 > Elsi/M
-3000a4818,4821
+3000a4820,4823
 > Elspeth/M
 > Elston/M
 > Elsworth/M
 > Elsy/M
-3004a4826
+3004a4828
 > Elvera/M
-3006a4829
+3006a4831
 > Elvina/M
-3008a4832,4834
+3008a4834,4836
 > Elvyn/M
 > Elwin/M
 > Elwira/M
-3010a4837,4839
+3010a4839,4841
 > Elwyn/M
 > Elyn/M
 > Elyse/M
-3011a4841,4842
+3011a4843,4844
 > Elysha/M
 > Elysia
-3013a4845,4847
+3013a4847,4849
 > Elyssa/M
 > Em/M
 > Ema/M
-3014a4849,4850
+3014a4851,4852
 > Emalee/M
 > Emalia/M
-3015a4852,4860
+3015a4854,4862
 > Emanuele/M
 > Emelda/M
 > Emelen/M
 > Emelia/M
 > Emelina/M
 > Emeline/M
 > Emelita/M
 > Emelyne/M
 > Emera/M
-3019a4865,4866
+3019a4867,4868
 > Emilee/M
 > Emili/M
-3020a4868,4869
+3020a4870,4871
 > Emilie/M
 > Emiline/M
-3024a4874,4877
+3024a4876,4879
 > Emlen/M
 > Emlyn/M
 > Emlynn/M
 > Emlynne/M
-3025a4879,4883
+3025a4881,4885
 > Emmalee/M
 > Emmaline/M
 > Emmalyn/M
 > Emmalynn/M
 > Emmalynne/M
-3026a4885,4888
+3026a4887,4890
 > Emmeline/M
 > Emmerich/M
 > Emmery/M
 > Emmet/M
-3027a4890,4894
+3027a4892,4896
 > Emmey/M
 > Emmi/M
 > Emmie/M
 > Emmit/M
 > Emmott/M
-3028a4896,4897
+3028a4898,4899
 > Emmye/M
 > Emogene/M
-3029a4899,4900
+3029a4901,4902
 > Emyle/M
 > Emylee/M
-3032a4904
+3032a4906
 > Engelbert/M
-3034a4907
+3034a4909
 > Englebert/M
-3039a4913
+3039a4915
 > Engracia/M
-3043a4918
+3043a4920
 > Ennis
-3045a4921,4922
+3045a4923,4924
 > Enrica/M
 > Enrichetta/M
-3046a4924
+3046a4926
 > Enrika/M
-3047a4926
+3047a4928
 > Enriqueta/M
-3050a4930,4931
+3050a4932,4933
 > Eolanda/M
 > Eolande/M
-3054a4936,4937
+3054a4938,4939
 > Ephrayim/M
 > Ephrem/M
-3067a4951
+3067a4953
 > Eran/M
-3068a4953
+3068a4955
 > Erastus/M
-3070a4956
+3070a4958
 > Erda/M
-3072a4959,4960
+3072a4961,4962
 > Erek/M
 > Erena/M
-3074a4963
+3074a4965
 > Erhart/M
-3077a4967
+3077a4969
 > Ericha/M
-3088a4979,4981
+3088a4981,4983
 > Erina/M
 > Erinn/M
 > Erinna/M
-3091a4985
+3091a4987
 > Erl/M
-3093a4988,4994
+3093a4990,4996
 > Ermanno/M
 > Ermengarde/M
 > Ermentrude/M
 > Ermin/M
 > Ermina/M
 > Erminia/M
 > Erminie/M
-3094a4996
+3094a4998
 > Ernaline/M
-3095a4998
+3095a5000
 > Ernesta/M
-3097a5001
+3097a5003
 > Ernestus/M
-3099a5004
+3099a5006
 > Erny/M
-3100a5006
+3100a5008
 > Errick/M
-3101a5008
+3101a5010
 > Erroll/M
-3102a5010,5012
+3102a5012,5014
 > Erskine
 > Ertha/M
 > Erv/M
-3104a5015
+3104a5017
 > Eryn/M
-3108a5020
+3108a5022
 > Esdras
-3109a5022,5024
+3109a5024,5026
 > Esma/M
 > Esmaria/M
 > Esme/M
-3115a5031,5032
+3115a5033,5034
 > Esra/M
 > Essa/M
-3120a5038,5039
+3120a5040,5041
 > Essy/M
 > Esta/M
-3122a5042
+3122a5044
 > Estel/M
-3123a5044,5045
+3123a5046,5047
 > Estele/M
 > Estell/M
-3128a5051
+3128a5053
 > Estevan/M
-3132a5056,5058
+3132a5058,5060
 > Estrella/M
 > Estrellita/M
 > Etan/M
-3133a5060
+3133a5062
 > Ethe/M
-3134a5062,5066
+3134a5064,5068
 > Ethelbert
 > Ethelda/M
 > Ethelin/M
 > Ethelind/M
 > Etheline/M
-3135a5068
+3135a5070
 > Ethelyn/M
-3138a5072,5073
+3138a5074,5075
 > Ethyl/M
 > Etienne/M
-3143a5079,5082
+3143a5081,5084
 > Etti/M
 > Ettie/M
 > Ettore/M
 > Etty/M
-3148a5088,5090
+3148a5090,5092
 > Eudora/M
 > Euell/M
 > Eugen/M
-3152a5095,5096
+3152a5097,5098
 > Eugenius/M
 > Eugine/M
-3153a5098
+3153a5100
 > Eulalie/M
-3156a5102
+3156a5104
 > Euphemia/M
-3166a5113
+3166a5115
 > Eustace/M
-3167a5115
+3167a5117
 > Eustacia/M
-3168a5117
+3168a5119
 > Ev/MN
-3169a5119
+3169a5121
 > Evaleen/M
-3170a5121
+3170a5123
 > Evangelia/M
-3171a5123
+3171a5125
 > Evangelin/M
-3174a5127,5128
+3174a5129,5130
 > Evania/M
 > Evanne/M
-3176a5131,5134
+3176a5133,5136
 > Eveleen/M
 > Evelin/M
 > Evelina/M
 > Eveline/M
-3177a5136
+3177a5138
 > Even/M
-3179a5139,5140
+3179a5141,5142
 > Everard/M
 > Evered/M
-3184a5146
+3184a5148
 > Evey/M
-3185a5148,5149
+3185a5150,5151
 > Evie/M
 > Evin/M
-3186a5151,5160
+3186a5153,5162
 > Evonne/M
 > Evvie/M
 > Evvy/M
 > Evy/M
 > Evyn/M
 > Ewan/M
 > Eward/M
 > Ewart/M
 > Ewell/M
 > Ewen/M
-3196a5171,5172
+3196a5173,5174
 > Eyde/M
 > Eydie/M
-3198a5175
+3198a5177
 > Ezechiel/M
-3199a5177,5179
+3199a5179,5181
 > Ezequiel/M
 > Eziechiele/M
 > Ezmeralda/M
-3200a5181
+3200a5183
 > Ezri/M
-3224a5206,5207
+3224a5208,5209
 > Fabe/RM
 > Faber/M
-3226a5210,5213
+3226a5212,5215
 > Fabiano/M
 > Fabien/M
 > Fabio/M
 > Fae/M
-3231a5219,5220
+3231a5221,5222
 > Faina/M
 > Fair/M
-3232a5222,5224
+3232a5224,5226
 > Fairfax
 > Fairleigh/M
 > Fairlie/M
-3236a5229
+3236a5231
 > Falito/M
-3237a5231,5232
+3237a5233,5234
 > Falkner
 > Fallon/M
-3240a5236,5243
+3240a5238,5245
 > Fan
 > Fanchette/M
 > Fanchon/M
 > Fancie/M
 > Fancy/M
 > Fanechka/M
 > Fania/M
 > Fanni/M
-3242a5246,5248
+3242a5248,5250
 > Fanya/M
 > Far/MY
 > Fara/M
-3243a5250,5251
+3243a5252,5253
 > Farah/M
 > Farand/M
-3244a5253,5256
+3244a5255,5258
 > Farica/M
 > Farlay/M
 > Farlee/M
 > Farleigh/M
-3245a5258,5259
+3245a5260,5261
 > Farlie/M
 > Farly/M
-3246a5261,5262
+3246a5263,5264
 > Farr/M
 > Farra/M
-3247a5264
+3247a5266
 > Farrah/M
-3248a5266,5267
+3248a5268,5269
 > Farrand/M
 > Farrel/M
-3249a5269
+3249a5271
 > Farris/M
-3261a5282,5283
+3261a5284,5285
 > Faun/M
 > Faunie/M
-3264a5287,5288
+3264a5289,5290
 > Faustina/M
 > Faustine/M
-3267a5292,5295
+3267a5294,5297
 > Fawn/M
 > Fawne/M
 > Fawnia/M
 > Fax/M
-3268a5297
+3268a5299
 > Faydra/M
-3269a5299,5303
+3269a5301,5305
 > Fayette/M
 > Fayina/M
 > Fayre/M
 > Fayth/M
 > Faythe/M
-3276a5311
+3276a5313
 > Federica/M
-3277a5313,5314
+3277a5315,5316
 > Fedora/M
 > Fee/M
-3278a5316,5317
+3278a5318,5319
 > Felic/M
 > Felicdad/M
-3280a5320
+3280a5322
 > Felicio/M
-3281a5322,5325
+3281a5324,5327
 > Felicle/M
 > Felike/M
 > Feliks/M
 > Felipa/M
-3282a5327,5328
+3282a5329,5330
 > Felisha/M
 > Felita/M
-3283a5330,5331
+3283a5332,5333
 > Feliza/M
 > Felizio/M
-3284a5333
+3284a5335
 > Fenelia/M
-3285a5335,5336
+3285a5337,5338
 > Feodor/M
 > Feodora/M
-3286a5338,5339
+3286a5340,5341
 > Ferd/M
 > Ferdie/M
-3287a5341,5343
+3287a5343,5345
 > Ferdinanda/M
 > Ferdinande/M
 > Ferdy/M
-3293a5350,5351
+3293a5352,5353
 > Fernanda/M
 > Fernande/M
-3294a5353
+3294a5355
 > Fernandina/M
-3295a5355
+3295a5357
 > Ferne/M
-3297a5358
+3297a5360
 > Ferrel/M
-3299a5361
+3299a5363
 > Fey/M
-3301a5364,5365
+3301a5366,5367
 > Fiann/M
 > Fianna
-3306a5371,5374
+3306a5373,5376
 > Fidela/M
 > Fidelia/M
 > Fidelio/M
 > Fidelity/M
-3308,3309c5376,5379
+3308,3309c5378,5381
 < Fielding
 < Fields
 ---
 > Fidole/M
 > Field/GS
 > Fifi/M
 > Fifine/M
-3313a5384,5389
+3313a5386,5391
 > Filbert/M
 > Filberte/M
 > Filberto/M
 > Filia/M
 > Filide/M
 > Filip/M
-3314a5391,5392
+3314a5393,5394
 > Filippa/M
 > Filippo/M
-3315a5394,5395
+3315a5396,5397
 > Filmer/M
 > Filmore/M
-3316a5397,5398
+3316a5399,5400
 > Fin
 > Fina/M
-3317a5400,5401
+3317a5402,5403
 > Findlay/M
 > Findley/M
-3318a5403
+3318a5405
 > Finlay/M
-3325c5410,5412
+3325c5412,5414
 < Firefox/M
 ---
 > Fionna/M
 > Fionnula/M
 > Fiorenze/M
-3330a5418
+3330a5420
 > Fitz/M
-3342c5430
+3342c5432
 < Fleming
 ---
 > Flem/G
-3344c5432,5437
+3344c5434,5439
 < Fletcher
 ---
 > Flemming/M
 > Fletch/MR
 > Fleur/M
 > Fleurette/M
 > Flin/M
 > Flinn/M
-3347a5441
+3347a5443
 > Flor/M
-3348a5443,5445
+3348a5445,5447
 > Florance/M
 > Flore/SM
 > Florella/M
-3349a5447,5448
+3349a5449,5450
 > Florencia/M
 > Florentia/M
-3351a5451,5455
+3351a5453,5457
 > Florenza/M
 > Florette/M
 > Flori/SM
 > Floria/M
 > Florian/M
-3354a5459,5461
+3354a5461,5463
 > Florie/M
 > Florina/M
 > Florinda/M
-3355a5463,5465
+3355a5465,5467
 > Florri/M
 > Florrie/M
 > Florry/M
-3357a5468
+3357a5470
 > Flossi/M
-3358a5470
+3358a5472
 > Flossy/M
-3360a5473
+3360a5475
 > Flss/M
-3369a5483,5486
+3369a5485,5488
 > Fons
 > Fonsie/M
 > Fonz/M
 > Fonzie/M
-3378c5495,5496
+3378c5497,5498
 < Forrest
 ---
 > Forrest/R
 > Forrester/M
-3380a5499
+3380a5501
 > Foss/M
-3392c5511
+3392c5513
 < Fran/M
 ---
 > Fran/SM
-3393a5513
+3393a5515
 > Francene/M
-3394a5515,5516
+3394a5517,5518
 > Francesco/M
 > Franchot/M
-3399a5522,5523
+3399a5524,5525
 > Franciska/M
 > Franciskus/M
-3400a5525,5526
+3400a5527,5528
 > Francklin/M
 > Francklyn/M
-3403a5530
+3403a5532
 > Francyne/M
-3412a5540,5543
+3412a5542,5545
 > Franklyn/M
 > Franky/M
 > Franni/M
 > Frannie/M
-3414c5545,5549
+3414c5547,5551
 < Franz/M
 ---
 > Fransisco/M
 > Frants/M
 > Franz/MN
 > Franzen/M
 > Frasco/M
-3415a5551,5552
+3415a5553,5554
 > Frasier/M
 > Frasquito/M
-3417a5555,5556
+3417a5557,5558
 > Frayda/M
 > Fraze/RM
-3420a5560
+3420a5562
 > Freddi/M
-3422a5563,5564
+3422a5565,5566
 > Fredek/M
 > Fredelia/M
-3423a5566,5567
+3423a5568,5569
 > Frederica/M
 > Frederich/M
-3424a5569,5570
+3424a5571,5572
 > Fredericka/M
 > Frederico/M
-3425a5572,5577
+3425a5574,5579
 > Frederigo/M
 > Frederik/M
 > Frederique/M
 > Fredi/M
 > Fredia/M
 > Fredra/M
-3427a5580,5583
+3427a5582,5585
 > Fredrika/M
 > Free/M
 > Freedman/M
 > Freeland/M
-3430a5587
+3430a5589
 > Freemon/M
-3449a5607
+3449a5609
 > Friederike/M
-3450a5609,5610
+3450a5611,5612
 > Friedrich
 > Friedrick/M
-3481a5642
+3481a5644
 > Fulvia/M
-3498c5659
+3498c5661
 < GHz
 ---
 > GHz/M
-3513a5675,5682
+3513a5677,5684
 > Gabbey/M
 > Gabbi/M
 > Gabbie/M
 > Gabby/M
 > Gabe/M
 > Gabey/M
 > Gabi/M
 > Gabie/M
-3518a5688,5690
+3518a5690,5692
 > Gabriele/M
 > Gabriell/M
 > Gabriella/M
-3519a5692,5695
+3519a5694,5697
 > Gabriellia/M
 > Gabriello/M
 > Gabrila/M
 > Gaby/M
-3522a5699
+3522a5701
 > Gae/M
-3524a5702
+3524a5704
 > Gaelan/M
-3528a5707
+3528a5709
 > Gaile/M
-3531a5711
+3531a5713
 > Gal/N
-3544a5725
+3544a5727
 > Galina/M
-3546a5728
+3546a5730
 > Gallard/M
-3554a5737
+3554a5739
 > Galvan/M
-3555a5739
+3555a5741
 > Galven/M
-3556a5741
+3556a5743
 > Galvin/M
-3557a5743
+3557a5745
 > Gamaliel/M
-3562a5749
+3562a5751
 > Gan/M
-3567a5755,5757
+3567a5757,5759
 > Gannie/M
 > Gannon/M
 > Ganny/M
-3570a5761,5762
+3570a5763,5764
 > Gar/MH
 > Garald/M
-3572a5765,5768
+3572a5767,5770
 > Gard
 > Gardener/M
 > Gardie/M
 > Gardiner
-3573a5770,5772
+3573a5772,5774
 > Gardy/M
 > Gare/MH
 > Garek/M
-3574a5774
+3574a5776
 > Garey/M
-3578a5779
+3578a5781
 > Garik/M
-3580a5782,5788
+3580a5784,5790
 > Garnet/M
 > Garnette/M
 > Garold/M
 > Garrard/M
 > Garrek/M
 > Garret/M
 > Garreth/M
-3582a5791
+3582a5793
 > Garrik/M
-3583a5793,5794
+3583a5795,5796
 > Garrot/M
 > Garrott/M
-3585a5797
+3585a5799
 > Garv/M
-3586a5799,5802
+3586a5801,5804
 > Garvin/M
 > Garvy/M
 > Garwin/M
 > Garwood/M
-3589a5806,5809
+3589a5808,5811
 > Gaspar
 > Gaspard/M
 > Gasparo/M
 > Gasper/M
-3590a5811
+3590a5813
 > Gaston/M
-3598a5820
+3598a5822
 > Gaultiero/M
-3601a5824
+3601a5826
 > Gauthier/M
-3602a5826,5828
+3602a5828,5830
 > Gav/MN
 > Gavan/M
 > Gaven/M
-3603a5830,5831
+3603a5832,5833
 > Gavra/M
 > Gavrielle/M
-3604a5833
+3604a5835
 > Gawen/M
-3606c5835,5845
+3606c5837,5847
 < Gayle/M
 ---
 > Gaye/M
 > Gayel/M
 > Gayelord/M
 > Gayla/M
 > Gayle/RM
 > Gayleen/M
 > Gaylene/M
 > Gayler/M
 > Gaylor/M
 > Gaylord/M
 > Gaynor/M
-3608a5848
+3608a5850
 > Gbps
-3611a5852,5853
+3611a5854,5855
 > Gearalt/M
 > Gearard/M
-3618a5861
+3618a5863
 > Gelya/M
-3626a5870
+3626a5872
 > Genevra/M
-3627a5872,5878
+3627a5874,5880
 > Genia/M
 > Genna/M
 > Genni/M
 > Gennie/M
 > Gennifer/M
 > Genny/M
 > Geno/M
-3628a5880
+3628a5882
 > Genovera/M
-3631a5884
+3631a5886
 > Genvieve/M
-3632a5886
+3632a5888
 > Geoff/M
-3633a5888,5891
+3633a5890,5893
 > Geoffry/M
 > Georas/M
 > Geordie
 > Georg/M
-3634a5893,5896
+3634a5895,5898
 > Georgeanna/M
 > Georgeanne/M
 > Georgena/M
 > Georgeta/M
-3635a5898
+3635a5900
 > Georgetta/M
-3636a5900
+3636a5902
 > Georgi/M
-3638a5903,5906
+3638a5905,5908
 > Georgiana/M
 > Georgianna/M
 > Georgianne/M
 > Georgie/M
-3639a5908,5909
+3639a5910,5911
 > Georgine/M
 > Georgy/M
-3640a5911
+3640a5913
 > Geralda/M
-3644a5916,5925
+3644a5918,5927
 > Gerda/M
 > Gerek/M
 > Gerhard/M
 > Gerhardine/M
 > Gerhardt/M
 > Geri/M
 > Gerianna/M
 > Gerianne/M
 > Gerick/M
 > Gerik/M
-3645a5927,5929
+3645a5929,5931
 > Gerladina/M
 > Germain/M
 > Germaine/M
-3646a5931
+3646a5933
 > Germana/M
-3648a5934,5935
+3648a5936,5937
 > Germayne/M
 > Gerome/M
-3649a5937,5940
+3649a5939,5942
 > Gerrard/M
 > Gerri/M
 > Gerrie/M
 > Gerrilee/M
-3651a5943,5948
+3651a5945,5950
 > Gert/M
 > Gerta/M
 > Gerti/M
 > Gertie/M
 > Gertrud/M
 > Gertruda/M
-3652a5950,5952
+3652a5952,5954
 > Gertrudis/M
 > Gerty/M
 > Gery/M
-3663a5964
+3663a5966
 > Gherardo/M
-3664a5966,5967
+3664a5968,5969
 > Giacinta/M
 > Giacobo/M
-3665a5969,5975
+3665a5971,5977
 > Giacomo/M
 > Giacopo/M
 > Gian/M
 > Giana/M
 > Gianina/M
 > Gianna/M
 > Gianni/M
-3667a5978,5981
+3667a5980,5983
 > Giavani/M
 > Gib/M
 > Gibb/SM
 > Gibbie/M
-3669a5984
+3669a5986
 > Gibby/M
-3676c5991,5998
+3676c5993,6000
 < Gil/M
 ---
 > Giff/MR
 > Giffard/M
 > Giffer/M
 > Giffie/M
 > Gifford/M
 > Giffy/M
 > Gigi/M
 > Gil/MY
-3678a6001,6004
+3678a6003,6006
 > Gilberta/M
 > Gilberte/M
 > Gilbertina/M
 > Gilbertine
-3679a6006
+3679a6008
 > Gilburt/M
-3682a6010
+3682a6012
 > Gilemette/M
-3685a6014,6015
+3685a6016,6017
 > Gillan/M
 > Gilles
-3687a6018
+3687a6020
 > Gilli/M
-3689a6021
+3689a6023
 > Gillie/M
-3690a6023
+3690a6025
 > Gilly/M
-3692a6026,6027
+3692a6028,6029
 > Ginelle/M
 > Ginevra/M
-3694a6030,6032
+3694a6032,6034
 > Ginni/M
 > Ginnie/M
 > Ginnifer/M
-3699a6038,6041
+3699a6040,6043
 > Giordano/M
 > Giorgi/M
 > Giorgia/M
 > Giorgio/M
-3701a6044
+3701a6046
 > Giovanna/M
-3703a6047,6049
+3703a6049,6051
 > Giralda/M
 > Giraldo/M
 > Giraud
-3704a6051,6054
+3704a6053,6056
 > Gisela/M
 > Giselbert/M
 > Gisele/M
 > Gisella/M
-3706a6057,6058
+3706a6059,6060
 > Giuditta/M
 > Giulia/M
-3707a6060,6061
+3707a6062,6063
 > Giulietta/M
 > Giulio/M
-3708a6063,6065
+3708a6065,6067
 > Giustina/M
 > Giustino/M
 > Giusto/M
-3709a6067
+3709a6069
 > Gizela/M
-3710a6069,6070
+3710a6071,6072
 > Glad/M
 > Gladi/M
-3719a6080
+3719a6082
 > Gleda/M
-3722a6084,6086
+3722a6086,6088
 > Glenden/M
 > Glendon/M
 > Glenine/M
-3725a6090,6092
+3725a6092,6094
 > Glennie/M
 > Glennis/M
 > Glori/M
-3726a6094,6096
+3726a6096,6098
 > Gloriana/M
 > Gloriane/M
 > Glory/M
-3728a6099,6104
+3728a6101,6106
 > Glyn/M
 > Glynda/M
 > Glynis/M
 > Glynn/M
 > Glynnis/M
 > Gnni/M
-3734a6111
+3734a6113
 > Godart/M
-3735a6113
+3735a6115
 > Goddart/M
-3736a6115,6117
+3736a6117,6119
 > Godfree/M
 > Godfrey/M
 > Godfry/M
-3742a6124
+3742a6126
 > Godwin
-3754a6137
+3754a6139
 > Goldarina/M
-3756a6140,6141
+3756a6142,6143
 > Goldi/M
 > Goldia/M
-3758a6144
+3758a6146
 > Goldina/M
-3763a6150
+3763a6152
 > Goldy/M
-3774a6162
+3774a6164
 > Goober/M
-3784a6173,6174
+3784a6175,6176
 > Goran/M
 > Goraud/M
-3785a6176,6177
+3785a6178,6179
 > Gordan/M
 > Gorden/M
-3786a6179
+3786a6181
 > Gordie/M
-3788a6182
+3788a6184
 > Gordy/M
-3799a6194
+3799a6196
 > Gothart/M
-3801a6197
+3801a6199
 > Gottfried/M
-3811a6208
+3811a6210
 > Gracia/M
-3813a6211,6212
+3813a6213,6214
 > Gradeigh/M
 > Gradey/M
-3814a6214,6215
+3814a6216,6217
 > Graehme/M
 > Graeme/M
-3818a6220
+3818a6222
 > Graig/M
-3819a6222
+3819a6224
 > Gram/M
-3821a6225
+3821a6227
 > Gran/M
-3822a6227,6229
+3822a6229,6231
 > Grange/R
 > Grannie/M
 > Granny/M
-3823a6231,6234
+3823a6233,6236
 > Grantham/M
 > Granthem/M
 > Grantley/M
 > Granville/M
-3824a6236,6238
+3824a6238,6240
 > Grata/M
 > Gratia/M
 > Gratiana/M
-3826a6241,6242
+3826a6243,6244
 > Grayce/M
 > Grazia/M
-3842a6259,6262
+3842a6261,6264
 > Greggory/M
 > Gregoire/M
 > Gregoor/M
 > Gregor/M
-3844a6265
+3844a6267
 > Gregorius/M
-3850a6272
+3850a6274
 > Grenville
-3852a6275
+3852a6277
 > Gretal/M
-3853a6277
+3853a6279
 > Grete/M
-3854a6279,6281
+3854a6281,6283
 > Grethel/M
 > Gretna/M
 > Gretta/M
-3857a6285,6287
+3857a6287,6289
 > Grier/M
 > Griff/M
 > Griffie/M
-3859a6290
+3859a6292
 > Griffy/M
-3863a6295,6298
+3863a6297,6300
 > Griselda
 > Grissel/M
 > Griswold/M
 > Griz/M
-3868a6304
+3868a6306
 > Grove/RM
-3881a6318
+3881a6320
 > Gualterio/M
-3892a6330,6332
+3892a6332,6334
 > Guendolen/M
 > Guenevere/M
 > Guenna/M
-3897a6338,6340
+3897a6340,6342
 > Guglielma/M
 > Guglielmo/M
 > Gui/M
-3899c6342,6346
+3899c6344,6348
 < Guido
 ---
 > Guido/M
 > Guilbert/M
 > Guillaume/M
 > Guillema/M
 > Guillemette/M
-3903a6351
+3903a6353
 > Guinna/M
-3912a6361,6366
+3912a6363,6368
 > Gun/M
 > Gunar/M
 > Gunilla/M
 > Gunner/M
 > Guntar/M
 > Gunter
-3917a6372,6378
+3917a6374,6380
 > Gusella/M
 > Guss
 > Gussi/M
 > Gussie/M
 > Gussy/M
 > Gusta/M
 > Gustaf/M
-3918a6380
+3918a6382
 > Gustave/M
-3920a6383,6385
+3920a6385,6387
 > Gusti/M
 > Gustie/M
 > Gusty/M
-3921a6387
+3921a6389
 > Guthrey/M
-3922a6389
+3922a6391
 > Guthry/M
-3929a6397,6398
+3929a6399,6400
 > Gwendolen/M
 > Gwendolin/M
-3931a6401,6408
+3931a6403,6410
 > Gweneth/M
 > Gwenette/M
 > Gwenneth/M
 > Gwenni/M
 > Gwennie/M
 > Gwenny/M
 > Gwenora/M
 > Gwenore/M
-3932a6410,6411
+3932a6412,6413
 > Gwyneth/M
 > Gwynne/M
-3954a6434
+3954a6436
 > HTTPS
-3959a6440
+3959a6442
 > Had/M
-3961a6443,6446
+3961a6445,6448
 > Hadlee/M
 > Hadleigh/M
 > Hadley/M
 > Hadria/M
-3963a6449
+3963a6451
 > Hagan/M
-3964a6451
+3964a6453
 > Hagen
-3970a6458,6460
+3970a6460,6462
 > Hailee/M
 > Hailey/M
 > Haily/M
-3973a6464,6465
+3973a6466,6467
 > Hakeem/M
 > Hakim/M
-3976c6468
+3976c6470
 < Hal/SM
 ---
 > Hal/SMY
-3979a6472,6473
+3979a6474,6475
 > Haleigh/M
 > Halette/M
-3980a6475,6476
+3980a6477,6478
 > Hali/M
 > Halie/M
-3981a6478
+3981a6480
 > Halimeda/M
-3983a6481
+3983a6483
 > Halli/M
-3987d6484
+3987d6486
 < Hallowe'en
-3989a6487,6488
+3989a6489,6490
 > Hallsy/M
 > Hally/M
-3991a6491
+3991a6493
 > Halsy/M
-3994a6495
+3994a6497
 > Hamel/M
-3995a6497,6498
+3995a6499,6500
 > Hamid/M
 > Hamil/M
-3999a6503
+3999a6505
 > Hamish/M
-4000a6505
+4000a6507
 > Hamlen/M
-4002a6508
+4002a6510
 > Hammad/M
-4007a6514
+4007a6516
 > Hamnet/M
-4011a6519,6520
+4011a6521,6522
 > Hana/M
 > Hanan/M
-4020c6529,6530
+4020c6531,6532
 < Hannah
 ---
 > Hannah/M
 > Hanni/SM
-4021a6532,6533
+4021a6534,6535
 > Hannie/M
 > Hanny/M
-4026a6539
+4026a6541
 > Hansiain/M
-4029d6541
+4029d6543
 < Hanukah/M
-4031a6544
+4031a6546
 > Happy/M
-4032a6546
+4032a6548
 > Harald/M
-4033a6548
+4033a6550
 > Harbert/M
-4034a6550
+4034a6552
 > Harcourt/M
-4039a6556
+4039a6558
 > Harland/M
-4040a6558,6559
+4040a6560,6561
 > Harlen/M
 > Harlene/M
-4042a6562,6564
+4042a6564,6566
 > Harli/M
 > Harlie/M
 > Harlin/M
-4043a6566
+4043a6568
 > Harman/M
-4044a6568,6570
+4044a6570,6572
 > Harmonia/M
 > Harmonie/M
 > Harmony/M
-4045a6572,6573
+4045a6574,6575
 > Haroun/M
 > Harp/MR
-4048a6577,6578
+4048a6579,6580
 > Harri/SM
 > Harrie/M
-4050a6581,6582
+4050a6583,6584
 > Harrietta/M
 > Harriette/M
-4052c6584,6585
+4052c6586,6587
 < Harris
 ---
 > Harriot/M
 > Harriott/M
-4059a6593
+4059a6595
 > Hartley
-4061a6596,6597
+4061a6598,6599
 > Hartwell/M
 > Harv/M
-4063a6600,6601
+4063a6602,6603
 > Harwell/M
 > Harwilll/M
-4064a6603,6604
+4064a6605,6606
 > Hasheem/M
 > Hashim/M
-4065a6606,6609
+4065a6608,6611
 > Haskel/M
 > Haskell/M
 > Haslett/M
 > Hastie/M
-4066a6611
+4066a6613
 > Hasty/M
-4070a6616
+4070a6618
 > Hatti/M
-4071a6618
+4071a6620
 > Hatty/M
-4077a6625
+4077a6627
 > Haven/M
-4088a6637
+4088a6639
 > Haydon/M
-4089a6639
+4089a6641
 > Hayley/M
-4093a6644,6645
+4093a6646,6647
 > Hayyim/M
 > Haze/M
-4094a6647
+4094a6649
 > Hazlett/M
-4097a6651
+4097a6653
 > Heall/M
-4112a6667,6676
+4112a6669,6678
 > Heda/M
 > Hedda/M
 > Heddi/M
 > Heddie/M
 > Hedi/M
 > Hedvig/M
 > Hedvige/M
 > Hedwig/M
 > Hedwiga/M
 > Hedy/M
-4117a6682
+4117a6684
 > Heida/M
-4120a6686
+4120a6688
 > Heidie/M
-4122a6689
+4122a6691
 > Heindrick/M
-4126a6694,6695
+4126a6696,6697
 > Heinrick/M
 > Heinrik/M
-4130c6699,6701
+4130c6701,6703
 < Hejira
 ---
 > Hejira/MS
 > Helaina/M
 > Helaine/M
-4133a6705
+4133a6707
 > Helenka/M
-4134a6707
+4134a6709
 > Helge/M
-4145c6718,6719
+4145c6720,6721
 < Hellenize
 ---
 > Hellenize/DSG
 > Heller
-4146a6721
+4146a6723
 > Helli/M
-4149a6725
+4149a6727
 > Helsa/M
-4151a6728
+4151a6730
 > Helvetica
-4152a6730
+4152a6732
 > Helyn/M
-4156c6734,6736
+4156c6736,6738
 < Hendricks
 ---
 > Hendrick/MS
 > Hendrik/M
 > Hendrika/M
-4157a6738
+4157a6740
 > Henka/M
-4160a6742,6743
+4160a6744,6745
 > Henrie/M
 > Henrieta/M
-4161a6745,6746
+4161a6747,6748
 > Henriette/M
 > Henrik/M
-4162a6748
+4162a6750
 > Henryetta/M
-4166a6753
+4166a6755
 > Hephzibah/M
-4171a6759
+4171a6761
 > Herb/M
-4173a6762,6764
+4173a6764,6766
 > Herbie/M
 > Herby/M
 > Herc/M
-4174a6766
+4174a6768
 > Hercule/MS
-4176a6769
+4176a6771
 > Herculie/M
-4181a6775
+4181a6777
 > Hermann/M
-4183a6778,6781
+4183a6780,6783
 > Hermia/M
 > Hermie/M
 > Hermina/M
 > Hermine/M
-4184a6783
+4184a6785
 > Hermione/M
-4186a6786
+4186a6788
 > Hermon
-4187a6788
+4187a6790
 > Hermy/M
-4188a6790
+4188a6792
 > Hernando/M
-4190a6793
+4190a6795
 > Herold/M
-4194a6798
+4194a6800
 > Hersch/M
-4196a6801
+4196a6803
 > Hersh/M
-4198a6804,6805
+4198a6806,6807
 > Herta/M
 > Hertha/M
-4200a6808,6809
+4200a6810,6811
 > Herve/M
 > Hervey/M
-4209a6819,6820
+4209a6821,6822
 > Hesther/M
 > Hestia/M
-4210a6822
+4210a6824
 > Hetti/M
-4211a6824,6829
+4211a6826,6831
 > Hetty/M
 > Hew/M
 > Hewe/M
 > Hewet/M
 > Hewett/M
 > Hewie/M
-4219a6838
+4219a6840
 > Hi/M
-4233a6853
+4233a6855
 > Hilarius/M
-4236a6857,6859
+4236a6859,6861
 > Hildagard/M
 > Hildagarde/M
 > Hilde/M
-4237a6861,6863
+4237a6863,6865
 > Hildegaard/M
 > Hildegarde/M
 > Hildy/M
-4239a6866
+4239a6868
 > Hillard/M
-4241a6869,6875
+4241a6871,6877
 > Hillery/M
 > Hilliard
 > Hilliary/M
 > Hillie/M
 > Hillier/M
 > Hilly/RM
 > Hillyer/M
-4246a6881
+4246a6883
 > Hinda/M
-4255a6891
+4255a6893
 > Hinze/M
-4262a6899
+4262a6901
 > Hirsch/M
-4271a6909
+4271a6911
 > Hobard/M
-4274a6913,6914
+4274a6915,6916
 > Hobey/M
 > Hobie/M
-4277a6918
+4277a6920
 > Hoebart/M
-4301a6943
+4301a6945
 > Holli/SM
-4303d6944
+4303d6946
 < Hollis
-4305a6947
+4305a6949
 > Hollyanne/M
-4314a6957
+4314a6959
 > Homere/M
-4315a6959
+4315a6961
 > Homerus/M
-4320a6965
+4320a6967
 > Honey/M
-4324c6969,6970
+4324c6971,6972
 < Honorable
 ---
 > Honor/B
 > Honoria/M
-4338a6985
+4338a6987
 > Horatia/M
-4339a6987
+4339a6989
 > Horatius/M
-4345a6994,6998
+4345a6996,7000
 > Horst/M
 > Hort/MN
 > Horten/M
 > Hortense
 > Hortensia/M
-4361a7015,7016
+4361a7017,7018
 > Howey/M
 > Howie/M
-4363a7019
+4363a7021
 > Hoyt/M
-4368a7025
+4368a7027
 > Hube/RM
-4370a7028,7030
+4370a7030,7032
 > Huberto/M
 > Hubey/M
 > Hubie/M
-4379a7040,7041
+4379a7042,7043
 > Hughie
 > Hugibert/M
-4381a7044
+4381a7046
 > Hugues/M
-4383a7047
+4383a7049
 > Hulda/M
-4384a7049
+4384a7051
 > Humbert/M
-4387a7053,7055
+4387a7055,7057
 > Humfrey/M
 > Humfrid/M
 > Humfried/M
-4391a7060
+4391a7062
 > Hunfredo/M
-4398a7068
+4398a7070
 > Huntlee/M
-4400a7071,7072
+4400a7073,7074
 > Hurlee/M
 > Hurleigh/M
-4404a7077
+4404a7079
 > Husein/M
-4413a7087,7092
+4413a7089,7094
 > Hy/M
 > Hyacinth/M
 > Hyacintha/M
 > Hyacinthe/M
 > Hyacinthia/M
 > Hyacinthie/M
-4414a7094
+4414a7096
 > Hyatt/M
-4417a7098
+4417a7100
 > Hyman/M
-4418a7100,7101
+4418a7102,7103
 > Hymie
 > Hynda/M
-4455a7139
+4455a7141
 > Iain/M
-4456a7141
+4456a7143
 > Ianthe/M
-4458a7144,7145
+4458a7146,7147
 > Ibbie/M
 > Ibby/M
-4463a7151
+4463a7153
 > Ibrahim/M
-4470a7159
+4470a7161
 > Ichabod/M
-4474a7164,7169
+4474a7166,7171
 > Idalia/M
 > Idalina/M
 > Idaline/M
 > Idell/M
 > Idelle/M
 > Idette/M
-4475a7171,7173
+4475a7173,7175
 > Iggie/M
 > Iggy/M
 > Ignace/M
-4476a7175
+4476a7177
 > Ignacius/M
-4477a7177,7178
+4477a7179,7180
 > Ignaz/M
 > Ignazio/M
-4483c7184,7185
+4483c7186,7187
 < Ikea/M
 ---
 > IKEA/M
 > Ikey/M
-4485a7188,7191
+4485a7190,7193
 > Ilaire/M
 > Ilario/M
 > Ileana/M
 > Ileane/M
-4487a7194,7195
+4487a7196,7197
 > Ilise/M
 > Ilka/M
-4488a7197
+4488a7199
 > Illa/M
-4491a7201,7205
+4491a7203,7207
 > Ilsa/M
 > Ilse/M
 > Ilysa/M
 > Ilyse/M
 > Ilyssa/M
-4495a7210
+4495a7212
 > Immanuel
-4496a7212
+4496a7214
 > Imogen/M
-4497a7214
+4497a7216
 > Imojean/M
-4499c7216
+4499c7218
 < In/M
 ---
 > In/MP
-4522a7240,7241
+4522a7242,7243
 > Inesita/M
 > Inessa/M
-4524c7243,7254
+4524c7245,7256
 < Inge
 ---
 > Inga/M
 > Ingaberg/M
 > Ingaborg/M
 > Ingamar/M
 > Ingar/M
 > Inge/R
 > Ingeberg/M
 > Ingeborg/M
 > Ingelbert/M
 > Ingemar/M
 > Inger/M
 > Inglebert/M
-4525a7256,7258
+4525a7258,7260
 > Inglis/M
 > Ingmar/M
 > Ingra/M
-4528a7262,7267
+4528a7264,7269
 > Ingrim/M
 > Ingunna/M
 > Inigo/M
 > Inna/M
 > Inness/M
 > Innis/M
-4543a7283,7285
+4543a7285,7287
 > Iolande/M
 > Iolanthe/M
 > Iona
-4546a7289,7291
+4546a7291,7293
 > Iorgo/MS
 > Iormina/M
 > Iosep/M
-4560a7306
+4560a7308
 > Irena/M
-4561a7308
+4561a7310
 > Irina/M
-4567a7315
+4567a7317
 > Irita/M
-4573a7322
+4573a7324
 > Irv/MG
-4577a7327,7328
+4577a7329,7330
 > Irwinn/M
 > Isa
-4578a7330
+4578a7332
 > Isaak/M
-4579a7332
+4579a7334
 > Isabelita/M
-4581a7335,7340
+4581a7337,7342
 > Isac/M
 > Isacco/M
 > Isador/M
 > Isadora/M
 > Isadore/M
 > Isahella/M
-4582a7342
+4582a7344
 > Isak/M
-4583a7344
+4583a7346
 > Iseabal/M
-4589a7351,7355
+4589a7353,7357
 > Isiahi/M
 > Isidor/M
 > Isidora/M
 > Isidore/M
 > Isidoro/M
-4598a7365
+4598a7367
 > Isobel/M
-4606a7374,7377
+4606a7376,7379
 > Issi/M
 > Issiah/M
 > Issie/M
 > Issy/M
-4615a7387
+4615a7389
 > Itch/M
-4622c7394,7401
+4622c7396,7403
 < Ives
 ---
 > Ivar/M
 > Ive/RSM
 > Iver/M
 > Ivett/M
 > Ivette/M
 > Ivie/M
 > Ivonne/M
 > Ivor/M
-4627a7407,7408
+4627a7409,7410
 > Izabel/M
 > Izak/M
-4634c7415,7416
+4634c7417,7418
 < J/MD
 ---
 > Izzy/M
 > J/MDNX
-4639a7422,7427
+4639a7424,7429
 > Jabez/M
 > Jacenta/M
 > Jacinda/M
 > Jacinta/M
 > Jacintha/M
 > Jacinthe/M
-4640a7429,7430
+4640a7431,7432
 > Jackelyn/M
 > Jacki/M
-4641a7432
+4641a7434
 > Jacklin/M
-4642a7434,7435
+4642a7436,7437
 > Jackquelin/M
 > Jackqueline/M
-4646a7440
+4646a7442
 > Jaclin/M
-4652a7447
+4652a7449
 > Jacobo/M
-4654a7450
+4654a7452
 > Jacquelin/M
-4656a7453,7455
+4656a7455,7457
 > Jacquelynn/M
 > Jacquenetta/M
 > Jacquenette/M
-4657a7457,7460
+4657a7459,7462
 > Jacquetta/M
 > Jacquette/M
 > Jacqui/M
 > Jacquie/M
-4658a7462,7465
+4658a7464,7467
 > Jacynth/M
 > Jada/M
 > Jade/M
 > Jae/M
-4663a7471
+4663a7473
 > Jaimie/M
-4664a7473
+4664a7475
 > Jaine/M
-4668a7478,7479
+4668a7480,7481
 > Jakie/M
 > Jakob/M
-4676a7488
+4676a7490
 > Jameson
-4677a7490,7491
+4677a7492,7493
 > Jamesy/M
 > Jamey/M
-4679a7494,7499
+4679a7496,7501
 > Jamil/M
 > Jamill/M
 > Jamima/M
 > Jamison/M
 > Jammal/M
 > Jammie/M
-4683c7503,7512
+4683c7505,7514
 < Jane
 ---
 > Janaya/M
 > Janaye/M
 > Jandy/M
 > Jane/M
 > Janean/M
 > Janeczka/M
 > Janeen/M
 > Janek/M
 > Janel/M
 > Janela/M
-4684a7514
+4684a7516
 > Janella/M
-4686c7516,7521
+4686c7518,7523
 < Janet
 ---
 > Janene/M
 > Janenna/M
 > Janessa/M
 > Janet/M
 > Janeta/M
 > Janetta/M
-4687a7523,7525
+4687a7525,7527
 > Janeva/M
 > Janey/M
 > Jania/M
-4689a7528,7529
+4689a7530,7531
 > Janifer/M
 > Janina
-4692a7533
+4692a7535
 > Janith/M
-4693a7535
+4693a7537
 > Janka/M
-4694a7537,7538
+4694a7539,7540
 > Jannel/M
 > Jannelle/M
-4695a7540,7541
+4695a7542,7543
 > Janos/M
 > Janot/M
-4699a7546
+4699a7548
 > Jany/M
-4702a7550,7557
+4702a7552,7559
 > Jaquelin/M
 > Jaquelyn/M
 > Jaquenetta/M
 > Jaquenette/M
 > Jaquith/M
 > Jarad/M
 > Jard/M
 > Jareb/M
-4703a7559,7560
+4703a7561,7562
 > Jarib/M
 > Jarid/M
-4704a7562
+4704a7564
 > Jarrad/M
-4705a7564
+4705a7566
 > Jarret/M
-4706a7566
+4706a7568
 > Jarrid/M
-4708a7569,7572
+4708a7571,7574
 > Jase/M
 > Jasen/M
 > Jasmin/M
 > Jasmina/M
-4711a7576
+4711a7578
 > Jasun/M
-4714d7578
+4714d7580
 < JavaScript/M
-4721a7586,7589
+4721a7588,7591
 > Jaye/M
 > Jayme/M
 > Jaymee/M
 > Jaymie/M
-4722a7591
+4722a7593
 > Jaynell/M
-4723a7593,7594
+4723a7595,7596
 > Jazmin/M
 > Jdavie/M
-4724a7596,7598
+4724a7598,7600
 > Jeana/M
 > Jeane/M
 > Jeanelle/M
-4727a7602
+4727a7604
 > Jeanna/M
-4731a7607
+4731a7609
 > Jecho/M
-4732a7609,7611
+4732a7611,7613
 > Jedd/M
 > Jeddy/M
 > Jedediah/M
-4733a7613
+4733a7615
 > Jedidiah/M
-4740a7621
+4740a7623
 > Jeffie/M
-4742a7624,7625
+4742a7626,7627
 > Jeffy/M
 > Jehanna/M
-4744a7628
+4744a7630
 > Jehu
-4745a7630,7642
+4745a7632,7644
 > Jelene/M
 > Jemie/M
 > Jemima/M
 > Jemimah/M
 > Jemmie/M
 > Jemmy/M
 > Jen/M
 > Jena/M
 > Jenda/M
 > Jenelle/M
 > Jeni/M
 > Jenica/M
 > Jeniece/M
-4746a7644,7646
+4746a7646,7648
 > Jeniffer/M
 > Jenilee/M
 > Jenine/M
-4747a7648
+4747a7650
 > Jenn/MRJ
-4749c7650,7653
+4749c7652,7655
 < Jenner
 ---
 > Jennee/M
 > Jennette/M
 > Jenni/M
 > Jennica/M
-4751a7656,7657
+4751a7658,7659
 > Jennilee/M
 > Jennine/M
-4753a7660
+4753a7662
 > Jeno/M
-4755a7663
+4755a7665
 > Jerad/M
-4756a7665,7669
+4756a7667,7671
 > Jeralee/M
 > Jeramey/M
 > Jeramie/M
 > Jere/M
 > Jereme/M
-4758a7672,7673
+4758a7674,7675
 > Jeremias/M
 > Jeremie/M
-4761a7677
+4761a7679
 > Jermain/M
-4762a7679
+4762a7681
 > Jermayne/M
-4765a7683
+4765a7685
 > Jeromy/M
-4766a7685,7688
+4766a7687,7690
 > Jerrie/M
 > Jerrilee/M
 > Jerrilyn/M
 > Jerrine/M
-4768a7691
+4768a7693
 > Jerrome/M
-4769a7693
+4769a7695
 > Jerrylee/M
-4771a7696
+4771a7698
 > Jervis/M
-4772a7698,7702
+4772a7700,7704
 > Jessa/M
 > Jessalin/M
 > Jessalyn/M
 > Jessamine/M
 > Jessamyn/M
-4773a7704,7707
+4773a7706,7709
 > Jessee/M
 > Jesselyn/M
 > Jessey/M
 > Jessi/M
-4775a7710,7711
+4775a7712,7713
 > Jessika/M
 > Jessy/M
-4777a7714,7715
+4777a7716,7717
 > Jeth/M
 > Jethro
-4781a7720
+4781a7722
 > Jewelle/M
-4788a7728,7733
+4788a7730,7735
 > Jillana/M
 > Jillane/M
 > Jillayne/M
 > Jilleen/M
 > Jillene/M
 > Jilli/M
-4789a7735,7736
+4789a7737,7738
 > Jillie/M
 > Jilly/M
-4798c7745,7746
+4798c7747,7748
 < Jo/M
 ---
 > Jo/MY
 > Joachim
-4799a7748,7750
+4799a7750,7752
 > Joana/M
 > Joane/M
 > Joanie/M
-4802c7753
+4802c7755
 < Joanne/M
 ---
 > Joanne/SM
-4804a7756,7762
+4804a7758,7764
 > Jobey/M
 > Jobi/M
 > Jobie/M
 > Jobina/M
 > Joby/M
 > Jobye/M
 > Jobyna/M
-4805a7764,7765
+4805a7766,7767
 > Jocelin/M
 > Joceline/M
-4806a7767
+4806a7769
 > Jocelyne/M
-4808a7770,7771
+4808a7772,7773
 > Jocko/M
 > Jodee/M
-4813c7776,7786
+4813c7778,7788
 < Joel
 ---
 > Joeann/M
 > Joel/Y
 > Joela/M
 > Joelie/M
 > Joell/MN
 > Joella/M
 > Joelle/M
 > Joellen/M
 > Joelly/M
 > Joellyn/M
 > Joelynn/M
-4814a7788
+4814a7790
 > Joete/M
-4816a7791
+4816a7793
 > Johan/M
-4818a7794
+4818a7796
 > Johannah/M
-4821a7798,7799
+4821a7800,7801
 > Johna/MH
 > Johnath/M
-4823a7802
+4823a7804
 > Johnette/M
-4824a7804
+4824a7806
 > Johnna/M
-4828a7809,7813
+4828a7811,7815
 > Johny/M
 > Joice/M
 > Jojo/M
 > Jolee/M
 > Joleen/M
-4829a7815,7817
+4829a7817,7819
 > Joletta/M
 > Joli/M
 > Jolie/M
-4830a7819
+4830a7821
 > Joline/M
-4831a7821,7823
+4831a7823,7825
 > Joly/M
 > Jolyn/M
 > Jolynn/M
-4838,4839c7830,7833
+4838,4839c7832,7835
 < Jones
 < Joni/M
 ---
 > Jone/SM
 > Jonell/M
 > Joni/SM
 > Jonie/M
-4841a7836
+4841a7838
 > Jordain/M
-4842a7838
+4842a7840
 > Jordana/M
-4843a7840,7843
+4843a7842,7845
 > Jordanna/M
 > Jordon/M
 > Jorey/M
 > Jorgan/M
-4844a7845,7850
+4844a7847,7852
 > Jori/M
 > Jorie/M
 > Jorrie/M
 > Jorry/M
 > Jory/M
 > Joscelin/M
-4845a7852
+4845a7854
 > Josee/M
-4848a7856
+4848a7858
 > Joseito/M
-4849a7858,7859
+4849a7860,7861
 > Josepha/M
 > Josephina/M
-4853a7864
+4853a7866
 > Josey/M
-4854a7866
+4854a7868
 > Joshia/M
-4855a7868,7869
+4855a7870,7871
 > Joshuah/M
 > Josi/M
-4856a7871
+4856a7873
 > Josias/M
-4857a7873
+4857a7875
 > Josselyn/M
-4858a7875
+4858a7877
 > Josy/M
-4859a7877,7878
+4859a7879,7880
 > Jourdain/M
 > Jourdan/M
-4862a7882,7884
+4862a7884,7886
 > Joya/M
 > Joyan/M
 > Joyann/M
-4864a7887,7888
+4864a7889,7890
 > Joycelin/M
 > Joye/M
-4865a7890
+4865a7892
 > Jozef/M
-4867a7893
+4867a7895
 > Jsandye/M
-4872a7899
+4872a7901
 > Jud
-4881a7909,7910
+4881a7911,7912
 > Judi/MH
 > Judie/M
-4882a7912,7913
+4882a7914,7915
 > Juditha/M
 > Judon/M
-4884a7916
+4884a7918
 > Judye/M
-4885a7918
+4885a7920
 > Juieta/M
-4887c7920,7922
+4887c7922,7924
 < Jules
 ---
 > Jule/SM
 > Julee/M
 > Juli/M
-4890a7926,7928
+4890a7928,7930
 > Juliane/M
 > Juliann/M
 > Julianna/M
-4892a7931
+4892a7933
 > Julienne/M
-4893a7933,7934
+4893a7935,7936
 > Julieta/M
 > Julietta/M
-4894a7936,7937
+4894a7938,7939
 > Julina/M
 > Juline/M
-4895a7939,7940
+4895a7941,7942
 > Julissa/M
 > Julita/M
-4901a7947
+4901a7949
 > Junette/M
-4904a7951,7953
+4904a7953,7955
 > Junia/M
 > Junie/M
 > Junina/M
-4910a7960
+4910a7962
 > Justen/M
-4912a7963
+4912a7965
 > Justina/M
-4914a7966,7969
+4914a7968,7971
 > Justinn/M
 > Justino/M
 > Justis/M
 > Justus/M
-4917c7972,7973
+4917c7974,7975
 < K/SMNGJ
 ---
 > Jyoti/M
 > K/SMNRGJ
-4929a7986,7989
+4929a7988,7991
 > Kacey/M
 > Kacie/M
 > Kacy/M
 > Kaela/M
-4932a7993,7994
+4932a7995,7996
 > Kahaleel/M
 > Kahlil/M
-4933a7996,7997
+4933a7998,7999
 > Kai/M
 > Kaia/M
-4934a7999,8003
+4934a8001,8005
 > Kaila/M
 > Kaile/M
 > Kailey/M
 > Kain/M
 > Kaine/M
-4936a8006,8010
+4936a8008,8012
 > Kaitlyn/M
 > Kaitlynn/M
 > Kaja/M
 > Kakalina/M
 > Kala/M
-4940a8015,8017
+4940a8017,8019
 > Kale/M
 > Kaleb/M
 > Kaleena/M
-4943a8021,8029
+4943a8023,8031
 > Kalie/M
 > Kalil/M
 > Kalila/M
 > Kalina/M
 > Kalinda/M
 > Kalindi/M
 > Kalle/M
 > Kalli/M
 > Kally/M
-4944a8031
+4944a8033
 > Kalvin/M
-4947a8035,8038
+4947a8037,8040
 > Kameko/M
 > Kamila/M
 > Kamilah/M
 > Kamillah/M
-4951a8043
+4951a8045
 > Kandace/M
-4953a8046
+4953a8048
 > Kandy
-4954a8048
+4954a8050
 > Kania/M
-4961a8056
+4961a8058
 > Kanya/M
-4967a8063,8064
+4967a8065,8066
 > Karalee/M
 > Karalynn/M
-4968a8066,8067
+4968a8068,8069
 > Kare/M
 > Karee/M
-4969a8069
+4969a8071
 > Karel/M
-4970a8071
+4970a8073
 > Karena/M
-4972a8074,8078
+4972a8076,8080
 > Karia/M
 > Karie/M
 > Karil/M
 > Karilynn/M
 > Karim/M
-4975c8081,8086
+4975c8083,8088
 < Karl/M
 ---
 > Karine/M
 > Kariotta/M
 > Karisa/M
 > Karissa/M
 > Karita/M
 > Karl/MNX
-4976a8088,8095
+4976a8090,8097
 > Karlan/M
 > Karlee/M
 > Karleen/M
 > Karlen/M
 > Karlene/M
 > Karlie/M
 > Karlik/M
 > Karlis
-4978c8097,8104
+4978c8099,8106
 < Karo/M
 ---
 > Karlotta/M
 > Karlotte/M
 > Karly/M
 > Karlyn/M
 > Karmen/M
 > Karna/M
 > Karney/M
 > Karo/MY
-4979a8106,8113
+4979a8108,8115
 > Karola/M
 > Karole/M
 > Karolina/M
 > Karoline/M
 > Karoly/M
 > Karon/M
 > Karrah/M
 > Karrie/M
-4980a8115,8118
+4980a8117,8120
 > Karry/M
 > Kary/M
 > Karyl/M
 > Karylin/M
-4984a8123
+4984a8125
 > Kaspar/M
-4985a8125,8134
+4985a8127,8136
 > Kasper/M
 > Kass
 > Kassandra/M
 > Kassey/M
 > Kassi/M
 > Kassia/M
 > Kassie/M
 > Kat/M
 > Kata/M
 > Katalin/M
-4986a8136
+4986a8138
 > Katee/M
-4987a8138,8143
+4987a8140,8145
 > Katerina/M
 > Katerine/M
 > Katey/M
 > Kath/M
 > Katha/M
 > Katharina/M
-4988a8145,8147
+4988a8147,8149
 > Katharyn/M
 > Kathe/M
 > Katherina/M
-4990a8150
+4990a8152
 > Kathi/M
-4993a8154
+4993a8156
 > Kathlin/M
-4996a8158
+4996a8160
 > Kathryne/M
-4997a8160,8161
+4997a8162,8163
 > Kathye/M
 > Kati/M
-4999a8164,8167
+4999a8166,8169
 > Katine/M
 > Katinka/M
 > Katleen/M
 > Katlin/M
-5003a8172,8177
+5003a8174,8179
 > Katrine
 > Katrinka/M
 > Katti/M
 > Kattie/M
 > Katuscha/M
 > Katusha/M
-5004a8179
+5004a8181
 > Katya/M
-5011a8187
+5011a8189
 > Kaycee/M
-5013a8190,8195
+5013a8192,8197
 > Kayle/M
 > Kaylee/M
 > Kayley/M
 > Kaylil/M
 > Kaylyn/M
 > Kayne/M
-5019a8202,8205
+5019a8204,8207
 > Kean
 > Keane/M
 > Kearney/M
 > Keary/M
-5022a8209,8215
+5022a8211,8217
 > Keefe/RM
 > Keefer/M
 > Keelby/M
 > Keeley/M
 > Keelia/M
 > Keely/M
 > Keen/M
-5023a8217
+5023a8219
 > Keene/M
-5025a8220
+5025a8222
 > Keir/M
-5027a8223,8232
+5027a8225,8234
 > Kelbee/M
 > Kelby/M
 > Kelcey/M
 > Kelci/M
 > Kelcie/M
 > Kelcy/M
 > Kele/M
 > Kelila/M
 > Kellby/M
 > Kellen/M
-5030a8236
+5030a8238
 > Kellia/M
-5031a8238
+5031a8240
 > Kellina/M
-5032a8240
+5032a8242
 > Kellsie/M
-5033a8242
+5033a8244
 > Kellyann/M
-5034a8244,8245
+5034a8246,8247
 > Kelsi/M
 > Kelsy/M
-5036a8248
+5036a8250
 > Kelwin/M
-5039a8252
+5039a8254
 > Kendal/M
-5040a8254
+5040a8256
 > Kendell/M
-5042c8256,8257
+5042c8258,8259
 < Kendrick/M
 ---
 > Kendre/M
 > Kendrick/MS
-5043a8259,8260
+5043a8261,8262
 > Kenn/M
 > Kenna/M
-5046a8264,8265
+5046a8266,8267
 > Kennett/M
 > Kennie/M
-5048a8268
+5048a8270
 > Kenon/M
-5059a8280,8281
+5059a8282,8283
 > Ker/M
 > Kerby/M
-5061a8284,8287
+5061a8286,8289
 > Keriann/M
 > Kerianne/M
 > Kerk/M
 > Kermie/M
-5062a8289
+5062a8291
 > Kermy/M
-5066a8294,8296
+5066a8296,8298
 > Kerrie/M
 > Kerrill/M
 > Kerrin/M
-5067a8298,8304
+5067a8300,8306
 > Kerstin/M
 > Kerwin/M
 > Kerwinn/M
 > Kesley/M
 > Keslie/M
 > Kessia/M
 > Kessiah/M
-5068a8306,8310
+5068a8308,8312
 > Ketti/M
 > Kettie/M
 > Ketty/M
 > Kev/MN
 > Kevan/M
-5070a8313
+5070a8315
 > Kevina/M
-5071a8315
+5071a8317
 > Kevon/M
-5072a8317
+5072a8319
 > Kevyn/M
-5079a8325
+5079a8327
 > Khalil/M
-5094a8341,8343
+5094a8343,8345
 > Ki/M
 > Kiah/M
 > Kial/M
-5097a8347,8348
+5097a8349,8350
 > Kiele/M
 > Kienan/M
-5098a8350
+5098a8352
 > Kiersten/M
-5101a8354
+5101a8356
 > Kikelia/M
-5103a8357,8359
+5103a8359,8361
 > Kile/M
 > Kiley/M
 > Kilian/M
-5104a8361,8363
+5104a8363,8365
 > Killian/M
 > Killie/M
 > Killy/M
-5106a8366,8368
+5106a8368,8370
 > Kimball/M
 > Kimbell/M
 > Kimberlee/M
-5107a8370
+5107a8372
 > Kimberli/M
-5108a8372,8379
+5108a8374,8381
 > Kimberlyn/M
 > Kimble/M
 > Kimbra/M
 > Kimmi/M
 > Kimmie/M
 > Kimmy/M
 > Kin/M
 > Kincaid/M
-5109a8381,8382
+5109a8383,8384
 > Kingsley
 > Kingsly/M
-5112a8386
+5112a8388
 > Kinna/M
-5113a8388,8389
+5113a8390,8391
 > Kinnie/M
 > Kinny/M
-5115a8392
+5115a8394
 > Kinsley/M
-5118a8396,8403
+5118a8398,8405
 > Kipp/MR
 > Kippar/M
 > Kipper/M
 > Kippie/M
 > Kippy/M
 > Kira/M
 > Kirbee/M
 > Kirbie/M
-5124a8410
+5124a8412
 > Kiri/M
-5131a8418,8421
+5131a8420,8423
 > Kirsteni/M
 > Kirsti/M
 > Kirstin/M
 > Kirstyn/M
-5134a8425,8427
+5134a8427,8429
 > Kissee/M
 > Kissiah/M
 > Kissie/M
-5138a8432,8433
+5138a8434,8435
 > Kitti/M
 > Kittie/M
-5140a8436,8437
+5140a8438,8439
 > Kizzee/M
 > Kizzie/M
-5142a8440,8442
+5142a8442,8444
 > Klara/M
 > Klarika/M
 > Klarrisa/M
-5146a8447,8450
+5146a8449,8452
 > Klemens/M
 > Klement/M
 > Kleon/M
 > Kliment/M
-5172a8477
+5172a8479
 > Koenraad/M
-5183a8489,8493
+5183a8491,8495
 > Konstance/M
 > Konstantin/M
 > Konstantine/M
 > Konstanze/M
 > Koo/M
-5185a8496,8498
+5185a8498,8500
 > Kora/M
 > Koral/M
 > Koralle/M
-5187a8501,8502
+5187a8503,8504
 > Kordula/M
 > Kore/M
-5189a8505,8510
+5189a8507,8512
 > Korella/M
 > Koren/M
 > Koressa/M
 > Korey/M
 > Kori/M
 > Korie/M
-5190a8512,8515
+5190a8514,8517
 > Korney/M
 > Korrie/M
 > Korry/M
 > Kort/M
-5212a8538
+5212a8540
 > Krisha/M
-5213a8540
+5213a8542
 > Krishnah/M
-5214a8542,8544
+5214a8544,8546
 > Krispin/M
 > Krissie/M
 > Krissy/M
-5215a8546,8549
+5215a8548,8551
 > Kristal/M
 > Kristan/M
 > Kriste/M
 > Kristel/M
-5217c8551,8552
+5217c8553,8554
 < Kristi/M
 ---
 > Kristi/MN
 > Kristian/M
-5218a8554
+5218a8556
 > Kristien/M
-5221a8558,8562
+5221a8560,8564
 > Kristo/SM
 > Kristofer/M
 > Kristoffer/M
 > Kristofor/M
 > Kristoforo/M
-5223a8565
+5223a8567
 > Kristyn/M
-5230a8573
+5230a8575
 > Krysta/M
-5231a8575,8577
+5231a8577,8579
 > Krystalle/M
 > Krystle/M
 > Krystyna/M
-5259a8606
+5259a8608
 > Kyla/M
-5260a8608,8613
+5260a8610,8615
 > Kylen/M
 > Kylie/M
 > Kylila/M
 > Kylynn/M
 > Kym/M
 > Kynthia/M
-5262a8616
+5262a8618
 > Kyrstin/M
-5277c8631
+5277c8633
 < LG
 ---
 > LG/M
-5295a8650
+5295a8652
 > Lacee/M
-5297a8653
+5297a8655
 > Lacie/M
-5302a8659
+5302a8661
 > Laetitia/M
-5308a8666,8668
+5308a8668,8670
 > Laina/M
 > Lainey/M
 > Laird/M
-5315a8676
+5315a8678
 > Lalo/M
-5324a8686,8687
+5324a8688,8689
 > Lammond/M
 > Lamond/M
-5326a8690
+5326a8692
 > Lanae/M
-5337a8702,8703
+5337a8704,8705
 > Lanette/M
 > Laney/M
-5342a8709,8716
+5342a8711,8718
 > Langsdon/M
 > Langston/M
 > Lani/M
 > Lanie/M
 > Lanita/M
 > Lanna/M
 > Lanni/M
 > Lannie/M
-5352a8727
+5352a8729
 > Laraine/M
-5355a8731,8736
+5355a8733,8738
 > Lari/M
 > Larina/M
 > Larine/M
 > Larisa/M
 > Larissa/M
 > Lark/M
-5360a8742
+5360a8744
 > Laryssa/M
-5366a8749
+5366a8751
 > Latashia/M
-5367a8751
+5367a8753
 > Latia/M
-5373a8758,8759
+5373a8760,8761
 > Latrena/M
 > Latrina/M
-5378a8765,8766
+5378a8767,8768
 > Laughton
 > Launce/M
-5380a8769,8771
+5380a8771,8773
 > Lauraine/M
 > Laural/M
 > Lauralee/M
-5381a8773,8775
+5381a8775,8777
 > Laure/M
 > Lauree/M
 > Laureen/M
-5383c8777,8779
+5383c8779,8781
 < Lauren/M
 ---
 > Laurella/M
 > Lauren/SM
 > Laurena/M
-5384a8781
+5384a8783
 > Laurene/M
-5385a8783,8784
+5385a8785,8786
 > Lauretta/M
 > Laurette/M
-5386a8786,8787
+5386a8788,8789
 > Laurianne/M
 > Laurice/M
-5387a8789,8790
+5387a8791,8792
 > Lauritz/M
 > Lauryn/M
-5388a8792
+5388a8794
 > Lavena/M
-5389a8794
+5389a8796
 > Laverna/M
-5390a8796,8798
+5390a8798,8800
 > Lavina/M
 > Lavinia/M
 > Lavinie/M
-5392a8801
+5392a8803
 > Law
-5394a8804
+5394a8806
 > Lawry/M
-5395a8806,8807
+5395a8808,8809
 > Lawton/M
 > Lay/M
-5397a8810,8814
+5397a8812,8816
 > Layne/M
 > Layney/M
 > Layton/M
 > Lazar/M
 > Lazare/M
-5400c8817
+5400c8819
 < Le/SM
 ---
 > Le/SMN
-5407a8825
+5407a8827
 > Leandra/M
-5410a8829,8830
+5410a8831,8832
 > Leanor/M
 > Leanora/M
-5416a8837
+5416a8839
 > Lebbie/M
-5421a8843,8844
+5421a8845,8846
 > Leeann/M
 > Leeanne/M
-5422a8846,8851
+5422a8848,8853
 > Leela/M
 > Leelah/M
 > Leeland/M
 > Leena/M
 > Leesa/M
 > Leese/M
-5425a8855
+5425a8857
 > Lefty/M
-5429a8860
+5429a8862
 > Legra/M
-5431a8863
+5431a8865
 > Leia/M
-5436a8869,8870
+5436a8871,8872
 > Leigha/M
 > Leighton/M
-5437a8872
+5437a8874
 > Leilah/M
-5438a8874,8875
+5438a8876,8877
 > Leisha/M
 > Lek/M
-5439a8877
+5439a8879
 > Lelah/M
-5441a8880
+5441a8882
 > Lem/M
-5442a8882,8884
+5442a8884,8886
 > Lemar/M
 > Lemmie/M
 > Lemmy/M
-5447a8890,8892
+5447a8892,8894
 > Lenci/M
 > Lenee/M
 > Lenette/M
-5451a8897,8900
+5451a8899,8902
 > Lenka/M
 > Lenna/M
 > Lennard/M
 > Lennie/M
-5459a8909,8910
+5459a8911,8912
 > Leodora/M
 > Leoine/M
-5460a8912
+5460a8914
 > Leoline/M
-5462a8915
+5462a8917
 > Leonanie/M
-5465a8919
+5465a8921
 > Leone/M
-5466a8921,8923
+5466a8923,8925
 > Leonelle/M
 > Leonerd/M
 > Leonhard/M
-5468a8926
+5468a8928
 > Leonie/M
-5469a8928,8931
+5469a8930,8933
 > Leonora/M
 > Leonore/M
 > Leontine/M
 > Leontyne/M
-5471a8934
+5471a8936
 > Leora/M
-5475a8939
+5475a8941
 > Leroi/M
-5477a8942
+5477a8944
 > Leshia/M
-5478a8944
+5478a8946
 > Lesli/M
-5479a8946
+5479a8948
 > Lesly/M
-5484a8952
+5484a8954
 > Lesya/M
-5487a8956
+5487a8958
 > Lethia/M
-5488a8958
+5488a8960
 > Letisha/M
-5489a8960,8961
+5489a8962,8963
 > Letizia/M
 > Letta/M
-5490a8963,8967
+5490a8965,8969
 > Letti/M
 > Lettie/M
 > Letty/M
 > Leupold/M
 > Lev
-5492a8970
+5492a8972
 > Levey/M
-5494a8973
+5494a8975
 > Levin/M
-5497a8977
+5497a8979
 > Levon/M
-5499a8980,8981
+5499a8982,8983
 > Lewes
 > Lewie/M
-5501a8984,8987
+5501a8986,8989
 > Lewiss
 > Lexi/SM
 > Lexie/M
 > Lexine/M
-5503a8990,8993
+5503a8992,8995
 > Lexy/M
 > Leyla/M
 > Lezley/M
 > Lezlie/M
-5506a8997,9007
+5506a8999,9009
 > Lia/M
 > Liam/M
 > Lian/M
 > Liana/M
 > Liane/M
 > Lianna/M
 > Lianne/M
 > Lib
 > Libbey/M
 > Libbi/M
 > Libbie/M
-5515a9017
+5515a9019
 > Licha/M
-5516a9019
+5516a9021
 > Lida/M
-5522a9026
+5522a9028
 > Lief/M
-5523a9028
+5523a9030
 > Liesa/M
-5525,5526c9030,9033
+5525,5526c9032,9035
 < Lila/M
 < Lilia/M
 ---
 > Lil/MY
 > Lila/SM
 > Lilah/M
 > Lilia/MS
-5528a9036
+5528a9038
 > Liliane/M
-5530a9039
+5530a9041
 > Lilla/M
-5531a9041
+5531a9043
 > Lilli/MS
-5535a9046
+5535a9048
 > Lilllie/M
-5538a9050
+5538a9052
 > Lilyan/M
-5547a9060
+5547a9062
 > Linc/M
-5551a9065,9067
+5551a9067,9069
 > Lindi/M
 > Lindie/M
 > Lindon/M
-5553a9070
+5553a9072
 > Lindsy/M
-5554a9072,9077
+5554a9074,9079
 > Linea/M
 > Linell/M
 > Linet/M
 > Linette/M
 > Link/M
 > Linn/M
-5555a9079,9083
+5555a9081,9085
 > Linnea/M
 > Linnell/M
 > Linnet/M
 > Linnie/M
 > Linoel/M
-5560a9089
+5560a9091
 > Linzy/M
-5561a9091
+5561a9093
 > Lionello/M
-5566a9097
+5566a9099
 > Lira/M
-5567a9099,9100
+5567a9101,9102
 > Lisabeth/M
 > Lisbeth/M
-5568a9102,9108
+5568a9104,9110
 > Lise/M
 > Lisetta/M
 > Lisette/M
 > Lisha/M
 > Lishe/M
 > Lisle/M
 > Lissa/M
-5569a9110,9112
+5569a9112,9114
 > Lissi/M
 > Lissie/M
 > Lissy/M
-5573a9117
+5573a9119
 > Lita/M
-5577a9122,9124
+5577a9124,9126
 > Liuka/M
 > Liv/M
 > Liva/M
-5583a9131,9133
+5583a9133,9135
 > Livvie/M
 > Livvy/M
 > Livvyy/M
-5586a9137,9139
+5586a9139,9141
 > Lizabeth/M
 > Lizbeth/M
 > Lizette/M
-5591a9145
+5591a9147
 > Llywellyn/M
-5595a9150
+5595a9152
 > Lock/M
-5600a9156
+5600a9158
 > Lodovico/M
-5601a9158
+5601a9160
 > Loella/M
-5608a9166
+5608a9168
 > Loise/M
-5610a9169
+5610a9171
 > Loleta/M
-5613a9173
+5613a9175
 > Lolly/M
-5618a9179
+5618a9181
 > Lona/M
-5620a9182
+5620a9184
 > Lonee/M
-5624a9187,9190
+5624a9189,9192
 > Loni/M
 > Lonna/M
 > Lonnard/M
 > Lonni/M
-5625a9192
+5625a9194
 > Lonny/M
-5627a9195
+5627a9197
 > Lorain/M
-5628a9197,9200
+5628a9199,9202
 > Loralee/M
 > Loralie/M
 > Loralyn/M
 > Lorant/M
-5630a9203,9204
+5630a9205,9206
 > Loree/M
 > Loreen/M
-5632c9206,9207
+5632c9208,9209
 < Loren
 ---
 > Lorelle/M
 > Loren/S
-5636a9212
+5636a9214
 > Lorenza/M
-5638a9215
+5638a9217
 > Lorette/M
-5639a9217,9219
+5639a9219,9221
 > Loria/M
 > Lorianna/M
 > Lorianne/M
-5640a9221,9226
+5640a9223,9228
 > Lorilee/M
 > Lorilyn/M
 > Lorin/M
 > Lorinda/M
 > Lorine/M
 > Lorita/M
-5641a9228
+5641a9230
 > Lorne/M
-5642a9230
+5642a9232
 > Lorrayne/M
-5643a9232
+5643a9234
 > Lorri/M
-5644a9234,9236
+5644a9236,9238
 > Lorrin/M
 > Lorry/M
 > Lory/M
-5645a9238
+5645a9240
 > Lothaire/M
-5647a9241,9243
+5647a9243,9245
 > Lotta/M
 > Lotte/M
 > Lotti/M
-5648a9245
+5648a9247
 > Lotty/M
-5654a9252
+5654a9254
 > Louisette/M
-5659a9258
+5659a9260
 > Loutitia/M
-5663a9263
+5663a9265
 > Lovell
-5668a9269,9270
+5668a9271,9272
 > Lowrance/M
 > Loy/M
-5670a9273
+5670a9275
 > Loydie/M
-5681c9284,9285
+5681c9286,9287
 < Lucas
 ---
 > Luca/SM
 > Lucais/M
-5683c9287,9289
+5683c9289,9291
 < Lucia/M
 ---
 > Lucho/M
 > Luci/MN
 > Lucia/MS
-5684a9291
+5684a9293
 > Luciana/M
-5685a9293
+5685a9295
 > Lucie/M
-5686a9295
+5686a9297
 > Lucienne/M
-5687a9297
+5687a9299
 > Lucila/M
-5688a9299
+5688a9301
 > Lucilia/M
-5689a9301
+5689a9303
 > Lucina
-5690a9303
+5690a9305
 > Lucine/M
-5691a9305
+5691a9307
 > Lucita/M
-5694a9309
+5694a9311
 > Lucky/M
-5699a9315,9317
+5699a9317,9319
 > Ludovico/M
 > Ludovika/M
 > Ludvig/M
-5701a9320
+5701a9322
 > Luelle/M
-5708a9328,9329
+5708a9330,9331
 > Luise/M
 > Lukas/M
-5710a9332
+5710a9334
 > Lulita/M
-5717a9340,9341
+5717a9342,9343
 > Lura/M
 > Lurette/M
-5718a9343,9346
+5718a9345,9348
 > Lurleen/M
 > Lurlene/M
 > Lurline/M
 > Lusa/M
-5720a9349
+5720a9351
 > Lutero/M
-5731a9361
+5731a9363
 > Ly/MY
-5735a9366
+5735a9368
 > Lyda/M
-5737a9369,9370
+5737a9371,9372
 > Lydie/M
 > Lydon/M
-5742a9376
+5742a9378
 > Lyn/M
-5744a9379,9381
+5744a9381,9383
 > Lynde/M
 > Lyndel/M
 > Lyndell/M
-5745a9383,9389
+5745a9385,9391
 > Lyndsay/M
 > Lyndsey/M
 > Lyndsie/M
 > Lyndy/M
 > Lynea/M
 > Lynelle/M
 > Lynett/M
-5747a9392
+5747a9394
 > Lynna/M
-5748a9394,9398
+5748a9396,9400
 > Lynnea/M
 > Lynnell/M
 > Lynnelle/M
 > Lynnet/M
 > Lynnett/M
-5749a9400
+5749a9402
 > Lynsey/M
-5754a9406
+5754a9408
 > Lyssa/M
-5768c9420
+5768c9422
 < MHz
 ---
 > MHz/M
-5789a9442
+5789a9444
 > Mab
-5790a9444
+5790a9446
 > Mabelle/M
-5818a9473
+5818a9475
 > Mada/M
-5820a9476,9478
+5820a9478,9480
 > Madalena/M
 > Madalyn/M
 > Maddalena/M
-5821a9480,9481
+5821a9482,9483
 > Maddi/M
 > Maddie/M
-5822a9483
+5822a9485
 > Maddy/M
-5823a9485,9486
+5823a9487,9488
 > Madel/M
 > Madelaine/M
-5824a9488,9491
+5824a9490,9493
 > Madelena/M
 > Madelene/M
 > Madelin/M
 > Madelina/M
-5825a9493,9495
+5825a9495,9497
 > Madella/M
 > Madelle/M
 > Madelon/M
-5828a9499,9500
+5828a9501,9502
 > Madlen/M
 > Madlin/M
-5832a9505
+5832a9507
 > Mady/M
-5833a9507
+5833a9509
 > Maegan/M
-5836a9511,9514
+5836a9513,9516
 > Mag/M
 > Magda/M
 > Magdaia/M
 > Magdalen
-5840a9519,9520
+5840a9521,9522
 > Maggee/M
 > Maggi/M
-5841a9522
+5841a9524
 > Maggy/M
-5845a9527
+5845a9529
 > Magnum
-5852a9535,9536
+5852a9537,9538
 > Mahala/M
 > Mahalia/M
-5860a9545,9546
+5860a9547,9548
 > Mahmoud/M
 > Mahmud/M
-5862a9549,9550
+5862a9551,9552
 > Maia/M
 > Maible/M
-5863a9552,9553
+5863a9554,9555
 > Maiga/M
 > Maighdiln/M
-5870a9561,9563
+5870a9563,9565
 > Mair/M
 > Maire/M
 > Maisey/M
-5871a9565,9566
+5871a9567,9568
 > Maison/M
 > Maitilde/M
-5873a9569
+5873a9571
 > Maje/M
-5879a9576,9577
+5879a9578,9579
 > Mal
 > Mala/M
-5885a9584
+5885a9586
 > Malanie/M
-5894a9594
+5894a9596
 > Malchy/M
-5900a9601
+5900a9603
 > Malena/M
-5901a9603
+5901a9605
 > Malia/M
-5903a9606
+5903a9608
 > Malina/M
-5904a9608
+5904a9610
 > Malinde/M
-5905a9610,9611
+5905a9612,9613
 > Malissa/M
 > Malissia/M
-5906a9613
+5906a9615
 > Mallissa/M
-5907a9615
+5907a9617
 > Mallorie/M
-5909a9618
+5909a9620
 > Malorie/M
-5916a9626,9630
+5916a9628,9632
 > Malva/M
 > Malvin/M
 > Malvina/M
 > Malynda/M
 > Mame/M
-5932a9647
+5932a9649
 > Manda/M
-5934a9650
+5934a9652
 > Mandel/M
-5936a9653,9654
+5936a9655,9656
 > Mandi/M
 > Mandie/M
-5938a9657
+5938a9659
 > Mandriva/M
-5950a9670,9674
+5950a9672,9676
 > Mannie/M
 > Manny/M
 > Mano/M
 > Manolo/M
 > Manon/M
-5957a9682
+5957a9684
 > Manya/M
-5964c9689
+5964c9691
 < Mar/SM
 ---
 > Mar/SMN
-5965a9691
+5965a9693
 > Marabel/M
-5973a9700,9701
+5973a9702,9703
 > Marcela/M
 > Marcelia/M
-5975a9704,9708
+5975a9706,9710
 > Marcelle/M
 > Marcellina/M
 > Marcelline/M
 > Marcello/M
 > Marcellus
-5977a9711,9712
+5977a9713,9714
 > Marchall/M
 > Marchelle/M
-5981a9717,9718
+5981a9719,9720
 > Marcile/M
 > Marcille/M
-5987a9725,9731
+5987a9727,9733
 > Mareah/M
 > Maren/M
 > Marena/M
 > Maressa/M
 > Marga/M
 > Margalit/M
 > Margalo/M
-5988a9733,9738
+5988a9735,9740
 > Margareta/M
 > Margarete/M
 > Margaretha/M
 > Margarethe/M
 > Margaretta/M
 > Margarette/M
-5990a9741
+5990a9743
 > Margaux
-5991a9743
+5991a9745
 > Margeaux/M
-5992a9745,9747
+5992a9747,9749
 > Marget/M
 > Margette/M
 > Margi/M
-5993a9749
+5993a9751
 > Margit/M
-5994a9751
+5994a9753
 > Margot/M
-5997a9755
+5997a9757
 > Margy/M
-5999a9758
+5999a9760
 > Mariam/M
-6001a9761,9762
+6001a9763,9764
 > Mariann/M
 > Marianna/M
-6004a9766,9768
+6004a9768,9770
 > Maribelle/M
 > Maribeth/M
 > Marice/M
-6005a9770
+6005a9772
 > Maridel/M
-6006a9772,9777
+6006a9774,9779
 > Marieann/M
 > Mariejeanne/M
 > Mariel/M
 > Mariele/M
 > Marielle/M
 > Mariellen/M
-6007a9779,9786
+6007a9781,9788
 > Mariette/M
 > Marigold/M
 > Marijn/M
 > Marijo/M
 > Marika/M
 > Marilee/M
 > Marilin/M
 > Marillin/M
-6011a9791
+6011a9793
 > Marinna/M
-6013a9794
+6013a9796
 > Mariquilla/M
-6014a9796
+6014a9798
 > Mariska/M
-6016a9799
+6016a9801
 > Marita/M
-6017a9801
+6017a9803
 > Maritsa
-6020a9805,9810
+6020a9807,9812
 > Mariya/M
 > Marj/M
 > Marja/M
 > Marje/M
 > Marji/M
 > Marjie/M
-6022a9813
+6022a9815
 > Marjy/M
-6024a9816
+6024a9818
 > Marketa/M
-6025a9818
+6025a9820
 > Markos
-6026a9820
+6026a9822
 > Markus/M
-6027a9822
+6027a9824
 > Marlane/M
-6029a9825,9828
+6029a9827,9830
 > Marleah/M
 > Marlee/M
 > Marleen/M
 > Marlena/M
-6031a9831
+6031a9833
 > Marlie/M
-6032a9833,9834
+6032a9835,9836
 > Marline/M
 > Marlo/M
-6033a9836
+6033a9838
 > Marlow/M
-6034a9838,9839
+6034a9840,9841
 > Marlyn/M
 > Marmaduke/M
-6035a9841
+6035a9843
 > Marna/M
-6036a9843,9846
+6036a9845,9848
 > Marney/M
 > Marni/M
 > Marnia/M
 > Marnie/M
-6044a9855
+6044a9857
 > Marrilee/M
-6045a9857,9858
+6045a9859,9860
 > Marris/M
 > Marrissa/M
-6051a9865
+6051a9867
 > Marshal/M
-6052a9867,9868
+6052a9869,9870
 > Marsiella/M
 > Mart/MN
-6053a9870
+6053a9872
 > Martainn/M
-6054a9872,9874
+6054a9874,9876
 > Martelle/M
 > Marten/M
 > Martguerita/M
-6055a9876,9878
+6055a9878,9880
 > Marthe/M
 > Marthena/M
 > Marti/M
-6057a9881,9882
+6057a9883,9884
 > Martica/M
 > Martie/M
-6061a9887,9888
+6061a9889,9890
 > Martino/M
 > Martita/M
-6062a9890,9892
+6062a9892,9894
 > Martyn/M
 > Martynne/M
 > Marv/MN
-6063a9894
+6063a9896
 > Marve/M
-6064a9896
+6064a9898
 > Marven/M
-6065a9898
+6065a9900
 > Marwin/M
-6070a9904
+6070a9906
 > Marya/M
-6071a9906
+6071a9908
 > Maryanna/M
-6072a9908,9909
+6072a9910,9911
 > Marybelle/M
 > Marybeth/M
-6073a9911,9913
+6073a9913,9915
 > Maryjane/M
 > Maryjo/M
 > Maryl/M
-6074a9915,9917
+6074a9917,9919
 > Marylee/M
 > Marylin/M
 > Marylinda/M
-6075a9919,9922
+6075a9921,9924
 > Marylynne/M
 > Maryrose/M
 > Marys
 > Marysa/M
-6082a9930
+6082a9932
 > Masha/M
-6091a9940,9941
+6091a9942,9943
 > Massimiliano/M
 > Massimo/M
-6094c9944,9947
+6094c9946,9949
 < Mather
 ---
 > Mata/M
 > Matelda/M
 > Mateo/M
 > Mathe/MR
-6096a9950
+6096a9952
 > Mathian/M
-6097a9952,9953
+6097a9954,9955
 > Mathilda/M
 > Mathilde/M
-6098a9955
+6098a9957
 > Matias/M
-6099a9957
+6099a9959
 > Matilde/M
-6102a9961
+6102a9963
 > Matteo/M
-6103a9963,9964
+6103a9965,9966
 > Matthaeus/M
 > Mattheus/M
-6105a9967,9971
+6105a9969,9973
 > Matthieu/M
 > Matthiew/M
 > Matthus/M
 > Matti/M
 > Mattias/M
-6106a9973
+6106a9975
 > Matty/M
-6108a9976
+6108a9978
 > Maudie/M
-6112a9981
+6112a9983
 > Maure/M
-6113a9983,9984
+6113a9985,9986
 > Maureene/M
 > Maurene/M
-6116a9988
+6116a9990
 > Maurie/M
-6117a9990,9991
+6117a9992,9993
 > Maurise/M
 > Maurita/M
-6121a9996,9998
+6121a9998,10000
 > Maurits/M
 > Maurizia/M
 > Maurizio/M
-6123a10001
+6123a10003
 > Maury
-6126a10005
+6126a10007
 > Mavra/M
-6127a10007,10009
+6127a10009,10011
 > Maxi/M
 > Maxie/M
 > Maxim
-6128a10011,10013
+6128a10013,10015
 > Maximilianus/M
 > Maximilien/M
 > Maximo/M
-6130a10016
+6130a10018
 > Maxy/M
-6133a10020,10021
+6133a10022,10023
 > Maybelle/M
 > Maye/M
-6136a10025,10026
+6136a10027,10028
 > Mayne/M
 > Maynord/M
-6137a10028
+6137a10030
 > Mayor/M
-6203a10095
+6203a10097
 > Meaghan/M
-6204a10097
+6204a10099
 > Meara/M
-6205a10099
+6205a10101
 > Mechelle/M
-6216c10110
+6216c10112
 < Meg/M
 ---
 > Meg/MN
-6217a10112,10115
+6217a10114,10117
 > Megen/M
 > Meggi/M
 > Meggie/M
 > Meggy/M
-6218a10117,10119
+6218a10119,10121
 > Meghann/M
 > Mehetabel/M
 > Mei/MR
-6225c10126,10128
+6225c10128,10130
 < Mel/M
 ---
 > Mel/MY
 > Mela/M
 > Melamie/M
-6227a10131
+6227a10133
 > Melania/M
-6228a10133,10134
+6228a10135,10136
 > Melantha/M
 > Melany/M
-6233a10140,10143
+6233a10142,10145
 > Melesa/M
 > Melessa/M
 > Melicent/M
 > Melina/M
-6234a10145
+6234a10147
 > Melinde/M
-6236a10148,10150
+6236a10150,10152
 > Melisandra/M
 > Melisenda/M
 > Melisent/M
-6237a10152,10160
+6237a10154,10162
 > Melisse/M
 > Melita/M
 > Melitta/M
 > Mella/M
 > Melli/M
 > Mellicent/M
 > Mellie/M
 > Mellisa/M
 > Mellisent/M
-6238a10162,10165
+6238a10164,10167
 > Melloney/M
 > Melly/M
 > Melodee/M
 > Melodie/M
-6239a10167,10169
+6239a10169,10171
 > Melonie/M
 > Melony/M
 > Melosa/M
-6244a10175
+6244a10177
 > Melvyn/M
-6247a10179
+6247a10181
 > Menard/M
-6254a10187
+6254a10189
 > Mendie/M
-6256a10190
+6256a10192
 > Mendy/M
-6277a10212
+6277a10214
 > Merci/M
-6278a10214
+6278a10216
 > Mercie/M
-6281a10218,10219
+6281a10220,10221
 > Mercy/M
 > Meredeth/M
-6282a10221,10228
+6282a10223,10230
 > Meredithe/M
 > Merell/M
 > Meridel/M
 > Meridith/M
 > Meriel/M
 > Merilee/M
 > Merill/M
 > Merilyn/M
-6283a10230,10233
+6283a10232,10235
 > Meris
 > Merissa/M
 > Merl/M
 > Merla/M
-6285a10236,10237
+6285a10238,10239
 > Merlina/M
 > Merline/M
-6286a10239,10240
+6286a10241,10242
 > Merna/M
 > Merola/M
-6287a10242,10243
+6287a10244,10245
 > Merralee/M
 > Merrel/M
-6289a10246,10251
+6289a10248,10253
 > Merridie/M
 > Merrie/M
 > Merrielle/M
 > Merrile/M
 > Merrilee/M
 > Merrili/M
-6290a10253
+6290a10255
 > Merrily/M
-6292a10256,10257
+6292a10258,10259
 > Merry/M
 > Mersey
-6294a10260
+6294a10262
 > Merv/M
-6295a10262,10264
+6295a10264,10266
 > Merwin/M
 > Merwyn/M
 > Meryl/M
-6329a10299,10300
+6329a10301,10302
 > Mic
 > Micaela/M
-6333a10305,10308
+6333a10307,10310
 > Michaela/M
 > Michaelina/M
 > Michaeline/M
 > Michaella/M
-6334a10310,10312
+6334a10312,10314
 > Michail/M
 > Michal/M
 > Michale/M
-6335a10314
+6335a10316
 > Micheil/M
-6339a10319,10321
+6339a10321,10323
 > Michelina/M
 > Micheline/M
 > Michell/M
-6347a10330
+6347a10332
 > Micki/M
-6357a10341
+6357a10343
 > Midge/M
-6361a10346,10347
+6361a10348,10349
 > Mignon/M
 > Mignonne/M
-6362a10349,10352
+6362a10351,10354
 > Miguela/M
 > Miguelita/M
 > Mikael/M
 > Mikaela/M
-6363a10354,10355
+6363a10356,10357
 > Mikel/M
 > Mikey/M
-6364a10357,10358
+6364a10359,10360
 > Mikkel/M
 > Mikol/M
-6365a10360
+6365a10362
 > Mil/MY
-6370c10365,10367
+6370c10367,10369
 < Miles
 ---
 > Mildrid/M
 > Mile/SM
 > Milena/M
-6371a10369,10371
+6371a10371,10373
 > Milicent/M
 > Milissent/M
 > Milka/M
-6376a10377
+6376a10379
 > Milli/M
-6379a10381,10382
+6379a10383,10384
 > Millisent/M
 > Milly/M
-6383a10387
+6383a10389
 > Milt/M
-6384a10389
+6384a10391
 > Miltie/M
-6387a10393
+6387a10395
 > Milty/M
-6388a10395
+6388a10397
 > Milzie/M
-6391c10398,10399
+6391c10400,10401
 < Min/M
 ---
 > Min/MR
 > Mina/M
-6392a10401
+6392a10403
 > Minda/M
-6395a10405
+6395a10407
 > Miner/M
-6396a10407,10408
+6396a10409,10410
 > Minetta/M
 > Minette/M
-6398a10411,10413
+6398a10413,10415
 > Minna
 > Minnaminnie/M
 > Minne/M
-6402a10418
+6402a10420
 > Minni/M
-6403a10420,10421
+6403a10422,10423
 > Minnnie/M
 > Minny/M
-6405a10424
+6405a10426
 > Minor/M
-6410a10430
+6410a10432
 > Minta/M
-6414a10435
+6414a10437
 > Miquela/M
-6417a10439,10441
+6417a10441,10443
 > Mirabel/M
 > Mirabella/M
 > Mirabelle/M
-6418a10443
+6418a10445
 > Miran/M
-6419a10445,10448
+6419a10447,10450
 > Mireielle/M
 > Mireille/M
 > Mirella/M
 > Mirelle/M
-6421a10451,10452
+6421a10453,10454
 > Mirilla/M
 > Mirna/M
-6423a10455,10456
+6423a10457,10458
 > Mischa/M
 > Misha/M
-6425a10459
+6425a10461
 > Missie/M
-6433a10468
+6433a10470
 > Misti
-6436a10472
+6436a10474
 > Mitchael/M
-6457a10494,10496
+6457a10496,10498
 > Modesta/M
 > Modestia/M
 > Modestine/M
-6458a10498
+6458a10500
 > Modesty/M
-6469a10510,10511
+6469a10512,10513
 > Mohandas/M
 > Mohandis/M
-6475a10518
+6475a10520
 > Moina/M
-6477c10520
+6477c10522
 < Moises
 ---
 > Moise/MS
-6478a10522
+6478a10524
 > Moishe/M
-6486a10531,10532
+6486a10533,10534
 > Mollee/M
 > Molli/M
-6494a10541
+6494a10543
 > Mommy/M
-6498a10546
+6498a10548
 > Monah/M
-6510a10559
+6510a10561
 > Monika/M
-6514a10564
+6514a10566
 > Monro/M
-6535a10586
+6535a10588
 > Monti/M
-6549a10601
+6549a10603
 > Mora/M
-6553a10606,10607
+6553a10608,10609
 > Mord/M
 > Mordecai
-6554a10609
+6554a10611
 > Mordy/M
-6555a10611,10612
+6555a10613,10614
 > Moreen/M
 > Morena/M
-6556a10614
+6556a10616
 > Morey/M
-6557a10616,10621
+6557a10618,10623
 > Morgana/M
 > Morganica/M
 > Morganne/M
 > Morgen/M
 > Morgun/M
 > Moria/M
-6558a10623
+6558a10625
 > Morie/M
-6560a10626
+6560a10628
 > Morissa/M
-6561a10628,10629
+6561a10630,10631
 > Moritz/M
 > Morlee/M
-6562a10631
+6562a10633
 > Morly/M
-6564a10634
+6564a10636
 > Morna/M
-6570a10641
+6570a10643
 > Morrie/M
-6573a10645
+6573a10647
 > Morry/M
-6575c10647,10649
+6575c10649,10651
 < Mort/M
 ---
 > Mort/MN
 > Morten/M
 > Mortie/M
-6577a10652
+6577a10654
 > Morty/M
-6579a10655
+6579a10657
 > Mose/SM
-6582a10659
+6582a10661
 > Moshe/M
-6596a10674,10675
+6596a10676,10677
 > Moyna/M
 > Moyra/M
-6600c10679,10680
+6600c10681,10682
 < Mozilla/M
 ---
 > Mozelle/M
 > Mozes/M
-6608a10689,10691
+6608a10691,10693
 > Muffin/M
 > Mufi/M
 > Mufinella/M
-6613a10697
+6613a10699
 > Muire/M
-6628a10713
+6628a10715
 > Munmro/M
-6630a10716
+6630a10718
 > Munroe/M
-6637a10724,10726
+6637a10726,10728
 > Murdock/M
 > Mureil/M
 > Murial/M
-6638a10728
+6638a10730
 > Murielle/M
-6645a10736,10737
+6645a10738,10739
 > Murry/M
 > Murvyn/M
-6657a10750
+6657a10752
 > My/M
-6659a10753,10754
+6659a10755,10756
 > Myca/M
 > Mycah/M
-6662c10757,10758
+6662c10759,10760
 < Myers
 ---
 > Mychal/M
 > Myer/SM
-6664a10761
+6664a10763
 > Mylo/M
-6665a10763,10764
+6665a10765,10766
 > Myrah/M
 > Myranda/M
-6666a10766,10769
+6666a10768,10771
 > Myriam/M
 > Myrilla/M
 > Myrle/M
 > Myrlene/M
-6668a10772,10775
+6668a10774,10777
 > Myrta/M
 > Myrtia/M
 > Myrtice/M
 > Myrtie/M
-6669a10777,10778
+6669a10779,10780
 > Myrvyn/M
 > Myrwyn/M
-6670a10780
+6670a10782
 > MySpell/M
-6720a10831,10833
+6720a10833,10835
 > Nada/M
 > Nadean/M
 > Nadeen/M
-6723a10837,10839
+6723a10839,10841
 > Nadiya/M
 > Nady/M
 > Nadya/M
-6733a10850
+6733a10852
 > Nalani/M
-6738a10856
+6738a10858
 > Nana/M
-6739a10858,10861
+6739a10860,10863
 > Nananne/M
 > Nance/M
 > Nancee/M
 > Nancey/M
-6740a10863,10864
+6740a10865,10866
 > Nanci/M
 > Nancie/M
-6741a10866
+6741a10868
 > Nanete/M
-6742a10868,10870
+6742a10870,10872
 > Nani/M
 > Nanice/M
 > Nanine/M
-6744a10873,10874
+6744a10875,10876
 > Nannette/M
 > Nanni/M
-6745a10876,10877
+6745a10878,10879
 > Nanny/M
 > Nanon/M
-6749a10882
+6749a10884
 > Naoma/M
-6750a10884
+6750a10886
 > Nap/M
-6755a10890,10891
+6755a10892,10893
 > Nappie/M
 > Nappy/M
-6756a10893
+6756a10895
 > Nara
-6757a10895,10896
+6757a10897,10898
 > Nari/M
 > Nariko/M
-6767a10907,10911
+6767a10909,10913
 > Nata/M
 > Natal/M
 > Natala/M
 > Natale/M
 > Natalee/M
-6769a10914,10917
+6769a10916,10919
 > Natalina/M
 > Nataline/M
 > Natalya/M
 > Nataniel/M
-6770a10919
+6770a10921
 > Natassia/M
-6772a10922,10923
+6772a10924,10925
 > Nathalia/M
 > Nathalie/M
-6773a10925,10926
+6773a10927,10928
 > Nathanael
 > Nathanial/M
-6774a10928
+6774a10930
 > Nathanil/M
-6775a10930
+6775a10932
 > Natividad/M
-6776a10932,10933
+6776a10934,10935
 > Natka/M
 > Natty/M
-6800a10958,10963
+6800a10960,10965
 > Neala/M
 > Neale/M
 > Neall/M
 > Nealon/M
 > Nealson/M
 > Nealy/M
-6808a10972,10979
+6808a10974,10981
 > Neda/M
 > Nedda/M
 > Neddie/M
 > Neddy/M
 > Nedi/M
 > Neel/M
 > Neely/M
 > Nefen/M
-6818c10989,10994
+6818c10991,10996
 < Neil/M
 ---
 > Neil/SM
 > Neila/M
 > Neile/M
 > Neill/M
 > Neilla/M
 > Neille/M
-6819a10996,10997
+6819a10998,10999
 > Nelia/M
 > Nelie/M
-6820a10999,11000
+6820a11001,11002
 > Nelle/M
 > Nelli/M
-6822a11003
+6822a11005
 > Nels/N
-6834a11016,11017
+6834a11018,11019
 > Nerissa/M
 > Nerita/M
-6835a11019,11025
+6835a11021,11027
 > Neron/M
 > Nert/M
 > Nerta/M
 > Nerte/M
 > Nerti/M
 > Nertie/M
 > Nerty/M
-6837a11028
+6837a11030
 > Nessa/M
-6838a11030,11034
+6838a11032,11036
 > Nessi/M
 > Nessie/M
 > Nessy/M
 > Nesta/M
 > Nester/M
-6844c11040,11041
+6844c11042,11043
 < Netscape/M
 ---
 > Netta/M
 > Netti/M
-6845a11043,11044
+6845a11045,11046
 > Nettle/M
 > Netty/M
-6851a11051,11054
+6851a11053,11056
 > Nevil/M
 > Nevile/M
 > Neville/M
 > Nevin/MS
-6852a11056
+6852a11058
 > Nevsa/M
-6862a11067
+6862a11069
 > Neysa/M
-6866a11072,11073
+6866a11074,11075
 > Nial/M
 > Niall/M
-6875a11083
+6875a11085
 > Nichol/SM
-6878c11086
+6878c11088
 < Nichols
 ---
 > Nicholle/M
-6881a11090,11092
+6881a11092,11094
 > Nickey/M
 > Nicki/M
 > Nickie/M
-6883c11094,11099
+6883c11096,11101
 < Nickolas
 ---
 > Nicko/M
 > Nickola/SM
 > Nickolai/M
 > Nickolaus/M
 > Nicky/M
 > Nico/M
-6885a11102
+6885a11104
 > Nicol/M
-6886a11104
+6886a11106
 > Nicolai/S
-6887a11106,11111
+6887a11108,11113
 > Nicolea/M
 > Nicolette/M
 > Nicoli/SM
 > Nicolina/M
 > Nicoline/M
 > Nicolle/M
-6890c11114,11115
+6890c11116,11117
 < Nielsen
 ---
 > Niel/SM
 > Niels/N
-6899a11125
+6899a11127
 > Nikaniki/M
-6900a11127
+6900a11129
 > Niki/M
-6903a11131,11133
+6903a11133,11135
 > Nikkie/M
 > Niko/SM
 > Nikola/SM
-6904a11135,11136
+6904a11137,11138
 > Nikolaos/M
 > Nikolaus/M
-6905a11138,11140
+6905a11140,11142
 > Nikoletta/M
 > Nikolia/M
 > Nikolos/M
-6907c11142,11144
+6907c11144,11146
 < Nile/M
 ---
 > Nil/SM
 > Nile/SM
 > Nilson/M
-6910a11148,11149
+6910a11150,11151
 > Ninetta/M
 > Ninette/M
-6911a11151,11153
+6911a11153,11155
 > Ninnetta/M
 > Ninnette/M
 > Ninon/M
-6919a11162
+6919a11164
 > Nissa/M
-6920a11164,11166
+6920a11166,11168
 > Nisse/M
 > Nissie/M
 > Nissy/M
-6922a11169,11170
+6922a11171,11172
 > Niven/M
 > Nixie
-6926a11175
+6926a11177
 > Noach/M
-6927a11177,11180
+6927a11179,11182
 > Noak/M
 > Noam/M
 > Noami/M
 > Nobe/M
-6929a11183
+6929a11185
 > Nobie/M
-6930a11185
+6930a11187
 > Noby/M
-6932a11188,11190
+6932a11190,11192
 > Noelani/M
 > Noell/M
 > Noella/M
-6933a11192,11193
+6933a11194,11195
 > Noellyn/M
 > Noelyn/M
-6938a11199,11204
+6938a11201,11206
 > Nolana/M
 > Noland/M
 > Nolie/M
 > Noll/M
 > Nollie/M
 > Nolly/M
-6939a11206
+6939a11208
 > Nomi/M
-6940a11208,11212
+6940a11210,11214
 > Nonah/M
 > Noni/M
 > Nonie/M
 > Nonna/M
 > Nonnah/M
-6942a11215
+6942a11217
 > Norah/M
-6944a11218,11219
+6944a11220,11221
 > Norbie/M
 > Norby/M
-6945a11221
+6945a11223
 > Norean/M
-6946a11223
+6946a11225
 > Norene/M
-6948a11226,11227
+6948a11228,11229
 > Norina/M
 > Norine/M
-6952a11232,11233
+6952a11234,11235
 > Normie/M
 > Normy/M
-6954c11235,11237
+6954c11237,11239
 < Norris
 ---
 > Norri/MS
 > Norrie/M
 > Norry/M
-6973a11257
+6973a11259
 > Notre
-6979a11264
+6979a11266
 > Novelia/M
-6985a11271
+6985a11273
 > Nowell/M
-7001a11288,11289
+7001a11290,11291
 > Nydia/M
 > Nye/M
-7002a11291
+7002a11293
 > Nyssa/M
-7042c11331
+7042c11333
 < Ob/M
 ---
 > Ob/MD
-7043a11333,11335
+7043a11335,11337
 > Obadias/M
 > Obed/M
 > Obediah/M
-7046a11339,11341
+7046a11341,11343
 > Obidiah/M
 > Obie
 > Oby/M
-7057a11353
+7057a11355
 > Octavius/M
-7058a11355,11358
+7058a11357,11360
 > Ode/RM
 > Odele/M
 > Odelia/M
 > Odelinda/M
-7059a11360,11361
+7059a11362,11363
 > Odella/M
 > Odelle/M
-7062a11365,11370
+7062a11367,11372
 > Odetta/M
 > Odette/M
 > Odey/M
 > Odie/M
 > Odilia/M
 > Odille/M
-7064a11373
+7064a11375
 > Odo/M
-7065a11375
+7065a11377
 > Ody/M
-7071a11382
+7071a11384
 > Ofella/M
-7073a11385
+7073a11387
 > Ofilia/M
-7074a11387
+7074a11389
 > Ogdan/M
-7075a11389
+7075a11391
 > Ogdon/M
-7094a11409
+7094a11411
 > Olag/M
-7100a11416
+7100a11418
 > Ole/MV
-7102a11419,11420
+7102a11421,11422
 > Olenka/M
 > Olenolin/M
-7103a11422
+7103a11424
 > Olia/M
-7104a11424
+7104a11426
 > Olimpia/M
-7106a11427,11428
+7106a11429,11430
 > Olivero/M
 > Olivette/M
-7109c11431,11433
+7109c11433,11435
 < Olivier
 ---
 > Olivie/MR
 > Oliviero/M
 > Oliy/M
-7110a11435
+7110a11437
 > Olly/M
-7114a11440,11443
+7114a11442,11445
 > Olva/M
 > Olvan/M
 > Olwen/M
 > Olympe/M
-7118a11448
+7118a11450
 > Olympie/M
-7125a11456
+7125a11458
 > Omero/M
-7128a11460
+7128a11462
 > Ondrea/M
-7132a11465,11467
+7132a11467,11469
 > Onfre/M
 > Onfroi/M
 > Onida/M
-7134a11470
+7134a11472
 > Onofredo/M
-7139a11476
+7139a11478
 > Oona/M
-7141a11479,11480
+7141a11481,11482
 > Opalina/M
 > Opaline/M
-7143a11483
+7143a11485
 > Ophelie/M
-7148a11489,11493
+7148a11491,11495
 > Oralee/M
 > Oralia/M
 > Oralie/M
 > Oralla/M
 > Oralle/M
-7151a11497,11498
+7151a11499,11500
 > Orazio/M
 > Orbadiah/M
-7157a11505,11511
+7157a11507,11513
 > Orel
 > Orelee/M
 > Orelia/M
 > Orelie/M
 > Orella/M
 > Orelle/M
 > Oren/M
-7159a11514
+7159a11516
 > Oriana/M
-7167a11523,11524
+7167a11525,11526
 > Orlan/M
 > Orland/M
-7174c11531,11537
+7174c11533,11539
 < Orr/M
 ---
 > Orr/MN
 > Orran/M
 > Orren/M
 > Orrin/M
 > Orsa/M
 > Orsola/M
 > Orson/M
-7175a11539
+7175a11541
 > Ortensia/M
-7177a11542,11543
+7177a11544,11545
 > Orton/M
 > Orv/M
-7186a11553,11554
+7186a11555,11556
 > Osbourn/M
 > Osbourne/M
-7194a11563,11565
+7194a11565,11567
 > Osmond/M
 > Osmund/M
 > Ossie/M
-7198a11570,11574
+7198a11572,11576
 > Oswell/M
 > Otes
 > Otha/M
 > Othelia/M
 > Othella/M
-7199a11576,11578
+7199a11578,11580
 > Othilia/M
 > Othilie/M
 > Otho/M
-7201a11581
+7201a11583
 > Ottilie/M
-7217a11598
+7217a11600
 > Ozzy/M
-7264a11646,11648
+7264a11648,11650
 > Packston/M
 > Paco/M
 > Pacorro/M
-7265a11650,11651
+7265a11652,11653
 > Paddie/M
 > Paddy/M
-7266a11653,11654
+7266a11655,11656
 > Padget/M
 > Padgett/M
-7267a11656,11658
+7267a11658,11660
 > Padraic/M
 > Padraig/M
 > Padriac/M
-7272a11664
+7272a11666
 > Pail/M
-7288a11681
+7288a11683
 > Palin/MS
-7289a11683
+7289a11685
 > Pall/M
-7291c11685
+7291c11687
 < Palmer
 ---
 > Palm/MR
-7294a11689
+7294a11691
 > Paloma/M
-7297a11693,11694
+7297a11695,11696
 > Pamelina/M
 > Pamella/M
-7298a11696,11698
+7298a11698,11700
 > Pammi/M
 > Pammie/M
 > Pammy/M
-7303a11704,11705
+7303a11706,11707
 > Panchito/M
 > Pancho/M
-7307a11710
+7307a11712
 > Pansie/M
-7312a11716,11721
+7312a11718,11723
 > Paola/M
 > Paolina/M
 > Paolo/M
 > Papagena/M
 > Papageno/M
 > Paquito/M
-7325a11735
+7325a11737
 > Parke/M
-7335a11746,11747
+7335a11748,11749
 > Parrnell/M
 > Parry
-7341a11754
+7341a11756
 > Pascale/M
-7347c11760
+7347c11762
 < Pat
 ---
 > Pat/N
-7351a11765
+7351a11767
 > Paten/M
-7352a11767,11768
+7352a11769,11770
 > Patience/M
 > Patin/M
-7353a11770,11771
+7353a11772,11773
 > Paton
 > Patric/M
-7356a11775
+7356a11777
 > Patricio/M
-7357a11777,11779
+7357a11779,11781
 > Patrizia/M
 > Patrizio/M
 > Patrizius/M
-7358a11781
+7358a11783
 > Patten/M
-7360a11784,11785
+7360a11786,11787
 > Pattie/M
 > Pattin/M
-7364a11790,11791
+7364a11792,11793
 > Paule/M
 > Pauletta/M
-7366a11794,11795
+7366a11796,11797
 > Paulie/M
 > Paulina/M
-7367a11797,11799
+7367a11799,11801
 > Paulita/M
 > Paulo/M
 > Pauly/M
-7368a11801,11803
+7368a11803,11805
 > Pavel/M
 > Pavia/M
 > Pavla/M
-7372a11808,11809
+7372a11810,11811
 > Paxon/M
 > Paxton
-7375c11812
+7375c11814
 < Paypal/M
 ---
 > Payton/M
-7379a11817
+7379a11819
 > Peadar/M
-7380a11819
+7380a11821
 > Pearce/M
-7381a11821,11822
+7381a11823,11824
 > Pearla/M
 > Pearle/M
-7382a11824
+7382a11826
 > Pearline/M
-7384a11827
+7384a11829
 > Pebrook/M
-7388a11832
+7388a11834
 > Peder/M
-7392a11837,11839
+7392a11839,11841
 > Pegeen/M
 > Peggi/M
 > Peggie/M
-7395a11843
+7395a11845
 > Peirce/M
-7405c11853
+7405c11855
 < Penelope/M
 ---
 > Penelopa/M
-7408a11857,11858
+7408a11859,11860
 > Penni/M
 > Pennie/M
-7413a11864
+7413a11866
 > Penrod/M
-7422a11874,11876
+7422a11876,11878
 > Pepe/M
 > Pepi/M
 > Pepillo/M
-7423a11878,11879
+7423a11880,11881
 > Pepita/M
 > Pepito/M
-7426a11883
+7426a11885
 > Perceval
-7431a11889,11891
+7431a11891,11893
 > Peri/M
 > Peria/M
 > Perice/M
-7434c11894
+7434c11896
 < Perkins
 ---
 > Perkin/MS
-7435a11896,11897
+7435a11898,11899
 > Perla/M
 > Perle/M
-7438a11901
+7438a11903
 > Pernell/M
-7441a11905,11907
+7441a11907,11909
 > Perren/M
 > Perri/M
 > Perrine/M
-7449a11916
+7449a11918
 > Persis
-7453a11921,11922
+7453a11923,11924
 > Pet
 > Peta/M
-7458a11928,11930
+7458a11930,11932
 > Peterus/M
 > Petey/M
 > Petr/M
-7460a11933,11937
+7460a11935,11939
 > Petrina/M
 > Petronella/M
 > Petronia/M
 > Petronilla/M
 > Petronille/M
-7461a11939
+7461a11941
 > Petunia/M
-7462a11941,11942
+7462a11943,11944
 > Peyter/M
 > Peyton/M
-7467a11948
+7467a11950
 > Phaidra/M
-7473a11955,11956
+7473a11957,11958
 > Phebe
 > Phedra/M
-7474a11958
+7474a11960
 > Phelia/M
-7478a11963
+7478a11965
 > Philbert/M
-7481a11967,11968
+7481a11969,11970
 > Philipa/M
 > Philippa/M
-7484a11972
+7484a11974
 > Philis/M
-7485a11974,11975
+7485a11976,11977
 > Phillida/M
 > Phillie/M
-7487a11978,11980
+7487a11980,11982
 > Phillipe/M
 > Phillipp/M
 > Phillis/M
-7488a11982,11984
+7488a11984,11986
 > Philomena/M
 > Phineas/M
 > Phip/M
-7494a11991,11992
+7494a11993,11994
 > Photoshopped
 > Photoshopping
-7498a11997,11998
+7498a11999,12000
 > Phylis/M
 > Phyllida/M
-7499a12000,12002
+7499a12002,12004
 > Phyllys/M
 > Phylys/M
 > Pia/M
-7509a12013
+7509a12015
 > Pictor
-7510a12015
+7510a12017
 > Pier/M
-7511a12017
+7511a12019
 > Pierette/M
-7512a12019
+7512a12021
 > Pierrette/M
-7513a12021,12026
+7513a12023,12028
 > Pierson/M
 > Pieter/M
 > Pietra/M
 > Pietrek/M
 > Pietro/M
 > Piggy/M
-7520a12034,12035
+7520a12036,12037
 > Pincas/M
 > Pinchas/M
-7527a12043,12046
+7527a12045,12048
 > Piotr/M
 > Pip/MR
 > Piper/M
 > Pippa/M
-7528a12048,12049
+7528a12050,12051
 > Pippo/M
 > Pippy/M
-7559c12080
+7559c12082
 < Pleiades's
 ---
 > Pleiades/M
-7620a12142
+7620a12144
 > Poppy/M
-7626a12149
+7626a12151
 > Portie/M
-7631a12155
+7631a12157
 > Porty/M
-7639a12164
+7639a12166
 > Poul/M
-7647c12172
+7647c12174
 < Pr/M
 ---
 > Pr/MN
-7661a12187
+7661a12189
 > Pren/M
-7662a12189
+7662a12191
 > Prent/M
-7663a12191
+7663a12193
 > Prentiss/M
-7679a12208,12211
+7679a12210,12213
 > Prinz
 > Pris
 > Prisca/M
 > Priscella/M
-7680a12213
+7680a12215
 > Prissie/M
-7707a12241
+7707a12243
 > Pru/M
-7709a12244,12246
+7709a12246,12248
 > Prudi/M
 > Prudy/M
 > Prue/M
-7713a12251
+7713a12253
 > Pryce/M
-7727a12266
+7727a12268
 > Puff/M
-7751a12291
+7751a12293
 > Putnem/M
-7793a12334
+7793a12336
 > Queenie/M
-7795a12337
+7795a12339
 > Quent/M
-7796a12339
+7796a12341
 > Querida/M
-7798a12342,12344
+7798a12344,12346
 > Quill/M
 > Quillan/M
 > Quincey/M
-7799a12346
+7799a12348
 > Quinlan/M
-7800a12348,12350
+7800a12350,12352
 > Quint/M
 > Quinta/M
 > Quintana/M
-7801a12352,12354
+7801a12354,12356
 > Quintilla/M
 > Quintin/M
 > Quintina/M
-7802a12356
+7802a12358
 > Quintus/M
-7811c12365
+7811c12367
 < R/MD
 ---
 > R/MGD
-7841a12396
+7841a12398
 > Rab/M
-7842a12398
+7842a12400
 > Rabbi/M
-7844a12401
+7844a12403
 > Rabi
-7847a12405
+7847a12407
 > Rachele/M
-7850a12409
+7850a12411
 > Rad/M
-7851a12411,12412
+7851a12413,12414
 > Raddie/M
 > Raddy/M
-7852a12414,12416
+7852a12416,12418
 > Raeann/M
 > Raf/M
 > Rafa/M
-7853a12418,12427
+7853a12420,12429
 > Rafaela/M
 > Rafaelia/M
 > Rafaelita/M
 > Rafaellle/M
 > Rafaello/M
 > Rafe/M
 > Raff/M
 > Raffaello/M
 > Raffarty/M
 > Rafferty/M
-7854a12429,12430
+7854a12431,12432
 > Rafi/M
 > Ragnar/M
-7855a12432,12439
+7855a12434,12441
 > Rahal/M
 > Rahel/M
 > Raimondo/M
 > Raimund/M
 > Raimundo/M
 > Raina/M
 > Raine/MR
 > Rainer/M
-7856a12441
+7856a12443
 > Rakel/M
-7857a12443,12444
+7857a12445,12446
 > Ralf/M
 > Ralina/M
-7858a12446
+7858a12448
 > Ram
-7869a12458
+7869a12460
 > Ramonda/M
-7873a12463,12465
+7873a12465,12467
 > Rana/M
 > Rance/M
 > Rancell/M
-7874a12467
+7874a12469
 > Randa/M
-7876a12470
+7876a12472
 > Randee/M
-7877a12472
+7877a12474
 > Randene/M
-7878a12474,12475
+7878a12476,12477
 > Randie/M
 > Randolf/M
-7880a12478
+7880a12480
 > Ranee/M
-7881a12480,12483
+7881a12482,12485
 > Rani/M
 > Rania/M
 > Ranice/M
 > Ranique/M
-7883a12486,12488
+7883a12488,12490
 > Ranna/M
 > Ransell/M
 > Ransom/M
-7885a12491
+7885a12493
 > Raphaela/M
-7887a12494
+7887a12496
 > Raquela/M
-7889a12497,12498
+7889a12499,12500
 > Rasia/M
 > Rasla/M
-7897a12507,12510
+7897a12509,12512
 > Raven/M
 > Ravi/M
 > Ravid/M
 > Raviv/M
-7898a12512
+7898a12514
 > Rawley/M
-7901a12516,12517
+7901a12518,12519
 > Raychel/M
 > Raye/M
-7903a12520
+7903a12522
 > Raymund/M
-7904a12522,12527
+7904a12524,12529
 > Rayna/M
 > Raynard/M
 > Raynell/M
 > Rayner/M
 > Raynor/M
 > Rayshell/M
-7907a12531,12533
+7907a12533,12535
 > Rea/M
 > Read/GM
 > Reade
-7910a12537
+7910a12539
 > Reagen/M
-7911a12539
+7911a12541
 > Reamonn/M
-7914c12542,12546
+7914c12544,12548
 < Rebecca
 ---
 > Rebbecca/M
 > Rebe/M
 > Rebeca/M
 > Rebecka/M
 > Rebeka/M
-7915a12548
+7915a12550
 > Rebekkah/M
-7918a12552
+7918a12554
 > Redd/M
-7922a12557,12558
+7922a12559,12560
 > Ree/DSM
 > Reeba/M
-7923a12560
+7923a12562
 > Reece/M
-7924a12562
+7924a12564
 > Reena/M
-7925a12564,12565
+7925a12566,12567
 > Reeta/M
 > Reeva/M
-7928a12569,12572
+7928a12571,12574
 > Reg/N
 > Regan/M
 > Regen/M
 > Reggi/MS
-7929a12574
+7929a12576
 > Reggy/M
-7932a12578,12579
+7932a12580,12581
 > Reginauld/M
 > Regine/M
-7937c12584,12587
+7937c12586,12589
 < Reid
 ---
 > Reid/R
 > Reidar/M
 > Reider/M
 > Reiko/M
-7939c12589,12593
+7939c12591,12595
 < Reinaldo/M
 ---
 > Reina/M
 > Reinald/M
 > Reinaldo/SM
 > Reine/M
 > Reinhard/M
-7941a12596,12600
+7941a12598,12602
 > Reinold/M
 > Reinwald/M
 > Rem/M
 > Remanence/S
 > Remanent
-7945a12605
+7945a12607
 > Remy/M
-7946a12607,12608
+7946a12609,12610
 > Renado/M
 > Renae/M
-7947a12610,12611
+7947a12612,12613
 > Renaldo/M
 > Renard/M
-7948a12613,12616
+7948a12615,12618
 > Renata/M
 > Renate/M
 > Renato/M
 > Renaud/M
-7951a12620,12623
+7951a12622,12625
 > Renell/M
 > Renelle/M
 > Renie/M
 > Rennie/M
-7961a12634,12636
+7961a12636,12638
 > Reta/M
 > Retha/M
 > Reube/M
-7965a12641
+7965a12643
 > Reuven/M
-7970a12647
+7970a12649
 > Revkah/M
-7972a12650
+7972a12652
 > Rey/M
-7977c12655,12656
+7977c12657,12658
 < Reynolds
 ---
 > Reynard/M
 > Reynold/MS
-7980a12660
+7980a12662
 > Rheba/M
-7983a12664,12668
+7983a12666,12670
 > Rheta/M
 > Rhett/M
 > Rhetta/M
 > Rhiamon/M
 > Rhianna/M
-7984a12670
+7984a12672
 > Rhianon/M
-7987a12674
+7987a12676
 > Rhode
-7990a12678,12681
+7990a12680,12683
 > Rhodia/M
 > Rhodie/M
 > Rhody/M
 > Rhona/M
-7992a12684,12687
+7992a12686,12689
 > Rhys/M
 > Riane/M
 > Riannon/M
 > Rianon/M
-7993a12689,12691
+7993a12691,12693
 > Ric/M
 > Rica/M
 > Ricard/M
-7994a12693,12694
+7994a12695,12696
 > Ricca/M
 > Riccardo/M
-7997a12698
+7997a12700
 > Richardo/M
-7998a12700
+7998a12702
 > Richart/M
-8001a12704
+8001a12706
 > Richmound/M
-8003a12707,12708
+8003a12709,12710
 > Richy/M
 > Rici/M
-8004a12710
+8004a12712
 > Rickard/M
-8005a12712
+8005a12714
 > Rickert/M
-8006a12714
+8006a12716
 > Ricki/M
-8010a12719
+8010a12721
 > Ricoriki/M
-8022a12732,12734
+8022a12734,12736
 > Rik/M
 > Riki/M
 > Rikki/M
-8025a12738,12740
+8025a12740,12742
 > Rina/M
 > Rinaldo/M
 > Ring/M
-8028a12744,12746
+8028a12746,12748
 > Riobard/M
 > Riordan/M
 > Rip/M
-8029a12748
+8029a12750
 > Risa/M
-8032a12752
+8032a12754
 > Ritchie/M
-8034c12754,12755
+8034c12756,12757
 < Rivas
 ---
 > Riva/SM
 > Rivalee/M
-8037a12759
+8037a12761
 > Rivi/M
-8038a12761,12762
+8038a12763,12764
 > Rivkah/M
 > Rivy/M
-8042a12767,12769
+8042a12769,12771
 > Roana/M
 > Roanna/M
 > Roanne/M
-8044c12771,12775
+8044c12773,12777
 < Rob/M
 ---
 > Roarke/M
 > Rob/MZ
 > Robb/M
 > Robbert/M
 > Robbi/M
-8047a12779,12782
+8047a12781,12784
 > Robbyn/M
 > Robena/M
 > Robenia/M
 > Robers/M
-8055a12791,12796
+8055a12793,12798
 > Robina/M
 > Robinet/M
 > Robinett/M
 > Robinetta/M
 > Robinette/M
 > Robinia/M
-8060a12802
+8060a12804
 > Roby/M
-8062a12805
+8062a12807
 > Roch/M
-8065a12809,12810
+8065a12811,12812
 > Rochell/M
 > Rochella/M
-8067a12813
+8067a12815
 > Rochette/M
-8069a12816
+8069a12818
 > Rockey/M
-8070a12818
+8070a12820
 > Rockie/M
-8075a12824,12825
+8075a12826,12827
 > Roda/M
 > Rodd/M
-8076a12827,12830
+8076a12829,12832
 > Roddie/M
 > Roddy/M
 > Roderic/M
 > Roderich/M
-8077a12832,12833
+8077a12834,12835
 > Roderigo/M
 > Rodge/MZR
-8078a12835,12837
+8078a12837,12839
 > Rodham/M
 > Rodi/M
 > Rodie/M
-8079a12839
+8079a12841
 > Rodina/M
-8081a12842,12843
+8081a12844,12845
 > Rodolph/M
 > Rodolphe/M
-8084a12847
+8084a12849
 > Rodrique/M
-8087a12851
+8087a12853
 > Rog/MRZ
-8089c12853
+8089c12855
 < Roger/S
 ---
 > Rogerio/M
-8090a12855
+8090a12857
 > Roi/SM
-8094a12860
+8094a12862
 > Roldan/M
-8095a12862,12864
+8095a12864,12866
 > Roley/M
 > Rolf
 > Rolfe/M
-8098c12867,12869
+8098c12869,12871
 < Rollins
 ---
 > Rollie/M
 > Rollin/MS
 > Rollo
-8099a12871
+8099a12873
 > Rolph/M
-8101a12874,12875
+8101a12876,12877
 > Roma/M
 > Romain/M
-8116a12891,12893
+8116a12893,12895
 > Romola/M
 > Romona/M
 > Romonda/M
-8117a12895
+8117a12897
 > Romy/M
-8118a12897
+8118a12899
 > Rona/M
-8119a12899
+8119a12901
 > Ronalda/M
-8120a12901,12904
+8120a12903,12906
 > Ronica/M
 > Ronna/M
 > Ronni/M
 > Ronnica/M
-8124a12909,12910
+8124a12911,12912
 > Roobbie/M
 > Roomba/MS
-8128a12915,12918
+8128a12917,12920
 > Rora/M
 > Rori/M
 > Rorie/M
 > Rorke/M
-8130a12921
+8130a12923
 > Ros
-8131a12923,12926
+8131a12925,12928
 > Rosabel/M
 > Rosabella/M
 > Rosabelle/M
 > Rosaleen/M
-8132a12928
+8132a12930
 > Rosalia/M
-8135a12932,12933
+8135a12934,12935
 > Rosalinde/M
 > Rosaline/M
-8136a12935,12938
+8136a12937,12940
 > Rosalynd/M
 > Rosamond/M
 > Rosamund/M
 > Rosana/M
-8139a12942
+8139a12944
 > Rosco/M
-8142a12946,12947
+8142a12948,12949
 > Roseanna/M
 > Roseanne/M
-8144a12950,12952
+8144a12952,12954
 > Roselia/M
 > Roselin/M
 > Roseline/M
-8145a12954,12955
+8145a12956,12957
 > Roselle/M
 > Rosemaria/M
-8147a12958
+8147a12960
 > Rosemonde/M
-8149a12961
+8149a12963
 > Rosene/M
-8151a12964,12965
+8151a12966,12967
 > Rosette/M
 > Roshelle/M
-8153a12968,12969
+8153a12970,12971
 > Rosina/M
 > Rosita/M
-8154a12971
+8154a12973
 > Rosmunda/M
-8156a12974
+8156a12976
 > Rossie/M
-8157a12976
+8157a12978
 > Rossy/M
-8161a12981
+8161a12983
 > Rosy/M
-8170a12991
+8170a12993
 > Rouvin/M
-8171a12993,12994
+8171a12995,12996
 > Row/MN
 > Rowan/M
-8172a12996
+8172a12998
 > Rowen/M
-8175a13000,13003
+8175a13002,13005
 > Rowney/M
 > Roxana/M
 > Roxane/M
 > Roxanna/M
-8176a13005
+8176a13007
 > Roxi/M
-8177a13007
+8177a13009
 > Roxine/M
-8180a13011
+8180a13013
 > Royall/M
-8181a13013,13021
+8181a13015,13023
 > Roz/M
 > Rozalie/M
 > Rozalin/M
 > Rozamond/M
 > Rozanna/M
 > Rozanne/M
 > Roze/M
 > Rozele/M
 > Rozella/M
-8182a13023,13024
+8182a13025,13026
 > Rozina/M
 > Rriocard/M
-8186a13029
+8186a13031
 > Rube/M
-8187a13031,13033
+8187a13033,13035
 > Rubetta/M
 > Rubi/M
 > Rubia/M
-8188a13035
+8188a13037
 > Rubie/M
-8190a13038
+8190a13040
 > Rubina/M
-8193a13042,13046
+8193a13044,13048
 > Rudd/M
 > Ruddie/M
 > Ruddy/M
 > Rudie/M
 > Rudiger/M
-8194a13048
+8194a13050
 > Rudolfo/M
-8197a13052
+8197a13054
 > Rufe/M
-8199a13055
+8199a13057
 > Ruggiero/M
-8209a13066,13069
+8209a13068,13071
 > Ruperta/M
 > Ruperto/M
 > Ruprecht/M
 > Rurik
-8220a13081,13082
+8220a13083,13084
 > Rustie/M
 > Rustin/M
-8223c13085
+8223c13087
 < Rutgers
 ---
 > Rutger/MS
-8224a13087,13089
+8224a13089,13091
 > Ruthann/M
 > Ruthanne/M
 > Ruthe/M
-8225a13091
+8225a13093
 > Ruthi/M
-8226a13093
+8226a13095
 > Ruthy/M
-8227a13095,13097
+8227a13097,13099
 > Rutter/M
 > Ruttger/M
 > Ruy/M
-8233a13104,13105
+8233a13106,13107
 > Ryann/M
 > Rycca/M
-8235a13108,13109
+8235a13110,13111
 > Ryley/M
 > Ryon/M
-8237c13111,13112
+8237c13113,13114
 < S/MN
 ---
 > Ryun/M
 > S/MNY
-8285a13161
+8285a13163
 > Saba/M
-8291a13168
+8291a13170
 > Sabra
-8295a13173
+8295a13175
 > Sacha/M
-8297a13176
+8297a13178
 > Sada/M
-8301a13181
+8301a13183
 > Sadella/M
-8303a13184
+8303a13186
 > Sadye/M
-8311a13193
+8311a13195
 > Saidee/M
-8322a13205
+8322a13207
 > Salaidh/M
-8325a13209
+8325a13211
 > Saleem/M
-8327a13212
+8327a13214
 > Salim/M
-8332a13218,13219
+8332a13220,13221
 > Sallee/M
 > Salli/M
-8335a13223,13226
+8335a13225,13228
 > Sallyann/M
 > Sallyanne/M
 > Salmon/M
 > Saloma/M
-8336a13228,13231
+8336a13230,13233
 > Salomi/M
 > Salomo/M
 > Salomon/M
 > Salomone/M
-8343a13239
+8343a13241
 > Salvidor/M
-8349a13246
+8349a13248
 > Samaria
-8362a13260
+8362a13262
 > Samuele/M
-8371a13270,13274
+8371a13272,13276
 > Sande/MZR
 > Sander/M
 > Sanderson/M
 > Sandi/M
 > Sandie/M
-8372a13276
+8372a13278
 > Sandor/M
-8374a13279
+8374a13281
 > Sandro/M
-8375a13281
+8375a13283
 > Sandye/M
-8382a13289,13290
+8382a13291,13292
 > Sanson/M
 > Sansone/M
-8388a13297,13298
+8388a13299,13300
 > Sapphira
 > Sapphire/M
-8391a13302
+8391a13304
 > Saraann/M
-8394a13306
+8394a13308
 > Sarajane/M
-8400a13313,13316
+8400a13315,13318
 > Saree/M
 > Sarena/M
 > Sarene/M
 > Sarette/M
-8401a13318
+8401a13320
 > Sarge/M
-8403a13321,13324
+8403a13323,13326
 > Sari/M
 > Sarina/M
 > Sarine/M
 > Sarita/M
-8407a13329
+8407a13331
 > Sascha/M
-8408a13331
+8408a13333
 > Sashenka/M
-8422a13346
+8422a13348
 > Saudra/M
-8424c13348,13350
+8424c13350,13352
 < Saunders
 ---
 > Sauncho/M
 > Saunder/MS
 > Saunderson/M
-8427a13354
+8427a13356
 > Sauveur/M
-8429a13357
+8429a13359
 > Savina/M
-8433a13362
+8433a13364
 > Saw/M
-8434a13364,13366
+8434a13366,13368
 > Sawyere/M
 > Sax
 > Saxe/M
-8437c13369,13371
+8437c13371,13373
 < Sayers
 ---
 > Say/MRZ
 > Sayer/MS
 > Sayre/MS
-8444a13379
+8444a13381
 > Scarface/M
-8445a13381,13382
+8445a13383,13384
 > Scarlet/M
 > Scarlett/M
-8498a13436
+8498a13438
 > Scotti/M
-8518a13457
+8518a13459
 > Seamus/M
-8519a13459
+8519a13461
 > Seana/M
-8522a13463,13464
+8522a13465,13466
 > Sebastiano/M
 > Sebastien/M
-8528a13471
+8528a13473
 > See/M
-8537a13481,13482
+8537a13483,13484
 > Seka/M
 > Sela/M
-8538a13484
+8538a13486
 > Selby/M
-8540a13487,13488
+8540a13489,13490
 > Selene/M
 > Selestina/M
-8542a13491,13493
+8542a13493,13495
 > Selia/M
 > Selie/M
 > Selig/M
-8543a13495,13497
+8543a13497,13499
 > Selina/M
 > Selinda/M
 > Seline/M
-8545a13500,13501
+8545a13502,13503
 > Sella/M
 > Selle/MZ
-8554a13511
+8554a13513
 > Sena/M
-8567a13525
+8567a13527
 > Sephira/M
-8571a13530
+8571a13532
 > sequitur
-8576a13536
+8576a13538
 > Serene
-8577a13538,13539
+8577a13540,13541
 > Serge/M
 > Sergeant/M
-8578a13541
+8578a13543
 > Sergent/M
-8585a13549
+8585a13551
 > Seumas/M
-8600a13565,13566
+8600a13567,13568
 > Shadow/M
 > Shae/M
-8601a13568,13569
+8601a13570,13571
 > Shaina/M
 > Shaine/M
-8605a13574,13577
+8605a13576,13579
 > Shalna/M
 > Shalne/M
 > Shalom/M
 > Shamus/M
-8606a13579,13585
+8606a13581,13587
 > Shanan/M
 > Shanda/M
 > Shandee/M
 > Shandeigh/M
 > Shandie/M
 > Shandra/M
 > Shandy/M
-8608a13588,13589
+8608a13590,13591
 > Shani/M
 > Shanie/M
-8610a13592,13594
+8610a13594,13596
 > Shannah/M
 > Shannan/M
 > Shannen/M
-8611a13596,13598
+8611a13598,13600
 > Shanon/M
 > Shanta/M
 > Shantee/M
-8613a13601,13602
+8613a13603,13604
 > Shara/M
 > Sharai/M
-8615a13605
+8615a13607
 > Sharia/M
-8616a13607,13610
+8616a13609,13612
 > Sharity/M
 > Sharl/M
 > Sharla/M
 > Sharleen/M
-8617a13612
+8617a13614
 > Sharline/M
-8618a13614
+8618a13616
 > Sharona/M
-8621a13618
+8621a13620
 > Sharyl/M
-8622a13620
+8622a13622
 > Shaughn/M
-8631a13630,13636
+8631a13632,13638
 > Shay/M
 > Shayla/M
 > Shaylah/M
 > Shaylyn/M
 > Shaylynn/M
 > Shayna/M
 > Shayne/M
-8635a13641,13643
+8635a13643,13645
 > Sheela/M
 > Sheelagh/M
 > Sheelah/M
-8636a13645
+8636a13647
 > Sheeree/M
-8637a13647,13648
+8637a13649,13650
 > Sheff/M
 > Sheffie/M
-8638a13650
+8638a13652
 > Sheffy/M
-8639a13652,13657
+8639a13654,13659
 > Sheilah/M
 > Shel/MY
 > Shela/M
 > Shelagh/M
 > Shelba/M
 > Shelbi/M
-8640a13659
+8640a13661
 > Shelden/M
-8644a13664,13665
+8644a13666,13667
 > Shelli/M
 > Shellie/M
-8646a13668,13669
+8646a13670,13671
 > Shem/M
 > Shena/M
-8649a13673
+8649a13675
 > Shep/M
-8652a13677,13678
+8652a13679,13680
 > Shepperd/M
 > Sher/M
-8657a13684,13687
+8657a13686,13689
 > Sherie/M
 > Sherill/M
 > Sherilyn/M
 > Sherline/M
-8658a13689,13690
+8658a13691,13692
 > Sherlocke/M
 > Sherm/M
-8659a13692,13693
+8659a13694,13695
 > Shermie/M
 > Shermy/M
-8663a13698
+8663a13700
 > Sherwin/M
-8664a13700,13701
+8664a13702,13703
 > Sherwynd/M
 > Sherye/M
-8675a13713
+8675a13715
 > Shina/M
-8678a13717
+8678a13719
 > Shir/M
-8679a13719,13722
+8679a13721,13724
 > Shirl/M
 > Shirlee/M
 > Shirleen/M
 > Shirlene/M
-8680a13724
+8680a13726
 > Shirline/M
-8682a13727
+8682a13729
 > Sholom/M
-8684a13730,13731
+8684a13732,13733
 > Shoshana/M
 > Shoshanna/M
-8692a13740,13742
+8692a13742,13744
 > Shurlock/M
 > Shurlocke/M
 > Shurwood/M
-8698a13749,13755
+8698a13751,13757
 > Siana/M
 > Sianna/M
 > Sib/M
 > Sibbie/M
 > Sibby/M
 > Sibeal/M
 > Sibel/M
-8699a13757,13758
+8699a13759,13760
 > Sibella/M
 > Sibelle/M
-8701a13761,13762
+8701a13763,13764
 > Sibilla/M
 > Sibley/M
-8702a13764,13765
+8702a13766,13767
 > Sibylla/M
 > Sibylle/M
-8706a13770
+8706a13772
 > Sidnee/M
-8707a13772,13774
+8707a13774,13776
 > Sidoney/M
 > Sidonia/M
 > Sidonnie/M
-8711a13779,13784
+8711a13781,13786
 > Siffre/M
 > Sig
 > Sigfrid/M
 > Sigfried/M
 > Sigismond/M
 > Sigismondo/M
-8712a13786
+8712a13788
 > Sigismundo/M
-8713a13788
+8713a13790
 > Sigrid/M
-8714a13790
+8714a13792
 > Sigvard/M
-8722a13799,13800
+8722a13801,13802
 > Sile/M
 > Sileas/M
-8725a13804,13809
+8725a13806,13811
 > Silvain/M
 > Silvan/M
 > Silvana/M
 > Silvano/M
 > Silvanus/M
 > Silvester/M
-8726a13811,13813
+8726a13813,13815
 > Silvie/M
 > Silvio/M
 > Sim/SM
-8727a13815
+8727a13817
 > Simeon/M
-8728a13817
+8728a13819
 > Simmonds/M
-8730a13820
+8730a13822
 > Simona/M
-8731a13822,13823
+8731a13824,13825
 > Simonette/M
 > Simonne/M
-8736a13829
+8736a13831
 > Sinclare/M
-8737a13831
+8737a13833
 > Sindee/M
-8745a13840
+8745a13842
 > Siobhan/M
-8746a13842
+8746a13844
 > Siouxie/M
-8748a13845,13848
+8748a13847,13850
 > Sisely/M
 > Sisile/M
 > Sissie/M
 > Sissy/M
-8752a13853
+8752a13855
 > Siusan/M
-8754a13856
+8754a13858
 > Siward/M
-8755a13858,13859
+8755a13860,13861
 > Skell/M
 > Skelly/M
-8756a13861,13864
+8756a13863,13866
 > Skip/M
 > Skipp/MR
 > Skipper/M
 > Skippie/M
-8757a13866
+8757a13868
 > Skipton/M
-8758a13868
+8758a13870
 > Sky/M
-8760a13871,13872
+8760a13873,13874
 > Skylar/M
 > Skyler/M
-8762a13875
+8762a13877
 > Slade/M
-8778a13892
+8778a13894
 > Sly/M
-8785a13900
+8785a13902
 > Smitty/M
-8809a13925
+8809a13927
 > Sofie/M
-8811c13927
+8811c13929
 < Sol/M
 ---
 > Sol/MY
-8812a13929,13930
+8812a13931,13932
 > Sollie/M
 > Solly/M
-8818a13937
+8818a13939
 > Somerset
-8827a13947,13949
+8827a13949,13951
 > Sonni/M
 > Sonnie/M
 > Sonnnie/M
-8832a13955,13956
+8832a13957,13958
 > Sophey/M
 > Sophi/M
-8836a13961
+8836a13963
 > Sophronia/M
-8838a13964
+8838a13966
 > Sorcha/M
-8839a13966
+8839a13968
 > Sosanna/M
-8847c13974
+8847c13976
 < Southerner/M
 ---
 > Southerner/SM
-8875a14003
+8875a14005
 > Spense/RM
-8881a14010
+8881a14012
 > Spike/M
-8903a14033,14034
+8903a14035,14036
 > Stace/M
 > Stacee/M
-8905a14037
+8905a14039
 > Stacia/M
-8908a14041,14042
+8908a14043,14044
 > Stafani/M
 > Staffard/M
-8909a14044
+8909a14046
 > Staford/M
-8916c14051,14052
+8916c14053,14054
 < Stan/M
 ---
 > Stan/MY
 > Standford/M
-8917a14054
+8917a14056
 > Stanfield/M
-8918a14056,14057
+8918a14058,14059
 > Stanislas/M
 > Stanislaus/M
-8919a14059,14060
+8919a14061,14062
 > Stanislaw/M
 > Stanleigh/M
-8920a14062
+8920a14064
 > Stanly/M
-8921a14064
+8921a14066
 > Stanwood/M
-8922a14066
+8922a14068
 > Star/M
-8925a14070,14072
+8925a14072,14074
 > Starla/M
 > Starlene/M
 > Starlin/M
-8929a14077
+8929a14079
 > Stavro/MS
-8933a14082,14083
+8933a14084,14085
 > Stearn/M
 > Stearne/M
-8934a14085
+8934a14087
 > Stefa/M
-8935a14087
+8935a14089
 > Stefania/M
-8936a14089,14093
+8936a14091,14095
 > Stefano/M
 > Steffane/M
 > Steffen/M
 > Steffi/M
 > Steffie/M
-8944a14102
+8944a14104
 > Stepha/M
-8945a14104,14105
+8945a14106,14107
 > Stephana/M
 > Stephani/M
-8946a14107,14108
+8946a14109,14110
 > Stephannie/M
 > Stephanus/M
-8947a14110
+8947a14112
 > Stephenie/M
-8948a14112,14114
+8948a14114,14116
 > Stephi/M
 > Stephie/M
 > Stephine/M
-8952a14119
+8952a14121
 > Stesha/M
-8954a14122
+8954a14124
 > Stevana/M
-8956a14125
+8956a14127
 > Stevena/M
-8958a14128,14129
+8958a14130,14131
 > Stevy/M
 > Steward/M
-8960a14132,14133
+8960a14134,14135
 > Stillman/M
 > Stillmann/M
-8963a14137
+8963a14139
 > Stinky/M
-8967a14142
+8967a14144
 > Stoddard/M
-8975a14151,14154
+8975a14153,14156
 > Storm/M
 > Stormi/M
 > Stormie/M
 > Stormy/M
-9007a14187
+9007a14189
 > Suellen/M
-9015a14196,14197
+9015a14198,14199
 > Sukey/M
 > Suki/M
-9018a14201
+9018a14203
 > Sula/M
-9022a14206
+9022a14208
 > Sully
-9039a14224
+9039a14226
 > Sunny/M
-9040a14226
+9040a14228
 > Sunshine/M
-9055a14242,14243
+9055a14244,14245
 > Susanetta/M
 > Susann/M
-9056a14245
+9056a14247
 > Susannah/M
-9057a14247,14248
+9057a14249,14250
 > Susette/M
 > Susi/M
-9060a14252,14253
+9060a14254,14255
 > Susy/M
 > Sutherlan/M
-9064a14258,14259
+9064a14260,14261
 > Suzann/M
 > Suzanna/M
-9067a14263,14264
+9067a14265,14266
 > Suzi/M
 > Suzie/M
-9071a14269
+9071a14271
 > Svend/M
-9087a14286
+9087a14288
 > Swen/M
-9094a14294,14300
+9094a14296,14302
 > Sybila/M
 > Sybilla/M
 > Sybille/M
 > Sybyl/M
 > Syd/M
 > Sydel/M
 > Sydelle/M
-9096a14303,14304
+9096a14305,14306
 > Sylas/M
 > Sylvan/M
-9099a14308,14309
+9099a14310,14311
 > Syman/M
 > Symon/M
-9120a14331
+9120a14333
 > TEirtza/M
-9121a14333
+9121a14335
 > THz/M
-9135a14348
+9135a14350
 > Tab/MR
-9137a14351,14357
+9137a14353,14359
 > Tabb/M
 > Tabbatha/M
 > Tabbi/M
 > Tabbie/M
 > Tabbitha/M
 > Tabby/M
 > Taber/M
-9138a14359
+9138a14361
 > Tabina/M
-9139a14361
+9139a14363
 > Tabor
-9143a14366,14372
+9143a14368,14374
 > Tadd/M
 > Taddeo/M
 > Taddeusz/M
 > Tadeas/M
 > Tadeo/M
 > Tades
 > Tadio/M
-9147a14377
+9147a14379
 > Taffy/M
-9155a14386
+9155a14388
 > Tailor/M
-9159a14391,14392
+9159a14393,14394
 > Tait/M
 > Taite/M
-9164a14398
+9164a14400
 > Talbert/M
-9165a14400
+9165a14402
 > Talia/M
-9171a14407,14408
+9171a14409,14410
 > Tallia/M
 > Tallie/M
-9172a14410,14412
+9172a14412,14414
 > Tallou/M
 > Tallulah/M
 > Tally/M
-9175a14416,14419
+9175a14418,14421
 > Talya/M
 > Talyah/M
 > Tam/M
 > Tamar/M
-9176a14421,14423
+9176a14423,14425
 > Tamarah/M
 > Tamarra/M
 > Tamas
-9181a14429
+9181a14431
 > Tamiko/M
-9182a14431
+9182a14433
 > Tamma/M
-9183a14433
+9183a14435
 > Tammara/M
-9189a14440
+9189a14442
 > Tamqrah/M
-9191a14443,14444
+9191a14445,14446
 > Tan
 > Tana
-9192a14446,14448
+9192a14448,14450
 > Tandi/M
 > Tandie/M
 > Tandy/M
-9196a14453,14454
+9196a14455,14456
 > Tanhya/M
 > Tani/M
-9198a14457,14458
+9198a14459,14460
 > Tanitansy/M
 > Tann/MR
-9199a14460
+9199a14462
 > Tanney/M
-9200a14462,14464
+9200a14464,14466
 > Tannie/M
 > Tanny/M
 > Tansy/M
-9208a14473
+9208a14475
 > Tarah/M
-9216a14482,14484
+9216a14484,14486
 > Tarra/M
 > Tarrah/M
 > Tarrance/M
-9219a14488
+9219a14490
 > Taryn/M
-9222a14492
+9222a14494
 > Tasia/M
-9228a14499,14500
+9228a14501,14502
 > Tatiana/M
 > Tatiania/M
-9231a14504,14505
+9231a14506,14507
 > Tawnya/M
 > Tawsha/M
-9239a14514
+9239a14516
 > Teador/M
-9243a14519,14522
+9243a14521,14524
 > Tedd/M
 > Tedda/M
 > Teddi/M
 > Teddie/M
-9244a14524,14529
+9244a14526,14531
 > Tedi/M
 > Tedie/M
 > Tedman/M
 > Tedmund/M
 > Tedra/M
 > Teena/M
-9255a14541
+9255a14543
 > Temp/M
-9257a14544,14545
+9257a14546,14547
 > Temple/M
 > Templeton/M
-9262a14551,14555
+9262a14553,14557
 > Teodoor/M
 > Teodor/M
 > Teodora/M
 > Teodorico/M
 > Teodoro/M
-9263a14557
+9263a14559
 > Tera/M
-9264a14559
+9264a14561
 > Terencio/M
-9265a14561
+9265a14563
 > Terese/M
-9266a14563,14565
+9266a14565,14567
 > Teresina
 > Teresita/M
 > Teressa/M
-9267a14567
+9267a14569
 > Teriann/M
-9273a14574
+9273a14576
 > Terrel/M
-9277a14579,14580
+9277a14581,14582
 > Terrijo/M
 > Terrill/M
-9280a14584,14585
+9280a14586,14587
 > Terrye/M
 > Tersina/M
-9281a14587
+9281a14589
 > Terza/M
-9284a14591
+9284a14593
 > Tessi/M
-9285a14593
+9285a14595
 > Tessy/M
-9296a14605
+9296a14607
 > Thacher/M
-9299a14609,14610
+9299a14611,14612
 > Thaddus/M
 > Thadeus/M
-9301a14613,14614
+9301a14615,14616
 > Thain/M
 > Thaine/M
-9304a14618
+9304a14620
 > Thane/M
-9310c14624,14627
+9310c14626,14629
 < Thatcher
 ---
 > Thatch/MR
 > Thatcherism
 > Thaxter/M
 > Thayne/M
-9311a14629,14630
+9311a14631,14632
 > Theadora/M
 > Thebault/M
-9312a14632,14634
+9312a14634,14636
 > Theda/M
 > Thedric/M
 > Thedrick/M
-9313a14636
+9313a14638
 > Thekla/M
-9315a14639,14641
+9315a14641,14643
 > The
 > Theo/M
 > Theobald/M
-9316a14643
+9316a14645
 > Theodor/M
-9319a14647
+9319a14649
 > Theodosia/M
-9324a14653,14656
+9324a14655,14658
 > Theresina/M
 > Theresita/M
 > Theressa/M
 > Therine/M
-9333a14666,14668
+9333a14668,14670
 > Thia/M
 > Thibaud/M
 > Thibaut/M
-9336a14672,14673
+9336a14674,14675
 > Thom/M
 > Thoma/SM
-9337a14675,14678
+9337a14677,14680
 > Thomasa/M
 > Thomasin/M
 > Thomasina/M
 > Thomasine/M
-9344a14686,14689
+9344a14688,14691
 > Thorin/M
 > Thorn
 > Thorndike
 > Thornie/M
-9345a14691
+9345a14693
 > Thorny/M
-9347a14694,14696
+9347a14696,14698
 > Thorstein/M
 > Thorsten/M
 > Thorvald/M
-9354d14702
+9354d14704
 < Thunderbird/M
-9359a14708,14709
+9359a14710,14711
 > Thurstan/M
 > Thurston/M
-9367a14718
+9367a14720
 > Tibold/M
-9370a14722,14724
+9370a14724,14726
 > Tiebold/M
 > Tiebout/M
 > Tiena/M
-9372a14727,14731
+9372a14729,14733
 > Tierney/M
 > Tiertza/M
 > Tiff/M
 > Tiffani/M
 > Tiffanie/M
-9373a14733,14735
+9373a14735,14737
 > Tiffi/M
 > Tiffie/M
 > Tiffy/M
-9375a14738,14742
+9375a14740,14744
 > Tilda/M
 > Tildi/M
 > Tildie/M
 > Tildy/M
 > Tiler/M
-9376a14744
+9376a14746
 > Tillie/M
-9377a14746
+9377a14748
 > Tilly/M
-9381a14751,14753
+9381a14753,14755
 > Timi/M
 > Timmi/M
 > Timmie/M
-9382a14755
+9382a14757
 > Timofei/M
-9384a14758,14761
+9384a14760,14763
 > Timoteo/M
 > Timothea/M
 > Timothee/M
 > Timotheus/M
-9388a14766
+9388a14768
 > Tine/M
-9393a14772,14774
+9393a14774,14776
 > Tiphani/M
 > Tiphanie/M
 > Tiphany/M
-9400a14782,14783
+9400a14784,14785
 > Tirrell/M
 > Tish/M
-9408c14791
+9408c14793
 < Tito/M
 ---
 > Tito/SM
-9414a14798,14804
+9414a14800,14806
 > Tobe/M
 > Tobey
 > Tobi/M
 > Tobiah/M
 > Tobias/M
 > Tobie/M
 > Tobin/M
-9416a14807
+9416a14809
 > Tobye/M
-9420a14812,14813
+9420a14814,14815
 > Toddie/M
 > Toddy/M
-9422a14816,14817
+9422a14818,14819
 > Toiboid/M
 > Toinette/M
-9434c14829,14832
+9434c14831,14834
 < Tomas
 ---
 > Toma/SM
 > Tomasina/M
 > Tomasine/M
 > Tomaso/M
-9435a14834,14836
+9435a14836,14838
 > Tome/M
 > Tomi/M
 > Tomkin/M
-9436a14838
+9436a14840
 > Tommi/M
-9444a14847,14848
+9444a14849,14850
 > Tonie/M
 > Tonnie/M
-9447a14852,14853
+9447a14854,14855
 > Tonye/M
 > Tootsie/M
-9451a14858,14862
+9451a14860,14864
 > Tore/M
 > Torey/M
 > Tori/M
 > Torie/M
 > Torin/M
-9453a14865
+9453a14867
 > Torr/MX
-9454a14867,14868
+9454a14869,14870
 > Torre/SM
 > Torrence/M
-9456a14871
+9456a14873
 > Torrey/M
-9457a14873,14875
+9457a14875,14877
 > Torrie/M
 > Torrin/M
 > Torry/M
-9466a14885,14887
+9466a14887,14889
 > Tova/M
 > Tove/M
 > Town/M
-9467a14889,14890
+9467a14891,14892
 > Towney/M
 > Townie/M
-9468a14892
+9468a14894
 > Towny/M
-9471a14896,14897
+9471a14898,14899
 > Trace/M
 > Tracee/M
-9483a14910
+9483a14912
 > Traver/MS
-9485a14913
+9485a14915
 > Travus/M
-9487a14916
+9487a14918
 > Trefor/M
-9488a14918,14921
+9488a14920,14923
 > Tremain/M
 > Tremaine/M
 > Tremayne/M
 > Trenna/M
-9490a14924,14928
+9490a14926,14930
 > Tresa/M
 > Trescha/M
 > Tressa/M
 > Trev/MR
 > Trevar/M
-9491a14930
+9491a14932
 > Trever/M
-9504a14944
+9504a14946
 > Trip/M
-9506a14947
+9506a14949
 > Tripp/M
-9507a14949,14950
+9507a14951,14952
 > Tris
 > Trish/M
-9508a14952,14953
+9508a14954,14955
 > Trista/M
 > Tristam/M
-9510a14956,14959
+9510a14958,14961
 > Trix/M
 > Trixi/M
 > Trixie/M
 > Trixy/M
-9518a14968
+9518a14970
 > Trstram/M
-9519a14970,14971
+9519a14972,14973
 > Truda/M
 > Trude/M
-9520a14973,14975
+9520a14975,14977
 > Trudey/M
 > Trudi/M
 > Trudie/M
-9521a14977
+9521a14979
 > Trueman/M
-9523a14980,14981
+9523a14982,14983
 > Trula/M
 > Trumaine/M
-9524a14983
+9524a14985
 > Trumann/M
-9537a14997
+9537a14999
 > Tuck/R
-9538a14999,15000
+9538a15001,15002
 > Tuckie/M
 > Tucky/M
-9546a15009,15010
+9546a15011,15012
 > Tulley/M
 > Tully/M
-9590a15055
+9590a15057
 > Twyla/M
-9591a15057,15059
+9591a15059,15061
 > Tybalt/M
 > Tybi/M
 > Tybie/M
-9592a15061
+9592a15063
 > Tye/M
-9594a15064,15066
+9594a15066,15068
 > Tymon/M
 > Tymothy/M
 > Tynan/M
-9596a15069
+9596a15071
 > Tyne/M
-9601a15075
+9601a15077
 > Tyrus/M
-9609a15084
+9609a15086
 > UI/MS
-9638a15114
+9638a15116
 > Udale/M
-9639a15116
+9639a15118
 > Udell/M
-9642a15120
+9642a15122
 > Ugo/M
-9646a15125
+9646a15127
 > Ula/M
-9647a15127,15137
+9647a15129,15139
 > Ulberto/M
 > Ulick/M
 > Ulises/M
 > Ulla/M
 > Ulric/M
 > Ulrica/M
 > Ulrich/M
 > Ulrick/M
 > Ulrika/M
 > Ulrikaumeko/M
 > Ulrike/M
-9651a15142
+9651a15144
 > Umberto/M
-9652a15144,15145
+9652a15146,15147
 > Umeko/M
 > Una/M
-9672a15166
+9672a15168
 > Urbain/M
-9673a15168,15169
+9673a15170,15171
 > Urbano/M
 > Urbanus/M
-9675a15172
+9675a15174
 > Uri/SM
-9680a15178,15180
+9680a15180,15182
 > Ursala/M
 > Ursola/M
 > Urson/M
-9681a15182
+9681a15184
 > Ursulina/M
-9687a15189
+9687a15191
 > Uta/M
-9723a15226,15227
+9723a15228,15229
 > Vachel/M
 > Vaclav/M
-9726c15230,15233
+9726c15232,15235
 < Val/M
 ---
 > Vail/M
 > Val/MY
 > Valaree/M
 > Valaria/M
-9727a15235
+9727a15237
 > Valdemar/M
-9728a15237,15238
+9728a15239,15240
 > Vale/M
 > Valeda/M
-9729a15240,15241
+9729a15242,15243
 > Valene/M
 > Valenka/M
-9730a15243,15244
+9730a15245,15246
 > Valentia/M
 > Valentijn/M
-9731a15246
+9731a15248
 > Valentina/M
-9734a15250
+9734a15252
 > Valera
-9738a15255
+9738a15257
 > Valerye/M
-9739a15257,15258
+9739a15259,15260
 > Valida/M
 > Valina/M
-9741a15261
+9741a15263
 > Valle/M
-9743a15264,15267
+9743a15266,15269
 > Valli/M
 > Vallie/M
 > Vally/M
 > Valma/M
-9745a15270
+9745a15272
 > Valry/M
-9749a15275
+9749a15277
 > Vanda/M
-9754a15281,15285
+9754a15283,15287
 > Vania/M
 > Vanna/M
 > Vanni/M
 > Vannie/M
 > Vanny/M
-9755a15287
+9755a15289
 > Vanya/M
-9760a15293,15294
+9760a15295,15296
 > Vasili/MS
 > Vasily/M
-9762a15297,15298
+9762a15299,15300
 > Vassili/M
 > Vassily/M
-9780a15317
+9780a15319
 > Velvet/M
-9784a15322
+9784a15324
 > Venita/M
-9790a15329
+9790a15331
 > Veradis
-9793a15333,15336
+9793a15335,15338
 > Vere/M
 > Verena/M
 > Verene/M
 > Verge/M
-9794a15338,15341
+9794a15340,15343
 > Veriee/M
 > Verile/M
 > Verina/M
 > Verine/M
-9795a15343
+9795a15345
 > Verla/M
-9800c15348
+9800c15350
 < Vern/M
 ---
 > Vern/MN
-9802a15351,15353
+9802a15353,15355
 > Vernen/M
 > Verney/M
 > Vernice/M
-9803a15355
+9803a15357
 > Vernor/M
-9806a15359,15361
+9806a15361,15363
 > Veronika/M
 > Veronike/M
 > Veronique
-9813a15369,15370
+9813a15371,15372
 > Vevay/M
 > Vi/M
-9818a15376
+9818a15378
 > Vick/M
-9822a15381
+9822a15383
 > Victoir/M
-9827a15387
+9827a15389
 > Vida/M
-9828a15389,15390
+9828a15391,15392
 > Vidovic/M
 > Vidovik/M
-9837a15400
+9837a15402
 > Viki/M
-9838a15402,15403
+9838a15404,15405
 > Vikki/M
 > Vikky/M
-9839a15405
+9839a15407
 > Vilhelmina/M
-9845a15412,15413
+9845a15414,15415
 > Vin/M
 > Vina/M
-9847c15415,15417
+9847c15417,15419
 < Vincent/M
 ---
 > Vincent/MS
 > Vincenty/M
 > Vincenz/M
-9848a15419,15422
+9848a15421,15424
 > Vinita/M
 > Vinni/M
 > Vinnie/M
 > Vinny/M
-9850a15425,15426
+9850a15427,15428
 > Violante/M
 > Viole/M
-9851a15428,15430
+9851a15430,15432
 > Violetta/M
 > Violette/M
 > Virge/M
-9853a15433,15434
+9853a15435,15436
 > Virgilio/M
 > Virgina/M
-9855a15437
+9855a15439
 > Virginie/M
-9863a15446,15448
+9863a15448,15450
 > Vita/M
 > Vite/M
 > Vitia/M
-9865a15451,15453
+9865a15453,15455
 > Vitoria
 > Vittoria/M
 > Vittorio/M
-9866a15455,15456
+9866a15457,15458
 > Viv/M
 > Viva/M
-9868a15459,15460
+9868a15461,15462
 > Vivi/MN
 > Vivia/M
-9869a15462,15467
+9869a15464,15469
 > Viviana/M
 > Vivianna/M
 > Vivianne/M
 > Vivie/M
 > Vivien/M
 > Viviene/M
-9870a15469,15471
+9870a15471,15473
 > Viviyan/M
 > Vivyan/M
 > Vivyanne/M
-9871a15473
+9871a15475
 > Vladamir/M
-9885a15488
+9885a15490
 > Von/M
-9887a15491,15493
+9887a15493,15495
 > Vonni/M
 > Vonnie/M
 > Vonny/M
-9895a15502
+9895a15504
 > Vyky/M
-9899c15506
+9899c15508
 < WASP/M
 ---
 > WASP/SM
-9917a15525
+9917a15527
 > Wadsworth/M
-9921a15530,15532
+9921a15532,15534
 > Wain/M
 > Wainwright/M
 > Wait/MR
-9922a15534
+9922a15536
 > Waiter/M
-9923a15536
+9923a15538
 > Wakefield
-9930a15544
+9930a15546
 > Waldon/M
-9938a15553,15554
+9938a15555,15556
 > Wallache/M
 > Wallas/M
-9939a15556
+9939a15558
 > Wallie/M
-9940a15558
+9940a15560
 > Walliw/M
-9941a15560
+9941a15562
 > Wally/M
-9945a15565
+9945a15567
 > Walther/M
-9946a15567
+9946a15569
 > Waly/M
-9948a15570,15572
+9948a15572,15574
 > Wandie/M
 > Wandis/M
 > Waneta/M
-9949a15574
+9949a15576
 > Wanids/M
-9951c15576,15577
+9951c15578,15579
 < Ward
 ---
 > Ward/N
 > Warde/M
-9963d15588
+9963d15590
 < Wasp
-9964a15590
+9964a15592
 > Wat/MZ
-9976a15603,15610
+9976a15605,15612
 > Waverley/M
 > Waverly/M
 > Way/M
 > Waylan/M
 > Wayland/M
 > Waylen/M
 > Waylin/M
 > Waylon/M
-9989a15624,15625
+9989a15626,15627
 > Weidar/M
 > Weider/M
-9995a15632,15633
+9995a15634,15635
 > Welbie/M
 > Welby/M
-10006a15645,15648
+10006a15647,15650
 > Wenda/M
 > Wendall/M
 > Wendel/M
 > Wendeline/M
-10008a15651
+10008a15653
 > Wendie/M
-10009a15653,15658
+10009a15655,15660
 > Wendye/M
 > Wenona/M
 > Wenonah/M
 > Werner/M
 > Wernher/M
 > Wes
-10015a15665,15666
+10015a15667,15668
 > Westbrook/M
 > Westbrooke/M
-10017a15669,15670
+10017a15671,15672
 > Westleigh/M
 > Westley/M
-10021a15675
+10021a15677
 > Weylin/M
-10031a15686
+10031a15688
 > Whit
-10032a15688
+10032a15690
 > Whitby/M
-10043a15700
+10043a15702
 > Whittaker/M
-10044a15702
+10044a15704
 > Wiatt/M
-10057a15716
+10057a15718
 > Wilburt/M
-10060a15720,15723
+10060a15722,15725
 > Wilden/M
 > Wildon/M
 > Wileen/M
 > Wilek/M
-10065a15729
+10065a15731
 > Wilfrid/M
-10067a15732,15733
+10067a15734,15735
 > Wilhelmine
 > Wilie/M
-10073a15740
+10073a15742
 > Willabella/M
-10074a15742
+10074a15744
 > Willamina/M
-10075a15744,15745
+10075a15746,15747
 > Willdon/M
 > Willem/M
-10076a15747,15750
+10076a15749,15752
 > Willetta/M
 > Willette/M
 > Willey/M
 > Willi/MS
-10080a15755
+10080a15757
 > Willow/M
-10081a15757
+10081a15759
 > Willyt/M
-10082a15759
+10082a15761
 > Wilmar/M
-10083a15761
+10083a15763
 > Wilmette/M
-10084a15763,15765
+10084a15765,15767
 > Wilona/M
 > Wilone/M
 > Wilow/M
-10086a15768
+10086a15770
 > Wilt/M
-10089a15772
+10089a15774
 > Win/M
-10093a15777
+10093a15779
 > Windham/M
-10097a15782
+10097a15784
 > Windy/M
-10098a15784
+10098a15786
 > Winfield/M
-10100a15787,15788
+10100a15789,15790
 > Wini/M
 > Winifield/M
-10102a15791,15794
+10102a15793,15796
 > Winn/M
 > Winna/M
 > Winnah/M
 > Winne/M
-10103a15796
+10103a15798
 > Winni/M
-10104a15798
+10104a15800
 > Winnifred/M
-10105a15800,15803
+10105a15802,15805
 > Winny/M
 > Winona/M
 > Winonah/M
 > Winslow/M
-10113a15812
+10113a15814
 > Wit/M
-10115a15815,15816
+10115a15817,15818
 > Wittie/M
 > Witty/M
-10123a15825,15826
+10123a15827,15828
 > Wolfie/M
 > Wolfy/M
-10133a15837,15838
+10133a15839,15840
 > Woodie/M
 > Woodman
-10136a15842
+10136a15844
 > Woody/M
-10144a15851
+10144a15853
 > Worden/M
-10147a15855,15857
+10147a15857,15859
 > Worth
 > Worthington/M
 > Worthy/M
-10153a15864
+10153a15866
 > Wrennie/M
-10159a15871
+10159a15873
 > Wyatan/M
-10163c15875
+10163c15877
 < Wyeth
 ---
 > Wye/H
-10164a15877,15879
+10164a15879,15881
 > Wylma/M
 > Wyn/M
 > Wyndham/M
-10165a15881,15883
+10165a15883,15885
 > Wynne/M
 > Wynnie/M
 > Wynny/M
-10177a15896
+10177a15898
 > Xaviera/M
-10178a15898
+10178a15900
 > Xena/M
-10181a15902
+10181a15904
 > Xenos
-10183a15905
+10183a15907
 > Xever/M
-10188a15911
+10188a15913
 > Ximenez/M
-10193a15917,15919
+10193a15919,15921
 > Xylia/M
 > Xylina/M
 > Xymenes/M
-10209a15936
+10209a15938
 > Yalonda/M
-10215a15943,15946
+10215a15945,15948
 > Yanaton/M
 > Yance/M
 > Yancey/M
 > Yancy/M
-10223a15955,15956
+10223a15957,15958
 > Yard/M
 > Yardley/M
-10225a15959,15960
+10225a15961,15962
 > Yasmeen/M
 > Yasmin/M
-10230a15966,15967
+10230a15968,15969
 > Yehudi/M
 > Yehudit/M
-10231a15969
+10231a15971
 > Yelena/M
-10241a15980,15983
+10241a15982,15985
 > Yetta/M
 > Yettie/M
 > Yetty/M
 > Yevette/M
-10245a15988,15989
+10245a15990,15991
 > Ynes/M
 > Ynez/M
-10250a15995,15997
+10250a15997,15999
 > Yolande/M
 > Yolane/M
 > Yolanthe/M
-10253c16000,16003
+10253c16002,16005
 < York/M
 ---
 > Yorgo/MS
 > York/MR
 > Yorke/M
 > Yorker/M
-10258a16009,16010
+10258a16011,16012
 > Yoshi/M
 > Yoshiko/M
-10262a16015
+10262a16017
 > Yovonnda/M
-10264a16018
+10264a16020
 > Ysabel/M
-10271a16026
+10271a16028
 > Yul/M
-10273a16029
+10273a16031
 > Yulma/M
-10276a16033
+10276a16035
 > Yurik/M
-10278a16036
+10278a16038
 > Yvon/M
-10280c16038,16043
+10280c16040,16045
 < Z/SMNXT
 ---
 > Yvor/M
 > Z/SDMNXT
 > Zabrina/M
 > Zaccaria/M
 > Zach
 > Zacharia/SM
-10281a16045
+10281a16047
 > Zacharie/M
-10282a16047
+10282a16049
 > Zacherie/M
-10283a16049,16050
+10283a16051,16052
 > Zack/M
 > Zackariah/M
-10284a16052
+10284a16054
 > Zahara/M
-10286a16055
+10286a16057
 > Zak/M
-10292a16062
+10292a16064
 > Zandra/M
-10293a16064
+10293a16066
 > Zaneta/M
-10300a16072
+10300a16074
 > Zarah/M
-10301a16074,16080
+10301a16076,16082
 > Zared/M
 > Zaria/M
 > Zarla/M
 > Zea/M
 > Zealand/M
 > Zeb/M
 > Zebadiah/M
-10302a16082,16083
+10302a16084,16085
 > Zebulen/M
 > Zebulon/M
-10303a16085
+10303a16087
 > Zed/M
-10307a16090
+10307a16092
 > Zelda/M
-10310a16094
+10310a16096
 > Zena/M
-10311a16096
+10311a16098
 > Zenia/M
-10315a16101
+10315a16103
 > Zerk/M
-10321a16108
+10321a16110
 > Zia/M
-10325a16113
+10325a16115
 > Zilvia/M
-10333a16122,16123
+10333a16124,16125
 > Zita/M
 > Zitella/M
-10336a16127
+10336a16129
 > Zollie/M
-10337a16129
+10337a16131
 > Zolly/M
-10339a16132,16139
+10339a16134,16141
 > Zonda/M
 > Zondra/M
 > Zonnya/M
 > Zora/M
 > Zorah/M
 > Zorana/M
 > Zorina/M
 > Zorine/M
-10346a16147
+10346a16149
 > Zsazsa/M
-10350a16152
+10350a16154
 > Zulema/M
-10354a16157
+10354a16159
 > Zuzana/M
-10460a16264
+10460a16266
 > abridgement/MS
-10488a16293,16294
+10488a16295,16296
 > absorbance/S
 > absorbancy/M
-10665a16472
+10665a16474
 > acknowledgement/MS
-10824c16631
+10824c16633
 < admin/S
 ---
 > admin/MS
-10936a16744
+10936a16746
 > advocator/SM
-11045c16853
+11045c16855
 < afterward
 ---
 > afterward/S
-11393d17200
+11393d17202
 < altho
-11579a17387
+11579a17389
 > analyses
-11631c17439
+11631c17441
 < anecdotal
 ---
 > anecdotal/Y
-11804c17612
+11804c17614
 < anthropomorphizing
 ---
 > anthropomorphize/DSG
-11983c17791
+11983c17793
 < app/S
 ---
 > app/MS
-12137a17946
+12137a17948
 > archaeology/M
-12152c17961
+12152c17963
 < archeological
 ---
 > archeological/Y
-12432c18241
+12432c18243
 < assignees
 ---
 > assignee/MS
-12685c18494
+12685c18496
 < auteur
 ---
 > auteur/MS
-12713a18523
+12713a18525
 > autocomplete/S
-12754a18565
+12754a18567
 > avant-garde
-12827d18637
+12827d18639
 < awol
-12829a18640
+12829a18642
 > axe/M
-13864a19676
+13864a19678
 > biodiesel/M
-14210d20021
+14210d20023
 < blueing's
-14434a20246
+14434a20248
 > bookselling
-14841c20653
+14841c20655
 < broadcast/AMGS
 ---
 > broadcast/AMGSD
-15039,15040c20851
+15039,15040c20853
 < bullshitter's
 < bullshitter/S!
 ---
 > bullshitter/SM!
-15230d21040
+15230d21042
 < byelaw/SM
-15383d21192
+15383d21194
 < callisthenics/M
-15460a21270,21272
+15460a21272,21274
 > cancelled/U
 > canceller/M
 > cancelling
-15559a21372
+15559a21374
 > capita
-15629,15630d21441
+15629,15630d21443
 < carburetter/SM
 < carburettor/SM
-15701a21513
+15701a21515
 > carnitas
-15788d21599
+15788d21601
 < cashpoint/S
-15797d21607
+15797d21609
 < cassino/M
-15832a21643
+15832a21645
 > catalyses
-15940d21750
+15940d21752
 < caviare/M
-16372c22182
+16372c22184
 < chickenshit/S!
 ---
 > chickenshit/SM!
-16404c22214
+16404c22216
 < children
 ---
 > children/M
-16488d22297
+16488d22299
 < chlorophyl/M
-16629,16630c22438
+16629,16630c22440
 < cider's
 < cider/S
 ---
 > cider/MS
-17072d22879
+17072d22881
 < cocain/M
-17102,17103c22909
+17102,17103c22911
 < cocksucker's
 < cocksucker/S!
 ---
 > cocksucker/SM!
-17755c23561
+17755c23563
 < confer/S
 ---
 > confer/SB
-17800a23607
+17800a23609
 > conformant
-18151d23957
+18151d23959
 < convenor/S
-18206c24012
+18206c24014
 < cookie/M
 ---
 > cookie/SM
-18467a24274
+18467a24276
 > could've
-19035a24843
+19035a24845
 > cul-de-sac
-19246c25054
+19246c25056
 < cysteine
 ---
 > cysteine/M
-20196,20197c26004,26005
+20196,20197c26006,26007
 < dialog/SM
 < dialogue/SM
 ---
 > dialog/SMGD
 > dialogue/SMRGD
-20481a26290
+20481a26292
 > disclose/DSG
-20830c26639
+20830c26641
 < dogie/M
 ---
 > dogie/SM
-20895a26705
+20895a26707
 > donator/MS
-21820a27631
+21820a27633
 > elicitor/MS
-22071a27883
+22071a27885
 > encyclopaedia
-22556a28369
+22556a28371
 > estoppel
-22638c28451
+22638c28453
 < euthanize
 ---
 > euthanize/DSG
-22719a28533
+22719a28535
 > exabyte/MS
-22947a28762
+22947a28764
 > experimentalism
-23207,23208d29021
+23207,23208d29023
 < faecal
 < faeces/M
-23215c29028
+23215c29030
 < faggoting's
 ---
 > faggot/SMG
-23701a29515
+23701a29517
 > filesystem/MS
-24155c29969
+24155c29971
 < fluidized
 ---
 > fluidize/DSG
-24216a30031
+24216a30033
 > foci
-24736d30550
+24736d30552
 < frier/M
-24855,24856c30669,30670
+24855,24856c30671,30672
 < fucker/M!
 < fuckhead/S!
 ---
 > fucker/SM!
 > fuckhead/SM!
-24953d30766
+24953d30768
 < furore/MS
-25125c30938
+25125c30940
 < gaolbird/S
 ---
 > gaolbirds
-25180d30992
+25180d30994
 < gasolene/M
-25190a31003
+25190a31005
 > gastroenterologist/M
-25262c31075
+25262c31077
 < geezer/M
 ---
 > geezer/MS
-25327c31140
+25327c31142
 < genomic
 ---
 > genomic/S
-25462a31276
+25462a31278
 > gigabit/MS
-25464a31279,31281
+25464a31281,31283
 > gigajoule/MS
 > gigapixel/MS
 > gigawatt/MS
-25560d31376
+25560d31378
 < glamourize/DSG
-25674c31490
+25674c31492
 < glycerine's
 ---
 > glycerine/M
-25905c31721
+25905c31723
 < gram/MS
 ---
 > gram/KMS
-25909d31724
+25909d31726
 < gramme/SM
-26063c31878,31879
+26063c31880,31881
 < greybeard
 ---
 > grey/MDRTGSP
 > greybeard/SM
-26066c31882
+26066c31884
 < greyness
 ---
 > greyness/M
-26246,26247d32061
+26246,26247d32063
 < guerilla's
 < guerillas
-26432,26436d32245
+26432,26436d32247
 < haemoglobin's
 < haemophilia/M
 < haemorrhage/DSMG
 < haemorrhoid/S
 < haemorrhoids/M
-27167c32976
+27167c32978
 < hexane
 ---
 > hexane/SM
-27273a33083
+27273a33085
 > hippopotami
-27875d33684
+27875d33686
 < hyaena/SM
-28017c33826
+28017c33828
 < iPod/M
 ---
 > iPod/MS
-28105a33915
+28105a33917
 > idolator/SM
-28513c34323
+28513c34325
 < inbound
 ---
 > inbound/s
-28650a34461
+28650a34463
 > indices
-28812d34622
+28812d34624
 < inflexion/SM
-29216a35027
+29216a35029
 > intern/GDL
-29266a35078
+29266a35080
 > interruptible/U
-29272a35085,35088
+29272a35087,35090
 > intersex
 > intersexual/MS
 > intersexualism
 > intersexuality
-29724c35540
+29724c35542
 < jewellery's
 ---
 > jewellery/M
-29870a35687
+29870a35689
 > judgement/MS
-30066c35883
+30066c35885
 < kiddie/M
 ---
 > kiddie/SM
-30262,30263c36079
+30262,30263c36081
 < kraut's
 < kraut/S!
 ---
 > kraut/MS!
-30665a36482
+30665a36484
 > lector/MS
-31031c36848
+31031c36850
 < linguini's
 ---
 > linguini/M
-31151,31152c36968
+31151,31152c36970
 < liver's
 < liver/S
 ---
 > liver/MS
-32230c38046
+32230c38048
 < meanie/M
 ---
 > meanie/MS
-32317,32318c38133
+32317,32318c38135
 < megadeath/M
 < megadeaths
 ---
 > megadeath/SM
-32320c38135
+32320c38137
 < megajoules
 ---
 > megajoule/SM
-32329c38144
+32329c38146
 < megapixel/S
 ---
 > megapixel/MS
-32708a38524
+32708a38526
 > might've
-32717a38534
+32717a38536
 > migrator/SM
-32777d38593
+32760a38580
+> millennia
+32777d38596
 < millionnaire/M
-32934a38751
+32934a38754
 > miscommunication/S
-32991a38809
+32991a38812
 > misjudgement/MS
-33784a39603
+33784a39606
 > must've
-33963c39782
+33963c39785
 < native/MS
 ---
 > native/MSY
-34169,34171c39988,39989
+34169,34171c39991,39992
 < neurone/S
 < neurophysiology
 < neuroscience
 ---
 > neurophysiology/M
 > neuroscience/MS
-34275c40093
+34275c40096
 < nightie/M
 ---
 > nightie/SM
-35104a40923
+35104a40926
 > octopi
-35219d41037
+35219d41040
 < oleomargarin/M
-35226a41045
+35226a41048
 > oligo
-35913c41732
+35913c41735
 < oversize/D
 ---
 > oversize
-36056,36059d41874
+36056,36059d41877
 < paederast/S
 < paediatrician's
 < paediatricians
 < paediatrics/M
-36291a42107
+36291a42110
 > paralyses
-36403d42218
+36403d42221
 < parrakeet/MS
-36449d42263
+36449d42266
 < partizan/SM
-37093a42908
+37093a42911
 > petabyte/MS
-37102c42917
+37102c42920
 < petitioner/M
 ---
 > petitioner/MS
-37264a43080
+37264a43083
 > phosphorylate/DSGN
-37316d43131
+37316d43134
 < phrenetic
-37796a43612
+37796a43615
 > plugin/MS
-37987c43803
+37987c43806
 < polypeptide/S
 ---
 > polypeptide/MS
-38291d44106
+38291d44109
 < practise's
-38451a44267
+38451a44270
 > prejudgement/MS
-38805a44622
+38805a44625
 > profiler/SM
-38835a44653
+38835a44656
 > programmatically
-38891a44710,44711
+38891a44713,44714
 > pronate/DSGN
 > pronator/MS
-38951c44771
+38951c44774
 < proprietorship/M
 ---
 > proprietorship/MS
-39039a44860
+39039a44863
 > provender/M
-39564a45386
+39564a45389
 > quinoa
-40036a45859
+40036a45862
 > recency
-40140a45964
+40140a45967
 > recurse/DGSV
-40141a45966
+40141a45969
 > recuse/DGS
-40208a46034
+40208a46037
 > refactor/SMDG
-40244d46069
+40244d46072
 < reflexion/SM
-40659d46483
+40659d46486
 < resizing
-40829c46653
+40829c46656
 < reverie/M
 ---
 > reverie/MS
-41415a47240
+41415a47243
 > sabre/MS
-41914c47739
+41914c47742
 < schnaps's
 ---
 > schnaps/M
-41949c47774
+41949c47777
 < schrod's
 ---
 > schrod/SM
-41998a47824
+41998a47827
 > scot-free
-42883,42885c48709
+42883,42885c48712
 < shit's
 < shit/S!
 < shite/S!
 ---
 > shit/MS!
-42887,42888c48711,48712
+42887,42888c48714,48715
 < shithead/S!
 < shitload/!
 ---
 > shithead/MS!
 > shitload/MS!
-42891c48715
+42891c48718
 < shitty/RT!
 ---
 > shitty/TR!
-42976a48801
+42976a48804
 > should've
-43008c48833
+43008c48836
 < showtime
 ---
 > showtime/MS
-43328c49153
+43328c49156
 < size/MGBDRS
 ---
 > size/AMGBDRS
-43724,43726c49549
+43724,43726c49552
 < smoulder's
 < smouldered
 < smoulders
 ---
 > smoulder/GSMD
-44062c49885
+44062c49888
 < sonofabitch
 ---
 > sonofabitch/!
-44346a50170
+44346a50173
 > spelled
-44348a50173
+44348a50176
 > spelt
-44371a50197
+44371a50200
 > spick/S!
-44383c50209
+44383c50212
 < spik/S
 ---
 > spik/S!
-46106a51933
+46106a51936
 > syllabi
-46160c51987
+46160c51990
 < synch/GMD
 ---
 > synch/GMDS
-46167d51993
+46167d51996
 < synchs
-46203,46204c52029,52030
+46203,46204c52032,52033
 < sysadmin/S
 < sysop/S
 ---
 > sysadmin/MS
 > sysop/MS
-46752a52579
+46752a52582
 > terabit/MS
-46753a52581,52582
+46753a52584,52585
 > terahertz/M
 > terapixel/MS
-46817a52647
+46817a52650
 > testcase/MS
-46831a52662
+46831a52665
 > testsuite/MS
-46925a52757
+46925a52760
 > theremin/MS
-47455c53287
+47455c53290
 < toolbar
 ---
 > toolbar/MS
-47755a53588
+47755a53591
 > transfect/DSMG
-47774a53608,53609
+47774a53611,53612
 > transgenderism
 > transgene/MS
-47951c53786
+47951c53789
 < triage/M
 ---
 > triage/MG
-48869a54705
+48869a54708
 > unlikeable
-49211c55047
+49211c55050
 < vagina/M
 ---
 > vagina/MS
-49368,49369c55204
+49368,49369c55207
 < velour's
 < velours's
 ---
 > velour/MS
-49478a55314
+49478a55317
 > vertices
-50148a55985
+50148a55988
 > weaponize/DSG
-50260,50261d56096
+50260,50261d56099
 < werwolf/M
 < werwolves
-50728c56563
+50728c56566
 < women
 ---
 > women/M
-50794c56629
+50794c56632
 < wop/S!
 ---
 > wop/MS!
--- a/extensions/spellcheck/locales/en-US/hunspell/en-US.dic
+++ b/extensions/spellcheck/locales/en-US/hunspell/en-US.dic
@@ -1,9 +1,9 @@
-57451
+57454
 0/nm
 0th/pt
 1/n1
 1st/p
 1th/tc
 2/nm
 2nd/p
 2th/tc
@@ -3823,21 +3823,23 @@ DNA/M
 DOA
 DOB
 DOD
 DOE
 DOS/M
 DOT
 DP/SM
 DPT
+DRM
 DST
 DTP
 DUI
 DVD
 DVDs
+DVR/S
 DWI
 Dacca/M
 Dacey/M
 Dachau/M
 Dacia
 Dacie/M
 Dacron/SM
 Dacy/M
@@ -38875,16 +38877,17 @@ milkman/M
 milkmen
 milkshake/SM
 milksop/MS
 milkweed/SM
 milky/RTP
 mill/MDRSZGJ
 millage/M
 millenarian
+millennia
 millennial
 millennium/SM
 millepede/MS
 miller/M
 millet/M
 milliard/MS
 millibar/MS
 milligram/MS
--- a/extensions/spellcheck/src/mozInlineSpellWordUtil.cpp
+++ b/extensions/spellcheck/src/mozInlineSpellWordUtil.cpp
@@ -39,17 +39,18 @@ inline bool IsIgnorableCharacter(PRUnich
 // IsConditionalPunctuation
 //
 //    Some characters (like apostrophes) require characters on each side to be
 //    part of a word, and are otherwise punctuation.
 
 inline bool IsConditionalPunctuation(PRUnichar ch)
 {
   return (ch == '\'' ||
-          ch == 0x2019); // RIGHT SINGLE QUOTATION MARK
+          ch == 0x2019 || // RIGHT SINGLE QUOTATION MARK
+          ch == 0x00B7); // MIDDLE DOT
 }
 
 // mozInlineSpellWordUtil::Init
 
 nsresult
 mozInlineSpellWordUtil::Init(nsWeakPtr aWeakEditor)
 {
   nsresult rv;
--- a/gfx/2d/PathD2D.cpp
+++ b/gfx/2d/PathD2D.cpp
@@ -340,17 +340,17 @@ PathD2D::TransformedCopyToBuilder(const 
                         D2DMatrix(aTransform),
                         &wrapSink);
   } else {
     mGeometry->Simplify(D2D1_GEOMETRY_SIMPLIFICATION_OPTION_CUBICS_AND_LINES,
                         D2DMatrix(aTransform),
                         sink);
   }
 
-  RefPtr<PathBuilderD2D> pathBuilder = new PathBuilderD2D(sink, path, mFillRule);
+  RefPtr<PathBuilderD2D> pathBuilder = new PathBuilderD2D(sink, path, aFillRule);
   
   pathBuilder->mCurrentPoint = aTransform * mEndPoint;
   
   if (mEndedActive) {
     pathBuilder->mFigureActive = true;
   }
 
   return pathBuilder;
--- a/gfx/layers/composite/APZCTreeManager.cpp
+++ b/gfx/layers/composite/APZCTreeManager.cpp
@@ -102,16 +102,18 @@ AsyncPanZoomController*
 APZCTreeManager::UpdatePanZoomControllerTree(CompositorParent* aCompositor,
                                              Layer* aLayer, uint64_t aLayersId,
                                              gfx3DMatrix aTransform,
                                              AsyncPanZoomController* aParent,
                                              AsyncPanZoomController* aNextSibling,
                                              bool aIsFirstPaint, uint64_t aFirstPaintLayersId,
                                              nsTArray< nsRefPtr<AsyncPanZoomController> >* aApzcsToDestroy)
 {
+  mTreeLock.AssertCurrentThreadOwns();
+
   ContainerLayer* container = aLayer->AsContainerLayer();
   AsyncPanZoomController* apzc = nullptr;
   if (container) {
     if (container->GetFrameMetrics().IsScrollable()) {
       const CompositorParent::LayerTreeState* state = CompositorParent::GetIndirectShadowTree(aLayersId);
       if (state && state->mController.get()) {
         // If we get here, aLayer is a scrollable container layer and somebody
         // has registered a GeckoContentController for it, so we need to ensure
@@ -310,50 +312,52 @@ APZCTreeManager::ReceiveInputEvent(const
         result = apzc->ReceiveInputEvent(inputForApzc);
       }
       break;
     }
   }
   return result;
 }
 
-AsyncPanZoomController*
+already_AddRefed<AsyncPanZoomController>
 APZCTreeManager::GetTouchInputBlockAPZC(const WidgetTouchEvent& aEvent,
                                         ScreenPoint aPoint)
 {
   nsRefPtr<AsyncPanZoomController> apzc = GetTargetAPZC(aPoint);
   gfx3DMatrix transformToApzc, transformToGecko;
   // Reset the cached apz transform
   mCachedTransformToApzcForInputBlock = transformToApzc;
   if (!apzc) {
-    return nullptr;
+    return apzc.forget();
   }
   for (size_t i = 1; i < aEvent.touches.Length(); i++) {
     nsIntPoint point = aEvent.touches[i]->mRefPoint;
     nsRefPtr<AsyncPanZoomController> apzc2 =
       GetTargetAPZC(ScreenPoint(point.x, point.y));
     apzc = CommonAncestor(apzc.get(), apzc2.get());
     APZC_LOG("Using APZC %p as the common ancestor\n", apzc.get());
     // For now, we only ever want to do pinching on the root APZC for a given layers id. So
     // when we find the common ancestor of multiple points, also walk up to the root APZC.
     apzc = RootAPZCForLayersId(apzc);
     APZC_LOG("Using APZC %p as the root APZC for multi-touch\n", apzc.get());
   }
   if (apzc) {
     // Cache apz transform so it can be used for future events in this block.
     GetInputTransforms(apzc, mCachedTransformToApzcForInputBlock, transformToGecko);
   }
-  return apzc.get();
+  return apzc.forget();
 }
 
 nsEventStatus
 APZCTreeManager::ProcessTouchEvent(const WidgetTouchEvent& aEvent,
                                    ScrollableLayerGuid* aOutTargetGuid,
                                    WidgetTouchEvent* aOutEvent)
 {
+  MOZ_ASSERT(NS_IsMainThread());
+
   nsEventStatus ret = nsEventStatus_eIgnore;
   if (!aEvent.touches.Length()) {
     return ret;
   }
   if (aEvent.message == NS_TOUCH_START) {
     mTouchCount++;
     ScreenPoint point = ScreenPoint(aEvent.touches[0]->mRefPoint.x, aEvent.touches[0]->mRefPoint.y);
     mApzcForInputBlock = GetTouchInputBlockAPZC(aEvent, point);
@@ -416,16 +420,18 @@ APZCTreeManager::TransformCoordinateToGe
 }
 
 
 nsEventStatus
 APZCTreeManager::ProcessMouseEvent(const WidgetMouseEvent& aEvent,
                                    ScrollableLayerGuid* aOutTargetGuid,
                                    WidgetMouseEvent* aOutEvent)
 {
+  MOZ_ASSERT(NS_IsMainThread());
+
   nsRefPtr<AsyncPanZoomController> apzc = GetTargetAPZC(ScreenPoint(aEvent.refPoint.x, aEvent.refPoint.y));
   if (!apzc) {
     return nsEventStatus_eIgnore;
   }
   apzc->GetGuid(aOutTargetGuid);
   gfx3DMatrix transformToApzc;
   gfx3DMatrix transformToGecko;
   GetInputTransforms(apzc, transformToApzc, transformToGecko);
@@ -436,16 +442,18 @@ APZCTreeManager::ProcessMouseEvent(const
   return apzc->ReceiveInputEvent(inputForApzc);
 }
 
 nsEventStatus
 APZCTreeManager::ProcessEvent(const WidgetInputEvent& aEvent,
                               ScrollableLayerGuid* aOutTargetGuid,
                               WidgetInputEvent* aOutEvent)
 {
+  MOZ_ASSERT(NS_IsMainThread());
+
   // Transform the refPoint
   nsRefPtr<AsyncPanZoomController> apzc = GetTargetAPZC(ScreenPoint(aEvent.refPoint.x, aEvent.refPoint.y));
   if (!apzc) {
     return nsEventStatus_eIgnore;
   }
   apzc->GetGuid(aOutTargetGuid);
   gfx3DMatrix transformToApzc;
   gfx3DMatrix transformToGecko;
@@ -640,16 +648,18 @@ APZCTreeManager::GetTargetAPZC(const Scr
       break;
     }
   }
   return target.forget();
 }
 
 AsyncPanZoomController*
 APZCTreeManager::FindTargetAPZC(AsyncPanZoomController* aApzc, const ScrollableLayerGuid& aGuid) {
+  mTreeLock.AssertCurrentThreadOwns();
+
   // This walks the tree in depth-first, reverse order, so that it encounters
   // APZCs front-to-back on the screen.
   for (AsyncPanZoomController* child = aApzc->GetLastChild(); child; child = child->GetPrevSibling()) {
     AsyncPanZoomController* match = FindTargetAPZC(child, aGuid);
     if (match) {
       return match;
     }
   }
@@ -658,16 +668,18 @@ APZCTreeManager::FindTargetAPZC(AsyncPan
     return aApzc;
   }
   return nullptr;
 }
 
 AsyncPanZoomController*
 APZCTreeManager::GetAPZCAtPoint(AsyncPanZoomController* aApzc, const gfxPoint& aHitTestPoint)
 {
+  mTreeLock.AssertCurrentThreadOwns();
+
   // The comments below assume there is a chain of layers L..R with L and P having APZC instances as
   // explained in the comment on GetInputTransforms. This function will recurse with aApzc at L and P, and the
   // comments explain what values are stored in the variables at these two levels. All the comments
   // use standard matrix notation where the leftmost matrix in a multiplication is applied first.
 
   // ancestorUntransform takes points from aApzc's parent APZC's layer coordinates
   // to aApzc's screen coordinates.
   // It is OC.Inverse() * NC.Inverse() * MC.Inverse() at recursion level for L,
@@ -791,16 +803,18 @@ APZCTreeManager::GetAPZCAtPoint(AsyncPan
    layer L would store LC and (MC * NC * OC), and the layer P would store PC and (QC * RC).
    The APZCs also obviously have LT, LN, PT, and PN, so all of the above transformation combinations
    required can be generated.
  */
 void
 APZCTreeManager::GetInputTransforms(AsyncPanZoomController *aApzc, gfx3DMatrix& aTransformToApzcOut,
                                     gfx3DMatrix& aTransformToGeckoOut)
 {
+  MonitorAutoLock lock(mTreeLock);
+
   // The comments below assume there is a chain of layers L..R with L and P having APZC instances as
   // explained in the comment above. This function is called with aApzc at L, and the loop
   // below performs one iteration, where parent is at P. The comments explain what values are stored
   // in the variables at these two levels. All the comments use standard matrix notation where the
   // leftmost matrix in a multiplication is applied first.
 
   // ancestorUntransform is OC.Inverse() * NC.Inverse() * MC.Inverse()
   gfx3DMatrix ancestorUntransform = aApzc->GetAncestorTransform().Inverse();
@@ -830,19 +844,22 @@ APZCTreeManager::GetInputTransforms(Asyn
     aTransformToGeckoOut = aTransformToGeckoOut * parent->GetCSSTransform() * parent->GetAncestorTransform();
 
     // The above values for aTransformToApzcOut and aTransformToGeckoOut when parent == P match
     // the required output as explained in the comment above GetTargetAPZC. Note that any missing terms
     // are async transforms that are guaranteed to be identity transforms.
   }
 }
 
-AsyncPanZoomController*
+already_AddRefed<AsyncPanZoomController>
 APZCTreeManager::CommonAncestor(AsyncPanZoomController* aApzc1, AsyncPanZoomController* aApzc2)
 {
+  MonitorAutoLock lock(mTreeLock);
+  nsRefPtr<AsyncPanZoomController> ancestor;
+
   // If either aApzc1 or aApzc2 is null, min(depth1, depth2) will be 0 and this function
   // will return null.
 
   // Calculate depth of the APZCs in the tree
   int depth1 = 0, depth2 = 0;
   for (AsyncPanZoomController* parent = aApzc1; parent; parent = parent->GetParent()) {
     depth1++;
   }
@@ -861,30 +878,33 @@ APZCTreeManager::CommonAncestor(AsyncPan
     depth2--;
     aApzc2 = aApzc2->GetParent();
   }
 
   // Walk up the ancestor chains of both APZCs, always staying at the same depth for
   // either APZC, and return the the first common ancestor encountered.
   while (true) {
     if (aApzc1 == aApzc2) {
-      return aApzc1;
+      ancestor = aApzc1;
+      break;
     }
     if (depth1 <= 0) {
       break;
     }
     aApzc1 = aApzc1->GetParent();
     aApzc2 = aApzc2->GetParent();
   }
-  return nullptr;
+  return ancestor.forget();
 }
 
-AsyncPanZoomController*
+already_AddRefed<AsyncPanZoomController>
 APZCTreeManager::RootAPZCForLayersId(AsyncPanZoomController* aApzc)
 {
-  while (aApzc && !aApzc->IsRootForLayersId()) {
-    aApzc = aApzc->GetParent();
+  MonitorAutoLock lock(mTreeLock);
+  nsRefPtr<AsyncPanZoomController> apzc = aApzc;
+  while (apzc && !apzc->IsRootForLayersId()) {
+    apzc = apzc->GetParent();
   }
-  return aApzc;
+  return apzc.forget();
 }
 
 }
 }
--- a/gfx/layers/composite/APZCTreeManager.h
+++ b/gfx/layers/composite/APZCTreeManager.h
@@ -305,19 +305,19 @@ public:
   already_AddRefed<AsyncPanZoomController> GetTargetAPZC(const ScrollableLayerGuid& aGuid);
   already_AddRefed<AsyncPanZoomController> GetTargetAPZC(const ScreenPoint& aPoint);
   void GetInputTransforms(AsyncPanZoomController *aApzc, gfx3DMatrix& aTransformToApzcOut,
                           gfx3DMatrix& aTransformToGeckoOut);
 private:
   /* Helpers */
   AsyncPanZoomController* FindTargetAPZC(AsyncPanZoomController* aApzc, const ScrollableLayerGuid& aGuid);
   AsyncPanZoomController* GetAPZCAtPoint(AsyncPanZoomController* aApzc, const gfxPoint& aHitTestPoint);
-  AsyncPanZoomController* CommonAncestor(AsyncPanZoomController* aApzc1, AsyncPanZoomController* aApzc2);
-  AsyncPanZoomController* RootAPZCForLayersId(AsyncPanZoomController* aApzc);
-  AsyncPanZoomController* GetTouchInputBlockAPZC(const WidgetTouchEvent& aEvent, ScreenPoint aPoint);
+  already_AddRefed<AsyncPanZoomController> CommonAncestor(AsyncPanZoomController* aApzc1, AsyncPanZoomController* aApzc2);
+  already_AddRefed<AsyncPanZoomController> RootAPZCForLayersId(AsyncPanZoomController* aApzc);
+  already_AddRefed<AsyncPanZoomController> GetTouchInputBlockAPZC(const WidgetTouchEvent& aEvent, ScreenPoint aPoint);
   nsEventStatus ProcessTouchEvent(const WidgetTouchEvent& touchEvent, ScrollableLayerGuid* aOutTargetGuid, WidgetTouchEvent* aOutEvent);
   nsEventStatus ProcessMouseEvent(const WidgetMouseEvent& mouseEvent, ScrollableLayerGuid* aOutTargetGuid, WidgetMouseEvent* aOutEvent);
   nsEventStatus ProcessEvent(const WidgetInputEvent& inputEvent, ScrollableLayerGuid* aOutTargetGuid, WidgetInputEvent* aOutEvent);
 
   /**
    * Recursive helper function to build the APZC tree. The tree of APZC instances has
    * the same shape as the layer tree, but excludes all the layers that are not scrollable.
    * Note that this means APZCs corresponding to layers at different depths in the tree
new file mode 100644
--- /dev/null
+++ b/gfx/tests/crashtests/624198.xhtml
@@ -0,0 +1,1 @@
+<html xmlns="http://www.w3.org/1999/xhtml"><msqrt xmlns="http://www.w3.org/1998/Math/MathML"><mpadded depth="+98774970791px"/></msqrt></html>
\ No newline at end of file
--- a/gfx/tests/crashtests/crashtests.list
+++ b/gfx/tests/crashtests/crashtests.list
@@ -80,16 +80,17 @@ load 538065-1.html
 load 546870-1.html
 load balinese-letter-spacing.html
 load 580100-1.html
 load 580212-1.html
 load 580233-1.html
 load 580719-1.html
 load 594654-1.xhtml
 load 595727-1.html
+load 624198.xhtml
 load 633453-1.html
 load 633322-1.html
 load 665218.html
 load 686190-1.html
 load 693143-1.html
 load 768079-1.html
 load 783041-1.html
 load 783041-2.html
--- a/gfx/thebes/gfxFont.cpp
+++ b/gfx/thebes/gfxFont.cpp
@@ -3339,21 +3339,24 @@ gfxFont::ShapeTextWithoutWordCache(gfxCo
                                                aScript, aTextRun);
         }
 
         if (i == aLength) {
             break;
         }
 
         // fragment was terminated by an invalid char: skip it,
+        // unless it's a control char that we want to show as a hexbox,
         // but record where TAB or NEWLINE occur
         if (ch == '\t') {
             aTextRun->SetIsTab(aOffset + i);
         } else if (ch == '\n') {
             aTextRun->SetIsNewline(aOffset + i);
+        } else if ((ch & 0x7f) < 0x20 || ch == 0x7f) {
+            aTextRun->SetMissingGlyph(aOffset + i, ch, this);
         }
         fragStart = i + 1;
     }
 
     NS_WARN_IF_FALSE(ok, "failed to shape text - expect garbled text");
     return ok;
 }
 
@@ -3480,21 +3483,24 @@ gfxFont::SplitAndInitTextRun(gfxContext 
         if (i == aRunLength) {
             break;
         }
 
         NS_ASSERTION(invalid,
                      "how did we get here except via an invalid char?");
 
         // word was terminated by an invalid char: skip it,
+        // unless it's a control char that we want to show as a hexbox,
         // but record where TAB or NEWLINE occur
         if (ch == '\t') {
             aTextRun->SetIsTab(aRunStart + i);
         } else if (ch == '\n') {
             aTextRun->SetIsNewline(aRunStart + i);
+        } else if ((ch & 0x7f) < 0x20 || ch == 0x7f) {
+            aTextRun->SetMissingGlyph(aRunStart + i, ch, this);
         }
 
         hash = 0;
         wordStart = i + 1;
         wordIs8Bit = true;
     }
 
     return true;
--- a/js/public/Value.h
+++ b/js/public/Value.h
@@ -1597,43 +1597,61 @@ class MutableValueOperations : public Un
     void setObjectOrNull(JSObject *arg) { this->value()->setObjectOrNull(arg); }
 };
 
 /*
  * Augment the generic Heap<T> interface when T = Value with
  * type-querying, value-extracting, and mutating operations.
  */
 template <>
-class HeapBase<JS::Value> : public UnbarrieredMutableValueOperations<JS::Heap<JS::Value> >
+class HeapBase<JS::Value> : public ValueOperations<JS::Heap<JS::Value> >
 {
     typedef JS::Heap<JS::Value> Outer;
 
     friend class ValueOperations<Outer>;
-    friend class UnbarrieredMutableValueOperations<Outer>;
 
     const JS::Value * extract() const { return static_cast<const Outer*>(this)->address(); }
-    JS::Value * extractMutable() { return static_cast<Outer*>(this)->unsafeGet(); }
 
-    /*
-     * Setters that potentially change the value to a GC thing from a non-GC
-     * thing must call JS::Heap::set() to trigger the post barrier.
-     *
-     * Changing from a GC thing to a non-GC thing value will leave the heap
-     * value in the store buffer, but it will be ingored so this is not a
-     * problem.
-     */
     void setBarriered(const JS::Value &v) {
         static_cast<JS::Heap<JS::Value> *>(this)->set(v);
     }
 
   public:
+    void setNull() { setBarriered(JS::NullValue()); }
+    void setUndefined() { setBarriered(JS::UndefinedValue()); }
+    void setInt32(int32_t i) { setBarriered(JS::Int32Value(i)); }
+    void setDouble(double d) { setBarriered(JS::DoubleValue(d)); }
+    void setNaN() { setDouble(JS::GenericNaN()); }
+    void setBoolean(bool b) { setBarriered(JS::BooleanValue(b)); }
+    void setMagic(JSWhyMagic why) { setBarriered(JS::MagicValue(why)); }
     void setString(JSString *str) { setBarriered(JS::StringValue(str)); }
     void setString(const JS::Anchor<JSString *> &str) { setBarriered(JS::StringValue(str.get())); }
     void setObject(JSObject &obj) { setBarriered(JS::ObjectValue(obj)); }
 
+    bool setNumber(uint32_t ui) {
+        if (ui > JSVAL_INT_MAX) {
+            setDouble((double)ui);
+            return false;
+        } else {
+            setInt32((int32_t)ui);
+            return true;
+        }
+    }
+
+    bool setNumber(double d) {
+        int32_t i;
+        if (mozilla::DoubleIsInt32(d, &i)) {
+            setInt32(i);
+            return true;
+        }
+
+        setDouble(d);
+        return false;
+    }
+
     void setObjectOrNull(JSObject *arg) {
         if (arg)
             setObject(*arg);
         else
             setNull();
     }
 };
 
--- a/js/src/assembler/assembler/MacroAssemblerX86Common.cpp
+++ b/js/src/assembler/assembler/MacroAssemblerX86Common.cpp
@@ -11,12 +11,14 @@
 
 #include "assembler/assembler/MacroAssemblerX86Common.h"
 
 using namespace JSC;
 MacroAssemblerX86Common::SSECheckState MacroAssemblerX86Common::s_sseCheckState = NotCheckedSSE;
 
 #ifdef DEBUG
 bool MacroAssemblerX86Common::s_floatingPointDisabled = false;
+bool MacroAssemblerX86Common::s_SSE3Disabled = false;
+bool MacroAssemblerX86Common::s_SSE4Disabled = false;
 #endif
 
 #endif /* WTF_CPU_X86 || WTF_CPU_X86_64 */
 
--- a/js/src/assembler/assembler/MacroAssemblerX86Common.h
+++ b/js/src/assembler/assembler/MacroAssemblerX86Common.h
@@ -1398,16 +1398,23 @@ private:
         else if (flags_ecx & SSE3FeatureBit)
             s_sseCheckState = HasSSE3;
         else if (flags_edx & SSE2FeatureBit)
             s_sseCheckState = HasSSE2;
         else if (flags_edx & SSEFeatureBit)
             s_sseCheckState = HasSSE;
         else
             s_sseCheckState = NoSSE;
+
+#ifdef DEBUG
+        if (s_sseCheckState >= HasSSE4_1 && s_SSE4Disabled)
+            s_sseCheckState = HasSSE3;
+        if (s_sseCheckState >= HasSSE3 && s_SSE3Disabled)
+            s_sseCheckState = HasSSE2;
+#endif
     }
 
 #if WTF_CPU_X86
 #if WTF_OS_MAC_OS_X
 
     // All X86 Macs are guaranteed to support at least SSE2
     static bool isSSEPresent()
     {
@@ -1500,21 +1507,29 @@ private:
         // Only check once.
         ASSERT(s_sseCheckState != NotCheckedSSE);
 
         return s_sseCheckState >= HasSSE4_2;
     }
 
 #ifdef DEBUG
     static bool s_floatingPointDisabled;
+    static bool s_SSE3Disabled;
+    static bool s_SSE4Disabled;
 
   public:
     static void SetFloatingPointDisabled() {
         s_floatingPointDisabled = true;
     }
+    static void SetSSE3Disabled() {
+        s_SSE3Disabled = true;
+    }
+    static void SetSSE4Disabled() {
+        s_SSE4Disabled = true;
+    }
 #endif
 };
 
 } // namespace JSC
 
 #endif // ENABLE(ASSEMBLER)
 
 #endif /* assembler_assembler_MacroAssemblerX86Common_h */
--- a/js/src/builtin/TypedObject.cpp
+++ b/js/src/builtin/TypedObject.cpp
@@ -524,16 +524,17 @@ const JSFunctionSpec ArrayType::typeObje
 
 const JSPropertySpec ArrayType::typedObjectProperties[] = {
     JS_PS_END
 };
 
 const JSFunctionSpec ArrayType::typedObjectMethods[] = {
     JS_FN("subarray", ArrayType::subarray, 2, 0),
     {"forEach", {nullptr, nullptr}, 1, 0, "ArrayForEach"},
+    {"redimension", {nullptr, nullptr}, 1, 0, "TypedArrayRedimension"},
     JS_FS_END
 };
 
 static JSObject *
 ArrayElementType(HandleObject array)
 {
     JS_ASSERT(IsArrayTypeObject(*array));
     return &array->getReservedSlot(JS_TYPEOBJ_SLOT_ARRAY_ELEM_TYPE).toObject();
--- a/js/src/builtin/TypedObject.js
+++ b/js/src/builtin/TypedObject.js
@@ -410,16 +410,83 @@ function FillTypedArrayWithValue(destArr
 function TypeObjectEquivalent(otherTypeObj) {
   if (!IsObject(this) || !ObjectIsTypeObject(this))
     ThrowError(JSMSG_TYPEDOBJECT_HANDLE_BAD_ARGS, "this", "type object");
   if (!IsObject(otherTypeObj) || !ObjectIsTypeObject(otherTypeObj))
     ThrowError(JSMSG_TYPEDOBJECT_HANDLE_BAD_ARGS, "1", "type object");
   return TYPE_TYPE_REPR(this) === TYPE_TYPE_REPR(otherTypeObj);
 }
 
+// TypedArray.redimension(newArrayType)
+//
+// Method that "repackages" the data from this array into a new typed
+// object whose type is `newArrayType`. Once you strip away all the
+// outer array dimensions, the type of `this` array and `newArrayType`
+// must share the same innermost element type. Moreover, those
+// stripped away dimensions must amount to the same total number of
+// elements.
+//
+// For example, given two equivalent types `T` and `U`, it is legal to
+// interconvert between arrays types like:
+//     T[32]
+//     U[2][16]
+//     U[2][2][8]
+// Because they all share the same total number (32) of equivalent elements.
+// But it would be illegal to convert `T[32]` to `U[31]` or `U[2][17]`, since
+// the number of elements differs. And it's just plain incompatible to convert
+// if the base element types are not equivalent.
+//
+// Warning: user exposed!
+function TypedArrayRedimension(newArrayType) {
+  if (!IsObject(this) || !ObjectIsTypedDatum(this))
+    ThrowError(JSMSG_TYPEDOBJECT_HANDLE_BAD_ARGS, "this", "typed array");
+
+  if (!IsObject(newArrayType) || !ObjectIsTypeObject(newArrayType))
+    ThrowError(JSMSG_TYPEDOBJECT_HANDLE_BAD_ARGS, 1, "type object");
+
+  // Peel away the outermost array layers from the type of `this` to find
+  // the core element type. In the process, count the number of elements.
+  var oldArrayType = DATUM_TYPE_OBJ(this);
+  var oldElementType = oldArrayType;
+  var oldElementCount = 1;
+  while (REPR_KIND(TYPE_TYPE_REPR(oldElementType)) == JS_TYPEREPR_ARRAY_KIND) {
+    oldElementCount *= oldElementType.length;
+    oldElementType = oldElementType.elementType;
+  }
+
+  // Peel away the outermost array layers from `newArrayType`. In the
+  // process, count the number of elements.
+  var newElementType = newArrayType;
+  var newElementCount = 1;
+  while (REPR_KIND(TYPE_TYPE_REPR(newElementType)) == JS_TYPEREPR_ARRAY_KIND) {
+    newElementCount *= newElementType.length;
+    newElementType = newElementType.elementType;
+  }
+
+  // Check that the total number of elements does not change.
+  if (oldElementCount !== newElementCount) {
+    ThrowError(JSMSG_TYPEDOBJECT_HANDLE_BAD_ARGS, 1,
+               "New number of elements does not match old number of elements");
+  }
+
+  // Check that the element types are equivalent.
+  if (TYPE_TYPE_REPR(oldElementType) !== TYPE_TYPE_REPR(newElementType)) {
+    ThrowError(JSMSG_TYPEDOBJECT_HANDLE_BAD_ARGS, 1,
+               "New element type is not equivalent to old element type");
+  }
+
+  // Together, this should imply that the sizes are unchanged.
+  assert(REPR_SIZE(TYPE_TYPE_REPR(oldArrayType)) ==
+         REPR_SIZE(TYPE_TYPE_REPR(newArrayType)),
+         "Byte sizes should be equal");
+
+  // Rewrap the data from `this` in a new type.
+  return NewDerivedTypedDatum(newArrayType, this, 0);
+}
+
 ///////////////////////////////////////////////////////////////////////////
 // Handles
 //
 // Note: these methods are directly invokable by users and so must be
 // defensive.
 
 // This is the `handle([obj, [...path]])` method on type objects.
 // User exposed!
--- a/js/src/config/rules.mk
+++ b/js/src/config/rules.mk
@@ -795,17 +795,17 @@ ifdef MOZ_PROFILE_GENERATE
 	touch -t `date +%Y%m%d%H%M.%S -d "now+5seconds"` pgo.relink
 endif
 else # !WINNT || GNU_CC
 	$(EXPAND_CCC) -o $@ $(CXXFLAGS) $(PROGOBJS) $(RESFILE) $(WIN32_EXE_LDFLAGS) $(LDFLAGS) $(WRAP_LDFLAGS) $(LIBS_DIR) $(LIBS) $(MOZ_GLUE_PROGRAM_LDFLAGS) $(OS_LIBS) $(EXTRA_LIBS) $(BIN_FLAGS) $(EXE_DEF_FILE) $(STLPORT_LIBS)
 	@$(call CHECK_STDCXX,$@)
 endif # WINNT && !GNU_CC
 
 ifdef ENABLE_STRIP
-	$(STRIP) $@
+	$(STRIP) $(STRIP_FLAGS) $@
 endif
 ifdef MOZ_POST_PROGRAM_COMMAND
 	$(MOZ_POST_PROGRAM_COMMAND) $@
 endif
 
 $(HOST_PROGRAM): $(HOST_PROGOBJS) $(HOST_LIBS_DEPS) $(HOST_EXTRA_DEPS) $(GLOBAL_DEPS)
 	$(REPORT_BUILD)
 ifeq (_WINNT,$(GNU_CC)_$(HOST_OS_ARCH))
@@ -851,17 +851,17 @@ ifdef MSMANIFEST_TOOL
 	fi
 endif	# MSVC with manifest tool
 else
 	$(EXPAND_CCC) $(CXXFLAGS) -o $@ $< $(WIN32_EXE_LDFLAGS) $(LDFLAGS) $(WRAP_LDFLAGS) $(LIBS_DIR) $(LIBS) $(MOZ_GLUE_PROGRAM_LDFLAGS) $(OS_LIBS) $(EXTRA_LIBS) $(BIN_FLAGS) $(STLPORT_LIBS)
 	@$(call CHECK_STDCXX,$@)
 endif # WINNT && !GNU_CC
 
 ifdef ENABLE_STRIP
-	$(STRIP) $@
+	$(STRIP) $(STRIP_FLAGS) $@
 endif
 ifdef MOZ_POST_PROGRAM_COMMAND
 	$(MOZ_POST_PROGRAM_COMMAND) $@
 endif
 
 $(HOST_SIMPLE_PROGRAMS): host_%$(HOST_BIN_SUFFIX): host_%.$(OBJ_SUFFIX) $(HOST_LIBS_DEPS) $(HOST_EXTRA_DEPS) $(GLOBAL_DEPS)
 	$(REPORT_BUILD)
 ifeq (WINNT_,$(HOST_OS_ARCH)_$(GNU_CC))
@@ -878,17 +878,16 @@ ifdef DTRACE_PROBE_OBJ
 EXTRA_DEPS += $(DTRACE_PROBE_OBJ)
 OBJS += $(DTRACE_PROBE_OBJ)
 endif
 
 $(filter %.$(LIB_SUFFIX),$(LIBRARY)): $(OBJS) $(EXTRA_DEPS) $(GLOBAL_DEPS)
 	$(REPORT_BUILD)
 	$(RM) $(LIBRARY)
 	$(EXPAND_AR) $(AR_FLAGS) $(OBJS) $(SHARED_LIBRARY_LIBS)
-	$(RANLIB) $@
 
 $(filter-out %.$(LIB_SUFFIX),$(LIBRARY)): $(filter %.$(LIB_SUFFIX),$(LIBRARY)) $(OBJS) $(EXTRA_DEPS) $(GLOBAL_DEPS)
 # When we only build a library descriptor, blow out any existing library
 	$(REPORT_BUILD)
 	$(if $(filter %.$(LIB_SUFFIX),$(LIBRARY)),,$(RM) $(REAL_LIBRARY) $(EXPORT_LIBRARY:%=%/$(REAL_LIBRARY)))
 	$(EXPAND_LIBS_GEN) -o $@ $(OBJS) $(SHARED_LIBRARY_LIBS)
 
 ifeq ($(OS_ARCH),WINNT)
@@ -912,24 +911,22 @@ ifeq ($(OS_ARCH),OS2)
 	echo EXPORTS >> $@
 
 	$(ADD_TO_DEF_FILE)
 
 $(IMPORT_LIBRARY): $(SHARED_LIBRARY)
 	$(REPORT_BUILD)
 	$(RM) $@
 	$(IMPLIB) $@ $^
-	$(RANLIB) $@
 endif # OS/2
 
 $(HOST_LIBRARY): $(HOST_OBJS) Makefile
 	$(REPORT_BUILD)
 	$(RM) $@
 	$(EXPAND_LIBS_EXEC) --extract -- $(HOST_AR) $(HOST_AR_FLAGS) $(HOST_OBJS)
-	$(HOST_RANLIB) $@
 
 ifdef HAVE_DTRACE
 ifndef XP_MACOSX
 ifdef DTRACE_PROBE_OBJ
 ifndef DTRACE_LIB_DEPENDENT
 NON_DTRACE_OBJS := $(filter-out $(DTRACE_PROBE_OBJ),$(OBJS))
 $(DTRACE_PROBE_OBJ): $(NON_DTRACE_OBJS)
 	dtrace -G -C -s $(MOZILLA_DTRACE_SRC) -o $(DTRACE_PROBE_OBJ) $(NON_DTRACE_OBJS)
@@ -970,17 +967,17 @@ endif   # EMBED_MANIFEST_AT
 endif	# MSVC with manifest tool
 ifdef MOZ_PROFILE_GENERATE
 	touch -t `date +%Y%m%d%H%M.%S -d "now+5seconds"` pgo.relink
 endif
 endif	# WINNT && !GCC
 	@$(RM) foodummyfilefoo $(DELETE_AFTER_LINK)
 	chmod +x $@
 ifdef ENABLE_STRIP
-	$(STRIP) $@
+	$(STRIP) $(STRIP_FLAGS) $@
 endif
 ifdef MOZ_POST_DSO_LIB_COMMAND
 	$(MOZ_POST_DSO_LIB_COMMAND) $@
 endif
 
 ifeq ($(SOLARIS_SUNPRO_CC),1)
 _MDDEPFILE = $(MDDEPDIR)/$(@F).pp
 
--- a/js/src/configure.in
+++ b/js/src/configure.in
@@ -279,17 +279,17 @@ AC_SUBST(MOZJS_ALPHA)
 dnl ========================================================
 dnl Checks for compilers.
 dnl ========================================================
 dnl Set CROSS_COMPILE in the environment when running configure
 dnl to use the cross-compile setup for now
 dnl ========================================================
 
 dnl AR_FLAGS set here so HOST_AR_FLAGS can be set correctly (see bug 538269)
-AR_FLAGS='cr $@'
+AR_FLAGS='crs $@'
 
 if test "$COMPILE_ENVIRONMENT"; then
 
 # Note:
 #   In Mozilla, we use the names $target, $host and $build incorrectly, but are
 #   too far gone to back out now. See Bug 475488:
 #     - When we say $target, we mean $host, that is, the system on which
 #       Mozilla will be run.
--- a/js/src/frontend/BytecodeEmitter.cpp
+++ b/js/src/frontend/BytecodeEmitter.cpp
@@ -54,16 +54,17 @@ SetSrcNoteOffset(ExclusiveContext *cx, B
 struct frontend::StmtInfoBCE : public StmtInfoBase
 {
     StmtInfoBCE     *down;          /* info for enclosing statement */
     StmtInfoBCE     *downScope;     /* next enclosing lexical scope */
 
     ptrdiff_t       update;         /* loop update offset (top if none) */
     ptrdiff_t       breaks;         /* offset of last break in loop */
     ptrdiff_t       continues;      /* offset of last continue in loop */
+    uint32_t        blockScopeIndex; /* index of scope in BlockScopeArray */
 
     StmtInfoBCE(ExclusiveContext *cx) : StmtInfoBase(cx) {}
 
     /*
      * To reuse space, alias two of the ptrdiff_t fields for use during
      * try/catch/finally code generation and backpatching.
      *
      * Only a loop, switch, or label statement info record can have breaks and
@@ -95,20 +96,21 @@ BytecodeEmitter::BytecodeEmitter(Bytecod
     parser(parser),
     evalCaller(evalCaller),
     topStmt(nullptr),
     topScopeStmt(nullptr),
     blockChain(sc->context),
     atomIndices(sc->context),
     firstLine(lineNum),
     stackDepth(0), maxStackDepth(0),
-    tryNoteList(sc->context),
     arrayCompDepth(0),
     emitLevel(0),
     constList(sc->context),
+    tryNoteList(sc->context),
+    blockScopeList(sc->context),
     typesetCount(0),
     hasSingletons(false),
     emittingForInit(false),
     emittingRunOnceLambda(false),
     lazyRunOnceLambda(false),
     insideEval(insideEval),
     hasGlobalScope(hasGlobalScope),
     emitterMode(emitterMode)
@@ -681,37 +683,51 @@ EnclosingStaticScope(BytecodeEmitter *bc
         JS_ASSERT(!bce->parent);
         return nullptr;
     }
 
     return bce->sc->asFunctionBox()->function();
 }
 
 // Push a block scope statement and link blockObj into bce->blockChain.
-static void
-PushBlockScopeBCE(BytecodeEmitter *bce, StmtInfoBCE *stmt, StaticBlockObject &blockObj,
+static bool
+PushBlockScopeBCE(BytecodeEmitter *bce, StmtInfoBCE *stmt, ObjectBox *objbox,
                   ptrdiff_t top)
 {
+    StaticBlockObject &blockObj = objbox->object->as<StaticBlockObject>();
+
     PushStatementBCE(bce, stmt, STMT_BLOCK, top);
+
+    unsigned scopeObjectIndex = bce->objectList.add(objbox);
+    stmt->blockScopeIndex = bce->blockScopeList.length();
+    if (!bce->blockScopeList.append(scopeObjectIndex, bce->offset()))
+        return false;
+
     blockObj.initEnclosingStaticScope(EnclosingStaticScope(bce));
     FinishPushBlockScope(bce, stmt, blockObj);
+
+    return true;
 }
 
 // Patches |breaks| and |continues| unless the top statement info record
 // represents a try-catch-finally suite. May fail if a jump offset overflows.
 static bool
 PopStatementBCE(ExclusiveContext *cx, BytecodeEmitter *bce)
 {
     StmtInfoBCE *stmt = bce->topStmt;
     if (!stmt->isTrying() &&
         (!BackPatch(cx, bce, stmt->breaks, bce->code().end(), JSOP_GOTO) ||
          !BackPatch(cx, bce, stmt->continues, bce->code(stmt->update), JSOP_GOTO)))
     {
         return false;
     }
+
+    if (stmt->isBlockScope)
+        bce->blockScopeList.recordEnd(stmt->blockScopeIndex, bce->offset());
+
     FinishPopStatement(bce);
     return true;
 }
 
 static bool
 EmitIndex32(ExclusiveContext *cx, JSOp op, uint32_t index, BytecodeEmitter *bce)
 {
     const size_t len = 1 + UINT32_INDEX_LEN;
@@ -765,20 +781,27 @@ EmitAtomOp(ExclusiveContext *cx, JSAtom 
 static bool
 EmitAtomOp(ExclusiveContext *cx, ParseNode *pn, JSOp op, BytecodeEmitter *bce)
 {
     JS_ASSERT(pn->pn_atom != nullptr);
     return EmitAtomOp(cx, pn->pn_atom, op, bce);
 }
 
 static bool
-EmitObjectOp(ExclusiveContext *cx, ObjectBox *objbox, JSOp op, BytecodeEmitter *bce)
+EmitInternedObjectOp(ExclusiveContext *cx, uint32_t index, JSOp op, BytecodeEmitter *bce)
 {
     JS_ASSERT(JOF_OPTYPE(op) == JOF_OBJECT);
-    return EmitIndex32(cx, op, bce->objectList.add(objbox), bce);
+    JS_ASSERT(index < bce->objectList.length);
+    return EmitIndex32(cx, op, index, bce);
+}
+
+static bool
+EmitObjectOp(ExclusiveContext *cx, ObjectBox *objbox, JSOp op, BytecodeEmitter *bce)
+{
+    return EmitInternedObjectOp(cx, bce->objectList.add(objbox), op, bce);
 }
 
 static bool
 EmitRegExp(ExclusiveContext *cx, uint32_t index, BytecodeEmitter *bce)
 {
     return EmitIndex32(cx, JSOP_REGEXP, index, bce);
 }
 
@@ -1056,17 +1079,25 @@ AdjustBlockSlot(ExclusiveContext *cx, By
     }
     return slot;
 }
 
 static bool
 EmitEnterBlock(ExclusiveContext *cx, BytecodeEmitter *bce, ParseNode *pn, JSOp op)
 {
     JS_ASSERT(pn->isKind(PNK_LEXICALSCOPE));
-    if (!EmitObjectOp(cx, pn->pn_objbox, op, bce))
+    StmtInfoBCE *stmt = bce->topStmt;
+    JS_ASSERT(stmt->type == STMT_BLOCK || stmt->type == STMT_SWITCH);
+    JS_ASSERT(stmt->isBlockScope);
+    JS_ASSERT(stmt->blockScopeIndex == bce->blockScopeList.length() - 1);
+    JS_ASSERT(bce->blockScopeList.list[stmt->blockScopeIndex].length == 0);
+    uint32_t scopeObjectIndex = bce->blockScopeList.list[stmt->blockScopeIndex].index;
+    JS_ASSERT(scopeObjectIndex == bce->objectList.length - 1);
+    JS_ASSERT(pn->pn_objbox == bce->objectList.lastbox);
+    if (!EmitInternedObjectOp(cx, scopeObjectIndex, op, bce))
         return false;
 
     Rooted<StaticBlockObject*> blockObj(cx, &pn->pn_objbox->object->as<StaticBlockObject>());
 
     int extraSlots = (op == JSOP_ENTERLET1)
                      ? 1
                      : (op == JSOP_ENTERLET2)
                      ? 2
@@ -2300,17 +2331,18 @@ EmitSwitch(ExclusiveContext *cx, Bytecod
         }
     }
 
     /* Push the discriminant. */
     if (!EmitTree(cx, bce, pn->pn_left))
         return false;
 
     if (pn2->isKind(PNK_LEXICALSCOPE)) {
-        PushBlockScopeBCE(bce, &stmtInfo, pn2->pn_objbox->object->as<StaticBlockObject>(), -1);
+        if (!PushBlockScopeBCE(bce, &stmtInfo, pn2->pn_objbox, -1))
+            return false;
         stmtInfo.type = STMT_SWITCH;
         if (!EmitEnterBlock(cx, bce, pn2, JSOP_ENTERLET1))
             return false;
     }
 
     /* Switch bytecodes run from here till end of final case. */
     top = bce->offset();
     if (pn2->isKind(PNK_STATEMENTLIST)) {
@@ -4188,17 +4220,18 @@ EmitLet(ExclusiveContext *cx, BytecodeEm
     uint32_t alreadyPushed = unsigned(bce->stackDepth - letHeadDepth);
     uint32_t blockObjCount = blockObj->slotCount();
     for (uint32_t i = alreadyPushed; i < blockObjCount; ++i) {
         if (Emit1(cx, bce, JSOP_UNDEFINED) < 0)
             return false;
     }
 
     StmtInfoBCE stmtInfo(cx);
-    PushBlockScopeBCE(bce, &stmtInfo, *blockObj, bce->offset());
+    if (!PushBlockScopeBCE(bce, &stmtInfo, letBody->pn_objbox, bce->offset()))
+        return false;
 
     DebugOnly<ptrdiff_t> bodyBegin = bce->offset();
     if (!EmitEnterBlock(cx, bce, letBody, JSOP_ENTERLET0))
         return false;
 
     if (!EmitTree(cx, bce, letBody->pn_expr))
         return false;
 
@@ -4221,17 +4254,18 @@ EmitLexicalScope(ExclusiveContext *cx, B
 {
     JS_ASSERT(pn->isKind(PNK_LEXICALSCOPE));
     JS_ASSERT(pn->getOp() == JSOP_LEAVEBLOCK);
 
     StmtInfoBCE stmtInfo(cx);
     ObjectBox *objbox = pn->pn_objbox;
     StaticBlockObject &blockObj = objbox->object->as<StaticBlockObject>();
     size_t slots = blockObj.slotCount();
-    PushBlockScopeBCE(bce, &stmtInfo, blockObj, bce->offset());
+    if (!PushBlockScopeBCE(bce, &stmtInfo, objbox, bce->offset()))
+        return false;
 
     if (!EmitEnterBlock(cx, bce, pn, JSOP_ENTERBLOCK))
         return false;
 
     if (!EmitTree(cx, bce, pn->pn_expr))
         return false;
 
     EMIT_UINT16_IMM_OP(JSOP_LEAVEBLOCK, slots);
@@ -4311,17 +4345,18 @@ EmitForOf(ExclusiveContext *cx, Bytecode
 
     // Push a dummy result so that we properly enter iteration midstream.
     if (Emit1(cx, bce, JSOP_UNDEFINED) < 0)                    // ITER RESULT
         return false;
 
     // Enter the block before the loop body, after evaluating the obj.
     StmtInfoBCE letStmt(cx);
     if (letDecl) {
-        PushBlockScopeBCE(bce, &letStmt, *blockObj, bce->offset());
+        if (!PushBlockScopeBCE(bce, &letStmt, pn1->pn_objbox, bce->offset()))
+            return false;
         letStmt.isForLetBlock = true;
         if (!EmitEnterBlock(cx, bce, pn1, JSOP_ENTERLET2))
             return false;
     }
 
     // Jump down to the loop condition to minimize overhead assuming at least
     // one iteration, as the other loop forms do.  Annotate so IonMonkey can
     // find the loop-closing jump.
@@ -4487,17 +4522,18 @@ EmitForIn(ExclusiveContext *cx, Bytecode
      */
     JS_ASSERT(pn->isOp(JSOP_ITER));
     if (Emit2(cx, bce, JSOP_ITER, (uint8_t) pn->pn_iflags) < 0)
         return false;
 
     /* Enter the block before the loop body, after evaluating the obj. */
     StmtInfoBCE letStmt(cx);
     if (letDecl) {
-        PushBlockScopeBCE(bce, &letStmt, *blockObj, bce->offset());
+        if (!PushBlockScopeBCE(bce, &letStmt, pn1->pn_objbox, bce->offset()))
+            return false;
         letStmt.isForLetBlock = true;
         if (!EmitEnterBlock(cx, bce, pn1, JSOP_ENTERLET1))
             return false;
     }
 
     /* Annotate so IonMonkey can find the loop-closing jump. */
     int noteIndex = NewSrcNote(cx, bce, SRC_FOR_IN);
     if (noteIndex < 0)
@@ -6770,35 +6806,18 @@ frontend::FinishTakingSrcNotes(Exclusive
     if (prologCount)
         PodCopy(notes, bce->prolog.notes.begin(), prologCount);
     PodCopy(notes + prologCount, bce->main.notes.begin(), mainCount);
     SN_MAKE_TERMINATOR(&notes[totalCount]);
 
     return true;
 }
 
-bool
-CGTryNoteList::append(JSTryNoteKind kind, unsigned stackDepth, size_t start, size_t end)
-{
-    JS_ASSERT(unsigned(uint16_t(stackDepth)) == stackDepth);
-    JS_ASSERT(start <= end);
-    JS_ASSERT(size_t(uint32_t(start)) == start);
-    JS_ASSERT(size_t(uint32_t(end)) == end);
-
-    JSTryNote note;
-    note.kind = kind;
-    note.stackDepth = uint16_t(stackDepth);
-    note.start = uint32_t(start);
-    note.length = uint32_t(end - start);
-
-    return list.append(note);
-}
-
 void
-CGTryNoteList::finish(TryNoteArray *array)
+CGConstList::finish(ConstArray *array)
 {
     JS_ASSERT(length() == array->length);
 
     for (unsigned i = 0; i < length(); i++)
         array->vector[i] = list[i];
 }
 
 /*
@@ -6873,18 +6892,66 @@ CGObjectList::finish(ObjectArray *array)
     do {
         --cursor;
         JS_ASSERT(!*cursor);
         *cursor = objbox->object;
     } while ((objbox = objbox->emitLink) != nullptr);
     JS_ASSERT(cursor == array->vector);
 }
 
+bool
+CGTryNoteList::append(JSTryNoteKind kind, unsigned stackDepth, size_t start, size_t end)
+{
+    JS_ASSERT(unsigned(uint16_t(stackDepth)) == stackDepth);
+    JS_ASSERT(start <= end);
+    JS_ASSERT(size_t(uint32_t(start)) == start);
+    JS_ASSERT(size_t(uint32_t(end)) == end);
+
+    JSTryNote note;
+    note.kind = kind;
+    note.stackDepth = uint16_t(stackDepth);
+    note.start = uint32_t(start);
+    note.length = uint32_t(end - start);
+
+    return list.append(note);
+}
+
 void
-CGConstList::finish(ConstArray *array)
+CGTryNoteList::finish(TryNoteArray *array)
+{
+    JS_ASSERT(length() == array->length);
+
+    for (unsigned i = 0; i < length(); i++)
+        array->vector[i] = list[i];
+}
+
+bool
+CGBlockScopeList::append(uint32_t scopeObject, uint32_t offset)
+{
+    BlockScopeNote note;
+    mozilla::PodZero(&note);
+
+    note.index = scopeObject;
+    note.start = offset;
+
+    return list.append(note);
+}
+
+void
+CGBlockScopeList::recordEnd(uint32_t index, uint32_t offset)
+{
+    JS_ASSERT(index < length());
+    JS_ASSERT(offset >= list[index].start);
+    JS_ASSERT(list[index].length == 0);
+
+    list[index].length = offset - list[index].start;
+}
+
+void
+CGBlockScopeList::finish(BlockScopeArray *array)
 {
     JS_ASSERT(length() == array->length);
 
     for (unsigned i = 0; i < length(); i++)
         array->vector[i] = list[i];
 }
 
 /*
--- a/js/src/frontend/BytecodeEmitter.h
+++ b/js/src/frontend/BytecodeEmitter.h
@@ -23,43 +23,53 @@ namespace frontend {
 
 class FullParseHandler;
 class ObjectBox;
 class ParseNode;
 template <typename ParseHandler> class Parser;
 class SharedContext;
 class TokenStream;
 
-struct CGTryNoteList {
-    Vector<JSTryNote> list;
-    CGTryNoteList(ExclusiveContext *cx) : list(cx) {}
-
-    bool append(JSTryNoteKind kind, unsigned stackDepth, size_t start, size_t end);
+class CGConstList {
+    Vector<Value> list;
+  public:
+    CGConstList(ExclusiveContext *cx) : list(cx) {}
+    bool append(Value v) { JS_ASSERT_IF(v.isString(), v.toString()->isAtom()); return list.append(v); }
     size_t length() const { return list.length(); }
-    void finish(TryNoteArray *array);
+    void finish(ConstArray *array);
 };
 
 struct CGObjectList {
     uint32_t            length;     /* number of emitted so far objects */
     ObjectBox           *lastbox;   /* last emitted object */
 
     CGObjectList() : length(0), lastbox(nullptr) {}
 
     unsigned add(ObjectBox *objbox);
     unsigned indexOf(JSObject *obj);
     void finish(ObjectArray *array);
 };
 
-class CGConstList {
-    Vector<Value> list;
-  public:
-    CGConstList(ExclusiveContext *cx) : list(cx) {}
-    bool append(Value v) { JS_ASSERT_IF(v.isString(), v.toString()->isAtom()); return list.append(v); }
+struct CGTryNoteList {
+    Vector<JSTryNote> list;
+    CGTryNoteList(ExclusiveContext *cx) : list(cx) {}
+
+    bool append(JSTryNoteKind kind, unsigned stackDepth, size_t start, size_t end);
     size_t length() const { return list.length(); }
-    void finish(ConstArray *array);
+    void finish(TryNoteArray *array);
+};
+
+struct CGBlockScopeList {
+    Vector<BlockScopeNote> list;
+    CGBlockScopeList(ExclusiveContext *cx) : list(cx) {}
+
+    bool append(uint32_t scopeObject, uint32_t offset);
+    void recordEnd(uint32_t index, uint32_t offset);
+    size_t length() const { return list.length(); }
+    void finish(BlockScopeArray *array);
 };
 
 struct StmtInfoBCE;
 
 // Use zero inline elements because these go on the stack and affect how many
 // nested functions are possible.
 typedef Vector<jsbytecode, 0> BytecodeVector;
 typedef Vector<jssrcnote, 0> SrcNotesVector;
@@ -99,27 +109,27 @@ struct BytecodeEmitter
                                     /* compile time block scope chain */
 
     OwnedAtomIndexMapPtr atomIndices; /* literals indexed for mapping */
     unsigned        firstLine;      /* first line, for JSScript::initFromEmitter */
 
     int             stackDepth;     /* current stack depth in script frame */
     unsigned        maxStackDepth;  /* maximum stack depth so far */
 
-    CGTryNoteList   tryNoteList;    /* list of emitted try notes */
-
     unsigned        arrayCompDepth; /* stack depth of array in comprehension */
 
     unsigned        emitLevel;      /* js::frontend::EmitTree recursion level */
 
     CGConstList     constList;      /* constants to be included with the script */
 
     CGObjectList    objectList;     /* list of emitted objects */
     CGObjectList    regexpList;     /* list of emitted regexp that will be
                                        cloned during execution */
+    CGTryNoteList   tryNoteList;    /* list of emitted try notes */
+    CGBlockScopeList blockScopeList;/* list of emitted block scope notes */
 
     uint16_t        typesetCount;   /* Number of JOF_TYPESET opcodes generated */
 
     bool            hasSingletons:1;    /* script contains singleton initializer JSOP_OBJECT */
 
     bool            emittingForInit:1;  /* true while emitting init expr of for; exclude 'in' */
 
     bool            emittingRunOnceLambda:1; /* true while emitting a lambda which is only
--- a/js/src/jit-test/jit_test.py
+++ b/js/src/jit-test/jit_test.py
@@ -159,17 +159,17 @@ def main(argv):
 
     # The full test list is ready. Now create copies for each JIT configuration.
     job_list = []
     if options.tbpl:
         # Running all bits would take forever. Instead, we test a few interesting combinations.
         flags = [
             [], # no flags, normal baseline and ion
             ['--ion-eager'], # implies --baseline-eager
-            ['--ion-eager', '--ion-check-range-analysis'],
+            ['--ion-eager', '--ion-check-range-analysis', '--no-sse3'],
             ['--baseline-eager'],
             ['--baseline-eager', '--no-ti', '--no-fpu'],
             ['--no-baseline', '--no-ion'],
             ['--no-baseline', '--no-ion', '--no-ti'],
         ]
         for test in test_list:
             for variant in flags:
                 new_test = test.copy()
--- a/js/src/jit-test/tests/asm.js/bug928450.js
+++ b/js/src/jit-test/tests/asm.js/bug928450.js
@@ -1,6 +1,18 @@
 (function() {
-    "use asm"
+    "use asm";
     function f() {
-        i((1.5 != 2.) ? 3 : 0)
+        i((1.5 != 2.) ? 3 : 0);
     }
+    return f;
+})();
+
+// Bug 933104
+(function() {
+    "use asm";
+    function f(x) {
+        x = +x;
+        x = -2.;
+        (x > -1.5) ? 0 : 0;
+    }
+    return f;
 })()
--- a/js/src/jit-test/tests/ion/bug936361.js
+++ b/js/src/jit-test/tests/ion/bug936361.js
@@ -1,3 +1,5 @@
+if (typeof ParallelArray === "undefined")
+  quit();
 
 x = ParallelArray([1942], function() {})
 x + watch.call(x, "length", (function() {}));
--- a/js/src/jit/BacktrackingAllocator.cpp
+++ b/js/src/jit/BacktrackingAllocator.cpp
@@ -108,22 +108,22 @@ BacktrackingAllocator::go()
 {
     IonSpew(IonSpew_RegAlloc, "Beginning register allocation");
 
     IonSpew(IonSpew_RegAlloc, "Beginning liveness analysis");
     if (!buildLivenessInfo())
         return false;
     IonSpew(IonSpew_RegAlloc, "Liveness analysis complete");
 
+    if (!init())
+        return false;
+
     if (IonSpewEnabled(IonSpew_RegAlloc))
         dumpLiveness();
 
-    if (!init())
-        return false;
-
     if (!allocationQueue.reserve(graph.numVirtualRegisters() * 3 / 2))
         return false;
 
     if (!groupAndQueueRegisters())
         return false;
 
     if (IonSpewEnabled(IonSpew_RegAlloc))
         dumpRegisterGroups();
@@ -312,31 +312,35 @@ BacktrackingAllocator::tryGroupReusedReg
     LiveInterval *postInterval = new LiveInterval(interval->vreg(), 0);
     if (!postInterval->addRange(inputOf(reg.ins()), interval->end()))
         return false;
 
     LiveIntervalVector newIntervals;
     if (!newIntervals.append(preInterval) || !newIntervals.append(postInterval))
         return false;
 
-    if (!distributeUses(interval, newIntervals) || !split(interval, newIntervals))
+    distributeUses(interval, newIntervals);
+
+    if (!split(interval, newIntervals))
         return false;
 
     JS_ASSERT(usedReg.numIntervals() == 2);
 
     usedReg.setCanonicalSpillExclude(inputOf(reg.ins()));
 
     return tryGroupRegisters(use, def);
 }
 
 bool
 BacktrackingAllocator::groupAndQueueRegisters()
 {
     // Try to group registers with their reused inputs.
-    for (size_t i = 0; i < graph.numVirtualRegisters(); i++) {
+    // Virtual register number 0 is unused.
+    JS_ASSERT(vregs[0u].numIntervals() == 0);
+    for (size_t i = 1; i < graph.numVirtualRegisters(); i++) {
         BacktrackingVirtualRegister &reg = vregs[i];
         if (!reg.numIntervals())
             continue;
 
         if (reg.def()->policy() == LDefinition::MUST_REUSE_INPUT) {
             LUse *use = reg.ins()->getOperand(reg.def()->getReusedInput())->toUse();
             if (!tryGroupReusedRegister(i, use->virtualRegister()))
                 return false;
@@ -352,17 +356,19 @@ BacktrackingAllocator::groupAndQueueRegi
             for (size_t k = 0; k < phi->numOperands(); k++) {
                 uint32_t input = phi->getOperand(k)->toUse()->virtualRegister();
                 if (!tryGroupRegisters(input, output))
                     return false;
             }
         }
     }
 
-    for (size_t i = 0; i < graph.numVirtualRegisters(); i++) {
+    // Virtual register number 0 is unused.
+    JS_ASSERT(vregs[0u].numIntervals() == 0);
+    for (size_t i = 1; i < graph.numVirtualRegisters(); i++) {
         if (mir->shouldCancel("Backtracking Enqueue Registers"))
             return false;
 
         BacktrackingVirtualRegister &reg = vregs[i];
         JS_ASSERT(reg.numIntervals() <= 2);
         JS_ASSERT(!reg.canonicalSpill());
 
         if (!reg.numIntervals())
@@ -486,29 +492,27 @@ BacktrackingAllocator::processInterval(L
                 for (size_t i = 0; i < AnyRegister::Total; i++) {
                     bool success;
                     if (!tryAllocateRegister(registers[i], interval, &success, &fixed, &conflict))
                         return false;
                     if (success)
                         return true;
                 }
             }
-        }
 
-        // Failed to allocate a register for this interval.
-
-        if (attempt < MAX_ATTEMPTS &&
-            canAllocate &&
-            !fixed &&
-            conflict &&
-            computeSpillWeight(conflict) < computeSpillWeight(interval))
-        {
-            if (!evictInterval(conflict))
-                return false;
-            continue;
+            // Failed to allocate a register for this interval.
+            if (attempt < MAX_ATTEMPTS &&
+                !fixed &&
+                conflict &&
+                computeSpillWeight(conflict) < computeSpillWeight(interval))
+            {
+                if (!evictInterval(conflict))
+                    return false;
+                continue;
+            }
         }
 
         // A minimal interval cannot be split any further. If we try to split
         // it at this point we will just end up with the same interval and will
         // enter an infinite loop. Weights and the initial live intervals must
         // be constructed so that any minimal interval is allocatable.
         JS_ASSERT(!minimalInterval(interval));
 
@@ -752,17 +756,17 @@ BacktrackingAllocator::evictInterval(Liv
     }
 
     interval->setAllocation(LAllocation());
 
     size_t priority = computePriority(interval);
     return allocationQueue.insert(QueueItem(interval, priority));
 }
 
-bool
+void
 BacktrackingAllocator::distributeUses(LiveInterval *interval,
                                       const LiveIntervalVector &newIntervals)
 {
     JS_ASSERT(newIntervals.length() >= 2);
 
     // Simple redistribution of uses from an old interval to a set of new
     // intervals. Intervals are permitted to overlap, in which case this will
     // assign uses in the overlapping section to the interval with the latest
@@ -777,26 +781,24 @@ BacktrackingAllocator::distributeUses(Li
             LiveInterval *newInterval = newIntervals[i];
             if (newInterval->covers(pos)) {
                 if (!addInterval || newInterval->start() < addInterval->start())
                     addInterval = newInterval;
             }
         }
         addInterval->addUse(new UsePosition(iter->use, iter->pos));
     }
-
-    return true;
 }
 
 bool
 BacktrackingAllocator::split(LiveInterval *interval,
                              const LiveIntervalVector &newIntervals)
 {
     if (IonSpewEnabled(IonSpew_RegAlloc)) {
-        IonSpew(IonSpew_RegAlloc, "splitting interval v%u %s:",
+        IonSpew(IonSpew_RegAlloc, "splitting interval v%u %s into:",
                 interval->vreg(), IntervalString(interval));
         for (size_t i = 0; i < newIntervals.length(); i++)
             IonSpew(IonSpew_RegAlloc, "    %s", IntervalString(newIntervals[i]));
     }
 
     JS_ASSERT(newIntervals.length() >= 2);
 
     // Find the earliest interval in the new list.
@@ -880,17 +882,19 @@ BacktrackingAllocator::spill(LiveInterva
     }
 }
 
 // Add moves to resolve conflicting assignments between a block and its
 // predecessors. XXX try to common this with LinearScanAllocator.
 bool
 BacktrackingAllocator::resolveControlFlow()
 {
-    for (size_t i = 0; i < graph.numVirtualRegisters(); i++) {
+    // Virtual register number 0 is unused.
+    JS_ASSERT(vregs[0u].numIntervals() == 0);
+    for (size_t i = 1; i < graph.numVirtualRegisters(); i++) {
         BacktrackingVirtualRegister *reg = &vregs[i];
 
         if (mir->shouldCancel("Backtracking Resolve Control Flow (vreg loop)"))
             return false;
 
         for (size_t j = 1; j < reg->numIntervals(); j++) {
             LiveInterval *interval = reg->getInterval(j);
             JS_ASSERT(interval->index() == j);
@@ -996,21 +1000,21 @@ bool
 BacktrackingAllocator::isReusedInput(LUse *use, LInstruction *ins, bool considerCopy)
 {
     if (LDefinition *def = FindReusingDefinition(ins, use))
         return considerCopy || !vregs[def->virtualRegister()].mustCopyInput();
     return false;
 }
 
 bool
-BacktrackingAllocator::isRegisterUse(LUse *use, LInstruction *ins)
+BacktrackingAllocator::isRegisterUse(LUse *use, LInstruction *ins, bool considerCopy)
 {
     switch (use->policy()) {
       case LUse::ANY:
-        return isReusedInput(use, ins);
+        return isReusedInput(use, ins, considerCopy);
 
       case LUse::REGISTER:
       case LUse::FIXED:
         return true;
 
       default:
         return false;
     }
@@ -1030,17 +1034,19 @@ BacktrackingAllocator::isRegisterDefinit
         return false;
 
     return true;
 }
 
 bool
 BacktrackingAllocator::reifyAllocations()
 {
-    for (size_t i = 0; i < graph.numVirtualRegisters(); i++) {
+    // Virtual register number 0 is unused.
+    JS_ASSERT(vregs[0u].numIntervals() == 0);
+    for (size_t i = 1; i < graph.numVirtualRegisters(); i++) {
         VirtualRegister *reg = &vregs[i];
 
         if (mir->shouldCancel("Backtracking Reify Allocations (main loop)"))
             return false;
 
         for (size_t j = 0; j < reg->numIntervals(); j++) {
             LiveInterval *interval = reg->getInterval(j);
             JS_ASSERT(interval->index() == j);
@@ -1090,17 +1096,19 @@ BacktrackingAllocator::reifyAllocations(
     return true;
 }
 
 bool
 BacktrackingAllocator::populateSafepoints()
 {
     size_t firstSafepoint = 0;
 
-    for (uint32_t i = 0; i < vregs.numVirtualRegisters(); i++) {
+    // Virtual register number 0 is unused.
+    JS_ASSERT(!vregs[0u].def());
+    for (uint32_t i = 1; i < vregs.numVirtualRegisters(); i++) {
         BacktrackingVirtualRegister *reg = &vregs[i];
 
         if (!reg->def() || (!IsTraceable(reg) && !IsSlotsOrElements(reg) && !IsNunbox(reg)))
             continue;
 
         firstSafepoint = findFirstSafepoint(reg->getInterval(0), firstSafepoint);
         if (firstSafepoint >= graph.numSafepoints())
             break;
@@ -1127,17 +1135,17 @@ BacktrackingAllocator::populateSafepoint
                              def->type() == LDefinition::GENERAL || def->type() == LDefinition::DOUBLE);
                 continue;
             }
 
             LSafepoint *safepoint = ins->safepoint();
 
             for (size_t k = 0; k < reg->numIntervals(); k++) {
                 LiveInterval *interval = reg->getInterval(k);
-                if (!interval->covers(inputOf(ins)))
+                if (!interval->covers(outputOf(ins)))
                     continue;
 
                 LAllocation *a = interval->getAllocation();
                 if (a->isGeneralReg() && ins->isCall())
                     continue;
 
                 switch (reg->type()) {
                   case LDefinition::OBJECT:
@@ -1167,17 +1175,20 @@ BacktrackingAllocator::populateSafepoint
 
     return true;
 }
 
 void
 BacktrackingAllocator::dumpRegisterGroups()
 {
     fprintf(stderr, "Register groups:\n");
-    for (size_t i = 0; i < graph.numVirtualRegisters(); i++) {
+
+    // Virtual register number 0 is unused.
+    JS_ASSERT(!vregs[0u].group());
+    for (size_t i = 1; i < graph.numVirtualRegisters(); i++) {
         VirtualRegisterGroup *group = vregs[i].group();
         if (group && i == group->canonicalReg()) {
             for (size_t j = 0; j < group->registers.length(); j++)
                 fprintf(stderr, " v%u", group->registers[j]);
             fprintf(stderr, "\n");
         }
     }
 }
@@ -1195,21 +1206,22 @@ BacktrackingAllocator::dumpLiveness()
         fprintf(stderr, "\nBlock %lu", static_cast<unsigned long>(blockIndex));
         for (size_t i = 0; i < mir->numSuccessors(); i++)
             fprintf(stderr, " [successor %u]", mir->getSuccessor(i)->id());
         fprintf(stderr, "\n");
 
         for (size_t i = 0; i < block->numPhis(); i++) {
             LPhi *phi = block->getPhi(i);
 
-            fprintf(stderr, "[%u,%u Phi v%u <-",
-                    inputOf(phi).pos(), outputOf(phi).pos(),
+            // Don't print the inputOf for phi nodes, since it's never used.
+            fprintf(stderr, "[,%u Phi [def v%u] <-",
+                    outputOf(phi).pos(),
                     phi->getDef(0)->virtualRegister());
             for (size_t j = 0; j < phi->numOperands(); j++)
-                fprintf(stderr, " v%u", phi->getOperand(j)->toUse()->virtualRegister());
+                fprintf(stderr, " %s", phi->getOperand(j)->toString());
             fprintf(stderr, "]\n");
         }
 
         for (LInstructionIterator iter = block->begin(); iter != block->end(); iter++) {
             LInstruction *ins = *iter;
 
             fprintf(stderr, "[%u,%u %s]", inputOf(ins).pos(), outputOf(ins).pos(), ins->opName());
 
@@ -1219,31 +1231,32 @@ BacktrackingAllocator::dumpLiveness()
                     fprintf(stderr, " [temp v%u]", temp->virtualRegister());
             }
 
             for (size_t i = 0; i < ins->numDefs(); i++) {
                 LDefinition *def = ins->getDef(i);
                 fprintf(stderr, " [def v%u]", def->virtualRegister());
             }
 
-            for (LInstruction::InputIterator alloc(*ins); alloc.more(); alloc.next()) {
-                if (alloc->isUse())
-                    fprintf(stderr, " [use v%u]", alloc->toUse()->virtualRegister());
-            }
+            for (LInstruction::InputIterator alloc(*ins); alloc.more(); alloc.next())
+                fprintf(stderr, " [use %s]", alloc->toString());
 
             fprintf(stderr, "\n");
         }
     }
 
     fprintf(stderr, "\nLive Ranges:\n\n");
 
     for (size_t i = 0; i < AnyRegister::Total; i++)
-        fprintf(stderr, "reg %s: %s\n", AnyRegister::FromCode(i).name(), IntervalString(fixedIntervals[i]));
+        if (registers[i].allocatable)
+            fprintf(stderr, "reg %s: %s\n", AnyRegister::FromCode(i).name(), IntervalString(fixedIntervals[i]));
 
-    for (size_t i = 0; i < graph.numVirtualRegisters(); i++) {
+    // Virtual register number 0 is unused.
+    JS_ASSERT(vregs[0u].numIntervals() == 0);
+    for (size_t i = 1; i < graph.numVirtualRegisters(); i++) {
         fprintf(stderr, "v%lu:", static_cast<unsigned long>(i));
         VirtualRegister &vreg = vregs[i];
         for (size_t j = 0; j < vreg.numIntervals(); j++) {
             if (j)
                 fprintf(stderr, " *");
             fprintf(stderr, "%s", IntervalString(vreg.getInterval(j)));
         }
         fprintf(stderr, "\n");
@@ -1254,47 +1267,55 @@ BacktrackingAllocator::dumpLiveness()
 }
 
 #ifdef DEBUG
 struct BacktrackingAllocator::PrintLiveIntervalRange
 {
     void operator()(const AllocatedRange &item)
     {
         if (item.range == item.interval->getRange(0)) {
-            fprintf(stderr, "  v%u: %s\n",
-                   item.interval->hasVreg() ? item.interval->vreg() : 0,
-                   IntervalString(item.interval));
+            if (item.interval->hasVreg())
+                fprintf(stderr, "  v%u: %s\n",
+                       item.interval->vreg(),
+                       IntervalString(item.interval));
+            else
+                fprintf(stderr, "  fixed: %s\n",
+                       IntervalString(item.interval));
         }
     }
 };
 #endif
 
 void
 BacktrackingAllocator::dumpAllocations()
 {
 #ifdef DEBUG
     fprintf(stderr, "Allocations:\n");
 
-    for (size_t i = 0; i < graph.numVirtualRegisters(); i++) {
+    // Virtual register number 0 is unused.
+    JS_ASSERT(vregs[0u].numIntervals() == 0);
+    for (size_t i = 1; i < graph.numVirtualRegisters(); i++) {
         fprintf(stderr, "v%lu:", static_cast<unsigned long>(i));
         VirtualRegister &vreg = vregs[i];
         for (size_t j = 0; j < vreg.numIntervals(); j++) {
             if (j)
                 fprintf(stderr, " *");
             LiveInterval *interval = vreg.getInterval(j);
             fprintf(stderr, "%s :: %s", IntervalString(interval), interval->getAllocation()->toString());
         }
         fprintf(stderr, "\n");
     }
 
     fprintf(stderr, "\n");
 
     for (size_t i = 0; i < AnyRegister::Total; i++) {
-        fprintf(stderr, "reg %s:\n", AnyRegister::FromCode(i).name());
-        registers[i].allocations.forEach(PrintLiveIntervalRange());
+        if (registers[i].allocatable) {
+            fprintf(stderr, "reg %s:\n", AnyRegister::FromCode(i).name());
+            registers[i].allocations.forEach(PrintLiveIntervalRange());
+        }
     }
 
     fprintf(stderr, "\n");
 #endif // DEBUG
 }
 
 bool
 BacktrackingAllocator::addLiveInterval(LiveIntervalVector &intervals, uint32_t vreg,
@@ -1337,17 +1358,17 @@ BacktrackingAllocator::computePriority(c
     return priority;
 }
 
 bool
 BacktrackingAllocator::minimalDef(const LiveInterval *interval, LInstruction *ins)
 {
     // Whether interval is a minimal interval capturing a definition at ins.
     return (interval->end() <= minimalDefEnd(ins).next()) &&
-        (interval->start() == inputOf(ins) || interval->start() == outputOf(ins));
+        ((!ins->isPhi() && interval->start() == inputOf(ins)) || interval->start() == outputOf(ins));
 }
 
 bool
 BacktrackingAllocator::minimalUse(const LiveInterval *interval, LInstruction *ins)