summaryrefslogtreecommitdiff
path: root/security
diff options
context:
space:
mode:
authorryoon <ryoon@pkgsrc.org>2016-02-14 07:30:54 +0000
committerryoon <ryoon@pkgsrc.org>2016-02-14 07:30:54 +0000
commit9795964103ad1dca14172986c21a8622ceba9349 (patch)
tree2c7586de3352d694a7a5b121458313a161a1698f /security
parenta3c414506928979bb0111a98513ffecfc5431575 (diff)
downloadpkgsrc-9795964103ad1dca14172986c21a8622ceba9349.tar.gz
Import tor-browser-5.5.2 as security/tor-browser.
What is the Tor Browser? The Tor software protects you by bouncing your communications around a distributed network of relays run by volunteers all around the world: it prevents somebody watching your Internet connection from learning what sites you visit, it prevents the sites you visit from learning your physical location, and it lets you access sites which are blocked.
Diffstat (limited to 'security')
-rw-r--r--security/tor-browser/DESCR8
-rw-r--r--security/tor-browser/MESSAGE22
-rw-r--r--security/tor-browser/Makefile96
-rw-r--r--security/tor-browser/PLIST3422
-rw-r--r--security/tor-browser/distinfo172
-rw-r--r--security/tor-browser/files/desktop.in191
-rw-r--r--security/tor-browser/hacks.mk13
-rw-r--r--security/tor-browser/options.mk60
-rw-r--r--security/tor-browser/patches/patch-aa428
-rw-r--r--security/tor-browser/patches/patch-accessible_atk_Platform.cpp98
-rw-r--r--security/tor-browser/patches/patch-al16
-rw-r--r--security/tor-browser/patches/patch-ao15
-rw-r--r--security/tor-browser/patches/patch-as42
-rw-r--r--security/tor-browser/patches/patch-b2g_installer_Makefile.in15
-rw-r--r--security/tor-browser/patches/patch-b2g_installer_package-manifest.in13
-rw-r--r--security/tor-browser/patches/patch-bf13
-rw-r--r--security/tor-browser/patches/patch-bg24
-rw-r--r--security/tor-browser/patches/patch-browser_app_nsBrowserApp.cpp36
-rw-r--r--security/tor-browser/patches/patch-browser_installer_package-manifest.in24
-rw-r--r--security/tor-browser/patches/patch-build_autoconf_compiler-opts.m422
-rw-r--r--security/tor-browser/patches/patch-build_autoconf_nss.m446
-rw-r--r--security/tor-browser/patches/patch-build_gyp.mozbuild42
-rw-r--r--security/tor-browser/patches/patch-build_pgo_profileserver.py13
-rw-r--r--security/tor-browser/patches/patch-config_Makefile.in21
-rw-r--r--security/tor-browser/patches/patch-config_baseconfig.mk19
-rw-r--r--security/tor-browser/patches/patch-config_external_moz.build48
-rw-r--r--security/tor-browser/patches/patch-config_rules.mk12
-rw-r--r--security/tor-browser/patches/patch-config_stl__wrappers_ios8
-rw-r--r--security/tor-browser/patches/patch-config_stl__wrappers_ostream8
-rw-r--r--security/tor-browser/patches/patch-config_system-headers96
-rw-r--r--security/tor-browser/patches/patch-dom_base_moz.build14
-rw-r--r--security/tor-browser/patches/patch-dom_events_MessageEvent.h14
-rw-r--r--security/tor-browser/patches/patch-dom_media_AudioStream.h13
-rw-r--r--security/tor-browser/patches/patch-dom_media_gstreamer_GStreamerAllocator.cpp12
-rw-r--r--security/tor-browser/patches/patch-dom_media_moz.build32
-rw-r--r--security/tor-browser/patches/patch-dom_plugins_ipc_PluginModuleChild.cpp31
-rw-r--r--security/tor-browser/patches/patch-dom_plugins_ipc_PluginModuleChild.h13
-rw-r--r--security/tor-browser/patches/patch-dom_plugins_ipc_PluginProcessChild.cpp16
-rw-r--r--security/tor-browser/patches/patch-dom_system_OSFileConstants.cpp64
-rw-r--r--security/tor-browser/patches/patch-extensions_spellcheck_hunspell_src_mozHunspell.cpp21
-rw-r--r--security/tor-browser/patches/patch-gfx_graphite2_moz-gr-update.sh20
-rw-r--r--security/tor-browser/patches/patch-gfx_graphite2_src_Bidi.cpp16
-rw-r--r--security/tor-browser/patches/patch-gfx_graphite2_src_moz.build15
-rw-r--r--security/tor-browser/patches/patch-gfx_moz.build26
-rw-r--r--security/tor-browser/patches/patch-gfx_skia_generate__mozbuild.py14
-rw-r--r--security/tor-browser/patches/patch-gfx_skia_moz.build14
-rw-r--r--security/tor-browser/patches/patch-gfx_thebes_moz.build25
-rw-r--r--security/tor-browser/patches/patch-gfx_ycbcr_moz.build13
-rw-r--r--security/tor-browser/patches/patch-gfx_ycbcr_yuv__row__arm.S317
-rw-r--r--security/tor-browser/patches/patch-image_decoders_nsJPEGDecoder.cpp363
-rw-r--r--security/tor-browser/patches/patch-intl_hyphenation_hnjalloc.h14
-rw-r--r--security/tor-browser/patches/patch-intl_unicharutil_util_moz.build13
-rw-r--r--security/tor-browser/patches/patch-ipc_chromium_Makefile.in13
-rw-r--r--security/tor-browser/patches/patch-ipc_chromium_moz.build18
-rw-r--r--security/tor-browser/patches/patch-ipc_chromium_src_base_atomicops.h15
-rw-r--r--security/tor-browser/patches/patch-ipc_chromium_src_base_file__util.h14
-rw-r--r--security/tor-browser/patches/patch-ipc_chromium_src_base_file__util__posix.cc51
-rw-r--r--security/tor-browser/patches/patch-ipc_chromium_src_base_message__loop.cc40
-rw-r--r--security/tor-browser/patches/patch-ipc_chromium_src_base_platform__thread.h14
-rw-r--r--security/tor-browser/patches/patch-ipc_chromium_src_base_platform__thread__posix.cc92
-rw-r--r--security/tor-browser/patches/patch-ipc_chromium_src_base_process__util.h14
-rw-r--r--security/tor-browser/patches/patch-ipc_chromium_src_base_process__util__bsd.cc17
-rw-r--r--security/tor-browser/patches/patch-ipc_chromium_src_base_process__util__posix.cc22
-rw-r--r--security/tor-browser/patches/patch-ipc_chromium_src_base_scoped__nsautorelease__pool.h45
-rw-r--r--security/tor-browser/patches/patch-ipc_chromium_src_base_sys__info__posix.cc28
-rw-r--r--security/tor-browser/patches/patch-ipc_chromium_src_base_time__posix.cc15
-rw-r--r--security/tor-browser/patches/patch-ipc_chromium_src_build_build__config.h22
-rw-r--r--security/tor-browser/patches/patch-ipc_chromium_src_chrome_common_transport__dib.h13
-rw-r--r--security/tor-browser/patches/patch-ipc_glue_GeckoChildProcessHost.cpp48
-rw-r--r--security/tor-browser/patches/patch-ipc_glue_ScopedXREEmbed.cpp16
-rw-r--r--security/tor-browser/patches/patch-ipc_glue_StringUtil.cpp24
-rw-r--r--security/tor-browser/patches/patch-ipc_glue_moz.build15
-rw-r--r--security/tor-browser/patches/patch-ipc_ipdl_ipdl_cxx_ast.py25
-rw-r--r--security/tor-browser/patches/patch-ipc_ipdl_ipdl_cxx_cgen.py27
-rw-r--r--security/tor-browser/patches/patch-ipc_ipdl_ipdl_lower.py17
-rw-r--r--security/tor-browser/patches/patch-js__src__vm__SPSProfiler.cpp17
-rw-r--r--security/tor-browser/patches/patch-js_public_CallArgs.h13
-rw-r--r--security/tor-browser/patches/patch-js_src_Makefile.in14
-rw-r--r--security/tor-browser/patches/patch-js_src_asmjs_AsmJSSignalHandlers.cpp22
-rw-r--r--security/tor-browser/patches/patch-js_src_ctypes_CTypes.h28
-rw-r--r--security/tor-browser/patches/patch-js_src_frontend_ParseMaps.cpp12
-rw-r--r--security/tor-browser/patches/patch-js_src_gc_Statistics.cpp15
-rw-r--r--security/tor-browser/patches/patch-js_src_jit-LIR.cpp13
-rw-r--r--security/tor-browser/patches/patch-js_src_jit_ExecutableAllocator.h16
-rw-r--r--security/tor-browser/patches/patch-js_src_jit_MIR.cpp13
-rw-r--r--security/tor-browser/patches/patch-js_src_jit_arm_Architecture-arm.cpp13
-rw-r--r--security/tor-browser/patches/patch-js_src_jsapi.cpp13
-rw-r--r--security/tor-browser/patches/patch-js_src_jsdate.cpp20
-rw-r--r--security/tor-browser/patches/patch-js_src_jskwgen.cpp13
-rw-r--r--security/tor-browser/patches/patch-js_src_jsmath.cpp13
-rw-r--r--security/tor-browser/patches/patch-js_src_shell_jsoptparse.cpp13
-rw-r--r--security/tor-browser/patches/patch-js_xpconnect_src_XPCConvert.cpp16
-rw-r--r--security/tor-browser/patches/patch-js_xpconnect_src_xpcprivate.h17
-rw-r--r--security/tor-browser/patches/patch-media_libcubeb_AUTHORS9
-rw-r--r--security/tor-browser/patches/patch-media_libcubeb_src_cubeb.c24
-rw-r--r--security/tor-browser/patches/patch-media_libcubeb_src_cubeb__alsa.c673
-rw-r--r--security/tor-browser/patches/patch-media_libcubeb_src_cubeb__oss.c407
-rw-r--r--security/tor-browser/patches/patch-media_libcubeb_src_moz.build48
-rw-r--r--security/tor-browser/patches/patch-media_libpng_pngpriv.h12
-rw-r--r--security/tor-browser/patches/patch-media_libsoundtouch_src_cpu__detect__x86.cpp15
-rw-r--r--security/tor-browser/patches/patch-media_libstagefright_frameworks_av_media_libstagefright_foundation_AString.cpp22
-rw-r--r--security/tor-browser/patches/patch-media_libstagefright_system_core_liblog_fake__log__device.c27
-rw-r--r--security/tor-browser/patches/patch-media_libstagefright_system_core_liblog_logprint.c22
-rw-r--r--security/tor-browser/patches/patch-media_libtheora_lib_arm_armcpu.c25
-rw-r--r--security/tor-browser/patches/patch-media_libtheora_lib_info.c13
-rw-r--r--security/tor-browser/patches/patch-media_libtheora_moz.build10
-rw-r--r--security/tor-browser/patches/patch-media_libtremor_Makefile.in14
-rw-r--r--security/tor-browser/patches/patch-media_libtremor_moz.build10
-rw-r--r--security/tor-browser/patches/patch-media_libvorbis_Makefile.in14
-rw-r--r--security/tor-browser/patches/patch-media_libvorbis_lib_vorbis_info.c13
-rw-r--r--security/tor-browser/patches/patch-media_libvorbis_moz.build11
-rw-r--r--security/tor-browser/patches/patch-media_libyuv_include_libyuv_scale__row.h17
-rw-r--r--security/tor-browser/patches/patch-media_mtransport_third__party_nICEr_src_util_mbslen.c18
-rw-r--r--security/tor-browser/patches/patch-media_mtransport_third__party_nrappkit_src_port_generic_include_sys_queue.h19
-rw-r--r--security/tor-browser/patches/patch-media_webrtc_signaling_test_moz.build26
-rw-r--r--security/tor-browser/patches/patch-media_webrtc_trunk_webrtc_build_common.gypi13
-rw-r--r--security/tor-browser/patches/patch-media_webrtc_trunk_webrtc_modules_audio__coding_codecs_opus_opus.gypi27
-rw-r--r--security/tor-browser/patches/patch-media_webrtc_trunk_webrtc_modules_audio__coding_neteq_neteq.gypi28
-rw-r--r--security/tor-browser/patches/patch-media_webrtc_trunk_webrtc_modules_desktop__capture_screen__capturer.cc13
-rw-r--r--security/tor-browser/patches/patch-media_webrtc_trunk_webrtc_modules_desktop__capture_screen__capturer.h13
-rw-r--r--security/tor-browser/patches/patch-media_webrtc_trunk_webrtc_modules_video__capture_linux_device__info__linux.cc38
-rw-r--r--security/tor-browser/patches/patch-media_webrtc_trunk_webrtc_modules_video__capture_linux_video__capture__linux.cc30
-rw-r--r--security/tor-browser/patches/patch-media_webrtc_trunk_webrtc_modules_video__capture_video__capture.gypi34
-rw-r--r--security/tor-browser/patches/patch-media_webrtc_trunk_webrtc_system__wrappers_source_spreadsortlib_spreadsort.hpp32
-rw-r--r--security/tor-browser/patches/patch-memory_build_mozjemalloc__compat.c53
-rw-r--r--security/tor-browser/patches/patch-memory_jemalloc_Makefile.in12
-rw-r--r--security/tor-browser/patches/patch-memory_jemalloc_src_configure13
-rw-r--r--security/tor-browser/patches/patch-memory_mozalloc_mozalloc__abort.cpp16
-rw-r--r--security/tor-browser/patches/patch-memory_volatile_VolatileBufferOSX.cpp19
-rw-r--r--security/tor-browser/patches/patch-mfbt_Alignment.h48
-rw-r--r--security/tor-browser/patches/patch-mfbt_Attributes.h32
-rw-r--r--security/tor-browser/patches/patch-mfbt_Poison.cpp20
-rw-r--r--security/tor-browser/patches/patch-mobile_android_installer_Makefile.in15
-rw-r--r--security/tor-browser/patches/patch-mobile_android_installer_package-manifest.in13
-rw-r--r--security/tor-browser/patches/patch-modules_libjar_nsZipArchive.cpp15
-rw-r--r--security/tor-browser/patches/patch-netwerk_base_nsNetUtil.h39
-rw-r--r--security/tor-browser/patches/patch-netwerk_dns_moz.build13
-rw-r--r--security/tor-browser/patches/patch-netwerk_protocol_http_Http2Session.cpp94
-rw-r--r--security/tor-browser/patches/patch-pb11
-rw-r--r--security/tor-browser/patches/patch-pc12
-rw-r--r--security/tor-browser/patches/patch-rc16
-rw-r--r--security/tor-browser/patches/patch-security_manager_ssl_src_nsNSSComponent.cpp12
-rw-r--r--security/tor-browser/patches/patch-toolkit_components_osfile_modules_osfile__unix__back.jsm49
-rw-r--r--security/tor-browser/patches/patch-toolkit_components_osfile_modules_osfile__unix__front.jsm13
-rw-r--r--security/tor-browser/patches/patch-toolkit_library_moz.build75
-rw-r--r--security/tor-browser/patches/patch-toolkit_xre_nsAppRunner.cpp46
-rw-r--r--security/tor-browser/patches/patch-toolkit_xre_nsEmbedFunctions.cpp22
-rw-r--r--security/tor-browser/patches/patch-toolkit_xre_nsXREDirProvider.cpp87
-rw-r--r--security/tor-browser/patches/patch-webapprt_moz.build15
-rw-r--r--security/tor-browser/patches/patch-widget_gtk_gtk2drawing.c22
-rw-r--r--security/tor-browser/patches/patch-widget_gtk_gtk3drawing.c833
-rw-r--r--security/tor-browser/patches/patch-widget_gtk_gtkdrawing.h41
-rw-r--r--security/tor-browser/patches/patch-widget_gtk_nsNativeThemeGTK.cpp30
-rw-r--r--security/tor-browser/patches/patch-xpcom_base_nsStackWalk.cpp59
-rw-r--r--security/tor-browser/patches/patch-xpcom_base_nscore.h13
-rw-r--r--security/tor-browser/patches/patch-xpcom_build_PoisonIOInterposer.h58
-rw-r--r--security/tor-browser/patches/patch-xpcom_build_XPCOMInit.cpp28
-rw-r--r--security/tor-browser/patches/patch-xpcom_components_Module.h13
-rw-r--r--security/tor-browser/patches/patch-xpcom_glue_standalone_nsXPCOMGlue.cpp17
-rw-r--r--security/tor-browser/patches/patch-xpcom_io_nsAppFileLocationProvider.cpp27
-rw-r--r--security/tor-browser/patches/patch-xpcom_reflect_xptcall_md_unix_Makefile.in44
-rw-r--r--security/tor-browser/patches/patch-xpcom_reflect_xptcall_md_unix_moz.build22
-rw-r--r--security/tor-browser/patches/patch-xpcom_reflect_xptcall_md_unix_xptcinvoke__arm__netbsd.cpp527
-rw-r--r--security/tor-browser/patches/patch-xpcom_reflect_xptcall_md_unix_xptcinvoke__asm__mips.S52
-rw-r--r--security/tor-browser/patches/patch-xpcom_reflect_xptcall_md_unix_xptcinvoke__asm__ppc__netbsd.s25
-rw-r--r--security/tor-browser/patches/patch-xpcom_reflect_xptcall_md_unix_xptcinvoke__gcc__x86__unix.cpp13
-rw-r--r--security/tor-browser/patches/patch-xpcom_reflect_xptcall_md_unix_xptcinvoke__netbsd__m68k.cpp75
-rw-r--r--security/tor-browser/patches/patch-xpcom_reflect_xptcall_md_unix_xptcinvoke__ppc__netbsd.cpp47
-rw-r--r--security/tor-browser/patches/patch-xpcom_reflect_xptcall_md_unix_xptcinvoke__sparc64__netbsd.cpp89
-rw-r--r--security/tor-browser/patches/patch-xpcom_reflect_xptcall_md_unix_xptcstubs__arm__netbsd.cpp217
-rw-r--r--security/tor-browser/patches/patch-xpcom_reflect_xptcall_md_unix_xptcstubs__asm__mips.S52
-rw-r--r--security/tor-browser/patches/patch-xpcom_reflect_xptcall_md_unix_xptcstubs__asm__sparc64__netbsd.s71
-rw-r--r--security/tor-browser/patches/patch-xpcom_reflect_xptcall_md_unix_xptcstubs__gcc__x86__unix.cpp13
-rw-r--r--security/tor-browser/patches/patch-xpcom_reflect_xptcall_md_unix_xptcstubs__netbsd__m68k.cpp41
-rw-r--r--security/tor-browser/patches/patch-xulrunner_installer_Makefile.in15
175 files changed, 11890 insertions, 0 deletions
diff --git a/security/tor-browser/DESCR b/security/tor-browser/DESCR
new file mode 100644
index 00000000000..2321787fd22
--- /dev/null
+++ b/security/tor-browser/DESCR
@@ -0,0 +1,8 @@
+What is the Tor Browser?
+
+The Tor software protects you by bouncing your communications around
+a distributed network of relays run by volunteers all around the
+world: it prevents somebody watching your Internet connection from
+learning what sites you visit, it prevents the sites you visit from
+learning your physical location, and it lets you access sites which
+are blocked.
diff --git a/security/tor-browser/MESSAGE b/security/tor-browser/MESSAGE
new file mode 100644
index 00000000000..2c6bcbe1060
--- /dev/null
+++ b/security/tor-browser/MESSAGE
@@ -0,0 +1,22 @@
+===========================================================================
+$NetBSD: MESSAGE,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+This package provides basic Tor Browser.
+Be sure to run Tor daemon before your Tor Browser runs.
+
+And you should install following extensions to ensude secure Tor connection.
+
+HTTPS Everywhere
+https://addons.mozilla.org/en-US/firefox/addon/https-everywhere/
+
+NoScript Security Suite
+https://addons.mozilla.org/en-US/firefox/addon/noscript/
+
+TorButton
+https://dist.torproject.org/torbutton/
+
+net/tor provides localhost:9050 socks proxy. However Tor Browser and
+TorButton presumes localhost:9150 socks proxy. Be sure to change
+port number in TorButton preferences window.
+
+===========================================================================
diff --git a/security/tor-browser/Makefile b/security/tor-browser/Makefile
new file mode 100644
index 00000000000..152499d1560
--- /dev/null
+++ b/security/tor-browser/Makefile
@@ -0,0 +1,96 @@
+# $NetBSD: Makefile,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+TORBVER= 5.5.2
+
+DISTNAME= tor-browser-38.6.1esr-5.5-1
+PKGNAME= tor-browser-${TORBVER}
+CATEGORIES= www
+MASTER_SITES+= ${MASTER_SITE_LOCAL}
+EXTRACT_SUFX= .tar.xz
+
+MAINTAINER= ryoon@NetBSD.org
+HOMEPAGE= https://www.torproject.org/projects/torbrowser.html.en
+COMMENT= Tor Browser based on Firefox
+LICENSE= mpl-1.1
+
+DEPENDS+= tor-[0-9]*:../../net/tor
+
+# Remove hardcoded build directory.
+SUBST_CLASSES+= fix-build-dir
+SUBST_STAGE.fix-build-dir+= pre-configure
+SUBST_FILES.fix-build-dir+= .mozconfig
+SUBST_SED.fix-build-dir+= -e 's,mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/obj-@CONFIG_GUESS@,,'
+
+MOZILLA_DIR= # empty
+
+CONFIGURE_ARGS+= --enable-application=browser
+CONFIGURE_ARGS+= --disable-tor-browser-update
+CONFIGURE_ARGS+= --disable-webrtc
+CONFIGURE_ARGS+= --disable-gio
+CONFIGURE_ARGS+= --disable-dbus
+CONFIGURE_ARGS+= --disable-gnomeui
+CONFIGURE_ARGS+= --disable-libnotify
+
+# Avoid build failure from security/manager/ssl/src/nsNSSCallbacks.cpp:601
+CFLAGS+= -fpermissive
+
+# workround for link of libxul.so etc.
+LDFLAGS+= ${COMPILER_RPATH_FLAG}${PREFIX}/lib/tor-browser ${COMPILER_RPATH_FLAG}${PREFIX}/lib
+LDFLAGS.SunOS+= -lm
+
+ALL_ENV+= MOZILLA_PKG_NAME=tor-browser
+
+.include "../../mk/bsd.prefs.mk"
+
+# Avoid ld "invalid section index" errors.
+.if ${OPSYS} == "SunOS"
+BUILDLINK_TRANSFORM+= rm:-fdata-sections
+BUILDLINK_TRANSFORM+= rm:-ffunction-sections
+.endif
+
+LDFLAGS.DragonFly= -lplc4 -lnspr4
+LDFLAGS.FreeBSD= -lplc4 -lnspr4
+LDFLAGS.Linux= -lnspr4
+
+.include "../../www/firefox38/mozilla-common.mk"
+.include "options.mk"
+
+CHECK_INTERPRETER_SKIP+=lib/firefox-sdk/sdk/bin/header.py
+CHECK_INTERPRETER_SKIP+=lib/firefox-sdk/sdk/bin/typelib.py
+CHECK_INTERPRETER_SKIP+=lib/firefox-sdk/sdk/bin/xpidl.py
+CHECK_INTERPRETER_SKIP+=lib/firefox-sdk/sdk/bin/xpt.py
+
+MOZILLA= tor-browser
+MOZILLA_ICON= ${WRKSRC}/${OBJDIR}/dist/firefox/browser/chrome/icons/default/default48.png
+MOZILLA_NAME= TorBrowser
+
+SUBST_CLASSES+= sys-dic
+SUBST_STAGE.sys-dic= pre-configure
+SUBST_MESSAGE.sys-dic= Reference to system hunspell dictionaries.
+SUBST_FILES.sys-dic= extensions/spellcheck/hunspell/src/mozHunspell.cpp
+SUBST_VARS.sys-dic= PREFIX
+
+pre-configure:
+ cd ${WRKSRC} && mkdir ${OBJDIR}
+ cd ${WRKSRC} && autoconf
+ cd ${WRKSRC}/js/src && autoconf
+# XXX Makefile is broken? When libxul is provided from devel/xulrunner,
+# XXX please remove this.
+ mkdir ${WRKSRC}/js/src/.deps
+
+post-build:
+ ${SED} -e 's|@MOZILLA@|${MOZILLA}|g' \
+ -e 's|@MOZILLA_NAME@|${MOZILLA_NAME}|g' \
+ -e 's|@FIREFOX_ICON@|${MOZILLA}.png|g' \
+ < ${FILESDIR}/desktop.in \
+ > ${WRKDIR}/desktop
+
+INSTALLATION_DIRS+= share/applications share/pixmaps
+post-install:
+ ${INSTALL_DATA} ${WRKDIR}/desktop \
+ ${DESTDIR}${PREFIX}/share/applications/${MOZILLA}.desktop
+ ${INSTALL_DATA} ${MOZILLA_ICON} \
+ ${DESTDIR}${PREFIX}/share/pixmaps/${MOZILLA}.png
+
+.include "../../sysutils/desktop-file-utils/desktopdb.mk"
+.include "../../mk/bsd.pkg.mk"
diff --git a/security/tor-browser/PLIST b/security/tor-browser/PLIST
new file mode 100644
index 00000000000..2d6317e11c7
--- /dev/null
+++ b/security/tor-browser/PLIST
@@ -0,0 +1,3422 @@
+@comment $NetBSD: PLIST,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+bin/tor-browser
+lib/tor-browser/application.ini
+lib/tor-browser/browser/blocklist.xml
+lib/tor-browser/browser/chrome.manifest
+lib/tor-browser/browser/chrome/browser/content/branding/about-logo.png
+lib/tor-browser/browser/chrome/browser/content/branding/about-logo@2x.png
+lib/tor-browser/browser/chrome/browser/content/branding/about-wordmark.png
+lib/tor-browser/browser/chrome/browser/content/branding/about.png
+lib/tor-browser/browser/chrome/browser/content/branding/aboutDialog.css
+lib/tor-browser/browser/chrome/browser/content/branding/icon128.png
+lib/tor-browser/browser/chrome/browser/content/branding/icon16.png
+lib/tor-browser/browser/chrome/browser/content/branding/icon32.png
+lib/tor-browser/browser/chrome/browser/content/branding/icon48.png
+lib/tor-browser/browser/chrome/browser/content/branding/icon64.png
+lib/tor-browser/browser/chrome/browser/content/branding/identity-icons-brand.png
+lib/tor-browser/browser/chrome/browser/content/branding/identity-icons-brand@2x.png
+lib/tor-browser/browser/chrome/browser/content/branding/silhouette-40.svg
+lib/tor-browser/browser/chrome/browser/content/browser/aboutDialog.css
+lib/tor-browser/browser/chrome/browser/content/browser/aboutDialog.js
+lib/tor-browser/browser/chrome/browser/content/browser/aboutDialog.xul
+lib/tor-browser/browser/chrome/browser/content/browser/aboutNetError.xhtml
+lib/tor-browser/browser/chrome/browser/content/browser/aboutPrivateBrowsing.css
+lib/tor-browser/browser/chrome/browser/content/browser/aboutPrivateBrowsing.js
+lib/tor-browser/browser/chrome/browser/content/browser/aboutPrivateBrowsing.xhtml
+lib/tor-browser/browser/chrome/browser/content/browser/aboutProviderDirectory.xhtml
+lib/tor-browser/browser/chrome/browser/content/browser/aboutRobots-icon.png
+lib/tor-browser/browser/chrome/browser/content/browser/aboutRobots-widget-left.png
+lib/tor-browser/browser/chrome/browser/content/browser/aboutRobots.xhtml
+lib/tor-browser/browser/chrome/browser/content/browser/aboutSessionRestore.js
+lib/tor-browser/browser/chrome/browser/content/browser/aboutSessionRestore.xhtml
+lib/tor-browser/browser/chrome/browser/content/browser/aboutSocialError.xhtml
+lib/tor-browser/browser/chrome/browser/content/browser/aboutTabCrashed.css
+lib/tor-browser/browser/chrome/browser/content/browser/aboutTabCrashed.js
+lib/tor-browser/browser/chrome/browser/content/browser/aboutTabCrashed.xhtml
+lib/tor-browser/browser/chrome/browser/content/browser/aboutWelcomeBack.xhtml
+lib/tor-browser/browser/chrome/browser/content/browser/aboutaccounts/aboutaccounts.css
+lib/tor-browser/browser/chrome/browser/content/browser/aboutaccounts/aboutaccounts.js
+lib/tor-browser/browser/chrome/browser/content/browser/aboutaccounts/aboutaccounts.xhtml
+lib/tor-browser/browser/chrome/browser/content/browser/aboutaccounts/images/fox.png
+lib/tor-browser/browser/chrome/browser/content/browser/aboutaccounts/images/graphic_sync_intro.png
+lib/tor-browser/browser/chrome/browser/content/browser/aboutaccounts/images/graphic_sync_intro@2x.png
+lib/tor-browser/browser/chrome/browser/content/browser/aboutaccounts/main.css
+lib/tor-browser/browser/chrome/browser/content/browser/aboutaccounts/normalize.css
+lib/tor-browser/browser/chrome/browser/content/browser/abouthealthreport/abouthealth.css
+lib/tor-browser/browser/chrome/browser/content/browser/abouthealthreport/abouthealth.js
+lib/tor-browser/browser/chrome/browser/content/browser/abouthealthreport/abouthealth.xhtml
+lib/tor-browser/browser/chrome/browser/content/browser/abouthome/aboutHome.css
+lib/tor-browser/browser/chrome/browser/content/browser/abouthome/aboutHome.js
+lib/tor-browser/browser/chrome/browser/content/browser/abouthome/aboutHome.xhtml
+lib/tor-browser/browser/chrome/browser/content/browser/abouthome/addons.png
+lib/tor-browser/browser/chrome/browser/content/browser/abouthome/addons@2x.png
+lib/tor-browser/browser/chrome/browser/content/browser/abouthome/apps.png
+lib/tor-browser/browser/chrome/browser/content/browser/abouthome/apps@2x.png
+lib/tor-browser/browser/chrome/browser/content/browser/abouthome/bookmarks.png
+lib/tor-browser/browser/chrome/browser/content/browser/abouthome/bookmarks@2x.png
+lib/tor-browser/browser/chrome/browser/content/browser/abouthome/downloads.png
+lib/tor-browser/browser/chrome/browser/content/browser/abouthome/downloads@2x.png
+lib/tor-browser/browser/chrome/browser/content/browser/abouthome/history.png
+lib/tor-browser/browser/chrome/browser/content/browser/abouthome/history@2x.png
+lib/tor-browser/browser/chrome/browser/content/browser/abouthome/mozilla.png
+lib/tor-browser/browser/chrome/browser/content/browser/abouthome/mozilla@2x.png
+lib/tor-browser/browser/chrome/browser/content/browser/abouthome/restore-large.png
+lib/tor-browser/browser/chrome/browser/content/browser/abouthome/restore-large@2x.png
+lib/tor-browser/browser/chrome/browser/content/browser/abouthome/restore.png
+lib/tor-browser/browser/chrome/browser/content/browser/abouthome/restore@2x.png
+lib/tor-browser/browser/chrome/browser/content/browser/abouthome/settings.png
+lib/tor-browser/browser/chrome/browser/content/browser/abouthome/settings@2x.png
+lib/tor-browser/browser/chrome/browser/content/browser/abouthome/snippet1.png
+lib/tor-browser/browser/chrome/browser/content/browser/abouthome/snippet1@2x.png
+lib/tor-browser/browser/chrome/browser/content/browser/abouthome/snippet2.png
+lib/tor-browser/browser/chrome/browser/content/browser/abouthome/snippet2@2x.png
+lib/tor-browser/browser/chrome/browser/content/browser/abouthome/sync.png
+lib/tor-browser/browser/chrome/browser/content/browser/abouthome/sync@2x.png
+lib/tor-browser/browser/chrome/browser/content/browser/baseMenuOverlay.xul
+lib/tor-browser/browser/chrome/browser/content/browser/blockedSite.xhtml
+lib/tor-browser/browser/chrome/browser/content/browser/bookmarks/bookmarksPanel.js
+lib/tor-browser/browser/chrome/browser/content/browser/bookmarks/bookmarksPanel.xul
+lib/tor-browser/browser/chrome/browser/content/browser/bookmarks/sidebarUtils.js
+lib/tor-browser/browser/chrome/browser/content/browser/browser-tabPreviews.xml
+lib/tor-browser/browser/chrome/browser/content/browser/browser.css
+lib/tor-browser/browser/chrome/browser/content/browser/browser.js
+lib/tor-browser/browser/chrome/browser/content/browser/browser.xul
+lib/tor-browser/browser/chrome/browser/content/browser/certerror/aboutCertError.css
+lib/tor-browser/browser/chrome/browser/content/browser/certerror/aboutCertError.xhtml
+lib/tor-browser/browser/chrome/browser/content/browser/chatWindow.xul
+lib/tor-browser/browser/chrome/browser/content/browser/content-UITour.js
+lib/tor-browser/browser/chrome/browser/content/browser/content-sessionStore.js
+lib/tor-browser/browser/chrome/browser/content/browser/content.js
+lib/tor-browser/browser/chrome/browser/content/browser/customizableui/aboutCustomizing.xul
+lib/tor-browser/browser/chrome/browser/content/browser/customizableui/panelUI.css
+lib/tor-browser/browser/chrome/browser/content/browser/customizableui/panelUI.js
+lib/tor-browser/browser/chrome/browser/content/browser/customizableui/panelUI.xml
+lib/tor-browser/browser/chrome/browser/content/browser/customizableui/toolbar.xml
+lib/tor-browser/browser/chrome/browser/content/browser/defaultthemes/1.footer.jpg
+lib/tor-browser/browser/chrome/browser/content/browser/defaultthemes/1.header.jpg
+lib/tor-browser/browser/chrome/browser/content/browser/defaultthemes/1.icon.jpg
+lib/tor-browser/browser/chrome/browser/content/browser/defaultthemes/1.preview.jpg
+lib/tor-browser/browser/chrome/browser/content/browser/defaultthemes/2.footer.jpg
+lib/tor-browser/browser/chrome/browser/content/browser/defaultthemes/2.header.jpg
+lib/tor-browser/browser/chrome/browser/content/browser/defaultthemes/2.icon.jpg
+lib/tor-browser/browser/chrome/browser/content/browser/defaultthemes/2.preview.jpg
+lib/tor-browser/browser/chrome/browser/content/browser/defaultthemes/3.footer.png
+lib/tor-browser/browser/chrome/browser/content/browser/defaultthemes/3.header.png
+lib/tor-browser/browser/chrome/browser/content/browser/defaultthemes/3.icon.png
+lib/tor-browser/browser/chrome/browser/content/browser/defaultthemes/3.preview.png
+lib/tor-browser/browser/chrome/browser/content/browser/defaultthemes/4.footer.png
+lib/tor-browser/browser/chrome/browser/content/browser/defaultthemes/4.header.png
+lib/tor-browser/browser/chrome/browser/content/browser/defaultthemes/4.icon.png
+lib/tor-browser/browser/chrome/browser/content/browser/defaultthemes/4.preview.png
+lib/tor-browser/browser/chrome/browser/content/browser/defaultthemes/5.footer.png
+lib/tor-browser/browser/chrome/browser/content/browser/defaultthemes/5.header.png
+lib/tor-browser/browser/chrome/browser/content/browser/defaultthemes/5.icon.jpg
+lib/tor-browser/browser/chrome/browser/content/browser/defaultthemes/5.preview.jpg
+lib/tor-browser/browser/chrome/browser/content/browser/devtools/NetworkPanel.xhtml
+lib/tor-browser/browser/chrome/browser/content/browser/devtools/animationinspector/animation-controller.js
+lib/tor-browser/browser/chrome/browser/content/browser/devtools/animationinspector/animation-inspector.xhtml
+lib/tor-browser/browser/chrome/browser/content/browser/devtools/animationinspector/animation-panel.js
+lib/tor-browser/browser/chrome/browser/content/browser/devtools/app-manager/connection-footer.js
+lib/tor-browser/browser/chrome/browser/content/browser/devtools/app-manager/connection-footer.xhtml
+lib/tor-browser/browser/chrome/browser/content/browser/devtools/app-manager/device.js
+lib/tor-browser/browser/chrome/browser/content/browser/devtools/app-manager/device.xhtml
+lib/tor-browser/browser/chrome/browser/content/browser/devtools/app-manager/help.xhtml
+lib/tor-browser/browser/chrome/browser/content/browser/devtools/app-manager/index.js
+lib/tor-browser/browser/chrome/browser/content/browser/devtools/app-manager/index.xul
+lib/tor-browser/browser/chrome/browser/content/browser/devtools/app-manager/manifest-editor.js
+lib/tor-browser/browser/chrome/browser/content/browser/devtools/app-manager/projects.js
+lib/tor-browser/browser/chrome/browser/content/browser/devtools/app-manager/projects.xhtml
+lib/tor-browser/browser/chrome/browser/content/browser/devtools/app-manager/template.js
+lib/tor-browser/browser/chrome/browser/content/browser/devtools/app-manager/utils.js
+lib/tor-browser/browser/chrome/browser/content/browser/devtools/canvasdebugger.js
+lib/tor-browser/browser/chrome/browser/content/browser/devtools/canvasdebugger.xul
+lib/tor-browser/browser/chrome/browser/content/browser/devtools/codemirror/activeline.js
+lib/tor-browser/browser/chrome/browser/content/browser/devtools/codemirror/brace-fold.js
+lib/tor-browser/browser/chrome/browser/content/browser/devtools/codemirror/clike.js
+lib/tor-browser/browser/chrome/browser/content/browser/devtools/codemirror/closebrackets.js
+lib/tor-browser/browser/chrome/browser/content/browser/devtools/codemirror/codemirror.css
+lib/tor-browser/browser/chrome/browser/content/browser/devtools/codemirror/codemirror.js
+lib/tor-browser/browser/chrome/browser/content/browser/devtools/codemirror/comment-fold.js
+lib/tor-browser/browser/chrome/browser/content/browser/devtools/codemirror/comment.js
+lib/tor-browser/browser/chrome/browser/content/browser/devtools/codemirror/css.js
+lib/tor-browser/browser/chrome/browser/content/browser/devtools/codemirror/dialog.css
+lib/tor-browser/browser/chrome/browser/content/browser/devtools/codemirror/dialog.js
+lib/tor-browser/browser/chrome/browser/content/browser/devtools/codemirror/emacs.js
+lib/tor-browser/browser/chrome/browser/content/browser/devtools/codemirror/foldcode.js
+lib/tor-browser/browser/chrome/browser/content/browser/devtools/codemirror/foldgutter.js
+lib/tor-browser/browser/chrome/browser/content/browser/devtools/codemirror/htmlmixed.js
+lib/tor-browser/browser/chrome/browser/content/browser/devtools/codemirror/javascript.js
+lib/tor-browser/browser/chrome/browser/content/browser/devtools/codemirror/matchbrackets.js
+lib/tor-browser/browser/chrome/browser/content/browser/devtools/codemirror/mozilla.css
+lib/tor-browser/browser/chrome/browser/content/browser/devtools/codemirror/search.js
+lib/tor-browser/browser/chrome/browser/content/browser/devtools/codemirror/searchcursor.js
+lib/tor-browser/browser/chrome/browser/content/browser/devtools/codemirror/show-hint.js
+lib/tor-browser/browser/chrome/browser/content/browser/devtools/codemirror/sublime.js
+lib/tor-browser/browser/chrome/browser/content/browser/devtools/codemirror/tern.js
+lib/tor-browser/browser/chrome/browser/content/browser/devtools/codemirror/trailingspace.js
+lib/tor-browser/browser/chrome/browser/content/browser/devtools/codemirror/vim.js
+lib/tor-browser/browser/chrome/browser/content/browser/devtools/codemirror/xml-fold.js
+lib/tor-browser/browser/chrome/browser/content/browser/devtools/codemirror/xml.js
+lib/tor-browser/browser/chrome/browser/content/browser/devtools/commandline.css
+lib/tor-browser/browser/chrome/browser/content/browser/devtools/commandline/commands-index.js
+lib/tor-browser/browser/chrome/browser/content/browser/devtools/commandlineoutput.xhtml
+lib/tor-browser/browser/chrome/browser/content/browser/devtools/commandlinetooltip.xhtml
+lib/tor-browser/browser/chrome/browser/content/browser/devtools/computedview.xhtml
+lib/tor-browser/browser/chrome/browser/content/browser/devtools/connect.css
+lib/tor-browser/browser/chrome/browser/content/browser/devtools/connect.js
+lib/tor-browser/browser/chrome/browser/content/browser/devtools/connect.xhtml
+lib/tor-browser/browser/chrome/browser/content/browser/devtools/cssruleview.xhtml
+lib/tor-browser/browser/chrome/browser/content/browser/devtools/cubic-bezier-frame.xhtml
+lib/tor-browser/browser/chrome/browser/content/browser/devtools/cubic-bezier.css
+lib/tor-browser/browser/chrome/browser/content/browser/devtools/d3.js
+lib/tor-browser/browser/chrome/browser/content/browser/devtools/dagre-d3.js
+lib/tor-browser/browser/chrome/browser/content/browser/devtools/debugger-controller.js
+lib/tor-browser/browser/chrome/browser/content/browser/devtools/debugger-panes.js
+lib/tor-browser/browser/chrome/browser/content/browser/devtools/debugger-toolbar.js
+lib/tor-browser/browser/chrome/browser/content/browser/devtools/debugger-view.js
+lib/tor-browser/browser/chrome/browser/content/browser/devtools/debugger.css
+lib/tor-browser/browser/chrome/browser/content/browser/devtools/debugger.xul
+lib/tor-browser/browser/chrome/browser/content/browser/devtools/eyedropper.xul
+lib/tor-browser/browser/chrome/browser/content/browser/devtools/eyedropper/crosshairs.css
+lib/tor-browser/browser/chrome/browser/content/browser/devtools/eyedropper/nocursor.css
+lib/tor-browser/browser/chrome/browser/content/browser/devtools/fontinspector/font-inspector.css
+lib/tor-browser/browser/chrome/browser/content/browser/devtools/fontinspector/font-inspector.js
+lib/tor-browser/browser/chrome/browser/content/browser/devtools/fontinspector/font-inspector.xhtml
+lib/tor-browser/browser/chrome/browser/content/browser/devtools/frame-script-utils.js
+lib/tor-browser/browser/chrome/browser/content/browser/devtools/framework/dev-edition-logo.png
+lib/tor-browser/browser/chrome/browser/content/browser/devtools/framework/dev-edition-promo.css
+lib/tor-browser/browser/chrome/browser/content/browser/devtools/framework/dev-edition-promo.xul
+lib/tor-browser/browser/chrome/browser/content/browser/devtools/framework/options-panel.css
+lib/tor-browser/browser/chrome/browser/content/browser/devtools/framework/toolbox-options.js
+lib/tor-browser/browser/chrome/browser/content/browser/devtools/framework/toolbox-options.xul
+lib/tor-browser/browser/chrome/browser/content/browser/devtools/framework/toolbox-process-window.js
+lib/tor-browser/browser/chrome/browser/content/browser/devtools/framework/toolbox-process-window.xul
+lib/tor-browser/browser/chrome/browser/content/browser/devtools/framework/toolbox-window.xul
+lib/tor-browser/browser/chrome/browser/content/browser/devtools/framework/toolbox.xul
+lib/tor-browser/browser/chrome/browser/content/browser/devtools/graphs-frame.xhtml
+lib/tor-browser/browser/chrome/browser/content/browser/devtools/inspector/inspector.css
+lib/tor-browser/browser/chrome/browser/content/browser/devtools/inspector/inspector.xul
+lib/tor-browser/browser/chrome/browser/content/browser/devtools/layoutview/view.css
+lib/tor-browser/browser/chrome/browser/content/browser/devtools/layoutview/view.js
+lib/tor-browser/browser/chrome/browser/content/browser/devtools/layoutview/view.xhtml
+lib/tor-browser/browser/chrome/browser/content/browser/devtools/markup-view.css
+lib/tor-browser/browser/chrome/browser/content/browser/devtools/markup-view.xhtml
+lib/tor-browser/browser/chrome/browser/content/browser/devtools/netmonitor-controller.js
+lib/tor-browser/browser/chrome/browser/content/browser/devtools/netmonitor-view.js
+lib/tor-browser/browser/chrome/browser/content/browser/devtools/netmonitor.css
+lib/tor-browser/browser/chrome/browser/content/browser/devtools/netmonitor.xul
+lib/tor-browser/browser/chrome/browser/content/browser/devtools/profiler.js
+lib/tor-browser/browser/chrome/browser/content/browser/devtools/profiler.xul
+lib/tor-browser/browser/chrome/browser/content/browser/devtools/projecteditor-loader.js
+lib/tor-browser/browser/chrome/browser/content/browser/devtools/projecteditor-loader.xul
+lib/tor-browser/browser/chrome/browser/content/browser/devtools/projecteditor-test.xul
+lib/tor-browser/browser/chrome/browser/content/browser/devtools/projecteditor.xul
+lib/tor-browser/browser/chrome/browser/content/browser/devtools/readdir.js
+lib/tor-browser/browser/chrome/browser/content/browser/devtools/responsivedesign/resize-commands.js
+lib/tor-browser/browser/chrome/browser/content/browser/devtools/ruleview.css
+lib/tor-browser/browser/chrome/browser/content/browser/devtools/scratchpad-commands.js
+lib/tor-browser/browser/chrome/browser/content/browser/devtools/scratchpad.js
+lib/tor-browser/browser/chrome/browser/content/browser/devtools/scratchpad.xul
+lib/tor-browser/browser/chrome/browser/content/browser/devtools/shadereditor.js
+lib/tor-browser/browser/chrome/browser/content/browser/devtools/shadereditor.xul
+lib/tor-browser/browser/chrome/browser/content/browser/devtools/spectrum-frame.xhtml
+lib/tor-browser/browser/chrome/browser/content/browser/devtools/spectrum.css
+lib/tor-browser/browser/chrome/browser/content/browser/devtools/splitview.css
+lib/tor-browser/browser/chrome/browser/content/browser/devtools/storage.xul
+lib/tor-browser/browser/chrome/browser/content/browser/devtools/styleeditor.css
+lib/tor-browser/browser/chrome/browser/content/browser/devtools/styleeditor.xul
+lib/tor-browser/browser/chrome/browser/content/browser/devtools/theme-switching.js
+lib/tor-browser/browser/chrome/browser/content/browser/devtools/timeline/timeline.js
+lib/tor-browser/browser/chrome/browser/content/browser/devtools/timeline/timeline.xul
+lib/tor-browser/browser/chrome/browser/content/browser/devtools/ui-profile.js
+lib/tor-browser/browser/chrome/browser/content/browser/devtools/ui-recordings.js
+lib/tor-browser/browser/chrome/browser/content/browser/devtools/webaudioeditor.xul
+lib/tor-browser/browser/chrome/browser/content/browser/devtools/webaudioeditor/controller.js
+lib/tor-browser/browser/chrome/browser/content/browser/devtools/webaudioeditor/includes.js
+lib/tor-browser/browser/chrome/browser/content/browser/devtools/webaudioeditor/models.js
+lib/tor-browser/browser/chrome/browser/content/browser/devtools/webaudioeditor/views/automation.js
+lib/tor-browser/browser/chrome/browser/content/browser/devtools/webaudioeditor/views/context.js
+lib/tor-browser/browser/chrome/browser/content/browser/devtools/webaudioeditor/views/inspector.js
+lib/tor-browser/browser/chrome/browser/content/browser/devtools/webaudioeditor/views/properties.js
+lib/tor-browser/browser/chrome/browser/content/browser/devtools/webaudioeditor/views/utils.js
+lib/tor-browser/browser/chrome/browser/content/browser/devtools/webconsole.xul
+lib/tor-browser/browser/chrome/browser/content/browser/devtools/widgets.css
+lib/tor-browser/browser/chrome/browser/content/browser/devtools/widgets/VariablesView.xul
+lib/tor-browser/browser/chrome/browser/content/browser/downloads/allDownloadsViewOverlay.css
+lib/tor-browser/browser/chrome/browser/content/browser/downloads/allDownloadsViewOverlay.js
+lib/tor-browser/browser/chrome/browser/content/browser/downloads/allDownloadsViewOverlay.xul
+lib/tor-browser/browser/chrome/browser/content/browser/downloads/contentAreaDownloadsView.css
+lib/tor-browser/browser/chrome/browser/content/browser/downloads/contentAreaDownloadsView.js
+lib/tor-browser/browser/chrome/browser/content/browser/downloads/contentAreaDownloadsView.xul
+lib/tor-browser/browser/chrome/browser/content/browser/downloads/download.css
+lib/tor-browser/browser/chrome/browser/content/browser/downloads/download.xml
+lib/tor-browser/browser/chrome/browser/content/browser/downloads/downloads.css
+lib/tor-browser/browser/chrome/browser/content/browser/downloads/downloads.js
+lib/tor-browser/browser/chrome/browser/content/browser/downloads/downloadsOverlay.xul
+lib/tor-browser/browser/chrome/browser/content/browser/downloads/indicator.js
+lib/tor-browser/browser/chrome/browser/content/browser/downloads/indicatorOverlay.xul
+lib/tor-browser/browser/chrome/browser/content/browser/feeds/subscribe.css
+lib/tor-browser/browser/chrome/browser/content/browser/feeds/subscribe.js
+lib/tor-browser/browser/chrome/browser/content/browser/feeds/subscribe.xhtml
+lib/tor-browser/browser/chrome/browser/content/browser/feeds/subscribe.xml
+lib/tor-browser/browser/chrome/browser/content/browser/hiddenWindow.xul
+lib/tor-browser/browser/chrome/browser/content/browser/history/history-panel.xul
+lib/tor-browser/browser/chrome/browser/content/browser/license.html
+lib/tor-browser/browser/chrome/browser/content/browser/loop/conversation.html
+lib/tor-browser/browser/chrome/browser/content/browser/loop/css/contacts.css
+lib/tor-browser/browser/chrome/browser/content/browser/loop/css/panel.css
+lib/tor-browser/browser/chrome/browser/content/browser/loop/js/client.js
+lib/tor-browser/browser/chrome/browser/content/browser/loop/js/contacts.js
+lib/tor-browser/browser/chrome/browser/content/browser/loop/js/conversation.js
+lib/tor-browser/browser/chrome/browser/content/browser/loop/js/conversationAppStore.js
+lib/tor-browser/browser/chrome/browser/content/browser/loop/js/conversationViews.js
+lib/tor-browser/browser/chrome/browser/content/browser/loop/js/otconfig.js
+lib/tor-browser/browser/chrome/browser/content/browser/loop/js/panel.js
+lib/tor-browser/browser/chrome/browser/content/browser/loop/js/roomViews.js
+lib/tor-browser/browser/chrome/browser/content/browser/loop/libs/l10n.js
+lib/tor-browser/browser/chrome/browser/content/browser/loop/libs/sdk.js
+lib/tor-browser/browser/chrome/browser/content/browser/loop/panel.html
+lib/tor-browser/browser/chrome/browser/content/browser/loop/sdk-content/css/ot.css
+lib/tor-browser/browser/chrome/browser/content/browser/loop/sdk-content/images/rtc/access-denied-chrome.png
+lib/tor-browser/browser/chrome/browser/content/browser/loop/sdk-content/images/rtc/access-denied-copy-firefox.png
+lib/tor-browser/browser/chrome/browser/content/browser/loop/sdk-content/images/rtc/access-denied-firefox.png
+lib/tor-browser/browser/chrome/browser/content/browser/loop/sdk-content/images/rtc/access-predenied-chrome.png
+lib/tor-browser/browser/chrome/browser/content/browser/loop/sdk-content/images/rtc/access-prompt-chrome.png
+lib/tor-browser/browser/chrome/browser/content/browser/loop/sdk-content/images/rtc/audioonly-publisher.png
+lib/tor-browser/browser/chrome/browser/content/browser/loop/sdk-content/images/rtc/audioonly-subscriber.png
+lib/tor-browser/browser/chrome/browser/content/browser/loop/sdk-content/images/rtc/buttons.png
+lib/tor-browser/browser/chrome/browser/content/browser/loop/sdk-content/images/rtc/loader.gif
+lib/tor-browser/browser/chrome/browser/content/browser/loop/sdk-content/images/rtc/mic-off.png
+lib/tor-browser/browser/chrome/browser/content/browser/loop/sdk-content/images/rtc/mic-on.png
+lib/tor-browser/browser/chrome/browser/content/browser/loop/sdk-content/images/rtc/speaker-off.png
+lib/tor-browser/browser/chrome/browser/content/browser/loop/sdk-content/images/rtc/speaker-on.png
+lib/tor-browser/browser/chrome/browser/content/browser/loop/sdk-content/js/dynamic_config.min.js
+lib/tor-browser/browser/chrome/browser/content/browser/loop/shared/css/common.css
+lib/tor-browser/browser/chrome/browser/content/browser/loop/shared/css/conversation.css
+lib/tor-browser/browser/chrome/browser/content/browser/loop/shared/css/reset.css
+lib/tor-browser/browser/chrome/browser/content/browser/loop/shared/img/02.png
+lib/tor-browser/browser/chrome/browser/content/browser/loop/shared/img/02@2x.png
+lib/tor-browser/browser/chrome/browser/content/browser/loop/shared/img/audio-call-avatar.svg
+lib/tor-browser/browser/chrome/browser/content/browser/loop/shared/img/audio-inverse-14x14.png
+lib/tor-browser/browser/chrome/browser/content/browser/loop/shared/img/audio-inverse-14x14@2x.png
+lib/tor-browser/browser/chrome/browser/content/browser/loop/shared/img/beta-ribbon.svg
+lib/tor-browser/browser/chrome/browser/content/browser/loop/shared/img/dropdown-inverse.png
+lib/tor-browser/browser/chrome/browser/content/browser/loop/shared/img/dropdown-inverse@2x.png
+lib/tor-browser/browser/chrome/browser/content/browser/loop/shared/img/facemute-14x14.png
+lib/tor-browser/browser/chrome/browser/content/browser/loop/shared/img/facemute-14x14@2x.png
+lib/tor-browser/browser/chrome/browser/content/browser/loop/shared/img/hangup-inverse-14x14.png
+lib/tor-browser/browser/chrome/browser/content/browser/loop/shared/img/hangup-inverse-14x14@2x.png
+lib/tor-browser/browser/chrome/browser/content/browser/loop/shared/img/happy.png
+lib/tor-browser/browser/chrome/browser/content/browser/loop/shared/img/icon_32.png
+lib/tor-browser/browser/chrome/browser/content/browser/loop/shared/img/icon_64.png
+lib/tor-browser/browser/chrome/browser/content/browser/loop/shared/img/icons-10x10.svg
+lib/tor-browser/browser/chrome/browser/content/browser/loop/shared/img/icons-14x14.svg
+lib/tor-browser/browser/chrome/browser/content/browser/loop/shared/img/icons-16x16.svg
+lib/tor-browser/browser/chrome/browser/content/browser/loop/shared/img/movistar.png
+lib/tor-browser/browser/chrome/browser/content/browser/loop/shared/img/movistar@2x.png
+lib/tor-browser/browser/chrome/browser/content/browser/loop/shared/img/mute-inverse-14x14.png
+lib/tor-browser/browser/chrome/browser/content/browser/loop/shared/img/mute-inverse-14x14@2x.png
+lib/tor-browser/browser/chrome/browser/content/browser/loop/shared/img/sad.png
+lib/tor-browser/browser/chrome/browser/content/browser/loop/shared/img/spinner.png
+lib/tor-browser/browser/chrome/browser/content/browser/loop/shared/img/spinner@2x.png
+lib/tor-browser/browser/chrome/browser/content/browser/loop/shared/img/svg/glyph-account-16x16.svg
+lib/tor-browser/browser/chrome/browser/content/browser/loop/shared/img/svg/glyph-help-16x16.svg
+lib/tor-browser/browser/chrome/browser/content/browser/loop/shared/img/svg/glyph-settings-16x16.svg
+lib/tor-browser/browser/chrome/browser/content/browser/loop/shared/img/svg/glyph-signin-16x16.svg
+lib/tor-browser/browser/chrome/browser/content/browser/loop/shared/img/svg/glyph-signout-16x16.svg
+lib/tor-browser/browser/chrome/browser/content/browser/loop/shared/img/telefonica.png
+lib/tor-browser/browser/chrome/browser/content/browser/loop/shared/img/telefonica@2x.png
+lib/tor-browser/browser/chrome/browser/content/browser/loop/shared/img/video-inverse-14x14.png
+lib/tor-browser/browser/chrome/browser/content/browser/loop/shared/img/video-inverse-14x14@2x.png
+lib/tor-browser/browser/chrome/browser/content/browser/loop/shared/img/vivo.png
+lib/tor-browser/browser/chrome/browser/content/browser/loop/shared/img/vivo@2x.png
+lib/tor-browser/browser/chrome/browser/content/browser/loop/shared/js/actions.js
+lib/tor-browser/browser/chrome/browser/content/browser/loop/shared/js/activeRoomStore.js
+lib/tor-browser/browser/chrome/browser/content/browser/loop/shared/js/conversationStore.js
+lib/tor-browser/browser/chrome/browser/content/browser/loop/shared/js/dispatcher.js
+lib/tor-browser/browser/chrome/browser/content/browser/loop/shared/js/feedbackApiClient.js
+lib/tor-browser/browser/chrome/browser/content/browser/loop/shared/js/feedbackStore.js
+lib/tor-browser/browser/chrome/browser/content/browser/loop/shared/js/feedbackViews.js
+lib/tor-browser/browser/chrome/browser/content/browser/loop/shared/js/fxOSActiveRoomStore.js
+lib/tor-browser/browser/chrome/browser/content/browser/loop/shared/js/mixins.js
+lib/tor-browser/browser/chrome/browser/content/browser/loop/shared/js/models.js
+lib/tor-browser/browser/chrome/browser/content/browser/loop/shared/js/otSdkDriver.js
+lib/tor-browser/browser/chrome/browser/content/browser/loop/shared/js/roomStates.js
+lib/tor-browser/browser/chrome/browser/content/browser/loop/shared/js/roomStore.js
+lib/tor-browser/browser/chrome/browser/content/browser/loop/shared/js/store.js
+lib/tor-browser/browser/chrome/browser/content/browser/loop/shared/js/utils.js
+lib/tor-browser/browser/chrome/browser/content/browser/loop/shared/js/validate.js
+lib/tor-browser/browser/chrome/browser/content/browser/loop/shared/js/views.js
+lib/tor-browser/browser/chrome/browser/content/browser/loop/shared/js/websocket.js
+lib/tor-browser/browser/chrome/browser/content/browser/loop/shared/libs/backbone-1.1.2.js
+lib/tor-browser/browser/chrome/browser/content/browser/loop/shared/libs/jquery-2.1.0.js
+lib/tor-browser/browser/chrome/browser/content/browser/loop/shared/libs/lodash-2.4.1.js
+lib/tor-browser/browser/chrome/browser/content/browser/loop/shared/libs/react-0.12.2.js
+lib/tor-browser/browser/chrome/browser/content/browser/loop/shared/sounds/connected.ogg
+lib/tor-browser/browser/chrome/browser/content/browser/loop/shared/sounds/connecting.ogg
+lib/tor-browser/browser/chrome/browser/content/browser/loop/shared/sounds/failure.ogg
+lib/tor-browser/browser/chrome/browser/content/browser/loop/shared/sounds/ringtone.ogg
+lib/tor-browser/browser/chrome/browser/content/browser/loop/shared/sounds/room-joined-in.ogg
+lib/tor-browser/browser/chrome/browser/content/browser/loop/shared/sounds/room-joined.ogg
+lib/tor-browser/browser/chrome/browser/content/browser/loop/shared/sounds/room-left.ogg
+lib/tor-browser/browser/chrome/browser/content/browser/loop/shared/sounds/terminated.ogg
+lib/tor-browser/browser/chrome/browser/content/browser/microsoft-translator-attribution.png
+lib/tor-browser/browser/chrome/browser/content/browser/migration/migration.js
+lib/tor-browser/browser/chrome/browser/content/browser/migration/migration.xul
+lib/tor-browser/browser/chrome/browser/content/browser/newtab/newTab.css
+lib/tor-browser/browser/chrome/browser/content/browser/newtab/newTab.js
+lib/tor-browser/browser/chrome/browser/content/browser/newtab/newTab.xul
+lib/tor-browser/browser/chrome/browser/content/browser/nsContextMenu.js
+lib/tor-browser/browser/chrome/browser/content/browser/pageinfo/feeds.js
+lib/tor-browser/browser/chrome/browser/content/browser/pageinfo/feeds.xml
+lib/tor-browser/browser/chrome/browser/content/browser/pageinfo/pageInfo.css
+lib/tor-browser/browser/chrome/browser/content/browser/pageinfo/pageInfo.js
+lib/tor-browser/browser/chrome/browser/content/browser/pageinfo/pageInfo.xml
+lib/tor-browser/browser/chrome/browser/content/browser/pageinfo/pageInfo.xul
+lib/tor-browser/browser/chrome/browser/content/browser/pageinfo/permissions.js
+lib/tor-browser/browser/chrome/browser/content/browser/pageinfo/security.js
+lib/tor-browser/browser/chrome/browser/content/browser/places/bookmarkProperties.js
+lib/tor-browser/browser/chrome/browser/content/browser/places/bookmarkProperties.xul
+lib/tor-browser/browser/chrome/browser/content/browser/places/bookmarkProperties2.xul
+lib/tor-browser/browser/chrome/browser/content/browser/places/browserPlacesViews.js
+lib/tor-browser/browser/chrome/browser/content/browser/places/controller.js
+lib/tor-browser/browser/chrome/browser/content/browser/places/downloadsViewOverlay.xul
+lib/tor-browser/browser/chrome/browser/content/browser/places/editBookmarkOverlay.js
+lib/tor-browser/browser/chrome/browser/content/browser/places/editBookmarkOverlay.xul
+lib/tor-browser/browser/chrome/browser/content/browser/places/history-panel.js
+lib/tor-browser/browser/chrome/browser/content/browser/places/menu.xml
+lib/tor-browser/browser/chrome/browser/content/browser/places/moveBookmarks.js
+lib/tor-browser/browser/chrome/browser/content/browser/places/moveBookmarks.xul
+lib/tor-browser/browser/chrome/browser/content/browser/places/organizer.css
+lib/tor-browser/browser/chrome/browser/content/browser/places/places.css
+lib/tor-browser/browser/chrome/browser/content/browser/places/places.js
+lib/tor-browser/browser/chrome/browser/content/browser/places/places.xul
+lib/tor-browser/browser/chrome/browser/content/browser/places/placesOverlay.xul
+lib/tor-browser/browser/chrome/browser/content/browser/places/tree.xml
+lib/tor-browser/browser/chrome/browser/content/browser/places/treeView.js
+lib/tor-browser/browser/chrome/browser/content/browser/preferences/aboutPermissions.css
+lib/tor-browser/browser/chrome/browser/content/browser/preferences/aboutPermissions.js
+lib/tor-browser/browser/chrome/browser/content/browser/preferences/aboutPermissions.xml
+lib/tor-browser/browser/chrome/browser/content/browser/preferences/aboutPermissions.xul
+lib/tor-browser/browser/chrome/browser/content/browser/preferences/advanced.js
+lib/tor-browser/browser/chrome/browser/content/browser/preferences/advanced.xul
+lib/tor-browser/browser/chrome/browser/content/browser/preferences/applicationManager.js
+lib/tor-browser/browser/chrome/browser/content/browser/preferences/applicationManager.xul
+lib/tor-browser/browser/chrome/browser/content/browser/preferences/applications.js
+lib/tor-browser/browser/chrome/browser/content/browser/preferences/applications.xul
+lib/tor-browser/browser/chrome/browser/content/browser/preferences/colors.xul
+lib/tor-browser/browser/chrome/browser/content/browser/preferences/connection.js
+lib/tor-browser/browser/chrome/browser/content/browser/preferences/connection.xul
+lib/tor-browser/browser/chrome/browser/content/browser/preferences/content.js
+lib/tor-browser/browser/chrome/browser/content/browser/preferences/content.xul
+lib/tor-browser/browser/chrome/browser/content/browser/preferences/cookies.js
+lib/tor-browser/browser/chrome/browser/content/browser/preferences/cookies.xul
+lib/tor-browser/browser/chrome/browser/content/browser/preferences/fonts.js
+lib/tor-browser/browser/chrome/browser/content/browser/preferences/fonts.xul
+lib/tor-browser/browser/chrome/browser/content/browser/preferences/handlers.css
+lib/tor-browser/browser/chrome/browser/content/browser/preferences/handlers.xml
+lib/tor-browser/browser/chrome/browser/content/browser/preferences/in-content/advanced.js
+lib/tor-browser/browser/chrome/browser/content/browser/preferences/in-content/applications.js
+lib/tor-browser/browser/chrome/browser/content/browser/preferences/in-content/content.js
+lib/tor-browser/browser/chrome/browser/content/browser/preferences/in-content/main.js
+lib/tor-browser/browser/chrome/browser/content/browser/preferences/in-content/preferences.js
+lib/tor-browser/browser/chrome/browser/content/browser/preferences/in-content/preferences.xul
+lib/tor-browser/browser/chrome/browser/content/browser/preferences/in-content/privacy.js
+lib/tor-browser/browser/chrome/browser/content/browser/preferences/in-content/search.css
+lib/tor-browser/browser/chrome/browser/content/browser/preferences/in-content/search.js
+lib/tor-browser/browser/chrome/browser/content/browser/preferences/in-content/security.js
+lib/tor-browser/browser/chrome/browser/content/browser/preferences/in-content/subdialogs.js
+lib/tor-browser/browser/chrome/browser/content/browser/preferences/in-content/sync.js
+lib/tor-browser/browser/chrome/browser/content/browser/preferences/languages.js
+lib/tor-browser/browser/chrome/browser/content/browser/preferences/languages.xul
+lib/tor-browser/browser/chrome/browser/content/browser/preferences/main.js
+lib/tor-browser/browser/chrome/browser/content/browser/preferences/main.xul
+lib/tor-browser/browser/chrome/browser/content/browser/preferences/permissions.js
+lib/tor-browser/browser/chrome/browser/content/browser/preferences/permissions.xul
+lib/tor-browser/browser/chrome/browser/content/browser/preferences/preferences.js
+lib/tor-browser/browser/chrome/browser/content/browser/preferences/preferences.xul
+lib/tor-browser/browser/chrome/browser/content/browser/preferences/privacy.js
+lib/tor-browser/browser/chrome/browser/content/browser/preferences/privacy.xul
+lib/tor-browser/browser/chrome/browser/content/browser/preferences/sanitize.js
+lib/tor-browser/browser/chrome/browser/content/browser/preferences/sanitize.xul
+lib/tor-browser/browser/chrome/browser/content/browser/preferences/search.js
+lib/tor-browser/browser/chrome/browser/content/browser/preferences/search.xul
+lib/tor-browser/browser/chrome/browser/content/browser/preferences/security.js
+lib/tor-browser/browser/chrome/browser/content/browser/preferences/security.xul
+lib/tor-browser/browser/chrome/browser/content/browser/preferences/selectBookmark.js
+lib/tor-browser/browser/chrome/browser/content/browser/preferences/selectBookmark.xul
+lib/tor-browser/browser/chrome/browser/content/browser/preferences/sync.js
+lib/tor-browser/browser/chrome/browser/content/browser/preferences/sync.xul
+lib/tor-browser/browser/chrome/browser/content/browser/preferences/tabs.js
+lib/tor-browser/browser/chrome/browser/content/browser/preferences/tabs.xul
+lib/tor-browser/browser/chrome/browser/content/browser/preferences/translation.js
+lib/tor-browser/browser/chrome/browser/content/browser/preferences/translation.xul
+lib/tor-browser/browser/chrome/browser/content/browser/readinglist/sidebar.js
+lib/tor-browser/browser/chrome/browser/content/browser/readinglist/sidebar.xhtml
+lib/tor-browser/browser/chrome/browser/content/browser/report-phishing-overlay.xul
+lib/tor-browser/browser/chrome/browser/content/browser/safeMode.css
+lib/tor-browser/browser/chrome/browser/content/browser/safeMode.js
+lib/tor-browser/browser/chrome/browser/content/browser/safeMode.xul
+lib/tor-browser/browser/chrome/browser/content/browser/sanitize.js
+lib/tor-browser/browser/chrome/browser/content/browser/sanitize.xul
+lib/tor-browser/browser/chrome/browser/content/browser/sanitizeDialog.css
+lib/tor-browser/browser/chrome/browser/content/browser/sanitizeDialog.js
+lib/tor-browser/browser/chrome/browser/content/browser/search/engineManager.js
+lib/tor-browser/browser/chrome/browser/content/browser/search/engineManager.xul
+lib/tor-browser/browser/chrome/browser/content/browser/search/search.xml
+lib/tor-browser/browser/chrome/browser/content/browser/search/searchbarBindings.css
+lib/tor-browser/browser/chrome/browser/content/browser/searchSuggestionUI.css
+lib/tor-browser/browser/chrome/browser/content/browser/searchSuggestionUI.js
+lib/tor-browser/browser/chrome/browser/content/browser/setDesktopBackground.js
+lib/tor-browser/browser/chrome/browser/content/browser/setDesktopBackground.xul
+lib/tor-browser/browser/chrome/browser/content/browser/socialchat.xml
+lib/tor-browser/browser/chrome/browser/content/browser/socialmarks.xml
+lib/tor-browser/browser/chrome/browser/content/browser/sync/aboutSyncTabs-bindings.xml
+lib/tor-browser/browser/chrome/browser/content/browser/sync/aboutSyncTabs.css
+lib/tor-browser/browser/chrome/browser/content/browser/sync/aboutSyncTabs.js
+lib/tor-browser/browser/chrome/browser/content/browser/sync/aboutSyncTabs.xul
+lib/tor-browser/browser/chrome/browser/content/browser/sync/addDevice.js
+lib/tor-browser/browser/chrome/browser/content/browser/sync/addDevice.xul
+lib/tor-browser/browser/chrome/browser/content/browser/sync/customize.css
+lib/tor-browser/browser/chrome/browser/content/browser/sync/customize.js
+lib/tor-browser/browser/chrome/browser/content/browser/sync/customize.xul
+lib/tor-browser/browser/chrome/browser/content/browser/sync/genericChange.js
+lib/tor-browser/browser/chrome/browser/content/browser/sync/genericChange.xul
+lib/tor-browser/browser/chrome/browser/content/browser/sync/key.xhtml
+lib/tor-browser/browser/chrome/browser/content/browser/sync/notification.xml
+lib/tor-browser/browser/chrome/browser/content/browser/sync/progress.js
+lib/tor-browser/browser/chrome/browser/content/browser/sync/progress.xhtml
+lib/tor-browser/browser/chrome/browser/content/browser/sync/quota.js
+lib/tor-browser/browser/chrome/browser/content/browser/sync/quota.xul
+lib/tor-browser/browser/chrome/browser/content/browser/sync/setup.js
+lib/tor-browser/browser/chrome/browser/content/browser/sync/setup.xul
+lib/tor-browser/browser/chrome/browser/content/browser/sync/utils.js
+lib/tor-browser/browser/chrome/browser/content/browser/tabbrowser.css
+lib/tor-browser/browser/chrome/browser/content/browser/tabbrowser.xml
+lib/tor-browser/browser/chrome/browser/content/browser/tabview-content.js
+lib/tor-browser/browser/chrome/browser/content/browser/tabview.css
+lib/tor-browser/browser/chrome/browser/content/browser/tabview.html
+lib/tor-browser/browser/chrome/browser/content/browser/tabview.js
+lib/tor-browser/browser/chrome/browser/content/browser/translation-infobar.xml
+lib/tor-browser/browser/chrome/browser/content/browser/urlbarBindings.xml
+lib/tor-browser/browser/chrome/browser/content/browser/utilityOverlay.js
+lib/tor-browser/browser/chrome/browser/content/browser/viewSourceOverlay.xul
+lib/tor-browser/browser/chrome/browser/content/browser/web-panels.js
+lib/tor-browser/browser/chrome/browser/content/browser/web-panels.xul
+lib/tor-browser/browser/chrome/browser/content/browser/webrtcIndicator.js
+lib/tor-browser/browser/chrome/browser/content/browser/webrtcIndicator.xul
+lib/tor-browser/browser/chrome/browser/defaults/permissions
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/Geolocation-16.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/Geolocation-64.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/Info.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/Privacy-16.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/Secure.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/Security-broken.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/Toolbar-inverted.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/Toolbar-small.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/Toolbar.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/aboutCertError.css
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/aboutCertError_sectionCollapsed-rtl.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/aboutCertError_sectionCollapsed.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/aboutCertError_sectionExpanded.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/aboutNetError.css
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/aboutNetError_alert.svg
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/aboutNetError_info.svg
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/aboutProviderDirectory.css
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/aboutSessionRestore-window-icon.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/aboutSessionRestore.css
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/aboutSocialError.css
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/aboutSyncTabs.css
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/aboutTabCrashed.css
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/aboutWelcomeBack.css
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/actionicon-tab.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/bad-content-blocked-16.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/bad-content-blocked-16@2x.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/bad-content-blocked-64.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/bad-content-unblocked-16.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/bad-content-unblocked-64.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/badge-add-engine.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/browser-lightweightTheme.css
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/browser.css
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/canvas-popup.svg
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/click-to-play-warning-stripes.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/content-contextmenu.svg
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/customizableui/background-noise-toolbar.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/customizableui/customize-illustration-rtl.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/customizableui/customize-illustration.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/customizableui/customizeFavicon.ico
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/customizableui/customizeMode-gridTexture.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/customizableui/customizeMode-separatorHorizontal.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/customizableui/customizeMode-separatorVertical.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/customizableui/info-icon-customizeTip.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/customizableui/menuPanel-customizeFinish.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/customizableui/panelUIOverlay.css
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/customizableui/panelarrow-customizeTip.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/customizableui/subView-arrow-back-inverted-rtl.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/customizableui/subView-arrow-back-inverted.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/customizableui/whimsy-bw.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/customizableui/whimsy-bw@2x.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/customizableui/whimsy.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/customizableui/whimsy@2x.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devedition.css
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devedition/search.svg
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devedition/urlbar-history-dropmarker.svg
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/alerticon-warning.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/alerticon-warning@2x.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/animationinspector.css
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/app-manager/add.svg
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/app-manager/connection-footer.css
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/app-manager/default-app-icon.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/app-manager/device.css
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/app-manager/error.svg
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/app-manager/help.css
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/app-manager/index-icons.svg
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/app-manager/index.css
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/app-manager/noise.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/app-manager/plus.svg
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/app-manager/projects.css
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/app-manager/remove.svg
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/app-manager/rocket.svg
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/app-manager/warning.svg
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/arrow-e.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/arrow-e@2x.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/breadcrumbs-divider@2x.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/breadcrumbs-scrollbutton.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/breadcrumbs-scrollbutton@2x.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/canvasdebugger.css
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/close.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/close@2x.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/command-console.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/command-console@2x.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/command-eyedropper.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/command-eyedropper@2x.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/command-frames.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/command-frames@2x.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/command-paintflashing.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/command-paintflashing@2x.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/command-pick.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/command-pick@2x.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/command-responsivemode.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/command-responsivemode@2x.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/command-scratchpad.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/command-scratchpad@2x.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/command-screenshot.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/command-screenshot@2x.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/command-tilt.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/command-tilt@2x.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/commandline-icon.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/commandline-icon@2x.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/commandline.css
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/common.css
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/computedview.css
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/controls.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/controls@2x.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/cubic-bezier-swatch.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/cubic-bezier-swatch@2x.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/dark-theme.css
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/debugger-blackbox.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/debugger-blackbox@2x.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/debugger-collapse.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/debugger-collapse@2x.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/debugger-expand.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/debugger-expand@2x.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/debugger-pause.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/debugger-pause@2x.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/debugger-play.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/debugger-play@2x.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/debugger-prettyprint.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/debugger-prettyprint@2x.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/debugger-step-in.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/debugger-step-in@2x.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/debugger-step-out.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/debugger-step-out@2x.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/debugger-step-over.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/debugger-step-over@2x.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/debugger-toggleBreakpoints.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/debugger-toggleBreakpoints@2x.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/debugger.css
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/dock-bottom@2x.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/dock-side@2x.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/dropmarker.svg
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/editor-breakpoint.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/editor-debug-location.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/editor-debug-location@2x.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/editor-error.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/eyedropper.css
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/filetype-dir-close.svg
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/filetype-dir-open.svg
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/filetype-globe.svg
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/filetype-store.svg
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/filters.svg
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/floating-scrollbars-light.css
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/floating-scrollbars.css
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/font-inspector.css
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/inspector.css
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/itemArrow-dark-ltr.svg
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/itemArrow-dark-rtl.svg
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/itemArrow-ltr.svg
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/itemArrow-rtl.svg
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/itemToggle.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/itemToggle@2x.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/layoutview.css
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/light-theme.css
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/magnifying-glass-light.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/magnifying-glass-light@2x.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/magnifying-glass.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/magnifying-glass@2x.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/markup-view.css
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/netmonitor.css
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/newtab-inverted.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/newtab-inverted@2x.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/newtab.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/newtab@2x.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/noise.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/performance-icons.svg
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/performance.css
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/power.svg
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/profiler-stopwatch-checked.svg
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/profiler-stopwatch.svg
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/profiler.css
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/projecteditor/projecteditor.css
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/responsive-horizontal-resizer.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/responsive-horizontal-resizer@2x.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/responsive-se-resizer.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/responsive-se-resizer@2x.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/responsive-vertical-resizer.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/responsive-vertical-resizer@2x.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/responsiveui-home.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/responsiveui-rotate.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/responsiveui-rotate@2x.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/responsiveui-screenshot.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/responsiveui-screenshot@2x.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/responsiveui-touch.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/responsiveui-touch@2x.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/ruleview.css
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/scratchpad.css
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/shadereditor.css
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/splitview.css
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/storage.css
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/styleeditor.css
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/timeline-filter.svg
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/timeline.css
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/toggle-tools.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/toggle-tools@2x.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/tool-debugger-paused.svg
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/tool-debugger.svg
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/tool-inspector.svg
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/tool-network.svg
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/tool-options.svg
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/tool-profiler.svg
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/tool-scratchpad.svg
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/tool-storage.svg
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/tool-styleeditor.svg
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/tool-webaudio.svg
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/tool-webconsole.svg
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/tooltip/arrow-horizontal-dark.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/tooltip/arrow-horizontal-dark@2x.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/tooltip/arrow-horizontal-light.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/tooltip/arrow-horizontal-light@2x.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/tooltip/arrow-vertical-dark.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/tooltip/arrow-vertical-dark@2x.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/tooltip/arrow-vertical-light.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/tooltip/arrow-vertical-light@2x.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/tracer-icon.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/tracer-icon@2x.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/undock@2x.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/vview-delete.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/vview-delete@2x.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/vview-edit.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/vview-edit@2x.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/vview-lock.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/vview-lock@2x.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/vview-open-inspector.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/vview-open-inspector@2x.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/webaudioeditor.css
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/webconsole.css
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/webconsole.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/webconsole@2x.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/webconsole_networkpanel.css
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/devtools/widgets.css
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/downloads/allDownloadsViewOverlay.css
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/downloads/buttons.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/downloads/contentAreaDownloadsView.css
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/downloads/download-glow-menuPanel.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/downloads/download-notification-finish.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/downloads/download-notification-start.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/downloads/download-summary.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/downloads/downloads.css
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/drm-icon.svg
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/engineManager.css
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/feeds/audioFeedIcon.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/feeds/audioFeedIcon16.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/feeds/feedIcon.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/feeds/feedIcon16.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/feeds/subscribe-ui.css
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/feeds/subscribe.css
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/feeds/videoFeedIcon.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/feeds/videoFeedIcon16.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/fullscreen-darknoise.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/heartbeat-icon.svg
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/heartbeat-star-lit.svg
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/heartbeat-star-off.svg
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/identity-icons-generic.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/identity-icons-https-ev.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/identity-icons-https-mixed-active.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/identity-icons-https-mixed-display.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/identity-icons-https.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/identity.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/loop/menuPanel.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/loop/toolbar-inverted.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/loop/toolbar.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/magnifier.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/magnifier@2x.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/mask.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/mask@2x.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/menuPanel-customize.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/menuPanel-exit.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/menuPanel-help.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/menuPanel-small.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/menuPanel.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/monitor.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/monitor_16-10.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/newtab/controls.svg
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/newtab/newTab.css
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/notification-16.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/notification-64.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/notification-pluginAlert.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/notification-pluginBlocked.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/notification-pluginNormal.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/page-livemarks.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/pageInfo.css
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/pageInfo.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/panic-panel/header-small.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/panic-panel/header.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/panic-panel/icons.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/places/bookmarks-menu-arrow.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/places/bookmarks-notification-finish.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/places/bookmarksMenu.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/places/bookmarksToolbar-menuPanel.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/places/bookmarksToolbar.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/places/calendar.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/places/downloads.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/places/editBookmarkOverlay.css
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/places/livemark-item.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/places/organizer.css
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/places/organizer.xml
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/places/places.css
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/places/query.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/places/star-icons.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/places/starred48.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/places/tag.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/places/toolbarDropMarker.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/places/unsortedBookmarks.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/places/unstarred48.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/pointerLock-16.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/pointerLock-64.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/preferences/Options-sync.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/preferences/Options.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/preferences/aboutPermissions.css
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/preferences/alwaysAsk.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/preferences/applications.css
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/preferences/in-content/dialog.css
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/preferences/in-content/favicon.ico
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/preferences/in-content/icons.svg
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/preferences/in-content/preferences.css
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/preferences/in-content/search.css
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/preferences/mail.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/preferences/preferences.css
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/preferences/search.css
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/privatebrowsing-mask.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/reader-tour.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/readerMode.svg
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/readinglist/icons.svg
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/readinglist/readinglist-icon.svg
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/readinglist/sidebar.css
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/reload-stop-go.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/sanitizeDialog.css
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/search-engine-placeholder.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/search-history-icon.svg
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/search-indicator-add-engine.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/search-indicator-badge-add.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/search-indicator.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/search-pref.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/searchbar.css
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/session-restore.svg
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/setDesktopBackground.css
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/slowStartup-16.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/social/chat-icons.svg
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/social/gear_clicked.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/social/gear_default.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/social/services-16.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/social/services-64.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/social/share-button-active.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/social/share-button.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/sync-128.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/sync-16.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/sync-32.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/sync-bg.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/sync-desktopIcon.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/sync-horizontalbar.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/sync-mobileIcon.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/sync-notification-24.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/syncCommon.css
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/syncProgress-horizontalbar.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/syncProgress-menuPanel.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/syncProgress-toolbar-inverted.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/syncProgress-toolbar.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/syncProgress.css
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/syncQuota.css
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/syncSetup.css
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/tab-crashed.svg
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/tabbrowser/alltabs-inverted.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/tabbrowser/alltabs.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/tabbrowser/connecting.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/tabbrowser/crashed.svg
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/tabbrowser/loading.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/tabbrowser/pendingpaint.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/tabbrowser/tab-active-middle.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/tabbrowser/tab-arrow-left-inverted.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/tabbrowser/tab-arrow-left.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/tabbrowser/tab-background-end.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/tabbrowser/tab-background-middle.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/tabbrowser/tab-background-start.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/tabbrowser/tab-overflow-indicator.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/tabbrowser/tab-selected-end.svg
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/tabbrowser/tab-selected-start.svg
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/tabbrowser/tab-separator.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/tabbrowser/tab-stroke-end.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/tabbrowser/tab-stroke-start.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/tabbrowser/tabDragIndicator.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/tabview/edit-light.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/tabview/search.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/tabview/stack-expander.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/tabview/tabview.css
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/tabview/tabview.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/theme-switcher-icon.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/translating-16.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/translating-16@2x.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/translation-16.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/translation-16@2x.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/undoCloseTab.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/update-badge.svg
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/urlbar-arrow.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/warning16.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/warning16@2x.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/webRTC-camera-white-16.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/webRTC-indicator.css
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/webRTC-microphone-white-16.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/webRTC-screen-white-16.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/webRTC-shareDevice-16.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/webRTC-shareDevice-64.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/webRTC-shareMicrophone-16.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/webRTC-shareMicrophone-64.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/webRTC-shareScreen-16.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/webRTC-shareScreen-64.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/webRTC-sharingDevice-16.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/webRTC-sharingMicrophone-16.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/webRTC-sharingScreen-16.png
+lib/tor-browser/browser/chrome/browser/skin/classic/browser/welcome-back.svg
+lib/tor-browser/browser/chrome/browser/skin/classic/communicator/communicator.css
+lib/tor-browser/browser/chrome/chrome.manifest
+lib/tor-browser/browser/chrome/en-US/locale/branding/brand.dtd
+lib/tor-browser/browser/chrome/en-US/locale/branding/brand.properties
+lib/tor-browser/browser/chrome/en-US/locale/branding/browserconfig.properties
+lib/tor-browser/browser/chrome/en-US/locale/browser-region/region.properties
+lib/tor-browser/browser/chrome/en-US/locale/browser/aboutAccounts.dtd
+lib/tor-browser/browser/chrome/en-US/locale/browser/aboutCertError.dtd
+lib/tor-browser/browser/chrome/en-US/locale/browser/aboutDialog.dtd
+lib/tor-browser/browser/chrome/en-US/locale/browser/aboutHealthReport.dtd
+lib/tor-browser/browser/chrome/en-US/locale/browser/aboutHome.dtd
+lib/tor-browser/browser/chrome/en-US/locale/browser/aboutPrivateBrowsing.dtd
+lib/tor-browser/browser/chrome/en-US/locale/browser/aboutPrivateBrowsing.properties
+lib/tor-browser/browser/chrome/en-US/locale/browser/aboutRobots.dtd
+lib/tor-browser/browser/chrome/en-US/locale/browser/aboutSessionRestore.dtd
+lib/tor-browser/browser/chrome/en-US/locale/browser/aboutSyncTabs.dtd
+lib/tor-browser/browser/chrome/en-US/locale/browser/aboutTabCrashed.dtd
+lib/tor-browser/browser/chrome/en-US/locale/browser/accounts.properties
+lib/tor-browser/browser/chrome/en-US/locale/browser/appstrings.properties
+lib/tor-browser/browser/chrome/en-US/locale/browser/baseMenuOverlay.dtd
+lib/tor-browser/browser/chrome/en-US/locale/browser/browser.dtd
+lib/tor-browser/browser/chrome/en-US/locale/browser/browser.properties
+lib/tor-browser/browser/chrome/en-US/locale/browser/customizableui/customizableWidgets.properties
+lib/tor-browser/browser/chrome/en-US/locale/browser/devtools/VariablesView.dtd
+lib/tor-browser/browser/chrome/en-US/locale/browser/devtools/animationinspector.dtd
+lib/tor-browser/browser/chrome/en-US/locale/browser/devtools/animationinspector.properties
+lib/tor-browser/browser/chrome/en-US/locale/browser/devtools/app-manager.dtd
+lib/tor-browser/browser/chrome/en-US/locale/browser/devtools/app-manager.properties
+lib/tor-browser/browser/chrome/en-US/locale/browser/devtools/appcacheutils.properties
+lib/tor-browser/browser/chrome/en-US/locale/browser/devtools/canvasdebugger.dtd
+lib/tor-browser/browser/chrome/en-US/locale/browser/devtools/canvasdebugger.properties
+lib/tor-browser/browser/chrome/en-US/locale/browser/devtools/connection-screen.dtd
+lib/tor-browser/browser/chrome/en-US/locale/browser/devtools/connection-screen.properties
+lib/tor-browser/browser/chrome/en-US/locale/browser/devtools/debugger.dtd
+lib/tor-browser/browser/chrome/en-US/locale/browser/devtools/debugger.properties
+lib/tor-browser/browser/chrome/en-US/locale/browser/devtools/device.properties
+lib/tor-browser/browser/chrome/en-US/locale/browser/devtools/eyedropper.properties
+lib/tor-browser/browser/chrome/en-US/locale/browser/devtools/font-inspector.dtd
+lib/tor-browser/browser/chrome/en-US/locale/browser/devtools/gcli.properties
+lib/tor-browser/browser/chrome/en-US/locale/browser/devtools/gclicommands.properties
+lib/tor-browser/browser/chrome/en-US/locale/browser/devtools/inspector.dtd
+lib/tor-browser/browser/chrome/en-US/locale/browser/devtools/inspector.properties
+lib/tor-browser/browser/chrome/en-US/locale/browser/devtools/layoutview.dtd
+lib/tor-browser/browser/chrome/en-US/locale/browser/devtools/netmonitor.dtd
+lib/tor-browser/browser/chrome/en-US/locale/browser/devtools/netmonitor.properties
+lib/tor-browser/browser/chrome/en-US/locale/browser/devtools/profiler.dtd
+lib/tor-browser/browser/chrome/en-US/locale/browser/devtools/profiler.properties
+lib/tor-browser/browser/chrome/en-US/locale/browser/devtools/projecteditor.properties
+lib/tor-browser/browser/chrome/en-US/locale/browser/devtools/responsiveUI.properties
+lib/tor-browser/browser/chrome/en-US/locale/browser/devtools/scratchpad.dtd
+lib/tor-browser/browser/chrome/en-US/locale/browser/devtools/scratchpad.properties
+lib/tor-browser/browser/chrome/en-US/locale/browser/devtools/shadereditor.dtd
+lib/tor-browser/browser/chrome/en-US/locale/browser/devtools/shadereditor.properties
+lib/tor-browser/browser/chrome/en-US/locale/browser/devtools/shared.properties
+lib/tor-browser/browser/chrome/en-US/locale/browser/devtools/sourceeditor.dtd
+lib/tor-browser/browser/chrome/en-US/locale/browser/devtools/sourceeditor.properties
+lib/tor-browser/browser/chrome/en-US/locale/browser/devtools/storage.properties
+lib/tor-browser/browser/chrome/en-US/locale/browser/devtools/styleeditor.dtd
+lib/tor-browser/browser/chrome/en-US/locale/browser/devtools/styleeditor.properties
+lib/tor-browser/browser/chrome/en-US/locale/browser/devtools/styleinspector.dtd
+lib/tor-browser/browser/chrome/en-US/locale/browser/devtools/tilt.properties
+lib/tor-browser/browser/chrome/en-US/locale/browser/devtools/timeline.dtd
+lib/tor-browser/browser/chrome/en-US/locale/browser/devtools/timeline.properties
+lib/tor-browser/browser/chrome/en-US/locale/browser/devtools/toolbox.dtd
+lib/tor-browser/browser/chrome/en-US/locale/browser/devtools/toolbox.properties
+lib/tor-browser/browser/chrome/en-US/locale/browser/devtools/webConsole.dtd
+lib/tor-browser/browser/chrome/en-US/locale/browser/devtools/webaudioeditor.dtd
+lib/tor-browser/browser/chrome/en-US/locale/browser/devtools/webaudioeditor.properties
+lib/tor-browser/browser/chrome/en-US/locale/browser/devtools/webconsole.properties
+lib/tor-browser/browser/chrome/en-US/locale/browser/devtools/webide.dtd
+lib/tor-browser/browser/chrome/en-US/locale/browser/devtools/webide.properties
+lib/tor-browser/browser/chrome/en-US/locale/browser/downloads/downloads.dtd
+lib/tor-browser/browser/chrome/en-US/locale/browser/downloads/downloads.properties
+lib/tor-browser/browser/chrome/en-US/locale/browser/downloads/settingsChange.dtd
+lib/tor-browser/browser/chrome/en-US/locale/browser/engineManager.dtd
+lib/tor-browser/browser/chrome/en-US/locale/browser/engineManager.properties
+lib/tor-browser/browser/chrome/en-US/locale/browser/feeds/subscribe.dtd
+lib/tor-browser/browser/chrome/en-US/locale/browser/feeds/subscribe.properties
+lib/tor-browser/browser/chrome/en-US/locale/browser/lightweightThemes.properties
+lib/tor-browser/browser/chrome/en-US/locale/browser/loop/loop.properties
+lib/tor-browser/browser/chrome/en-US/locale/browser/migration/migration.dtd
+lib/tor-browser/browser/chrome/en-US/locale/browser/migration/migration.properties
+lib/tor-browser/browser/chrome/en-US/locale/browser/netError.dtd
+lib/tor-browser/browser/chrome/en-US/locale/browser/newTab.dtd
+lib/tor-browser/browser/chrome/en-US/locale/browser/newTab.properties
+lib/tor-browser/browser/chrome/en-US/locale/browser/pageInfo.dtd
+lib/tor-browser/browser/chrome/en-US/locale/browser/pageInfo.properties
+lib/tor-browser/browser/chrome/en-US/locale/browser/places/bookmarkProperties.properties
+lib/tor-browser/browser/chrome/en-US/locale/browser/places/editBookmarkOverlay.dtd
+lib/tor-browser/browser/chrome/en-US/locale/browser/places/moveBookmarks.dtd
+lib/tor-browser/browser/chrome/en-US/locale/browser/places/places.dtd
+lib/tor-browser/browser/chrome/en-US/locale/browser/places/places.properties
+lib/tor-browser/browser/chrome/en-US/locale/browser/preferences/aboutPermissions.dtd
+lib/tor-browser/browser/chrome/en-US/locale/browser/preferences/aboutPermissions.properties
+lib/tor-browser/browser/chrome/en-US/locale/browser/preferences/advanced.dtd
+lib/tor-browser/browser/chrome/en-US/locale/browser/preferences/applicationManager.dtd
+lib/tor-browser/browser/chrome/en-US/locale/browser/preferences/applicationManager.properties
+lib/tor-browser/browser/chrome/en-US/locale/browser/preferences/applications.dtd
+lib/tor-browser/browser/chrome/en-US/locale/browser/preferences/colors.dtd
+lib/tor-browser/browser/chrome/en-US/locale/browser/preferences/connection.dtd
+lib/tor-browser/browser/chrome/en-US/locale/browser/preferences/content.dtd
+lib/tor-browser/browser/chrome/en-US/locale/browser/preferences/cookies.dtd
+lib/tor-browser/browser/chrome/en-US/locale/browser/preferences/fonts.dtd
+lib/tor-browser/browser/chrome/en-US/locale/browser/preferences/languages.dtd
+lib/tor-browser/browser/chrome/en-US/locale/browser/preferences/main.dtd
+lib/tor-browser/browser/chrome/en-US/locale/browser/preferences/permissions.dtd
+lib/tor-browser/browser/chrome/en-US/locale/browser/preferences/preferences.dtd
+lib/tor-browser/browser/chrome/en-US/locale/browser/preferences/preferences.properties
+lib/tor-browser/browser/chrome/en-US/locale/browser/preferences/privacy.dtd
+lib/tor-browser/browser/chrome/en-US/locale/browser/preferences/search.dtd
+lib/tor-browser/browser/chrome/en-US/locale/browser/preferences/security.dtd
+lib/tor-browser/browser/chrome/en-US/locale/browser/preferences/selectBookmark.dtd
+lib/tor-browser/browser/chrome/en-US/locale/browser/preferences/sync.dtd
+lib/tor-browser/browser/chrome/en-US/locale/browser/preferences/tabs.dtd
+lib/tor-browser/browser/chrome/en-US/locale/browser/preferences/translation.dtd
+lib/tor-browser/browser/chrome/en-US/locale/browser/quitDialog.properties
+lib/tor-browser/browser/chrome/en-US/locale/browser/safeMode.dtd
+lib/tor-browser/browser/chrome/en-US/locale/browser/safebrowsing/phishing-afterload-warning-message.dtd
+lib/tor-browser/browser/chrome/en-US/locale/browser/safebrowsing/report-phishing.dtd
+lib/tor-browser/browser/chrome/en-US/locale/browser/sanitize.dtd
+lib/tor-browser/browser/chrome/en-US/locale/browser/search.properties
+lib/tor-browser/browser/chrome/en-US/locale/browser/searchbar.dtd
+lib/tor-browser/browser/chrome/en-US/locale/browser/setDesktopBackground.dtd
+lib/tor-browser/browser/chrome/en-US/locale/browser/shellservice.properties
+lib/tor-browser/browser/chrome/en-US/locale/browser/sitePermissions.properties
+lib/tor-browser/browser/chrome/en-US/locale/browser/syncBrand.dtd
+lib/tor-browser/browser/chrome/en-US/locale/browser/syncCustomize.dtd
+lib/tor-browser/browser/chrome/en-US/locale/browser/syncGenericChange.properties
+lib/tor-browser/browser/chrome/en-US/locale/browser/syncKey.dtd
+lib/tor-browser/browser/chrome/en-US/locale/browser/syncProgress.dtd
+lib/tor-browser/browser/chrome/en-US/locale/browser/syncQuota.dtd
+lib/tor-browser/browser/chrome/en-US/locale/browser/syncQuota.properties
+lib/tor-browser/browser/chrome/en-US/locale/browser/syncSetup.dtd
+lib/tor-browser/browser/chrome/en-US/locale/browser/syncSetup.properties
+lib/tor-browser/browser/chrome/en-US/locale/browser/tabbrowser.dtd
+lib/tor-browser/browser/chrome/en-US/locale/browser/tabbrowser.properties
+lib/tor-browser/browser/chrome/en-US/locale/browser/tabview.properties
+lib/tor-browser/browser/chrome/en-US/locale/browser/taskbar.properties
+lib/tor-browser/browser/chrome/en-US/locale/browser/translation.dtd
+lib/tor-browser/browser/chrome/en-US/locale/browser/translation.properties
+lib/tor-browser/browser/chrome/en-US/locale/browser/webrtcIndicator.properties
+lib/tor-browser/browser/chrome/en-US/locale/pdfviewer/chrome.properties
+lib/tor-browser/browser/chrome/en-US/locale/pdfviewer/viewer.properties
+lib/tor-browser/browser/chrome/icons/default/default16.png
+lib/tor-browser/browser/chrome/icons/default/default32.png
+lib/tor-browser/browser/chrome/icons/default/default48.png
+lib/tor-browser/browser/chrome/pdfjs/LICENSE
+lib/tor-browser/browser/chrome/pdfjs/content/PdfJs.jsm
+lib/tor-browser/browser/chrome/pdfjs/content/PdfJsTelemetry.jsm
+lib/tor-browser/browser/chrome/pdfjs/content/PdfRedirector.jsm
+lib/tor-browser/browser/chrome/pdfjs/content/PdfStreamConverter.jsm
+lib/tor-browser/browser/chrome/pdfjs/content/PdfjsChromeUtils.jsm
+lib/tor-browser/browser/chrome/pdfjs/content/PdfjsContentUtils.jsm
+lib/tor-browser/browser/chrome/pdfjs/content/build/pdf.js
+lib/tor-browser/browser/chrome/pdfjs/content/build/pdf.worker.js
+lib/tor-browser/browser/chrome/pdfjs/content/network.js
+lib/tor-browser/browser/chrome/pdfjs/content/pdfjschildbootstrap.js
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/78-EUC-H.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/78-EUC-V.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/78-H.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/78-RKSJ-H.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/78-RKSJ-V.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/78-V.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/78ms-RKSJ-H.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/78ms-RKSJ-V.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/83pv-RKSJ-H.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/90ms-RKSJ-H.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/90ms-RKSJ-V.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/90msp-RKSJ-H.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/90msp-RKSJ-V.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/90pv-RKSJ-H.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/90pv-RKSJ-V.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/Add-H.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/Add-RKSJ-H.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/Add-RKSJ-V.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/Add-V.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/Adobe-CNS1-0.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/Adobe-CNS1-1.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/Adobe-CNS1-2.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/Adobe-CNS1-3.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/Adobe-CNS1-4.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/Adobe-CNS1-5.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/Adobe-CNS1-6.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/Adobe-CNS1-UCS2.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/Adobe-GB1-0.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/Adobe-GB1-1.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/Adobe-GB1-2.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/Adobe-GB1-3.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/Adobe-GB1-4.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/Adobe-GB1-5.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/Adobe-GB1-UCS2.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/Adobe-Japan1-0.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/Adobe-Japan1-1.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/Adobe-Japan1-2.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/Adobe-Japan1-3.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/Adobe-Japan1-4.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/Adobe-Japan1-5.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/Adobe-Japan1-6.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/Adobe-Japan1-UCS2.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/Adobe-Korea1-0.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/Adobe-Korea1-1.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/Adobe-Korea1-2.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/Adobe-Korea1-UCS2.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/B5-H.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/B5-V.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/B5pc-H.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/B5pc-V.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/CNS-EUC-H.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/CNS-EUC-V.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/CNS1-H.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/CNS1-V.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/CNS2-H.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/CNS2-V.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/ETHK-B5-H.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/ETHK-B5-V.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/ETen-B5-H.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/ETen-B5-V.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/ETenms-B5-H.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/ETenms-B5-V.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/EUC-H.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/EUC-V.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/Ext-H.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/Ext-RKSJ-H.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/Ext-RKSJ-V.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/Ext-V.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/GB-EUC-H.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/GB-EUC-V.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/GB-H.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/GB-V.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/GBK-EUC-H.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/GBK-EUC-V.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/GBK2K-H.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/GBK2K-V.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/GBKp-EUC-H.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/GBKp-EUC-V.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/GBT-EUC-H.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/GBT-EUC-V.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/GBT-H.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/GBT-V.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/GBTpc-EUC-H.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/GBTpc-EUC-V.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/GBpc-EUC-H.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/GBpc-EUC-V.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/H.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/HKdla-B5-H.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/HKdla-B5-V.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/HKdlb-B5-H.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/HKdlb-B5-V.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/HKgccs-B5-H.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/HKgccs-B5-V.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/HKm314-B5-H.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/HKm314-B5-V.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/HKm471-B5-H.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/HKm471-B5-V.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/HKscs-B5-H.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/HKscs-B5-V.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/Hankaku.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/Hiragana.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/KSC-EUC-H.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/KSC-EUC-V.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/KSC-H.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/KSC-Johab-H.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/KSC-Johab-V.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/KSC-V.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/KSCms-UHC-H.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/KSCms-UHC-HW-H.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/KSCms-UHC-HW-V.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/KSCms-UHC-V.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/KSCpc-EUC-H.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/KSCpc-EUC-V.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/Katakana.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/LICENSE
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/NWP-H.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/NWP-V.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/RKSJ-H.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/RKSJ-V.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/Roman.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/UniCNS-UCS2-H.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/UniCNS-UCS2-V.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/UniCNS-UTF16-H.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/UniCNS-UTF16-V.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/UniCNS-UTF32-H.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/UniCNS-UTF32-V.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/UniCNS-UTF8-H.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/UniCNS-UTF8-V.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/UniGB-UCS2-H.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/UniGB-UCS2-V.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/UniGB-UTF16-H.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/UniGB-UTF16-V.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/UniGB-UTF32-H.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/UniGB-UTF32-V.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/UniGB-UTF8-H.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/UniGB-UTF8-V.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/UniJIS-UCS2-H.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/UniJIS-UCS2-HW-H.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/UniJIS-UCS2-HW-V.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/UniJIS-UCS2-V.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/UniJIS-UTF16-H.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/UniJIS-UTF16-V.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/UniJIS-UTF32-H.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/UniJIS-UTF32-V.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/UniJIS-UTF8-H.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/UniJIS-UTF8-V.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/UniJIS2004-UTF16-H.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/UniJIS2004-UTF16-V.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/UniJIS2004-UTF32-H.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/UniJIS2004-UTF32-V.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/UniJIS2004-UTF8-H.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/UniJIS2004-UTF8-V.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/UniJISPro-UCS2-HW-V.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/UniJISPro-UCS2-V.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/UniJISPro-UTF8-V.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/UniJISX0213-UTF32-H.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/UniJISX0213-UTF32-V.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/UniJISX02132004-UTF32-H.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/UniJISX02132004-UTF32-V.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/UniKS-UCS2-H.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/UniKS-UCS2-V.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/UniKS-UTF16-H.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/UniKS-UTF16-V.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/UniKS-UTF32-H.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/UniKS-UTF32-V.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/UniKS-UTF8-H.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/UniKS-UTF8-V.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/V.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/cmaps/WP-Symbol.bcmap
+lib/tor-browser/browser/chrome/pdfjs/content/web/debugger.js
+lib/tor-browser/browser/chrome/pdfjs/content/web/images/annotation-check.svg
+lib/tor-browser/browser/chrome/pdfjs/content/web/images/annotation-comment.svg
+lib/tor-browser/browser/chrome/pdfjs/content/web/images/annotation-help.svg
+lib/tor-browser/browser/chrome/pdfjs/content/web/images/annotation-insert.svg
+lib/tor-browser/browser/chrome/pdfjs/content/web/images/annotation-key.svg
+lib/tor-browser/browser/chrome/pdfjs/content/web/images/annotation-newparagraph.svg
+lib/tor-browser/browser/chrome/pdfjs/content/web/images/annotation-noicon.svg
+lib/tor-browser/browser/chrome/pdfjs/content/web/images/annotation-note.svg
+lib/tor-browser/browser/chrome/pdfjs/content/web/images/annotation-paragraph.svg
+lib/tor-browser/browser/chrome/pdfjs/content/web/images/findbarButton-next-rtl.png
+lib/tor-browser/browser/chrome/pdfjs/content/web/images/findbarButton-next-rtl@2x.png
+lib/tor-browser/browser/chrome/pdfjs/content/web/images/findbarButton-next.png
+lib/tor-browser/browser/chrome/pdfjs/content/web/images/findbarButton-next@2x.png
+lib/tor-browser/browser/chrome/pdfjs/content/web/images/findbarButton-previous-rtl.png
+lib/tor-browser/browser/chrome/pdfjs/content/web/images/findbarButton-previous-rtl@2x.png
+lib/tor-browser/browser/chrome/pdfjs/content/web/images/findbarButton-previous.png
+lib/tor-browser/browser/chrome/pdfjs/content/web/images/findbarButton-previous@2x.png
+lib/tor-browser/browser/chrome/pdfjs/content/web/images/grab.cur
+lib/tor-browser/browser/chrome/pdfjs/content/web/images/grabbing.cur
+lib/tor-browser/browser/chrome/pdfjs/content/web/images/loading-icon.gif
+lib/tor-browser/browser/chrome/pdfjs/content/web/images/loading-small.png
+lib/tor-browser/browser/chrome/pdfjs/content/web/images/loading-small@2x.png
+lib/tor-browser/browser/chrome/pdfjs/content/web/images/secondaryToolbarButton-documentProperties.png
+lib/tor-browser/browser/chrome/pdfjs/content/web/images/secondaryToolbarButton-documentProperties@2x.png
+lib/tor-browser/browser/chrome/pdfjs/content/web/images/secondaryToolbarButton-firstPage.png
+lib/tor-browser/browser/chrome/pdfjs/content/web/images/secondaryToolbarButton-firstPage@2x.png
+lib/tor-browser/browser/chrome/pdfjs/content/web/images/secondaryToolbarButton-handTool.png
+lib/tor-browser/browser/chrome/pdfjs/content/web/images/secondaryToolbarButton-handTool@2x.png
+lib/tor-browser/browser/chrome/pdfjs/content/web/images/secondaryToolbarButton-lastPage.png
+lib/tor-browser/browser/chrome/pdfjs/content/web/images/secondaryToolbarButton-lastPage@2x.png
+lib/tor-browser/browser/chrome/pdfjs/content/web/images/secondaryToolbarButton-rotateCcw.png
+lib/tor-browser/browser/chrome/pdfjs/content/web/images/secondaryToolbarButton-rotateCcw@2x.png
+lib/tor-browser/browser/chrome/pdfjs/content/web/images/secondaryToolbarButton-rotateCw.png
+lib/tor-browser/browser/chrome/pdfjs/content/web/images/secondaryToolbarButton-rotateCw@2x.png
+lib/tor-browser/browser/chrome/pdfjs/content/web/images/shadow.png
+lib/tor-browser/browser/chrome/pdfjs/content/web/images/texture.png
+lib/tor-browser/browser/chrome/pdfjs/content/web/images/toolbarButton-bookmark.png
+lib/tor-browser/browser/chrome/pdfjs/content/web/images/toolbarButton-bookmark@2x.png
+lib/tor-browser/browser/chrome/pdfjs/content/web/images/toolbarButton-download.png
+lib/tor-browser/browser/chrome/pdfjs/content/web/images/toolbarButton-download@2x.png
+lib/tor-browser/browser/chrome/pdfjs/content/web/images/toolbarButton-menuArrows.png
+lib/tor-browser/browser/chrome/pdfjs/content/web/images/toolbarButton-menuArrows@2x.png
+lib/tor-browser/browser/chrome/pdfjs/content/web/images/toolbarButton-openFile.png
+lib/tor-browser/browser/chrome/pdfjs/content/web/images/toolbarButton-openFile@2x.png
+lib/tor-browser/browser/chrome/pdfjs/content/web/images/toolbarButton-pageDown-rtl.png
+lib/tor-browser/browser/chrome/pdfjs/content/web/images/toolbarButton-pageDown-rtl@2x.png
+lib/tor-browser/browser/chrome/pdfjs/content/web/images/toolbarButton-pageDown.png
+lib/tor-browser/browser/chrome/pdfjs/content/web/images/toolbarButton-pageDown@2x.png
+lib/tor-browser/browser/chrome/pdfjs/content/web/images/toolbarButton-pageUp-rtl.png
+lib/tor-browser/browser/chrome/pdfjs/content/web/images/toolbarButton-pageUp-rtl@2x.png
+lib/tor-browser/browser/chrome/pdfjs/content/web/images/toolbarButton-pageUp.png
+lib/tor-browser/browser/chrome/pdfjs/content/web/images/toolbarButton-pageUp@2x.png
+lib/tor-browser/browser/chrome/pdfjs/content/web/images/toolbarButton-presentationMode.png
+lib/tor-browser/browser/chrome/pdfjs/content/web/images/toolbarButton-presentationMode@2x.png
+lib/tor-browser/browser/chrome/pdfjs/content/web/images/toolbarButton-print.png
+lib/tor-browser/browser/chrome/pdfjs/content/web/images/toolbarButton-print@2x.png
+lib/tor-browser/browser/chrome/pdfjs/content/web/images/toolbarButton-search.png
+lib/tor-browser/browser/chrome/pdfjs/content/web/images/toolbarButton-search@2x.png
+lib/tor-browser/browser/chrome/pdfjs/content/web/images/toolbarButton-secondaryToolbarToggle-rtl.png
+lib/tor-browser/browser/chrome/pdfjs/content/web/images/toolbarButton-secondaryToolbarToggle-rtl@2x.png
+lib/tor-browser/browser/chrome/pdfjs/content/web/images/toolbarButton-secondaryToolbarToggle.png
+lib/tor-browser/browser/chrome/pdfjs/content/web/images/toolbarButton-secondaryToolbarToggle@2x.png
+lib/tor-browser/browser/chrome/pdfjs/content/web/images/toolbarButton-sidebarToggle-rtl.png
+lib/tor-browser/browser/chrome/pdfjs/content/web/images/toolbarButton-sidebarToggle-rtl@2x.png
+lib/tor-browser/browser/chrome/pdfjs/content/web/images/toolbarButton-sidebarToggle.png
+lib/tor-browser/browser/chrome/pdfjs/content/web/images/toolbarButton-sidebarToggle@2x.png
+lib/tor-browser/browser/chrome/pdfjs/content/web/images/toolbarButton-viewAttachments.png
+lib/tor-browser/browser/chrome/pdfjs/content/web/images/toolbarButton-viewAttachments@2x.png
+lib/tor-browser/browser/chrome/pdfjs/content/web/images/toolbarButton-viewOutline-rtl.png
+lib/tor-browser/browser/chrome/pdfjs/content/web/images/toolbarButton-viewOutline-rtl@2x.png
+lib/tor-browser/browser/chrome/pdfjs/content/web/images/toolbarButton-viewOutline.png
+lib/tor-browser/browser/chrome/pdfjs/content/web/images/toolbarButton-viewOutline@2x.png
+lib/tor-browser/browser/chrome/pdfjs/content/web/images/toolbarButton-viewThumbnail.png
+lib/tor-browser/browser/chrome/pdfjs/content/web/images/toolbarButton-viewThumbnail@2x.png
+lib/tor-browser/browser/chrome/pdfjs/content/web/images/toolbarButton-zoomIn.png
+lib/tor-browser/browser/chrome/pdfjs/content/web/images/toolbarButton-zoomIn@2x.png
+lib/tor-browser/browser/chrome/pdfjs/content/web/images/toolbarButton-zoomOut.png
+lib/tor-browser/browser/chrome/pdfjs/content/web/images/toolbarButton-zoomOut@2x.png
+lib/tor-browser/browser/chrome/pdfjs/content/web/l10n.js
+lib/tor-browser/browser/chrome/pdfjs/content/web/viewer.css
+lib/tor-browser/browser/chrome/pdfjs/content/web/viewer.html
+lib/tor-browser/browser/chrome/pdfjs/content/web/viewer.js
+lib/tor-browser/browser/chrome/pdfjs/pdfjs.manifest
+lib/tor-browser/browser/chrome/webide/content/addons.js
+lib/tor-browser/browser/chrome/webide/content/addons.xhtml
+lib/tor-browser/browser/chrome/webide/content/details.js
+lib/tor-browser/browser/chrome/webide/content/details.xhtml
+lib/tor-browser/browser/chrome/webide/content/devicepreferences.js
+lib/tor-browser/browser/chrome/webide/content/devicepreferences.xhtml
+lib/tor-browser/browser/chrome/webide/content/devicesettings.js
+lib/tor-browser/browser/chrome/webide/content/devicesettings.xhtml
+lib/tor-browser/browser/chrome/webide/content/logs.js
+lib/tor-browser/browser/chrome/webide/content/logs.xhtml
+lib/tor-browser/browser/chrome/webide/content/monitor.js
+lib/tor-browser/browser/chrome/webide/content/monitor.xhtml
+lib/tor-browser/browser/chrome/webide/content/newapp.js
+lib/tor-browser/browser/chrome/webide/content/newapp.xul
+lib/tor-browser/browser/chrome/webide/content/permissionstable.js
+lib/tor-browser/browser/chrome/webide/content/permissionstable.xhtml
+lib/tor-browser/browser/chrome/webide/content/prefs.js
+lib/tor-browser/browser/chrome/webide/content/prefs.xhtml
+lib/tor-browser/browser/chrome/webide/content/runtimedetails.js
+lib/tor-browser/browser/chrome/webide/content/runtimedetails.xhtml
+lib/tor-browser/browser/chrome/webide/content/webide.js
+lib/tor-browser/browser/chrome/webide/content/webide.xul
+lib/tor-browser/browser/chrome/webide/content/wifi-auth.js
+lib/tor-browser/browser/chrome/webide/content/wifi-auth.xhtml
+lib/tor-browser/browser/chrome/webide/skin/addons.css
+lib/tor-browser/browser/chrome/webide/skin/config-view.css
+lib/tor-browser/browser/chrome/webide/skin/deck.css
+lib/tor-browser/browser/chrome/webide/skin/details.css
+lib/tor-browser/browser/chrome/webide/skin/icons.png
+lib/tor-browser/browser/chrome/webide/skin/logs.css
+lib/tor-browser/browser/chrome/webide/skin/monitor.css
+lib/tor-browser/browser/chrome/webide/skin/newapp.css
+lib/tor-browser/browser/chrome/webide/skin/permissionstable.css
+lib/tor-browser/browser/chrome/webide/skin/prefs.css
+lib/tor-browser/browser/chrome/webide/skin/runtimedetails.css
+lib/tor-browser/browser/chrome/webide/skin/throbber.svg
+lib/tor-browser/browser/chrome/webide/skin/webide.css
+lib/tor-browser/browser/chrome/webide/skin/wifi-auth.css
+lib/tor-browser/browser/components/ChromeProfileMigrator.js
+lib/tor-browser/browser/components/ExperimentsService.js
+lib/tor-browser/browser/components/FeedConverter.js
+lib/tor-browser/browser/components/FeedWriter.js
+lib/tor-browser/browser/components/FirefoxProfileMigrator.js
+lib/tor-browser/browser/components/ProfileMigrator.js
+lib/tor-browser/browser/components/SelfSupportService.js
+lib/tor-browser/browser/components/WebContentConverter.js
+lib/tor-browser/browser/components/components.manifest
+lib/tor-browser/browser/components/devtools-clhandler.js
+lib/tor-browser/browser/components/fuelApplication.js
+lib/tor-browser/browser/components/interfaces.xpt
+lib/tor-browser/browser/components/libbrowsercomps.so
+lib/tor-browser/browser/components/nsBrowserContentHandler.js
+lib/tor-browser/browser/components/nsBrowserGlue.js
+lib/tor-browser/browser/components/nsSessionStartup.js
+lib/tor-browser/browser/components/nsSessionStore.js
+lib/tor-browser/browser/components/nsSetDefaultBrowser.js
+lib/tor-browser/browser/components/webideCli.js
+lib/tor-browser/browser/defaults/preferences/000-tor-browser.js
+lib/tor-browser/browser/defaults/preferences/firefox-branding.js
+lib/tor-browser/browser/defaults/preferences/firefox-l10n.js
+lib/tor-browser/browser/defaults/preferences/firefox.js
+lib/tor-browser/browser/defaults/preferences/webide-prefs.js
+lib/tor-browser/browser/defaults/profile/bookmarks.html
+lib/tor-browser/browser/defaults/profile/chrome/userChrome-example.css
+lib/tor-browser/browser/defaults/profile/chrome/userContent-example.css
+lib/tor-browser/browser/defaults/profile/localstore.rdf
+lib/tor-browser/browser/defaults/profile/mimeTypes.rdf
+lib/tor-browser/browser/defaults/profile/prefs.js
+lib/tor-browser/browser/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png
+lib/tor-browser/browser/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf
+lib/tor-browser/browser/icons/mozicon128.png
+lib/tor-browser/browser/modules/AboutHome.jsm
+lib/tor-browser/browser/modules/BrowserUITelemetry.jsm
+lib/tor-browser/browser/modules/CastingApps.jsm
+lib/tor-browser/browser/modules/Chat.jsm
+lib/tor-browser/browser/modules/ContentClick.jsm
+lib/tor-browser/browser/modules/ContentLinkHandler.jsm
+lib/tor-browser/browser/modules/ContentObservers.jsm
+lib/tor-browser/browser/modules/ContentSearch.jsm
+lib/tor-browser/browser/modules/ContentWebRTC.jsm
+lib/tor-browser/browser/modules/CustomizableUI.jsm
+lib/tor-browser/browser/modules/CustomizableWidgets.jsm
+lib/tor-browser/browser/modules/CustomizationTabPreloader.jsm
+lib/tor-browser/browser/modules/CustomizeMode.jsm
+lib/tor-browser/browser/modules/DirectoryLinksProvider.jsm
+lib/tor-browser/browser/modules/DownloadsCommon.jsm
+lib/tor-browser/browser/modules/DownloadsLogger.jsm
+lib/tor-browser/browser/modules/DownloadsTaskbar.jsm
+lib/tor-browser/browser/modules/DownloadsViewUI.jsm
+lib/tor-browser/browser/modules/DragPositionManager.jsm
+lib/tor-browser/browser/modules/E10SUtils.jsm
+lib/tor-browser/browser/modules/Feeds.jsm
+lib/tor-browser/browser/modules/FormSubmitObserver.jsm
+lib/tor-browser/browser/modules/FormValidationHandler.jsm
+lib/tor-browser/browser/modules/HiddenFrame.jsm
+lib/tor-browser/browser/modules/MigrationUtils.jsm
+lib/tor-browser/browser/modules/NetworkPrioritizer.jsm
+lib/tor-browser/browser/modules/PanelFrame.jsm
+lib/tor-browser/browser/modules/PanelWideWidgetTracker.jsm
+lib/tor-browser/browser/modules/PlacesUIUtils.jsm
+lib/tor-browser/browser/modules/PluginContent.jsm
+lib/tor-browser/browser/modules/ProcessHangMonitor.jsm
+lib/tor-browser/browser/modules/ReaderParent.jsm
+lib/tor-browser/browser/modules/RecentWindow.jsm
+lib/tor-browser/browser/modules/RemotePrompt.jsm
+lib/tor-browser/browser/modules/ScrollbarSampler.jsm
+lib/tor-browser/browser/modules/SelfSupportBackend.jsm
+lib/tor-browser/browser/modules/SitePermissions.jsm
+lib/tor-browser/browser/modules/Social.jsm
+lib/tor-browser/browser/modules/TabCrashReporter.jsm
+lib/tor-browser/browser/modules/UITour.jsm
+lib/tor-browser/browser/modules/WebappManager.jsm
+lib/tor-browser/browser/modules/devtools/AbstractTreeItem.jsm
+lib/tor-browser/browser/modules/devtools/AppCacheUtils.jsm
+lib/tor-browser/browser/modules/devtools/BreadcrumbsWidget.jsm
+lib/tor-browser/browser/modules/devtools/Chart.jsm
+lib/tor-browser/browser/modules/devtools/Curl.jsm
+lib/tor-browser/browser/modules/devtools/DOMHelpers.jsm
+lib/tor-browser/browser/modules/devtools/DeveloperToolbar.jsm
+lib/tor-browser/browser/modules/devtools/FlameGraph.jsm
+lib/tor-browser/browser/modules/devtools/Graphs.jsm
+lib/tor-browser/browser/modules/devtools/GraphsWorker.js
+lib/tor-browser/browser/modules/devtools/Jsbeautify.jsm
+lib/tor-browser/browser/modules/devtools/Parser.jsm
+lib/tor-browser/browser/modules/devtools/SideMenuWidget.jsm
+lib/tor-browser/browser/modules/devtools/SimpleListWidget.jsm
+lib/tor-browser/browser/modules/devtools/SplitView.jsm
+lib/tor-browser/browser/modules/devtools/StyleEditorUI.jsm
+lib/tor-browser/browser/modules/devtools/StyleEditorUtil.jsm
+lib/tor-browser/browser/modules/devtools/StyleSheetEditor.jsm
+lib/tor-browser/browser/modules/devtools/ToolboxProcess.jsm
+lib/tor-browser/browser/modules/devtools/VariablesView.jsm
+lib/tor-browser/browser/modules/devtools/VariablesViewController.jsm
+lib/tor-browser/browser/modules/devtools/ViewHelpers.jsm
+lib/tor-browser/browser/modules/devtools/app-manager/app-projects.js
+lib/tor-browser/browser/modules/devtools/app-manager/app-validator.js
+lib/tor-browser/browser/modules/devtools/app-manager/builtin-adb-store.js
+lib/tor-browser/browser/modules/devtools/app-manager/connection-store.js
+lib/tor-browser/browser/modules/devtools/app-manager/device-store.js
+lib/tor-browser/browser/modules/devtools/app-manager/simulators-store.js
+lib/tor-browser/browser/modules/devtools/app-manager/webapps-store.js
+lib/tor-browser/browser/modules/devtools/canvasdebugger/panel.js
+lib/tor-browser/browser/modules/devtools/commandline/commands-index.js
+lib/tor-browser/browser/modules/devtools/debugger/debugger-commands.js
+lib/tor-browser/browser/modules/devtools/debugger/panel.js
+lib/tor-browser/browser/modules/devtools/eyedropper/commands.js
+lib/tor-browser/browser/modules/devtools/eyedropper/eyedropper-child.js
+lib/tor-browser/browser/modules/devtools/eyedropper/eyedropper.js
+lib/tor-browser/browser/modules/devtools/framework/selection.js
+lib/tor-browser/browser/modules/devtools/framework/sidebar.js
+lib/tor-browser/browser/modules/devtools/framework/target.js
+lib/tor-browser/browser/modules/devtools/framework/toolbox-highlighter-utils.js
+lib/tor-browser/browser/modules/devtools/framework/toolbox-hosts.js
+lib/tor-browser/browser/modules/devtools/framework/toolbox-options.js
+lib/tor-browser/browser/modules/devtools/framework/toolbox.js
+lib/tor-browser/browser/modules/devtools/gDevTools.jsm
+lib/tor-browser/browser/modules/devtools/inspector/breadcrumbs.js
+lib/tor-browser/browser/modules/devtools/inspector/inspector-commands.js
+lib/tor-browser/browser/modules/devtools/inspector/inspector-panel.js
+lib/tor-browser/browser/modules/devtools/inspector/selector-search.js
+lib/tor-browser/browser/modules/devtools/main.js
+lib/tor-browser/browser/modules/devtools/markupview/html-editor.js
+lib/tor-browser/browser/modules/devtools/markupview/markup-view.js
+lib/tor-browser/browser/modules/devtools/netmonitor/panel.js
+lib/tor-browser/browser/modules/devtools/profiler/panel.js
+lib/tor-browser/browser/modules/devtools/profiler/shared.js
+lib/tor-browser/browser/modules/devtools/projecteditor/editors.js
+lib/tor-browser/browser/modules/devtools/projecteditor/helpers/event.js
+lib/tor-browser/browser/modules/devtools/projecteditor/helpers/file-picker.js
+lib/tor-browser/browser/modules/devtools/projecteditor/helpers/l10n.js
+lib/tor-browser/browser/modules/devtools/projecteditor/helpers/promise.js
+lib/tor-browser/browser/modules/devtools/projecteditor/helpers/prompts.js
+lib/tor-browser/browser/modules/devtools/projecteditor/helpers/readdir.js
+lib/tor-browser/browser/modules/devtools/projecteditor/plugins/app-manager/app-project-editor.js
+lib/tor-browser/browser/modules/devtools/projecteditor/plugins/app-manager/plugin.js
+lib/tor-browser/browser/modules/devtools/projecteditor/plugins/core.js
+lib/tor-browser/browser/modules/devtools/projecteditor/plugins/delete/delete.js
+lib/tor-browser/browser/modules/devtools/projecteditor/plugins/dirty/dirty.js
+lib/tor-browser/browser/modules/devtools/projecteditor/plugins/image-view/image-editor.js
+lib/tor-browser/browser/modules/devtools/projecteditor/plugins/image-view/plugin.js
+lib/tor-browser/browser/modules/devtools/projecteditor/plugins/logging/logging.js
+lib/tor-browser/browser/modules/devtools/projecteditor/plugins/new/new.js
+lib/tor-browser/browser/modules/devtools/projecteditor/plugins/rename/rename.js
+lib/tor-browser/browser/modules/devtools/projecteditor/plugins/save/save.js
+lib/tor-browser/browser/modules/devtools/projecteditor/plugins/status-bar/plugin.js
+lib/tor-browser/browser/modules/devtools/projecteditor/project.js
+lib/tor-browser/browser/modules/devtools/projecteditor/projecteditor.js
+lib/tor-browser/browser/modules/devtools/projecteditor/shells.js
+lib/tor-browser/browser/modules/devtools/projecteditor/stores/base.js
+lib/tor-browser/browser/modules/devtools/projecteditor/stores/local.js
+lib/tor-browser/browser/modules/devtools/projecteditor/stores/resource.js
+lib/tor-browser/browser/modules/devtools/projecteditor/tree.js
+lib/tor-browser/browser/modules/devtools/resize-commands.js
+lib/tor-browser/browser/modules/devtools/responsivedesign-child.js
+lib/tor-browser/browser/modules/devtools/responsivedesign.jsm
+lib/tor-browser/browser/modules/devtools/scratchpad-manager.jsm
+lib/tor-browser/browser/modules/devtools/scratchpad/scratchpad-commands.js
+lib/tor-browser/browser/modules/devtools/scratchpad/scratchpad-panel.js
+lib/tor-browser/browser/modules/devtools/shadereditor/panel.js
+lib/tor-browser/browser/modules/devtools/shared/autocomplete-popup.js
+lib/tor-browser/browser/modules/devtools/shared/d3.js
+lib/tor-browser/browser/modules/devtools/shared/devices.js
+lib/tor-browser/browser/modules/devtools/shared/doorhanger.js
+lib/tor-browser/browser/modules/devtools/shared/frame-script-utils.js
+lib/tor-browser/browser/modules/devtools/shared/inplace-editor.js
+lib/tor-browser/browser/modules/devtools/shared/observable-object.js
+lib/tor-browser/browser/modules/devtools/shared/options-view.js
+lib/tor-browser/browser/modules/devtools/shared/profiler/global.js
+lib/tor-browser/browser/modules/devtools/shared/profiler/tree-model.js
+lib/tor-browser/browser/modules/devtools/shared/profiler/tree-view.js
+lib/tor-browser/browser/modules/devtools/shared/telemetry.js
+lib/tor-browser/browser/modules/devtools/shared/theme-switching.js
+lib/tor-browser/browser/modules/devtools/shared/theme.js
+lib/tor-browser/browser/modules/devtools/shared/timeline/global.js
+lib/tor-browser/browser/modules/devtools/shared/timeline/marker-details.js
+lib/tor-browser/browser/modules/devtools/shared/timeline/markers-overview.js
+lib/tor-browser/browser/modules/devtools/shared/timeline/memory-overview.js
+lib/tor-browser/browser/modules/devtools/shared/timeline/waterfall.js
+lib/tor-browser/browser/modules/devtools/shared/undo.js
+lib/tor-browser/browser/modules/devtools/shared/widgets/CubicBezierWidget.js
+lib/tor-browser/browser/modules/devtools/shared/widgets/FastListWidget.js
+lib/tor-browser/browser/modules/devtools/shared/widgets/Spectrum.js
+lib/tor-browser/browser/modules/devtools/shared/widgets/TableWidget.js
+lib/tor-browser/browser/modules/devtools/shared/widgets/Tooltip.js
+lib/tor-browser/browser/modules/devtools/shared/widgets/TreeWidget.js
+lib/tor-browser/browser/modules/devtools/sourceeditor/autocomplete.js
+lib/tor-browser/browser/modules/devtools/sourceeditor/css-autocompleter.js
+lib/tor-browser/browser/modules/devtools/sourceeditor/css-tokenizer.js
+lib/tor-browser/browser/modules/devtools/sourceeditor/debugger.js
+lib/tor-browser/browser/modules/devtools/sourceeditor/editor.js
+lib/tor-browser/browser/modules/devtools/storage/panel.js
+lib/tor-browser/browser/modules/devtools/storage/ui.js
+lib/tor-browser/browser/modules/devtools/styleeditor/styleeditor-commands.js
+lib/tor-browser/browser/modules/devtools/styleeditor/styleeditor-panel.js
+lib/tor-browser/browser/modules/devtools/styleeditor/utils.js
+lib/tor-browser/browser/modules/devtools/styleinspector/computed-view.js
+lib/tor-browser/browser/modules/devtools/styleinspector/css-parsing-utils.js
+lib/tor-browser/browser/modules/devtools/styleinspector/rule-view.js
+lib/tor-browser/browser/modules/devtools/styleinspector/style-inspector-overlays.js
+lib/tor-browser/browser/modules/devtools/styleinspector/style-inspector.js
+lib/tor-browser/browser/modules/devtools/tilt/TiltWorkerCrafter.js
+lib/tor-browser/browser/modules/devtools/tilt/TiltWorkerPicker.js
+lib/tor-browser/browser/modules/devtools/tilt/tilt-commands.js
+lib/tor-browser/browser/modules/devtools/tilt/tilt-gl.js
+lib/tor-browser/browser/modules/devtools/tilt/tilt-math.js
+lib/tor-browser/browser/modules/devtools/tilt/tilt-utils.js
+lib/tor-browser/browser/modules/devtools/tilt/tilt-visualizer-style.js
+lib/tor-browser/browser/modules/devtools/tilt/tilt-visualizer.js
+lib/tor-browser/browser/modules/devtools/tilt/tilt.js
+lib/tor-browser/browser/modules/devtools/timeline/panel.js
+lib/tor-browser/browser/modules/devtools/webaudioeditor/panel.js
+lib/tor-browser/browser/modules/devtools/webconsole/console-commands.js
+lib/tor-browser/browser/modules/devtools/webconsole/console-output.js
+lib/tor-browser/browser/modules/devtools/webconsole/hudservice.js
+lib/tor-browser/browser/modules/devtools/webconsole/network-panel.js
+lib/tor-browser/browser/modules/devtools/webconsole/panel.js
+lib/tor-browser/browser/modules/devtools/webconsole/webconsole.js
+lib/tor-browser/browser/modules/devtools/webide/addons.js
+lib/tor-browser/browser/modules/devtools/webide/app-manager.js
+lib/tor-browser/browser/modules/devtools/webide/build.js
+lib/tor-browser/browser/modules/devtools/webide/config-view.js
+lib/tor-browser/browser/modules/devtools/webide/remote-resources.js
+lib/tor-browser/browser/modules/devtools/webide/runtimes.js
+lib/tor-browser/browser/modules/devtools/webide/simulator-process.js
+lib/tor-browser/browser/modules/devtools/webide/simulators.js
+lib/tor-browser/browser/modules/devtools/webide/tab-store.js
+lib/tor-browser/browser/modules/devtools/webide/utils.js
+lib/tor-browser/browser/modules/distribution.js
+lib/tor-browser/browser/modules/experiments/Experiments.jsm
+lib/tor-browser/browser/modules/loop/CardDavImporter.jsm
+lib/tor-browser/browser/modules/loop/GoogleImporter.jsm
+lib/tor-browser/browser/modules/loop/LoopCalls.jsm
+lib/tor-browser/browser/modules/loop/LoopContacts.jsm
+lib/tor-browser/browser/modules/loop/LoopRooms.jsm
+lib/tor-browser/browser/modules/loop/LoopStorage.jsm
+lib/tor-browser/browser/modules/loop/MozLoopAPI.jsm
+lib/tor-browser/browser/modules/loop/MozLoopPushHandler.jsm
+lib/tor-browser/browser/modules/loop/MozLoopService.jsm
+lib/tor-browser/browser/modules/loop/MozLoopWorker.js
+lib/tor-browser/browser/modules/offlineAppCache.jsm
+lib/tor-browser/browser/modules/readinglist/ReadingList.jsm
+lib/tor-browser/browser/modules/readinglist/SQLiteStore.jsm
+lib/tor-browser/browser/modules/readinglist/Scheduler.jsm
+lib/tor-browser/browser/modules/readinglist/ServerClient.jsm
+lib/tor-browser/browser/modules/readinglist/Sync.jsm
+lib/tor-browser/browser/modules/sessionstore/ContentRestore.jsm
+lib/tor-browser/browser/modules/sessionstore/DocShellCapabilities.jsm
+lib/tor-browser/browser/modules/sessionstore/FrameTree.jsm
+lib/tor-browser/browser/modules/sessionstore/GlobalState.jsm
+lib/tor-browser/browser/modules/sessionstore/PageStyle.jsm
+lib/tor-browser/browser/modules/sessionstore/PrivacyFilter.jsm
+lib/tor-browser/browser/modules/sessionstore/PrivacyLevel.jsm
+lib/tor-browser/browser/modules/sessionstore/RecentlyClosedTabsAndWindowsMenuUtils.jsm
+lib/tor-browser/browser/modules/sessionstore/RunState.jsm
+lib/tor-browser/browser/modules/sessionstore/SessionCookies.jsm
+lib/tor-browser/browser/modules/sessionstore/SessionFile.jsm
+lib/tor-browser/browser/modules/sessionstore/SessionHistory.jsm
+lib/tor-browser/browser/modules/sessionstore/SessionMigration.jsm
+lib/tor-browser/browser/modules/sessionstore/SessionSaver.jsm
+lib/tor-browser/browser/modules/sessionstore/SessionStorage.jsm
+lib/tor-browser/browser/modules/sessionstore/SessionStore.jsm
+lib/tor-browser/browser/modules/sessionstore/SessionWorker.js
+lib/tor-browser/browser/modules/sessionstore/SessionWorker.jsm
+lib/tor-browser/browser/modules/sessionstore/TabAttributes.jsm
+lib/tor-browser/browser/modules/sessionstore/TabState.jsm
+lib/tor-browser/browser/modules/sessionstore/TabStateCache.jsm
+lib/tor-browser/browser/modules/sessionstore/Utils.jsm
+lib/tor-browser/browser/modules/tabview/utils.jsm
+lib/tor-browser/browser/modules/translation/BingTranslator.jsm
+lib/tor-browser/browser/modules/translation/LanguageDetector.jsm
+lib/tor-browser/browser/modules/translation/Translation.jsm
+lib/tor-browser/browser/modules/translation/TranslationContentHandler.jsm
+lib/tor-browser/browser/modules/translation/TranslationDocument.jsm
+lib/tor-browser/browser/modules/translation/cld-worker.js
+lib/tor-browser/browser/modules/translation/cld-worker.js.mem
+lib/tor-browser/browser/modules/webrtcUI.jsm
+lib/tor-browser/browser/searchplugins/ddg.xml
+lib/tor-browser/browser/searchplugins/disconnect.xml
+lib/tor-browser/browser/searchplugins/google.xml
+lib/tor-browser/browser/searchplugins/startpage.xml
+lib/tor-browser/browser/searchplugins/twitter.xml
+lib/tor-browser/browser/searchplugins/wikipedia.xml
+lib/tor-browser/browser/searchplugins/yahoo.xml
+lib/tor-browser/browser/searchplugins/youtube.xml
+lib/tor-browser/chrome.manifest
+lib/tor-browser/chrome/chrome.manifest
+lib/tor-browser/chrome/en-US/locale/en-US/alerts/alert.dtd
+lib/tor-browser/chrome/en-US/locale/en-US/alerts/notificationNames.properties
+lib/tor-browser/chrome/en-US/locale/en-US/autoconfig/autoconfig.properties
+lib/tor-browser/chrome/en-US/locale/en-US/cookie/cookieAcceptDialog.dtd
+lib/tor-browser/chrome/en-US/locale/en-US/cookie/cookieAcceptDialog.properties
+lib/tor-browser/chrome/en-US/locale/en-US/formautofill/requestAutocomplete.dtd
+lib/tor-browser/chrome/en-US/locale/en-US/global-platform/mac/accessible.properties
+lib/tor-browser/chrome/en-US/locale/en-US/global-platform/mac/intl.properties
+lib/tor-browser/chrome/en-US/locale/en-US/global-platform/mac/platformKeys.properties
+lib/tor-browser/chrome/en-US/locale/en-US/global-platform/unix/accessible.properties
+lib/tor-browser/chrome/en-US/locale/en-US/global-platform/unix/intl.properties
+lib/tor-browser/chrome/en-US/locale/en-US/global-platform/unix/platformKeys.properties
+lib/tor-browser/chrome/en-US/locale/en-US/global-platform/win/accessible.properties
+lib/tor-browser/chrome/en-US/locale/en-US/global-platform/win/intl.properties
+lib/tor-browser/chrome/en-US/locale/en-US/global-platform/win/platformKeys.properties
+lib/tor-browser/chrome/en-US/locale/en-US/global-region/region.properties
+lib/tor-browser/chrome/en-US/locale/en-US/global/AccessFu.properties
+lib/tor-browser/chrome/en-US/locale/en-US/global/about.dtd
+lib/tor-browser/chrome/en-US/locale/en-US/global/aboutAbout.dtd
+lib/tor-browser/chrome/en-US/locale/en-US/global/aboutNetworking.dtd
+lib/tor-browser/chrome/en-US/locale/en-US/global/aboutReader.properties
+lib/tor-browser/chrome/en-US/locale/en-US/global/aboutRights.dtd
+lib/tor-browser/chrome/en-US/locale/en-US/global/aboutSupport.dtd
+lib/tor-browser/chrome/en-US/locale/en-US/global/aboutSupport.properties
+lib/tor-browser/chrome/en-US/locale/en-US/global/aboutTelemetry.dtd
+lib/tor-browser/chrome/en-US/locale/en-US/global/aboutTelemetry.properties
+lib/tor-browser/chrome/en-US/locale/en-US/global/appPicker.dtd
+lib/tor-browser/chrome/en-US/locale/en-US/global/appstrings.properties
+lib/tor-browser/chrome/en-US/locale/en-US/global/autocomplete.properties
+lib/tor-browser/chrome/en-US/locale/en-US/global/brand.dtd
+lib/tor-browser/chrome/en-US/locale/en-US/global/browser.properties
+lib/tor-browser/chrome/en-US/locale/en-US/global/charsetMenu.dtd
+lib/tor-browser/chrome/en-US/locale/en-US/global/charsetMenu.properties
+lib/tor-browser/chrome/en-US/locale/en-US/global/commonDialog.dtd
+lib/tor-browser/chrome/en-US/locale/en-US/global/commonDialogs.properties
+lib/tor-browser/chrome/en-US/locale/en-US/global/config.dtd
+lib/tor-browser/chrome/en-US/locale/en-US/global/config.properties
+lib/tor-browser/chrome/en-US/locale/en-US/global/console.dtd
+lib/tor-browser/chrome/en-US/locale/en-US/global/console.properties
+lib/tor-browser/chrome/en-US/locale/en-US/global/contentAreaCommands.properties
+lib/tor-browser/chrome/en-US/locale/en-US/global/crashes.dtd
+lib/tor-browser/chrome/en-US/locale/en-US/global/crashes.properties
+lib/tor-browser/chrome/en-US/locale/en-US/global/css.properties
+lib/tor-browser/chrome/en-US/locale/en-US/global/customizeToolbar.dtd
+lib/tor-browser/chrome/en-US/locale/en-US/global/customizeToolbar.properties
+lib/tor-browser/chrome/en-US/locale/en-US/global/dateFormat.properties
+lib/tor-browser/chrome/en-US/locale/en-US/global/datetimepicker.dtd
+lib/tor-browser/chrome/en-US/locale/en-US/global/devtools/csscoverage.dtd
+lib/tor-browser/chrome/en-US/locale/en-US/global/devtools/csscoverage.properties
+lib/tor-browser/chrome/en-US/locale/en-US/global/devtools/debugger.properties
+lib/tor-browser/chrome/en-US/locale/en-US/global/devtools/styleinspector.properties
+lib/tor-browser/chrome/en-US/locale/en-US/global/dialog.properties
+lib/tor-browser/chrome/en-US/locale/en-US/global/dialogOverlay.dtd
+lib/tor-browser/chrome/en-US/locale/en-US/global/dom/dom.properties
+lib/tor-browser/chrome/en-US/locale/en-US/global/editMenuOverlay.dtd
+lib/tor-browser/chrome/en-US/locale/en-US/global/fallbackMenubar.properties
+lib/tor-browser/chrome/en-US/locale/en-US/global/filefield.properties
+lib/tor-browser/chrome/en-US/locale/en-US/global/filepicker.dtd
+lib/tor-browser/chrome/en-US/locale/en-US/global/filepicker.properties
+lib/tor-browser/chrome/en-US/locale/en-US/global/findbar.dtd
+lib/tor-browser/chrome/en-US/locale/en-US/global/findbar.properties
+lib/tor-browser/chrome/en-US/locale/en-US/global/finddialog.dtd
+lib/tor-browser/chrome/en-US/locale/en-US/global/finddialog.properties
+lib/tor-browser/chrome/en-US/locale/en-US/global/global-strres.properties
+lib/tor-browser/chrome/en-US/locale/en-US/global/global.dtd
+lib/tor-browser/chrome/en-US/locale/en-US/global/globalKeys.dtd
+lib/tor-browser/chrome/en-US/locale/en-US/global/headsUpDisplay.properties
+lib/tor-browser/chrome/en-US/locale/en-US/global/intl.css
+lib/tor-browser/chrome/en-US/locale/en-US/global/intl.properties
+lib/tor-browser/chrome/en-US/locale/en-US/global/keys.properties
+lib/tor-browser/chrome/en-US/locale/en-US/global/languageNames.properties
+lib/tor-browser/chrome/en-US/locale/en-US/global/layout/HtmlForm.properties
+lib/tor-browser/chrome/en-US/locale/en-US/global/layout/MediaDocument.properties
+lib/tor-browser/chrome/en-US/locale/en-US/global/layout/htmlparser.properties
+lib/tor-browser/chrome/en-US/locale/en-US/global/layout/xmlparser.properties
+lib/tor-browser/chrome/en-US/locale/en-US/global/layout_errors.properties
+lib/tor-browser/chrome/en-US/locale/en-US/global/mathml/mathml.properties
+lib/tor-browser/chrome/en-US/locale/en-US/global/mozilla.dtd
+lib/tor-browser/chrome/en-US/locale/en-US/global/netError.dtd
+lib/tor-browser/chrome/en-US/locale/en-US/global/netErrorApp.dtd
+lib/tor-browser/chrome/en-US/locale/en-US/global/notification.dtd
+lib/tor-browser/chrome/en-US/locale/en-US/global/nsWebBrowserPersist.properties
+lib/tor-browser/chrome/en-US/locale/en-US/global/plugins.properties
+lib/tor-browser/chrome/en-US/locale/en-US/global/preferences.dtd
+lib/tor-browser/chrome/en-US/locale/en-US/global/printPageSetup.dtd
+lib/tor-browser/chrome/en-US/locale/en-US/global/printPreview.dtd
+lib/tor-browser/chrome/en-US/locale/en-US/global/printPreviewProgress.dtd
+lib/tor-browser/chrome/en-US/locale/en-US/global/printProgress.dtd
+lib/tor-browser/chrome/en-US/locale/en-US/global/printdialog.dtd
+lib/tor-browser/chrome/en-US/locale/en-US/global/printdialog.properties
+lib/tor-browser/chrome/en-US/locale/en-US/global/printing.properties
+lib/tor-browser/chrome/en-US/locale/en-US/global/printjoboptions.dtd
+lib/tor-browser/chrome/en-US/locale/en-US/global/regionNames.properties
+lib/tor-browser/chrome/en-US/locale/en-US/global/resetProfile.dtd
+lib/tor-browser/chrome/en-US/locale/en-US/global/resetProfile.properties
+lib/tor-browser/chrome/en-US/locale/en-US/global/search/search.properties
+lib/tor-browser/chrome/en-US/locale/en-US/global/security/caps.properties
+lib/tor-browser/chrome/en-US/locale/en-US/global/security/csp.properties
+lib/tor-browser/chrome/en-US/locale/en-US/global/security/security.properties
+lib/tor-browser/chrome/en-US/locale/en-US/global/svg/svg.properties
+lib/tor-browser/chrome/en-US/locale/en-US/global/textcontext.dtd
+lib/tor-browser/chrome/en-US/locale/en-US/global/tree.dtd
+lib/tor-browser/chrome/en-US/locale/en-US/global/videocontrols.dtd
+lib/tor-browser/chrome/en-US/locale/en-US/global/viewSource.dtd
+lib/tor-browser/chrome/en-US/locale/en-US/global/viewSource.properties
+lib/tor-browser/chrome/en-US/locale/en-US/global/webapps.properties
+lib/tor-browser/chrome/en-US/locale/en-US/global/wizard.dtd
+lib/tor-browser/chrome/en-US/locale/en-US/global/wizard.properties
+lib/tor-browser/chrome/en-US/locale/en-US/global/xbl.properties
+lib/tor-browser/chrome/en-US/locale/en-US/global/xml/prettyprint.dtd
+lib/tor-browser/chrome/en-US/locale/en-US/global/xslt/xslt.properties
+lib/tor-browser/chrome/en-US/locale/en-US/global/xul.properties
+lib/tor-browser/chrome/en-US/locale/en-US/mozapps/downloads/downloads.dtd
+lib/tor-browser/chrome/en-US/locale/en-US/mozapps/downloads/downloads.properties
+lib/tor-browser/chrome/en-US/locale/en-US/mozapps/downloads/settingsChange.dtd
+lib/tor-browser/chrome/en-US/locale/en-US/mozapps/downloads/unknownContentType.dtd
+lib/tor-browser/chrome/en-US/locale/en-US/mozapps/downloads/unknownContentType.properties
+lib/tor-browser/chrome/en-US/locale/en-US/mozapps/extensions/about.dtd
+lib/tor-browser/chrome/en-US/locale/en-US/mozapps/extensions/blocklist.dtd
+lib/tor-browser/chrome/en-US/locale/en-US/mozapps/extensions/extensions.dtd
+lib/tor-browser/chrome/en-US/locale/en-US/mozapps/extensions/extensions.properties
+lib/tor-browser/chrome/en-US/locale/en-US/mozapps/extensions/newaddon.dtd
+lib/tor-browser/chrome/en-US/locale/en-US/mozapps/extensions/newaddon.properties
+lib/tor-browser/chrome/en-US/locale/en-US/mozapps/extensions/selectAddons.dtd
+lib/tor-browser/chrome/en-US/locale/en-US/mozapps/extensions/selectAddons.properties
+lib/tor-browser/chrome/en-US/locale/en-US/mozapps/extensions/update.dtd
+lib/tor-browser/chrome/en-US/locale/en-US/mozapps/extensions/update.properties
+lib/tor-browser/chrome/en-US/locale/en-US/mozapps/handling/handling.dtd
+lib/tor-browser/chrome/en-US/locale/en-US/mozapps/handling/handling.properties
+lib/tor-browser/chrome/en-US/locale/en-US/mozapps/plugins/plugins.dtd
+lib/tor-browser/chrome/en-US/locale/en-US/mozapps/preferences/changemp.dtd
+lib/tor-browser/chrome/en-US/locale/en-US/mozapps/preferences/preferences.properties
+lib/tor-browser/chrome/en-US/locale/en-US/mozapps/preferences/removemp.dtd
+lib/tor-browser/chrome/en-US/locale/en-US/mozapps/profile/createProfileWizard.dtd
+lib/tor-browser/chrome/en-US/locale/en-US/mozapps/profile/profileSelection.dtd
+lib/tor-browser/chrome/en-US/locale/en-US/mozapps/profile/profileSelection.properties
+lib/tor-browser/chrome/en-US/locale/en-US/mozapps/update/history.dtd
+lib/tor-browser/chrome/en-US/locale/en-US/mozapps/update/updates.dtd
+lib/tor-browser/chrome/en-US/locale/en-US/mozapps/update/updates.properties
+lib/tor-browser/chrome/en-US/locale/en-US/mozapps/xpinstall/xpinstallConfirm.dtd
+lib/tor-browser/chrome/en-US/locale/en-US/mozapps/xpinstall/xpinstallConfirm.properties
+lib/tor-browser/chrome/en-US/locale/en-US/necko/necko.properties
+lib/tor-browser/chrome/en-US/locale/en-US/passwordmgr/passwordManager.dtd
+lib/tor-browser/chrome/en-US/locale/en-US/passwordmgr/passwordmgr.properties
+lib/tor-browser/chrome/en-US/locale/en-US/pipnss/nsserrors.properties
+lib/tor-browser/chrome/en-US/locale/en-US/pipnss/pipnss.properties
+lib/tor-browser/chrome/en-US/locale/en-US/pippki/certManager.dtd
+lib/tor-browser/chrome/en-US/locale/en-US/pippki/deviceManager.dtd
+lib/tor-browser/chrome/en-US/locale/en-US/pippki/pippki.dtd
+lib/tor-browser/chrome/en-US/locale/en-US/pippki/pippki.properties
+lib/tor-browser/chrome/en-US/locale/en-US/places/places.properties
+lib/tor-browser/chrome/en-US/locale/en-US/services/errors.properties
+lib/tor-browser/chrome/en-US/locale/en-US/services/sync.properties
+lib/tor-browser/chrome/marionette/content/ChromePowers.js
+lib/tor-browser/chrome/marionette/content/ChromeUtils.js
+lib/tor-browser/chrome/marionette/content/EventUtils.js
+lib/tor-browser/chrome/marionette/content/MozillaLogger.js
+lib/tor-browser/chrome/marionette/content/SpecialPowersObserver.js
+lib/tor-browser/chrome/marionette/content/SpecialPowersObserverAPI.js
+lib/tor-browser/chrome/marionette/content/atoms.js
+lib/tor-browser/chrome/marionette/content/marionette-common.js
+lib/tor-browser/chrome/marionette/content/marionette-elements.js
+lib/tor-browser/chrome/marionette/content/marionette-frame-manager.js
+lib/tor-browser/chrome/marionette/content/marionette-listener.js
+lib/tor-browser/chrome/marionette/content/marionette-sendkeys.js
+lib/tor-browser/chrome/marionette/content/marionette-server.js
+lib/tor-browser/chrome/marionette/content/marionette-simpletest.js
+lib/tor-browser/chrome/marionette/content/specialpowers.js
+lib/tor-browser/chrome/marionette/content/specialpowersAPI.js
+lib/tor-browser/chrome/marionette/modules/Assert.jsm
+lib/tor-browser/chrome/marionette/modules/MockColorPicker.jsm
+lib/tor-browser/chrome/marionette/modules/MockFilePicker.jsm
+lib/tor-browser/chrome/marionette/modules/MockPaymentsUIGlue.jsm
+lib/tor-browser/chrome/marionette/modules/MockPermissionPrompt.jsm
+lib/tor-browser/chrome/pippki/content/pippki/CAOverlay.xul
+lib/tor-browser/chrome/pippki/content/pippki/MineOverlay.xul
+lib/tor-browser/chrome/pippki/content/pippki/OrphanOverlay.xul
+lib/tor-browser/chrome/pippki/content/pippki/OthersOverlay.xul
+lib/tor-browser/chrome/pippki/content/pippki/WebSitesOverlay.xul
+lib/tor-browser/chrome/pippki/content/pippki/certDump.xul
+lib/tor-browser/chrome/pippki/content/pippki/certManager.js
+lib/tor-browser/chrome/pippki/content/pippki/certManager.xul
+lib/tor-browser/chrome/pippki/content/pippki/certViewer.xul
+lib/tor-browser/chrome/pippki/content/pippki/certpicker.js
+lib/tor-browser/chrome/pippki/content/pippki/certpicker.xul
+lib/tor-browser/chrome/pippki/content/pippki/changepassword.xul
+lib/tor-browser/chrome/pippki/content/pippki/choosetoken.js
+lib/tor-browser/chrome/pippki/content/pippki/choosetoken.xul
+lib/tor-browser/chrome/pippki/content/pippki/clientauthask.js
+lib/tor-browser/chrome/pippki/content/pippki/clientauthask.xul
+lib/tor-browser/chrome/pippki/content/pippki/createCertInfo.js
+lib/tor-browser/chrome/pippki/content/pippki/createCertInfo.xul
+lib/tor-browser/chrome/pippki/content/pippki/deletecert.js
+lib/tor-browser/chrome/pippki/content/pippki/deletecert.xul
+lib/tor-browser/chrome/pippki/content/pippki/device_manager.js
+lib/tor-browser/chrome/pippki/content/pippki/device_manager.xul
+lib/tor-browser/chrome/pippki/content/pippki/downloadcert.js
+lib/tor-browser/chrome/pippki/content/pippki/downloadcert.xul
+lib/tor-browser/chrome/pippki/content/pippki/editcacert.xul
+lib/tor-browser/chrome/pippki/content/pippki/editcerts.js
+lib/tor-browser/chrome/pippki/content/pippki/editemailcert.xul
+lib/tor-browser/chrome/pippki/content/pippki/escrowWarn.js
+lib/tor-browser/chrome/pippki/content/pippki/escrowWarn.xul
+lib/tor-browser/chrome/pippki/content/pippki/exceptionDialog.js
+lib/tor-browser/chrome/pippki/content/pippki/exceptionDialog.xul
+lib/tor-browser/chrome/pippki/content/pippki/getpassword.xul
+lib/tor-browser/chrome/pippki/content/pippki/load_device.xul
+lib/tor-browser/chrome/pippki/content/pippki/password.js
+lib/tor-browser/chrome/pippki/content/pippki/pippki.js
+lib/tor-browser/chrome/pippki/content/pippki/protectedAuth.js
+lib/tor-browser/chrome/pippki/content/pippki/protectedAuth.xul
+lib/tor-browser/chrome/pippki/content/pippki/resetpassword.js
+lib/tor-browser/chrome/pippki/content/pippki/resetpassword.xul
+lib/tor-browser/chrome/pippki/content/pippki/setp12password.xul
+lib/tor-browser/chrome/pippki/content/pippki/viewCertDetails.js
+lib/tor-browser/chrome/pippki/content/pippki/viewCertDetails.xul
+lib/tor-browser/chrome/recording/content/recording.js
+lib/tor-browser/chrome/recording/content/recording.xul
+lib/tor-browser/chrome/toolkit/content/cookie/cookieAcceptDialog.js
+lib/tor-browser/chrome/toolkit/content/cookie/cookieAcceptDialog.xul
+lib/tor-browser/chrome/toolkit/content/formautofill/requestAutocomplete.js
+lib/tor-browser/chrome/toolkit/content/formautofill/requestAutocomplete.xhtml
+lib/tor-browser/chrome/toolkit/content/global/BrowserElementChild.js
+lib/tor-browser/chrome/toolkit/content/global/BrowserElementChildPreload.js
+lib/tor-browser/chrome/toolkit/content/global/BrowserElementPanning.js
+lib/tor-browser/chrome/toolkit/content/global/XPCNativeWrapper.js
+lib/tor-browser/chrome/toolkit/content/global/about.js
+lib/tor-browser/chrome/toolkit/content/global/about.xhtml
+lib/tor-browser/chrome/toolkit/content/global/aboutAbout.js
+lib/tor-browser/chrome/toolkit/content/global/aboutAbout.xhtml
+lib/tor-browser/chrome/toolkit/content/global/aboutCache.js
+lib/tor-browser/chrome/toolkit/content/global/aboutCompartments.js
+lib/tor-browser/chrome/toolkit/content/global/aboutCompartments.xhtml
+lib/tor-browser/chrome/toolkit/content/global/aboutMemory.css
+lib/tor-browser/chrome/toolkit/content/global/aboutMemory.js
+lib/tor-browser/chrome/toolkit/content/global/aboutMemory.xhtml
+lib/tor-browser/chrome/toolkit/content/global/aboutNetworking.js
+lib/tor-browser/chrome/toolkit/content/global/aboutNetworking.xhtml
+lib/tor-browser/chrome/toolkit/content/global/aboutRights-unbranded.xhtml
+lib/tor-browser/chrome/toolkit/content/global/aboutRights.xhtml
+lib/tor-browser/chrome/toolkit/content/global/aboutSupport.js
+lib/tor-browser/chrome/toolkit/content/global/aboutSupport.xhtml
+lib/tor-browser/chrome/toolkit/content/global/aboutTelemetry.css
+lib/tor-browser/chrome/toolkit/content/global/aboutTelemetry.js
+lib/tor-browser/chrome/toolkit/content/global/aboutTelemetry.xhtml
+lib/tor-browser/chrome/toolkit/content/global/aboutwebrtc/aboutWebrtc.css
+lib/tor-browser/chrome/toolkit/content/global/aboutwebrtc/aboutWebrtc.js
+lib/tor-browser/chrome/toolkit/content/global/aboutwebrtc/aboutWebrtc.xhtml
+lib/tor-browser/chrome/toolkit/content/global/accessibility/AccessFu.css
+lib/tor-browser/chrome/toolkit/content/global/accessibility/clicked.ogg
+lib/tor-browser/chrome/toolkit/content/global/accessibility/content-script.js
+lib/tor-browser/chrome/toolkit/content/global/accessibility/virtual_cursor_key.ogg
+lib/tor-browser/chrome/toolkit/content/global/accessibility/virtual_cursor_move.ogg
+lib/tor-browser/chrome/toolkit/content/global/alerts/alert.css
+lib/tor-browser/chrome/toolkit/content/global/alerts/alert.js
+lib/tor-browser/chrome/toolkit/content/global/alerts/alert.xul
+lib/tor-browser/chrome/toolkit/content/global/appPicker.js
+lib/tor-browser/chrome/toolkit/content/global/appPicker.xul
+lib/tor-browser/chrome/toolkit/content/global/autocomplete.css
+lib/tor-browser/chrome/toolkit/content/global/backgroundPageThumbsContent.js
+lib/tor-browser/chrome/toolkit/content/global/bindings/autocomplete.xml
+lib/tor-browser/chrome/toolkit/content/global/bindings/browser.xml
+lib/tor-browser/chrome/toolkit/content/global/bindings/button.xml
+lib/tor-browser/chrome/toolkit/content/global/bindings/checkbox.xml
+lib/tor-browser/chrome/toolkit/content/global/bindings/colorpicker.xml
+lib/tor-browser/chrome/toolkit/content/global/bindings/datetimepicker.xml
+lib/tor-browser/chrome/toolkit/content/global/bindings/dialog.xml
+lib/tor-browser/chrome/toolkit/content/global/bindings/editor.xml
+lib/tor-browser/chrome/toolkit/content/global/bindings/expander.xml
+lib/tor-browser/chrome/toolkit/content/global/bindings/filefield.xml
+lib/tor-browser/chrome/toolkit/content/global/bindings/findbar.xml
+lib/tor-browser/chrome/toolkit/content/global/bindings/general.xml
+lib/tor-browser/chrome/toolkit/content/global/bindings/groupbox.xml
+lib/tor-browser/chrome/toolkit/content/global/bindings/listbox.xml
+lib/tor-browser/chrome/toolkit/content/global/bindings/menu.xml
+lib/tor-browser/chrome/toolkit/content/global/bindings/menulist.xml
+lib/tor-browser/chrome/toolkit/content/global/bindings/notification.xml
+lib/tor-browser/chrome/toolkit/content/global/bindings/numberbox.xml
+lib/tor-browser/chrome/toolkit/content/global/bindings/popup.xml
+lib/tor-browser/chrome/toolkit/content/global/bindings/preferences.xml
+lib/tor-browser/chrome/toolkit/content/global/bindings/progressmeter.xml
+lib/tor-browser/chrome/toolkit/content/global/bindings/radio.xml
+lib/tor-browser/chrome/toolkit/content/global/bindings/remote-browser.xml
+lib/tor-browser/chrome/toolkit/content/global/bindings/resizer.xml
+lib/tor-browser/chrome/toolkit/content/global/bindings/richlistbox.xml
+lib/tor-browser/chrome/toolkit/content/global/bindings/scale.xml
+lib/tor-browser/chrome/toolkit/content/global/bindings/scrollbar.xml
+lib/tor-browser/chrome/toolkit/content/global/bindings/scrollbox.xml
+lib/tor-browser/chrome/toolkit/content/global/bindings/spinbuttons.xml
+lib/tor-browser/chrome/toolkit/content/global/bindings/splitter.xml
+lib/tor-browser/chrome/toolkit/content/global/bindings/stringbundle.xml
+lib/tor-browser/chrome/toolkit/content/global/bindings/tabbox.xml
+lib/tor-browser/chrome/toolkit/content/global/bindings/text.xml
+lib/tor-browser/chrome/toolkit/content/global/bindings/textbox.xml
+lib/tor-browser/chrome/toolkit/content/global/bindings/toolbar.xml
+lib/tor-browser/chrome/toolkit/content/global/bindings/toolbarbutton.xml
+lib/tor-browser/chrome/toolkit/content/global/bindings/tree.xml
+lib/tor-browser/chrome/toolkit/content/global/bindings/videocontrols.css
+lib/tor-browser/chrome/toolkit/content/global/bindings/videocontrols.xml
+lib/tor-browser/chrome/toolkit/content/global/bindings/wizard.xml
+lib/tor-browser/chrome/toolkit/content/global/browser-child.js
+lib/tor-browser/chrome/toolkit/content/global/browser-content.js
+lib/tor-browser/chrome/toolkit/content/global/buildconfig.html
+lib/tor-browser/chrome/toolkit/content/global/commonDialog.css
+lib/tor-browser/chrome/toolkit/content/global/commonDialog.js
+lib/tor-browser/chrome/toolkit/content/global/commonDialog.xul
+lib/tor-browser/chrome/toolkit/content/global/config.js
+lib/tor-browser/chrome/toolkit/content/global/config.xul
+lib/tor-browser/chrome/toolkit/content/global/console.css
+lib/tor-browser/chrome/toolkit/content/global/console.js
+lib/tor-browser/chrome/toolkit/content/global/console.xul
+lib/tor-browser/chrome/toolkit/content/global/consoleBindings.xml
+lib/tor-browser/chrome/toolkit/content/global/contentAreaUtils.js
+lib/tor-browser/chrome/toolkit/content/global/customizeToolbar.css
+lib/tor-browser/chrome/toolkit/content/global/customizeToolbar.js
+lib/tor-browser/chrome/toolkit/content/global/customizeToolbar.xul
+lib/tor-browser/chrome/toolkit/content/global/devicestorage.properties
+lib/tor-browser/chrome/toolkit/content/global/dialogOverlay.js
+lib/tor-browser/chrome/toolkit/content/global/dialogOverlay.xul
+lib/tor-browser/chrome/toolkit/content/global/directionDetector.html
+lib/tor-browser/chrome/toolkit/content/global/editMenuOverlay.js
+lib/tor-browser/chrome/toolkit/content/global/editMenuOverlay.xul
+lib/tor-browser/chrome/toolkit/content/global/filepicker.js
+lib/tor-browser/chrome/toolkit/content/global/filepicker.properties
+lib/tor-browser/chrome/toolkit/content/global/filepicker.xul
+lib/tor-browser/chrome/toolkit/content/global/findUtils.js
+lib/tor-browser/chrome/toolkit/content/global/finddialog.js
+lib/tor-browser/chrome/toolkit/content/global/finddialog.xul
+lib/tor-browser/chrome/toolkit/content/global/forms.js
+lib/tor-browser/chrome/toolkit/content/global/globalOverlay.js
+lib/tor-browser/chrome/toolkit/content/global/globalOverlay.xul
+lib/tor-browser/chrome/toolkit/content/global/inlineSpellCheckUI.js
+lib/tor-browser/chrome/toolkit/content/global/license.html
+lib/tor-browser/chrome/toolkit/content/global/menulist.css
+lib/tor-browser/chrome/toolkit/content/global/minimal-xul.css
+lib/tor-browser/chrome/toolkit/content/global/mozilla.xhtml
+lib/tor-browser/chrome/toolkit/content/global/netError.xhtml
+lib/tor-browser/chrome/toolkit/content/global/notfound.wav
+lib/tor-browser/chrome/toolkit/content/global/nsClipboard.js
+lib/tor-browser/chrome/toolkit/content/global/nsDragAndDrop.js
+lib/tor-browser/chrome/toolkit/content/global/nsUserSettings.js
+lib/tor-browser/chrome/toolkit/content/global/platformHTMLBindings.xml
+lib/tor-browser/chrome/toolkit/content/global/plugins.css
+lib/tor-browser/chrome/toolkit/content/global/plugins.html
+lib/tor-browser/chrome/toolkit/content/global/post-fork-preload.js
+lib/tor-browser/chrome/toolkit/content/global/preload.js
+lib/tor-browser/chrome/toolkit/content/global/printPageSetup.js
+lib/tor-browser/chrome/toolkit/content/global/printPageSetup.xul
+lib/tor-browser/chrome/toolkit/content/global/printPreviewBindings.xml
+lib/tor-browser/chrome/toolkit/content/global/printPreviewProgress.js
+lib/tor-browser/chrome/toolkit/content/global/printPreviewProgress.xul
+lib/tor-browser/chrome/toolkit/content/global/printProgress.js
+lib/tor-browser/chrome/toolkit/content/global/printProgress.xul
+lib/tor-browser/chrome/toolkit/content/global/printUtils.js
+lib/tor-browser/chrome/toolkit/content/global/printdialog.js
+lib/tor-browser/chrome/toolkit/content/global/printdialog.xul
+lib/tor-browser/chrome/toolkit/content/global/printjoboptions.js
+lib/tor-browser/chrome/toolkit/content/global/printjoboptions.xul
+lib/tor-browser/chrome/toolkit/content/global/reader/aboutReader.html
+lib/tor-browser/chrome/toolkit/content/global/reader/aboutReader.js
+lib/tor-browser/chrome/toolkit/content/global/remote-test-ipc.js
+lib/tor-browser/chrome/toolkit/content/global/resetProfile.css
+lib/tor-browser/chrome/toolkit/content/global/resetProfile.js
+lib/tor-browser/chrome/toolkit/content/global/resetProfile.xul
+lib/tor-browser/chrome/toolkit/content/global/resetProfileProgress.xul
+lib/tor-browser/chrome/toolkit/content/global/select-child.js
+lib/tor-browser/chrome/toolkit/content/global/selectDialog.js
+lib/tor-browser/chrome/toolkit/content/global/selectDialog.xul
+lib/tor-browser/chrome/toolkit/content/global/strres.js
+lib/tor-browser/chrome/toolkit/content/global/svg/svgBindings.xml
+lib/tor-browser/chrome/toolkit/content/global/tabprompts.css
+lib/tor-browser/chrome/toolkit/content/global/tabprompts.xml
+lib/tor-browser/chrome/toolkit/content/global/test-ipc.xul
+lib/tor-browser/chrome/toolkit/content/global/textbox.css
+lib/tor-browser/chrome/toolkit/content/global/treeUtils.js
+lib/tor-browser/chrome/toolkit/content/global/viewPartialSource.js
+lib/tor-browser/chrome/toolkit/content/global/viewPartialSource.xul
+lib/tor-browser/chrome/toolkit/content/global/viewSource.css
+lib/tor-browser/chrome/toolkit/content/global/viewSource.js
+lib/tor-browser/chrome/toolkit/content/global/viewSource.xul
+lib/tor-browser/chrome/toolkit/content/global/viewSourceUtils.js
+lib/tor-browser/chrome/toolkit/content/global/viewZoomOverlay.js
+lib/tor-browser/chrome/toolkit/content/global/xml/XMLMonoPrint.css
+lib/tor-browser/chrome/toolkit/content/global/xml/XMLPrettyPrint.css
+lib/tor-browser/chrome/toolkit/content/global/xml/XMLPrettyPrint.xml
+lib/tor-browser/chrome/toolkit/content/global/xml/XMLPrettyPrint.xsl
+lib/tor-browser/chrome/toolkit/content/global/xul.css
+lib/tor-browser/chrome/toolkit/content/mozapps/downloads/DownloadProgressListener.js
+lib/tor-browser/chrome/toolkit/content/mozapps/downloads/download.xml
+lib/tor-browser/chrome/toolkit/content/mozapps/downloads/downloads.css
+lib/tor-browser/chrome/toolkit/content/mozapps/downloads/downloads.js
+lib/tor-browser/chrome/toolkit/content/mozapps/downloads/downloads.xul
+lib/tor-browser/chrome/toolkit/content/mozapps/downloads/helperApps.js
+lib/tor-browser/chrome/toolkit/content/mozapps/downloads/unknownContentType.xul
+lib/tor-browser/chrome/toolkit/content/mozapps/extensions/OpenH264-license.txt
+lib/tor-browser/chrome/toolkit/content/mozapps/extensions/about.js
+lib/tor-browser/chrome/toolkit/content/mozapps/extensions/about.xul
+lib/tor-browser/chrome/toolkit/content/mozapps/extensions/blocklist.css
+lib/tor-browser/chrome/toolkit/content/mozapps/extensions/blocklist.js
+lib/tor-browser/chrome/toolkit/content/mozapps/extensions/blocklist.xml
+lib/tor-browser/chrome/toolkit/content/mozapps/extensions/blocklist.xul
+lib/tor-browser/chrome/toolkit/content/mozapps/extensions/eula.js
+lib/tor-browser/chrome/toolkit/content/mozapps/extensions/eula.xul
+lib/tor-browser/chrome/toolkit/content/mozapps/extensions/extensions.css
+lib/tor-browser/chrome/toolkit/content/mozapps/extensions/extensions.js
+lib/tor-browser/chrome/toolkit/content/mozapps/extensions/extensions.xml
+lib/tor-browser/chrome/toolkit/content/mozapps/extensions/extensions.xul
+lib/tor-browser/chrome/toolkit/content/mozapps/extensions/gmpPrefs.xul
+lib/tor-browser/chrome/toolkit/content/mozapps/extensions/list.js
+lib/tor-browser/chrome/toolkit/content/mozapps/extensions/list.xul
+lib/tor-browser/chrome/toolkit/content/mozapps/extensions/newaddon.js
+lib/tor-browser/chrome/toolkit/content/mozapps/extensions/newaddon.xul
+lib/tor-browser/chrome/toolkit/content/mozapps/extensions/pluginPrefs.xul
+lib/tor-browser/chrome/toolkit/content/mozapps/extensions/selectAddons.css
+lib/tor-browser/chrome/toolkit/content/mozapps/extensions/selectAddons.js
+lib/tor-browser/chrome/toolkit/content/mozapps/extensions/selectAddons.xml
+lib/tor-browser/chrome/toolkit/content/mozapps/extensions/selectAddons.xul
+lib/tor-browser/chrome/toolkit/content/mozapps/extensions/setting.xml
+lib/tor-browser/chrome/toolkit/content/mozapps/extensions/update.js
+lib/tor-browser/chrome/toolkit/content/mozapps/extensions/update.xul
+lib/tor-browser/chrome/toolkit/content/mozapps/extensions/updateinfo.xsl
+lib/tor-browser/chrome/toolkit/content/mozapps/handling/dialog.js
+lib/tor-browser/chrome/toolkit/content/mozapps/handling/dialog.xul
+lib/tor-browser/chrome/toolkit/content/mozapps/handling/handler.css
+lib/tor-browser/chrome/toolkit/content/mozapps/handling/handler.xml
+lib/tor-browser/chrome/toolkit/content/mozapps/plugins/pluginFinderBinding.css
+lib/tor-browser/chrome/toolkit/content/mozapps/plugins/pluginProblem.xml
+lib/tor-browser/chrome/toolkit/content/mozapps/plugins/pluginProblemBinding.css
+lib/tor-browser/chrome/toolkit/content/mozapps/plugins/pluginProblemContent.css
+lib/tor-browser/chrome/toolkit/content/mozapps/preferences/changemp.js
+lib/tor-browser/chrome/toolkit/content/mozapps/preferences/changemp.xul
+lib/tor-browser/chrome/toolkit/content/mozapps/preferences/fontbuilder.js
+lib/tor-browser/chrome/toolkit/content/mozapps/preferences/removemp.js
+lib/tor-browser/chrome/toolkit/content/mozapps/preferences/removemp.xul
+lib/tor-browser/chrome/toolkit/content/mozapps/profile/createProfileWizard.js
+lib/tor-browser/chrome/toolkit/content/mozapps/profile/createProfileWizard.xul
+lib/tor-browser/chrome/toolkit/content/mozapps/profile/profileSelection.js
+lib/tor-browser/chrome/toolkit/content/mozapps/profile/profileSelection.xul
+lib/tor-browser/chrome/toolkit/content/mozapps/update/history.js
+lib/tor-browser/chrome/toolkit/content/mozapps/update/history.xul
+lib/tor-browser/chrome/toolkit/content/mozapps/update/updates.css
+lib/tor-browser/chrome/toolkit/content/mozapps/update/updates.js
+lib/tor-browser/chrome/toolkit/content/mozapps/update/updates.xml
+lib/tor-browser/chrome/toolkit/content/mozapps/update/updates.xul
+lib/tor-browser/chrome/toolkit/content/mozapps/xpinstall/xpinstallConfirm.css
+lib/tor-browser/chrome/toolkit/content/mozapps/xpinstall/xpinstallConfirm.js
+lib/tor-browser/chrome/toolkit/content/mozapps/xpinstall/xpinstallConfirm.xul
+lib/tor-browser/chrome/toolkit/content/mozapps/xpinstall/xpinstallItem.xml
+lib/tor-browser/chrome/toolkit/content/passwordmgr/passwordManager.js
+lib/tor-browser/chrome/toolkit/content/passwordmgr/passwordManager.xul
+lib/tor-browser/chrome/toolkit/content/passwordmgr/passwordManagerCommon.js
+lib/tor-browser/chrome/toolkit/content/passwordmgr/passwordManagerExceptions.js
+lib/tor-browser/chrome/toolkit/content/passwordmgr/passwordManagerExceptions.xul
+lib/tor-browser/chrome/toolkit/content/satchel/formSubmitListener.js
+lib/tor-browser/chrome/toolkit/content/xbl-marquee/xbl-marquee.css
+lib/tor-browser/chrome/toolkit/content/xbl-marquee/xbl-marquee.xml
+lib/tor-browser/chrome/toolkit/res/arrow.gif
+lib/tor-browser/chrome/toolkit/res/arrowd.gif
+lib/tor-browser/chrome/toolkit/res/broken-image.png
+lib/tor-browser/chrome/toolkit/res/counterstyles.css
+lib/tor-browser/chrome/toolkit/res/forms.css
+lib/tor-browser/chrome/toolkit/res/full-screen-override.css
+lib/tor-browser/chrome/toolkit/res/hiddenWindow.html
+lib/tor-browser/chrome/toolkit/res/html.css
+lib/tor-browser/chrome/toolkit/res/loading-image.png
+lib/tor-browser/chrome/toolkit/res/mathml.css
+lib/tor-browser/chrome/toolkit/res/number-control.css
+lib/tor-browser/chrome/toolkit/res/plaintext.css
+lib/tor-browser/chrome/toolkit/res/quirk.css
+lib/tor-browser/chrome/toolkit/res/ua.css
+lib/tor-browser/chrome/toolkit/res/viewsource.css
+lib/tor-browser/chrome/toolkit/skin/classic/global/Filepicker.png
+lib/tor-browser/chrome/toolkit/skin/classic/global/about.css
+lib/tor-browser/chrome/toolkit/skin/classic/global/aboutCache.css
+lib/tor-browser/chrome/toolkit/skin/classic/global/aboutCacheEntry.css
+lib/tor-browser/chrome/toolkit/skin/classic/global/aboutMemory.css
+lib/tor-browser/chrome/toolkit/skin/classic/global/aboutReader.css
+lib/tor-browser/chrome/toolkit/skin/classic/global/aboutSupport.css
+lib/tor-browser/chrome/toolkit/skin/classic/global/alerts/alert.css
+lib/tor-browser/chrome/toolkit/skin/classic/global/alerts/notification-48.png
+lib/tor-browser/chrome/toolkit/skin/classic/global/appPicker.css
+lib/tor-browser/chrome/toolkit/skin/classic/global/arrow.css
+lib/tor-browser/chrome/toolkit/skin/classic/global/arrow/arrow-dn-dis.gif
+lib/tor-browser/chrome/toolkit/skin/classic/global/arrow/arrow-dn-hov.gif
+lib/tor-browser/chrome/toolkit/skin/classic/global/arrow/arrow-dn-sharp.gif
+lib/tor-browser/chrome/toolkit/skin/classic/global/arrow/arrow-dn.gif
+lib/tor-browser/chrome/toolkit/skin/classic/global/arrow/arrow-down.png
+lib/tor-browser/chrome/toolkit/skin/classic/global/arrow/arrow-lft-dis.gif
+lib/tor-browser/chrome/toolkit/skin/classic/global/arrow/arrow-lft-hov.gif
+lib/tor-browser/chrome/toolkit/skin/classic/global/arrow/arrow-lft-sharp-end.gif
+lib/tor-browser/chrome/toolkit/skin/classic/global/arrow/arrow-lft-sharp.gif
+lib/tor-browser/chrome/toolkit/skin/classic/global/arrow/arrow-lft.gif
+lib/tor-browser/chrome/toolkit/skin/classic/global/arrow/arrow-rit-dis.gif
+lib/tor-browser/chrome/toolkit/skin/classic/global/arrow/arrow-rit-hov.gif
+lib/tor-browser/chrome/toolkit/skin/classic/global/arrow/arrow-rit-sharp-end.gif
+lib/tor-browser/chrome/toolkit/skin/classic/global/arrow/arrow-rit-sharp.gif
+lib/tor-browser/chrome/toolkit/skin/classic/global/arrow/arrow-rit.gif
+lib/tor-browser/chrome/toolkit/skin/classic/global/arrow/arrow-up-dis.gif
+lib/tor-browser/chrome/toolkit/skin/classic/global/arrow/arrow-up-hov.gif
+lib/tor-browser/chrome/toolkit/skin/classic/global/arrow/arrow-up-sharp.gif
+lib/tor-browser/chrome/toolkit/skin/classic/global/arrow/arrow-up.gif
+lib/tor-browser/chrome/toolkit/skin/classic/global/arrow/panelarrow-horizontal-themed.svg
+lib/tor-browser/chrome/toolkit/skin/classic/global/arrow/panelarrow-horizontal.svg
+lib/tor-browser/chrome/toolkit/skin/classic/global/arrow/panelarrow-vertical-themed.svg
+lib/tor-browser/chrome/toolkit/skin/classic/global/arrow/panelarrow-vertical.svg
+lib/tor-browser/chrome/toolkit/skin/classic/global/autocomplete.css
+lib/tor-browser/chrome/toolkit/skin/classic/global/button.css
+lib/tor-browser/chrome/toolkit/skin/classic/global/checkbox.css
+lib/tor-browser/chrome/toolkit/skin/classic/global/checkbox/cbox-check-dis.gif
+lib/tor-browser/chrome/toolkit/skin/classic/global/checkbox/cbox-check.gif
+lib/tor-browser/chrome/toolkit/skin/classic/global/colorpicker.css
+lib/tor-browser/chrome/toolkit/skin/classic/global/commonDialog.css
+lib/tor-browser/chrome/toolkit/skin/classic/global/config.css
+lib/tor-browser/chrome/toolkit/skin/classic/global/console/console-error-caret.gif
+lib/tor-browser/chrome/toolkit/skin/classic/global/console/console-error-dash.gif
+lib/tor-browser/chrome/toolkit/skin/classic/global/console/console-toolbar.png
+lib/tor-browser/chrome/toolkit/skin/classic/global/console/console.css
+lib/tor-browser/chrome/toolkit/skin/classic/global/console/console.png
+lib/tor-browser/chrome/toolkit/skin/classic/global/console/itemSelected.png
+lib/tor-browser/chrome/toolkit/skin/classic/global/customizeToolbar.css
+lib/tor-browser/chrome/toolkit/skin/classic/global/datetimepicker.css
+lib/tor-browser/chrome/toolkit/skin/classic/global/dialog.css
+lib/tor-browser/chrome/toolkit/skin/classic/global/dirListing/dirListing.css
+lib/tor-browser/chrome/toolkit/skin/classic/global/dirListing/folder.png
+lib/tor-browser/chrome/toolkit/skin/classic/global/dirListing/local.png
+lib/tor-browser/chrome/toolkit/skin/classic/global/dirListing/remote.png
+lib/tor-browser/chrome/toolkit/skin/classic/global/dirListing/up.png
+lib/tor-browser/chrome/toolkit/skin/classic/global/dropmarker.css
+lib/tor-browser/chrome/toolkit/skin/classic/global/expander.css
+lib/tor-browser/chrome/toolkit/skin/classic/global/filefield.css
+lib/tor-browser/chrome/toolkit/skin/classic/global/filepicker.css
+lib/tor-browser/chrome/toolkit/skin/classic/global/findBar.css
+lib/tor-browser/chrome/toolkit/skin/classic/global/global.css
+lib/tor-browser/chrome/toolkit/skin/classic/global/globalBindings.xml
+lib/tor-browser/chrome/toolkit/skin/classic/global/groupbox.css
+lib/tor-browser/chrome/toolkit/skin/classic/global/icons/Authentication.png
+lib/tor-browser/chrome/toolkit/skin/classic/global/icons/Close.gif
+lib/tor-browser/chrome/toolkit/skin/classic/global/icons/Error.png
+lib/tor-browser/chrome/toolkit/skin/classic/global/icons/Landscape.png
+lib/tor-browser/chrome/toolkit/skin/classic/global/icons/Minimize.gif
+lib/tor-browser/chrome/toolkit/skin/classic/global/icons/Portrait.png
+lib/tor-browser/chrome/toolkit/skin/classic/global/icons/Print-preview.png
+lib/tor-browser/chrome/toolkit/skin/classic/global/icons/Question.png
+lib/tor-browser/chrome/toolkit/skin/classic/global/icons/Restore.gif
+lib/tor-browser/chrome/toolkit/skin/classic/global/icons/Search-close.png
+lib/tor-browser/chrome/toolkit/skin/classic/global/icons/Search-glass.png
+lib/tor-browser/chrome/toolkit/skin/classic/global/icons/Warning.png
+lib/tor-browser/chrome/toolkit/skin/classic/global/icons/autocomplete-search.svg
+lib/tor-browser/chrome/toolkit/skin/classic/global/icons/autoscroll.png
+lib/tor-browser/chrome/toolkit/skin/classic/global/icons/blacklist_favicon.png
+lib/tor-browser/chrome/toolkit/skin/classic/global/icons/blacklist_large.png
+lib/tor-browser/chrome/toolkit/skin/classic/global/icons/close-lunaBlue.png
+lib/tor-browser/chrome/toolkit/skin/classic/global/icons/close-lunaOlive.png
+lib/tor-browser/chrome/toolkit/skin/classic/global/icons/close-lunaSilver.png
+lib/tor-browser/chrome/toolkit/skin/classic/global/icons/close.png
+lib/tor-browser/chrome/toolkit/skin/classic/global/icons/close.svg
+lib/tor-browser/chrome/toolkit/skin/classic/global/icons/collapse.png
+lib/tor-browser/chrome/toolkit/skin/classic/global/icons/error-16.png
+lib/tor-browser/chrome/toolkit/skin/classic/global/icons/error-24.png
+lib/tor-browser/chrome/toolkit/skin/classic/global/icons/error-48.png
+lib/tor-browser/chrome/toolkit/skin/classic/global/icons/error-64.png
+lib/tor-browser/chrome/toolkit/skin/classic/global/icons/expand.png
+lib/tor-browser/chrome/toolkit/skin/classic/global/icons/find-arrows.png
+lib/tor-browser/chrome/toolkit/skin/classic/global/icons/find.png
+lib/tor-browser/chrome/toolkit/skin/classic/global/icons/folder-item.png
+lib/tor-browser/chrome/toolkit/skin/classic/global/icons/information-16.png
+lib/tor-browser/chrome/toolkit/skin/classic/global/icons/information-24.png
+lib/tor-browser/chrome/toolkit/skin/classic/global/icons/information-32.png
+lib/tor-browser/chrome/toolkit/skin/classic/global/icons/information-48.png
+lib/tor-browser/chrome/toolkit/skin/classic/global/icons/information-64.png
+lib/tor-browser/chrome/toolkit/skin/classic/global/icons/loading_16.png
+lib/tor-browser/chrome/toolkit/skin/classic/global/icons/panelarrow-horizontal.svg
+lib/tor-browser/chrome/toolkit/skin/classic/global/icons/panelarrow-vertical.svg
+lib/tor-browser/chrome/toolkit/skin/classic/global/icons/question-16.png
+lib/tor-browser/chrome/toolkit/skin/classic/global/icons/question-24.png
+lib/tor-browser/chrome/toolkit/skin/classic/global/icons/question-48.png
+lib/tor-browser/chrome/toolkit/skin/classic/global/icons/question-64.png
+lib/tor-browser/chrome/toolkit/skin/classic/global/icons/resizer-rtl.png
+lib/tor-browser/chrome/toolkit/skin/classic/global/icons/resizer.png
+lib/tor-browser/chrome/toolkit/skin/classic/global/icons/sslWarning.png
+lib/tor-browser/chrome/toolkit/skin/classic/global/icons/tabprompts-bgtexture.png
+lib/tor-browser/chrome/toolkit/skin/classic/global/icons/warning-16.png
+lib/tor-browser/chrome/toolkit/skin/classic/global/icons/warning-24.png
+lib/tor-browser/chrome/toolkit/skin/classic/global/icons/warning-64.png
+lib/tor-browser/chrome/toolkit/skin/classic/global/icons/warning-large.png
+lib/tor-browser/chrome/toolkit/skin/classic/global/icons/warning.svg
+lib/tor-browser/chrome/toolkit/skin/classic/global/icons/webapps-16.png
+lib/tor-browser/chrome/toolkit/skin/classic/global/icons/webapps-64.png
+lib/tor-browser/chrome/toolkit/skin/classic/global/icons/windowControls.png
+lib/tor-browser/chrome/toolkit/skin/classic/global/icons/wrap.png
+lib/tor-browser/chrome/toolkit/skin/classic/global/in-content/check-partial.svg
+lib/tor-browser/chrome/toolkit/skin/classic/global/in-content/check.svg
+lib/tor-browser/chrome/toolkit/skin/classic/global/in-content/common.css
+lib/tor-browser/chrome/toolkit/skin/classic/global/in-content/dropdown.svg
+lib/tor-browser/chrome/toolkit/skin/classic/global/in-content/help-glyph.svg
+lib/tor-browser/chrome/toolkit/skin/classic/global/in-content/info-pages.css
+lib/tor-browser/chrome/toolkit/skin/classic/global/in-content/radio.svg
+lib/tor-browser/chrome/toolkit/skin/classic/global/inContentUI.css
+lib/tor-browser/chrome/toolkit/skin/classic/global/inContentUI/background-texture.png
+lib/tor-browser/chrome/toolkit/skin/classic/global/linkTree.css
+lib/tor-browser/chrome/toolkit/skin/classic/global/listbox.css
+lib/tor-browser/chrome/toolkit/skin/classic/global/media/TopLevelImageDocument.css
+lib/tor-browser/chrome/toolkit/skin/classic/global/media/TopLevelVideoDocument.css
+lib/tor-browser/chrome/toolkit/skin/classic/global/media/clicktoplay-bgtexture.png
+lib/tor-browser/chrome/toolkit/skin/classic/global/media/error.png
+lib/tor-browser/chrome/toolkit/skin/classic/global/media/fullscreenButton.png
+lib/tor-browser/chrome/toolkit/skin/classic/global/media/imagedoc-darknoise.png
+lib/tor-browser/chrome/toolkit/skin/classic/global/media/imagedoc-lightnoise.png
+lib/tor-browser/chrome/toolkit/skin/classic/global/media/muteButton.png
+lib/tor-browser/chrome/toolkit/skin/classic/global/media/noAudio.png
+lib/tor-browser/chrome/toolkit/skin/classic/global/media/pauseButton.png
+lib/tor-browser/chrome/toolkit/skin/classic/global/media/playButton.png
+lib/tor-browser/chrome/toolkit/skin/classic/global/media/scrubberThumb.png
+lib/tor-browser/chrome/toolkit/skin/classic/global/media/scrubberThumbWide.png
+lib/tor-browser/chrome/toolkit/skin/classic/global/media/stalled.png
+lib/tor-browser/chrome/toolkit/skin/classic/global/media/throbber.png
+lib/tor-browser/chrome/toolkit/skin/classic/global/media/unmuteButton.png
+lib/tor-browser/chrome/toolkit/skin/classic/global/media/videoClickToPlayButton.svg
+lib/tor-browser/chrome/toolkit/skin/classic/global/media/videocontrols.css
+lib/tor-browser/chrome/toolkit/skin/classic/global/media/volume-empty.png
+lib/tor-browser/chrome/toolkit/skin/classic/global/media/volume-full.png
+lib/tor-browser/chrome/toolkit/skin/classic/global/menu.css
+lib/tor-browser/chrome/toolkit/skin/classic/global/menu/shared-menu-check.png
+lib/tor-browser/chrome/toolkit/skin/classic/global/menulist.css
+lib/tor-browser/chrome/toolkit/skin/classic/global/netError.css
+lib/tor-browser/chrome/toolkit/skin/classic/global/notification.css
+lib/tor-browser/chrome/toolkit/skin/classic/global/numberbox.css
+lib/tor-browser/chrome/toolkit/skin/classic/global/passwordmgr.css
+lib/tor-browser/chrome/toolkit/skin/classic/global/popup.css
+lib/tor-browser/chrome/toolkit/skin/classic/global/preferences.css
+lib/tor-browser/chrome/toolkit/skin/classic/global/printPageSetup.css
+lib/tor-browser/chrome/toolkit/skin/classic/global/printPreview.css
+lib/tor-browser/chrome/toolkit/skin/classic/global/printpreview/arrow-left-end.png
+lib/tor-browser/chrome/toolkit/skin/classic/global/printpreview/arrow-left.png
+lib/tor-browser/chrome/toolkit/skin/classic/global/printpreview/arrow-right-end.png
+lib/tor-browser/chrome/toolkit/skin/classic/global/printpreview/arrow-right.png
+lib/tor-browser/chrome/toolkit/skin/classic/global/progressmeter.css
+lib/tor-browser/chrome/toolkit/skin/classic/global/radio.css
+lib/tor-browser/chrome/toolkit/skin/classic/global/radio/radio-check-dis.gif
+lib/tor-browser/chrome/toolkit/skin/classic/global/radio/radio-check.gif
+lib/tor-browser/chrome/toolkit/skin/classic/global/reader/RM-Add-24x24.svg
+lib/tor-browser/chrome/toolkit/skin/classic/global/reader/RM-Close-24x24.svg
+lib/tor-browser/chrome/toolkit/skin/classic/global/reader/RM-Delete-24x24.svg
+lib/tor-browser/chrome/toolkit/skin/classic/global/reader/RM-Minus-24x24.svg
+lib/tor-browser/chrome/toolkit/skin/classic/global/reader/RM-Plus-24x24.svg
+lib/tor-browser/chrome/toolkit/skin/classic/global/reader/RM-Reading-List-24x24.svg
+lib/tor-browser/chrome/toolkit/skin/classic/global/reader/RM-Type-Controls-24x24.svg
+lib/tor-browser/chrome/toolkit/skin/classic/global/reader/RM-Type-Controls-Arrow.svg
+lib/tor-browser/chrome/toolkit/skin/classic/global/resizer.css
+lib/tor-browser/chrome/toolkit/skin/classic/global/richlistbox.css
+lib/tor-browser/chrome/toolkit/skin/classic/global/scale.css
+lib/tor-browser/chrome/toolkit/skin/classic/global/scrollbar/slider.gif
+lib/tor-browser/chrome/toolkit/skin/classic/global/scrollbars.css
+lib/tor-browser/chrome/toolkit/skin/classic/global/scrollbox.css
+lib/tor-browser/chrome/toolkit/skin/classic/global/spinbuttons.css
+lib/tor-browser/chrome/toolkit/skin/classic/global/splitter.css
+lib/tor-browser/chrome/toolkit/skin/classic/global/splitter/grip-bottom.gif
+lib/tor-browser/chrome/toolkit/skin/classic/global/splitter/grip-left.gif
+lib/tor-browser/chrome/toolkit/skin/classic/global/splitter/grip-right.gif
+lib/tor-browser/chrome/toolkit/skin/classic/global/splitter/grip-top.gif
+lib/tor-browser/chrome/toolkit/skin/classic/global/tabbox.css
+lib/tor-browser/chrome/toolkit/skin/classic/global/tabprompts.css
+lib/tor-browser/chrome/toolkit/skin/classic/global/textbox.css
+lib/tor-browser/chrome/toolkit/skin/classic/global/toolbar.css
+lib/tor-browser/chrome/toolkit/skin/classic/global/toolbar/chevron-inverted.png
+lib/tor-browser/chrome/toolkit/skin/classic/global/toolbar/chevron.gif
+lib/tor-browser/chrome/toolkit/skin/classic/global/toolbar/spring.png
+lib/tor-browser/chrome/toolkit/skin/classic/global/toolbarbutton.css
+lib/tor-browser/chrome/toolkit/skin/classic/global/tree.css
+lib/tor-browser/chrome/toolkit/skin/classic/global/tree/columnpicker.gif
+lib/tor-browser/chrome/toolkit/skin/classic/global/tree/sort-asc-classic.png
+lib/tor-browser/chrome/toolkit/skin/classic/global/tree/sort-asc.png
+lib/tor-browser/chrome/toolkit/skin/classic/global/tree/sort-dsc-classic.png
+lib/tor-browser/chrome/toolkit/skin/classic/global/tree/sort-dsc.png
+lib/tor-browser/chrome/toolkit/skin/classic/global/tree/twisty-clsd.png
+lib/tor-browser/chrome/toolkit/skin/classic/global/tree/twisty-open.png
+lib/tor-browser/chrome/toolkit/skin/classic/global/wizard.css
+lib/tor-browser/chrome/toolkit/skin/classic/mozapps/aboutNetworking.css
+lib/tor-browser/chrome/toolkit/skin/classic/mozapps/downloads/downloadButtons.png
+lib/tor-browser/chrome/toolkit/skin/classic/mozapps/downloads/downloadIcon.png
+lib/tor-browser/chrome/toolkit/skin/classic/mozapps/downloads/downloads.css
+lib/tor-browser/chrome/toolkit/skin/classic/mozapps/downloads/unknownContentType.css
+lib/tor-browser/chrome/toolkit/skin/classic/mozapps/extensions/about.css
+lib/tor-browser/chrome/toolkit/skin/classic/mozapps/extensions/alerticon-error.png
+lib/tor-browser/chrome/toolkit/skin/classic/mozapps/extensions/alerticon-info-negative.png
+lib/tor-browser/chrome/toolkit/skin/classic/mozapps/extensions/alerticon-info-positive.png
+lib/tor-browser/chrome/toolkit/skin/classic/mozapps/extensions/alerticon-warning.png
+lib/tor-browser/chrome/toolkit/skin/classic/mozapps/extensions/blocklist.css
+lib/tor-browser/chrome/toolkit/skin/classic/mozapps/extensions/cancel.png
+lib/tor-browser/chrome/toolkit/skin/classic/mozapps/extensions/category-available.png
+lib/tor-browser/chrome/toolkit/skin/classic/mozapps/extensions/category-dictionaries.png
+lib/tor-browser/chrome/toolkit/skin/classic/mozapps/extensions/category-discover.png
+lib/tor-browser/chrome/toolkit/skin/classic/mozapps/extensions/category-experiments.png
+lib/tor-browser/chrome/toolkit/skin/classic/mozapps/extensions/category-extensions.png
+lib/tor-browser/chrome/toolkit/skin/classic/mozapps/extensions/category-languages.png
+lib/tor-browser/chrome/toolkit/skin/classic/mozapps/extensions/category-plugins.png
+lib/tor-browser/chrome/toolkit/skin/classic/mozapps/extensions/category-recent.png
+lib/tor-browser/chrome/toolkit/skin/classic/mozapps/extensions/category-search.png
+lib/tor-browser/chrome/toolkit/skin/classic/mozapps/extensions/category-searchengines.png
+lib/tor-browser/chrome/toolkit/skin/classic/mozapps/extensions/category-service.png
+lib/tor-browser/chrome/toolkit/skin/classic/mozapps/extensions/category-themes.png
+lib/tor-browser/chrome/toolkit/skin/classic/mozapps/extensions/dictionaryGeneric-16.png
+lib/tor-browser/chrome/toolkit/skin/classic/mozapps/extensions/dictionaryGeneric.png
+lib/tor-browser/chrome/toolkit/skin/classic/mozapps/extensions/discover-logo.png
+lib/tor-browser/chrome/toolkit/skin/classic/mozapps/extensions/eula.css
+lib/tor-browser/chrome/toolkit/skin/classic/mozapps/extensions/experimentGeneric.png
+lib/tor-browser/chrome/toolkit/skin/classic/mozapps/extensions/extensionGeneric-16.png
+lib/tor-browser/chrome/toolkit/skin/classic/mozapps/extensions/extensionGeneric.png
+lib/tor-browser/chrome/toolkit/skin/classic/mozapps/extensions/extensions.css
+lib/tor-browser/chrome/toolkit/skin/classic/mozapps/extensions/heart.png
+lib/tor-browser/chrome/toolkit/skin/classic/mozapps/extensions/localeGeneric.png
+lib/tor-browser/chrome/toolkit/skin/classic/mozapps/extensions/navigation.png
+lib/tor-browser/chrome/toolkit/skin/classic/mozapps/extensions/newaddon.css
+lib/tor-browser/chrome/toolkit/skin/classic/mozapps/extensions/rating-not-won.png
+lib/tor-browser/chrome/toolkit/skin/classic/mozapps/extensions/rating-won.png
+lib/tor-browser/chrome/toolkit/skin/classic/mozapps/extensions/selectAddons.css
+lib/tor-browser/chrome/toolkit/skin/classic/mozapps/extensions/stripes-error.png
+lib/tor-browser/chrome/toolkit/skin/classic/mozapps/extensions/stripes-info-negative.png
+lib/tor-browser/chrome/toolkit/skin/classic/mozapps/extensions/stripes-info-positive.png
+lib/tor-browser/chrome/toolkit/skin/classic/mozapps/extensions/stripes-warning.png
+lib/tor-browser/chrome/toolkit/skin/classic/mozapps/extensions/themeGeneric-16.png
+lib/tor-browser/chrome/toolkit/skin/classic/mozapps/extensions/themeGeneric.png
+lib/tor-browser/chrome/toolkit/skin/classic/mozapps/extensions/update.css
+lib/tor-browser/chrome/toolkit/skin/classic/mozapps/extensions/utilities.svg
+lib/tor-browser/chrome/toolkit/skin/classic/mozapps/formautofill/requestAutocomplete.css
+lib/tor-browser/chrome/toolkit/skin/classic/mozapps/handling/handling.css
+lib/tor-browser/chrome/toolkit/skin/classic/mozapps/passwordmgr/key-16.png
+lib/tor-browser/chrome/toolkit/skin/classic/mozapps/passwordmgr/key-64.png
+lib/tor-browser/chrome/toolkit/skin/classic/mozapps/passwordmgr/key.png
+lib/tor-browser/chrome/toolkit/skin/classic/mozapps/places/defaultFavicon.png
+lib/tor-browser/chrome/toolkit/skin/classic/mozapps/plugins/contentPluginActivate.png
+lib/tor-browser/chrome/toolkit/skin/classic/mozapps/plugins/contentPluginBlocked.png
+lib/tor-browser/chrome/toolkit/skin/classic/mozapps/plugins/contentPluginClose.png
+lib/tor-browser/chrome/toolkit/skin/classic/mozapps/plugins/contentPluginCrashed.png
+lib/tor-browser/chrome/toolkit/skin/classic/mozapps/plugins/contentPluginDisabled.png
+lib/tor-browser/chrome/toolkit/skin/classic/mozapps/plugins/contentPluginDownload.png
+lib/tor-browser/chrome/toolkit/skin/classic/mozapps/plugins/contentPluginMissing.png
+lib/tor-browser/chrome/toolkit/skin/classic/mozapps/plugins/contentPluginStripe.png
+lib/tor-browser/chrome/toolkit/skin/classic/mozapps/plugins/notifyPluginCrashed.png
+lib/tor-browser/chrome/toolkit/skin/classic/mozapps/plugins/notifyPluginGeneric.png
+lib/tor-browser/chrome/toolkit/skin/classic/mozapps/plugins/pluginBlocked-64.png
+lib/tor-browser/chrome/toolkit/skin/classic/mozapps/plugins/pluginBlocked.png
+lib/tor-browser/chrome/toolkit/skin/classic/mozapps/plugins/pluginGeneric-16.png
+lib/tor-browser/chrome/toolkit/skin/classic/mozapps/plugins/pluginGeneric.png
+lib/tor-browser/chrome/toolkit/skin/classic/mozapps/plugins/pluginHelp-16.png
+lib/tor-browser/chrome/toolkit/skin/classic/mozapps/plugins/pluginProblem.css
+lib/tor-browser/chrome/toolkit/skin/classic/mozapps/profile/profileSelection.css
+lib/tor-browser/chrome/toolkit/skin/classic/mozapps/profile/profileicon.png
+lib/tor-browser/chrome/toolkit/skin/classic/mozapps/update/downloadButtons.png
+lib/tor-browser/chrome/toolkit/skin/classic/mozapps/update/updates.css
+lib/tor-browser/chrome/toolkit/skin/classic/mozapps/viewsource/viewsource.css
+lib/tor-browser/chrome/toolkit/skin/classic/mozapps/xpinstall/xpinstallConfirm.css
+lib/tor-browser/chrome/toolkit/skin/classic/mozapps/xpinstall/xpinstallItemGeneric.png
+lib/tor-browser/components/ActivityMessageConfigurator.js
+lib/tor-browser/components/ActivityProxy.js
+lib/tor-browser/components/ActivityRequestHandler.js
+lib/tor-browser/components/ActivityWrapper.js
+lib/tor-browser/components/AlarmsManager.js
+lib/tor-browser/components/AppsService.js
+lib/tor-browser/components/BrowserElementParent.js
+lib/tor-browser/components/ChromeNotifications.js
+lib/tor-browser/components/ColorAnalyzer.js
+lib/tor-browser/components/ConsoleAPIStorage.js
+lib/tor-browser/components/ContactManager.js
+lib/tor-browser/components/ContentProcessSingleton.js
+lib/tor-browser/components/DataReportingService.js
+lib/tor-browser/components/DataStoreImpl.js
+lib/tor-browser/components/DownloadLegacy.js
+lib/tor-browser/components/FeedProcessor.js
+lib/tor-browser/components/FormAutofillContentService.js
+lib/tor-browser/components/FormAutofillStartup.js
+lib/tor-browser/components/FormHistoryStartup.js
+lib/tor-browser/components/MainProcessSingleton.js
+lib/tor-browser/components/MozKeyboard.js
+lib/tor-browser/components/NetworkGeolocationProvider.js
+lib/tor-browser/components/NotificationStorage.js
+lib/tor-browser/components/PageThumbsProtocol.js
+lib/tor-browser/components/Payment.js
+lib/tor-browser/components/PaymentFlowInfo.js
+lib/tor-browser/components/PermissionSettings.js
+lib/tor-browser/components/PhoneNumberService.js
+lib/tor-browser/components/PlacesCategoriesStarter.js
+lib/tor-browser/components/PresentationDeviceInfoManager.js
+lib/tor-browser/components/Push.js
+lib/tor-browser/components/PushServiceLauncher.js
+lib/tor-browser/components/RequestSyncManager.js
+lib/tor-browser/components/RequestSyncScheduler.js
+lib/tor-browser/components/SettingsManager.js
+lib/tor-browser/components/SiteSpecificUserAgent.js
+lib/tor-browser/components/SlowScriptDebug.js
+lib/tor-browser/components/SystemMessageCache.js
+lib/tor-browser/components/SystemMessageInternal.js
+lib/tor-browser/components/SystemMessageManager.js
+lib/tor-browser/components/TCPServerSocket.js
+lib/tor-browser/components/TCPSocket.js
+lib/tor-browser/components/TCPSocketParentIntermediary.js
+lib/tor-browser/components/TelemetryStartup.js
+lib/tor-browser/components/UnifiedComplete.js
+lib/tor-browser/components/Weave.js
+lib/tor-browser/components/WebVTTParserWrapper.js
+lib/tor-browser/components/Webapps.js
+lib/tor-browser/components/XULStore.js
+lib/tor-browser/components/addonManager.js
+lib/tor-browser/components/amContentHandler.js
+lib/tor-browser/components/amInstallTrigger.js
+lib/tor-browser/components/amWebInstallListener.js
+lib/tor-browser/components/components.manifest
+lib/tor-browser/components/contentAreaDropListener.js
+lib/tor-browser/components/crypto-SDR.js
+lib/tor-browser/components/htmlMenuBuilder.js
+lib/tor-browser/components/interfaces.xpt
+lib/tor-browser/components/jsconsole-clhandler.js
+lib/tor-browser/components/libmozgnome.so
+lib/tor-browser/components/marionettecomponent.js
+lib/tor-browser/components/messageWakeupService.js
+lib/tor-browser/components/multiprocessShims.js
+lib/tor-browser/components/nsAsyncShutdown.js
+lib/tor-browser/components/nsBlocklistService.js
+lib/tor-browser/components/nsContentDispatchChooser.js
+lib/tor-browser/components/nsContentPrefService.js
+lib/tor-browser/components/nsCrashMonitor.js
+lib/tor-browser/components/nsDOMIdentity.js
+lib/tor-browser/components/nsDefaultCLH.js
+lib/tor-browser/components/nsFilePicker.js
+lib/tor-browser/components/nsFormAutoComplete.js
+lib/tor-browser/components/nsFormHistory.js
+lib/tor-browser/components/nsHandlerService.js
+lib/tor-browser/components/nsHelperAppDlg.js
+lib/tor-browser/components/nsIDService.js
+lib/tor-browser/components/nsINIProcessor.js
+lib/tor-browser/components/nsInputListAutoComplete.js
+lib/tor-browser/components/nsLivemarkService.js
+lib/tor-browser/components/nsLoginInfo.js
+lib/tor-browser/components/nsLoginManager.js
+lib/tor-browser/components/nsLoginManagerPrompter.js
+lib/tor-browser/components/nsPlacesAutoComplete.js
+lib/tor-browser/components/nsPlacesExpiration.js
+lib/tor-browser/components/nsPrompter.js
+lib/tor-browser/components/nsSearchService.js
+lib/tor-browser/components/nsSearchSuggestions.js
+lib/tor-browser/components/nsSidebar.js
+lib/tor-browser/components/nsTaggingService.js
+lib/tor-browser/components/nsTerminatorTelemetry.js
+lib/tor-browser/components/nsURLFormatter.js
+lib/tor-browser/components/nsUpdateTimerManager.js
+lib/tor-browser/components/nsUrlClassifierHashCompleter.js
+lib/tor-browser/components/nsUrlClassifierLib.js
+lib/tor-browser/components/nsUrlClassifierListManager.js
+lib/tor-browser/components/nsWebHandlerApp.js
+lib/tor-browser/components/recording-cmdline.js
+lib/tor-browser/components/remoteTagService.js
+lib/tor-browser/components/storage-json.js
+lib/tor-browser/components/txEXSLTRegExFunctions.js
+lib/tor-browser/defaults/autoconfig/platform.js
+lib/tor-browser/defaults/autoconfig/prefcalls.js
+lib/tor-browser/defaults/pref/channel-prefs.js
+lib/tor-browser/defaults/pref/services-sync.js
+lib/tor-browser/dependentlibs.list
+lib/tor-browser/dictionaries/en-US.aff
+lib/tor-browser/dictionaries/en-US.dic
+lib/tor-browser/firefox
+lib/tor-browser/firefox-bin
+lib/tor-browser/greprefs.js
+lib/tor-browser/hyphenation/hyph_af.dic
+lib/tor-browser/hyphenation/hyph_bg.dic
+lib/tor-browser/hyphenation/hyph_ca.dic
+lib/tor-browser/hyphenation/hyph_cy.dic
+lib/tor-browser/hyphenation/hyph_da.dic
+lib/tor-browser/hyphenation/hyph_de-1901.dic
+lib/tor-browser/hyphenation/hyph_de-1996.dic
+lib/tor-browser/hyphenation/hyph_de-CH.dic
+lib/tor-browser/hyphenation/hyph_en_US.dic
+lib/tor-browser/hyphenation/hyph_eo.dic
+lib/tor-browser/hyphenation/hyph_es.dic
+lib/tor-browser/hyphenation/hyph_et.dic
+lib/tor-browser/hyphenation/hyph_fi.dic
+lib/tor-browser/hyphenation/hyph_fr.dic
+lib/tor-browser/hyphenation/hyph_gl.dic
+lib/tor-browser/hyphenation/hyph_hr.dic
+lib/tor-browser/hyphenation/hyph_hsb.dic
+lib/tor-browser/hyphenation/hyph_hu.dic
+lib/tor-browser/hyphenation/hyph_ia.dic
+lib/tor-browser/hyphenation/hyph_is.dic
+lib/tor-browser/hyphenation/hyph_it.dic
+lib/tor-browser/hyphenation/hyph_kmr.dic
+lib/tor-browser/hyphenation/hyph_la.dic
+lib/tor-browser/hyphenation/hyph_lt.dic
+lib/tor-browser/hyphenation/hyph_mn.dic
+lib/tor-browser/hyphenation/hyph_nb.dic
+lib/tor-browser/hyphenation/hyph_nl.dic
+lib/tor-browser/hyphenation/hyph_nn.dic
+lib/tor-browser/hyphenation/hyph_pl.dic
+lib/tor-browser/hyphenation/hyph_pt.dic
+lib/tor-browser/hyphenation/hyph_ru.dic
+lib/tor-browser/hyphenation/hyph_sh.dic
+lib/tor-browser/hyphenation/hyph_sl.dic
+lib/tor-browser/hyphenation/hyph_sv.dic
+lib/tor-browser/hyphenation/hyph_tr.dic
+lib/tor-browser/hyphenation/hyph_uk.dic
+lib/tor-browser/libmozalloc.so
+lib/tor-browser/libmozjs.so
+lib/tor-browser/libxul.so
+lib/tor-browser/modules/AboutReader.jsm
+lib/tor-browser/modules/ActivitiesService.jsm
+lib/tor-browser/modules/ActivitiesServiceFilter.jsm
+lib/tor-browser/modules/AddonManager.jsm
+lib/tor-browser/modules/AlarmDB.jsm
+lib/tor-browser/modules/AlarmService.jsm
+lib/tor-browser/modules/AppDownloadManager.jsm
+lib/tor-browser/modules/AppsServiceChild.jsm
+lib/tor-browser/modules/AppsUtils.jsm
+lib/tor-browser/modules/AsyncShutdown.jsm
+lib/tor-browser/modules/AsyncSpellCheckTestHelper.jsm
+lib/tor-browser/modules/AutoCompleteE10S.jsm
+lib/tor-browser/modules/BackgroundPageThumbs.jsm
+lib/tor-browser/modules/Battery.jsm
+lib/tor-browser/modules/BinarySearch.jsm
+lib/tor-browser/modules/BookmarkHTMLUtils.jsm
+lib/tor-browser/modules/BookmarkJSONUtils.jsm
+lib/tor-browser/modules/Bookmarks.jsm
+lib/tor-browser/modules/BrowserElementPromptService.jsm
+lib/tor-browser/modules/BrowserUtils.jsm
+lib/tor-browser/modules/CertUtils.jsm
+lib/tor-browser/modules/CharsetMenu.jsm
+lib/tor-browser/modules/ChromeManifestParser.jsm
+lib/tor-browser/modules/CloudSync.jsm
+lib/tor-browser/modules/CloudSyncAdapters.jsm
+lib/tor-browser/modules/CloudSyncBookmarks.jsm
+lib/tor-browser/modules/CloudSyncBookmarksFolderCache.jsm
+lib/tor-browser/modules/CloudSyncEventSource.jsm
+lib/tor-browser/modules/CloudSyncLocal.jsm
+lib/tor-browser/modules/CloudSyncPlacesWrapper.jsm
+lib/tor-browser/modules/CloudSyncTabs.jsm
+lib/tor-browser/modules/ClusterLib.js
+lib/tor-browser/modules/ColorAnalyzer_worker.js
+lib/tor-browser/modules/ColorConversion.js
+lib/tor-browser/modules/CommonDialog.jsm
+lib/tor-browser/modules/ContactDB.jsm
+lib/tor-browser/modules/ContactService.jsm
+lib/tor-browser/modules/ContentPrefInstance.jsm
+lib/tor-browser/modules/ContentPrefService2.jsm
+lib/tor-browser/modules/ContentPrefServiceChild.jsm
+lib/tor-browser/modules/ContentPrefServiceParent.jsm
+lib/tor-browser/modules/ContentPrefStore.jsm
+lib/tor-browser/modules/ContentPrefUtils.jsm
+lib/tor-browser/modules/CrashMonitor.jsm
+lib/tor-browser/modules/Credentials.jsm
+lib/tor-browser/modules/DOMIdentity.jsm
+lib/tor-browser/modules/DOMRequestHelper.jsm
+lib/tor-browser/modules/DataStoreChangeNotifier.jsm
+lib/tor-browser/modules/DataStoreCursorImpl.jsm
+lib/tor-browser/modules/DataStoreDB.jsm
+lib/tor-browser/modules/DeferredSave.jsm
+lib/tor-browser/modules/DeferredTask.jsm
+lib/tor-browser/modules/Deprecated.jsm
+lib/tor-browser/modules/Dict.jsm
+lib/tor-browser/modules/DownloadCore.jsm
+lib/tor-browser/modules/DownloadImport.jsm
+lib/tor-browser/modules/DownloadIntegration.jsm
+lib/tor-browser/modules/DownloadLastDir.jsm
+lib/tor-browser/modules/DownloadList.jsm
+lib/tor-browser/modules/DownloadPaths.jsm
+lib/tor-browser/modules/DownloadStore.jsm
+lib/tor-browser/modules/DownloadTaskbarProgress.jsm
+lib/tor-browser/modules/DownloadUIHelper.jsm
+lib/tor-browser/modules/DownloadUtils.jsm
+lib/tor-browser/modules/Downloads.jsm
+lib/tor-browser/modules/FileUtils.jsm
+lib/tor-browser/modules/Finder.jsm
+lib/tor-browser/modules/ForgetAboutSite.jsm
+lib/tor-browser/modules/FormAutofill.jsm
+lib/tor-browser/modules/FormAutofillIntegration.jsm
+lib/tor-browser/modules/FormData.jsm
+lib/tor-browser/modules/FormHistory.jsm
+lib/tor-browser/modules/FrameWorker.jsm
+lib/tor-browser/modules/FrameWorkerContent.js
+lib/tor-browser/modules/FreeSpaceWatcher.jsm
+lib/tor-browser/modules/FxAccounts.jsm
+lib/tor-browser/modules/FxAccountsClient.jsm
+lib/tor-browser/modules/FxAccountsCommon.js
+lib/tor-browser/modules/FxAccountsOAuthClient.jsm
+lib/tor-browser/modules/FxAccountsOAuthGrantClient.jsm
+lib/tor-browser/modules/FxAccountsProfileClient.jsm
+lib/tor-browser/modules/GMPInstallManager.jsm
+lib/tor-browser/modules/GMPUtils.jsm
+lib/tor-browser/modules/Geometry.jsm
+lib/tor-browser/modules/HealthReport.jsm
+lib/tor-browser/modules/History.jsm
+lib/tor-browser/modules/Http.jsm
+lib/tor-browser/modules/ISO8601DateUtils.jsm
+lib/tor-browser/modules/ImportExport.jsm
+lib/tor-browser/modules/IndexedDBHelper.jsm
+lib/tor-browser/modules/InlineSpellChecker.jsm
+lib/tor-browser/modules/InlineSpellCheckerContent.jsm
+lib/tor-browser/modules/InsecurePasswordUtils.jsm
+lib/tor-browser/modules/InterAppCommService.jsm
+lib/tor-browser/modules/Keyboard.jsm
+lib/tor-browser/modules/Langpacks.jsm
+lib/tor-browser/modules/LightweightThemeConsumer.jsm
+lib/tor-browser/modules/LightweightThemeManager.jsm
+lib/tor-browser/modules/LoadContextInfo.jsm
+lib/tor-browser/modules/Log.jsm
+lib/tor-browser/modules/LoginHelper.jsm
+lib/tor-browser/modules/LoginImport.jsm
+lib/tor-browser/modules/LoginManagerContent.jsm
+lib/tor-browser/modules/LoginManagerParent.jsm
+lib/tor-browser/modules/LoginStore.jsm
+lib/tor-browser/modules/ManifestProcessor.jsm
+lib/tor-browser/modules/MessagePortBase.jsm
+lib/tor-browser/modules/MessagePortWorker.js
+lib/tor-browser/modules/Metrics.jsm
+lib/tor-browser/modules/Microformats.js
+lib/tor-browser/modules/MozSocialAPI.jsm
+lib/tor-browser/modules/NativeApp.jsm
+lib/tor-browser/modules/NetUtil.jsm
+lib/tor-browser/modules/NewTabUtils.jsm
+lib/tor-browser/modules/NotificationDB.jsm
+lib/tor-browser/modules/OfflineCacheInstaller.jsm
+lib/tor-browser/modules/OperatorApps.jsm
+lib/tor-browser/modules/PageMenu.jsm
+lib/tor-browser/modules/PageMetadata.jsm
+lib/tor-browser/modules/PageThumbUtils.jsm
+lib/tor-browser/modules/PageThumbs.jsm
+lib/tor-browser/modules/PageThumbsWorker.js
+lib/tor-browser/modules/Payment.jsm
+lib/tor-browser/modules/PerfMeasurement.jsm
+lib/tor-browser/modules/PermissionSettings.jsm
+lib/tor-browser/modules/PermissionsInstaller.jsm
+lib/tor-browser/modules/PermissionsTable.jsm
+lib/tor-browser/modules/PermissionsUtils.jsm
+lib/tor-browser/modules/PhoneNumber.jsm
+lib/tor-browser/modules/PhoneNumberMetaData.jsm
+lib/tor-browser/modules/PhoneNumberNormalizer.jsm
+lib/tor-browser/modules/PhoneNumberUtils.jsm
+lib/tor-browser/modules/PlacesBackups.jsm
+lib/tor-browser/modules/PlacesDBUtils.jsm
+lib/tor-browser/modules/PlacesSearchAutocompleteProvider.jsm
+lib/tor-browser/modules/PlacesTransactions.jsm
+lib/tor-browser/modules/PlacesUtils.jsm
+lib/tor-browser/modules/PluralForm.jsm
+lib/tor-browser/modules/PopupNotifications.jsm
+lib/tor-browser/modules/Preferences.jsm
+lib/tor-browser/modules/Prefetcher.jsm
+lib/tor-browser/modules/PresentationDeviceInfoManager.jsm
+lib/tor-browser/modules/PrivateBrowsingUtils.jsm
+lib/tor-browser/modules/Promise-backend.js
+lib/tor-browser/modules/Promise.jsm
+lib/tor-browser/modules/PromiseUtils.jsm
+lib/tor-browser/modules/PromiseWorker.jsm
+lib/tor-browser/modules/PropertyListUtils.jsm
+lib/tor-browser/modules/PushService.jsm
+lib/tor-browser/modules/ReaderMode.jsm
+lib/tor-browser/modules/RemoteAddonsChild.jsm
+lib/tor-browser/modules/RemoteAddonsParent.jsm
+lib/tor-browser/modules/RemoteController.jsm
+lib/tor-browser/modules/RemoteFinder.jsm
+lib/tor-browser/modules/RemoteSecurityUI.jsm
+lib/tor-browser/modules/RemoteWebNavigation.jsm
+lib/tor-browser/modules/RemoteWebProgress.jsm
+lib/tor-browser/modules/RequestAutocompleteUI.jsm
+lib/tor-browser/modules/RequestSyncApp.jsm
+lib/tor-browser/modules/RequestSyncService.jsm
+lib/tor-browser/modules/RequestSyncTask.jsm
+lib/tor-browser/modules/ResetProfile.jsm
+lib/tor-browser/modules/ResourceStatsDB.jsm
+lib/tor-browser/modules/ResourceStatsService.jsm
+lib/tor-browser/modules/RokuApp.jsm
+lib/tor-browser/modules/SafeBrowsing.jsm
+lib/tor-browser/modules/ScriptPreloader.jsm
+lib/tor-browser/modules/ScrollPosition.jsm
+lib/tor-browser/modules/SearchStaticData.jsm
+lib/tor-browser/modules/SearchSuggestionController.jsm
+lib/tor-browser/modules/SelectContentHelper.jsm
+lib/tor-browser/modules/SelectParentHelper.jsm
+lib/tor-browser/modules/Services.jsm
+lib/tor-browser/modules/SettingsDB.jsm
+lib/tor-browser/modules/SettingsRequestManager.jsm
+lib/tor-browser/modules/SharedPromptUtils.jsm
+lib/tor-browser/modules/ShortcutUtils.jsm
+lib/tor-browser/modules/SimpleServiceDiscovery.jsm
+lib/tor-browser/modules/Sntp.jsm
+lib/tor-browser/modules/SocialService.jsm
+lib/tor-browser/modules/SpatialNavigation.jsm
+lib/tor-browser/modules/Sqlite.jsm
+lib/tor-browser/modules/StoreTrustAnchor.jsm
+lib/tor-browser/modules/SystemMessagePermissionsChecker.jsm
+lib/tor-browser/modules/Task.jsm
+lib/tor-browser/modules/TelemetryFile.jsm
+lib/tor-browser/modules/TelemetryLog.jsm
+lib/tor-browser/modules/TelemetryPing.jsm
+lib/tor-browser/modules/TelemetrySession.jsm
+lib/tor-browser/modules/TelemetryStopwatch.jsm
+lib/tor-browser/modules/TelemetryTimestamps.jsm
+lib/tor-browser/modules/ThirdPartyCookieProbe.jsm
+lib/tor-browser/modules/Timer.jsm
+lib/tor-browser/modules/Troubleshoot.jsm
+lib/tor-browser/modules/TrustedHostedAppsUtils.jsm
+lib/tor-browser/modules/UITelemetry.jsm
+lib/tor-browser/modules/UpdateChannel.jsm
+lib/tor-browser/modules/UserAgentOverrides.jsm
+lib/tor-browser/modules/UserAgentUpdates.jsm
+lib/tor-browser/modules/UserCustomizations.jsm
+lib/tor-browser/modules/WebChannel.jsm
+lib/tor-browser/modules/WebappOSUtils.jsm
+lib/tor-browser/modules/Webapps.jsm
+lib/tor-browser/modules/WindowDraggingUtils.jsm
+lib/tor-browser/modules/WindowsPrefSync.jsm
+lib/tor-browser/modules/WorkerAPI.jsm
+lib/tor-browser/modules/XPCOMUtils.jsm
+lib/tor-browser/modules/XPathGenerator.jsm
+lib/tor-browser/modules/ZipUtils.jsm
+lib/tor-browser/modules/accessibility/AccessFu.jsm
+lib/tor-browser/modules/accessibility/Constants.jsm
+lib/tor-browser/modules/accessibility/ContentControl.jsm
+lib/tor-browser/modules/accessibility/EventManager.jsm
+lib/tor-browser/modules/accessibility/Gestures.jsm
+lib/tor-browser/modules/accessibility/OutputGenerator.jsm
+lib/tor-browser/modules/accessibility/PointerAdapter.jsm
+lib/tor-browser/modules/accessibility/Presentation.jsm
+lib/tor-browser/modules/accessibility/TraversalRules.jsm
+lib/tor-browser/modules/accessibility/Utils.jsm
+lib/tor-browser/modules/addons/AddonLogging.jsm
+lib/tor-browser/modules/addons/AddonRepository.jsm
+lib/tor-browser/modules/addons/AddonRepository_SQLiteMigrator.jsm
+lib/tor-browser/modules/addons/AddonUpdateChecker.jsm
+lib/tor-browser/modules/addons/Content.js
+lib/tor-browser/modules/addons/GMPProvider.jsm
+lib/tor-browser/modules/addons/LightweightThemeImageOptimizer.jsm
+lib/tor-browser/modules/addons/PluginProvider.jsm
+lib/tor-browser/modules/addons/SpellCheckDictionaryBootstrap.js
+lib/tor-browser/modules/addons/XPIProvider.jsm
+lib/tor-browser/modules/addons/XPIProviderUtils.js
+lib/tor-browser/modules/commonjs/dev/debuggee.js
+lib/tor-browser/modules/commonjs/dev/frame-script.js
+lib/tor-browser/modules/commonjs/dev/panel.js
+lib/tor-browser/modules/commonjs/dev/panel/view.js
+lib/tor-browser/modules/commonjs/dev/ports.js
+lib/tor-browser/modules/commonjs/dev/toolbox.js
+lib/tor-browser/modules/commonjs/dev/utils.js
+lib/tor-browser/modules/commonjs/dev/volcan.js
+lib/tor-browser/modules/commonjs/diffpatcher/diff.js
+lib/tor-browser/modules/commonjs/diffpatcher/index.js
+lib/tor-browser/modules/commonjs/diffpatcher/patch.js
+lib/tor-browser/modules/commonjs/diffpatcher/rebase.js
+lib/tor-browser/modules/commonjs/diffpatcher/test/common.js
+lib/tor-browser/modules/commonjs/diffpatcher/test/diff.js
+lib/tor-browser/modules/commonjs/diffpatcher/test/index.js
+lib/tor-browser/modules/commonjs/diffpatcher/test/patch.js
+lib/tor-browser/modules/commonjs/diffpatcher/test/tap.js
+lib/tor-browser/modules/commonjs/framescript/FrameScriptManager.jsm
+lib/tor-browser/modules/commonjs/framescript/LoaderHelper.jsm
+lib/tor-browser/modules/commonjs/framescript/context-menu.js
+lib/tor-browser/modules/commonjs/framescript/contextmenu-events.js
+lib/tor-browser/modules/commonjs/framescript/manager.js
+lib/tor-browser/modules/commonjs/framescript/tab-events.js
+lib/tor-browser/modules/commonjs/framescript/util.js
+lib/tor-browser/modules/commonjs/index.js
+lib/tor-browser/modules/commonjs/method/core.js
+lib/tor-browser/modules/commonjs/method/test/browser.js
+lib/tor-browser/modules/commonjs/method/test/common.js
+lib/tor-browser/modules/commonjs/node/os.js
+lib/tor-browser/modules/commonjs/sdk/addon/bootstrap.js
+lib/tor-browser/modules/commonjs/sdk/addon/events.js
+lib/tor-browser/modules/commonjs/sdk/addon/host.js
+lib/tor-browser/modules/commonjs/sdk/addon/installer.js
+lib/tor-browser/modules/commonjs/sdk/addon/manager.js
+lib/tor-browser/modules/commonjs/sdk/addon/runner.js
+lib/tor-browser/modules/commonjs/sdk/addon/window.js
+lib/tor-browser/modules/commonjs/sdk/base64.js
+lib/tor-browser/modules/commonjs/sdk/browser/events.js
+lib/tor-browser/modules/commonjs/sdk/clipboard.js
+lib/tor-browser/modules/commonjs/sdk/console/plain-text.js
+lib/tor-browser/modules/commonjs/sdk/console/traceback.js
+lib/tor-browser/modules/commonjs/sdk/content/content-worker.js
+lib/tor-browser/modules/commonjs/sdk/content/content.js
+lib/tor-browser/modules/commonjs/sdk/content/context-menu.js
+lib/tor-browser/modules/commonjs/sdk/content/events.js
+lib/tor-browser/modules/commonjs/sdk/content/loader.js
+lib/tor-browser/modules/commonjs/sdk/content/mod.js
+lib/tor-browser/modules/commonjs/sdk/content/sandbox.js
+lib/tor-browser/modules/commonjs/sdk/content/thumbnail.js
+lib/tor-browser/modules/commonjs/sdk/content/utils.js
+lib/tor-browser/modules/commonjs/sdk/content/worker-child.js
+lib/tor-browser/modules/commonjs/sdk/content/worker.js
+lib/tor-browser/modules/commonjs/sdk/context-menu.js
+lib/tor-browser/modules/commonjs/sdk/context-menu/context.js
+lib/tor-browser/modules/commonjs/sdk/context-menu/core.js
+lib/tor-browser/modules/commonjs/sdk/context-menu/readers.js
+lib/tor-browser/modules/commonjs/sdk/context-menu@2.js
+lib/tor-browser/modules/commonjs/sdk/core/disposable.js
+lib/tor-browser/modules/commonjs/sdk/core/heritage.js
+lib/tor-browser/modules/commonjs/sdk/core/namespace.js
+lib/tor-browser/modules/commonjs/sdk/core/observer.js
+lib/tor-browser/modules/commonjs/sdk/core/promise.js
+lib/tor-browser/modules/commonjs/sdk/core/reference.js
+lib/tor-browser/modules/commonjs/sdk/deprecated/api-utils.js
+lib/tor-browser/modules/commonjs/sdk/deprecated/cortex.js
+lib/tor-browser/modules/commonjs/sdk/deprecated/errors.js
+lib/tor-browser/modules/commonjs/sdk/deprecated/events.js
+lib/tor-browser/modules/commonjs/sdk/deprecated/events/assembler.js
+lib/tor-browser/modules/commonjs/sdk/deprecated/light-traits.js
+lib/tor-browser/modules/commonjs/sdk/deprecated/list.js
+lib/tor-browser/modules/commonjs/sdk/deprecated/memory.js
+lib/tor-browser/modules/commonjs/sdk/deprecated/symbiont.js
+lib/tor-browser/modules/commonjs/sdk/deprecated/sync-worker.js
+lib/tor-browser/modules/commonjs/sdk/deprecated/traits-worker.js
+lib/tor-browser/modules/commonjs/sdk/deprecated/traits.js
+lib/tor-browser/modules/commonjs/sdk/deprecated/traits/core.js
+lib/tor-browser/modules/commonjs/sdk/deprecated/unit-test-finder.js
+lib/tor-browser/modules/commonjs/sdk/deprecated/unit-test.js
+lib/tor-browser/modules/commonjs/sdk/deprecated/window-utils.js
+lib/tor-browser/modules/commonjs/sdk/dom/events.js
+lib/tor-browser/modules/commonjs/sdk/dom/events/keys.js
+lib/tor-browser/modules/commonjs/sdk/event/chrome.js
+lib/tor-browser/modules/commonjs/sdk/event/core.js
+lib/tor-browser/modules/commonjs/sdk/event/dom.js
+lib/tor-browser/modules/commonjs/sdk/event/target.js
+lib/tor-browser/modules/commonjs/sdk/event/utils.js
+lib/tor-browser/modules/commonjs/sdk/frame/hidden-frame.js
+lib/tor-browser/modules/commonjs/sdk/frame/utils.js
+lib/tor-browser/modules/commonjs/sdk/fs/path.js
+lib/tor-browser/modules/commonjs/sdk/hotkeys.js
+lib/tor-browser/modules/commonjs/sdk/indexed-db.js
+lib/tor-browser/modules/commonjs/sdk/input/browser.js
+lib/tor-browser/modules/commonjs/sdk/input/customizable-ui.js
+lib/tor-browser/modules/commonjs/sdk/input/frame.js
+lib/tor-browser/modules/commonjs/sdk/input/system.js
+lib/tor-browser/modules/commonjs/sdk/input/window.js
+lib/tor-browser/modules/commonjs/sdk/io/buffer.js
+lib/tor-browser/modules/commonjs/sdk/io/byte-streams.js
+lib/tor-browser/modules/commonjs/sdk/io/data.js
+lib/tor-browser/modules/commonjs/sdk/io/file.js
+lib/tor-browser/modules/commonjs/sdk/io/fs.js
+lib/tor-browser/modules/commonjs/sdk/io/stream.js
+lib/tor-browser/modules/commonjs/sdk/io/text-streams.js
+lib/tor-browser/modules/commonjs/sdk/keyboard/hotkeys.js
+lib/tor-browser/modules/commonjs/sdk/keyboard/observer.js
+lib/tor-browser/modules/commonjs/sdk/keyboard/utils.js
+lib/tor-browser/modules/commonjs/sdk/l10n.js
+lib/tor-browser/modules/commonjs/sdk/l10n/core.js
+lib/tor-browser/modules/commonjs/sdk/l10n/html.js
+lib/tor-browser/modules/commonjs/sdk/l10n/json/core.js
+lib/tor-browser/modules/commonjs/sdk/l10n/loader.js
+lib/tor-browser/modules/commonjs/sdk/l10n/locale.js
+lib/tor-browser/modules/commonjs/sdk/l10n/plural-rules.js
+lib/tor-browser/modules/commonjs/sdk/l10n/prefs.js
+lib/tor-browser/modules/commonjs/sdk/l10n/properties/core.js
+lib/tor-browser/modules/commonjs/sdk/lang/functional.js
+lib/tor-browser/modules/commonjs/sdk/lang/functional/concurrent.js
+lib/tor-browser/modules/commonjs/sdk/lang/functional/core.js
+lib/tor-browser/modules/commonjs/sdk/lang/functional/helpers.js
+lib/tor-browser/modules/commonjs/sdk/lang/type.js
+lib/tor-browser/modules/commonjs/sdk/lang/weak-set.js
+lib/tor-browser/modules/commonjs/sdk/loader/cuddlefish.js
+lib/tor-browser/modules/commonjs/sdk/loader/sandbox.js
+lib/tor-browser/modules/commonjs/sdk/messaging.js
+lib/tor-browser/modules/commonjs/sdk/model/core.js
+lib/tor-browser/modules/commonjs/sdk/net/url.js
+lib/tor-browser/modules/commonjs/sdk/net/xhr.js
+lib/tor-browser/modules/commonjs/sdk/notifications.js
+lib/tor-browser/modules/commonjs/sdk/output/system.js
+lib/tor-browser/modules/commonjs/sdk/page-mod.js
+lib/tor-browser/modules/commonjs/sdk/page-mod/match-pattern.js
+lib/tor-browser/modules/commonjs/sdk/page-worker.js
+lib/tor-browser/modules/commonjs/sdk/panel.js
+lib/tor-browser/modules/commonjs/sdk/panel/events.js
+lib/tor-browser/modules/commonjs/sdk/panel/utils.js
+lib/tor-browser/modules/commonjs/sdk/passwords.js
+lib/tor-browser/modules/commonjs/sdk/passwords/utils.js
+lib/tor-browser/modules/commonjs/sdk/places/bookmarks.js
+lib/tor-browser/modules/commonjs/sdk/places/contract.js
+lib/tor-browser/modules/commonjs/sdk/places/events.js
+lib/tor-browser/modules/commonjs/sdk/places/favicon.js
+lib/tor-browser/modules/commonjs/sdk/places/history.js
+lib/tor-browser/modules/commonjs/sdk/places/host/host-bookmarks.js
+lib/tor-browser/modules/commonjs/sdk/places/host/host-query.js
+lib/tor-browser/modules/commonjs/sdk/places/host/host-tags.js
+lib/tor-browser/modules/commonjs/sdk/places/utils.js
+lib/tor-browser/modules/commonjs/sdk/platform/xpcom.js
+lib/tor-browser/modules/commonjs/sdk/preferences/event-target.js
+lib/tor-browser/modules/commonjs/sdk/preferences/native-options.js
+lib/tor-browser/modules/commonjs/sdk/preferences/service.js
+lib/tor-browser/modules/commonjs/sdk/preferences/utils.js
+lib/tor-browser/modules/commonjs/sdk/private-browsing.js
+lib/tor-browser/modules/commonjs/sdk/private-browsing/utils.js
+lib/tor-browser/modules/commonjs/sdk/querystring.js
+lib/tor-browser/modules/commonjs/sdk/request.js
+lib/tor-browser/modules/commonjs/sdk/selection.js
+lib/tor-browser/modules/commonjs/sdk/self.js
+lib/tor-browser/modules/commonjs/sdk/simple-prefs.js
+lib/tor-browser/modules/commonjs/sdk/simple-storage.js
+lib/tor-browser/modules/commonjs/sdk/stylesheet/style.js
+lib/tor-browser/modules/commonjs/sdk/stylesheet/utils.js
+lib/tor-browser/modules/commonjs/sdk/system.js
+lib/tor-browser/modules/commonjs/sdk/system/child_process.js
+lib/tor-browser/modules/commonjs/sdk/system/child_process/subprocess.js
+lib/tor-browser/modules/commonjs/sdk/system/child_process/subprocess_worker_unix.js
+lib/tor-browser/modules/commonjs/sdk/system/child_process/subprocess_worker_win.js
+lib/tor-browser/modules/commonjs/sdk/system/environment.js
+lib/tor-browser/modules/commonjs/sdk/system/events.js
+lib/tor-browser/modules/commonjs/sdk/system/globals.js
+lib/tor-browser/modules/commonjs/sdk/system/process.js
+lib/tor-browser/modules/commonjs/sdk/system/runtime.js
+lib/tor-browser/modules/commonjs/sdk/system/unload.js
+lib/tor-browser/modules/commonjs/sdk/system/xul-app.js
+lib/tor-browser/modules/commonjs/sdk/system/xul-app.jsm
+lib/tor-browser/modules/commonjs/sdk/tab/events.js
+lib/tor-browser/modules/commonjs/sdk/tabs.js
+lib/tor-browser/modules/commonjs/sdk/tabs/common.js
+lib/tor-browser/modules/commonjs/sdk/tabs/events.js
+lib/tor-browser/modules/commonjs/sdk/tabs/helpers.js
+lib/tor-browser/modules/commonjs/sdk/tabs/namespace.js
+lib/tor-browser/modules/commonjs/sdk/tabs/observer.js
+lib/tor-browser/modules/commonjs/sdk/tabs/tab-fennec.js
+lib/tor-browser/modules/commonjs/sdk/tabs/tab-firefox.js
+lib/tor-browser/modules/commonjs/sdk/tabs/tab.js
+lib/tor-browser/modules/commonjs/sdk/tabs/tabs-firefox.js
+lib/tor-browser/modules/commonjs/sdk/tabs/utils.js
+lib/tor-browser/modules/commonjs/sdk/tabs/worker.js
+lib/tor-browser/modules/commonjs/sdk/test.js
+lib/tor-browser/modules/commonjs/sdk/test/assert.js
+lib/tor-browser/modules/commonjs/sdk/test/harness.js
+lib/tor-browser/modules/commonjs/sdk/test/httpd.js
+lib/tor-browser/modules/commonjs/sdk/test/loader.js
+lib/tor-browser/modules/commonjs/sdk/test/memory.js
+lib/tor-browser/modules/commonjs/sdk/test/options.js
+lib/tor-browser/modules/commonjs/sdk/test/runner.js
+lib/tor-browser/modules/commonjs/sdk/test/tmp-file.js
+lib/tor-browser/modules/commonjs/sdk/test/utils.js
+lib/tor-browser/modules/commonjs/sdk/timers.js
+lib/tor-browser/modules/commonjs/sdk/ui.js
+lib/tor-browser/modules/commonjs/sdk/ui/button/action.js
+lib/tor-browser/modules/commonjs/sdk/ui/button/contract.js
+lib/tor-browser/modules/commonjs/sdk/ui/button/toggle.js
+lib/tor-browser/modules/commonjs/sdk/ui/button/view.js
+lib/tor-browser/modules/commonjs/sdk/ui/button/view/events.js
+lib/tor-browser/modules/commonjs/sdk/ui/component.js
+lib/tor-browser/modules/commonjs/sdk/ui/frame.js
+lib/tor-browser/modules/commonjs/sdk/ui/frame/model.js
+lib/tor-browser/modules/commonjs/sdk/ui/frame/view.html
+lib/tor-browser/modules/commonjs/sdk/ui/frame/view.js
+lib/tor-browser/modules/commonjs/sdk/ui/id.js
+lib/tor-browser/modules/commonjs/sdk/ui/sidebar.js
+lib/tor-browser/modules/commonjs/sdk/ui/sidebar/actions.js
+lib/tor-browser/modules/commonjs/sdk/ui/sidebar/contract.js
+lib/tor-browser/modules/commonjs/sdk/ui/sidebar/namespace.js
+lib/tor-browser/modules/commonjs/sdk/ui/sidebar/utils.js
+lib/tor-browser/modules/commonjs/sdk/ui/sidebar/view.js
+lib/tor-browser/modules/commonjs/sdk/ui/state.js
+lib/tor-browser/modules/commonjs/sdk/ui/state/events.js
+lib/tor-browser/modules/commonjs/sdk/ui/toolbar.js
+lib/tor-browser/modules/commonjs/sdk/ui/toolbar/model.js
+lib/tor-browser/modules/commonjs/sdk/ui/toolbar/view.js
+lib/tor-browser/modules/commonjs/sdk/uri/resource.js
+lib/tor-browser/modules/commonjs/sdk/url.js
+lib/tor-browser/modules/commonjs/sdk/url/utils.js
+lib/tor-browser/modules/commonjs/sdk/util/array.js
+lib/tor-browser/modules/commonjs/sdk/util/bond.js
+lib/tor-browser/modules/commonjs/sdk/util/collection.js
+lib/tor-browser/modules/commonjs/sdk/util/contract.js
+lib/tor-browser/modules/commonjs/sdk/util/deprecate.js
+lib/tor-browser/modules/commonjs/sdk/util/dispatcher.js
+lib/tor-browser/modules/commonjs/sdk/util/list.js
+lib/tor-browser/modules/commonjs/sdk/util/match-pattern.js
+lib/tor-browser/modules/commonjs/sdk/util/object.js
+lib/tor-browser/modules/commonjs/sdk/util/rules.js
+lib/tor-browser/modules/commonjs/sdk/util/sequence.js
+lib/tor-browser/modules/commonjs/sdk/util/uuid.js
+lib/tor-browser/modules/commonjs/sdk/view/core.js
+lib/tor-browser/modules/commonjs/sdk/widget.js
+lib/tor-browser/modules/commonjs/sdk/window/browser.js
+lib/tor-browser/modules/commonjs/sdk/window/events.js
+lib/tor-browser/modules/commonjs/sdk/window/helpers.js
+lib/tor-browser/modules/commonjs/sdk/window/namespace.js
+lib/tor-browser/modules/commonjs/sdk/window/utils.js
+lib/tor-browser/modules/commonjs/sdk/windows.js
+lib/tor-browser/modules/commonjs/sdk/windows/dom.js
+lib/tor-browser/modules/commonjs/sdk/windows/fennec.js
+lib/tor-browser/modules/commonjs/sdk/windows/firefox.js
+lib/tor-browser/modules/commonjs/sdk/windows/observer.js
+lib/tor-browser/modules/commonjs/sdk/windows/tabs-fennec.js
+lib/tor-browser/modules/commonjs/sdk/windows/tabs-firefox.js
+lib/tor-browser/modules/commonjs/sdk/worker/utils.js
+lib/tor-browser/modules/commonjs/sdk/zip/utils.js
+lib/tor-browser/modules/commonjs/test.js
+lib/tor-browser/modules/commonjs/toolkit/loader.js
+lib/tor-browser/modules/commonjs/toolkit/require.js
+lib/tor-browser/modules/ctypes.jsm
+lib/tor-browser/modules/debug.js
+lib/tor-browser/modules/devtools/Console.jsm
+lib/tor-browser/modules/devtools/DevToolsUtils.js
+lib/tor-browser/modules/devtools/DevToolsUtils.jsm
+lib/tor-browser/modules/devtools/Devices.jsm
+lib/tor-browser/modules/devtools/LayoutHelpers.jsm
+lib/tor-browser/modules/devtools/Loader.jsm
+lib/tor-browser/modules/devtools/Require.jsm
+lib/tor-browser/modules/devtools/Simulator.jsm
+lib/tor-browser/modules/devtools/SourceMap.jsm
+lib/tor-browser/modules/devtools/Templater.jsm
+lib/tor-browser/modules/devtools/acorn/acorn.js
+lib/tor-browser/modules/devtools/acorn/acorn_loose.js
+lib/tor-browser/modules/devtools/acorn/walk.js
+lib/tor-browser/modules/devtools/app-actor-front.js
+lib/tor-browser/modules/devtools/async-utils.js
+lib/tor-browser/modules/devtools/client/connection-manager.js
+lib/tor-browser/modules/devtools/content-observer.js
+lib/tor-browser/modules/devtools/content-server.jsm
+lib/tor-browser/modules/devtools/css-color.js
+lib/tor-browser/modules/devtools/dbg-client.jsm
+lib/tor-browser/modules/devtools/dbg-server.jsm
+lib/tor-browser/modules/devtools/deprecated-sync-thenables.js
+lib/tor-browser/modules/devtools/discovery/discovery.js
+lib/tor-browser/modules/devtools/event-emitter.js
+lib/tor-browser/modules/devtools/event-parsers.js
+lib/tor-browser/modules/devtools/gcli.jsm
+lib/tor-browser/modules/devtools/gcli/api.js
+lib/tor-browser/modules/devtools/gcli/cli.js
+lib/tor-browser/modules/devtools/gcli/commands/addon.js
+lib/tor-browser/modules/devtools/gcli/commands/appcache.js
+lib/tor-browser/modules/devtools/gcli/commands/calllog.js
+lib/tor-browser/modules/devtools/gcli/commands/clear.js
+lib/tor-browser/modules/devtools/gcli/commands/cmd.js
+lib/tor-browser/modules/devtools/gcli/commands/commands.js
+lib/tor-browser/modules/devtools/gcli/commands/connect.js
+lib/tor-browser/modules/devtools/gcli/commands/context.js
+lib/tor-browser/modules/devtools/gcli/commands/cookie.js
+lib/tor-browser/modules/devtools/gcli/commands/csscoverage.js
+lib/tor-browser/modules/devtools/gcli/commands/exec.js
+lib/tor-browser/modules/devtools/gcli/commands/folder.js
+lib/tor-browser/modules/devtools/gcli/commands/global.js
+lib/tor-browser/modules/devtools/gcli/commands/help.js
+lib/tor-browser/modules/devtools/gcli/commands/highlight.js
+lib/tor-browser/modules/devtools/gcli/commands/inject.js
+lib/tor-browser/modules/devtools/gcli/commands/intro.js
+lib/tor-browser/modules/devtools/gcli/commands/jsb.js
+lib/tor-browser/modules/devtools/gcli/commands/lang.js
+lib/tor-browser/modules/devtools/gcli/commands/listen.js
+lib/tor-browser/modules/devtools/gcli/commands/media.js
+lib/tor-browser/modules/devtools/gcli/commands/mocks.js
+lib/tor-browser/modules/devtools/gcli/commands/pagemod.js
+lib/tor-browser/modules/devtools/gcli/commands/paintflashing.js
+lib/tor-browser/modules/devtools/gcli/commands/pref.js
+lib/tor-browser/modules/devtools/gcli/commands/preflist.js
+lib/tor-browser/modules/devtools/gcli/commands/restart.js
+lib/tor-browser/modules/devtools/gcli/commands/screenshot.js
+lib/tor-browser/modules/devtools/gcli/commands/test.js
+lib/tor-browser/modules/devtools/gcli/commands/tools.js
+lib/tor-browser/modules/devtools/gcli/connectors/connectors.js
+lib/tor-browser/modules/devtools/gcli/connectors/index.js
+lib/tor-browser/modules/devtools/gcli/connectors/protocol.js
+lib/tor-browser/modules/devtools/gcli/connectors/rdp.js
+lib/tor-browser/modules/devtools/gcli/connectors/remoted.js
+lib/tor-browser/modules/devtools/gcli/converters/basic.js
+lib/tor-browser/modules/devtools/gcli/converters/converters.js
+lib/tor-browser/modules/devtools/gcli/converters/html.js
+lib/tor-browser/modules/devtools/gcli/converters/terminal.js
+lib/tor-browser/modules/devtools/gcli/fields/delegate.js
+lib/tor-browser/modules/devtools/gcli/fields/fields.js
+lib/tor-browser/modules/devtools/gcli/fields/selection.js
+lib/tor-browser/modules/devtools/gcli/index.js
+lib/tor-browser/modules/devtools/gcli/l10n.js
+lib/tor-browser/modules/devtools/gcli/languages/command.html
+lib/tor-browser/modules/devtools/gcli/languages/command.js
+lib/tor-browser/modules/devtools/gcli/languages/javascript.js
+lib/tor-browser/modules/devtools/gcli/languages/languages.js
+lib/tor-browser/modules/devtools/gcli/mozui/completer.js
+lib/tor-browser/modules/devtools/gcli/mozui/ffdisplay.js
+lib/tor-browser/modules/devtools/gcli/mozui/inputter.js
+lib/tor-browser/modules/devtools/gcli/mozui/tooltip.js
+lib/tor-browser/modules/devtools/gcli/settings.js
+lib/tor-browser/modules/devtools/gcli/types/array.js
+lib/tor-browser/modules/devtools/gcli/types/boolean.js
+lib/tor-browser/modules/devtools/gcli/types/command.js
+lib/tor-browser/modules/devtools/gcli/types/date.js
+lib/tor-browser/modules/devtools/gcli/types/delegate.js
+lib/tor-browser/modules/devtools/gcli/types/file.js
+lib/tor-browser/modules/devtools/gcli/types/fileparser.js
+lib/tor-browser/modules/devtools/gcli/types/javascript.js
+lib/tor-browser/modules/devtools/gcli/types/node.js
+lib/tor-browser/modules/devtools/gcli/types/number.js
+lib/tor-browser/modules/devtools/gcli/types/resource.js
+lib/tor-browser/modules/devtools/gcli/types/selection.js
+lib/tor-browser/modules/devtools/gcli/types/setting.js
+lib/tor-browser/modules/devtools/gcli/types/string.js
+lib/tor-browser/modules/devtools/gcli/types/types.js
+lib/tor-browser/modules/devtools/gcli/types/union.js
+lib/tor-browser/modules/devtools/gcli/types/url.js
+lib/tor-browser/modules/devtools/gcli/ui/focus.js
+lib/tor-browser/modules/devtools/gcli/ui/history.js
+lib/tor-browser/modules/devtools/gcli/ui/intro.js
+lib/tor-browser/modules/devtools/gcli/ui/menu.css
+lib/tor-browser/modules/devtools/gcli/ui/menu.html
+lib/tor-browser/modules/devtools/gcli/ui/menu.js
+lib/tor-browser/modules/devtools/gcli/ui/view.js
+lib/tor-browser/modules/devtools/gcli/util/domtemplate.js
+lib/tor-browser/modules/devtools/gcli/util/fileparser.js
+lib/tor-browser/modules/devtools/gcli/util/filesystem.js
+lib/tor-browser/modules/devtools/gcli/util/host.js
+lib/tor-browser/modules/devtools/gcli/util/l10n.js
+lib/tor-browser/modules/devtools/gcli/util/legacy.js
+lib/tor-browser/modules/devtools/gcli/util/prism.js
+lib/tor-browser/modules/devtools/gcli/util/promise.js
+lib/tor-browser/modules/devtools/gcli/util/spell.js
+lib/tor-browser/modules/devtools/gcli/util/util.js
+lib/tor-browser/modules/devtools/jsbeautify/beautify-css.js
+lib/tor-browser/modules/devtools/jsbeautify/beautify-html.js
+lib/tor-browser/modules/devtools/jsbeautify/beautify-js.js
+lib/tor-browser/modules/devtools/jsbeautify/beautify-tests.js
+lib/tor-browser/modules/devtools/jsbeautify/beautify.js
+lib/tor-browser/modules/devtools/jsbeautify/sanitytest.js
+lib/tor-browser/modules/devtools/jsbeautify/urlencode_unpacker.js
+lib/tor-browser/modules/devtools/output-parser.js
+lib/tor-browser/modules/devtools/path.js
+lib/tor-browser/modules/devtools/pretty-fast.js
+lib/tor-browser/modules/devtools/qrcode/decoder/index.js
+lib/tor-browser/modules/devtools/qrcode/encoder/index.js
+lib/tor-browser/modules/devtools/qrcode/index.js
+lib/tor-browser/modules/devtools/security/auth.js
+lib/tor-browser/modules/devtools/security/cert.js
+lib/tor-browser/modules/devtools/security/prompt.js
+lib/tor-browser/modules/devtools/security/socket.js
+lib/tor-browser/modules/devtools/server/actors/actor-registry.js
+lib/tor-browser/modules/devtools/server/actors/animation.js
+lib/tor-browser/modules/devtools/server/actors/call-watcher.js
+lib/tor-browser/modules/devtools/server/actors/canvas.js
+lib/tor-browser/modules/devtools/server/actors/child-process.js
+lib/tor-browser/modules/devtools/server/actors/childtab.js
+lib/tor-browser/modules/devtools/server/actors/common.js
+lib/tor-browser/modules/devtools/server/actors/csscoverage.js
+lib/tor-browser/modules/devtools/server/actors/device.js
+lib/tor-browser/modules/devtools/server/actors/director-manager.js
+lib/tor-browser/modules/devtools/server/actors/director-registry.js
+lib/tor-browser/modules/devtools/server/actors/eventlooplag.js
+lib/tor-browser/modules/devtools/server/actors/framerate.js
+lib/tor-browser/modules/devtools/server/actors/gcli.js
+lib/tor-browser/modules/devtools/server/actors/highlighter.css
+lib/tor-browser/modules/devtools/server/actors/highlighter.js
+lib/tor-browser/modules/devtools/server/actors/inspector.js
+lib/tor-browser/modules/devtools/server/actors/layout.js
+lib/tor-browser/modules/devtools/server/actors/memory.js
+lib/tor-browser/modules/devtools/server/actors/monitor.js
+lib/tor-browser/modules/devtools/server/actors/preference.js
+lib/tor-browser/modules/devtools/server/actors/pretty-print-worker.js
+lib/tor-browser/modules/devtools/server/actors/profiler.js
+lib/tor-browser/modules/devtools/server/actors/root.js
+lib/tor-browser/modules/devtools/server/actors/script.js
+lib/tor-browser/modules/devtools/server/actors/settings.js
+lib/tor-browser/modules/devtools/server/actors/storage.js
+lib/tor-browser/modules/devtools/server/actors/string.js
+lib/tor-browser/modules/devtools/server/actors/styleeditor.js
+lib/tor-browser/modules/devtools/server/actors/styles.js
+lib/tor-browser/modules/devtools/server/actors/stylesheets.js
+lib/tor-browser/modules/devtools/server/actors/timeline.js
+lib/tor-browser/modules/devtools/server/actors/tracer.js
+lib/tor-browser/modules/devtools/server/actors/utils/ScriptStore.js
+lib/tor-browser/modules/devtools/server/actors/utils/actor-registry-utils.js
+lib/tor-browser/modules/devtools/server/actors/utils/automation-timeline.js
+lib/tor-browser/modules/devtools/server/actors/utils/make-debugger.js
+lib/tor-browser/modules/devtools/server/actors/utils/map-uri-to-addon-id.js
+lib/tor-browser/modules/devtools/server/actors/utils/stack.js
+lib/tor-browser/modules/devtools/server/actors/webapps.js
+lib/tor-browser/modules/devtools/server/actors/webaudio.js
+lib/tor-browser/modules/devtools/server/actors/webbrowser.js
+lib/tor-browser/modules/devtools/server/actors/webconsole.js
+lib/tor-browser/modules/devtools/server/actors/webgl.js
+lib/tor-browser/modules/devtools/server/child.js
+lib/tor-browser/modules/devtools/server/content-globals.js
+lib/tor-browser/modules/devtools/server/main.js
+lib/tor-browser/modules/devtools/server/protocol.js
+lib/tor-browser/modules/devtools/shared/async-storage.js
+lib/tor-browser/modules/devtools/source-map.js
+lib/tor-browser/modules/devtools/styleinspector/css-logic.js
+lib/tor-browser/modules/devtools/tern/browser.js
+lib/tor-browser/modules/devtools/tern/comment.js
+lib/tor-browser/modules/devtools/tern/condense.js
+lib/tor-browser/modules/devtools/tern/def.js
+lib/tor-browser/modules/devtools/tern/ecma5.js
+lib/tor-browser/modules/devtools/tern/infer.js
+lib/tor-browser/modules/devtools/tern/signal.js
+lib/tor-browser/modules/devtools/tern/tern.js
+lib/tor-browser/modules/devtools/toolkit/webconsole/client.js
+lib/tor-browser/modules/devtools/toolkit/webconsole/network-helper.js
+lib/tor-browser/modules/devtools/toolkit/webconsole/network-monitor.js
+lib/tor-browser/modules/devtools/toolkit/webconsole/utils.js
+lib/tor-browser/modules/devtools/touch-events.js
+lib/tor-browser/modules/devtools/transport/packets.js
+lib/tor-browser/modules/devtools/transport/stream-utils.js
+lib/tor-browser/modules/devtools/transport/transport.js
+lib/tor-browser/modules/devtools/worker-loader.js
+lib/tor-browser/modules/identity/FirefoxAccounts.jsm
+lib/tor-browser/modules/identity/Identity.jsm
+lib/tor-browser/modules/identity/IdentityProvider.jsm
+lib/tor-browser/modules/identity/IdentityStore.jsm
+lib/tor-browser/modules/identity/IdentityUtils.jsm
+lib/tor-browser/modules/identity/LogUtils.jsm
+lib/tor-browser/modules/identity/MinimalIdentity.jsm
+lib/tor-browser/modules/identity/RelyingParty.jsm
+lib/tor-browser/modules/identity/Sandbox.jsm
+lib/tor-browser/modules/identity/jwcrypto.jsm
+lib/tor-browser/modules/jsdebugger.jsm
+lib/tor-browser/modules/mcc_iso3166_table.jsm
+lib/tor-browser/modules/media/IdpSandbox.jsm
+lib/tor-browser/modules/media/PeerConnectionIdp.jsm
+lib/tor-browser/modules/media/RTCStatsReport.jsm
+lib/tor-browser/modules/nsFormAutoCompleteResult.jsm
+lib/tor-browser/modules/osfile.jsm
+lib/tor-browser/modules/osfile/osfile_async_front.jsm
+lib/tor-browser/modules/osfile/osfile_async_worker.js
+lib/tor-browser/modules/osfile/osfile_native.jsm
+lib/tor-browser/modules/osfile/osfile_shared_allthreads.jsm
+lib/tor-browser/modules/osfile/osfile_shared_front.jsm
+lib/tor-browser/modules/osfile/osfile_unix_allthreads.jsm
+lib/tor-browser/modules/osfile/osfile_unix_back.jsm
+lib/tor-browser/modules/osfile/osfile_unix_front.jsm
+lib/tor-browser/modules/osfile/osfile_win_allthreads.jsm
+lib/tor-browser/modules/osfile/osfile_win_back.jsm
+lib/tor-browser/modules/osfile/osfile_win_front.jsm
+lib/tor-browser/modules/osfile/ospath.jsm
+lib/tor-browser/modules/osfile/ospath_unix.jsm
+lib/tor-browser/modules/osfile/ospath_win.jsm
+lib/tor-browser/modules/reader/JSDOMParser.js
+lib/tor-browser/modules/reader/Readability.js
+lib/tor-browser/modules/reader/ReaderWorker.js
+lib/tor-browser/modules/reader/ReaderWorker.jsm
+lib/tor-browser/modules/reflect.jsm
+lib/tor-browser/modules/sdk/bootstrap.js
+lib/tor-browser/modules/sdk/system/Startup.js
+lib/tor-browser/modules/services-common/async.js
+lib/tor-browser/modules/services-common/bagheeraclient.js
+lib/tor-browser/modules/services-common/hawkclient.js
+lib/tor-browser/modules/services-common/hawkrequest.js
+lib/tor-browser/modules/services-common/logmanager.js
+lib/tor-browser/modules/services-common/observers.js
+lib/tor-browser/modules/services-common/rest.js
+lib/tor-browser/modules/services-common/storageservice.js
+lib/tor-browser/modules/services-common/stringbundle.js
+lib/tor-browser/modules/services-common/tokenserverclient.js
+lib/tor-browser/modules/services-common/utils.js
+lib/tor-browser/modules/services-crypto/WeaveCrypto.js
+lib/tor-browser/modules/services-crypto/utils.js
+lib/tor-browser/modules/services-sync/FxaMigrator.jsm
+lib/tor-browser/modules/services-sync/addonsreconciler.js
+lib/tor-browser/modules/services-sync/addonutils.js
+lib/tor-browser/modules/services-sync/browserid_identity.js
+lib/tor-browser/modules/services-sync/constants.js
+lib/tor-browser/modules/services-sync/engines.js
+lib/tor-browser/modules/services-sync/engines/addons.js
+lib/tor-browser/modules/services-sync/engines/bookmarks.js
+lib/tor-browser/modules/services-sync/engines/clients.js
+lib/tor-browser/modules/services-sync/engines/forms.js
+lib/tor-browser/modules/services-sync/engines/history.js
+lib/tor-browser/modules/services-sync/engines/passwords.js
+lib/tor-browser/modules/services-sync/engines/prefs.js
+lib/tor-browser/modules/services-sync/engines/tabs.js
+lib/tor-browser/modules/services-sync/healthreport.jsm
+lib/tor-browser/modules/services-sync/identity.js
+lib/tor-browser/modules/services-sync/jpakeclient.js
+lib/tor-browser/modules/services-sync/keys.js
+lib/tor-browser/modules/services-sync/main.js
+lib/tor-browser/modules/services-sync/notifications.js
+lib/tor-browser/modules/services-sync/policies.js
+lib/tor-browser/modules/services-sync/record.js
+lib/tor-browser/modules/services-sync/resource.js
+lib/tor-browser/modules/services-sync/rest.js
+lib/tor-browser/modules/services-sync/service.js
+lib/tor-browser/modules/services-sync/stages/cluster.js
+lib/tor-browser/modules/services-sync/stages/declined.js
+lib/tor-browser/modules/services-sync/stages/enginesync.js
+lib/tor-browser/modules/services-sync/status.js
+lib/tor-browser/modules/services-sync/userapi.js
+lib/tor-browser/modules/services-sync/util.js
+lib/tor-browser/modules/services/datareporting/policy.jsm
+lib/tor-browser/modules/services/datareporting/sessions.jsm
+lib/tor-browser/modules/services/healthreport/healthreporter.jsm
+lib/tor-browser/modules/services/healthreport/profile.jsm
+lib/tor-browser/modules/services/healthreport/providers.jsm
+lib/tor-browser/modules/services/metrics/dataprovider.jsm
+lib/tor-browser/modules/services/metrics/providermanager.jsm
+lib/tor-browser/modules/services/metrics/storage.jsm
+lib/tor-browser/modules/sqlite/sqlite_internal.js
+lib/tor-browser/modules/vtt.jsm
+lib/tor-browser/modules/workers/PromiseWorker.js
+lib/tor-browser/modules/workers/lz4.js
+lib/tor-browser/modules/workers/lz4_internal.js
+lib/tor-browser/modules/workers/require.js
+lib/tor-browser/platform.ini
+lib/tor-browser/plugin-container
+lib/tor-browser/removed-files
+lib/tor-browser/res/EditorOverride.css
+lib/tor-browser/res/ImageDocument.css
+lib/tor-browser/res/TopLevelImageDocument.css
+lib/tor-browser/res/TopLevelVideoDocument.css
+lib/tor-browser/res/contenteditable.css
+lib/tor-browser/res/designmode.css
+lib/tor-browser/res/dtd/htmlmathml-f.ent
+lib/tor-browser/res/entityTables/html40Latin1.properties
+lib/tor-browser/res/entityTables/html40Special.properties
+lib/tor-browser/res/entityTables/html40Symbols.properties
+lib/tor-browser/res/entityTables/htmlEntityVersions.properties
+lib/tor-browser/res/entityTables/mathml20.properties
+lib/tor-browser/res/entityTables/transliterate.properties
+lib/tor-browser/res/fonts/mathfont.properties
+lib/tor-browser/res/fonts/mathfontMathJax_Main.properties
+lib/tor-browser/res/fonts/mathfontSTIXGeneral.properties
+lib/tor-browser/res/fonts/mathfontStandardSymbolsL.properties
+lib/tor-browser/res/fonts/mathfontUnicode.properties
+lib/tor-browser/res/grabber.gif
+lib/tor-browser/res/html/folder.png
+lib/tor-browser/res/language.properties
+lib/tor-browser/res/svg.css
+lib/tor-browser/res/table-add-column-after-active.gif
+lib/tor-browser/res/table-add-column-after-hover.gif
+lib/tor-browser/res/table-add-column-after.gif
+lib/tor-browser/res/table-add-column-before-active.gif
+lib/tor-browser/res/table-add-column-before-hover.gif
+lib/tor-browser/res/table-add-column-before.gif
+lib/tor-browser/res/table-add-row-after-active.gif
+lib/tor-browser/res/table-add-row-after-hover.gif
+lib/tor-browser/res/table-add-row-after.gif
+lib/tor-browser/res/table-add-row-before-active.gif
+lib/tor-browser/res/table-add-row-before-hover.gif
+lib/tor-browser/res/table-add-row-before.gif
+lib/tor-browser/res/table-remove-column-active.gif
+lib/tor-browser/res/table-remove-column-hover.gif
+lib/tor-browser/res/table-remove-column.gif
+lib/tor-browser/res/table-remove-row-active.gif
+lib/tor-browser/res/table-remove-row-hover.gif
+lib/tor-browser/res/table-remove-row.gif
+lib/tor-browser/run-mozilla.sh
+lib/tor-browser/webapprt-stub
+lib/tor-browser/webapprt/chrome.manifest
+lib/tor-browser/webapprt/chrome/chrome.manifest
+lib/tor-browser/webapprt/chrome/en-US/locale/webapprt/appstrings.properties
+lib/tor-browser/webapprt/chrome/en-US/locale/webapprt/dom.properties
+lib/tor-browser/webapprt/chrome/en-US/locale/webapprt/downloads/downloads.dtd
+lib/tor-browser/webapprt/chrome/en-US/locale/webapprt/getUserMediaDialog.dtd
+lib/tor-browser/webapprt/chrome/en-US/locale/webapprt/webapp.dtd
+lib/tor-browser/webapprt/chrome/en-US/locale/webapprt/webapp.properties
+lib/tor-browser/webapprt/chrome/webapprt/content/dbg-webapp-actors.js
+lib/tor-browser/webapprt/chrome/webapprt/content/downloads/download.xml
+lib/tor-browser/webapprt/chrome/webapprt/content/downloads/downloads.css
+lib/tor-browser/webapprt/chrome/webapprt/content/downloads/downloads.js
+lib/tor-browser/webapprt/chrome/webapprt/content/downloads/downloads.xul
+lib/tor-browser/webapprt/chrome/webapprt/content/getUserMediaDialog.js
+lib/tor-browser/webapprt/chrome/webapprt/content/getUserMediaDialog.xul
+lib/tor-browser/webapprt/chrome/webapprt/content/mochitest-shared.js
+lib/tor-browser/webapprt/chrome/webapprt/content/mochitest.js
+lib/tor-browser/webapprt/chrome/webapprt/content/mochitest.xul
+lib/tor-browser/webapprt/chrome/webapprt/content/webapp.js
+lib/tor-browser/webapprt/chrome/webapprt/content/webapp.xul
+lib/tor-browser/webapprt/chrome/webapprt/skin/classic/webapprt/downloads/downloadButtons.png
+lib/tor-browser/webapprt/chrome/webapprt/skin/classic/webapprt/downloads/downloadIcon.png
+lib/tor-browser/webapprt/chrome/webapprt/skin/classic/webapprt/downloads/downloads.css
+lib/tor-browser/webapprt/components/CommandLineHandler.js
+lib/tor-browser/webapprt/components/ContentPermission.js
+lib/tor-browser/webapprt/components/DirectoryProvider.js
+lib/tor-browser/webapprt/components/PaymentUIGlue.js
+lib/tor-browser/webapprt/components/components.manifest
+lib/tor-browser/webapprt/defaults/preferences/prefs.js
+lib/tor-browser/webapprt/modules/DownloadView.jsm
+lib/tor-browser/webapprt/modules/RemoteDebugger.jsm
+lib/tor-browser/webapprt/modules/Startup.jsm
+lib/tor-browser/webapprt/modules/WebRTCHandler.jsm
+lib/tor-browser/webapprt/modules/WebappManager.jsm
+lib/tor-browser/webapprt/modules/WebappRT.jsm
+lib/tor-browser/webapprt/webapprt.ini
+share/applications/tor-browser.desktop
+share/pixmaps/tor-browser.png
diff --git a/security/tor-browser/distinfo b/security/tor-browser/distinfo
new file mode 100644
index 00000000000..8eac1ac3a76
--- /dev/null
+++ b/security/tor-browser/distinfo
@@ -0,0 +1,172 @@
+$NetBSD: distinfo,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+SHA1 (tor-browser-38.6.1esr-5.5-1.tar.xz) = 6243bda76750790c6fb814f2b51f19edca6f61c6
+RMD160 (tor-browser-38.6.1esr-5.5-1.tar.xz) = d388fa267c8b715c934842c792a328e8b72d5e92
+SHA512 (tor-browser-38.6.1esr-5.5-1.tar.xz) = e83ef8fe33abc4d2b7312a837dbe4feaac59f21fa0b222371612da855443c60d59884b13a451ccf560d954876088f3919d356e45ec43317a5767abe163438fa5
+Size (tor-browser-38.6.1esr-5.5-1.tar.xz) = 150057228 bytes
+SHA1 (patch-aa) = e9e8400fa86ae8d6910b49e3a98127122e714f1a
+SHA1 (patch-accessible_atk_Platform.cpp) = c2deb81b300de44c4500328589185bbd4b6b02fb
+SHA1 (patch-al) = cca5df21d018bb9f428ad26d00718f33afe88ec5
+SHA1 (patch-ao) = d904b04bf6b216f02390aa3483c7ef8c5a1297dd
+SHA1 (patch-as) = 6630ac63a5b0169c47dbc91bdabf7602e3979a8a
+SHA1 (patch-b2g_installer_Makefile.in) = 95eb82774734db093c990919ba669d4666e55df0
+SHA1 (patch-b2g_installer_package-manifest.in) = cdb43eece164b43b49a9c0f1a47de4e7db56ed76
+SHA1 (patch-bf) = 75c971043e9f693203d6bd670b2c20c4952a7756
+SHA1 (patch-bg) = d6c02294765265d9e85cf49c22320d88573c2e25
+SHA1 (patch-browser_app_nsBrowserApp.cpp) = b7dd345b88dd03716f725c790364d06475aaf6bb
+SHA1 (patch-browser_installer_package-manifest.in) = aee56636fc83ea6441c5303ef0297971b41516d1
+SHA1 (patch-build_autoconf_compiler-opts.m4) = ccdc06a2b07b7664f9cb91bcc4fb29052dda8b07
+SHA1 (patch-build_autoconf_nss.m4) = 970fcd9aeede2347651c516d5211c4555dd28a4d
+SHA1 (patch-build_gyp.mozbuild) = 201715e30e20090e9a9ef54cb981d283c9aabf8f
+SHA1 (patch-build_pgo_profileserver.py) = 8666187258e47c037f2065a19a5b38946fdc0f6c
+SHA1 (patch-config_Makefile.in) = 0a072de112e0e5cc4b929a7094498fcf003e27b3
+SHA1 (patch-config_baseconfig.mk) = 07c295fbfbaeb969b336def32d8924729e332075
+SHA1 (patch-config_external_moz.build) = ee5fe1672333a7d71e61a23f3739ffefcca692d5
+SHA1 (patch-config_rules.mk) = d7f7060b246092eae3d7a792e43b14e462a37abd
+SHA1 (patch-config_stl__wrappers_ios) = 00d723e2f2f252485350ede5833f0bb84c1235c1
+SHA1 (patch-config_stl__wrappers_ostream) = 7be7fe36704ffbdc070a113b46b4f391a598206b
+SHA1 (patch-config_system-headers) = c9ac68ecbe1ce74e1aa62d792541955c31797f2d
+SHA1 (patch-dom_base_moz.build) = 8b59c33958b7037c4c051742c64f1455096ced46
+SHA1 (patch-dom_events_MessageEvent.h) = c7caec0955a7cff777ef84599fe9a6eec7c78a66
+SHA1 (patch-dom_media_AudioStream.h) = 96b5a1a2b1c930cfcfa77a125d47b6eb93fac1c6
+SHA1 (patch-dom_media_gstreamer_GStreamerAllocator.cpp) = 4685a646a76282619d7c42fac43500e0065f067d
+SHA1 (patch-dom_media_moz.build) = a89695c9557f59e00b42c60742f27a82de0f77fb
+SHA1 (patch-dom_plugins_ipc_PluginModuleChild.cpp) = 6219ce1b3f2893c1d53453fcb5568d081b72e106
+SHA1 (patch-dom_plugins_ipc_PluginModuleChild.h) = 0a7f3167e939822013ae6195406657453578453e
+SHA1 (patch-dom_plugins_ipc_PluginProcessChild.cpp) = 0d10aa4c913d431fb8fa5f995f6e40cb364f069e
+SHA1 (patch-dom_system_OSFileConstants.cpp) = 4fe5d4ecf6116c7163ee6d2322db8b1b783fe5ec
+SHA1 (patch-extensions_spellcheck_hunspell_src_mozHunspell.cpp) = 747354373bcaf2c76bdff71677f354d47837704b
+SHA1 (patch-gfx_graphite2_src_Bidi.cpp) = 5e80b4a32a47ae44d237fec69ea87bdd612a76ce
+SHA1 (patch-gfx_graphite2_src_moz.build) = 1715ac0814dce4004454013b9675517152726a7a
+SHA1 (patch-gfx_moz.build) = a98bda4727538f4a0f09a20b84f9dd883edaf7d9
+SHA1 (patch-gfx_skia_generate__mozbuild.py) = e0bf45842ae74f896678b1c29d97606165cf5914
+SHA1 (patch-gfx_skia_moz.build) = ce83717ec6e386d52af75a0f5592fa866b83b3bc
+SHA1 (patch-gfx_thebes_moz.build) = fa468f388322819bfa87681bf0a443fbd16568d1
+SHA1 (patch-gfx_ycbcr_moz.build) = 121386ef62ff7425e6f93bc624555199f2ac3485
+SHA1 (patch-gfx_ycbcr_yuv__row__arm.S) = f9909ded72762b2c3547dd002707db43745f2b9d
+SHA1 (patch-image_decoders_nsJPEGDecoder.cpp) = ec12085f52b3614bc67b797c3a6b36ab5daee9ea
+SHA1 (patch-intl_hyphenation_hnjalloc.h) = 5b5ac622ed2dd8711f00be0af59c95ebc86a8a78
+SHA1 (patch-intl_unicharutil_util_moz.build) = 1e8eb1f6e66ed80a1689e2205a7d04efe5243d5b
+SHA1 (patch-ipc_chromium_Makefile.in) = edd85b79cd3879f7595b932442bb0e93505d5506
+SHA1 (patch-ipc_chromium_moz.build) = de12255865e45cfdf0f7dc57ce101be75ac8ad54
+SHA1 (patch-ipc_chromium_src_base_atomicops.h) = 24b63a6e51d9ab27f2788ee02f2ffa7e1c36f29a
+SHA1 (patch-ipc_chromium_src_base_file__util.h) = 9d6d074b1692c6b4e722bfac8d67c66040a6fa76
+SHA1 (patch-ipc_chromium_src_base_file__util__posix.cc) = 18096b89ac3f239a0eb7c1d9c5080c1ac2c73e1b
+SHA1 (patch-ipc_chromium_src_base_message__loop.cc) = 16158489773bbcba35e224d30bebace0c93599ae
+SHA1 (patch-ipc_chromium_src_base_platform__thread.h) = e6d7ac39a8b2a1b232638f7671e8530acfed0b97
+SHA1 (patch-ipc_chromium_src_base_platform__thread__posix.cc) = ff1371ffb84abf2d2adcf25e66502943992d5109
+SHA1 (patch-ipc_chromium_src_base_process__util.h) = 4b24c3467866a601d68bb83f44e5fd38fb27188d
+SHA1 (patch-ipc_chromium_src_base_process__util__bsd.cc) = efe1c242efded89b7a69a83429bc30843f330367
+SHA1 (patch-ipc_chromium_src_base_process__util__posix.cc) = 6b2611cc902f17e726aabcf4fb5fff2c71852408
+SHA1 (patch-ipc_chromium_src_base_scoped__nsautorelease__pool.h) = 8c61a35e99e7f54e4b2bf5931c59eb2b7a04127a
+SHA1 (patch-ipc_chromium_src_base_sys__info__posix.cc) = 27890c56194e483fc0758ed767ca5795cc5112eb
+SHA1 (patch-ipc_chromium_src_base_time__posix.cc) = 337a0b4a5d51d68c7699b79c7591b953ea23ca67
+SHA1 (patch-ipc_chromium_src_build_build__config.h) = af5a10df7d8fe9715f0e43cd6be14f8f20c53517
+SHA1 (patch-ipc_chromium_src_chrome_common_transport__dib.h) = 7af18973c005d7b144a225bacf41833e059cb400
+SHA1 (patch-ipc_glue_GeckoChildProcessHost.cpp) = 45f2f22b4f567ffddd4458f635179b5201e87e64
+SHA1 (patch-ipc_glue_ScopedXREEmbed.cpp) = 97c39f25527dac4c22b38ce446ca2cd4cef08fd0
+SHA1 (patch-ipc_glue_StringUtil.cpp) = f238adebb5bdf57f7109a781c6f3fb195763f3c0
+SHA1 (patch-ipc_glue_moz.build) = 2682ca9de9606e50602a124e287dded2b9f2859b
+SHA1 (patch-ipc_ipdl_ipdl_cxx_ast.py) = 047b7012dffdcfc2b07d2d249fb3523e7d4643f8
+SHA1 (patch-ipc_ipdl_ipdl_cxx_cgen.py) = d7f7dc85b1ff26c6d7e902f94c0ac09f04497105
+SHA1 (patch-ipc_ipdl_ipdl_lower.py) = 2ef9504e462d0e3db16f9b0a6303ea5971b9c2a2
+SHA1 (patch-js__src__vm__SPSProfiler.cpp) = 989ba25e4c5308d21d07baa802decce13609a475
+SHA1 (patch-js_public_CallArgs.h) = fde9a73b8a694c4c7415848aa25e14ccefe547dd
+SHA1 (patch-js_src_Makefile.in) = 77d2e7cb651b9f30ebf6458fd07678416cdecbcc
+SHA1 (patch-js_src_asmjs_AsmJSSignalHandlers.cpp) = 976cc3099901d36a70cca4333fca13d5b8885b26
+SHA1 (patch-js_src_ctypes_CTypes.h) = 768a084239f92a424c1c7dc9eaaf9be9456ca9f0
+SHA1 (patch-js_src_frontend_ParseMaps.cpp) = c00117d79b78904bc50a1d664a8fc0e4e339bfbc
+SHA1 (patch-js_src_gc_Statistics.cpp) = 227d047f5befeff2a619e8bec9e98d69a78adf5c
+SHA1 (patch-js_src_jit-LIR.cpp) = 6c9b3bb9f2c41f7b101c49375c51418912620a15
+SHA1 (patch-js_src_jit_ExecutableAllocator.h) = c2389a7e6521905941270246adf155834703d8a0
+SHA1 (patch-js_src_jit_MIR.cpp) = d04ce1c7a55d8e1871472e1078cf591c8ea98588
+SHA1 (patch-js_src_jit_arm_Architecture-arm.cpp) = ea58f199dbc11d7fcc04bbc1205d6ecf3a3ac3e0
+SHA1 (patch-js_src_jsapi.cpp) = 97aaa4eea1254b675cbfd9cfae92dd614a717f49
+SHA1 (patch-js_src_jsdate.cpp) = 0e577aefa24693c7941ead0365c58b2b4b41dc8c
+SHA1 (patch-js_src_jskwgen.cpp) = 34d3b92e13366d4b43ff755ad54f392c116d5c59
+SHA1 (patch-js_src_jsmath.cpp) = 7d4993ae91e9b5e6820358165603819aefb586f9
+SHA1 (patch-js_src_shell_jsoptparse.cpp) = 178415aa652ccbd5278629b5154d20c4d7bfffd0
+SHA1 (patch-js_xpconnect_src_XPCConvert.cpp) = 915777e9bb5366be41866cdb6ea0ad2b1c006dde
+SHA1 (patch-js_xpconnect_src_xpcprivate.h) = 8a15ff542c9d3fce448d9ec63706f7dfb411d926
+SHA1 (patch-media_libcubeb_AUTHORS) = 3db32086f98c2bbe16e9394bb5121d7a95cdb4af
+SHA1 (patch-media_libcubeb_src_cubeb.c) = effe8771e42adddb478ecb302352ef003bdd01db
+SHA1 (patch-media_libcubeb_src_cubeb__alsa.c) = f8ab0c958e00b2ae52ac73ebcad5bf8a9fe2f2d1
+SHA1 (patch-media_libcubeb_src_cubeb__oss.c) = 54e2a210411c7083bc395033fbf519d581bc4a62
+SHA1 (patch-media_libcubeb_src_moz.build) = a793f0dd1bd90d9a9a967dbef8da1183cd909b7c
+SHA1 (patch-media_libpng_pngpriv.h) = c9cefd1b5dd85fbd0c875c3f9bc108975398fe3a
+SHA1 (patch-media_libsoundtouch_src_cpu__detect__x86.cpp) = db61737afa7773e8cbd82976de3a02c917174696
+SHA1 (patch-media_libstagefright_frameworks_av_media_libstagefright_foundation_AString.cpp) = b7c21a68f09176100794148aa75eb19829417fed
+SHA1 (patch-media_libstagefright_system_core_liblog_fake__log__device.c) = b59809a7292d41bdb352bc425dc46273f1c0c270
+SHA1 (patch-media_libstagefright_system_core_liblog_logprint.c) = 56c5590b57caf568e12f8ff7df07daec281855de
+SHA1 (patch-media_libtheora_lib_arm_armcpu.c) = 4b215277f9c81154377d401166023c1bf78a3718
+SHA1 (patch-media_libtheora_lib_info.c) = cb7628134427aaa4d5824c0e0770c30e5111a933
+SHA1 (patch-media_libtheora_moz.build) = 69476f02c0d79929b1d92719706ac68ffd102826
+SHA1 (patch-media_libtremor_Makefile.in) = 497d03646caa721bdd129de365aadea8466043af
+SHA1 (patch-media_libtremor_moz.build) = 994b04e4c344a91c4b474a752ddc4ca0e2732910
+SHA1 (patch-media_libvorbis_Makefile.in) = fd1ce15268eed9c97dd0774398d559cdbed63e53
+SHA1 (patch-media_libvorbis_lib_vorbis_info.c) = 1d85195a5553202b0c38dc8dec6db1f4f0513e5f
+SHA1 (patch-media_libvorbis_moz.build) = 927f7848305eb2341c9efa96800d30b4a1b8eaa4
+SHA1 (patch-media_libyuv_include_libyuv_scale__row.h) = 503b6f2065e9d548a1f01f7158d65874f4886c78
+SHA1 (patch-media_mtransport_third__party_nICEr_src_util_mbslen.c) = 087e8788c72b96d2059ca82ce4282d78aed546da
+SHA1 (patch-media_mtransport_third__party_nrappkit_src_port_generic_include_sys_queue.h) = de7055f891387f96f8fd32366c7189d480354e9e
+SHA1 (patch-media_webrtc_signaling_test_moz.build) = 2de45866c1c41f8a186586264fad3be90e30ba3b
+SHA1 (patch-media_webrtc_trunk_webrtc_build_common.gypi) = 4ff5796e15d9aa6adb8495d6f2e5a7f0445a0fac
+SHA1 (patch-media_webrtc_trunk_webrtc_modules_audio__coding_codecs_opus_opus.gypi) = e47f1c64c0455f1b31011bf90346645a4ce38e52
+SHA1 (patch-media_webrtc_trunk_webrtc_modules_audio__coding_neteq_neteq.gypi) = 54c05a12758c377b0f80143048280a7738e7038d
+SHA1 (patch-media_webrtc_trunk_webrtc_modules_desktop__capture_screen__capturer.cc) = 53481a80b410afe962146f08eafe8ff38ac6a241
+SHA1 (patch-media_webrtc_trunk_webrtc_modules_desktop__capture_screen__capturer.h) = b972e59204760eb885a9a0432ec977f604208a53
+SHA1 (patch-media_webrtc_trunk_webrtc_modules_video__capture_linux_device__info__linux.cc) = 9ff1dcf200feaf67bf576f07beb612e0ec91d7d1
+SHA1 (patch-media_webrtc_trunk_webrtc_modules_video__capture_linux_video__capture__linux.cc) = ffc1d956e826a0005b76285596ba24a2f4a3806c
+SHA1 (patch-media_webrtc_trunk_webrtc_modules_video__capture_video__capture.gypi) = 4a293e0d788a3a3acfbbf4cf19a6f9a7235b83d0
+SHA1 (patch-media_webrtc_trunk_webrtc_system__wrappers_source_spreadsortlib_spreadsort.hpp) = c09f0d234f70d48403b3b12866647c4cbc752396
+SHA1 (patch-memory_build_mozjemalloc__compat.c) = e43a0f593a524db1b325e0b6141f2630d63b9a5c
+SHA1 (patch-memory_jemalloc_Makefile.in) = 772e996c8da254f952d0f3a0c9325a177c838543
+SHA1 (patch-memory_jemalloc_src_configure) = d1e27220b223266f7a7d362dca1621012f8d9d7f
+SHA1 (patch-memory_mozalloc_mozalloc__abort.cpp) = 44cb29dac1e8032c3f58149227bfe5ad94e8edb9
+SHA1 (patch-memory_volatile_VolatileBufferOSX.cpp) = ebea8a615443206376cb4264ed43b5c74e029b7d
+SHA1 (patch-mfbt_Alignment.h) = 9ebc9892fd11eba7105974979b54f4f8759b7749
+SHA1 (patch-mfbt_Attributes.h) = b3f54a35476e99ba3191ee99feafc86de21d8334
+SHA1 (patch-mfbt_Poison.cpp) = f502581db96b3e5eca25a9aa9035f436e9167503
+SHA1 (patch-mobile_android_installer_Makefile.in) = 3d6b7ea3fc6249f2f8ebc88f15f34495a0ef41d6
+SHA1 (patch-mobile_android_installer_package-manifest.in) = 5826a6585e76eecad46e8c8bf3a9c4ded61b5748
+SHA1 (patch-modules_libjar_nsZipArchive.cpp) = 6aff0f8ed42575d8ca36a524e12e9a1f7351004a
+SHA1 (patch-netwerk_base_nsNetUtil.h) = e80f40b048e4628876ceb1a5ca90f7b07862d9ab
+SHA1 (patch-netwerk_dns_moz.build) = 447ea9652f67cb5e48ea14a725c4cf45647eec6b
+SHA1 (patch-netwerk_protocol_http_Http2Session.cpp) = 40f4a64657ea2dd0ddc6434cafcd181763ac31b6
+SHA1 (patch-pb) = 97c9b2e4cefd524dc6ba825f71c3da2a761aa1f4
+SHA1 (patch-pc) = 8b2baa88f0983a2fef4f801cf6b1ae425f6c813a
+SHA1 (patch-rc) = affa634564e798184bbe50ba7c491d691a4a8994
+SHA1 (patch-security_manager_ssl_src_nsNSSComponent.cpp) = 28d216fb8dcb5968c1ff657578b4caf814c146ac
+SHA1 (patch-toolkit_components_osfile_modules_osfile__unix__back.jsm) = 6b926ccd793391ad7bd7101635f4b3eefe3db130
+SHA1 (patch-toolkit_components_osfile_modules_osfile__unix__front.jsm) = f5adba2137f2d7fd4d4a6a1e8ef8625866513890
+SHA1 (patch-toolkit_library_moz.build) = 625d78e64959f78a5d0b8148749bb43a0abcbcf7
+SHA1 (patch-toolkit_xre_nsAppRunner.cpp) = f335d64cb0e1d248fd2c41a167ee1874218e7db6
+SHA1 (patch-toolkit_xre_nsEmbedFunctions.cpp) = 6ee6fba04a3ecc6596f8aed67f752a1075901fa8
+SHA1 (patch-toolkit_xre_nsXREDirProvider.cpp) = 373b66e02f2afd731d3ef47cf654e5f6486c78b1
+SHA1 (patch-webapprt_moz.build) = 177468d5e12c49db1ad5376f0f3df34fa9df070c
+SHA1 (patch-widget_gtk_gtk2drawing.c) = dd63fd368a86aef1b9568ae625904ffd9542a874
+SHA1 (patch-widget_gtk_gtk3drawing.c) = 7224a3ef02ef98b6013ffeafcf6819c726bacbe6
+SHA1 (patch-widget_gtk_gtkdrawing.h) = ca582ba4f09c4a31600dcb630a7997ed5db7a7b4
+SHA1 (patch-widget_gtk_nsNativeThemeGTK.cpp) = 959ddb6501d2b3bff94ca3ff5fbdbfe8ce71879c
+SHA1 (patch-xpcom_base_nsStackWalk.cpp) = 8fb5eb1f1e548eda7151175d350eee9ec38b17b3
+SHA1 (patch-xpcom_base_nscore.h) = f4fe66cc9e714a2101a4d1287359d1c300574438
+SHA1 (patch-xpcom_build_PoisonIOInterposer.h) = b0a53ec580bf5c2277d19618c1240a447575ae68
+SHA1 (patch-xpcom_build_XPCOMInit.cpp) = 31a3e1b22b992d677a77d1e75ef52eb18d84abf7
+SHA1 (patch-xpcom_components_Module.h) = 7aebeb9550a4fec51c08cd678f101e836f594352
+SHA1 (patch-xpcom_glue_standalone_nsXPCOMGlue.cpp) = a6ef7f490d52037d2a72d3d52d834a182a29eccb
+SHA1 (patch-xpcom_io_nsAppFileLocationProvider.cpp) = 7d3648b5fd91a12dd61f71ae144462e36e6061db
+SHA1 (patch-xpcom_reflect_xptcall_md_unix_Makefile.in) = 1e4d71a06b34556fa9339f97b75a065539baa511
+SHA1 (patch-xpcom_reflect_xptcall_md_unix_moz.build) = 2e6fbc64d78a3f035c6f9db9fffd0f1097420b58
+SHA1 (patch-xpcom_reflect_xptcall_md_unix_xptcinvoke__arm__netbsd.cpp) = 493d1433ae72bbd0c65ab3f51de43fb864a6f58d
+SHA1 (patch-xpcom_reflect_xptcall_md_unix_xptcinvoke__asm__mips.S) = f310105510bb5fa6c6de122ebdebbfa18423d8d3
+SHA1 (patch-xpcom_reflect_xptcall_md_unix_xptcinvoke__asm__ppc__netbsd.s) = 8e367d4d0baf24714ee80449fc8d6849ff08ca1c
+SHA1 (patch-xpcom_reflect_xptcall_md_unix_xptcinvoke__gcc__x86__unix.cpp) = 8cb72e1bc9a38e3f123539d7bb2aca6793f2b574
+SHA1 (patch-xpcom_reflect_xptcall_md_unix_xptcinvoke__netbsd__m68k.cpp) = b6dc5d54eeaa908d914116429e61f4b65a6a5f8e
+SHA1 (patch-xpcom_reflect_xptcall_md_unix_xptcinvoke__ppc__netbsd.cpp) = 71a33723a557a6153405f6baec8404b25f841608
+SHA1 (patch-xpcom_reflect_xptcall_md_unix_xptcinvoke__sparc64__netbsd.cpp) = 0792c2c626d906e71c5183994cb32bf8cdb3e239
+SHA1 (patch-xpcom_reflect_xptcall_md_unix_xptcstubs__arm__netbsd.cpp) = 3a902eb9a23b3b5737f3c8cb5f96a5ad9a98a189
+SHA1 (patch-xpcom_reflect_xptcall_md_unix_xptcstubs__asm__mips.S) = 79a4686d368132aff804f217baa685b2e06bc396
+SHA1 (patch-xpcom_reflect_xptcall_md_unix_xptcstubs__asm__sparc64__netbsd.s) = 522bc237bc90d85c98b61a467a431fddd91d8c3c
+SHA1 (patch-xpcom_reflect_xptcall_md_unix_xptcstubs__gcc__x86__unix.cpp) = d246f0695eb43d43bfd5571297945a4b7a88f72c
+SHA1 (patch-xpcom_reflect_xptcall_md_unix_xptcstubs__netbsd__m68k.cpp) = 75db49c9cb6bf2993afba82b731d80389d866212
+SHA1 (patch-xulrunner_installer_Makefile.in) = 9d32ff87d0962c0406ed38de995c0350dd372e49
diff --git a/security/tor-browser/files/desktop.in b/security/tor-browser/files/desktop.in
new file mode 100644
index 00000000000..d72090e1aab
--- /dev/null
+++ b/security/tor-browser/files/desktop.in
@@ -0,0 +1,191 @@
+[Desktop Entry]
+Encoding=UTF-8
+Name=@MOZILLA_NAME@ Web Browser
+Name[am]=
+Name[ar]=
+Name[az]=@MOZILLA_NAME@ Veb Səyyahı
+Name[be]=
+Name[bg]=Интернет браузър @MOZILLA_NAME@
+Name[bn]=
+Name[bs]=@MOZILLA_NAME@ web preglednik
+Name[ca]=Navegador web @MOZILLA_NAME@
+Name[cs]=Prohlížeč WWW @MOZILLA_NAME@
+Name[cy]=Y Porwr Gwe @MOZILLA_NAME@
+Name[da]=@MOZILLA_NAME@ - internetsurfning
+Name[de]=@MOZILLA_NAME@ Webbrowser
+Name[el]=Περιηγητής Διαδικτύου @MOZILLA_NAME@
+Name[en_CA]=@MOZILLA_NAME@ Web Browser
+Name[en_GB]=@MOZILLA_NAME@ Web Browser
+Name[es]=Navegador Web @MOZILLA_NAME@
+Name[et]=@MOZILLA_NAME@ veebibrauser
+Name[eu]=@MOZILLA_NAME@ web arakatzailea
+Name[fi]=@MOZILLA_NAME@, WWW-selain
+Name[fr]=Navigateur Web @MOZILLA_NAME@
+Name[ga]=Brabhsálaí Lín @MOZILLA_NAME@
+Name[gu]=એપીફની વૅબ બ્રાઉઝર
+Name[he]=דפדפן @MOZILLA_NAME@
+Name[hi]=
+Name[hr]=@MOZILLA_NAME@ Web preglednik
+Name[hu]=@MOZILLA_NAME@ webböngésző
+Name[id]=Web Browser @MOZILLA_NAME@
+Name[it]=Browser web @MOZILLA_NAME@
+Name[ja]=@MOZILLA_NAME@ ウェブ・ブラウザ
+Name[ko]=@MOZILLA_NAME@ 웹 브라우저
+Name[li]=@MOZILLA_NAME@ Web Browser
+Name[lt]=@MOZILLA_NAME@ web naršyklė
+Name[mk]=@MOZILLA_NAME@ веб прелистувач
+Name[ml]=എപ്പിഫാനി വെബ്ബ് ബ്രൌസ‌ര്
+Name[mn]=@MOZILLA_NAME@ веб хөтөч
+Name[ms]=Pelungsur Web @MOZILLA_NAME@
+Name[nb]=@MOZILLA_NAME@ nettleser
+Name[nl]=@MOZILLA_NAME@ Webbrowser
+Name[nn]=@MOZILLA_NAME@ nettlesar
+Name[no]=@MOZILLA_NAME@ nettleser
+Name[pa]=ਏਪੀਫਾਨੀ ਵੈੱਬ ਬਰਾਊਜ਼ਰ
+Name[pl]=Przeglądarka WWW @MOZILLA_NAME@
+Name[pt]=Navegador Web @MOZILLA_NAME@
+Name[pt_BR]=Navegador Web @MOZILLA_NAME@
+Name[ro]=Navigatorul @MOZILLA_NAME@
+Name[ru]=Веб-браузер @MOZILLA_NAME@
+Name[sk]=
+Name[sl]=Spletni brskalnik @MOZILLA_NAME@
+Name[sq]=@MOZILLA_NAME@ - Shfletuesi Web
+Name[sr]=
+Name[sr@Latn]=Veb čitač Spoznaja
+Name[sv]=Webbläsaren @MOZILLA_NAME@
+Name[ta]=எபிபனி வலை உலாவி
+Name[tk]=@MOZILLA_NAME@ Web Ahtarçisi
+Name[tr]=@MOZILLA_NAME@ Web Tarayıcı
+Name[uk]=Переглядач web @MOZILLA_NAME@
+Name[vi]=Trình Duyệt Web @MOZILLA_NAME@
+Name[wa]=Betchteu waibe epiphany
+Name[zh_CN]=@MOZILLA_NAME@ Web 浏览器
+Name[zh_TW]=@MOZILLA_NAME@ 網頁瀏覽器
+GenericName=Web Browser
+GenericName[ar]=متصفّح الانترنت
+GenericName[az]=Veb Səyyahı
+GenericName[be]=Вандроўнік па павуціньню
+GenericName[bg]=Браузър
+GenericName[bn]=ওয়েব ব্রাউজার
+GenericName[bs]=Web preglednik
+GenericName[ca]=Navegador web
+GenericName[cs]=Prohlížeč WWW
+GenericName[cy]=Porwr Gwe
+GenericName[da]=Internetsurfning
+GenericName[de]=Webbrowser
+GenericName[el]=Περιηγητής Ιστοσελίδων
+GenericName[en_CA]=Web Browser
+GenericName[en_GB]=Web Browser
+GenericName[es]=Navegador web
+GenericName[et]=Veebilehitseja
+GenericName[eu]=Web arakatzailea
+GenericName[fi]=WWW-selain
+GenericName[fr]=Navigateur Web @MOZILLA_NAME@
+GenericName[ga]=Brabhsálaí Lín
+GenericName[gu]=વેબ બ્રાઉઝર
+GenericName[he]=דפדפן אינטרנט
+GenericName[hi]=वेब ब्राउज़र
+GenericName[hr]=Web preglednik
+GenericName[hu]=Webböngésző
+GenericName[id]=Browser Web
+GenericName[it]=Browser web
+GenericName[ja]=GNOME ウェブ・ブラウザ
+GenericName[ko]=웹 브라우저
+GenericName[li]=Wèb Browser
+GenericName[lt]=Web naršyklė
+GenericName[mk]=Веб прелистувач
+GenericName[mn]=Веб хөтөч
+GenericName[ms]=Pelungsur Web
+GenericName[nb]=Nettleser
+GenericName[nl]=Web-browser
+GenericName[nn]=Nettlesar
+GenericName[no]=Nettleser
+GenericName[pa]=ਵੈਬ ਬਰਾਊਜ਼
+GenericName[pl]=Przeglądarka WWW
+GenericName[pt]=Navegador Web
+GenericName[pt_BR]=Navegador Web
+GenericName[ro]=Navigator Internet
+GenericName[ru]=Веб-браузер
+GenericName[sk]=WWW prehliadač
+GenericName[sl]=Spletni brskalnik
+GenericName[sq]=Shfletuesi Web
+GenericName[sr]=Веб читач
+GenericName[sr@Latn]=Veb čitač
+GenericName[sv]=Webbläsare
+GenericName[ta]=வலை உலாவி
+GenericName[th]=เว็บบราวเซอร์
+GenericName[tk]=Web Ahtarçysy
+GenericName[tr]=Web Tarayıcı
+GenericName[uk]=Переглядач web-сторінок
+GenericName[vi]=Trình duyệt Web
+GenericName[wa]=Betchteu waibe
+GenericName[zh_CN]=Web 浏览器
+GenericName[zh_TW]=網頁瀏覽器
+Comment=Browse the web
+Comment[ar]=تصفح الانترنت
+Comment[az]=Vebi gəzin
+Comment[be]=Вандраваць па павуціньню
+Comment[bg]=Сърфиране в интернет
+Comment[bn]=ওয়েব ব্রাউজ করুন
+Comment[bs]=Pregledaj na internetu
+Comment[ca]=Navegueu per la web
+Comment[cs]=Prohlížet WWW
+Comment[cy]=Pori'r we
+Comment[da]=Surf på internettet
+Comment[de]=Im Web surfen
+Comment[el]=Περιήγηση στον παγκόσμιο ιστό
+Comment[en_CA]=Browse the web
+Comment[en_GB]=Browse the web
+Comment[es]=Navegar por la web
+Comment[et]=Sirvi veebi
+Comment[eu]=Arakatu web-a
+Comment[fi]=Selaa WWW:tä
+Comment[fr]=Naviguer sur Internet
+Comment[ga]=Brabhsáil an Líon
+Comment[gu]=વેબમાં શોધો
+Comment[he]=גלוש ברשת
+Comment[hi]=वेब ब्राउज़ करें
+Comment[hr]=Pregledaj Web
+Comment[hu]=A világháló böngészése
+Comment[id]=Jelajah web
+Comment[it]=Esplora il web
+Comment[ja]=ウェブを閲覧します
+Comment[ko]=웹을 돌아 다닙니다
+Comment[li]=Blajere op internet
+Comment[lt]=Naršyti internete
+Comment[mk]=Прелистувајте на веб
+Comment[ml]=വലക്കെട്ട് തിരയുക
+Comment[mn]=Веб броузе хийх
+Comment[ms]=Layari web
+Comment[nb]=Surf på nettet
+Comment[nl]=Websurfen
+Comment[nn]=Surf på nettet
+Comment[no]=Surf på nettet
+Comment[pa]=ਵੈਬ ਬਰਾਊਜ਼
+Comment[pl]=Przeglądanie stron WWW
+Comment[pt]=Navegar na web
+Comment[pt_BR]=Navegar na web
+Comment[ro]=Navigare Internet
+Comment[ru]=Веб-браузер
+Comment[sk]=Prehliadať internet
+Comment[sl]=Brskaj po spletu
+Comment[sq]=Eksploro web-in
+Comment[sr]=Прегледај веб
+Comment[sr@Latn]=Pregledaj veb
+Comment[sv]=Surfa på nätet
+Comment[ta]=வலையில் உலாவு
+Comment[th]=ใช้งานเว็บบราวเซอร์ @MOZILLA_NAME@
+Comment[tk]=Webi Ahtar
+Comment[tr]=Web'e Gözat
+Comment[uk]=Програма перегляду web-сторінок
+Comment[vi]=Duyệt web
+Comment[wa]=Naivyî avå les waibes
+Comment[zh_CN]=浏览 Web
+Comment[zh_TW]=瀏覽網頁
+Exec=@MOZILLA@ %u
+Icon=@FIREFOX_ICON@
+StartupNotify=false
+Terminal=false
+Type=Application
+Categories=Application;Network;
+MimeType=text/html;text/xml;application/xhtml+xml;application/vnd.mozilla.xul+xml;text/mml;
diff --git a/security/tor-browser/hacks.mk b/security/tor-browser/hacks.mk
new file mode 100644
index 00000000000..59ea344674a
--- /dev/null
+++ b/security/tor-browser/hacks.mk
@@ -0,0 +1,13 @@
+# $NetBSD: hacks.mk,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+.if !defined(XULRUNNER_HACKS_MK)
+XULRUNNER_HACKS_MK= defined
+
+.include "../../mk/bsd.fast.prefs.mk"
+.include "../../mk/compiler.mk"
+
+.if !empty(PKGSRC_COMPILER:Mclang)
+CXXFLAGS+= -Wno-return-type-c-linkage
+.endif
+
+.endif # XULRUNNER_HACKS_MK
diff --git a/security/tor-browser/options.mk b/security/tor-browser/options.mk
new file mode 100644
index 00000000000..a5819709ba0
--- /dev/null
+++ b/security/tor-browser/options.mk
@@ -0,0 +1,60 @@
+# $NetBSD: options.mk,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+PKG_OPTIONS_VAR= PKG_OPTIONS.tor-browser
+PKG_SUPPORTED_OPTIONS+= alsa debug debug-info mozilla-jemalloc pulseaudio
+PLIST_VARS+= debug
+
+.if ${OPSYS} == "Linux"
+PKG_SUGGESTED_OPTIONS+= alsa mozilla-jemalloc
+.else
+PKG_SUGGESTED_OPTIONS+= pulseaudio
+.endif
+
+.include "../../mk/bsd.options.mk"
+
+.if !empty(PKG_OPTIONS:Malsa)
+CONFIGURE_ARGS+= --enable-alsa
+.include "../../audio/alsa-lib/buildlink3.mk"
+.else
+CONFIGURE_ARGS+= --disable-alsa
+.endif
+
+.if !empty(PKG_OPTIONS:Mmozilla-jemalloc)
+PLIST.jemalloc= yes
+CONFIGURE_ARGS+= --enable-jemalloc
+.else
+CONFIGURE_ARGS+= --disable-jemalloc
+.endif
+
+.include "../../mk/compiler.mk"
+.if !empty(PKGSRC_COMPILER:Mgcc)
+.if ${CC_VERSION:S/gcc-//:S/.//g} >= 480
+# Modern gcc does not run any "tracking" passes when compiling with -O0,
+# which makes the generated debug info mostly useless. So explicitly
+# request them.
+O0TRACKING=-fvar-tracking-assignments -fvar-tracking
+.endif
+.endif
+
+.if !empty(PKG_OPTIONS:Mdebug)
+CONFIGURE_ARGS+= --enable-debug="-g -O0 ${O0TRACKING}" --enable-debug-symbols --disable-optimize
+CONFIGURE_ARGS+= --disable-install-strip
+PLIST.debug= yes
+.else
+.if !empty(PKG_OPTIONS:Mdebug-info)
+CONFIGURE_ARGS+= --enable-debug-symbols
+.else
+CONFIGURE_ARGS+= --disable-debug-symbols
+.endif
+CONFIGURE_ARGS+= --disable-debug
+CONFIGURE_ARGS+= --enable-optimize=-O2
+CONFIGURE_ARGS+= --enable-install-strip
+.endif
+
+.if !empty(PKG_OPTIONS:Mpulseaudio)
+.include "../../audio/pulseaudio/buildlink3.mk"
+CONFIGURE_ARGS+= --enable-pulseaudio
+.else
+CONFIGURE_ARGS+= --disable-pulseaudio
+.endif
+# XXX end
diff --git a/security/tor-browser/patches/patch-aa b/security/tor-browser/patches/patch-aa
new file mode 100644
index 00000000000..aa6709b3afe
--- /dev/null
+++ b/security/tor-browser/patches/patch-aa
@@ -0,0 +1,428 @@
+$NetBSD: patch-aa,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+* The profiler does not support Darwin/PPC so don't try to enable it
+ on that platform.
+
+* Cocoa gamepad backend can only be used if the toolkit is cocoa too.
+
+* The preprocessor macro XP_MACOSX is misused everywhere. They tend to
+ say "#if defined(XP_MACOSX)" to actually mean
+ "#if defined(MOZ_WIDGET_COCOA)". It's okay to equate XP_MACOSX with
+ XP_DARWIN but equating it with MOZ_WIDGET_COCOA is just wrong. As a
+ result, cairo-gtk2 build on Darwin is completely broken and needs
+ heavy patching. Ideally they should be fixed individually but that
+ will be an extremely hard work, so don't define XP_MACOSX for now.
+
+--- configure.in.orig 2015-05-04 00:43:23.000000000 +0000
++++ configure.in
+@@ -1794,7 +1794,13 @@ Linux)
+ MOZ_ENABLE_PROFILER_SPS=
+ esac
+ ;;
+-WINNT|Darwin) ;;
++WINNT|Darwin)
++ case "${CPU_ARCH}" in
++ x86 | x86_64) ;;
++ *)
++ MOZ_ENABLE_PROFILER_SPS=
++ esac
++ ;;
+ *)
+ MOZ_ENABLE_PROFILER_SPS=
+ ;;
+@@ -1898,7 +1904,7 @@ case "$host" in
+ ;;
+
+ *-darwin*)
+- HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX -DXP_MACOSX -DNO_X11"
++ HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX"
+ HOST_NSPR_MDCPUCFG='\"md/_darwin.cfg\"'
+ HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O3}"
+ ;;
+@@ -2022,7 +2028,6 @@ case "$target" in
+ AC_DEFINE(XP_DARWIN)
+ _PLATFORM_DEFAULT_TOOLKIT='cairo-uikit'
+ else
+- AC_DEFINE(XP_MACOSX)
+ AC_DEFINE(XP_DARWIN)
+ _PLATFORM_DEFAULT_TOOLKIT='cairo-cocoa'
+ # The ExceptionHandling framework is needed for Objective-C exception
+@@ -2641,8 +2646,7 @@ MOZ_CXX11
+
+ AC_LANG_C
+
+-dnl Check for .hidden assembler directive and visibility attribute.
+-dnl Borrowed from glibc configure.in
++dnl Setup default hidden visibility and wrapped system headers.
+ dnl ===============================================================
+ if test "$GNU_CC" -a "$OS_TARGET" != WINNT; then
+ AC_DEFINE(HAVE_VISIBILITY_HIDDEN_ATTRIBUTE)
+@@ -3663,6 +3667,14 @@ if test -n "$YASM"; then
+ _YASM_BUILD=` echo ${YASM_VERSION} | $AWK -F\. '{ print $4 }'`
+ fi
+
++if test -n "${LIBXUL_SDK_DIR}"; then
++ AC_MSG_WARN([pkgsrc: LIBXUL_SDK_DIR is set; assuming we want nss and nspr from xulrunner.])
++ NSPR_CFLAGS="-I${prefix}/include/xulrunner/unstable `pkg-config --cflags nspr`"
++ NSPR_LIBS="`pkg-config --libs nspr`"
++ NSS_CFLAGS="`pkg-config --cflags nss`"
++ NSS_LIBS="`pkg-config --libs nss`"
++fi
++
+ if test -z "$SKIP_LIBRARY_CHECKS"; then
+ dnl system JPEG support
+ dnl ========================================================
+@@ -3690,11 +3702,7 @@ if test "$MOZ_NATIVE_JPEG" = 1; then
+ #include <jpeglib.h> ],
+ [ #if JPEG_LIB_VERSION < $MOZJPEG
+ #error "Insufficient JPEG library version ($MOZJPEG required)."
+- #endif
+- #ifndef JCS_EXTENSIONS
+- #error "libjpeg-turbo JCS_EXTENSIONS required"
+- #endif
+- ],
++ #endif ],
+ MOZ_NATIVE_JPEG=1,
+ AC_MSG_ERROR([Insufficient JPEG library version for --with-system-jpeg]))
+ fi
+@@ -4392,6 +4400,10 @@ cairo-gonk)
+
+ esac
+
++if test "$MOZ_WIDGET_TOOLKIT" = "cocoa"; then
++ AC_DEFINE(XP_MACOSX)
++fi
++
+ AC_SUBST(MOZ_PDF_PRINTING)
+ if test "$MOZ_PDF_PRINTING"; then
+ PDF_SURFACE_FEATURE="#define CAIRO_HAS_PDF_SURFACE 1"
+@@ -4408,7 +4420,7 @@ fi
+
+ if test "$COMPILE_ENVIRONMENT"; then
+ if test "$MOZ_ENABLE_GTK3"; then
+- PKG_CHECK_MODULES(MOZ_GTK3, gtk+-3.0 >= $GTK3_VERSION gtk+-unix-print-3.0 glib-2.0 gobject-2.0 atk-bridge-2.0 $GDK_PACKAGES)
++ PKG_CHECK_MODULES(MOZ_GTK3, gtk+-3.0 >= $GTK3_VERSION gtk+-unix-print-3.0 glib-2.0 gobject-2.0 $GDK_PACKAGES)
+ MOZ_GTK3_CFLAGS="-I${_topsrcdir}/widget/gtk/compat-gtk3 $MOZ_GTK3_CFLAGS"
+ dnl Contrary to MOZ_GTK2_LIBS, MOZ_GTK3_LIBS needs to be literally added to TK_LIBS instead
+ dnl of a make reference because of how TK_LIBS is mangled in toolkit/library/moz.build
+@@ -5149,6 +5161,9 @@ if test -n "$MOZ_WEBRTC"; then
+ MOZ_VPX=1
+ MOZ_VPX_ERROR_CONCEALMENT=1
+
++ dnl with libv4l2 we can support more cameras
++ PKG_CHECK_MODULES(MOZ_LIBV4L2, libv4l2)
++
+ dnl enable once Signaling lands
+ MOZ_WEBRTC_SIGNALING=1
+ AC_DEFINE(MOZ_WEBRTC_SIGNALING)
+@@ -5252,6 +5267,157 @@ if test "${ac_cv_c_attribute_aligned}" !
+ fi
+
+ dnl ========================================================
++dnl Check for libogg
++dnl ========================================================
++
++MOZ_ARG_WITH_BOOL(system-ogg,
++[ --with-system-ogg Use system libogg (located with pkgconfig)],
++MOZ_NATIVE_OGG=1,
++MOZ_NATIVE_OGG=)
++
++if test -n "$MOZ_NATIVE_OGG"; then
++ PKG_CHECK_MODULES(MOZ_OGG, ogg >= 1.2.1)
++
++ _SAVE_LIBS=$LIBS
++ LIBS="$LIBS $MOZ_OGG_LIBS"
++ AC_CHECK_FUNC(ogg_set_mem_functions, [],
++ [AC_DEFINE(MOZ_OGG_NO_MEM_REPORTING)])
++ LIBS=$_SAVE_LIBS
++fi
++
++AC_SUBST(MOZ_NATIVE_OGG)
++
++dnl ========================================================
++dnl Check for libvorbis
++dnl ========================================================
++
++MOZ_ARG_WITH_BOOL(system-vorbis,
++[ --with-system-vorbis Use system libvorbis (located with pkgconfig)],
++MOZ_NATIVE_VORBIS=1,
++MOZ_NATIVE_VORBIS=)
++
++if test -n "$MOZ_NATIVE_VORBIS"; then
++ PKG_CHECK_MODULES(MOZ_VORBIS, vorbis vorbisenc >= 1.3.5)
++fi
++
++AC_SUBST(MOZ_NATIVE_VORBIS)
++
++dnl ========================================================
++dnl Check for integer-only libvorbis aka tremor
++dnl ========================================================
++
++MOZ_ARG_WITH_BOOL(system-tremor,
++[ --with-system-tremor Use system libtremor (located with pkgconfig)],
++MOZ_NATIVE_TREMOR=1,
++MOZ_NATIVE_TREMOR=)
++
++if test -n "$MOZ_NATIVE_TREMOR"; then
++ PKG_CHECK_MODULES(MOZ_TREMOR, vorbisidec >= 1.2.1)
++fi
++
++AC_SUBST(MOZ_NATIVE_TREMOR)
++
++dnl ========================================================
++dnl Check for libcelt
++dnl ========================================================
++
++MOZ_ARG_WITH_BOOL(system-celt,
++[ --with-system-celt Use system libcelt (located with pkgconfig)],
++MOZ_NATIVE_CELT=1,
++MOZ_NATIVE_CELT=)
++
++if test -n "$MOZ_NATIVE_CELT"; then
++ PKG_CHECK_MODULES(MOZ_CELT, celt)
++else
++ MOZ_CELT_CFLAGS='-I$(topsrcdir)/media/libopus'
++fi
++
++AC_SUBST(MOZ_NATIVE_CELT)
++
++dnl ========================================================
++dnl Check for libopus
++dnl ========================================================
++
++MOZ_ARG_WITH_BOOL(system-opus,
++[ --with-system-opus Use system libopus (located with pkgconfig)],
++MOZ_NATIVE_OPUS=1,
++MOZ_NATIVE_OPUS=)
++
++if test -n "$MOZ_NATIVE_OPUS"; then
++ PKG_CHECK_MODULES(MOZ_OPUS, opus >= 1.1)
++else
++ MOZ_OPUS_CFLAGS='-I$(topsrcdir)/media/libopus/include'
++fi
++
++AC_SUBST(MOZ_NATIVE_OPUS)
++
++dnl ========================================================
++dnl Check for libtheora
++dnl ========================================================
++
++MOZ_ARG_WITH_BOOL(system-theora,
++[ --with-system-theora Use system libtheora (located with pkgconfig)],
++MOZ_NATIVE_THEORA=1,
++MOZ_NATIVE_THEORA=)
++
++if test -n "$MOZ_NATIVE_THEORA"; then
++ PKG_CHECK_MODULES(MOZ_THEORA, theora >= 1.2)
++fi
++
++AC_SUBST(MOZ_NATIVE_THEORA)
++
++dnl ========================================================
++dnl Check for libspeex resampler
++dnl ========================================================
++
++MOZ_ARG_WITH_BOOL(system-speex,
++[ --with-system-speex Use system libspeex (located with pkgconfig)],
++MOZ_NATIVE_SPEEX=1,
++MOZ_NATIVE_SPEEX=)
++
++if test -n "$MOZ_NATIVE_SPEEX"; then
++ PKG_CHECK_MODULES(MOZ_SPEEX, speexdsp >= 1.2)
++fi
++
++AC_SUBST(MOZ_NATIVE_SPEEX)
++
++dnl ========================================================
++dnl Check for libsoundtouch
++dnl ========================================================
++
++MOZ_ARG_WITH_BOOL(system-soundtouch,
++[ --with-system-soundtouch Use system libsoundtouch (located with pkgconfig)],
++MOZ_NATIVE_SOUNDTOUCH=1,
++MOZ_NATIVE_SOUNDTOUCH=)
++
++if test -n "$MOZ_NATIVE_SOUNDTOUCH"; then
++ PKG_CHECK_MODULES(MOZ_SOUNDTOUCH, soundtouch >= 1.8.0)
++
++ AC_LANG_SAVE
++ AC_LANG_CPLUSPLUS
++ _SAVE_CXXFLAGS=$CXXFLAGS
++ CXXFLAGS="$CXXFLAGS $MOZ_SOUNDTOUCH_CFLAGS"
++ AC_CACHE_CHECK(for soundtouch sample type,
++ ac_cv_soundtouch_sample_type,
++ [AC_TRY_COMPILE([#include <SoundTouch.h>
++ #ifndef SOUNDTOUCH_INTEGER_SAMPLES
++ #error soundtouch expects float samples
++ #endif],
++ [],
++ [ac_cv_soundtouch_sample_type=short],
++ [ac_cv_soundtouch_sample_type=float])])
++ CXXFLAGS=$_SAVE_CXXFLAGS
++ AC_LANG_RESTORE
++
++ if test \( -n "$MOZ_SAMPLE_TYPE_S16" -a "$ac_cv_soundtouch_sample_type" != short \) \
++ -o \( -n "$MOZ_SAMPLE_TYPE_FLOAT32" -a "$ac_cv_soundtouch_sample_type" != float \) ; then
++ AC_MSG_ERROR([SoundTouch library is built with incompatible sample type. Either rebuild the library with/without --enable-integer-samples, chase default Mozilla sample type or remove --with-system-soundtouch.])
++ fi
++fi
++
++AC_SUBST(MOZ_NATIVE_SOUNDTOUCH)
++
++dnl ========================================================
+ dnl = Disable VP8 decoder support
+ dnl ========================================================
+ MOZ_ARG_DISABLE_BOOL(webm,
+@@ -5606,6 +5772,67 @@ fi
+ AC_SUBST(MOZ_WEBM_ENCODER)
+
+ dnl ==================================
++dnl = Check OSS availability
++dnl ==================================
++
++dnl If using Linux, Solaris or BSDs, ensure that OSS is available
++case "$OS_TARGET" in
++Linux|SunOS|DragonFly|FreeBSD|NetBSD|GNU/kFreeBSD)
++ MOZ_OSS=1
++ ;;
++esac
++
++MOZ_ARG_WITH_STRING(oss,
++[ --with-oss[=PFX] Enable OpenSoundSystem support [installed at prefix PFX]],
++ OSSPREFIX=$withval)
++
++if test -n "$OSSPREFIX"; then
++ if test "$OSSPREFIX" != "no"; then
++ MOZ_OSS=1
++ else
++ MOZ_OSS=
++ fi
++fi
++
++_SAVE_CFLAGS=$CFLAGS
++_SAVE_LIBS=$LIBS
++if test -n "$MOZ_OSS"; then
++ dnl Prefer 4Front implementation
++ AC_MSG_CHECKING([MOZ_OSS_CFLAGS])
++ if test "$OSSPREFIX" != "yes"; then
++ oss_conf=${OSSPREFIX%/usr}/etc/oss.conf
++ if test -f "$oss_conf"; then
++ . "$oss_conf"
++ else
++ OSSLIBDIR=$OSSPREFIX/lib/oss
++ fi
++ if test -d "$OSSLIBDIR"; then
++ MOZ_OSS_CFLAGS="$MOZ_OSS_CFLAGS -I$OSSLIBDIR/include"
++ fi
++ fi
++ AC_MSG_RESULT([$MOZ_OSS_CFLAGS])
++
++ CFLAGS="$CFLAGS $MOZ_OSS_CFLAGS"
++ MOZ_CHECK_HEADERS(sys/soundcard.h soundcard.h)
++
++ if test "$ac_cv_header_sys_soundcard_h" != "yes" -a \
++ "$ac_cv_header_soundcard_h" != "yes"; then
++ AC_MSG_ERROR([Need OSS for Ogg, Wave or WebM decoding on $OS_TARGET. Disable with --disable-ogg --disable-wave --disable-webm.])
++ fi
++
++ dnl Assume NetBSD implementation over SunAudio
++ AC_CHECK_LIB(ossaudio, _oss_ioctl,
++ [AC_DEFINE_UNQUOTED(CUBEB_OSS_DEFAULT_OUTPUT, "/dev/sound")
++ MOZ_OSS_LIBS="$MOZ_OSS_LIBS -lossaudio"])
++fi
++CFLAGS=$_SAVE_CFLAGS
++LIBS=$_SAVE_LIBS
++
++AC_SUBST(MOZ_OSS)
++AC_SUBST_LIST(MOZ_OSS_CFLAGS)
++AC_SUBST_LIST(MOZ_OSS_LIBS)
++
++dnl ==================================
+ dnl = Check alsa availability on Linux
+ dnl ==================================
+
+@@ -5619,12 +5846,23 @@ MOZ_ARG_ENABLE_BOOL(alsa,
+ MOZ_ALSA=1,
+ MOZ_ALSA=)
+
++MOZ_ARG_DISABLE_BOOL(alsa-dlopen,
++[ --disable-alsa-dlopen Disable runtime linking of libasound.so],
++ DISABLE_LIBASOUND_DLOPEN=1,
++ DISABLE_LIBASOUND_DLOPEN=)
++
+ if test -n "$MOZ_ALSA"; then
+ PKG_CHECK_MODULES(MOZ_ALSA, alsa, ,
+ [echo "$MOZ_ALSA_PKG_ERRORS"
+ AC_MSG_ERROR([Need alsa for audio output on Linux. (On Ubuntu, you might try installing the package libasound2-dev.)])])
+ fi
+
++if test -n "$DISABLE_LIBASOUND_DLOPEN"; then
++ AC_DEFINE(DISABLE_LIBASOUND_DLOPEN)
++else
++ MOZ_ALSA_LIBS=
++fi
++
+ AC_SUBST(MOZ_ALSA)
+
+ dnl ========================================================
+@@ -6046,7 +6284,9 @@ MOZ_ARG_DISABLE_BOOL(gamepad,
+ if test "$MOZ_GAMEPAD"; then
+ case "$OS_TARGET" in
+ Darwin)
+- MOZ_GAMEPAD_BACKEND=cocoa
++ if test "$MOZ_WIDGET_TOOLKIT" = "cocoa"; then
++ MOZ_GAMEPAD_BACKEND=cocoa
++ fi
+ ;;
+ WINNT)
+ MOZ_GAMEPAD_BACKEND=windows
+@@ -8066,6 +8306,49 @@ if test "$USE_FC_FREETYPE"; then
+ fi
+
+ dnl ========================================================
++dnl Check for harfbuzz
++dnl ========================================================
++
++MOZ_ARG_WITH_BOOL(system-harfbuzz,
++[ --with-system-harfbuzz Use system harfbuzz (located with pkgconfig)],
++MOZ_NATIVE_HARFBUZZ=1,
++MOZ_NATIVE_HARFBUZZ=)
++
++if test -n "$MOZ_NATIVE_HARFBUZZ"; then
++ PKG_CHECK_MODULES(MOZ_HARFBUZZ, harfbuzz >= 0.9.34)
++fi
++
++AC_SUBST(MOZ_NATIVE_HARFBUZZ)
++
++dnl ========================================================
++dnl Check for graphite2
++dnl ========================================================
++
++MOZ_ARG_WITH_BOOL(system-graphite2,
++[ --with-system-graphite2 Use system graphite2 (located with pkgconfig)],
++MOZ_NATIVE_GRAPHITE2=1,
++MOZ_NATIVE_GRAPHITE2=)
++
++if test -n "$MOZ_NATIVE_GRAPHITE2"; then
++ PKG_CHECK_MODULES(MOZ_GRAPHITE2, graphite2)
++
++ dnl graphite2.pc has bogus version, check manually
++ AC_TRY_COMPILE([ #include <graphite2/Font.h>
++ #define GR2_VERSION_REQUIRE(major,minor,bugfix) \
++ ( GR2_VERSION_MAJOR * 10000 + GR2_VERSION_MINOR \
++ * 100 + GR2_VERSION_BUGFIX >= \
++ (major) * 10000 + (minor) * 100 + (bugfix) )
++ ], [
++ #if !GR2_VERSION_REQUIRE(1,2,4)
++ #error "Insufficient graphite2 version."
++ #endif
++ ], [],
++ [AC_MSG_ERROR([--with-system-graphite2 requested but no working libgraphite2 found])])
++fi
++
++AC_SUBST(MOZ_NATIVE_GRAPHITE2)
++
++dnl ========================================================
+ dnl Check for pixman and cairo
+ dnl ========================================================
+
diff --git a/security/tor-browser/patches/patch-accessible_atk_Platform.cpp b/security/tor-browser/patches/patch-accessible_atk_Platform.cpp
new file mode 100644
index 00000000000..34f93a17ac1
--- /dev/null
+++ b/security/tor-browser/patches/patch-accessible_atk_Platform.cpp
@@ -0,0 +1,98 @@
+$NetBSD: patch-accessible_atk_Platform.cpp,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+--- accessible/atk/Platform.cpp.orig 2015-05-04 00:43:17.000000000 +0000
++++ accessible/atk/Platform.cpp
+@@ -18,8 +18,9 @@
+ #include <dbus/dbus.h>
+ #endif
+ #include <gtk/gtk.h>
++
+ #if (MOZ_WIDGET_GTK == 3)
+-#include <atk-bridge.h>
++extern "C" __attribute__((weak,visibility("default"))) int atk_bridge_adaptor_init(int*, char **[]);
+ #endif
+
+ using namespace mozilla;
+@@ -46,7 +47,6 @@ static gulong sToplevel_hide_hook = 0;
+
+ GType g_atk_hyperlink_impl_type = G_TYPE_INVALID;
+
+-#if (MOZ_WIDGET_GTK == 2)
+ struct GnomeAccessibilityModule
+ {
+ const char *libName;
+@@ -67,11 +67,13 @@ static GnomeAccessibilityModule sAtkBrid
+ "gnome_accessibility_module_shutdown", nullptr
+ };
+
++#if (MOZ_WIDGET_GTK == 2)
+ static GnomeAccessibilityModule sGail = {
+ "libgail.so", nullptr,
+ "gnome_accessibility_module_init", nullptr,
+ "gnome_accessibility_module_shutdown", nullptr
+ };
++#endif
+
+ static nsresult
+ LoadGtkModule(GnomeAccessibilityModule& aModule)
+@@ -98,7 +100,11 @@ LoadGtkModule(GnomeAccessibilityModule&
+ else
+ subLen = loc2 - loc1;
+ nsAutoCString sub(Substring(libPath, loc1, subLen));
++#if (MOZ_WIDGET_GTK == 2)
+ sub.AppendLiteral("/gtk-2.0/modules/");
++#else
++ sub.AppendLiteral("/gtk-3.0/modules/");
++#endif
+ sub.Append(aModule.libName);
+ aModule.lib = PR_LoadLibrary(sub.get());
+ if (aModule.lib)
+@@ -123,7 +129,6 @@ LoadGtkModule(GnomeAccessibilityModule&
+ }
+ return NS_OK;
+ }
+-#endif // (MOZ_WIDGET_GTK == 2)
+
+ void
+ a11y::PlatformInit()
+@@ -175,14 +180,17 @@ a11y::PlatformInit()
+
+ // Init atk-bridge now
+ PR_SetEnv("NO_AT_BRIDGE=0");
+-#if (MOZ_WIDGET_GTK == 2)
+- rv = LoadGtkModule(sAtkBridge);
+- if (NS_SUCCEEDED(rv)) {
+- (*sAtkBridge.init)();
+- }
+-#else
+- atk_bridge_adaptor_init(nullptr, nullptr);
++#if (MOZ_WIDGET_GTK == 3)
++ if (atk_bridge_adaptor_init) {
++ atk_bridge_adaptor_init(nullptr, nullptr);
++ } else
+ #endif
++ {
++ nsresult rv = LoadGtkModule(sAtkBridge);
++ if (NS_SUCCEEDED(rv)) {
++ (*sAtkBridge.init)();
++ }
++ }
+
+ if (!sToplevel_event_hook_added) {
+ sToplevel_event_hook_added = true;
+@@ -210,7 +218,6 @@ a11y::PlatformShutdown()
+ sToplevel_hide_hook);
+ }
+
+-#if (MOZ_WIDGET_GTK == 2)
+ if (sAtkBridge.lib) {
+ // Do not shutdown/unload atk-bridge,
+ // an exit function registered will take care of it
+@@ -221,6 +228,7 @@ a11y::PlatformShutdown()
+ sAtkBridge.init = nullptr;
+ sAtkBridge.shutdown = nullptr;
+ }
++#if (MOZ_WIDGET_GTK == 2)
+ if (sGail.lib) {
+ // Do not shutdown gail because
+ // 1) Maybe it's not init-ed by us. e.g. GtkEmbed
diff --git a/security/tor-browser/patches/patch-al b/security/tor-browser/patches/patch-al
new file mode 100644
index 00000000000..d61e026668f
--- /dev/null
+++ b/security/tor-browser/patches/patch-al
@@ -0,0 +1,16 @@
+$NetBSD: patch-al,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+--- storage/src/mozStorageConnection.cpp.orig 2014-04-18 02:04:20.000000000 +0000
++++ storage/src/mozStorageConnection.cpp
+@@ -584,6 +584,11 @@ Connection::initialize(nsIFile *aDatabas
+
+ mDatabaseFile = aDatabaseFile;
+
++ // XXX tnn: the configure script demands that sqlite3 is compiled with
++ // SECURE_DELETE on by default. sqlite3 in pkgsrc does not have that,
++ // so instead we enable secure_delete manually here.
++ (void)ExecuteSimpleSQL(NS_LITERAL_CSTRING("PRAGMA secure_delete = 1;"));
++
+ return NS_OK;
+ }
+
diff --git a/security/tor-browser/patches/patch-ao b/security/tor-browser/patches/patch-ao
new file mode 100644
index 00000000000..051d1e57167
--- /dev/null
+++ b/security/tor-browser/patches/patch-ao
@@ -0,0 +1,15 @@
+$NetBSD: patch-ao,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+--- toolkit/mozapps/installer/packager.mk.orig 2015-06-24 21:28:03.000000000 +0000
++++ toolkit/mozapps/installer/packager.mk
+@@ -122,8 +122,8 @@ endif
+ (cd $(DESTDIR)$(installdir) && tar -xf -)
+ $(NSINSTALL) -D $(DESTDIR)$(bindir)
+ $(RM) -f $(DESTDIR)$(bindir)/$(MOZ_APP_NAME)
+- ln -s $(installdir)/$(MOZ_APP_NAME) $(DESTDIR)$(bindir)
+-ifdef INSTALL_SDK # Here comes the hard part
++ ln -s $(installdir)/$(MOZ_APP_NAME) $(DESTDIR)$(bindir)/$(MOZILLA_PKG_NAME)
++ifeq ($(MOZ_APP_NAME),xulrunner)
+ $(NSINSTALL) -D $(DESTDIR)$(includedir)
+ (cd $(DIST)/include && $(TAR) $(TAR_CREATE_FLAGS) - .) | \
+ (cd $(DESTDIR)$(includedir) && tar -xf -)
diff --git a/security/tor-browser/patches/patch-as b/security/tor-browser/patches/patch-as
new file mode 100644
index 00000000000..40bf3fc4620
--- /dev/null
+++ b/security/tor-browser/patches/patch-as
@@ -0,0 +1,42 @@
+$NetBSD: patch-as,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+Treat DragonFly like FreeBSD.
+
+--- js/src/configure.in.orig 2015-01-23 05:59:58.000000000 +0000
++++ js/src/configure.in 2015-02-16 11:09:33.000000000 +0000
+@@ -2180,8 +2180,7 @@
+
+ MOZ_CXX11
+
+-dnl Check for .hidden assembler directive and visibility attribute.
+-dnl Borrowed from glibc configure.in
++dnl Setup default hidden visibility and wrapped system headers.
+ dnl ===============================================================
+ if test "$GNU_CC" -a "$OS_TARGET" != WINNT; then
+ AC_DEFINE(HAVE_VISIBILITY_HIDDEN_ATTRIBUTE)
+@@ -3095,7 +3094,7 @@
+ *-darwin*)
+ AC_DEFINE(MOZ_MEMORY_DARWIN)
+ ;;
+- *-*freebsd*)
++ *-*freebsd*|*-*dragonfly*)
+ AC_DEFINE(MOZ_MEMORY_BSD)
+ ;;
+ *-android*|*-linuxandroid*)
+@@ -3989,6 +3988,16 @@
+ dnl ========================================================
+ dnl JavaScript shell
+ dnl ========================================================
++ICU_LIB_NAMES=
++MOZ_NATIVE_ICU=
++MOZ_ARG_WITH_BOOL(system-icu,
++[ --with-system-icu
++ Use system icu (located with pkgconfig)],
++ MOZ_NATIVE_ICU=1)
++
++if test -n "$MOZ_NATIVE_ICU"; then
++ PKG_CHECK_MODULES(MOZ_ICU, icu-i18n >= 50.1)
++fi
+
+ MALLOC_HEADERS="malloc.h malloc_np.h malloc/malloc.h sys/malloc.h"
+ MALLOC_H=
diff --git a/security/tor-browser/patches/patch-b2g_installer_Makefile.in b/security/tor-browser/patches/patch-b2g_installer_Makefile.in
new file mode 100644
index 00000000000..ae0c3581941
--- /dev/null
+++ b/security/tor-browser/patches/patch-b2g_installer_Makefile.in
@@ -0,0 +1,15 @@
+$NetBSD: patch-b2g_installer_Makefile.in,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+--- b2g/installer/Makefile.in.orig 2015-02-17 21:40:34.000000000 +0000
++++ b2g/installer/Makefile.in
+@@ -79,6 +79,10 @@ ifneq (,$(filter rtsp,$(NECKO_PROTOCOLS)
+ DEFINES += -DMOZ_RTSP
+ endif
+
++ifdef MOZ_DEBUG
++DEFINES += -DMOZ_DEBUG=1
++endif
++
+ ifdef GKMEDIAS_SHARED_LIBRARY
+ DEFINES += -DGKMEDIAS_SHARED_LIBRARY
+ endif
diff --git a/security/tor-browser/patches/patch-b2g_installer_package-manifest.in b/security/tor-browser/patches/patch-b2g_installer_package-manifest.in
new file mode 100644
index 00000000000..d28a96e691e
--- /dev/null
+++ b/security/tor-browser/patches/patch-b2g_installer_package-manifest.in
@@ -0,0 +1,13 @@
+$NetBSD: patch-b2g_installer_package-manifest.in,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+--- b2g/installer/package-manifest.in.orig 2015-02-17 21:40:34.000000000 +0000
++++ b2g/installer/package-manifest.in
+@@ -609,7 +609,7 @@
+ @BINPATH@/components/EngineeringModeAPI.js
+ @BINPATH@/components/EngineeringModeService.js
+
+-#ifdef MOZ_DEBUG
++#if defined(ENABLE_TESTS) && defined(MOZ_DEBUG)
+ @BINPATH@/components/TestInterfaceJS.js
+ @BINPATH@/components/TestInterfaceJS.manifest
+ #endif
diff --git a/security/tor-browser/patches/patch-bf b/security/tor-browser/patches/patch-bf
new file mode 100644
index 00000000000..9196ef62cea
--- /dev/null
+++ b/security/tor-browser/patches/patch-bf
@@ -0,0 +1,13 @@
+$NetBSD: patch-bf,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+--- js/src/jsnativestack.cpp.orig 2013-09-10 03:43:36.000000000 +0000
++++ js/src/jsnativestack.cpp
+@@ -114,7 +114,7 @@ js::GetNativeStackBaseImpl()
+ pthread_attr_init(&sattr);
+ # if defined(__OpenBSD__)
+ stack_t ss;
+-# elif defined(PTHREAD_NP_H) || defined(_PTHREAD_NP_H_) || defined(NETBSD)
++# elif defined(PTHREAD_NP_H) || defined(_PTHREAD_NP_H_) || defined(__DragonFly__) || defined(NETBSD) || defined(__NetBSD__) /* XXX tnn not sure why NETBSD isn't defined, it looks like it should be ... */
+ /* e.g. on FreeBSD 4.8 or newer, neundorf@kde.org */
+ pthread_attr_get_np(thread, &sattr);
+ # else
diff --git a/security/tor-browser/patches/patch-bg b/security/tor-browser/patches/patch-bg
new file mode 100644
index 00000000000..174dec35ec4
--- /dev/null
+++ b/security/tor-browser/patches/patch-bg
@@ -0,0 +1,24 @@
+$NetBSD: patch-bg,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+--- storage/src/SQLiteMutex.h.orig 2013-10-25 22:27:40.000000000 +0000
++++ storage/src/SQLiteMutex.h
+@@ -108,15 +108,19 @@ public:
+ void assertCurrentThreadOwns()
+ {
+ NS_ASSERTION(mMutex, "No mutex associated with this wrapper!");
++#if 0
+ NS_ASSERTION(sqlite3_mutex_held(mMutex),
+ "Mutex is not held, but we expect it to be!");
++#endif
+ }
+
+ void assertNotCurrentThreadOwns()
+ {
+ NS_ASSERTION(mMutex, "No mutex associated with this wrapper!");
++#if 0
+ NS_ASSERTION(sqlite3_mutex_notheld(mMutex),
+ "Mutex is held, but we expect it to not be!");
++#endif
+ }
+ #endif // ifndef DEBUG
+
diff --git a/security/tor-browser/patches/patch-browser_app_nsBrowserApp.cpp b/security/tor-browser/patches/patch-browser_app_nsBrowserApp.cpp
new file mode 100644
index 00000000000..3d75eb8fac4
--- /dev/null
+++ b/security/tor-browser/patches/patch-browser_app_nsBrowserApp.cpp
@@ -0,0 +1,36 @@
+$NetBSD: patch-browser_app_nsBrowserApp.cpp,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+* Replace XP_MACOSX with XP_DARWIN as the former is not defined when
+ the toolkit is not cocoa.
+
+--- browser/app/nsBrowserApp.cpp.orig 2015-05-04 00:43:18.000000000 +0000
++++ browser/app/nsBrowserApp.cpp
+@@ -18,8 +18,10 @@
+ #include <unistd.h>
+ #endif
+
+-#ifdef XP_MACOSX
++#ifdef XP_DARWIN
+ #include <mach/mach_time.h>
++#endif
++#ifdef MOZ_WIDGET_COCOA
+ #include "MacQuirks.h"
+ #endif
+
+@@ -459,7 +461,7 @@ TimeStamp_Now()
+ }
+
+ return sGetTickCount64() * freq.QuadPart;
+-#elif defined(XP_MACOSX)
++#elif defined(XP_DARWIN)
+ return mach_absolute_time();
+ #elif defined(HAVE_CLOCK_MONOTONIC)
+ struct timespec ts;
+@@ -606,6 +608,7 @@ int main(int argc, char* argv[])
+ TriggerQuirks();
+ #endif
+
++ setenv("MOZ_PLUGIN_PATH", "%%LOCALBASE%%/lib/browser_plugins/symlinks/gecko", 0);
+ int gotCounters;
+ #if defined(XP_UNIX)
+ struct rusage initialRUsage;
diff --git a/security/tor-browser/patches/patch-browser_installer_package-manifest.in b/security/tor-browser/patches/patch-browser_installer_package-manifest.in
new file mode 100644
index 00000000000..0b339354873
--- /dev/null
+++ b/security/tor-browser/patches/patch-browser_installer_package-manifest.in
@@ -0,0 +1,24 @@
+$NetBSD: patch-browser_installer_package-manifest.in,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+Limit SPARC bits to just SPARC (untested, but fixes x86).
+
+--- browser/installer/package-manifest.in.orig 2015-02-17 21:40:38.000000000 +0000
++++ browser/installer/package-manifest.in
+@@ -609,7 +609,7 @@
+ @RESPATH@/components/MozKeyboard.js
+ @RESPATH@/components/InputMethod.manifest
+
+-#ifdef MOZ_DEBUG
++#if defined(ENABLE_TESTS) && defined(MOZ_DEBUG)
+ @RESPATH@/components/TestInterfaceJS.js
+ @RESPATH@/components/TestInterfaceJS.manifest
+ #endif
+@@ -788,7 +788,7 @@
+ #endif
+
+ ; for Solaris SPARC
+-#ifdef SOLARIS
++#if defined(SOLARIS) && defined(SPARC)
+ bin/libfreebl_32fpu_3.so
+ bin/libfreebl_32int_3.so
+ bin/libfreebl_32int64_3.so
diff --git a/security/tor-browser/patches/patch-build_autoconf_compiler-opts.m4 b/security/tor-browser/patches/patch-build_autoconf_compiler-opts.m4
new file mode 100644
index 00000000000..32fc1ee230b
--- /dev/null
+++ b/security/tor-browser/patches/patch-build_autoconf_compiler-opts.m4
@@ -0,0 +1,22 @@
+$NetBSD: patch-build_autoconf_compiler-opts.m4,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+It's true Clang is required if we use the cocoa toolkit, but we don't
+do that anyway. GCC is perfectly working as long as we use cairo-gtk2.
+
+--- build/autoconf/compiler-opts.m4.orig 2014-05-06 22:55:14.000000000 +0000
++++ build/autoconf/compiler-opts.m4
+@@ -53,14 +53,6 @@ case "$target" in
+ if test -z "$CXX"; then
+ MOZ_PATH_PROGS(CXX, clang++)
+ fi
+- IS_GCC=$($CC -v 2>&1 | grep gcc)
+- if test -n "$IS_GCC"
+- then
+- echo gcc is known to be broken on OS X, please use clang.
+- echo see http://developer.mozilla.org/en-US/docs/Developer_Guide/Build_Instructions/Mac_OS_X_Prerequisites
+- echo for more information.
+- exit 1
+- fi
+ ;;
+ esac
+ fi
diff --git a/security/tor-browser/patches/patch-build_autoconf_nss.m4 b/security/tor-browser/patches/patch-build_autoconf_nss.m4
new file mode 100644
index 00000000000..79c149dd65f
--- /dev/null
+++ b/security/tor-browser/patches/patch-build_autoconf_nss.m4
@@ -0,0 +1,46 @@
+$NetBSD: patch-build_autoconf_nss.m4,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+--- build/autoconf/nss.m4.orig 2015-04-29 21:11:43.000000000 +0000
++++ build/autoconf/nss.m4
+@@ -22,18 +22,18 @@ AC_ARG_WITH(nss-exec-prefix,
+ if test -n "$nss_config_exec_prefix"; then
+ nss_config_args="$nss_config_args --exec-prefix=$nss_config_exec_prefix"
+ if test -z "$NSS_CONFIG"; then
+- NSS_CONFIG=$nss_config_exec_prefix/bin/nss-config
++ NSS_CONFIG=$nss_config_exec_prefix/bin/pkg-config
+ fi
+ fi
+ if test -n "$nss_config_prefix"; then
+ nss_config_args="$nss_config_args --prefix=$nss_config_prefix"
+ if test -z "$NSS_CONFIG"; then
+- NSS_CONFIG=$nss_config_prefix/bin/nss-config
++ NSS_CONFIG=$nss_config_prefix/bin/pkg-config
+ fi
+ fi
+
+ unset ac_cv_path_NSS_CONFIG
+- AC_PATH_PROG(NSS_CONFIG, nss-config, no)
++ AC_PATH_PROG(NSS_CONFIG, pkg-config, no)
+ min_nss_version=ifelse([$1], ,3.0.0,$1)
+ AC_MSG_CHECKING(for NSS - version >= $min_nss_version)
+
+@@ -41,14 +41,14 @@ AC_ARG_WITH(nss-exec-prefix,
+ if test "$NSS_CONFIG" = "no"; then
+ no_nss="yes"
+ else
+- NSS_CFLAGS=`$NSS_CONFIG $nss_config_args --cflags`
+- NSS_LIBS=`$NSS_CONFIG $nss_config_args --libs`
++ NSS_CFLAGS=`$NSS_CONFIG $nss_config_args nss --cflags`
++ NSS_LIBS=`$NSS_CONFIG $nss_config_args nss --libs`
+
+- nss_config_major_version=`$NSS_CONFIG $nss_config_args --version | \
++ nss_config_major_version=`$NSS_CONFIG $nss_config_args nss --modversion | \
+ sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\(\.\([[0-9]]*\)\)\{0,1\}/\1/'`
+- nss_config_minor_version=`$NSS_CONFIG $nss_config_args --version | \
++ nss_config_minor_version=`$NSS_CONFIG $nss_config_args nss --modversion | \
+ sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\(\.\([[0-9]]*\)\)\{0,1\}/\2/'`
+- nss_config_micro_version=`$NSS_CONFIG $nss_config_args --version | \
++ nss_config_micro_version=`$NSS_CONFIG $nss_config_args nss --modversion | \
+ sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\(\.\([[0-9]]*\)\)\{0,1\}/\4/'`
+ if test -z "$nss_config_micro_version"; then
+ nss_config_micro_version="0"
diff --git a/security/tor-browser/patches/patch-build_gyp.mozbuild b/security/tor-browser/patches/patch-build_gyp.mozbuild
new file mode 100644
index 00000000000..7bee9ecd641
--- /dev/null
+++ b/security/tor-browser/patches/patch-build_gyp.mozbuild
@@ -0,0 +1,42 @@
+$NetBSD: patch-build_gyp.mozbuild,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+Hunk #2:
+ On Darwin, don't assume iOS just because the toolkit is not
+ cocoa. Ideally there should be an AC_SUBST just like 'ARM_ARCH' but
+ nothing exists currently.
+
+Hunk #3:
+ MacOS X SDK version should be able to configure with
+ ./configure --enable-macos-target=VER
+
+--- build/gyp.mozbuild.orig 2015-01-23 05:59:58.000000000 +0000
++++ build/gyp.mozbuild
+@@ -12,6 +12,7 @@ gyp_vars = {
+ 'have_ethtool_cmd_speed_hi': 1 if CONFIG['MOZ_WEBRTC_HAVE_ETHTOOL_SPEED_HI'] else 0,
+ 'include_alsa_audio': 1 if CONFIG['MOZ_ALSA'] else 0,
+ 'include_pulse_audio': 1 if CONFIG['MOZ_PULSEAUDIO'] else 0,
++ 'use_libv4l2': 1 if CONFIG['MOZ_LIBV4L2_LIBS'] else 0,
+ # basic stuff for everything
+ 'include_internal_video_render': 0,
+ 'clang_use_chrome_plugins': 0,
+@@ -85,7 +86,7 @@ flavors = {
+ 'WINNT': 'win',
+ 'Android': 'linux' if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'gonk' else 'android',
+ 'Linux': 'linux',
+- 'Darwin': 'mac' if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa' else 'ios',
++ 'Darwin': 'ios' if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cairo-uikit' else 'mac',
+ 'SunOS': 'solaris',
+ 'GNU/kFreeBSD': 'freebsd',
+ 'DragonFly': 'dragonfly',
+@@ -120,5 +121,11 @@ if CONFIG['INTEL_ARCHITECTURE']:
+ if not CONFIG['HAVE_TOOLCHAIN_SUPPORT_MSSSE3'] or not CONFIG['HAVE_TOOLCHAIN_SUPPORT_MSSE4_1']:
+ gyp_vars['yuv_disable_asm'] = 1
+
++# MacOS X SDK version should be able to configure with ./configure
++# --enable-macos-target=VER
++if CONFIG['MACOSX_DEPLOYMENT_TARGET']:
++ gyp_vars['mac_sdk_min'] = CONFIG['MACOSX_DEPLOYMENT_TARGET']
++ gyp_vars['mac_deployment_target'] = CONFIG['MACOSX_DEPLOYMENT_TARGET']
++
+ if CONFIG['MACOS_SDK_DIR']:
+ gyp_vars['mac_sdk_path'] = CONFIG['MACOS_SDK_DIR']
diff --git a/security/tor-browser/patches/patch-build_pgo_profileserver.py b/security/tor-browser/patches/patch-build_pgo_profileserver.py
new file mode 100644
index 00000000000..48f00c2f1af
--- /dev/null
+++ b/security/tor-browser/patches/patch-build_pgo_profileserver.py
@@ -0,0 +1,13 @@
+$NetBSD: patch-build_pgo_profileserver.py,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+--- build/pgo/profileserver.py.orig 2014-03-15 05:19:09.000000000 +0000
++++ build/pgo/profileserver.py
+@@ -59,7 +59,7 @@ if __name__ == '__main__':
+ env["MOZ_JAR_LOG_FILE"] = os.path.abspath(jarlog)
+ print "jarlog: %s" % env["MOZ_JAR_LOG_FILE"]
+
+- cmdargs = ["http://localhost:%d/index.html" % PORT]
++ cmdargs = ["http://127.0.0.1:%d/index.html" % PORT]
+ runner = FirefoxRunner(profile=profile,
+ binary=build.get_binary_path(where="staged-package"),
+ cmdargs=cmdargs,
diff --git a/security/tor-browser/patches/patch-config_Makefile.in b/security/tor-browser/patches/patch-config_Makefile.in
new file mode 100644
index 00000000000..bbfe02375e1
--- /dev/null
+++ b/security/tor-browser/patches/patch-config_Makefile.in
@@ -0,0 +1,21 @@
+$NetBSD: patch-config_Makefile.in,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+--- config/Makefile.in.orig 2015-05-04 00:43:23.000000000 +0000
++++ config/Makefile.in
+@@ -77,6 +77,16 @@ export:: $(export-preqs)
+ -DMOZ_NATIVE_LIBEVENT=$(MOZ_NATIVE_LIBEVENT) \
+ -DMOZ_NATIVE_LIBVPX=$(MOZ_NATIVE_LIBVPX) \
+ -DMOZ_NATIVE_ICU=$(MOZ_NATIVE_ICU) \
++ -DMOZ_NATIVE_GRAPHITE2=$(MOZ_NATIVE_GRAPHITE2) \
++ -DMOZ_NATIVE_HARFBUZZ=$(MOZ_NATIVE_HARFBUZZ) \
++ -DMOZ_NATIVE_OGG=$(MOZ_NATIVE_OGG) \
++ -DMOZ_NATIVE_THEORA=$(MOZ_NATIVE_THEORA) \
++ -DMOZ_NATIVE_VORBIS=$(MOZ_NATIVE_VORBIS) \
++ -DMOZ_NATIVE_TREMOR=$(MOZ_NATIVE_TREMOR) \
++ -DMOZ_NATIVE_CELT=$(MOZ_NATIVE_CELT) \
++ -DMOZ_NATIVE_OPUS=$(MOZ_NATIVE_OPUS) \
++ -DMOZ_NATIVE_SPEEX=$(MOZ_NATIVE_SPEEX) \
++ -DMOZ_NATIVE_SOUNDTOUCH=$(MOZ_NATIVE_SOUNDTOUCH) \
+ $(srcdir)/system-headers | $(PERL) $(topsrcdir)/nsprpub/config/make-system-wrappers.pl system_wrappers
+ $(INSTALL) system_wrappers $(DIST)
+
diff --git a/security/tor-browser/patches/patch-config_baseconfig.mk b/security/tor-browser/patches/patch-config_baseconfig.mk
new file mode 100644
index 00000000000..3ec4af38f16
--- /dev/null
+++ b/security/tor-browser/patches/patch-config_baseconfig.mk
@@ -0,0 +1,19 @@
+$NetBSD: patch-config_baseconfig.mk,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+--- config/baseconfig.mk.orig 2014-04-18 02:02:39.000000000 +0000
++++ config/baseconfig.mk
+@@ -2,10 +2,10 @@
+ # directly in python/mozbuild/mozbuild/base.py for gmake validation.
+ # We thus use INCLUDED_AUTOCONF_MK to enable/disable some parts depending
+ # whether a normal build is happening or whether the check is running.
+-includedir := $(includedir)/$(MOZ_APP_NAME)-$(MOZ_APP_VERSION)
+-idldir = $(datadir)/idl/$(MOZ_APP_NAME)-$(MOZ_APP_VERSION)
+-installdir = $(libdir)/$(MOZ_APP_NAME)-$(MOZ_APP_VERSION)
+-sdkdir = $(libdir)/$(MOZ_APP_NAME)-devel-$(MOZ_APP_VERSION)
++includedir := $(includedir)/${MOZILLA_PKG_NAME}
++idldir = $(datadir)/idl/${MOZILLA_PKG_NAME}
++installdir = $(libdir)/${MOZILLA_PKG_NAME}
++sdkdir = $(libdir)/${MOZILLA_PKG_NAME}
+ ifndef TOP_DIST
+ TOP_DIST = dist
+ endif
diff --git a/security/tor-browser/patches/patch-config_external_moz.build b/security/tor-browser/patches/patch-config_external_moz.build
new file mode 100644
index 00000000000..d8d0ac82d0f
--- /dev/null
+++ b/security/tor-browser/patches/patch-config_external_moz.build
@@ -0,0 +1,48 @@
+$NetBSD: patch-config_external_moz.build,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+--- config/external/moz.build.orig 2015-05-04 00:43:23.000000000 +0000
++++ config/external/moz.build
+@@ -19,10 +19,19 @@ if CONFIG['MOZ_UPDATER']:
+ # There's no "native brotli" yet, but probably in the future...
+ external_dirs += ['modules/brotli']
+
+-if CONFIG['MOZ_VORBIS']:
++if not CONFIG['MOZ_NATIVE_OGG']:
++ external_dirs += ['media/libogg']
++
++if not CONFIG['MOZ_NATIVE_CELT'] or not CONFIG['MOZ_NATIVE_OPUS']:
++ external_dirs += ['media/libopus']
++
++if not CONFIG['MOZ_NATIVE_THEORA']:
++ external_dirs += ['media/libtheora']
++
++if CONFIG['MOZ_VORBIS'] and not CONFIG['MOZ_NATIVE_VORBIS']:
+ external_dirs += ['media/libvorbis']
+
+-if CONFIG['MOZ_TREMOR']:
++if CONFIG['MOZ_TREMOR'] and not CONFIG['MOZ_NATIVE_TREMOR']:
+ external_dirs += ['media/libtremor']
+
+ if CONFIG['MOZ_WEBM']:
+@@ -37,15 +46,16 @@ if CONFIG['MOZ_VPX'] and not CONFIG['MOZ
+ if not CONFIG['MOZ_NATIVE_PNG']:
+ external_dirs += ['media/libpng']
+
++if not CONFIG['MOZ_NATIVE_SPEEX']:
++ external_dirs += ['media/libspeex_resampler']
++
++if not CONFIG['MOZ_NATIVE_SOUNDTOUCH']:
++ external_dirs += ['media/libsoundtouch']
++
+ external_dirs += [
+ 'media/kiss_fft',
+ 'media/libcubeb',
+- 'media/libogg',
+- 'media/libopus',
+- 'media/libtheora',
+- 'media/libspeex_resampler',
+ 'media/libstagefright',
+- 'media/libsoundtouch',
+ ]
+
+ DIRS += ['../../' + i for i in external_dirs]
diff --git a/security/tor-browser/patches/patch-config_rules.mk b/security/tor-browser/patches/patch-config_rules.mk
new file mode 100644
index 00000000000..aa7836bae06
--- /dev/null
+++ b/security/tor-browser/patches/patch-config_rules.mk
@@ -0,0 +1,12 @@
+$NetBSD: patch-config_rules.mk,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+--- config/rules.mk.orig 2015-02-17 21:40:40.000000000 +0000
++++ config/rules.mk
+@@ -765,6 +765,7 @@ endif
+ ifdef DTRACE_PROBE_OBJ
+ EXTRA_DEPS += $(DTRACE_PROBE_OBJ)
+ OBJS += $(DTRACE_PROBE_OBJ)
++EXCLUDED_OBJS += $(DTRACE_PROBE_OBJ)
+ endif
+
+ $(filter %.$(LIB_SUFFIX),$(LIBRARY)): $(OBJS) $(STATIC_LIBS_DEPS) $(filter %.$(LIB_SUFFIX),$(EXTRA_LIBS)) $(EXTRA_DEPS) $(GLOBAL_DEPS)
diff --git a/security/tor-browser/patches/patch-config_stl__wrappers_ios b/security/tor-browser/patches/patch-config_stl__wrappers_ios
new file mode 100644
index 00000000000..3e663f11ae7
--- /dev/null
+++ b/security/tor-browser/patches/patch-config_stl__wrappers_ios
@@ -0,0 +1,8 @@
+$NetBSD: patch-config_stl__wrappers_ios,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+--- config/stl_wrappers/ios.orig 2013-05-13 18:23:07.000000000 +0000
++++ config/stl_wrappers/ios
+@@ -0,0 +1,3 @@
++#pragma GCC visibility push(default)
++#include_next <ios>
++#pragma GCC visibility pop
diff --git a/security/tor-browser/patches/patch-config_stl__wrappers_ostream b/security/tor-browser/patches/patch-config_stl__wrappers_ostream
new file mode 100644
index 00000000000..22dbde9637b
--- /dev/null
+++ b/security/tor-browser/patches/patch-config_stl__wrappers_ostream
@@ -0,0 +1,8 @@
+$NetBSD: patch-config_stl__wrappers_ostream,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+--- config/stl_wrappers/ostream.orig 2013-05-13 18:22:40.000000000 +0000
++++ config/stl_wrappers/ostream
+@@ -0,0 +1,3 @@
++#pragma GCC visibility push(default)
++#include_next <ostream>
++#pragma GCC visibility pop
diff --git a/security/tor-browser/patches/patch-config_system-headers b/security/tor-browser/patches/patch-config_system-headers
new file mode 100644
index 00000000000..5f41858e798
--- /dev/null
+++ b/security/tor-browser/patches/patch-config_system-headers
@@ -0,0 +1,96 @@
+$NetBSD: patch-config_system-headers,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+--- config/system-headers.orig 2015-12-14 23:36:05.000000000 +0000
++++ config/system-headers
+@@ -189,7 +189,6 @@ asm/signal.h
+ ASRegistry.h
+ assert.h
+ atk/atk.h
+-atk-bridge.h
+ atlcom.h
+ atlconv.h
+ atlctl.cpp
+@@ -638,6 +637,7 @@ libgnomevfs/gnome-vfs-mime-handlers.h
+ libgnomevfs/gnome-vfs-mime-utils.h
+ libgnomevfs/gnome-vfs-ops.h
+ libgnomevfs/gnome-vfs-standard-callbacks.h
++libv4l2.h
+ lib$routines.h
+ limits
+ limits.h
+@@ -732,6 +732,7 @@ mapiutil.h
+ mapix.h
+ Math64.h
+ math.h
++complex
+ mbstring.h
+ #ifdef ANDROID
+ media/AudioEffect.h
+@@ -1268,7 +1269,6 @@ X11/Xlocale.h
+ X11/Xos.h
+ X11/Xutil.h
+ zmouse.h
+-soundtouch/SoundTouch.h
+ #if MOZ_NATIVE_PNG==1
+ png.h
+ #endif
+@@ -1330,10 +1330,13 @@ vorbis/codec.h
+ theora/theoradec.h
+ tremor/ivorbiscodec.h
+ speex/speex_resampler.h
++soundtouch/SoundTouch.h
+ ogg/ogg.h
+ ogg/os_types.h
+ nestegg/nestegg.h
+ cubeb/cubeb.h
++speex/speex_resampler.h
++soundtouch/SoundTouch.h
+ #endif
+ gst/gst.h
+ gst/app/gstappsink.h
+@@ -1362,3 +1365,45 @@ unicode/utypes.h
+ #endif
+ libutil.h
+ unwind.h
++#if MOZ_NATIVE_GRAPHITE2==1
++graphite2/Font.h
++graphite2/Log.h
++graphite2/Segment.h
++graphite2/Types.h
++#endif
++#if MOZ_NATIVE_HARFBUZZ==1
++harfbuzz/hb-ot.h
++harfbuzz/hb.h
++#endif
++#if MOZ_NATIVE_OGG==1
++ogg/ogg.h
++ogg/os_types.h
++#endif
++#if MOZ_NATIVE_THEORA==1
++theora/theoradec.h
++#endif
++#if MOZ_NATIVE_VORBIS==1
++vorbis/codec.h
++vorbis/vorbisenc.h
++#endif
++#if MOZ_NATIVE_TREMOR==1
++tremor/ivorbiscodec.h
++#endif
++#if MOZ_NATIVE_CELT==1
++celt.h
++celt_header.h
++celt/celt.h
++celt/celt_header.h
++#endif
++#if MOZ_NATIVE_OPUS==1
++opus.h
++opus_multistream.h
++opus/opus.h
++opus/opus_multistream.h
++#endif
++#if MOZ_NATIVE_SPEEX==1
++speex/speex_resampler.h
++#endif
++#if MOZ_NATIVE_SOUNDTOUCH==1
++soundtouch/SoundTouch.h
++#endif
diff --git a/security/tor-browser/patches/patch-dom_base_moz.build b/security/tor-browser/patches/patch-dom_base_moz.build
new file mode 100644
index 00000000000..88169f7e0b2
--- /dev/null
+++ b/security/tor-browser/patches/patch-dom_base_moz.build
@@ -0,0 +1,14 @@
+$NetBSD: patch-dom_base_moz.build,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+--- dom/base/moz.build.orig 2015-02-17 21:40:41.000000000 +0000
++++ dom/base/moz.build
+@@ -361,6 +361,9 @@ if CONFIG['INTEL_ARCHITECTURE']:
+ SOURCES += ['nsTextFragmentSSE2.cpp']
+ SOURCES['nsTextFragmentSSE2.cpp'].flags += CONFIG['SSE2_FLAGS']
+
++if CONFIG['MOZ_NATIVE_HARFBUZZ']:
++ SOURCES['nsContentUtils.cpp'].flags += CONFIG['MOZ_HARFBUZZ_CFLAGS']
++
+ EXTRA_COMPONENTS += [
+ 'ConsoleAPI.manifest',
+ 'ConsoleAPIStorage.js',
diff --git a/security/tor-browser/patches/patch-dom_events_MessageEvent.h b/security/tor-browser/patches/patch-dom_events_MessageEvent.h
new file mode 100644
index 00000000000..b8dadc65f0f
--- /dev/null
+++ b/security/tor-browser/patches/patch-dom_events_MessageEvent.h
@@ -0,0 +1,14 @@
+$NetBSD: patch-dom_events_MessageEvent.h,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+--- dom/events/MessageEvent.h.orig 2015-11-19 13:56:48.000000000 +0000
++++ dom/events/MessageEvent.h
+@@ -15,9 +15,6 @@ namespace mozilla {
+ namespace dom {
+
+ struct MessageEventInit;
+-class MessagePort;
+-class MessagePortBase;
+-class MessagePortList;
+ class OwningWindowProxyOrMessagePort;
+
+ /**
diff --git a/security/tor-browser/patches/patch-dom_media_AudioStream.h b/security/tor-browser/patches/patch-dom_media_AudioStream.h
new file mode 100644
index 00000000000..af1f3b200c6
--- /dev/null
+++ b/security/tor-browser/patches/patch-dom_media_AudioStream.h
@@ -0,0 +1,13 @@
+$NetBSD: patch-dom_media_AudioStream.h,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+--- dom/media/AudioStream.h.orig 2015-02-17 21:40:44.000000000 +0000
++++ dom/media/AudioStream.h
+@@ -17,7 +17,7 @@
+ #include "CubebUtils.h"
+
+ namespace soundtouch {
+-class SoundTouch;
++class MOZ_IMPORT_API SoundTouch;
+ }
+
+ namespace mozilla {
diff --git a/security/tor-browser/patches/patch-dom_media_gstreamer_GStreamerAllocator.cpp b/security/tor-browser/patches/patch-dom_media_gstreamer_GStreamerAllocator.cpp
new file mode 100644
index 00000000000..3c23f8692b2
--- /dev/null
+++ b/security/tor-browser/patches/patch-dom_media_gstreamer_GStreamerAllocator.cpp
@@ -0,0 +1,12 @@
+$NetBSD: patch-dom_media_gstreamer_GStreamerAllocator.cpp,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+--- dom/media/gstreamer/GStreamerAllocator.cpp.orig 2015-02-17 21:40:44.000000000 +0000
++++ dom/media/gstreamer/GStreamerAllocator.cpp
+@@ -51,7 +51,6 @@ typedef struct
+ #pragma GCC diagnostic ignored "-Wunused-function"
+ G_DEFINE_TYPE(MozGfxMemoryAllocator, moz_gfx_memory_allocator, GST_TYPE_ALLOCATOR);
+ G_DEFINE_TYPE(MozGfxBufferPool, moz_gfx_buffer_pool, GST_TYPE_VIDEO_BUFFER_POOL);
+-#pragma GCC diagnostic pop
+
+ void
+ moz_gfx_memory_reset(MozGfxMemory *mem)
diff --git a/security/tor-browser/patches/patch-dom_media_moz.build b/security/tor-browser/patches/patch-dom_media_moz.build
new file mode 100644
index 00000000000..a5c63569083
--- /dev/null
+++ b/security/tor-browser/patches/patch-dom_media_moz.build
@@ -0,0 +1,32 @@
+$NetBSD: patch-dom_media_moz.build,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+--- dom/media/moz.build.orig 2015-03-27 02:20:26.000000000 +0000
++++ dom/media/moz.build
+@@ -276,6 +276,27 @@ if CONFIG['ANDROID_VERSION'] > '15':
+ CFLAGS += CONFIG['GSTREAMER_CFLAGS']
+ CXXFLAGS += CONFIG['GSTREAMER_CFLAGS']
+
++if CONFIG['MOZ_NATIVE_OGG']:
++ CXXFLAGS += CONFIG['MOZ_OGG_CFLAGS']
++
++if CONFIG['MOZ_NATIVE_THEORA']:
++ CXXFLAGS += CONFIG['MOZ_THEORA_CFLAGS']
++
++if CONFIG['MOZ_NATIVE_VORBIS']:
++ CXXFLAGS += CONFIG['MOZ_VORBIS_CFLAGS']
++
++if CONFIG['MOZ_NATIVE_TREMOR']:
++ CXXFLAGS += CONFIG['MOZ_TREMOR_CFLAGS']
++
++if CONFIG['MOZ_NATIVE_OPUS']:
++ CXXFLAGS += CONFIG['MOZ_OPUS_CFLAGS']
++
++if CONFIG['MOZ_NATIVE_SPEEX']:
++ CXXFLAGS += CONFIG['MOZ_SPEEX_CFLAGS']
++
++if CONFIG['MOZ_NATIVE_SOUNDTOUCH']:
++ CXXFLAGS += CONFIG['MOZ_SOUNDTOUCH_CFLAGS']
++
+ include('/ipc/chromium/chromium-config.mozbuild')
+
+ # Suppress some GCC warnings being treated as errors:
diff --git a/security/tor-browser/patches/patch-dom_plugins_ipc_PluginModuleChild.cpp b/security/tor-browser/patches/patch-dom_plugins_ipc_PluginModuleChild.cpp
new file mode 100644
index 00000000000..af77625db67
--- /dev/null
+++ b/security/tor-browser/patches/patch-dom_plugins_ipc_PluginModuleChild.cpp
@@ -0,0 +1,31 @@
+$NetBSD: patch-dom_plugins_ipc_PluginModuleChild.cpp,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+--- dom/plugins/ipc/PluginModuleChild.cpp.orig 2015-03-27 02:20:27.000000000 +0000
++++ dom/plugins/ipc/PluginModuleChild.cpp
+@@ -320,7 +320,7 @@ PluginModuleChild::InitForChrome(const s
+
+ // TODO: use PluginPRLibrary here
+
+-#if defined(OS_LINUX) || defined(OS_BSD)
++#if defined(OS_LINUX) || defined(OS_BSD) || defined(OS_SOLARIS)
+ mShutdownFunc =
+ (NP_PLUGINSHUTDOWN) PR_FindFunctionSymbol(mLibrary, "NP_Shutdown");
+
+@@ -1882,7 +1882,7 @@ PluginModuleChild::AnswerNP_GetEntryPoin
+ AssertPluginThread();
+ MOZ_ASSERT(mIsChrome);
+
+-#if defined(OS_LINUX) || defined(OS_BSD)
++#if defined(OS_LINUX) || defined(OS_BSD) || defined(OS_SOLARIS)
+ return true;
+ #elif defined(OS_WIN) || defined(OS_MACOSX)
+ *_retval = mGetEntryPointsFunc(&mFunctions);
+@@ -1927,7 +1927,7 @@ PluginModuleChild::DoNP_Initialize(const
+ #endif
+
+ NPError result;
+-#if defined(OS_LINUX) || defined(OS_BSD)
++#if defined(OS_LINUX) || defined(OS_BSD) || defined(OS_SOLARIS)
+ result = mInitializeFunc(&sBrowserFuncs, &mFunctions);
+ #elif defined(OS_WIN) || defined(OS_MACOSX)
+ result = mInitializeFunc(&sBrowserFuncs);
diff --git a/security/tor-browser/patches/patch-dom_plugins_ipc_PluginModuleChild.h b/security/tor-browser/patches/patch-dom_plugins_ipc_PluginModuleChild.h
new file mode 100644
index 00000000000..70f82d2d445
--- /dev/null
+++ b/security/tor-browser/patches/patch-dom_plugins_ipc_PluginModuleChild.h
@@ -0,0 +1,13 @@
+$NetBSD: patch-dom_plugins_ipc_PluginModuleChild.h,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+--- dom/plugins/ipc/PluginModuleChild.h.orig 2013-05-11 19:19:27.000000000 +0000
++++ dom/plugins/ipc/PluginModuleChild.h
+@@ -325,7 +325,7 @@ private:
+
+ // we get this from the plugin
+ NP_PLUGINSHUTDOWN mShutdownFunc;
+-#if defined(OS_LINUX) || defined(OS_BSD)
++#if defined(OS_LINUX) || defined(OS_BSD) || defined(OS_SOLARIS)
+ NP_PLUGINUNIXINIT mInitializeFunc;
+ #elif defined(OS_WIN) || defined(OS_MACOSX)
+ NP_PLUGININIT mInitializeFunc;
diff --git a/security/tor-browser/patches/patch-dom_plugins_ipc_PluginProcessChild.cpp b/security/tor-browser/patches/patch-dom_plugins_ipc_PluginProcessChild.cpp
new file mode 100644
index 00000000000..33399638877
--- /dev/null
+++ b/security/tor-browser/patches/patch-dom_plugins_ipc_PluginProcessChild.cpp
@@ -0,0 +1,16 @@
+$NetBSD: patch-dom_plugins_ipc_PluginProcessChild.cpp,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+Just because OS_ARCH is Darwin does not mean
+libplugin_child_interpose.dylib is used.
+
+--- dom/plugins/ipc/PluginProcessChild.cpp.orig 2015-02-17 21:40:45.000000000 +0000
++++ dom/plugins/ipc/PluginProcessChild.cpp
+@@ -56,7 +56,7 @@ PluginProcessChild::Init()
+ {
+ nsDebugImpl::SetMultiprocessMode("NPAPI");
+
+-#if defined(XP_MACOSX)
++#if defined(MOZ_WIDGET_COCOA)
+ // Remove the trigger for "dyld interposing" that we added in
+ // GeckoChildProcessHost::PerformAsyncLaunchInternal(), in the host
+ // process just before we were launched. Dyld interposing will still
diff --git a/security/tor-browser/patches/patch-dom_system_OSFileConstants.cpp b/security/tor-browser/patches/patch-dom_system_OSFileConstants.cpp
new file mode 100644
index 00000000000..eed133696ea
--- /dev/null
+++ b/security/tor-browser/patches/patch-dom_system_OSFileConstants.cpp
@@ -0,0 +1,64 @@
+$NetBSD: patch-dom_system_OSFileConstants.cpp,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+* NetBSD 5 does not support posix_spawn(3)
+
+* Replace XP_MACOSX with XP_DARWIN as the former is not defined when
+ the toolkit is not cocoa.
+
+--- dom/system/OSFileConstants.cpp.orig 2014-07-17 01:45:12.000000000 +0000
++++ dom/system/OSFileConstants.cpp 2014-08-19 17:41:25.000000000 +0000
+@@ -9,6 +9,10 @@
+
+ #include "prsystem.h"
+
++#if defined(__NetBSD__)
++#include <sys/param.h>
++#endif
++
+ #if defined(XP_UNIX)
+ #include "unistd.h"
+ #include "dirent.h"
+@@ -18,7 +22,9 @@
+ #define statvfs statfs
+ #else
+ #include "sys/statvfs.h"
++#if !(defined(__NetBSD__) && (__NetBSD_Version__ < 600000000))
+ #include <spawn.h>
++#endif // !NetBSD 5.*
+ #endif // defined(ANDROID)
+ #endif // defined(XP_UNIX)
+
+@@ -26,9 +32,9 @@
+ #include <linux/fadvise.h>
+ #endif // defined(XP_LINUX)
+
+-#if defined(XP_MACOSX)
++#if defined(XP_DARWIN)
+ #include "copyfile.h"
+-#endif // defined(XP_MACOSX)
++#endif // defined(XP_DARWIN)
+
+ #if defined(XP_WIN)
+ #include <windows.h>
+@@ -564,10 +570,10 @@
+ // The size of |fsblkcnt_t|.
+ { "OSFILE_SIZEOF_FSBLKCNT_T", INT_TO_JSVAL(sizeof (fsblkcnt_t)) },
+
+-#if !defined(ANDROID)
++#if !defined(ANDROID) && !(defined(__NetBSD__) && (__NetBSD_Version__ < 600000000))
+ // The size of |posix_spawn_file_actions_t|.
+ { "OSFILE_SIZEOF_POSIX_SPAWN_FILE_ACTIONS_T", INT_TO_JSVAL(sizeof (posix_spawn_file_actions_t)) },
+-#endif // !defined(ANDROID)
++#endif // !defined(ANDROID) && NetBSD 5.*
+
+ // Defining |dirent|.
+ // Size
+@@ -627,7 +633,7 @@
+
+ { "OSFILE_SIZEOF_STATVFS", INT_TO_JSVAL(sizeof (struct statvfs)) },
+
+- { "OSFILE_OFFSETOF_STATVFS_F_BSIZE", INT_TO_JSVAL(offsetof (struct statvfs, f_bsize)) },
++ { "OSFILE_OFFSETOF_STATVFS_F_FRSIZE", INT_TO_JSVAL(offsetof (struct statvfs, f_frsize)) },
+ { "OSFILE_OFFSETOF_STATVFS_F_BAVAIL", INT_TO_JSVAL(offsetof (struct statvfs, f_bavail)) },
+
+ #endif // defined(XP_UNIX)
diff --git a/security/tor-browser/patches/patch-extensions_spellcheck_hunspell_src_mozHunspell.cpp b/security/tor-browser/patches/patch-extensions_spellcheck_hunspell_src_mozHunspell.cpp
new file mode 100644
index 00000000000..680bd54e0f9
--- /dev/null
+++ b/security/tor-browser/patches/patch-extensions_spellcheck_hunspell_src_mozHunspell.cpp
@@ -0,0 +1,21 @@
+$NetBSD: patch-extensions_spellcheck_hunspell_src_mozHunspell.cpp,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+Load system hunspell dictionaries.
+
+--- extensions/spellcheck/hunspell/src/mozHunspell.cpp.orig 2015-05-04 00:43:34.000000000 +0000
++++ extensions/spellcheck/hunspell/src/mozHunspell.cpp
+@@ -400,6 +400,14 @@ mozHunspell::LoadDictionaryList(bool aNo
+ }
+ }
+
++ // load system hunspell dictionaries
++ nsCOMPtr<nsIFile> hunDir;
++ NS_NewNativeLocalFile(NS_LITERAL_CSTRING("@PREFIX@/share/hunspell"),
++ true, getter_AddRefs(hunDir));
++ if (hunDir) {
++ LoadDictionariesFromDir(hunDir);
++ }
++
+ // find dictionaries from extensions requiring restart
+ nsCOMPtr<nsISimpleEnumerator> dictDirs;
+ rv = dirSvc->Get(DICTIONARY_SEARCH_DIRECTORY_LIST,
diff --git a/security/tor-browser/patches/patch-gfx_graphite2_moz-gr-update.sh b/security/tor-browser/patches/patch-gfx_graphite2_moz-gr-update.sh
new file mode 100644
index 00000000000..523725a6fa7
--- /dev/null
+++ b/security/tor-browser/patches/patch-gfx_graphite2_moz-gr-update.sh
@@ -0,0 +1,20 @@
+$NetBSD: patch-gfx_graphite2_moz-gr-update.sh,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+--- gfx/graphite2/moz-gr-update.sh.orig 2014-11-21 03:37:30.000000000 +0000
++++ gfx/graphite2/moz-gr-update.sh
+@@ -23,8 +23,14 @@ echo "\nSee" $0 "for update procedure.\n
+ find gfx/graphite2/ -name "*.cpp" -exec perl -p -i -e "s/<cstdio>/<stdio.h>/;s/Windows.h/windows.h/;" {} \;
+ find gfx/graphite2/ -name "*.h" -exec perl -p -i -e "s/<cstdio>/<stdio.h>/;s/Windows.h/windows.h/;" {} \;
+
++# closest tag/release to require for system version
++TAG=$(cd ../graphitedev/ && hg parents --template {latesttag})
++
++perl -p -i -e "s/[0-9]+\,[0-9]+\,[0-9]+/$TAG/ and tr/./,/ \
++ if /GR2_VERSION_REQUIRE/" configure.in
++
+ # summarize what's been touched
+-echo Updated to $CHANGESET.
++echo Updated to $CHANGESET \($TAG for --with-system-graphite2\)
+ echo Here is what changed in the gfx/graphite2 directory:
+ echo
+
diff --git a/security/tor-browser/patches/patch-gfx_graphite2_src_Bidi.cpp b/security/tor-browser/patches/patch-gfx_graphite2_src_Bidi.cpp
new file mode 100644
index 00000000000..ad1f3c70b0d
--- /dev/null
+++ b/security/tor-browser/patches/patch-gfx_graphite2_src_Bidi.cpp
@@ -0,0 +1,16 @@
+$NetBSD: patch-gfx_graphite2_src_Bidi.cpp,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+--- gfx/graphite2/src/Bidi.cpp.orig 2013-05-11 19:19:30.000000000 +0000
++++ gfx/graphite2/src/Bidi.cpp
+@@ -30,6 +30,11 @@ of the License or (at your option) any l
+
+ using namespace graphite2;
+
++#ifdef __sun
++#undef CS
++#undef ES
++#endif
++
+ enum DirCode { // Hungarian: dirc
+ Unk = -1,
+ N = 0, // other neutrals (default) - ON
diff --git a/security/tor-browser/patches/patch-gfx_graphite2_src_moz.build b/security/tor-browser/patches/patch-gfx_graphite2_src_moz.build
new file mode 100644
index 00000000000..b7357c3ed79
--- /dev/null
+++ b/security/tor-browser/patches/patch-gfx_graphite2_src_moz.build
@@ -0,0 +1,15 @@
+$NetBSD: patch-gfx_graphite2_src_moz.build,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+--- gfx/graphite2/src/moz.build.orig 2016-01-31 20:42:26.674057599 +0000
++++ gfx/graphite2/src/moz.build
+@@ -60,10 +60,6 @@ MSVC_ENABLE_PGO = True
+ if CONFIG['GKMEDIAS_SHARED_LIBRARY']:
+ NO_VISIBILITY_FLAGS = True
+ DEFINES['GRAPHITE2_EXPORTING'] = True
+-else:
+- # tell graphite2 not to export symbols, we'll be linking it directly with
+- # thebes
+- DEFINES['GRAPHITE2_STATIC'] = True
+
+ FINAL_LIBRARY = 'gkmedias'
+
diff --git a/security/tor-browser/patches/patch-gfx_moz.build b/security/tor-browser/patches/patch-gfx_moz.build
new file mode 100644
index 00000000000..e230fcf4edd
--- /dev/null
+++ b/security/tor-browser/patches/patch-gfx_moz.build
@@ -0,0 +1,26 @@
+$NetBSD: patch-gfx_moz.build,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+--- gfx/moz.build.orig 2014-03-15 05:19:16.000000000 +0000
++++ gfx/moz.build
+@@ -7,6 +7,12 @@
+ if CONFIG['MOZ_TREE_CAIRO']:
+ DIRS += ['cairo']
+
++if not CONFIG['MOZ_NATIVE_GRAPHITE2']:
++ DIRS += ['graphite2/src' ]
++
++if not CONFIG['MOZ_NATIVE_HARFBUZZ']:
++ DIRS += ['harfbuzz/src']
++
+ DIRS += [
+ '2d',
+ 'ycbcr',
+@@ -15,8 +21,6 @@ DIRS += [
+ 'qcms',
+ 'gl',
+ 'layers',
+- 'graphite2/src',
+- 'harfbuzz/src',
+ 'ots/src',
+ 'thebes',
+ 'ipc',
diff --git a/security/tor-browser/patches/patch-gfx_skia_generate__mozbuild.py b/security/tor-browser/patches/patch-gfx_skia_generate__mozbuild.py
new file mode 100644
index 00000000000..e436fb8e514
--- /dev/null
+++ b/security/tor-browser/patches/patch-gfx_skia_generate__mozbuild.py
@@ -0,0 +1,14 @@
+$NetBSD: patch-gfx_skia_generate__mozbuild.py,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+--- gfx/skia/generate_mozbuild.py.orig 2014-11-21 03:37:30.000000000 +0000
++++ gfx/skia/generate_mozbuild.py
+@@ -140,6 +140,9 @@ if CONFIG['GNU_CXX']:
+ if not CONFIG['CLANG_CXX']:
+ CXXFLAGS += ['-Wno-logical-op']
+
++if CONFIG['MOZ_NATIVE_HARFBUZZ']:
++ CXXFLAGS += CONFIG['MOZ_HARFBUZZ_CFLAGS']
++
+ if CONFIG['MOZ_WIDGET_TOOLKIT'] in ('gtk2', 'gtk3', 'android', 'gonk', 'qt'):
+ CXXFLAGS += CONFIG['MOZ_CAIRO_CFLAGS']
+ CXXFLAGS += CONFIG['CAIRO_FT_CFLAGS']
diff --git a/security/tor-browser/patches/patch-gfx_skia_moz.build b/security/tor-browser/patches/patch-gfx_skia_moz.build
new file mode 100644
index 00000000000..acf329d5c45
--- /dev/null
+++ b/security/tor-browser/patches/patch-gfx_skia_moz.build
@@ -0,0 +1,14 @@
+$NetBSD: patch-gfx_skia_moz.build,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+--- gfx/skia/moz.build.orig 2014-11-21 03:37:30.000000000 +0000
++++ gfx/skia/moz.build
+@@ -968,6 +968,9 @@ if CONFIG['GNU_CXX']:
+ if not CONFIG['CLANG_CXX']:
+ CXXFLAGS += ['-Wno-logical-op']
+
++if CONFIG['MOZ_NATIVE_HARFBUZZ']:
++ CXXFLAGS += CONFIG['MOZ_HARFBUZZ_CFLAGS']
++
+ if CONFIG['MOZ_WIDGET_TOOLKIT'] in ('gtk2', 'gtk3', 'android', 'gonk', 'qt'):
+ CXXFLAGS += CONFIG['MOZ_CAIRO_CFLAGS']
+ CXXFLAGS += CONFIG['CAIRO_FT_CFLAGS']
diff --git a/security/tor-browser/patches/patch-gfx_thebes_moz.build b/security/tor-browser/patches/patch-gfx_thebes_moz.build
new file mode 100644
index 00000000000..fa02523719a
--- /dev/null
+++ b/security/tor-browser/patches/patch-gfx_thebes_moz.build
@@ -0,0 +1,25 @@
+$NetBSD: patch-gfx_thebes_moz.build,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+--- gfx/thebes/moz.build.orig 2015-12-14 23:35:58.000000000 +0000
++++ gfx/thebes/moz.build
+@@ -287,6 +287,12 @@ CXXFLAGS += CONFIG['TK_CFLAGS']
+ CFLAGS += CONFIG['MOZ_CAIRO_CFLAGS']
+ CFLAGS += CONFIG['TK_CFLAGS']
+
++if CONFIG['MOZ_NATIVE_HARFBUZZ']:
++ CXXFLAGS += CONFIG['MOZ_HARFBUZZ_CFLAGS']
++
++if CONFIG['MOZ_NATIVE_GRAPHITE2']:
++ CXXFLAGS += CONFIG['MOZ_GRAPHITE2_CFLAGS']
++
+ if CONFIG['MOZ_WIDGET_TOOLKIT'] in ('android', 'gonk', 'qt'):
+ CXXFLAGS += CONFIG['CAIRO_FT_CFLAGS']
+
+@@ -298,7 +304,5 @@ if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'andr
+ if CONFIG['MOZ_WIDGET_TOOLKIT'] in ('gtk2', 'gtk3', 'qt'):
+ CXXFLAGS += CONFIG['MOZ_PANGO_CFLAGS']
+
+-DEFINES['GRAPHITE2_STATIC'] = True
+-
+ if CONFIG['GKMEDIAS_SHARED_LIBRARY']:
+ DEFINES['OTS_DLL'] = True
diff --git a/security/tor-browser/patches/patch-gfx_ycbcr_moz.build b/security/tor-browser/patches/patch-gfx_ycbcr_moz.build
new file mode 100644
index 00000000000..8cb6abe333c
--- /dev/null
+++ b/security/tor-browser/patches/patch-gfx_ycbcr_moz.build
@@ -0,0 +1,13 @@
+$NetBSD: patch-gfx_ycbcr_moz.build,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+--- gfx/ycbcr/moz.build.orig 2014-11-26 12:30:03.000000000 +0000
++++ gfx/ycbcr/moz.build
+@@ -63,7 +63,7 @@ else:
+
+ if CONFIG['CPU_ARCH'] == 'arm' and CONFIG['HAVE_ARM_NEON']:
+ SOURCES += [
+- 'yuv_row_arm.s',
++ 'yuv_row_arm.S',
+ ]
+ SOURCES += [
+ 'yuv_convert_arm.cpp',
diff --git a/security/tor-browser/patches/patch-gfx_ycbcr_yuv__row__arm.S b/security/tor-browser/patches/patch-gfx_ycbcr_yuv__row__arm.S
new file mode 100644
index 00000000000..1249c4543f9
--- /dev/null
+++ b/security/tor-browser/patches/patch-gfx_ycbcr_yuv__row__arm.S
@@ -0,0 +1,317 @@
+$NetBSD: patch-gfx_ycbcr_yuv__row__arm.S,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+--- gfx/ycbcr/yuv_row_arm.S.orig 2014-12-01 14:53:14.000000000 +0000
++++ gfx/ycbcr/yuv_row_arm.S
+@@ -0,0 +1,312 @@
++/* 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/. */
++
++#if defined(__ARM_EABI__) && !defined(__ARM_DWARF_EH__)
++#define UNWIND
++#else
++#define UNWIND @
++#endif
++
++ .arch armv7-a
++ .fpu neon
++/* Allow to build on targets not supporting neon, and force the object file
++ * target to avoid bumping the final binary target */
++ .object_arch armv4t
++ .text
++ .align
++
++ .balign 64
++YCbCr42xToRGB565_DITHER03_CONSTS_NEON:
++ .short -14240
++ .short -14240+384
++ .short 8672
++ .short 8672+192
++ .short -17696
++ .short -17696+384
++ .byte 102
++ .byte 25
++ .byte 52
++ .byte 129
++YCbCr42xToRGB565_DITHER12_CONSTS_NEON:
++ .short -14240+128
++ .short -14240+256
++ .short 8672+64
++ .short 8672+128
++ .short -17696+128
++ .short -17696+256
++ .byte 102
++ .byte 25
++ .byte 52
++ .byte 129
++YCbCr42xToRGB565_DITHER21_CONSTS_NEON:
++ .short -14240+256
++ .short -14240+128
++ .short 8672+128
++ .short 8672+64
++ .short -17696+256
++ .short -17696+128
++ .byte 102
++ .byte 25
++ .byte 52
++ .byte 129
++YCbCr42xToRGB565_DITHER30_CONSTS_NEON:
++ .short -14240+384
++ .short -14240
++ .short 8672+192
++ .short 8672
++ .short -17696+384
++ .short -17696
++ .byte 102
++ .byte 25
++ .byte 52
++ .byte 129
++
++@ void ScaleYCbCr42xToRGB565_BilinearY_Row_NEON(
++@ yuv2rgb565_row_scale_bilinear_ctx *ctx, int dither);
++@
++@ ctx = {
++@ uint16_t *rgb_row; /*r0*/
++@ const uint8_t *y_row; /*r1*/
++@ const uint8_t *u_row; /*r2*/
++@ const uint8_t *v_row; /*r3*/
++@ int y_yweight; /*r4*/
++@ int y_pitch; /*r5*/
++@ int width; /*r6*/
++@ int source_x0_q16; /*r7*/
++@ int source_dx_q16; /*r8*/
++@ int source_uv_xoffs_q16; /*r9*/
++@ };
++ .global ScaleYCbCr42xToRGB565_BilinearY_Row_NEON
++ .type ScaleYCbCr42xToRGB565_BilinearY_Row_NEON, %function
++ .balign 64
++ .cfi_startproc
++ UNWIND .fnstart
++ScaleYCbCr42xToRGB565_BilinearY_Row_NEON:
++ STMFD r13!,{r4-r9,r14} @ 8 words.
++ ADR r14,YCbCr42xToRGB565_DITHER03_CONSTS_NEON
++ VPUSH {Q4-Q7} @ 16 words.
++ ADD r14,r14,r1, LSL #4 @ Select the dither table to use
++ LDMIA r0, {r0-r9}
++ @ Set up image index registers.
++ ADD r12,r8, r8
++ VMOV.I32 D16,#0 @ Q8 = < 2| 2| 0| 0>*source_dx_q16
++ VDUP.32 D17,r12
++ ADD r12,r12,r12
++ VTRN.32 D16,D17 @ Q2 = < 2| 0| 2| 0>*source_dx_q16
++ VDUP.32 D19,r12 @ Q9 = < 4| 4| ?| ?>*source_dx_q16
++ ADD r12,r12,r12
++ VDUP.32 Q0, r7 @ Q0 = < 1| 1| 1| 1>*source_x0_q16
++ VADD.I32 D17,D17,D19 @ Q8 = < 6| 4| 2| 0>*source_dx_q16
++ CMP r8, #0 @ If source_dx_q16 is negative...
++ VDUP.32 Q9, r12 @ Q9 = < 8| 8| 8| 8>*source_dx_q16
++ ADDLT r7, r7, r8, LSL #4 @ Make r7 point to the end of the block
++ VADD.I32 Q0, Q0, Q8 @ Q0 = < 6| 4| 2| 0>*source_dx_q16+source_x0_q16
++ SUBLT r7, r7, r8 @ (i.e., the lowest address we'll use)
++ VADD.I32 Q1, Q0, Q9 @ Q1 = <14|12|10| 8>*source_dx_q16+source_x0_q16
++ VDUP.I32 Q9, r8 @ Q8 = < 1| 1| 1| 1>*source_dx_q16
++ VADD.I32 Q2, Q0, Q9 @ Q2 = < 7| 5| 3| 1>*source_dx_q16+source_x0_q16
++ VADD.I32 Q3, Q1, Q9 @ Q3 = <15|13|11| 9>*source_dx_q16+source_x0_q16
++ VLD1.64 {D30,D31},[r14,:128] @ Load some constants
++ VMOV.I8 D28,#52
++ VMOV.I8 D29,#129
++ @ The basic idea here is to do aligned loads of a block of data and then
++ @ index into it using VTBL to extract the data from the source X
++ @ coordinate corresponding to each destination pixel.
++ @ This is significantly less code and significantly fewer cycles than doing
++ @ a series of single-lane loads, but it means that the X step between
++ @ pixels must be limited to 2.0 or less, otherwise we couldn't guarantee
++ @ that we could read 8 pixels from a single aligned 32-byte block of data.
++ @ Q0...Q3 contain the 16.16 fixed-point X coordinates of each pixel,
++ @ separated into even pixels and odd pixels to make extracting offsets and
++ @ weights easier.
++ @ We then pull out two bytes from the middle of each coordinate: the top
++ @ byte corresponds to the integer part of the X coordinate, and the bottom
++ @ byte corresponds to the weight to use for bilinear blending.
++ @ These are separated out into different registers with VTRN.
++ @ Then by subtracting the integer X coordinate of the first pixel in the
++ @ data block we loaded, we produce an index register suitable for use by
++ @ VTBL.
++s42xbily_neon_loop:
++ @ Load the Y' data.
++ MOV r12,r7, ASR #16
++ VRSHRN.S32 D16,Q0, #8
++ AND r12,r12,#~15 @ Read 16-byte aligned blocks
++ VDUP.I8 D20,r12
++ ADD r12,r1, r12 @ r12 = y_row+(source_x&~7)
++ VRSHRN.S32 D17,Q1, #8
++ PLD [r12,#64]
++ VLD1.64 {D8, D9, D10,D11},[r12,:128],r5 @ Load Y' top row
++ ADD r14,r7, r8, LSL #3
++ VRSHRN.S32 D18,Q2, #8
++ MOV r14,r14,ASR #16
++ VRSHRN.S32 D19,Q3, #8
++ AND r14,r14,#~15 @ Read 16-byte aligned blocks
++ VLD1.64 {D12,D13,D14,D15},[r12,:128] @ Load Y' bottom row
++ PLD [r12,#64]
++ VDUP.I8 D21,r14
++ ADD r14,r1, r14 @ r14 = y_row+(source_x&~7)
++ VMOV.I8 Q13,#1
++ PLD [r14,#64]
++ VTRN.8 Q8, Q9 @ Q8 = <wFwEwDwCwBwAw9w8w7w6w5w4w3w2w1w0>
++ @ Q9 = <xFxExDxCxBxAx9x8x7x6x5x4x3x2x1x0>
++ VSUB.S8 Q9, Q9, Q10 @ Make offsets relative to the data we loaded.
++ @ First 8 Y' pixels
++ VTBL.8 D20,{D8, D9, D10,D11},D18 @ Index top row at source_x
++ VTBL.8 D24,{D12,D13,D14,D15},D18 @ Index bottom row at source_x
++ VADD.S8 Q13,Q9, Q13 @ Add 1 to source_x
++ VTBL.8 D22,{D8, D9, D10,D11},D26 @ Index top row at source_x+1
++ VTBL.8 D26,{D12,D13,D14,D15},D26 @ Index bottom row at source_x+1
++ @ Next 8 Y' pixels
++ VLD1.64 {D8, D9, D10,D11},[r14,:128],r5 @ Load Y' top row
++ VLD1.64 {D12,D13,D14,D15},[r14,:128] @ Load Y' bottom row
++ PLD [r14,#64]
++ VTBL.8 D21,{D8, D9, D10,D11},D19 @ Index top row at source_x
++ VTBL.8 D25,{D12,D13,D14,D15},D19 @ Index bottom row at source_x
++ VTBL.8 D23,{D8, D9, D10,D11},D27 @ Index top row at source_x+1
++ VTBL.8 D27,{D12,D13,D14,D15},D27 @ Index bottom row at source_x+1
++ @ Blend Y'.
++ VDUP.I16 Q9, r4 @ Load the y weights.
++ VSUBL.U8 Q4, D24,D20 @ Q5:Q4 = c-a
++ VSUBL.U8 Q5, D25,D21
++ VSUBL.U8 Q6, D26,D22 @ Q7:Q6 = d-b
++ VSUBL.U8 Q7, D27,D23
++ VMUL.S16 Q4, Q4, Q9 @ Q5:Q4 = (c-a)*yweight
++ VMUL.S16 Q5, Q5, Q9
++ VMUL.S16 Q6, Q6, Q9 @ Q7:Q6 = (d-b)*yweight
++ VMUL.S16 Q7, Q7, Q9
++ VMOVL.U8 Q12,D16 @ Promote the x weights to 16 bits.
++ VMOVL.U8 Q13,D17 @ Sadly, there's no VMULW.
++ VRSHRN.S16 D8, Q4, #8 @ Q4 = (c-a)*yweight+128>>8
++ VRSHRN.S16 D9, Q5, #8
++ VRSHRN.S16 D12,Q6, #8 @ Q6 = (d-b)*yweight+128>>8
++ VRSHRN.S16 D13,Q7, #8
++ VADD.I8 Q10,Q10,Q4 @ Q10 = a+((c-a)*yweight+128>>8)
++ VADD.I8 Q11,Q11,Q6 @ Q11 = b+((d-b)*yweight+128>>8)
++ VSUBL.U8 Q4, D22,D20 @ Q5:Q4 = b-a
++ VSUBL.U8 Q5, D23,D21
++ VMUL.S16 Q4, Q4, Q12 @ Q5:Q4 = (b-a)*xweight
++ VMUL.S16 Q5, Q5, Q13
++ VRSHRN.S16 D8, Q4, #8 @ Q4 = (b-a)*xweight+128>>8
++ ADD r12,r7, r9
++ VRSHRN.S16 D9, Q5, #8
++ MOV r12,r12,ASR #17
++ VADD.I8 Q8, Q10,Q4 @ Q8 = a+((b-a)*xweight+128>>8)
++ @ Start extracting the chroma x coordinates, and load Cb and Cr.
++ AND r12,r12,#~15 @ Read 16-byte aligned blocks
++ VDUP.I32 Q9, r9 @ Q9 = source_uv_xoffs_q16 x 4
++ ADD r14,r2, r12
++ VADD.I32 Q10,Q0, Q9
++ VLD1.64 {D8, D9, D10,D11},[r14,:128] @ Load Cb
++ PLD [r14,#64]
++ VADD.I32 Q11,Q1, Q9
++ ADD r14,r3, r12
++ VADD.I32 Q12,Q2, Q9
++ VLD1.64 {D12,D13,D14,D15},[r14,:128] @ Load Cr
++ PLD [r14,#64]
++ VADD.I32 Q13,Q3, Q9
++ VRSHRN.S32 D20,Q10,#9 @ Q10 = <xEwExCwCxAwAx8w8x6w6x4w4x2w2x0w0>
++ VRSHRN.S32 D21,Q11,#9
++ VDUP.I8 Q9, r12
++ VRSHRN.S32 D22,Q12,#9 @ Q11 = <xFwFxDwDxBwBx9w9x7w7x5w5x3w3x1w1>
++ VRSHRN.S32 D23,Q13,#9
++ @ We don't actually need the x weights, but we get them for free.
++ @ Free ALU slot
++ VTRN.8 Q10,Q11 @ Q10 = <wFwEwDwCwBwAw9w8w7w6w5w4w3w2w1w0>
++ @ Free ALU slot @ Q11 = <xFxExDxCxBxAx9x8x7x6x5x4x3x2x1x0>
++ VSUB.S8 Q11,Q11,Q9 @ Make offsets relative to the data we loaded.
++ VTBL.8 D18,{D8, D9, D10,D11},D22 @ Index Cb at source_x
++ VMOV.I8 D24,#74
++ VTBL.8 D19,{D8, D9, D10,D11},D23
++ VMOV.I8 D26,#102
++ VTBL.8 D20,{D12,D13,D14,D15},D22 @ Index Cr at source_x
++ VMOV.I8 D27,#25
++ VTBL.8 D21,{D12,D13,D14,D15},D23
++ @ We now have Y' in Q8, Cb in Q9, and Cr in Q10
++ @ We use VDUP to expand constants, because it's a permute instruction, so
++ @ it can dual issue on the A8.
++ SUBS r6, r6, #16 @ width -= 16
++ VMULL.U8 Q4, D16,D24 @ Q5:Q4 = Y'*74
++ VDUP.32 Q6, D30[1] @ Q7:Q6 = bias_G
++ VMULL.U8 Q5, D17,D24
++ VDUP.32 Q7, D30[1]
++ VMLSL.U8 Q6, D18,D27 @ Q7:Q6 = -25*Cb+bias_G
++ VDUP.32 Q11,D30[0] @ Q12:Q11 = bias_R
++ VMLSL.U8 Q7, D19,D27
++ VDUP.32 Q12,D30[0]
++ VMLAL.U8 Q11,D20,D26 @ Q12:Q11 = 102*Cr+bias_R
++ VDUP.32 Q8, D31[0] @ Q13:Q8 = bias_B
++ VMLAL.U8 Q12,D21,D26
++ VDUP.32 Q13,D31[0]
++ VMLAL.U8 Q8, D18,D29 @ Q13:Q8 = 129*Cb+bias_B
++ VMLAL.U8 Q13,D19,D29
++ VMLSL.U8 Q6, D20,D28 @ Q7:Q6 = -25*Cb-52*Cr+bias_G
++ VMLSL.U8 Q7, D21,D28
++ VADD.S16 Q11,Q4, Q11 @ Q12:Q11 = 74*Y'+102*Cr+bias_R
++ VADD.S16 Q12,Q5, Q12
++ VQADD.S16 Q8, Q4, Q8 @ Q13:Q8 = 74*Y'+129*Cr+bias_B
++ VQADD.S16 Q13,Q5, Q13
++ VADD.S16 Q6, Q4, Q6 @ Q7:Q6 = 74*Y'-25*Cb-52*Cr+bias_G
++ VADD.S16 Q7, Q5, Q7
++ @ Push each value to the top of its word and saturate it.
++ VQSHLU.S16 Q11,Q11,#2
++ VQSHLU.S16 Q12,Q12,#2
++ VQSHLU.S16 Q6, Q6, #2
++ VQSHLU.S16 Q7, Q7, #2
++ VQSHLU.S16 Q8, Q8, #2
++ VQSHLU.S16 Q13,Q13,#2
++ @ Merge G and B into R.
++ VSRI.U16 Q11,Q6, #5
++ VSRI.U16 Q12,Q7, #5
++ VSRI.U16 Q11,Q8, #11
++ MOV r14,r8, LSL #4
++ VSRI.U16 Q12,Q13,#11
++ BLT s42xbily_neon_tail
++ VDUP.I32 Q13,r14
++ @ Store the result.
++ VST1.16 {D22,D23,D24,D25},[r0]!
++ BEQ s42xbily_neon_done
++ @ Advance the x coordinates.
++ VADD.I32 Q0, Q0, Q13
++ VADD.I32 Q1, Q1, Q13
++ ADD r7, r14
++ VADD.I32 Q2, Q2, Q13
++ VADD.I32 Q3, Q3, Q13
++ B s42xbily_neon_loop
++s42xbily_neon_tail:
++ @ We have between 1 and 15 pixels left to write.
++ @ -r6 == the number of pixels we need to skip writing.
++ @ Adjust r0 to point to the last one we need to write, because we're going
++ @ to write them in reverse order.
++ ADD r0, r0, r6, LSL #1
++ MOV r14,#-2
++ ADD r0, r0, #30
++ @ Skip past the ones we don't need to write.
++ SUB PC, PC, r6, LSL #2
++ ORR r0, r0, r0
++ VST1.16 {D25[3]},[r0,:16],r14
++ VST1.16 {D25[2]},[r0,:16],r14
++ VST1.16 {D25[1]},[r0,:16],r14
++ VST1.16 {D25[0]},[r0,:16],r14
++ VST1.16 {D24[3]},[r0,:16],r14
++ VST1.16 {D24[2]},[r0,:16],r14
++ VST1.16 {D24[1]},[r0,:16],r14
++ VST1.16 {D24[0]},[r0,:16],r14
++ VST1.16 {D23[3]},[r0,:16],r14
++ VST1.16 {D23[2]},[r0,:16],r14
++ VST1.16 {D23[1]},[r0,:16],r14
++ VST1.16 {D23[0]},[r0,:16],r14
++ VST1.16 {D22[3]},[r0,:16],r14
++ VST1.16 {D22[2]},[r0,:16],r14
++ VST1.16 {D22[1]},[r0,:16],r14
++ VST1.16 {D22[0]},[r0,:16]
++s42xbily_neon_done:
++ VPOP {Q4-Q7} @ 16 words.
++ LDMFD r13!,{r4-r9,PC} @ 8 words.
++ UNWIND .fnend
++ .cfi_endproc
++ .size ScaleYCbCr42xToRGB565_BilinearY_Row_NEON, .-ScaleYCbCr42xToRGB565_BilinearY_Row_NEON
++
++#if defined(__ELF__)&&(defined(__linux__) || defined(__NetBSD__))
++ .section .note.GNU-stack,"",%progbits
++#endif
diff --git a/security/tor-browser/patches/patch-image_decoders_nsJPEGDecoder.cpp b/security/tor-browser/patches/patch-image_decoders_nsJPEGDecoder.cpp
new file mode 100644
index 00000000000..f8c4b3aa589
--- /dev/null
+++ b/security/tor-browser/patches/patch-image_decoders_nsJPEGDecoder.cpp
@@ -0,0 +1,363 @@
+$NetBSD: patch-image_decoders_nsJPEGDecoder.cpp,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+--- image/decoders/nsJPEGDecoder.cpp.orig 2015-05-04 00:43:19.000000000 +0000
++++ image/decoders/nsJPEGDecoder.cpp
+@@ -23,13 +23,28 @@
+
+ extern "C" {
+ #include "iccjpeg.h"
+-}
+
++#ifdef JCS_EXTENSIONS
+ #if MOZ_BIG_ENDIAN
+ #define MOZ_JCS_EXT_NATIVE_ENDIAN_XRGB JCS_EXT_XRGB
+ #else
+ #define MOZ_JCS_EXT_NATIVE_ENDIAN_XRGB JCS_EXT_BGRX
+ #endif
++#else
++/* Colorspace conversion (copied from jpegint.h) */
++struct jpeg_color_deconverter {
++ JMETHOD(void, start_pass, (j_decompress_ptr cinfo));
++ JMETHOD(void, color_convert, (j_decompress_ptr cinfo,
++ JSAMPIMAGE input_buf, JDIMENSION input_row,
++ JSAMPARRAY output_buf, int num_rows));
++};
++
++METHODDEF(void)
++ycc_rgb_convert_argb (j_decompress_ptr cinfo,
++ JSAMPIMAGE input_buf, JDIMENSION input_row,
++ JSAMPARRAY output_buf, int num_rows);
++#endif
++}
+
+ static void cmyk_convert_rgb(JSAMPROW row, JDIMENSION width);
+
+@@ -373,6 +388,7 @@ nsJPEGDecoder::WriteInternal(const char*
+ case JCS_GRAYSCALE:
+ case JCS_RGB:
+ case JCS_YCbCr:
++#ifdef JCS_EXTENSIONS
+ // if we're not color managing we can decode directly to
+ // MOZ_JCS_EXT_NATIVE_ENDIAN_XRGB
+ if (mCMSMode != eCMSMode_All) {
+@@ -381,6 +397,9 @@ nsJPEGDecoder::WriteInternal(const char*
+ } else {
+ mInfo.out_color_space = JCS_RGB;
+ }
++#else
++ mInfo.out_color_space = JCS_RGB;
++#endif
+ break;
+ case JCS_CMYK:
+ case JCS_YCCK:
+@@ -450,6 +469,15 @@ nsJPEGDecoder::WriteInternal(const char*
+ return; // I/O suspension
+ }
+
++#ifndef JCS_EXTENSIONS
++ /* Force to use our YCbCr to Packed RGB converter when possible */
++ if (!mTransform && (mCMSMode != eCMSMode_All) &&
++ mInfo.jpeg_color_space == JCS_YCbCr && mInfo.out_color_space == JCS_RGB) {
++ /* Special case for the most common case: transform from YCbCr direct into packed ARGB */
++ mInfo.out_color_components = 4; /* Packed ARGB pixels are always 4 bytes...*/
++ mInfo.cconvert->color_convert = ycc_rgb_convert_argb;
++ }
++#endif
+
+ // If this is a progressive JPEG ...
+ mState = mInfo.buffered_image ?
+@@ -632,7 +660,11 @@ nsJPEGDecoder::OutputScanlines(bool* sus
+
+ MOZ_ASSERT(imageRow, "Should have a row buffer here");
+
++#ifdef JCS_EXTENSIONS
+ if (mInfo.out_color_space == MOZ_JCS_EXT_NATIVE_ENDIAN_XRGB) {
++#else
++ if (mInfo.cconvert->color_convert == ycc_rgb_convert_argb) {
++#endif
+ // Special case: scanline will be directly converted into packed ARGB
+ if (jpeg_read_scanlines(&mInfo, (JSAMPARRAY)&imageRow, 1) != 1) {
+ *suspend = true; // suspend
+@@ -959,6 +991,282 @@ term_source (j_decompress_ptr jd)
+ } // namespace mozilla
+
+
++#ifndef JCS_EXTENSIONS
++/**************** YCbCr -> Cairo's RGB24/ARGB32 conversion: most common case **************/
++
++/*
++ * YCbCr is defined per CCIR 601-1, except that Cb and Cr are
++ * normalized to the range 0..MAXJSAMPLE rather than -0.5 .. 0.5.
++ * The conversion equations to be implemented are therefore
++ * R = Y + 1.40200 * Cr
++ * G = Y - 0.34414 * Cb - 0.71414 * Cr
++ * B = Y + 1.77200 * Cb
++ * where Cb and Cr represent the incoming values less CENTERJSAMPLE.
++ * (These numbers are derived from TIFF 6.0 section 21, dated 3-June-92.)
++ *
++ * To avoid floating-point arithmetic, we represent the fractional constants
++ * as integers scaled up by 2^16 (about 4 digits precision); we have to divide
++ * the products by 2^16, with appropriate rounding, to get the correct answer.
++ * Notice that Y, being an integral input, does not contribute any fraction
++ * so it need not participate in the rounding.
++ *
++ * For even more speed, we avoid doing any multiplications in the inner loop
++ * by precalculating the constants times Cb and Cr for all possible values.
++ * For 8-bit JSAMPLEs this is very reasonable (only 256 entries per table);
++ * for 12-bit samples it is still acceptable. It's not very reasonable for
++ * 16-bit samples, but if you want lossless storage you shouldn't be changing
++ * colorspace anyway.
++ * The Cr=>R and Cb=>B values can be rounded to integers in advance; the
++ * values for the G calculation are left scaled up, since we must add them
++ * together before rounding.
++ */
++
++#define SCALEBITS 16 /* speediest right-shift on some machines */
++
++/* Use static tables for color processing. */
++/* Four tables, each 256 entries of 4 bytes totals 4K which is not bad... */
++
++const int Cr_r_tab[(MAXJSAMPLE+1) * sizeof(int)] ={
++ -0xb3, -0xb2, -0xb1, -0xaf, -0xae, -0xac,
++ -0xab, -0xaa, -0xa8, -0xa7, -0xa5, -0xa4,
++ -0xa3, -0xa1, -0xa0, -0x9e, -0x9d, -0x9c,
++ -0x9a, -0x99, -0x97, -0x96, -0x95, -0x93,
++ -0x92, -0x90, -0x8f, -0x8e, -0x8c, -0x8b,
++ -0x89, -0x88, -0x87, -0x85, -0x84, -0x82,
++ -0x81, -0x80, -0x7e, -0x7d, -0x7b, -0x7a,
++ -0x79, -0x77, -0x76, -0x74, -0x73, -0x72,
++ -0x70, -0x6f, -0x6d, -0x6c, -0x6b, -0x69,
++ -0x68, -0x66, -0x65, -0x64, -0x62, -0x61,
++ -0x5f, -0x5e, -0x5d, -0x5b, -0x5a, -0x58,
++ -0x57, -0x56, -0x54, -0x53, -0x51, -0x50,
++ -0x4f, -0x4d, -0x4c, -0x4a, -0x49, -0x48,
++ -0x46, -0x45, -0x43, -0x42, -0x40, -0x3f,
++ -0x3e, -0x3c, -0x3b, -0x39, -0x38, -0x37,
++ -0x35, -0x34, -0x32, -0x31, -0x30, -0x2e,
++ -0x2d, -0x2b, -0x2a, -0x29, -0x27, -0x26,
++ -0x24, -0x23, -0x22, -0x20, -0x1f, -0x1d,
++ -0x1c, -0x1b, -0x19, -0x18, -0x16, -0x15,
++ -0x14, -0x12, -0x11, -0x0f, -0x0e, -0x0d,
++ -0x0b, -0x0a, -0x08, -0x07, -0x06, -0x04,
++ -0x03, -0x01, 0x00, 0x01, 0x03, 0x04,
++ 0x06, 0x07, 0x08, 0x0a, 0x0b, 0x0d,
++ 0x0e, 0x0f, 0x11, 0x12, 0x14, 0x15,
++ 0x16, 0x18, 0x19, 0x1b, 0x1c, 0x1d,
++ 0x1f, 0x20, 0x22, 0x23, 0x24, 0x26,
++ 0x27, 0x29, 0x2a, 0x2b, 0x2d, 0x2e,
++ 0x30, 0x31, 0x32, 0x34, 0x35, 0x37,
++ 0x38, 0x39, 0x3b, 0x3c, 0x3e, 0x3f,
++ 0x40, 0x42, 0x43, 0x45, 0x46, 0x48,
++ 0x49, 0x4a, 0x4c, 0x4d, 0x4f, 0x50,
++ 0x51, 0x53, 0x54, 0x56, 0x57, 0x58,
++ 0x5a, 0x5b, 0x5d, 0x5e, 0x5f, 0x61,
++ 0x62, 0x64, 0x65, 0x66, 0x68, 0x69,
++ 0x6b, 0x6c, 0x6d, 0x6f, 0x70, 0x72,
++ 0x73, 0x74, 0x76, 0x77, 0x79, 0x7a,
++ 0x7b, 0x7d, 0x7e, 0x80, 0x81, 0x82,
++ 0x84, 0x85, 0x87, 0x88, 0x89, 0x8b,
++ 0x8c, 0x8e, 0x8f, 0x90, 0x92, 0x93,
++ 0x95, 0x96, 0x97, 0x99, 0x9a, 0x9c,
++ 0x9d, 0x9e, 0xa0, 0xa1, 0xa3, 0xa4,
++ 0xa5, 0xa7, 0xa8, 0xaa, 0xab, 0xac,
++ 0xae, 0xaf, 0xb1, 0xb2,
++ };
++
++const int Cb_b_tab[(MAXJSAMPLE+1) * sizeof(int)] ={
++ -0xe3, -0xe1, -0xdf, -0xde, -0xdc, -0xda,
++ -0xd8, -0xd6, -0xd5, -0xd3, -0xd1, -0xcf,
++ -0xce, -0xcc, -0xca, -0xc8, -0xc6, -0xc5,
++ -0xc3, -0xc1, -0xbf, -0xbe, -0xbc, -0xba,
++ -0xb8, -0xb7, -0xb5, -0xb3, -0xb1, -0xaf,
++ -0xae, -0xac, -0xaa, -0xa8, -0xa7, -0xa5,
++ -0xa3, -0xa1, -0x9f, -0x9e, -0x9c, -0x9a,
++ -0x98, -0x97, -0x95, -0x93, -0x91, -0x90,
++ -0x8e, -0x8c, -0x8a, -0x88, -0x87, -0x85,
++ -0x83, -0x81, -0x80, -0x7e, -0x7c, -0x7a,
++ -0x78, -0x77, -0x75, -0x73, -0x71, -0x70,
++ -0x6e, -0x6c, -0x6a, -0x69, -0x67, -0x65,
++ -0x63, -0x61, -0x60, -0x5e, -0x5c, -0x5a,
++ -0x59, -0x57, -0x55, -0x53, -0x52, -0x50,
++ -0x4e, -0x4c, -0x4a, -0x49, -0x47, -0x45,
++ -0x43, -0x42, -0x40, -0x3e, -0x3c, -0x3a,
++ -0x39, -0x37, -0x35, -0x33, -0x32, -0x30,
++ -0x2e, -0x2c, -0x2b, -0x29, -0x27, -0x25,
++ -0x23, -0x22, -0x20, -0x1e, -0x1c, -0x1b,
++ -0x19, -0x17, -0x15, -0x13, -0x12, -0x10,
++ -0x0e, -0x0c, -0x0b, -0x09, -0x07, -0x05,
++ -0x04, -0x02, 0x00, 0x02, 0x04, 0x05,
++ 0x07, 0x09, 0x0b, 0x0c, 0x0e, 0x10,
++ 0x12, 0x13, 0x15, 0x17, 0x19, 0x1b,
++ 0x1c, 0x1e, 0x20, 0x22, 0x23, 0x25,
++ 0x27, 0x29, 0x2b, 0x2c, 0x2e, 0x30,
++ 0x32, 0x33, 0x35, 0x37, 0x39, 0x3a,
++ 0x3c, 0x3e, 0x40, 0x42, 0x43, 0x45,
++ 0x47, 0x49, 0x4a, 0x4c, 0x4e, 0x50,
++ 0x52, 0x53, 0x55, 0x57, 0x59, 0x5a,
++ 0x5c, 0x5e, 0x60, 0x61, 0x63, 0x65,
++ 0x67, 0x69, 0x6a, 0x6c, 0x6e, 0x70,
++ 0x71, 0x73, 0x75, 0x77, 0x78, 0x7a,
++ 0x7c, 0x7e, 0x80, 0x81, 0x83, 0x85,
++ 0x87, 0x88, 0x8a, 0x8c, 0x8e, 0x90,
++ 0x91, 0x93, 0x95, 0x97, 0x98, 0x9a,
++ 0x9c, 0x9e, 0x9f, 0xa1, 0xa3, 0xa5,
++ 0xa7, 0xa8, 0xaa, 0xac, 0xae, 0xaf,
++ 0xb1, 0xb3, 0xb5, 0xb7, 0xb8, 0xba,
++ 0xbc, 0xbe, 0xbf, 0xc1, 0xc3, 0xc5,
++ 0xc6, 0xc8, 0xca, 0xcc, 0xce, 0xcf,
++ 0xd1, 0xd3, 0xd5, 0xd6, 0xd8, 0xda,
++ 0xdc, 0xde, 0xdf, 0xe1,
++ };
++
++const int Cr_g_tab[(MAXJSAMPLE+1) * sizeof(int)] ={
++ 0x5b6900, 0x5ab22e, 0x59fb5c, 0x59448a, 0x588db8, 0x57d6e6,
++ 0x572014, 0x566942, 0x55b270, 0x54fb9e, 0x5444cc, 0x538dfa,
++ 0x52d728, 0x522056, 0x516984, 0x50b2b2, 0x4ffbe0, 0x4f450e,
++ 0x4e8e3c, 0x4dd76a, 0x4d2098, 0x4c69c6, 0x4bb2f4, 0x4afc22,
++ 0x4a4550, 0x498e7e, 0x48d7ac, 0x4820da, 0x476a08, 0x46b336,
++ 0x45fc64, 0x454592, 0x448ec0, 0x43d7ee, 0x43211c, 0x426a4a,
++ 0x41b378, 0x40fca6, 0x4045d4, 0x3f8f02, 0x3ed830, 0x3e215e,
++ 0x3d6a8c, 0x3cb3ba, 0x3bfce8, 0x3b4616, 0x3a8f44, 0x39d872,
++ 0x3921a0, 0x386ace, 0x37b3fc, 0x36fd2a, 0x364658, 0x358f86,
++ 0x34d8b4, 0x3421e2, 0x336b10, 0x32b43e, 0x31fd6c, 0x31469a,
++ 0x308fc8, 0x2fd8f6, 0x2f2224, 0x2e6b52, 0x2db480, 0x2cfdae,
++ 0x2c46dc, 0x2b900a, 0x2ad938, 0x2a2266, 0x296b94, 0x28b4c2,
++ 0x27fdf0, 0x27471e, 0x26904c, 0x25d97a, 0x2522a8, 0x246bd6,
++ 0x23b504, 0x22fe32, 0x224760, 0x21908e, 0x20d9bc, 0x2022ea,
++ 0x1f6c18, 0x1eb546, 0x1dfe74, 0x1d47a2, 0x1c90d0, 0x1bd9fe,
++ 0x1b232c, 0x1a6c5a, 0x19b588, 0x18feb6, 0x1847e4, 0x179112,
++ 0x16da40, 0x16236e, 0x156c9c, 0x14b5ca, 0x13fef8, 0x134826,
++ 0x129154, 0x11da82, 0x1123b0, 0x106cde, 0x0fb60c, 0x0eff3a,
++ 0x0e4868, 0x0d9196, 0x0cdac4, 0x0c23f2, 0x0b6d20, 0x0ab64e,
++ 0x09ff7c, 0x0948aa, 0x0891d8, 0x07db06, 0x072434, 0x066d62,
++ 0x05b690, 0x04ffbe, 0x0448ec, 0x03921a, 0x02db48, 0x022476,
++ 0x016da4, 0x00b6d2, 0x000000, -0x00b6d2, -0x016da4, -0x022476,
++ -0x02db48, -0x03921a, -0x0448ec, -0x04ffbe, -0x05b690, -0x066d62,
++ -0x072434, -0x07db06, -0x0891d8, -0x0948aa, -0x09ff7c, -0x0ab64e,
++ -0x0b6d20, -0x0c23f2, -0x0cdac4, -0x0d9196, -0x0e4868, -0x0eff3a,
++ -0x0fb60c, -0x106cde, -0x1123b0, -0x11da82, -0x129154, -0x134826,
++ -0x13fef8, -0x14b5ca, -0x156c9c, -0x16236e, -0x16da40, -0x179112,
++ -0x1847e4, -0x18feb6, -0x19b588, -0x1a6c5a, -0x1b232c, -0x1bd9fe,
++ -0x1c90d0, -0x1d47a2, -0x1dfe74, -0x1eb546, -0x1f6c18, -0x2022ea,
++ -0x20d9bc, -0x21908e, -0x224760, -0x22fe32, -0x23b504, -0x246bd6,
++ -0x2522a8, -0x25d97a, -0x26904c, -0x27471e, -0x27fdf0, -0x28b4c2,
++ -0x296b94, -0x2a2266, -0x2ad938, -0x2b900a, -0x2c46dc, -0x2cfdae,
++ -0x2db480, -0x2e6b52, -0x2f2224, -0x2fd8f6, -0x308fc8, -0x31469a,
++ -0x31fd6c, -0x32b43e, -0x336b10, -0x3421e2, -0x34d8b4, -0x358f86,
++ -0x364658, -0x36fd2a, -0x37b3fc, -0x386ace, -0x3921a0, -0x39d872,
++ -0x3a8f44, -0x3b4616, -0x3bfce8, -0x3cb3ba, -0x3d6a8c, -0x3e215e,
++ -0x3ed830, -0x3f8f02, -0x4045d4, -0x40fca6, -0x41b378, -0x426a4a,
++ -0x43211c, -0x43d7ee, -0x448ec0, -0x454592, -0x45fc64, -0x46b336,
++ -0x476a08, -0x4820da, -0x48d7ac, -0x498e7e, -0x4a4550, -0x4afc22,
++ -0x4bb2f4, -0x4c69c6, -0x4d2098, -0x4dd76a, -0x4e8e3c, -0x4f450e,
++ -0x4ffbe0, -0x50b2b2, -0x516984, -0x522056, -0x52d728, -0x538dfa,
++ -0x5444cc, -0x54fb9e, -0x55b270, -0x566942, -0x572014, -0x57d6e6,
++ -0x588db8, -0x59448a, -0x59fb5c, -0x5ab22e,
++ };
++
++const int Cb_g_tab[(MAXJSAMPLE+1) * sizeof(int)] ={
++ 0x2c8d00, 0x2c34e6, 0x2bdccc, 0x2b84b2, 0x2b2c98, 0x2ad47e,
++ 0x2a7c64, 0x2a244a, 0x29cc30, 0x297416, 0x291bfc, 0x28c3e2,
++ 0x286bc8, 0x2813ae, 0x27bb94, 0x27637a, 0x270b60, 0x26b346,
++ 0x265b2c, 0x260312, 0x25aaf8, 0x2552de, 0x24fac4, 0x24a2aa,
++ 0x244a90, 0x23f276, 0x239a5c, 0x234242, 0x22ea28, 0x22920e,
++ 0x2239f4, 0x21e1da, 0x2189c0, 0x2131a6, 0x20d98c, 0x208172,
++ 0x202958, 0x1fd13e, 0x1f7924, 0x1f210a, 0x1ec8f0, 0x1e70d6,
++ 0x1e18bc, 0x1dc0a2, 0x1d6888, 0x1d106e, 0x1cb854, 0x1c603a,
++ 0x1c0820, 0x1bb006, 0x1b57ec, 0x1affd2, 0x1aa7b8, 0x1a4f9e,
++ 0x19f784, 0x199f6a, 0x194750, 0x18ef36, 0x18971c, 0x183f02,
++ 0x17e6e8, 0x178ece, 0x1736b4, 0x16de9a, 0x168680, 0x162e66,
++ 0x15d64c, 0x157e32, 0x152618, 0x14cdfe, 0x1475e4, 0x141dca,
++ 0x13c5b0, 0x136d96, 0x13157c, 0x12bd62, 0x126548, 0x120d2e,
++ 0x11b514, 0x115cfa, 0x1104e0, 0x10acc6, 0x1054ac, 0x0ffc92,
++ 0x0fa478, 0x0f4c5e, 0x0ef444, 0x0e9c2a, 0x0e4410, 0x0debf6,
++ 0x0d93dc, 0x0d3bc2, 0x0ce3a8, 0x0c8b8e, 0x0c3374, 0x0bdb5a,
++ 0x0b8340, 0x0b2b26, 0x0ad30c, 0x0a7af2, 0x0a22d8, 0x09cabe,
++ 0x0972a4, 0x091a8a, 0x08c270, 0x086a56, 0x08123c, 0x07ba22,
++ 0x076208, 0x0709ee, 0x06b1d4, 0x0659ba, 0x0601a0, 0x05a986,
++ 0x05516c, 0x04f952, 0x04a138, 0x04491e, 0x03f104, 0x0398ea,
++ 0x0340d0, 0x02e8b6, 0x02909c, 0x023882, 0x01e068, 0x01884e,
++ 0x013034, 0x00d81a, 0x008000, 0x0027e6, -0x003034, -0x00884e,
++ -0x00e068, -0x013882, -0x01909c, -0x01e8b6, -0x0240d0, -0x0298ea,
++ -0x02f104, -0x03491e, -0x03a138, -0x03f952, -0x04516c, -0x04a986,
++ -0x0501a0, -0x0559ba, -0x05b1d4, -0x0609ee, -0x066208, -0x06ba22,
++ -0x07123c, -0x076a56, -0x07c270, -0x081a8a, -0x0872a4, -0x08cabe,
++ -0x0922d8, -0x097af2, -0x09d30c, -0x0a2b26, -0x0a8340, -0x0adb5a,
++ -0x0b3374, -0x0b8b8e, -0x0be3a8, -0x0c3bc2, -0x0c93dc, -0x0cebf6,
++ -0x0d4410, -0x0d9c2a, -0x0df444, -0x0e4c5e, -0x0ea478, -0x0efc92,
++ -0x0f54ac, -0x0facc6, -0x1004e0, -0x105cfa, -0x10b514, -0x110d2e,
++ -0x116548, -0x11bd62, -0x12157c, -0x126d96, -0x12c5b0, -0x131dca,
++ -0x1375e4, -0x13cdfe, -0x142618, -0x147e32, -0x14d64c, -0x152e66,
++ -0x158680, -0x15de9a, -0x1636b4, -0x168ece, -0x16e6e8, -0x173f02,
++ -0x17971c, -0x17ef36, -0x184750, -0x189f6a, -0x18f784, -0x194f9e,
++ -0x19a7b8, -0x19ffd2, -0x1a57ec, -0x1ab006, -0x1b0820, -0x1b603a,
++ -0x1bb854, -0x1c106e, -0x1c6888, -0x1cc0a2, -0x1d18bc, -0x1d70d6,
++ -0x1dc8f0, -0x1e210a, -0x1e7924, -0x1ed13e, -0x1f2958, -0x1f8172,
++ -0x1fd98c, -0x2031a6, -0x2089c0, -0x20e1da, -0x2139f4, -0x21920e,
++ -0x21ea28, -0x224242, -0x229a5c, -0x22f276, -0x234a90, -0x23a2aa,
++ -0x23fac4, -0x2452de, -0x24aaf8, -0x250312, -0x255b2c, -0x25b346,
++ -0x260b60, -0x26637a, -0x26bb94, -0x2713ae, -0x276bc8, -0x27c3e2,
++ -0x281bfc, -0x287416, -0x28cc30, -0x29244a, -0x297c64, -0x29d47e,
++ -0x2a2c98, -0x2a84b2, -0x2adccc, -0x2b34e6,
++ };
++
++
++/* We assume that right shift corresponds to signed division by 2 with
++ * rounding towards minus infinity. This is correct for typical "arithmetic
++ * shift" instructions that shift in copies of the sign bit. But some
++ * C compilers implement >> with an unsigned shift. For these machines you
++ * must define RIGHT_SHIFT_IS_UNSIGNED.
++ * RIGHT_SHIFT provides a proper signed right shift of an INT32 quantity.
++ * It is only applied with constant shift counts. SHIFT_TEMPS must be
++ * included in the variables of any routine using RIGHT_SHIFT.
++ */
++
++#ifdef RIGHT_SHIFT_IS_UNSIGNED
++#define SHIFT_TEMPS INT32 shift_temp;
++#define RIGHT_SHIFT(x,shft) \
++ ((shift_temp = (x)) < 0 ? \
++ (shift_temp >> (shft)) | ((~((INT32) 0)) << (32-(shft))) : \
++ (shift_temp >> (shft)))
++#else
++#define SHIFT_TEMPS
++#define RIGHT_SHIFT(x,shft) ((x) >> (shft))
++#endif
++
++
++METHODDEF(void)
++ycc_rgb_convert_argb (j_decompress_ptr cinfo,
++ JSAMPIMAGE input_buf, JDIMENSION input_row,
++ JSAMPARRAY output_buf, int num_rows)
++{
++ JDIMENSION num_cols = cinfo->output_width;
++ JSAMPLE * range_limit = cinfo->sample_range_limit;
++
++ SHIFT_TEMPS
++
++ /* This is used if we don't have SSE2 */
++
++ while (--num_rows >= 0) {
++ JSAMPROW inptr0 = input_buf[0][input_row];
++ JSAMPROW inptr1 = input_buf[1][input_row];
++ JSAMPROW inptr2 = input_buf[2][input_row];
++ input_row++;
++ uint32_t *outptr = (uint32_t *) *output_buf++;
++ for (JDIMENSION col = 0; col < num_cols; col++) {
++ int y = GETJSAMPLE(inptr0[col]);
++ int cb = GETJSAMPLE(inptr1[col]);
++ int cr = GETJSAMPLE(inptr2[col]);
++ JSAMPLE * range_limit_y = range_limit + y;
++ /* Range-limiting is essential due to noise introduced by DCT losses. */
++ outptr[col] = 0xFF000000 |
++ ( range_limit_y[Cr_r_tab[cr]] << 16 ) |
++ ( range_limit_y[((int) RIGHT_SHIFT(Cb_g_tab[cb] + Cr_g_tab[cr], SCALEBITS))] << 8 ) |
++ ( range_limit_y[Cb_b_tab[cb]] );
++ }
++ }
++}
++#endif
++
++
+ ///*************** Inverted CMYK -> RGB conversion *************************
+ /// Input is (Inverted) CMYK stored as 4 bytes per pixel.
+ /// Output is RGB stored as 3 bytes per pixel.
diff --git a/security/tor-browser/patches/patch-intl_hyphenation_hnjalloc.h b/security/tor-browser/patches/patch-intl_hyphenation_hnjalloc.h
new file mode 100644
index 00000000000..a6ca68eef8e
--- /dev/null
+++ b/security/tor-browser/patches/patch-intl_hyphenation_hnjalloc.h
@@ -0,0 +1,14 @@
+$NetBSD: patch-intl_hyphenation_hnjalloc.h,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+--- intl/hyphenation/hnjalloc.h.orig 2014-11-21 03:37:31.000000000 +0000
++++ intl/hyphenation/hnjalloc.h
+@@ -24,6 +24,9 @@
+ */
+
+ #include <stdio.h> /* ensure stdio.h is loaded before our macros */
++#ifdef __sun
++#include <wchar.h>
++#endif
+
+ #undef FILE
+ #define FILE hnjFile
diff --git a/security/tor-browser/patches/patch-intl_unicharutil_util_moz.build b/security/tor-browser/patches/patch-intl_unicharutil_util_moz.build
new file mode 100644
index 00000000000..a1141c9d4c6
--- /dev/null
+++ b/security/tor-browser/patches/patch-intl_unicharutil_util_moz.build
@@ -0,0 +1,13 @@
+$NetBSD: patch-intl_unicharutil_util_moz.build,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+--- intl/unicharutil/util/moz.build.orig 2015-03-27 02:20:20.000000000 +0000
++++ intl/unicharutil/util/moz.build
+@@ -38,5 +38,8 @@ if CONFIG['_MSC_VER']:
+ if CONFIG['ENABLE_INTL_API']:
+ CXXFLAGS += CONFIG['MOZ_ICU_CFLAGS']
+
++if CONFIG['MOZ_NATIVE_HARFBUZZ']:
++ CXXFLAGS += CONFIG['MOZ_HARFBUZZ_CFLAGS']
++
+ if CONFIG['GNU_CXX']:
+ FAIL_ON_WARNINGS = True
diff --git a/security/tor-browser/patches/patch-ipc_chromium_Makefile.in b/security/tor-browser/patches/patch-ipc_chromium_Makefile.in
new file mode 100644
index 00000000000..ce6fc5822a7
--- /dev/null
+++ b/security/tor-browser/patches/patch-ipc_chromium_Makefile.in
@@ -0,0 +1,13 @@
+$NetBSD: patch-ipc_chromium_Makefile.in,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+--- ipc/chromium/Makefile.in.orig 2014-05-29 23:30:52.000000000 +0000
++++ ipc/chromium/Makefile.in
+@@ -28,6 +28,8 @@ include $(topsrcdir)/config/rules.mk
+
+ ifdef MOZ_NATIVE_LIBEVENT # {
+
++OS_CPPFLAGS += $(filter %/compat, $(MOZ_LIBEVENT_CFLAGS))
++
+ export-preqs = \
+ $(call mkdir_deps,$(CURDIR)/third_party/libevent) \
+ $(NULL)
diff --git a/security/tor-browser/patches/patch-ipc_chromium_moz.build b/security/tor-browser/patches/patch-ipc_chromium_moz.build
new file mode 100644
index 00000000000..a74507d1d68
--- /dev/null
+++ b/security/tor-browser/patches/patch-ipc_chromium_moz.build
@@ -0,0 +1,18 @@
+$NetBSD: patch-ipc_chromium_moz.build,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+Don't assume cocoa toolkit just because OS_ARCH is Darwin.
+
+--- ipc/chromium/moz.build.orig 2014-05-06 22:55:41.000000000 +0000
++++ ipc/chromium/moz.build
+@@ -19,7 +19,10 @@ if CONFIG['OS_ARCH'] == 'WINNT':
+ else:
+ os_posix = 1
+ if CONFIG['OS_ARCH'] == 'Darwin':
+- os_macosx = 1
++ if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa':
++ os_macosx = 1
++ else:
++ os_bsd = 1
+ elif CONFIG['OS_ARCH'] == 'DragonFly':
+ os_dragonfly = 1
+ os_bsd = 1
diff --git a/security/tor-browser/patches/patch-ipc_chromium_src_base_atomicops.h b/security/tor-browser/patches/patch-ipc_chromium_src_base_atomicops.h
new file mode 100644
index 00000000000..5086327bc0e
--- /dev/null
+++ b/security/tor-browser/patches/patch-ipc_chromium_src_base_atomicops.h
@@ -0,0 +1,15 @@
+$NetBSD: patch-ipc_chromium_src_base_atomicops.h,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+* Avoid invalid cast errors under NetBSD/evbearmv7hf-el.
+
+--- ipc/chromium/src/base/atomicops.h.orig 2014-11-13 22:49:59.000000000 +0000
++++ ipc/chromium/src/base/atomicops.h
+@@ -45,7 +45,7 @@ typedef int64_t Atomic64;
+
+ // Use AtomicWord for a machine-sized pointer. It will use the Atomic32 or
+ // Atomic64 routines below, depending on your architecture.
+-#ifdef OS_OPENBSD
++#if defined(OS_OPENBSD) || (defined(OS_NETBSD) && defined(ARCH_CPU_ARM_FAMILY))
+ #ifdef ARCH_CPU_64_BITS
+ typedef Atomic64 AtomicWord;
+ #else
diff --git a/security/tor-browser/patches/patch-ipc_chromium_src_base_file__util.h b/security/tor-browser/patches/patch-ipc_chromium_src_base_file__util.h
new file mode 100644
index 00000000000..0d3a6657c73
--- /dev/null
+++ b/security/tor-browser/patches/patch-ipc_chromium_src_base_file__util.h
@@ -0,0 +1,14 @@
+$NetBSD: patch-ipc_chromium_src_base_file__util.h,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+--- ipc/chromium/src/base/file_util.h.orig 2013-12-05 16:07:35.000000000 +0000
++++ ipc/chromium/src/base/file_util.h
+@@ -16,7 +16,9 @@
+ #include <sys/stat.h>
+ #elif defined(OS_POSIX)
+ #include <sys/types.h>
++#if !defined(OS_SOLARIS)
+ #include <fts.h>
++#endif
+ #include <sys/stat.h>
+ #endif
+
diff --git a/security/tor-browser/patches/patch-ipc_chromium_src_base_file__util__posix.cc b/security/tor-browser/patches/patch-ipc_chromium_src_base_file__util__posix.cc
new file mode 100644
index 00000000000..3acbef4939b
--- /dev/null
+++ b/security/tor-browser/patches/patch-ipc_chromium_src_base_file__util__posix.cc
@@ -0,0 +1,51 @@
+$NetBSD: patch-ipc_chromium_src_base_file__util__posix.cc,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+* Just because OS_ARCH is Darwin does not mean MacOS X specific
+ implementation should be used.
+
+--- ipc/chromium/src/base/file_util_posix.cc.orig 2014-05-06 22:55:41.000000000 +0000
++++ ipc/chromium/src/base/file_util_posix.cc
+@@ -8,7 +8,7 @@
+ #include <errno.h>
+ #include <fcntl.h>
+ #include <fnmatch.h>
+-#ifndef ANDROID
++#if !defined(ANDROID) && !defined(OS_SOLARIS)
+ #include <fts.h>
+ #endif
+ #include <libgen.h>
+@@ -67,7 +67,7 @@ bool Delete(const FilePath& path, bool r
+ if (!recursive)
+ return (rmdir(path_str) == 0);
+
+-#ifdef ANDROID
++#if defined(ANDROID) || defined(OS_SOLARIS)
+ // XXX Need ftsless impl for bionic
+ return false;
+ #else
+@@ -140,7 +140,7 @@ bool CopyDirectory(const FilePath& from_
+ return false;
+ }
+
+-#ifdef ANDROID
++#if defined(ANDROID) || defined(OS_SOLARIS)
+ // XXX Need ftsless impl for bionic
+ return false;
+ #else
+@@ -435,7 +435,7 @@ bool SetCurrentDirectory(const FilePath&
+ return !ret;
+ }
+
+-#if !defined(OS_MACOSX)
++#if !defined(MOZ_WIDGET_COCOA)
+ bool GetTempDir(FilePath* path) {
+ const char* tmp = getenv("TMPDIR");
+ if (tmp)
+@@ -499,6 +499,6 @@ bool CopyFile(const FilePath& from_path,
+
+ return result;
+ }
+-#endif // !defined(OS_MACOSX)
++#endif // !defined(MOZ_WIDGET_COCOA)
+
+ } // namespace file_util
diff --git a/security/tor-browser/patches/patch-ipc_chromium_src_base_message__loop.cc b/security/tor-browser/patches/patch-ipc_chromium_src_base_message__loop.cc
new file mode 100644
index 00000000000..5077a27da12
--- /dev/null
+++ b/security/tor-browser/patches/patch-ipc_chromium_src_base_message__loop.cc
@@ -0,0 +1,40 @@
+$NetBSD: patch-ipc_chromium_src_base_message__loop.cc,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+Don't assume cocoa toolkit just because OS_ARCH is Darwin.
+
+--- ipc/chromium/src/base/message_loop.cc.orig 2014-05-29 23:30:52.000000000 +0000
++++ ipc/chromium/src/base/message_loop.cc
+@@ -14,20 +14,18 @@
+ #include "base/string_util.h"
+ #include "base/thread_local.h"
+
+-#if defined(OS_MACOSX)
++#if defined(MOZ_WIDGET_COCOA)
+ #include "base/message_pump_mac.h"
+ #endif
+ #if defined(OS_POSIX)
+ #include "base/message_pump_libevent.h"
+ #endif
+-#if defined(OS_LINUX) || defined(OS_BSD)
+ #if defined(MOZ_WIDGET_GTK)
+ #include "base/message_pump_glib.h"
+ #endif
+ #ifdef MOZ_WIDGET_QT
+ #include "base/message_pump_qt.h"
+ #endif
+-#endif
+ #ifdef ANDROID
+ #include "base/message_pump_android.h"
+ #endif
+@@ -135,9 +133,9 @@ MessageLoop::MessageLoop(Type type)
+ }
+ #elif defined(OS_POSIX)
+ if (type_ == TYPE_UI) {
+-#if defined(OS_MACOSX)
++#if defined(MOZ_WIDGET_COCOA)
+ pump_ = base::MessagePumpMac::Create();
+-#elif defined(OS_LINUX) || defined(OS_BSD)
++#elif defined(MOZ_WIDGET_GTK) || defined(MOZ_WIDGET_QT)
+ pump_ = new base::MessagePumpForUI();
+ #endif // OS_LINUX
+ } else if (type_ == TYPE_IO) {
diff --git a/security/tor-browser/patches/patch-ipc_chromium_src_base_platform__thread.h b/security/tor-browser/patches/patch-ipc_chromium_src_base_platform__thread.h
new file mode 100644
index 00000000000..64ac92a4b77
--- /dev/null
+++ b/security/tor-browser/patches/patch-ipc_chromium_src_base_platform__thread.h
@@ -0,0 +1,14 @@
+$NetBSD: patch-ipc_chromium_src_base_platform__thread.h,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+--- ipc/chromium/src/base/platform_thread.h.orig 2013-09-10 03:43:34.000000000 +0000
++++ ipc/chromium/src/base/platform_thread.h
+@@ -25,6 +25,9 @@ typedef pthread_t PlatformThreadHandle;
+ #if defined(OS_LINUX) || defined(OS_OPENBSD) || defined(__GLIBC__)
+ #include <unistd.h>
+ typedef pid_t PlatformThreadId;
++#elif defined(OS_SOLARIS)
++#include <sys/lwp.h>
++typedef lwpid_t PlatformThreadId;
+ #elif defined(OS_BSD)
+ #include <sys/types.h>
+ typedef lwpid_t PlatformThreadId;
diff --git a/security/tor-browser/patches/patch-ipc_chromium_src_base_platform__thread__posix.cc b/security/tor-browser/patches/patch-ipc_chromium_src_base_platform__thread__posix.cc
new file mode 100644
index 00000000000..59371d76403
--- /dev/null
+++ b/security/tor-browser/patches/patch-ipc_chromium_src_base_platform__thread__posix.cc
@@ -0,0 +1,92 @@
+$NetBSD: patch-ipc_chromium_src_base_platform__thread__posix.cc,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+* Just because OS_ARCH is Darwin does not mean MacOS X specific
+ kludges are needed.
+
+--- ipc/chromium/src/base/platform_thread_posix.cc.orig 2014-05-06 22:55:41.000000000 +0000
++++ ipc/chromium/src/base/platform_thread_posix.cc
+@@ -9,8 +9,12 @@
+
+ #if defined(OS_MACOSX)
+ #include <mach/mach.h>
++#include <dlfcn.h>
++#include <string>
+ #elif defined(OS_NETBSD)
++_Pragma("GCC visibility push(default)")
+ #include <lwp.h>
++_Pragma("GCC visibility pop")
+ #elif defined(OS_LINUX)
+ #include <sys/syscall.h>
+ #include <sys/prctl.h>
+@@ -19,15 +23,13 @@
+ #include <sys/thr.h>
+ #endif
+
+-#if !defined(OS_MACOSX)
+ #include <unistd.h>
+-#endif
+
+ #if defined(OS_BSD) && !defined(OS_NETBSD) && !defined(__GLIBC__)
+ #include <pthread_np.h>
+ #endif
+
+-#if defined(OS_MACOSX)
++#if defined(MOZ_WIDGET_COCOA)
+ namespace base {
+ void InitThreading();
+ } // namespace
+@@ -91,7 +93,7 @@ void PlatformThread::Sleep(int duration_
+ sleep_time = remaining;
+ }
+
+-#ifndef OS_MACOSX
++#ifndef MOZ_WIDGET_COCOA
+ // Mac is implemented in platform_thread_mac.mm.
+
+ // static
+@@ -114,19 +116,41 @@ void PlatformThread::SetName(const char*
+ pthread_setname_np(pthread_self(), "%s", (void *)name);
+ #elif defined(OS_BSD) && !defined(__GLIBC__)
+ pthread_set_name_np(pthread_self(), name);
+-#else
++#elif defined(OS_MACOSX)
++ // Copied from platform_thread_mac.mm
++
++ // pthread_setname_np is only available in 10.6 or later, so test
++ // for it at runtime.
++ int (*dynamic_pthread_setname_np)(const char*);
++ *reinterpret_cast<void**>(&dynamic_pthread_setname_np) =
++ dlsym(RTLD_DEFAULT, "pthread_setname_np");
++ if (!dynamic_pthread_setname_np)
++ return;
++
++ // Mac OS X does not expose the length limit of the name, so
++ // hardcode it.
++ const int kMaxNameLength = 63;
++ std::string shortened_name = std::string(name).substr(0, kMaxNameLength);
++ // pthread_setname() fails (harmlessly) in the sandbox, ignore when it does.
++ // See http://crbug.com/47058
++
++ // The name parameter is copied thus it's safe to release it after calling.
++ // Checked against the bionic implementation in bionic/libc/bionic/pthread.c
++ dynamic_pthread_setname_np(shortened_name.c_str());
++#elif !defined(OS_SOLARIS)
++ prctl(PR_SET_NAME, reinterpret_cast<uintptr_t>(name), 0, 0, 0);
+ #endif
+ }
+-#endif // !OS_MACOSX
++#endif // !MOZ_WIDGET_COCOA
+
+ namespace {
+
+ bool CreateThread(size_t stack_size, bool joinable,
+ PlatformThread::Delegate* delegate,
+ PlatformThreadHandle* thread_handle) {
+-#if defined(OS_MACOSX)
++#if defined(MOZ_WIDGET_COCOA)
+ base::InitThreading();
+-#endif // OS_MACOSX
++#endif // MOZ_WIDGET_COCOA
+
+ bool success = false;
+ pthread_attr_t attributes;
diff --git a/security/tor-browser/patches/patch-ipc_chromium_src_base_process__util.h b/security/tor-browser/patches/patch-ipc_chromium_src_base_process__util.h
new file mode 100644
index 00000000000..e2b5d3b3a10
--- /dev/null
+++ b/security/tor-browser/patches/patch-ipc_chromium_src_base_process__util.h
@@ -0,0 +1,14 @@
+$NetBSD: patch-ipc_chromium_src_base_process__util.h,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+--- ipc/chromium/src/base/process_util.h.orig 2015-01-09 04:38:16.000000000 +0000
++++ ipc/chromium/src/base/process_util.h
+@@ -41,6 +41,9 @@
+ typedef PROCESSENTRY32 ProcessEntry;
+ typedef IO_COUNTERS IoCounters;
+ #elif defined(OS_POSIX)
++#ifndef NAME_MAX
++#define NAME_MAX _POSIX_NAME_MAX
++#endif
+ // TODO(port): we should not rely on a Win32 structure.
+ struct ProcessEntry {
+ int pid;
diff --git a/security/tor-browser/patches/patch-ipc_chromium_src_base_process__util__bsd.cc b/security/tor-browser/patches/patch-ipc_chromium_src_base_process__util__bsd.cc
new file mode 100644
index 00000000000..d517f096b83
--- /dev/null
+++ b/security/tor-browser/patches/patch-ipc_chromium_src_base_process__util__bsd.cc
@@ -0,0 +1,17 @@
+$NetBSD: patch-ipc_chromium_src_base_process__util__bsd.cc,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+Darwin does not provide kvm_getprocs(3). The code for OS_MACOSX is
+simply copied from process_util_mac.mm
+
+--- ipc/chromium/src/base/process_util_bsd.cc.orig 2014-10-11 09:06:28.000000000 +0000
++++ ipc/chromium/src/base/process_util_bsd.cc
+@@ -9,6 +9,9 @@
+ #include <sys/wait.h>
+
+ #include <fcntl.h>
++#if defined(OS_BSD)
++#include <kvm.h>
++#endif
+ #include <unistd.h>
+
+ #include <string>
diff --git a/security/tor-browser/patches/patch-ipc_chromium_src_base_process__util__posix.cc b/security/tor-browser/patches/patch-ipc_chromium_src_base_process__util__posix.cc
new file mode 100644
index 00000000000..47622b200ae
--- /dev/null
+++ b/security/tor-browser/patches/patch-ipc_chromium_src_base_process__util__posix.cc
@@ -0,0 +1,22 @@
+$NetBSD: patch-ipc_chromium_src_base_process__util__posix.cc,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+--- ipc/chromium/src/base/process_util_posix.cc.orig 2013-05-11 19:19:32.000000000 +0000
++++ ipc/chromium/src/base/process_util_posix.cc
+@@ -110,7 +110,7 @@ void CloseSuperfluousFds(const base::Inj
+ #if defined(ANDROID)
+ static const rlim_t kSystemDefaultMaxFds = 1024;
+ static const char kFDDir[] = "/proc/self/fd";
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_SOLARIS)
+ static const rlim_t kSystemDefaultMaxFds = 8192;
+ static const char kFDDir[] = "/proc/self/fd";
+ #elif defined(OS_MACOSX)
+@@ -202,7 +202,7 @@ void CloseSuperfluousFds(const base::Inj
+ // TODO(agl): Remove this function. It's fundamentally broken for multithreaded
+ // apps.
+ void SetAllFDsToCloseOnExec() {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_SOLARIS)
+ const char fd_dir[] = "/proc/self/fd";
+ #elif defined(OS_MACOSX) || defined(OS_BSD)
+ const char fd_dir[] = "/dev/fd";
diff --git a/security/tor-browser/patches/patch-ipc_chromium_src_base_scoped__nsautorelease__pool.h b/security/tor-browser/patches/patch-ipc_chromium_src_base_scoped__nsautorelease__pool.h
new file mode 100644
index 00000000000..d855ac38b25
--- /dev/null
+++ b/security/tor-browser/patches/patch-ipc_chromium_src_base_scoped__nsautorelease__pool.h
@@ -0,0 +1,45 @@
+$NetBSD: patch-ipc_chromium_src_base_scoped__nsautorelease__pool.h,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+Just because OS_ARCH is Darwin does not mean ScopedNSAutoreleasePool
+is needed.
+
+--- ipc/chromium/src/base/scoped_nsautorelease_pool.h.orig 2014-05-06 22:55:41.000000000 +0000
++++ ipc/chromium/src/base/scoped_nsautorelease_pool.h
+@@ -7,13 +7,13 @@
+
+ #include "base/basictypes.h"
+
+-#if defined(OS_MACOSX)
++#if defined(MOZ_WIDGET_COCOA)
+ #if defined(__OBJC__)
+ @class NSAutoreleasePool;
+ #else // __OBJC__
+ class NSAutoreleasePool;
+ #endif // __OBJC__
+-#endif // OS_MACOSX
++#endif // MOZ_WIDGET_COCOA
+
+ namespace base {
+
+@@ -27,10 +27,10 @@ namespace base {
+ // ugly #ifdefs.
+ class ScopedNSAutoreleasePool {
+ public:
+-#if !defined(OS_MACOSX)
++#if !defined(MOZ_WIDGET_COCOA)
+ ScopedNSAutoreleasePool() {}
+ void Recycle() { }
+-#else // OS_MACOSX
++#else // MOZ_WIDGET_COCOA
+ ScopedNSAutoreleasePool();
+ ~ScopedNSAutoreleasePool();
+
+@@ -41,7 +41,7 @@ class ScopedNSAutoreleasePool {
+ void Recycle();
+ private:
+ NSAutoreleasePool* autorelease_pool_;
+-#endif // OS_MACOSX
++#endif // MOZ_WIDGET_COCOA
+
+ private:
+ DISALLOW_COPY_AND_ASSIGN(ScopedNSAutoreleasePool);
diff --git a/security/tor-browser/patches/patch-ipc_chromium_src_base_sys__info__posix.cc b/security/tor-browser/patches/patch-ipc_chromium_src_base_sys__info__posix.cc
new file mode 100644
index 00000000000..49ed52ad7b7
--- /dev/null
+++ b/security/tor-browser/patches/patch-ipc_chromium_src_base_sys__info__posix.cc
@@ -0,0 +1,28 @@
+$NetBSD: patch-ipc_chromium_src_base_sys__info__posix.cc,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+--- ipc/chromium/src/base/sys_info_posix.cc.orig 2014-04-18 02:03:04.000000000 +0000
++++ ipc/chromium/src/base/sys_info_posix.cc
+@@ -119,7 +119,11 @@ std::wstring SysInfo::GetEnvVar(const wc
+
+ // static
+ std::string SysInfo::OperatingSystemName() {
++#ifdef OS_SOLARIS
++ struct utsname info;
++#else
+ utsname info;
++#endif
+ if (uname(&info) < 0) {
+ NOTREACHED();
+ return "";
+@@ -129,7 +133,11 @@ std::string SysInfo::OperatingSystemName
+
+ // static
+ std::string SysInfo::OperatingSystemVersion() {
++#ifdef OS_SOLARIS
++ struct utsname info;
++#else
+ utsname info;
++#endif
+ if (uname(&info) < 0) {
+ NOTREACHED();
+ return "";
diff --git a/security/tor-browser/patches/patch-ipc_chromium_src_base_time__posix.cc b/security/tor-browser/patches/patch-ipc_chromium_src_base_time__posix.cc
new file mode 100644
index 00000000000..184b42ee933
--- /dev/null
+++ b/security/tor-browser/patches/patch-ipc_chromium_src_base_time__posix.cc
@@ -0,0 +1,15 @@
+$NetBSD: patch-ipc_chromium_src_base_time__posix.cc,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+--- ipc/chromium/src/base/time_posix.cc.orig 2013-05-11 19:19:32.000000000 +0000
++++ ipc/chromium/src/base/time_posix.cc
+@@ -65,8 +65,10 @@ Time Time::FromExploded(bool is_local, c
+ timestruct.tm_wday = exploded.day_of_week; // mktime/timegm ignore this
+ timestruct.tm_yday = 0; // mktime/timegm ignore this
+ timestruct.tm_isdst = -1; // attempt to figure it out
++#ifndef OS_SOLARIS
+ timestruct.tm_gmtoff = 0; // not a POSIX field, so mktime/timegm ignore
+ timestruct.tm_zone = NULL; // not a POSIX field, so mktime/timegm ignore
++#endif
+
+ time_t seconds;
+ #ifdef ANDROID
diff --git a/security/tor-browser/patches/patch-ipc_chromium_src_build_build__config.h b/security/tor-browser/patches/patch-ipc_chromium_src_build_build__config.h
new file mode 100644
index 00000000000..f6cf43eaf48
--- /dev/null
+++ b/security/tor-browser/patches/patch-ipc_chromium_src_build_build__config.h
@@ -0,0 +1,22 @@
+$NetBSD: patch-ipc_chromium_src_build_build__config.h,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+--- ipc/chromium/src/build/build_config.h.orig 2013-05-11 19:19:32.000000000 +0000
++++ ipc/chromium/src/build/build_config.h
+@@ -27,6 +27,8 @@
+ #define OS_NETBSD 1
+ #elif defined(__OpenBSD__)
+ #define OS_OPENBSD 1
++#elif defined(__sun)
++#define OS_SOLARIS 1
+ #elif defined(_WIN32)
+ #define OS_WIN 1
+ #else
+@@ -42,7 +44,7 @@
+
+ // For access to standard POSIX features, use OS_POSIX instead of a more
+ // specific macro.
+-#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
++#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD) || defined(OS_SOLARIS)
+ #define OS_POSIX 1
+ #endif
+
diff --git a/security/tor-browser/patches/patch-ipc_chromium_src_chrome_common_transport__dib.h b/security/tor-browser/patches/patch-ipc_chromium_src_chrome_common_transport__dib.h
new file mode 100644
index 00000000000..beea141f781
--- /dev/null
+++ b/security/tor-browser/patches/patch-ipc_chromium_src_chrome_common_transport__dib.h
@@ -0,0 +1,13 @@
+$NetBSD: patch-ipc_chromium_src_chrome_common_transport__dib.h,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+--- ipc/chromium/src/chrome/common/transport_dib.h.orig 2013-05-11 19:19:32.000000000 +0000
++++ ipc/chromium/src/chrome/common/transport_dib.h
+@@ -70,7 +70,7 @@ class TransportDIB {
+ typedef base::SharedMemoryHandle Handle;
+ // On Mac, the inode number of the backing file is used as an id.
+ typedef base::SharedMemoryId Id;
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_SOLARIS)
+ typedef int Handle; // These two ints are SysV IPC shared memory keys
+ typedef int Id;
+ #endif
diff --git a/security/tor-browser/patches/patch-ipc_glue_GeckoChildProcessHost.cpp b/security/tor-browser/patches/patch-ipc_glue_GeckoChildProcessHost.cpp
new file mode 100644
index 00000000000..d2da0bb142e
--- /dev/null
+++ b/security/tor-browser/patches/patch-ipc_glue_GeckoChildProcessHost.cpp
@@ -0,0 +1,48 @@
+$NetBSD: patch-ipc_glue_GeckoChildProcessHost.cpp,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+* Just because OS_ARCH is Darwin does not mean MacOS X specific
+ kludges are needed.
+
+--- ipc/glue/GeckoChildProcessHost.cpp.orig 2015-01-09 04:38:16.000000000 +0000
++++ ipc/glue/GeckoChildProcessHost.cpp
+@@ -4,7 +4,13 @@
+ * 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/. */
+
++#if defined(__NetBSD__)
++_Pragma("GCC visibility push(default)")
++#endif
+ #include "GeckoChildProcessHost.h"
++#if defined(__NetBSD__)
++_Pragma("GCC visibility pop")
++#endif
+
+ #include "base/command_line.h"
+ #include "base/string_util.h"
+@@ -533,7 +539,7 @@ GeckoChildProcessHost::PerformAsyncLaunc
+ // and passing wstrings from one config to the other is unsafe. So
+ // we split the logic here.
+
+-#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) || defined(OS_SOLARIS)
+ base::environment_map newEnvVars;
+ ChildPrivileges privs = mPrivileges;
+ if (privs == base::PRIVILEGES_DEFAULT) {
+@@ -672,7 +678,7 @@ GeckoChildProcessHost::PerformAsyncLaunc
+ childArgv.push_back(pidstring);
+
+ #if defined(MOZ_CRASHREPORTER)
+-# if defined(OS_LINUX) || defined(OS_BSD)
++# if defined(OS_LINUX) || defined(OS_BSD) || defined(OS_SOLARIS)
+ int childCrashFd, childCrashRemapFd;
+ if (!CrashReporter::CreateNotificationPipeForChild(
+ &childCrashFd, &childCrashRemapFd))
+@@ -705,7 +711,7 @@ GeckoChildProcessHost::PerformAsyncLaunc
+ childArgv.push_back(childProcessType);
+
+ base::LaunchApp(childArgv, mFileMap,
+-#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) || defined(OS_SOLARIS)
+ newEnvVars, privs,
+ #endif
+ false, &process, arch);
diff --git a/security/tor-browser/patches/patch-ipc_glue_ScopedXREEmbed.cpp b/security/tor-browser/patches/patch-ipc_glue_ScopedXREEmbed.cpp
new file mode 100644
index 00000000000..1526addee9a
--- /dev/null
+++ b/security/tor-browser/patches/patch-ipc_glue_ScopedXREEmbed.cpp
@@ -0,0 +1,16 @@
+$NetBSD: patch-ipc_glue_ScopedXREEmbed.cpp,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+Walking out of [subprocess].app/Contents/MacOS would only be needed if
+we were using the cocoa toolkit.
+
+--- ipc/glue/ScopedXREEmbed.cpp.orig 2014-05-06 22:55:41.000000000 +0000
++++ ipc/glue/ScopedXREEmbed.cpp
+@@ -66,7 +66,7 @@ ScopedXREEmbed::Start()
+ localFile = do_QueryInterface(parent);
+ NS_ENSURE_TRUE_VOID(localFile);
+
+-#ifdef OS_MACOSX
++#ifdef MOZ_WIDGET_COCOA
+ if (XRE_GetProcessType() == GeckoProcessType_Content) {
+ // We're an XPCOM-using subprocess. Walk out of
+ // [subprocess].app/Contents/MacOS to the real GRE dir.
diff --git a/security/tor-browser/patches/patch-ipc_glue_StringUtil.cpp b/security/tor-browser/patches/patch-ipc_glue_StringUtil.cpp
new file mode 100644
index 00000000000..94505c243c8
--- /dev/null
+++ b/security/tor-browser/patches/patch-ipc_glue_StringUtil.cpp
@@ -0,0 +1,24 @@
+$NetBSD: patch-ipc_glue_StringUtil.cpp,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+Just because OS_ARCH is Darwin does not mean
+sys_string_conversions_mac.mm can be used.
+
+--- ipc/glue/StringUtil.cpp.orig 2014-05-06 22:55:41.000000000 +0000
++++ ipc/glue/StringUtil.cpp
+@@ -64,14 +64,14 @@ namespace base {
+ // converters, and implementing the one that doesn't exist for OS X
+ // and Windows.
+
+-#if !defined(OS_MACOSX) && !defined(OS_WIN)
++#if !defined(MOZ_WIDGET_COCOA) && !defined(OS_WIN)
+ std::string SysWideToUTF8(const std::wstring& wide) {
+ // FIXME/cjones: do this with iconv
+ return GhettoStringConvert<std::wstring, std::string>(wide);
+ }
+ #endif
+
+-#if !defined(OS_MACOSX) && !defined(OS_WIN)
++#if !defined(MOZ_WIDGET_COCOA) && !defined(OS_WIN)
+ std::wstring SysUTF8ToWide(const StringPiece& utf8) {
+ // FIXME/cjones: do this with iconv
+ return GhettoStringConvert<StringPiece, std::wstring>(utf8);
diff --git a/security/tor-browser/patches/patch-ipc_glue_moz.build b/security/tor-browser/patches/patch-ipc_glue_moz.build
new file mode 100644
index 00000000000..159840c75d2
--- /dev/null
+++ b/security/tor-browser/patches/patch-ipc_glue_moz.build
@@ -0,0 +1,15 @@
+$NetBSD: patch-ipc_glue_moz.build,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+Don't assume cocoa toolkit just because OS_ARCH is Darwin.
+
+--- ipc/glue/moz.build.orig 2015-01-29 12:45:33.000000000 +0000
++++ ipc/glue/moz.build
+@@ -87,7 +87,7 @@ elif CONFIG['OS_ARCH'] in ('DragonFly',
+ UNIFIED_SOURCES += [
+ 'ProcessUtils_bsd.cpp'
+ ]
+-elif CONFIG['OS_ARCH'] in ('Darwin'):
++elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa':
+ UNIFIED_SOURCES += [
+ 'ProcessUtils_mac.mm'
+ ]
diff --git a/security/tor-browser/patches/patch-ipc_ipdl_ipdl_cxx_ast.py b/security/tor-browser/patches/patch-ipc_ipdl_ipdl_cxx_ast.py
new file mode 100644
index 00000000000..b625d1698ee
--- /dev/null
+++ b/security/tor-browser/patches/patch-ipc_ipdl_ipdl_cxx_ast.py
@@ -0,0 +1,25 @@
+$NetBSD: patch-ipc_ipdl_ipdl_cxx_ast.py,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+Part of https://bugzilla.mozilla.org/show_bug.cgi?id=1026499:
+Make sure storage provided for attributes is properly aligned
+in the generated C++ code.
+
+--- ipc/ipdl/ipdl/cxx/ast.py.orig 2014-07-17 01:45:18.000000000 +0000
++++ ipc/ipdl/ipdl/cxx/ast.py
+@@ -336,12 +336,13 @@ Type.VOID = Type('void')
+ Type.VOIDPTR = Type('void', ptr=1)
+
+ class TypeArray(Node):
+- def __init__(self, basetype, nmemb):
+- '''the type |basetype DECLNAME[nmemb]|. |nmemb| is an Expr'''
++ def __init__(self, basetype, nmemb, alignType):
++ '''the type |basetype DECLNAME[nmemb]|. |nmemb| is an Expr, |alignType| is a type'''
+ self.basetype = basetype
+ self.nmemb = nmemb
++ self.alignType = alignType
+ def __deepcopy__(self, memo):
+- return TypeArray(deepcopy(self.basetype, memo), nmemb)
++ return TypeArray(deepcopy(self.basetype, memo), nmemb, alignType)
+
+ class TypeEnum(Node):
+ def __init__(self, name=None):
diff --git a/security/tor-browser/patches/patch-ipc_ipdl_ipdl_cxx_cgen.py b/security/tor-browser/patches/patch-ipc_ipdl_ipdl_cxx_cgen.py
new file mode 100644
index 00000000000..2726317f39e
--- /dev/null
+++ b/security/tor-browser/patches/patch-ipc_ipdl_ipdl_cxx_cgen.py
@@ -0,0 +1,27 @@
+$NetBSD: patch-ipc_ipdl_ipdl_cxx_cgen.py,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+Part of https://bugzilla.mozilla.org/show_bug.cgi?id=1026499:
+Make sure storage provided for attributes is properly aligned
+in the generated C++ code.
+
+--- ipc/ipdl/ipdl/cxx/cgen.py.orig 2014-07-17 01:45:18.000000000 +0000
++++ ipc/ipdl/ipdl/cxx/cgen.py
+@@ -101,6 +101,7 @@ class CxxCodeGen(CodePrinter, Visitor):
+ def visitDecl(self, d):
+ # C-syntax arrays make code generation much more annoying
+ if isinstance(d.type, TypeArray):
++ self.write('MOZ_ALIGNED_DECL(')
+ d.type.basetype.accept(self)
+ else:
+ d.type.accept(self)
+@@ -111,7 +112,9 @@ class CxxCodeGen(CodePrinter, Visitor):
+ if isinstance(d.type, TypeArray):
+ self.write('[')
+ d.type.nmemb.accept(self)
+- self.write(']')
++ self.write('], MOZ_ALIGNOF(')
++ d.type.alignType.accept(self)
++ self.write('))')
+
+ def visitParam(self, p):
+ self.visitDecl(p)
diff --git a/security/tor-browser/patches/patch-ipc_ipdl_ipdl_lower.py b/security/tor-browser/patches/patch-ipc_ipdl_ipdl_lower.py
new file mode 100644
index 00000000000..51645c052d8
--- /dev/null
+++ b/security/tor-browser/patches/patch-ipc_ipdl_ipdl_lower.py
@@ -0,0 +1,17 @@
+$NetBSD: patch-ipc_ipdl_ipdl_lower.py,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+Part of https://bugzilla.mozilla.org/show_bug.cgi?id=1026499:
+Make sure storage provided for attributes is properly aligned
+in the generated C++ code.
+
+--- ipc/ipdl/ipdl/lower.py.orig 2014-07-17 01:45:18.000000000 +0000
++++ ipc/ipdl/ipdl/lower.py
+@@ -768,7 +768,7 @@ IPDL union type."""
+ if self.recursive:
+ return self.ptrToType()
+ else:
+- return TypeArray(Type('char'), ExprSizeof(self.internalType()))
++ return TypeArray(Type('char'), ExprSizeof(self.internalType()), self.internalType())
+
+ def unionValue(self):
+ # NB: knows that Union's storage C union is named |mValue|
diff --git a/security/tor-browser/patches/patch-js__src__vm__SPSProfiler.cpp b/security/tor-browser/patches/patch-js__src__vm__SPSProfiler.cpp
new file mode 100644
index 00000000000..3657dacbb48
--- /dev/null
+++ b/security/tor-browser/patches/patch-js__src__vm__SPSProfiler.cpp
@@ -0,0 +1,17 @@
+$NetBSD: patch-js__src__vm__SPSProfiler.cpp,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+Unclear fallout from our version of bug 840242, attachment v1: some architectures
+fail to link if we do not add the inlines here - might be compiler/arch specific.
+
+
+--- js/src/vm/SPSProfiler.cpp.orig 2014-04-18 02:03:21.000000000 +0000
++++ js/src/vm/SPSProfiler.cpp
+@@ -4,6 +4,8 @@
+ * 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/. */
+
++#include "jscntxtinlines.h"
++
+ #include "vm/SPSProfiler.h"
+
+ #include "mozilla/DebugOnly.h"
diff --git a/security/tor-browser/patches/patch-js_public_CallArgs.h b/security/tor-browser/patches/patch-js_public_CallArgs.h
new file mode 100644
index 00000000000..8805e1dbeb1
--- /dev/null
+++ b/security/tor-browser/patches/patch-js_public_CallArgs.h
@@ -0,0 +1,13 @@
+$NetBSD: patch-js_public_CallArgs.h,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+--- js/public/CallArgs.h.orig 2015-04-29 21:11:43.000000000 +0000
++++ js/public/CallArgs.h
+@@ -344,7 +344,7 @@ class MOZ_STACK_CLASS CallArgs : public
+ * Returns true if there are at least |required| arguments passed in. If
+ * false, it reports an error message on the context.
+ */
+- bool requireAtLeast(JSContext* cx, const char* fnname, unsigned required);
++ JS_PUBLIC_API(bool) requireAtLeast(JSContext* cx, const char* fnname, unsigned required);
+
+ };
+
diff --git a/security/tor-browser/patches/patch-js_src_Makefile.in b/security/tor-browser/patches/patch-js_src_Makefile.in
new file mode 100644
index 00000000000..a789c64d191
--- /dev/null
+++ b/security/tor-browser/patches/patch-js_src_Makefile.in
@@ -0,0 +1,14 @@
+$NetBSD: patch-js_src_Makefile.in,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+--- js/src/Makefile.in.orig 2015-02-17 21:40:38.000000000 +0000
++++ js/src/Makefile.in
+@@ -16,9 +16,6 @@ TOPLEVEL_BUILD := 1
+
+ run_for_side_effects := $(shell echo 'MAKE: $(MAKE)')
+
+-DIST_INSTALL = 1
+-NO_EXPAND_LIBS = 1
+-
+ ifdef JS_HAS_CTYPES
+ ifdef MOZ_NATIVE_FFI
+ LOCAL_INCLUDES = $(MOZ_FFI_CFLAGS)
diff --git a/security/tor-browser/patches/patch-js_src_asmjs_AsmJSSignalHandlers.cpp b/security/tor-browser/patches/patch-js_src_asmjs_AsmJSSignalHandlers.cpp
new file mode 100644
index 00000000000..1c58f69e8ec
--- /dev/null
+++ b/security/tor-browser/patches/patch-js_src_asmjs_AsmJSSignalHandlers.cpp
@@ -0,0 +1,22 @@
+$NetBSD: patch-js_src_asmjs_AsmJSSignalHandlers.cpp,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+Increase portability for non-x86 Darwin by not hardwiring
+x86_THREAD_STATE.
+
+--- js/src/asmjs/AsmJSSignalHandlers.cpp.orig 2015-05-04 00:43:23.000000000 +0000
++++ js/src/asmjs/AsmJSSignalHandlers.cpp
+@@ -637,10 +637,11 @@ HandleMachException(JSRuntime* rt, const
+ mach_port_t rtThread = request.body.thread.name;
+
+ // Read out the JSRuntime thread's register state.
+- x86_thread_state_t state;
+- unsigned int count = x86_THREAD_STATE_COUNT;
++ moz_platform_thread_state_t state;
++ thread_state_flavor_t flavor = MOZ_PLATFORM_THREAD_STATE_FLAVOR;
++ mach_msg_type_number_t count = MOZ_PLATFORM_THREAD_STATE_COUNT;
+ kern_return_t kret;
+- kret = thread_get_state(rtThread, x86_THREAD_STATE, (thread_state_t)&state, &count);
++ kret = thread_get_state(rtThread, flavor, (thread_state_t)&state, &count);
+ if (kret != KERN_SUCCESS)
+ return false;
+
diff --git a/security/tor-browser/patches/patch-js_src_ctypes_CTypes.h b/security/tor-browser/patches/patch-js_src_ctypes_CTypes.h
new file mode 100644
index 00000000000..aa2e23a26cd
--- /dev/null
+++ b/security/tor-browser/patches/patch-js_src_ctypes_CTypes.h
@@ -0,0 +1,28 @@
+$NetBSD: patch-js_src_ctypes_CTypes.h,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+--- js/src/ctypes/CTypes.h.orig 2014-02-12 21:29:02.000000000 +0000
++++ js/src/ctypes/CTypes.h
+@@ -14,6 +14,23 @@
+ #include "js/Vector.h"
+ #include "vm/String.h"
+
++#if defined(__NetBSD__)
++#include <stdint.h>
++/* XXX why do we have those funky __ #defines in stdint.h? */
++#warning this is a retarded workaround
++#define uint8_t uint8_t
++#define uint16_t uint16_t
++#define uint32_t uint32_t
++#define uint64_t uint64_t
++#define int8_t int8_t
++#define int16_t int16_t
++#define int32_t int32_t
++#define int64_t int64_t
++#define intptr_t intptr_t
++#define uintptr_t uintptr_t
++#define off_t off_t
++#endif
++
+ namespace js {
+ namespace ctypes {
+
diff --git a/security/tor-browser/patches/patch-js_src_frontend_ParseMaps.cpp b/security/tor-browser/patches/patch-js_src_frontend_ParseMaps.cpp
new file mode 100644
index 00000000000..7c225419800
--- /dev/null
+++ b/security/tor-browser/patches/patch-js_src_frontend_ParseMaps.cpp
@@ -0,0 +1,12 @@
+$NetBSD: patch-js_src_frontend_ParseMaps.cpp,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+--- js/src/frontend/ParseMaps.cpp.orig 2013-09-10 03:43:34.000000000 +0000
++++ js/src/frontend/ParseMaps.cpp
+@@ -132,5 +132,5 @@ frontend::InitAtomMap(JSContext *cx, fro
+ }
+ }
+
+-template class js::frontend::AtomDecls<FullParseHandler>;
+-template class js::frontend::AtomDecls<SyntaxParseHandler>;
++template class frontend::AtomDecls<FullParseHandler>;
++template class frontend::AtomDecls<SyntaxParseHandler>;
diff --git a/security/tor-browser/patches/patch-js_src_gc_Statistics.cpp b/security/tor-browser/patches/patch-js_src_gc_Statistics.cpp
new file mode 100644
index 00000000000..d77aaf022be
--- /dev/null
+++ b/security/tor-browser/patches/patch-js_src_gc_Statistics.cpp
@@ -0,0 +1,15 @@
+$NetBSD: patch-js_src_gc_Statistics.cpp,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+--- js/src/gc/Statistics.cpp.orig 2015-02-05 11:52:40.000000000 +0000
++++ js/src/gc/Statistics.cpp 2015-02-05 11:52:28.000000000 +0000
+@@ -221,8 +221,8 @@
+ while (*c) {
+ if (*c == ' ' || *c == '\t')
+ p('_');
+- else if (isupper(*c))
+- p(tolower(*c));
++ else if (isupper((unsigned char)*c))
++ p(tolower((unsigned char)*c));
+ else if (*c == '+')
+ p("added_");
+ else if (*c == '-')
diff --git a/security/tor-browser/patches/patch-js_src_jit-LIR.cpp b/security/tor-browser/patches/patch-js_src_jit-LIR.cpp
new file mode 100644
index 00000000000..3e6c05ed676
--- /dev/null
+++ b/security/tor-browser/patches/patch-js_src_jit-LIR.cpp
@@ -0,0 +1,13 @@
+$NetBSD: patch-js_src_jit-LIR.cpp,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+--- js/src/jit/LIR.cpp.orig 2015-05-04 00:43:27.000000000 +0000
++++ js/src/jit/LIR.cpp
+@@ -323,7 +323,7 @@ LNode::printName(FILE* fp, Opcode op)
+ const char* name = names[op];
+ size_t len = strlen(name);
+ for (size_t i = 0; i < len; i++)
+- fprintf(fp, "%c", tolower(name[i]));
++ fprintf(fp, "%c", tolower(((unsigned char)name[i])));
+ }
+
+ void
diff --git a/security/tor-browser/patches/patch-js_src_jit_ExecutableAllocator.h b/security/tor-browser/patches/patch-js_src_jit_ExecutableAllocator.h
new file mode 100644
index 00000000000..78dae23fd8f
--- /dev/null
+++ b/security/tor-browser/patches/patch-js_src_jit_ExecutableAllocator.h
@@ -0,0 +1,16 @@
+$NetBSD: patch-js_src_jit_ExecutableAllocator.h,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+--- js/src/jit/ExecutableAllocator.h.orig 2015-05-04 00:43:27.000000000 +0000
++++ js/src/jit/ExecutableAllocator.h
+@@ -419,6 +419,11 @@ class ExecutableAllocator {
+ {
+ __clear_cache(code, reinterpret_cast<char*>(code) + size);
+ }
++#elif defined(JS_CODEGEN_ARM) && (defined(__FreeBSD__) || defined(__NetBSD__))
++ static void cacheFlush(void* code, size_t size)
++ {
++ __clear_cache(code, reinterpret_cast<char*>(code) + size);
++ }
+ #elif defined(JS_CODEGEN_ARM) && (defined(__linux__) || defined(ANDROID)) && defined(__GNUC__)
+ static void cacheFlush(void* code, size_t size)
+ {
diff --git a/security/tor-browser/patches/patch-js_src_jit_MIR.cpp b/security/tor-browser/patches/patch-js_src_jit_MIR.cpp
new file mode 100644
index 00000000000..861d8f8f74e
--- /dev/null
+++ b/security/tor-browser/patches/patch-js_src_jit_MIR.cpp
@@ -0,0 +1,13 @@
+$NetBSD: patch-js_src_jit_MIR.cpp,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+--- js/src/jit/MIR.cpp.orig 2015-05-04 00:43:27.000000000 +0000
++++ js/src/jit/MIR.cpp
+@@ -71,7 +71,7 @@ MDefinition::PrintOpcodeName(FILE* fp, M
+ const char* name = names[op];
+ size_t len = strlen(name);
+ for (size_t i = 0; i < len; i++)
+- fprintf(fp, "%c", tolower(name[i]));
++ fprintf(fp, "%c", tolower(((unsigned char)name[i])));
+ }
+
+ const Value&
diff --git a/security/tor-browser/patches/patch-js_src_jit_arm_Architecture-arm.cpp b/security/tor-browser/patches/patch-js_src_jit_arm_Architecture-arm.cpp
new file mode 100644
index 00000000000..ee9fcfbd811
--- /dev/null
+++ b/security/tor-browser/patches/patch-js_src_jit_arm_Architecture-arm.cpp
@@ -0,0 +1,13 @@
+$NetBSD: patch-js_src_jit_arm_Architecture-arm.cpp,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+--- js/src/jit/arm/Architecture-arm.cpp.orig 2015-05-04 00:43:27.000000000 +0000
++++ js/src/jit/arm/Architecture-arm.cpp
+@@ -16,7 +16,7 @@
+ #include "jit/arm/Assembler-arm.h"
+ #include "jit/RegisterSets.h"
+
+-#if !defined(__linux__) || defined(ANDROID) || defined(JS_ARM_SIMULATOR)
++#if !defined(__linux__) || defined(ANDROID) || defined(JS_ARM_SIMULATOR) || defined(__NetBSD__)
+ // The Android NDK and B2G do not include the hwcap.h kernel header, and it is not
+ // defined when building the simulator, so inline the header defines we need.
+ # define HWCAP_VFP (1 << 6)
diff --git a/security/tor-browser/patches/patch-js_src_jsapi.cpp b/security/tor-browser/patches/patch-js_src_jsapi.cpp
new file mode 100644
index 00000000000..c74698b96f8
--- /dev/null
+++ b/security/tor-browser/patches/patch-js_src_jsapi.cpp
@@ -0,0 +1,13 @@
+$NetBSD: patch-js_src_jsapi.cpp,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+--- js/src/jsapi.cpp.orig 2015-04-29 21:11:46.000000000 +0000
++++ js/src/jsapi.cpp
+@@ -115,7 +115,7 @@ using js::frontend::Parser;
+ #define JS_ADDRESSOF_VA_LIST(ap) (&(ap))
+ #endif
+
+-bool
++JS_PUBLIC_API(bool)
+ JS::CallArgs::requireAtLeast(JSContext* cx, const char* fnname, unsigned required) {
+ if (length() < required) {
+ char numArgsStr[40];
diff --git a/security/tor-browser/patches/patch-js_src_jsdate.cpp b/security/tor-browser/patches/patch-js_src_jsdate.cpp
new file mode 100644
index 00000000000..bd9b25f09d2
--- /dev/null
+++ b/security/tor-browser/patches/patch-js_src_jsdate.cpp
@@ -0,0 +1,20 @@
+$NetBSD: patch-js_src_jsdate.cpp,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+--- js/src/jsdate.cpp.orig 2015-02-17 21:40:42.000000000 +0000
++++ js/src/jsdate.cpp
+@@ -2651,11 +2651,11 @@ ToLocaleFormatHelper(JSContext *cx, Hand
+ if (strcmp(format, "%x") == 0 && result_len >= 6 &&
+ /* Format %x means use OS settings, which may have 2-digit yr, so
+ hack end of 3/11/22 or 11.03.22 or 11Mar22 to use 4-digit yr...*/
+- !isdigit(buf[result_len - 3]) &&
+- isdigit(buf[result_len - 2]) && isdigit(buf[result_len - 1]) &&
++ !isdigit(((unsigned char)buf[result_len - 3])) &&
++ isdigit(((unsigned char)buf[result_len - 2])) && isdigit(((unsigned char)buf[result_len - 1])) &&
+ /* ...but not if starts with 4-digit year, like 2022/3/11. */
+- !(isdigit(buf[0]) && isdigit(buf[1]) &&
+- isdigit(buf[2]) && isdigit(buf[3]))) {
++ !(isdigit(((unsigned char)buf[0])) && isdigit(((unsigned char)buf[1])) &&
++ isdigit(((unsigned char)buf[2])) && isdigit(((unsigned char)buf[3])))) {
+ double localtime = obj->as<DateObject>().cachedLocalTime(&cx->runtime()->dateTimeInfo);
+ int year = IsNaN(localtime) ? 0 : (int) YearFromTime(localtime);
+ JS_snprintf(buf + (result_len - 2), (sizeof buf) - (result_len - 2),
diff --git a/security/tor-browser/patches/patch-js_src_jskwgen.cpp b/security/tor-browser/patches/patch-js_src_jskwgen.cpp
new file mode 100644
index 00000000000..749854943eb
--- /dev/null
+++ b/security/tor-browser/patches/patch-js_src_jskwgen.cpp
@@ -0,0 +1,13 @@
+$NetBSD: patch-js_src_jskwgen.cpp,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+--- js/src/jskwgen.cpp.orig 2015-01-23 06:00:01.000000000 +0000
++++ js/src/jskwgen.cpp 2015-02-05 11:42:30.000000000 +0000
+@@ -181,7 +181,7 @@
+ *s++ = '\\';
+ break;
+ default:
+- if (!isprint(c)) {
++ if (!isprint(((unsigned char)c))) {
+ *s++ = '\\';
+ *s++ = (char)('0' + (0x3 & (((unsigned char)c) >> 6)));
+ *s++ = (char)('0' + (0x7 & (((unsigned char)c) >> 3)));
diff --git a/security/tor-browser/patches/patch-js_src_jsmath.cpp b/security/tor-browser/patches/patch-js_src_jsmath.cpp
new file mode 100644
index 00000000000..c5ed1b8d386
--- /dev/null
+++ b/security/tor-browser/patches/patch-js_src_jsmath.cpp
@@ -0,0 +1,13 @@
+$NetBSD: patch-js_src_jsmath.cpp,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+--- js/src/jsmath.cpp.orig 2013-09-10 03:43:36.000000000 +0000
++++ js/src/jsmath.cpp
+@@ -244,7 +244,7 @@ js::ecmaAtan2(double y, double x)
+ }
+ #endif
+
+-#if defined(SOLARIS) && defined(__GNUC__)
++#if defined(notSOLARIS) && defined(__GNUC__)
+ if (y == 0) {
+ if (IsNegativeZero(x))
+ return js_copysign(M_PI, y);
diff --git a/security/tor-browser/patches/patch-js_src_shell_jsoptparse.cpp b/security/tor-browser/patches/patch-js_src_shell_jsoptparse.cpp
new file mode 100644
index 00000000000..14a650ca8c4
--- /dev/null
+++ b/security/tor-browser/patches/patch-js_src_shell_jsoptparse.cpp
@@ -0,0 +1,13 @@
+$NetBSD: patch-js_src_shell_jsoptparse.cpp,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+--- js/src/shell/jsoptparse.cpp.orig 2015-05-04 00:43:27.000000000 +0000
++++ js/src/shell/jsoptparse.cpp
+@@ -90,7 +90,7 @@ PrintParagraph(const char* text, unsigne
+ printf("%*s", startColno, "");
+
+ while (*it != '\0') {
+- MOZ_ASSERT(!isspace(*it));
++ MOZ_ASSERT(!isspace((unsigned char)*it));
+
+ /* Delimit the current token. */
+ const char* limit = it;
diff --git a/security/tor-browser/patches/patch-js_xpconnect_src_XPCConvert.cpp b/security/tor-browser/patches/patch-js_xpconnect_src_XPCConvert.cpp
new file mode 100644
index 00000000000..d0b5f6e8c31
--- /dev/null
+++ b/security/tor-browser/patches/patch-js_xpconnect_src_XPCConvert.cpp
@@ -0,0 +1,16 @@
+$NetBSD: patch-js_xpconnect_src_XPCConvert.cpp,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+Suggested workaround for https://bugzilla.mozilla.org/show_bug.cgi?id=1147837
+Avoids a crash on big endian 64 bit architectures.
+
+--- js/xpconnect/src/XPCConvert.cpp.orig 2015-03-21 04:42:37.000000000 +0100
++++ js/xpconnect/src/XPCConvert.cpp 2015-03-30 13:49:16.000000000 +0200
+@@ -134,7 +134,7 @@
+ d.setNumber(*static_cast<const float*>(s));
+ return true;
+ case nsXPTType::T_DOUBLE:
+- d.setNumber(*static_cast<const double*>(s));
++ d.setNumber(CanonicalizeNaN(*static_cast<const double*>(s)));
+ return true;
+ case nsXPTType::T_BOOL :
+ d.setBoolean(*static_cast<const bool*>(s));
diff --git a/security/tor-browser/patches/patch-js_xpconnect_src_xpcprivate.h b/security/tor-browser/patches/patch-js_xpconnect_src_xpcprivate.h
new file mode 100644
index 00000000000..38146041659
--- /dev/null
+++ b/security/tor-browser/patches/patch-js_xpconnect_src_xpcprivate.h
@@ -0,0 +1,17 @@
+$NetBSD: patch-js_xpconnect_src_xpcprivate.h,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+From commit log 1.1:
+ Instantiate WeakMapPtr explicitly to get the right visibility with
+ clang.
+
+--- js/xpconnect/src/xpcprivate.h.orig 2015-01-23 06:00:06.000000000 +0000
++++ js/xpconnect/src/xpcprivate.h
+@@ -1016,6 +1016,8 @@ static inline bool IS_PROTO_CLASS(const
+ /***************************************************************************/
+ // XPCWrappedNativeScope is one-to-one with a JS global object.
+
++extern template class JS_PUBLIC_API(JS::WeakMapPtr)<JSObject*, JSObject*>;
++
+ class nsIAddonInterposition;
+ class nsXPCComponentsBase;
+ class XPCWrappedNativeScope : public PRCList
diff --git a/security/tor-browser/patches/patch-media_libcubeb_AUTHORS b/security/tor-browser/patches/patch-media_libcubeb_AUTHORS
new file mode 100644
index 00000000000..22b41688a9d
--- /dev/null
+++ b/security/tor-browser/patches/patch-media_libcubeb_AUTHORS
@@ -0,0 +1,9 @@
+$NetBSD: patch-media_libcubeb_AUTHORS,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+--- media/libcubeb/AUTHORS.orig 2014-10-11 09:06:39.000000000 +0000
++++ media/libcubeb/AUTHORS
+@@ -4,3 +4,4 @@ Michael Wu <mwu@mozilla.com>
+ Paul Adenot <paul@paul.cx>
+ David Richards <drichards@mozilla.com>
+ Sebastien Alaiwan <sebastien.alaiwan@gmail.com>
++Evgeniy Vodolazskiy <waterlaz@gmail.com>
diff --git a/security/tor-browser/patches/patch-media_libcubeb_src_cubeb.c b/security/tor-browser/patches/patch-media_libcubeb_src_cubeb.c
new file mode 100644
index 00000000000..71895a1e3a6
--- /dev/null
+++ b/security/tor-browser/patches/patch-media_libcubeb_src_cubeb.c
@@ -0,0 +1,24 @@
+$NetBSD: patch-media_libcubeb_src_cubeb.c,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+--- media/libcubeb/src/cubeb.c.orig 2014-10-11 09:06:39.000000000 +0000
++++ media/libcubeb/src/cubeb.c
+@@ -54,6 +54,9 @@ int opensl_init(cubeb ** context, char c
+ #if defined(USE_AUDIOTRACK)
+ int audiotrack_init(cubeb ** context, char const * context_name);
+ #endif
++#if defined(USE_OSS)
++int oss_init(cubeb ** context, char const * context_name);
++#endif
+
+ int
+ validate_stream_params(cubeb_stream_params stream_params)
+@@ -120,6 +123,9 @@ cubeb_init(cubeb ** context, char const
+ #if defined(USE_AUDIOTRACK)
+ audiotrack_init,
+ #endif
++#if defined(USE_OSS)
++ oss_init,
++#endif
+ };
+ int i;
+
diff --git a/security/tor-browser/patches/patch-media_libcubeb_src_cubeb__alsa.c b/security/tor-browser/patches/patch-media_libcubeb_src_cubeb__alsa.c
new file mode 100644
index 00000000000..0b3d74acd6b
--- /dev/null
+++ b/security/tor-browser/patches/patch-media_libcubeb_src_cubeb__alsa.c
@@ -0,0 +1,673 @@
+$NetBSD: patch-media_libcubeb_src_cubeb__alsa.c,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+--- media/libcubeb/src/cubeb_alsa.c.orig 2015-05-08 16:55:17.000000000 +0000
++++ media/libcubeb/src/cubeb_alsa.c 2015-05-14 15:22:34.000000000 +0000
+@@ -7,12 +7,18 @@
+ #undef NDEBUG
+ #define _DEFAULT_SOURCE
+ #define _BSD_SOURCE
++#if defined(__NetBSD__)
++#define _NETBSD_SOURCE
++#endif
+ #define _XOPEN_SOURCE 500
+ #include <pthread.h>
+ #include <sys/time.h>
+ #include <assert.h>
+ #include <limits.h>
++#include <dlfcn.h>
+ #include <poll.h>
++#include <stdlib.h>
++#include <stdio.h>
+ #include <unistd.h>
+ #include <alsa/asoundlib.h>
+ #include "cubeb/cubeb.h"
+@@ -25,6 +31,51 @@
+
+ #define ALSA_PA_PLUGIN "ALSA <-> PulseAudio PCM I/O Plugin"
+
++#ifdef DISABLE_LIBASOUND_DLOPEN
++#define WRAP(x) x
++#else
++#define WRAP(x) cubeb_##x
++#define MAKE_TYPEDEF(x) static typeof(x) * cubeb_##x
++MAKE_TYPEDEF(snd_config);
++MAKE_TYPEDEF(snd_config_add);
++MAKE_TYPEDEF(snd_config_copy);
++MAKE_TYPEDEF(snd_config_delete);
++MAKE_TYPEDEF(snd_config_get_id);
++MAKE_TYPEDEF(snd_config_get_string);
++MAKE_TYPEDEF(snd_config_imake_integer);
++MAKE_TYPEDEF(snd_config_search);
++MAKE_TYPEDEF(snd_config_search_definition);
++MAKE_TYPEDEF(snd_lib_error_set_handler);
++MAKE_TYPEDEF(snd_pcm_avail_update);
++MAKE_TYPEDEF(snd_pcm_close);
++MAKE_TYPEDEF(snd_pcm_delay);
++MAKE_TYPEDEF(snd_pcm_drain);
++MAKE_TYPEDEF(snd_pcm_forward);
++MAKE_TYPEDEF(snd_pcm_frames_to_bytes);
++MAKE_TYPEDEF(snd_pcm_get_params);
++/* snd_pcm_hw_params_alloca is actually a macro */
++/* MAKE_TYPEDEF(snd_pcm_hw_params_alloca); */
++MAKE_TYPEDEF(snd_pcm_hw_params_sizeof);
++#define snd_pcm_hw_params_sizeof cubeb_snd_pcm_hw_params_sizeof
++MAKE_TYPEDEF(snd_pcm_hw_params_any);
++MAKE_TYPEDEF(snd_pcm_hw_params_get_channels_max);
++MAKE_TYPEDEF(snd_pcm_hw_params_get_rate);
++MAKE_TYPEDEF(snd_pcm_hw_params_set_rate_near);
++MAKE_TYPEDEF(snd_pcm_nonblock);
++MAKE_TYPEDEF(snd_pcm_open);
++MAKE_TYPEDEF(snd_pcm_open_lconf);
++MAKE_TYPEDEF(snd_pcm_pause);
++MAKE_TYPEDEF(snd_pcm_poll_descriptors);
++MAKE_TYPEDEF(snd_pcm_poll_descriptors_count);
++MAKE_TYPEDEF(snd_pcm_poll_descriptors_revents);
++MAKE_TYPEDEF(snd_pcm_recover);
++MAKE_TYPEDEF(snd_pcm_set_params);
++MAKE_TYPEDEF(snd_pcm_state);
++MAKE_TYPEDEF(snd_pcm_writei);
++
++#undef MAKE_TYPEDEF
++#endif
++
+ /* ALSA is not thread-safe. snd_pcm_t instances are individually protected
+ by the owning cubeb_stream's mutex. snd_pcm_t creation and destruction
+ is not thread-safe until ALSA 1.0.24 (see alsa-lib.git commit 91c9c8f1),
+@@ -65,6 +116,8 @@
+ workaround is not required. */
+ snd_config_t * local_config;
+ int is_pa;
++
++ void * libasound;
+ };
+
+ enum stream_state {
+@@ -258,32 +311,35 @@
+ long got;
+ void * p;
+ int draining;
++ unsigned pipefailures, againfailures;
+
+ draining = 0;
+
+ pthread_mutex_lock(&stm->mutex);
+
+- r = snd_pcm_poll_descriptors_revents(stm->pcm, stm->fds, stm->nfds, &revents);
+- if (r < 0 || revents != POLLOUT) {
+- /* This should be a stream error; it makes no sense for poll(2) to wake
+- for this stream and then have the stream report that it's not ready.
+- Unfortunately, this does happen, so just bail out and try again. */
+- pthread_mutex_unlock(&stm->mutex);
+- return RUNNING;
+- }
+-
+- avail = snd_pcm_avail_update(stm->pcm);
+- if (avail == -EPIPE) {
+- snd_pcm_recover(stm->pcm, avail, 1);
+- avail = snd_pcm_avail_update(stm->pcm);
+- }
++ for (pipefailures = 0;;) {
++ r = WRAP(snd_pcm_poll_descriptors_revents)(stm->pcm, stm->fds, stm->nfds, &revents);
++ if (r < 0 || revents != POLLOUT ||
++ (avail = WRAP(snd_pcm_avail_update)(stm->pcm)) == 0) {
++ /* This should be a stream error; it makes no sense for poll(2) to wake
++ for this stream and then have the stream report that it's not ready.
++ Unfortunately, this does happen, so just bail out and try again. */
++ pthread_mutex_unlock(&stm->mutex);
++ return RUNNING;
++ }
+
+- /* Failed to recover from an xrun, this stream must be broken. */
+- if (avail < 0) {
+- pthread_mutex_unlock(&stm->mutex);
+- stm->state_callback(stm, stm->user_ptr, CUBEB_STATE_ERROR);
+- return ERROR;
++ if (avail > 0)
++ break;
++ if (pipefailures++ > 11) {
++ fprintf(stderr, "%s: repeated failures from snd_pcm_avail_update, "
++ "giving up\n", __func__);
++ pthread_mutex_unlock(&stm->mutex);
++ stm->state_callback(stm, stm->user_ptr, CUBEB_STATE_ERROR);
++ return ERROR;
++ }
++ WRAP(snd_pcm_recover)(stm->pcm, avail, 1);
+ }
++ pipefailures = againfailures = 0;
+
+ /* This should never happen. */
+ if ((unsigned int) avail > stm->buffer_size) {
+@@ -294,8 +350,8 @@
+ available to write. If avail is still zero here, the stream must be in
+ a funky state, so recover and try again. */
+ if (avail == 0) {
+- snd_pcm_recover(stm->pcm, -EPIPE, 1);
+- avail = snd_pcm_avail_update(stm->pcm);
++ WRAP(snd_pcm_recover)(stm->pcm, -EPIPE, 1);
++ avail = WRAP(snd_pcm_avail_update)(stm->pcm);
+ if (avail <= 0) {
+ pthread_mutex_unlock(&stm->mutex);
+ stm->state_callback(stm, stm->user_ptr, CUBEB_STATE_ERROR);
+@@ -303,7 +359,7 @@
+ }
+ }
+
+- p = calloc(1, snd_pcm_frames_to_bytes(stm->pcm, avail));
++ p = calloc(1, WRAP(snd_pcm_frames_to_bytes)(stm->pcm, avail));
+ assert(p);
+
+ pthread_mutex_unlock(&stm->mutex);
+@@ -312,10 +368,11 @@
+ if (got < 0) {
+ pthread_mutex_unlock(&stm->mutex);
+ stm->state_callback(stm, stm->user_ptr, CUBEB_STATE_ERROR);
++ free(p);
+ return ERROR;
+ }
+ if (got > 0) {
+- snd_pcm_sframes_t wrote;
++ snd_pcm_sframes_t wrote, towrite = got;
+
+ if (stm->params.format == CUBEB_SAMPLE_FLOAT32NE) {
+ float * b = (float *) p;
+@@ -328,14 +385,64 @@
+ b[i] *= stm->volume;
+ }
+ }
+- wrote = snd_pcm_writei(stm->pcm, p, got);
+- if (wrote == -EPIPE) {
+- snd_pcm_recover(stm->pcm, wrote, 1);
+- wrote = snd_pcm_writei(stm->pcm, p, got);
+- }
+- assert(wrote >= 0 && wrote == got);
+- stm->write_position += wrote;
+- gettimeofday(&stm->last_activity, NULL);
++ for (;;) {
++ wrote = WRAP(snd_pcm_writei)(stm->pcm, p,
++ towrite > avail ? avail : towrite);
++ switch(wrote) {
++ case -EPIPE:
++ if (pipefailures++ > 3) {
++ fprintf(stderr, "%s: Too many underflows, giving up\n", __func__);
++ stm->state_callback(stm, stm->user_ptr, CUBEB_STATE_ERROR);
++ pthread_mutex_unlock(&stm->mutex);
++ free(p);
++ return ERROR;
++ }
++ WRAP(snd_pcm_recover)(stm->pcm, wrote, 1);
++ continue;
++ case -EAGAIN:
++ if (againfailures++ > 3) {
++ fprintf(stderr, "%s: Too many -EAGAIN errors from snd_pcm_writei, "
++ "giving up\n", __func__);
++ stm->state_callback(stm, stm->user_ptr, CUBEB_STATE_ERROR);
++ pthread_mutex_unlock(&stm->mutex);
++ free(p);
++ return ERROR;
++ }
++ continue;
++#if defined(EBADFD)
++ case -EBADFD:
++ fprintf(stderr, "%s: snc_pcm_writei returned -%s, giving up\n",
++ __func__, "EBADFD");
++ free(p);
++ stm->state_callback(stm, stm->user_ptr, CUBEB_STATE_ERROR);
++ pthread_mutex_unlock(&stm->mutex);
++ return ERROR;
++#endif
++ }
++ if (wrote < 0) {
++ fprintf(stderr, "%s: snc_pcm_writei returned unexpected error %lld, "
++ "giving up\n", __func__, (long long)wrote);
++ free(p);
++ stm->state_callback(stm, stm->user_ptr, CUBEB_STATE_ERROR);
++ pthread_mutex_unlock(&stm->mutex);
++ return ERROR;
++ }
++ pipefailures = againfailures = 0;
++ stm->write_position += wrote;
++ gettimeofday(&stm->last_activity, NULL);
++ if (wrote > towrite) {
++ fprintf(stderr, "%s: snc_pcm_writei wrote %lld frames, which was more "
++ "than we requested (%lld). This should not happen, giving up\n",
++ __func__, (long long)wrote, (long long)towrite);
++ free(p);
++ stm->state_callback(stm, stm->user_ptr, CUBEB_STATE_ERROR);
++ pthread_mutex_unlock(&stm->mutex);
++ return ERROR;
++ }
++ if (towrite == wrote)
++ break;
++ towrite -= wrote;
++ }
+ }
+ if (got != avail) {
+ long buffer_fill = stm->buffer_size - (avail - got);
+@@ -343,7 +450,7 @@
+
+ /* Fill the remaining buffer with silence to guarantee one full period
+ has been written. */
+- snd_pcm_writei(stm->pcm, (char *) p + got, avail - got);
++ WRAP(snd_pcm_writei)(stm->pcm, (char *) p + got, avail - got);
+
+ set_timeout(&stm->drain_timeout, buffer_time * 1000);
+
+@@ -454,26 +561,26 @@
+
+ slave_def = NULL;
+
+- r = snd_config_search(root_pcm, "slave", &slave_pcm);
++ r = WRAP(snd_config_search)(root_pcm, "slave", &slave_pcm);
+ if (r < 0) {
+ return NULL;
+ }
+
+- r = snd_config_get_string(slave_pcm, &string);
++ r = WRAP(snd_config_get_string)(slave_pcm, &string);
+ if (r >= 0) {
+- r = snd_config_search_definition(lconf, "pcm_slave", string, &slave_def);
++ r = WRAP(snd_config_search_definition)(lconf, "pcm_slave", string, &slave_def);
+ if (r < 0) {
+ return NULL;
+ }
+ }
+
+ do {
+- r = snd_config_search(slave_def ? slave_def : slave_pcm, "pcm", &pcm);
++ r = WRAP(snd_config_search)(slave_def ? slave_def : slave_pcm, "pcm", &pcm);
+ if (r < 0) {
+ break;
+ }
+
+- r = snd_config_get_string(slave_def ? slave_def : slave_pcm, &string);
++ r = WRAP(snd_config_get_string)(slave_def ? slave_def : slave_pcm, &string);
+ if (r < 0) {
+ break;
+ }
+@@ -482,7 +589,7 @@
+ if (r < 0 || r > (int) sizeof(node_name)) {
+ break;
+ }
+- r = snd_config_search(lconf, node_name, &pcm);
++ r = WRAP(snd_config_search)(lconf, node_name, &pcm);
+ if (r < 0) {
+ break;
+ }
+@@ -491,7 +598,7 @@
+ } while (0);
+
+ if (slave_def) {
+- snd_config_delete(slave_def);
++ WRAP(snd_config_delete)(slave_def);
+ }
+
+ return NULL;
+@@ -514,22 +621,22 @@
+
+ lconf = NULL;
+
+- if (snd_config == NULL) {
++ if (*WRAP(snd_config) == NULL) {
+ return NULL;
+ }
+
+- r = snd_config_copy(&lconf, snd_config);
++ r = WRAP(snd_config_copy)(&lconf, *WRAP(snd_config));
+ if (r < 0) {
+ return NULL;
+ }
+
+ do {
+- r = snd_config_search_definition(lconf, "pcm", pcm_name, &pcm_node);
++ r = WRAP(snd_config_search_definition)(lconf, "pcm", pcm_name, &pcm_node);
+ if (r < 0) {
+ break;
+ }
+
+- r = snd_config_get_id(pcm_node, &string);
++ r = WRAP(snd_config_get_id)(pcm_node, &string);
+ if (r < 0) {
+ break;
+ }
+@@ -538,7 +645,7 @@
+ if (r < 0 || r > (int) sizeof(node_name)) {
+ break;
+ }
+- r = snd_config_search(lconf, node_name, &pcm_node);
++ r = WRAP(snd_config_search)(lconf, node_name, &pcm_node);
+ if (r < 0) {
+ break;
+ }
+@@ -549,12 +656,12 @@
+ }
+
+ /* Fetch the PCM node's type, and bail out if it's not the PulseAudio plugin. */
+- r = snd_config_search(pcm_node, "type", &node);
++ r = WRAP(snd_config_search)(pcm_node, "type", &node);
+ if (r < 0) {
+ break;
+ }
+
+- r = snd_config_get_string(node, &string);
++ r = WRAP(snd_config_get_string)(node, &string);
+ if (r < 0) {
+ break;
+ }
+@@ -565,18 +672,18 @@
+
+ /* Don't clobber an explicit existing handle_underrun value, set it only
+ if it doesn't already exist. */
+- r = snd_config_search(pcm_node, "handle_underrun", &node);
++ r = WRAP(snd_config_search)(pcm_node, "handle_underrun", &node);
+ if (r != -ENOENT) {
+ break;
+ }
+
+ /* Disable pcm_pulse's asynchronous underrun handling. */
+- r = snd_config_imake_integer(&node, "handle_underrun", 0);
++ r = WRAP(snd_config_imake_integer)(&node, "handle_underrun", 0);
+ if (r < 0) {
+ break;
+ }
+
+- r = snd_config_add(pcm_node, node);
++ r = WRAP(snd_config_add)(pcm_node, node);
+ if (r < 0) {
+ break;
+ }
+@@ -584,7 +691,7 @@
+ return lconf;
+ } while (0);
+
+- snd_config_delete(lconf);
++ WRAP(snd_config_delete)(lconf);
+
+ return NULL;
+ }
+@@ -596,9 +703,9 @@
+
+ pthread_mutex_lock(&cubeb_alsa_mutex);
+ if (local_config) {
+- r = snd_pcm_open_lconf(pcm, CUBEB_ALSA_PCM_NAME, stream, SND_PCM_NONBLOCK, local_config);
++ r = WRAP(snd_pcm_open_lconf)(pcm, CUBEB_ALSA_PCM_NAME, stream, SND_PCM_NONBLOCK, local_config);
+ } else {
+- r = snd_pcm_open(pcm, CUBEB_ALSA_PCM_NAME, stream, SND_PCM_NONBLOCK);
++ r = WRAP(snd_pcm_open)(pcm, CUBEB_ALSA_PCM_NAME, stream, SND_PCM_NONBLOCK);
+ }
+ pthread_mutex_unlock(&cubeb_alsa_mutex);
+
+@@ -611,7 +718,7 @@
+ int r;
+
+ pthread_mutex_lock(&cubeb_alsa_mutex);
+- r = snd_pcm_close(pcm);
++ r = WRAP(snd_pcm_close)(pcm);
+ pthread_mutex_unlock(&cubeb_alsa_mutex);
+
+ return r;
+@@ -668,12 +775,65 @@
+ pthread_attr_t attr;
+ snd_pcm_t * dummy;
+
++ void * libasound = NULL;
++
++#ifndef DISABLE_LIBASOUND_DLOPEN
++ libasound = dlopen("libasound.so", RTLD_LAZY);
++ if (!libasound) {
++ return CUBEB_ERROR;
++ }
++
++#define LOAD(x) do { \
++ cubeb_##x = dlsym(libasound, #x); \
++ if (!cubeb_##x) { \
++ dlclose(libasound); \
++ return CUBEB_ERROR; \
++ } \
++ } while(0)
++
++ LOAD(snd_config);
++ LOAD(snd_config_add);
++ LOAD(snd_config_copy);
++ LOAD(snd_config_delete);
++ LOAD(snd_config_get_id);
++ LOAD(snd_config_get_string);
++ LOAD(snd_config_imake_integer);
++ LOAD(snd_config_search);
++ LOAD(snd_config_search_definition);
++ LOAD(snd_lib_error_set_handler);
++ LOAD(snd_pcm_avail_update);
++ LOAD(snd_pcm_close);
++ LOAD(snd_pcm_delay);
++ LOAD(snd_pcm_drain);
++ LOAD(snd_pcm_frames_to_bytes);
++ LOAD(snd_pcm_get_params);
++ /* snd_pcm_hw_params_alloca is actually a macro */
++ /* LOAD(snd_pcm_hw_params_alloca); */
++ LOAD(snd_pcm_hw_params_sizeof);
++ LOAD(snd_pcm_hw_params_any);
++ LOAD(snd_pcm_hw_params_get_channels_max);
++ LOAD(snd_pcm_hw_params_get_rate);
++ LOAD(snd_pcm_hw_params_set_rate_near);
++ LOAD(snd_pcm_nonblock);
++ LOAD(snd_pcm_open);
++ LOAD(snd_pcm_open_lconf);
++ LOAD(snd_pcm_pause);
++ LOAD(snd_pcm_poll_descriptors);
++ LOAD(snd_pcm_poll_descriptors_count);
++ LOAD(snd_pcm_poll_descriptors_revents);
++ LOAD(snd_pcm_recover);
++ LOAD(snd_pcm_set_params);
++ LOAD(snd_pcm_state);
++ LOAD(snd_pcm_writei);
++
++#undef LOAD
++#endif
+ assert(context);
+ *context = NULL;
+
+ pthread_mutex_lock(&cubeb_alsa_mutex);
+ if (!cubeb_alsa_error_handler_set) {
+- snd_lib_error_set_handler(silent_error_handler);
++ WRAP(snd_lib_error_set_handler)(silent_error_handler);
+ cubeb_alsa_error_handler_set = 1;
+ }
+ pthread_mutex_unlock(&cubeb_alsa_mutex);
+@@ -681,6 +841,8 @@
+ ctx = calloc(1, sizeof(*ctx));
+ assert(ctx);
+
++ ctx->libasound = libasound;
++
+ ctx->ops = &alsa_ops;
+
+ r = pthread_mutex_init(&ctx->mutex, NULL);
+@@ -730,7 +892,7 @@
+ config fails with EINVAL, the PA PCM is too old for this workaround. */
+ if (r == -EINVAL) {
+ pthread_mutex_lock(&cubeb_alsa_mutex);
+- snd_config_delete(ctx->local_config);
++ WRAP(snd_config_delete)(ctx->local_config);
+ pthread_mutex_unlock(&cubeb_alsa_mutex);
+ ctx->local_config = NULL;
+ } else if (r >= 0) {
+@@ -769,9 +931,13 @@
+ pthread_mutex_destroy(&ctx->mutex);
+ free(ctx->fds);
+
++ if (ctx->libasound) {
++ dlclose(ctx->libasound);
++ }
++
+ if (ctx->local_config) {
+ pthread_mutex_lock(&cubeb_alsa_mutex);
+- snd_config_delete(ctx->local_config);
++ WRAP(snd_config_delete)(ctx->local_config);
+ pthread_mutex_unlock(&cubeb_alsa_mutex);
+ }
+
+@@ -839,7 +1005,7 @@
+ return CUBEB_ERROR;
+ }
+
+- r = snd_pcm_nonblock(stm->pcm, 1);
++ r = WRAP(snd_pcm_nonblock)(stm->pcm, 1);
+ assert(r == 0);
+
+ /* Ugly hack: the PA ALSA plugin allows buffer configurations that can't
+@@ -849,23 +1015,23 @@
+ latency = latency < 500 ? 500 : latency;
+ }
+
+- r = snd_pcm_set_params(stm->pcm, format, SND_PCM_ACCESS_RW_INTERLEAVED,
+- stm->params.channels, stm->params.rate, 1,
+- latency * 1000);
++ r = WRAP(snd_pcm_set_params)(stm->pcm, format, SND_PCM_ACCESS_RW_INTERLEAVED,
++ stm->params.channels, stm->params.rate, 1,
++ latency * 1000);
+ if (r < 0) {
+ alsa_stream_destroy(stm);
+ return CUBEB_ERROR_INVALID_FORMAT;
+ }
+
+- r = snd_pcm_get_params(stm->pcm, &stm->buffer_size, &stm->period_size);
++ r = WRAP(snd_pcm_get_params)(stm->pcm, &stm->buffer_size, &stm->period_size);
+ assert(r == 0);
+
+- stm->nfds = snd_pcm_poll_descriptors_count(stm->pcm);
++ stm->nfds = WRAP(snd_pcm_poll_descriptors_count)(stm->pcm);
+ assert(stm->nfds > 0);
+
+ stm->saved_fds = calloc(stm->nfds, sizeof(struct pollfd));
+ assert(stm->saved_fds);
+- r = snd_pcm_poll_descriptors(stm->pcm, stm->saved_fds, stm->nfds);
++ r = WRAP(snd_pcm_poll_descriptors)(stm->pcm, stm->saved_fds, stm->nfds);
+ assert((nfds_t) r == stm->nfds);
+
+ r = pthread_cond_init(&stm->cond, NULL);
+@@ -896,7 +1062,7 @@
+ pthread_mutex_lock(&stm->mutex);
+ if (stm->pcm) {
+ if (stm->state == DRAINING) {
+- snd_pcm_drain(stm->pcm);
++ WRAP(snd_pcm_drain)(stm->pcm);
+ }
+ alsa_locked_pcm_close(stm->pcm);
+ stm->pcm = NULL;
+@@ -906,7 +1072,10 @@
+ pthread_mutex_destroy(&stm->mutex);
+
+ r = pthread_cond_destroy(&stm->cond);
+- assert(r == 0);
++ if (r != 0) { /* XXX stopgap until someone figures out the real reason */
++ fprintf(stderr,"alsa_stream_destroy: pthread_cond_destroy failed: %s",
++ strerror(r));
++ }
+
+ alsa_unregister_stream(stm);
+
+@@ -938,12 +1107,12 @@
+ return CUBEB_ERROR;
+ }
+
+- r = snd_pcm_hw_params_any(stm->pcm, hw_params);
++ r = WRAP(snd_pcm_hw_params_any)(stm->pcm, hw_params);
+ if (r < 0) {
+ return CUBEB_ERROR;
+ }
+
+- r = snd_pcm_hw_params_get_channels_max(hw_params, max_channels);
++ r = WRAP(snd_pcm_hw_params_get_channels_max)(hw_params, max_channels);
+ if (r < 0) {
+ return CUBEB_ERROR;
+ }
+@@ -963,34 +1132,34 @@
+
+ /* get a pcm, disabling resampling, so we get a rate the
+ * hardware/dmix/pulse/etc. supports. */
+- r = snd_pcm_open(&pcm, "default", SND_PCM_STREAM_PLAYBACK | SND_PCM_NO_AUTO_RESAMPLE, 0);
++ r = WRAP(snd_pcm_open)(&pcm, "default", SND_PCM_STREAM_PLAYBACK | SND_PCM_NO_AUTO_RESAMPLE, 0);
+ if (r < 0) {
+ return CUBEB_ERROR;
+ }
+
+- r = snd_pcm_hw_params_any(pcm, hw_params);
++ r = WRAP(snd_pcm_hw_params_any)(pcm, hw_params);
+ if (r < 0) {
+- snd_pcm_close(pcm);
++ WRAP(snd_pcm_close)(pcm);
+ return CUBEB_ERROR;
+ }
+
+- r = snd_pcm_hw_params_get_rate(hw_params, rate, &dir);
++ r = WRAP(snd_pcm_hw_params_get_rate)(hw_params, rate, &dir);
+ if (r >= 0) {
+ /* There is a default rate: use it. */
+- snd_pcm_close(pcm);
++ WRAP(snd_pcm_close)(pcm);
+ return CUBEB_OK;
+ }
+
+ /* Use a common rate, alsa may adjust it based on hw/etc. capabilities. */
+ *rate = 44100;
+
+- r = snd_pcm_hw_params_set_rate_near(pcm, hw_params, rate, NULL);
++ r = WRAP(snd_pcm_hw_params_set_rate_near)(pcm, hw_params, rate, NULL);
+ if (r < 0) {
+- snd_pcm_close(pcm);
++ WRAP(snd_pcm_close)(pcm);
+ return CUBEB_ERROR;
+ }
+
+- snd_pcm_close(pcm);
++ WRAP(snd_pcm_close)(pcm);
+
+ return CUBEB_OK;
+ }
+@@ -1014,7 +1183,7 @@
+ ctx = stm->context;
+
+ pthread_mutex_lock(&stm->mutex);
+- snd_pcm_pause(stm->pcm, 0);
++ WRAP(snd_pcm_pause)(stm->pcm, 0);
+ gettimeofday(&stm->last_activity, NULL);
+ pthread_mutex_unlock(&stm->mutex);
+
+@@ -1048,7 +1217,7 @@
+ pthread_mutex_unlock(&ctx->mutex);
+
+ pthread_mutex_lock(&stm->mutex);
+- snd_pcm_pause(stm->pcm, 1);
++ WRAP(snd_pcm_pause)(stm->pcm, 1);
+ pthread_mutex_unlock(&stm->mutex);
+
+ return CUBEB_OK;
+@@ -1064,14 +1233,17 @@
+ pthread_mutex_lock(&stm->mutex);
+
+ delay = -1;
+- if (snd_pcm_state(stm->pcm) != SND_PCM_STATE_RUNNING ||
+- snd_pcm_delay(stm->pcm, &delay) != 0) {
++ if (WRAP(snd_pcm_state)(stm->pcm) != SND_PCM_STATE_RUNNING ||
++ WRAP(snd_pcm_delay)(stm->pcm, &delay) != 0) {
+ *position = stm->last_position;
+ pthread_mutex_unlock(&stm->mutex);
+ return CUBEB_OK;
+ }
+
+- assert(delay >= 0);
++ if (delay < 0) {
++ WRAP(snd_pcm_forward)(stm->pcm, -delay);
++ delay = 0;
++ }
+
+ *position = 0;
+ if (stm->write_position >= (snd_pcm_uframes_t) delay) {
+@@ -1090,7 +1262,7 @@
+ snd_pcm_sframes_t delay;
+ /* This function returns the delay in frames until a frame written using
+ snd_pcm_writei is sent to the DAC. The DAC delay should be < 1ms anyways. */
+- if (snd_pcm_delay(stm->pcm, &delay)) {
++ if (WRAP(snd_pcm_delay)(stm->pcm, &delay)) {
+ return CUBEB_ERROR;
+ }
+
diff --git a/security/tor-browser/patches/patch-media_libcubeb_src_cubeb__oss.c b/security/tor-browser/patches/patch-media_libcubeb_src_cubeb__oss.c
new file mode 100644
index 00000000000..aa982cbd401
--- /dev/null
+++ b/security/tor-browser/patches/patch-media_libcubeb_src_cubeb__oss.c
@@ -0,0 +1,407 @@
+$NetBSD: patch-media_libcubeb_src_cubeb__oss.c,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+--- media/libcubeb/src/cubeb_oss.c.orig 2015-02-20 05:47:26.000000000 +0000
++++ media/libcubeb/src/cubeb_oss.c
+@@ -0,0 +1,402 @@
++/*
++ * Copyright © 2014 Mozilla Foundation
++ *
++ * This program is made available under an ISC-style license. See the
++ * accompanying file LICENSE for details.
++ */
++#if defined(HAVE_SYS_SOUNDCARD_H)
++#include <sys/soundcard.h>
++#else
++#include <soundcard.h>
++#endif
++#include <unistd.h>
++#include <stdlib.h>
++#include <sys/types.h>
++#include <sys/stat.h>
++#include <fcntl.h>
++#include <sys/ioctl.h>
++#include <errno.h>
++#include <pthread.h>
++#include <stdio.h>
++
++#include "cubeb/cubeb.h"
++#include "cubeb-internal.h"
++
++#ifndef CUBEB_OSS_DEFAULT_OUTPUT
++#define CUBEB_OSS_DEFAULT_OUTPUT "/dev/dsp"
++#endif
++
++#define OSS_BUFFER_SIZE 1024
++
++struct cubeb {
++ struct cubeb_ops const * ops;
++};
++
++struct cubeb_stream {
++ cubeb * context;
++
++ cubeb_data_callback data_callback;
++ cubeb_state_callback state_callback;
++ void * user_ptr;
++ float volume;
++ float panning;
++
++ pthread_mutex_t state_mutex;
++ pthread_cond_t state_cond;
++
++ int running;
++ int stopped;
++ int floating;
++
++ /* These two vars are needed to support old versions of OSS */
++ unsigned int position_bytes;
++ unsigned int last_position_bytes;
++
++ uint64_t written_frags; /* The number of fragments written to /dev/dsp */
++ uint64_t missed_frags; /* fragments output with stopped stream */
++
++ cubeb_stream_params params;
++ int fd;
++ pthread_t th;
++};
++
++static struct cubeb_ops const oss_ops;
++
++int oss_init(cubeb ** context, char const * context_name)
++{
++ cubeb* ctx = (cubeb*)malloc(sizeof(cubeb));
++ ctx->ops = &oss_ops;
++ *context = ctx;
++ return CUBEB_OK;
++}
++
++static void oss_destroy(cubeb *ctx)
++{
++ free(ctx);
++}
++
++static char const * oss_get_backend_id(cubeb * context)
++{
++ static char oss_name[] = "oss";
++ return oss_name;
++}
++
++static int oss_get_max_channel_count(cubeb * ctx, uint32_t * max_channels)
++{
++ *max_channels = 2; /* Let's support only stereo for now */
++ return CUBEB_OK;
++}
++
++static int oss_get_min_latency(cubeb * context, cubeb_stream_params params,
++ uint32_t * latency_ms)
++{
++ /* 40ms is a big enough number to work ok */
++ *latency_ms = 40;
++ return CUBEB_OK;
++}
++
++static int oss_get_preferred_sample_rate(cubeb *context, uint32_t * rate)
++{
++ /* 48000 seems a prefered choice for most audio devices
++ * and a good choice for OSS */
++ *rate = 48000;
++ return CUBEB_OK;
++}
++
++static void run_state_callback(cubeb_stream *stream, cubeb_state state)
++{
++ if (stream->state_callback) {
++ stream->state_callback(stream, stream->user_ptr, state);
++ }
++}
++
++static long run_data_callback(cubeb_stream *stream, void *buffer, long nframes)
++{
++ long got = 0;
++ pthread_mutex_lock(&stream->state_mutex);
++ if (stream->data_callback && stream->running && !stream->stopped) {
++ pthread_mutex_unlock(&stream->state_mutex);
++ got = stream->data_callback(stream, stream->user_ptr, buffer, nframes);
++ } else {
++ pthread_mutex_unlock(&stream->state_mutex);
++ }
++ return got;
++}
++
++static void apply_volume(int16_t* buffer, unsigned int n,
++ float volume, float panning)
++{
++ float left = volume;
++ float right = volume;
++ unsigned int i;
++ int pan[2];
++ if (panning<0) {
++ right *= (1+panning);
++ } else {
++ left *= (1-panning);
++ }
++ pan[0] = 128.0*left;
++ pan[1] = 128.0*right;
++ for(i=0; i<n; i++){
++ buffer[i] = ((int)buffer[i])*pan[i%2]/128;
++ }
++}
++
++static void *writer(void *stm)
++{
++ cubeb_stream* stream = (cubeb_stream*)stm;
++ int16_t buffer[OSS_BUFFER_SIZE];
++ float f_buffer[OSS_BUFFER_SIZE];
++ int got;
++ unsigned long i;
++ while (stream->running) {
++ pthread_mutex_lock(&stream->state_mutex);
++ if (stream->stopped) {
++ pthread_mutex_unlock(&stream->state_mutex);
++ run_state_callback(stream, CUBEB_STATE_STOPPED);
++ pthread_mutex_lock(&stream->state_mutex);
++ while (stream->stopped) {
++ pthread_cond_wait(&stream->state_cond, &stream->state_mutex);
++ }
++ pthread_mutex_unlock(&stream->state_mutex);
++ run_state_callback(stream, CUBEB_STATE_STARTED);
++ continue;
++ }
++ pthread_mutex_unlock(&stream->state_mutex);
++ if (stream->floating) {
++ got = run_data_callback(stream, f_buffer,
++ OSS_BUFFER_SIZE/stream->params.channels);
++ for (i=0; i<((unsigned long)got)*stream->params.channels; i++) {
++ buffer[i] = f_buffer[i]*32767.0;
++ }
++ } else {
++ got = run_data_callback(stream, buffer,
++ OSS_BUFFER_SIZE/stream->params.channels);
++ }
++ apply_volume(buffer, got*stream->params.channels,
++ stream->volume, stream->panning);
++ if (got<0) {
++ run_state_callback(stream, CUBEB_STATE_ERROR);
++ break;
++ }
++ if (!got) {
++ run_state_callback(stream, CUBEB_STATE_DRAINED);
++ }
++ if (got) {
++ size_t i = 0;
++ size_t s = got*stream->params.channels*sizeof(int16_t);
++ while (i < s) {
++ ssize_t n = write(stream->fd, ((char*)buffer) + i, s - i);
++ if (n<=0) {
++ run_state_callback(stream, CUBEB_STATE_ERROR);
++ break;
++ }
++ i+=n;
++ }
++ stream->written_frags+=got;
++ }
++ }
++ return NULL;
++}
++
++static void oss_try_set_latency(cubeb_stream* stream, unsigned int latency)
++{
++ unsigned int latency_bytes, n_frag;
++ int frag;
++ /* fragment size of 1024 is a good choice with good chances to be accepted */
++ unsigned int frag_size=1024;
++ unsigned int frag_log=10; /* 2^frag_log = frag_size */
++ latency_bytes =
++ latency*stream->params.rate*stream->params.channels*sizeof(uint16_t)/1000;
++ n_frag = latency_bytes>>frag_log;
++ frag = (n_frag<<16) | frag_log;
++ /* Even if this fails we wish to continue, not checking for errors */
++ ioctl(stream->fd, SNDCTL_DSP_SETFRAGMENT, &frag);
++}
++
++static int oss_stream_init(cubeb * context, cubeb_stream ** stm,
++ char const * stream_name,
++ cubeb_stream_params stream_params,
++ unsigned int latency,
++ cubeb_data_callback data_callback,
++ cubeb_state_callback state_callback, void * user_ptr)
++{
++ cubeb_stream* stream = (cubeb_stream*)malloc(sizeof(cubeb_stream));
++ stream->context = context;
++ stream->data_callback = data_callback;
++ stream->state_callback = state_callback;
++ stream->user_ptr = user_ptr;
++
++ if ((stream->fd = open(CUBEB_OSS_DEFAULT_OUTPUT, O_WRONLY)) == -1) {
++ free(stream);
++ return CUBEB_ERROR;
++ }
++#define SET(what, to) do { unsigned int i = to; \
++ int j = ioctl(stream->fd, what, &i); \
++ if (j == -1 || i != to) { \
++ close(stream->fd); \
++ free(stream); \
++ return CUBEB_ERROR_INVALID_FORMAT; } } while (0)
++
++ stream->params = stream_params;
++ stream->volume = 1.0;
++ stream->panning = 0.0;
++
++ oss_try_set_latency(stream, latency);
++
++ stream->floating = 0;
++ SET(SNDCTL_DSP_CHANNELS, stream_params.channels);
++ SET(SNDCTL_DSP_SPEED, stream_params.rate);
++ switch (stream_params.format) {
++ case CUBEB_SAMPLE_S16LE:
++ SET(SNDCTL_DSP_SETFMT, AFMT_S16_LE);
++ break;
++ case CUBEB_SAMPLE_S16BE:
++ SET(SNDCTL_DSP_SETFMT, AFMT_S16_BE);
++ break;
++ case CUBEB_SAMPLE_FLOAT32LE:
++ SET(SNDCTL_DSP_SETFMT, AFMT_S16_NE);
++ stream->floating = 1;
++ break;
++ default:
++ close(stream->fd);
++ free(stream);
++ return CUBEB_ERROR;
++ }
++
++
++ pthread_mutex_init(&stream->state_mutex, NULL);
++ pthread_cond_init(&stream->state_cond, NULL);
++
++ stream->running = 1;
++ stream->stopped = 1;
++ stream->position_bytes = 0;
++ stream->last_position_bytes = 0;
++ stream->written_frags = 0;
++ stream->missed_frags = 0;
++
++ pthread_create(&stream->th, NULL, writer, (void*)stream);
++
++ *stm = stream;
++
++ return CUBEB_OK;
++}
++
++static void oss_stream_destroy(cubeb_stream * stream)
++{
++ pthread_mutex_lock(&stream->state_mutex);
++
++ stream->running = 0;
++ stream->stopped = 0;
++ pthread_cond_signal(&stream->state_cond);
++
++ pthread_mutex_unlock(&stream->state_mutex);
++
++ pthread_join(stream->th, NULL);
++
++ pthread_mutex_destroy(&stream->state_mutex);
++ pthread_cond_destroy(&stream->state_cond);
++ close(stream->fd);
++ free(stream);
++}
++
++static int oss_stream_get_latency(cubeb_stream * stream, uint32_t * latency)
++{
++ if (ioctl(stream->fd, SNDCTL_DSP_GETODELAY, latency)==-1) {
++ return CUBEB_ERROR;
++ }
++ /* Convert latency from bytes to frames */
++ *latency /= stream->params.channels*sizeof(int16_t);
++ return CUBEB_OK;
++}
++
++
++static int oss_stream_current_optr(cubeb_stream * stream, uint64_t * position)
++{
++ count_info ci;
++ /* Unfortunately, this ioctl is only available in OSS 4.x */
++#ifdef SNDCTL_DSP_CURRENT_OPTR
++ oss_count_t count;
++ if (ioctl(stream->fd, SNDCTL_DSP_CURRENT_OPTR, &count) != -1) {
++ *position = count.samples;// + count.fifo_samples;
++ return CUBEB_OK;
++ }
++#endif
++ /* Fall back to this ioctl in case the previous one fails */
++ if (ioctl(stream->fd, SNDCTL_DSP_GETOPTR, &ci) == -1) {
++ return CUBEB_ERROR;
++ }
++ /* ci.bytes is only 32 bit and will start to wrap after arithmetic overflow */
++ stream->position_bytes += ci.bytes - stream->last_position_bytes;
++ stream->last_position_bytes = ci.bytes;
++ *position = stream->position_bytes/stream->params.channels/sizeof(int16_t);
++ return CUBEB_OK;
++}
++
++static int oss_stream_get_position(cubeb_stream * stream, uint64_t * position)
++{
++ if ( oss_stream_current_optr(stream, position) == CUBEB_OK ){
++ *position -= stream->missed_frags;
++ return CUBEB_OK;
++ }
++ /* If no correct method to get position works we resort to this */
++ *position = stream->written_frags;
++ return CUBEB_OK;
++}
++
++
++static int oss_stream_start(cubeb_stream * stream)
++{
++ pthread_mutex_lock(&stream->state_mutex);
++ if (stream->stopped) {
++ uint64_t ptr;
++ oss_stream_current_optr(stream, &ptr);
++ stream->missed_frags = ptr - stream->written_frags;
++ stream->stopped = 0;
++ pthread_cond_signal(&stream->state_cond);
++ }
++ pthread_mutex_unlock(&stream->state_mutex);
++ return CUBEB_OK;
++}
++
++static int oss_stream_stop(cubeb_stream * stream)
++{
++ pthread_mutex_lock(&stream->state_mutex);
++ stream->stopped = 1;
++ pthread_mutex_unlock(&stream->state_mutex);
++ return CUBEB_OK;
++}
++
++int oss_stream_set_panning(cubeb_stream * stream, float panning)
++{
++ if (stream->params.channels == 2) {
++ stream->panning=panning;
++ }
++ return CUBEB_OK;
++}
++
++int oss_stream_set_volume(cubeb_stream * stream, float volume)
++{
++ stream->volume=volume;
++ return CUBEB_OK;
++}
++
++static struct cubeb_ops const oss_ops = {
++ .init = oss_init,
++ .get_backend_id = oss_get_backend_id,
++ .get_max_channel_count = oss_get_max_channel_count,
++ .get_min_latency = oss_get_min_latency,
++ .get_preferred_sample_rate = oss_get_preferred_sample_rate,
++ .destroy = oss_destroy,
++ .stream_init = oss_stream_init,
++ .stream_destroy = oss_stream_destroy,
++ .stream_start = oss_stream_start,
++ .stream_stop = oss_stream_stop,
++ .stream_get_position = oss_stream_get_position,
++ .stream_get_latency = oss_stream_get_latency,
++ .stream_set_volume = oss_stream_set_volume,
++ .stream_set_panning = oss_stream_set_panning,
++ .stream_get_current_device = NULL,
++ .stream_device_destroy = NULL,
++ .stream_register_device_changed_callback = NULL
++};
diff --git a/security/tor-browser/patches/patch-media_libcubeb_src_moz.build b/security/tor-browser/patches/patch-media_libcubeb_src_moz.build
new file mode 100644
index 00000000000..6f6e2b7f81e
--- /dev/null
+++ b/security/tor-browser/patches/patch-media_libcubeb_src_moz.build
@@ -0,0 +1,48 @@
+$NetBSD: patch-media_libcubeb_src_moz.build,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+Don't assume cocoa toolkit just because OS_TARGET is Darwin.
+
+--- media/libcubeb/src/moz.build.orig 2014-11-21 03:37:42.000000000 +0000
++++ media/libcubeb/src/moz.build
+@@ -17,6 +17,12 @@ if CONFIG['MOZ_ALSA']:
+ ]
+ DEFINES['USE_ALSA'] = True
+
++if CONFIG['MOZ_OSS']:
++ SOURCES += [
++ 'cubeb_oss.c',
++ ]
++ DEFINES['USE_OSS'] = True
++
+ if CONFIG['MOZ_PULSEAUDIO']:
+ SOURCES += [
+ 'cubeb_pulse.c',
+@@ -31,7 +37,7 @@ if CONFIG['OS_ARCH'] == 'OpenBSD':
+ ]
+ DEFINES['USE_SNDIO'] = True
+
+-if CONFIG['OS_TARGET'] == 'Darwin':
++if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa':
+ SOURCES += [
+ 'cubeb_audiounit.c',
+ 'cubeb_osx_run_loop.c'
+@@ -65,6 +71,9 @@ if CONFIG['GKMEDIAS_SHARED_LIBRARY']:
+
+ FINAL_LIBRARY = 'gkmedias'
+
++if CONFIG['MOZ_NATIVE_SPEEX']:
++ SOURCES['cubeb_resampler.cpp'].flags += CONFIG['MOZ_SPEEX_CFLAGS']
++
+ if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'gonk':
+ CFLAGS += [
+ '-I%s/%s' % (CONFIG['ANDROID_SOURCE'], d) for d in [
+@@ -73,7 +82,9 @@ if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'gonk
+ ]
+ ]
+
++CFLAGS += CONFIG['MOZ_OSS_CFLAGS']
+ FAIL_ON_WARNINGS = True
+
++CFLAGS += CONFIG['MOZ_OSS_CFLAGS']
+ CFLAGS += CONFIG['MOZ_ALSA_CFLAGS']
+ CFLAGS += CONFIG['MOZ_PULSEAUDIO_CFLAGS']
diff --git a/security/tor-browser/patches/patch-media_libpng_pngpriv.h b/security/tor-browser/patches/patch-media_libpng_pngpriv.h
new file mode 100644
index 00000000000..4f91475e338
--- /dev/null
+++ b/security/tor-browser/patches/patch-media_libpng_pngpriv.h
@@ -0,0 +1,12 @@
+$NetBSD: patch-media_libpng_pngpriv.h,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+--- media/libpng/pngpriv.h.orig 2014-02-12 21:29:13.000000000 +0000
++++ media/libpng/pngpriv.h
+@@ -38,6 +38,7 @@
+ * still required (as of 2011-05-02.)
+ */
+ #define _POSIX_SOURCE 1 /* Just the POSIX 1003.1 and C89 APIs */
++#define _XOPEN_SOURCE 600
+
+ #ifndef PNG_VERSION_INFO_ONLY
+ /* Standard library headers not required by png.h: */
diff --git a/security/tor-browser/patches/patch-media_libsoundtouch_src_cpu__detect__x86.cpp b/security/tor-browser/patches/patch-media_libsoundtouch_src_cpu__detect__x86.cpp
new file mode 100644
index 00000000000..af0c68dc3b0
--- /dev/null
+++ b/security/tor-browser/patches/patch-media_libsoundtouch_src_cpu__detect__x86.cpp
@@ -0,0 +1,15 @@
+$NetBSD: patch-media_libsoundtouch_src_cpu__detect__x86.cpp,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+--- media/libsoundtouch/src/cpu_detect_x86.cpp.orig 2014-04-18 02:03:48.000000000 +0000
++++ media/libsoundtouch/src/cpu_detect_x86.cpp
+@@ -130,7 +130,9 @@ uint detectCPUextensions(void)
+ #endif
+
+ return res & ~_dwDisabledISA;
+-
++#elif defined(__GNUC__)
++ // No cpuid.h --> no cpuid support
++ return 0;
+ #else
+
+ /// One of these is true:
diff --git a/security/tor-browser/patches/patch-media_libstagefright_frameworks_av_media_libstagefright_foundation_AString.cpp b/security/tor-browser/patches/patch-media_libstagefright_frameworks_av_media_libstagefright_foundation_AString.cpp
new file mode 100644
index 00000000000..02b17a7670f
--- /dev/null
+++ b/security/tor-browser/patches/patch-media_libstagefright_frameworks_av_media_libstagefright_foundation_AString.cpp
@@ -0,0 +1,22 @@
+$NetBSD: patch-media_libstagefright_frameworks_av_media_libstagefright_foundation_AString.cpp,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+--- media/libstagefright/frameworks/av/media/libstagefright/foundation/AString.cpp.orig 2015-02-23 07:39:35.000000000 +0000
++++ media/libstagefright/frameworks/av/media/libstagefright/foundation/AString.cpp
+@@ -23,6 +23,17 @@
+ #include "ADebug.h"
+ #include "AString.h"
+
++#ifdef __FreeBSD__
++# include <osreldate.h>
++# if __FreeBSD_version < 900506
++# undef tolower
++# endif
++#endif
++
++#if defined(__NetBSD__) && defined(tolower)
++#undef tolower
++#endif
++
+ namespace stagefright {
+
+ // static
diff --git a/security/tor-browser/patches/patch-media_libstagefright_system_core_liblog_fake__log__device.c b/security/tor-browser/patches/patch-media_libstagefright_system_core_liblog_fake__log__device.c
new file mode 100644
index 00000000000..90f43ef4d2b
--- /dev/null
+++ b/security/tor-browser/patches/patch-media_libstagefright_system_core_liblog_fake__log__device.c
@@ -0,0 +1,27 @@
+$NetBSD: patch-media_libstagefright_system_core_liblog_fake__log__device.c,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+--- media/libstagefright/system/core/liblog/fake_log_device.c.orig 2015-01-23 05:59:59.000000000 +0000
++++ media/libstagefright/system/core/liblog/fake_log_device.c 2015-02-16 14:09:00.000000000 +0000
+@@ -229,11 +229,11 @@
+ char tagName[kMaxTagLen];
+ int i, minPrio;
+
+- while (isspace(*tags))
++ while (isspace((unsigned char)*tags))
+ tags++;
+
+ i = 0;
+- while (*tags != '\0' && !isspace(*tags) && *tags != ':' &&
++ while (*tags != '\0' && !isspace((unsigned char)*tags) && *tags != ':' &&
+ i < kMaxTagLen)
+ {
+ tagName[i++] = *tags++;
+@@ -272,7 +272,7 @@
+ }
+
+ tags++;
+- if (*tags != '\0' && !isspace(*tags)) {
++ if (*tags != '\0' && !isspace((unsigned char)*tags)) {
+ TRACE("ERROR: garbage in tag env; expected whitespace\n");
+ TRACE(" env='%s'\n", tags);
+ return;
diff --git a/security/tor-browser/patches/patch-media_libstagefright_system_core_liblog_logprint.c b/security/tor-browser/patches/patch-media_libstagefright_system_core_liblog_logprint.c
new file mode 100644
index 00000000000..301c2f431d1
--- /dev/null
+++ b/security/tor-browser/patches/patch-media_libstagefright_system_core_liblog_logprint.c
@@ -0,0 +1,22 @@
+$NetBSD: patch-media_libstagefright_system_core_liblog_logprint.c,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+--- media/libstagefright/system/core/liblog/logprint.c.orig 2015-01-23 05:59:59.000000000 +0000
++++ media/libstagefright/system/core/liblog/logprint.c 2015-02-16 14:12:46.000000000 +0000
+@@ -101,7 +101,7 @@
+ {
+ android_LogPriority pri;
+
+- c = tolower(c);
++ c = tolower((unsigned char)c);
+
+ if (c >= '0' && c <= '9') {
+ if (c >= ('0'+ANDROID_LOG_SILENT)) {
+@@ -370,7 +370,7 @@
+ {
+ char *end = str + strlen(str) - 1;
+
+- while (end >= str && isspace(*end))
++ while (end >= str && isspace((unsigned char)*end))
+ *end-- = '\0';
+ return str;
+ }
diff --git a/security/tor-browser/patches/patch-media_libtheora_lib_arm_armcpu.c b/security/tor-browser/patches/patch-media_libtheora_lib_arm_armcpu.c
new file mode 100644
index 00000000000..f1c9470cf5f
--- /dev/null
+++ b/security/tor-browser/patches/patch-media_libtheora_lib_arm_armcpu.c
@@ -0,0 +1,25 @@
+$NetBSD: patch-media_libtheora_lib_arm_armcpu.c,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+* NetBSD/evbearmv7hf-el's /proc/cpuinfo return empty, use hardcoded flags.
+
+--- media/libtheora/lib/arm/armcpu.c.orig 2014-11-13 22:50:10.000000000 +0000
++++ media/libtheora/lib/arm/armcpu.c
+@@ -107,6 +107,18 @@ ogg_uint32_t oc_cpu_flags_get(void){
+ return flags;
+ }
+
++#elif defined(__NetBSD__)
++ogg_uint32_t oc_cpu_flags_get(void){
++ ogg_uint32_t flags;
++ /* XXX ryoon: I have no idea about ARM CPU extensions detection mechanism
++ under NetBSD/earm.
++ evbearmv6hf-el machine, Raspberry Pi does not have NEON.
++ evbearmv7hf-el machine, CubieBoard2 does not have EDSP.
++ I have no idea about MEDIA.
++ So I will disable all options. */
++ flags=0;
++ return flags;
++}
+ #else
+ /*The feature registers which can tell us what the processor supports are
+ accessible in priveleged modes only, so we can't have a general user-space
diff --git a/security/tor-browser/patches/patch-media_libtheora_lib_info.c b/security/tor-browser/patches/patch-media_libtheora_lib_info.c
new file mode 100644
index 00000000000..5f732ea7a55
--- /dev/null
+++ b/security/tor-browser/patches/patch-media_libtheora_lib_info.c
@@ -0,0 +1,13 @@
+$NetBSD: patch-media_libtheora_lib_info.c,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+--- media/libtheora/lib/info.c.orig 2015-01-23 05:59:59.000000000 +0000
++++ media/libtheora/lib/info.c 2015-02-16 14:49:17.000000000 +0000
+@@ -29,7 +29,7 @@
+ static int oc_tagcompare(const char *_s1,const char *_s2,int _n){
+ int c;
+ for(c=0;c<_n;c++){
+- if(toupper(_s1[c])!=toupper(_s2[c]))return !0;
++ if(toupper((unsigned char)_s1[c])!=toupper((unsigned char)_s2[c]))return !0;
+ }
+ return _s1[c]!='=';
+ }
diff --git a/security/tor-browser/patches/patch-media_libtheora_moz.build b/security/tor-browser/patches/patch-media_libtheora_moz.build
new file mode 100644
index 00000000000..9674dea36f3
--- /dev/null
+++ b/security/tor-browser/patches/patch-media_libtheora_moz.build
@@ -0,0 +1,10 @@
+$NetBSD: patch-media_libtheora_moz.build,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+--- media/libtheora/moz.build.orig 2015-02-17 21:40:41.000000000 +0000
++++ media/libtheora/moz.build
+@@ -93,3 +93,5 @@ if CONFIG['GNU_AS']:
+ if CONFIG['OS_TARGET'] == 'Android':
+ DEFINES['__linux__'] = True
+
++if CONFIG['MOZ_NATIVE_OGG']:
++ CFLAGS += CONFIG['MOZ_OGG_CFLAGS']
diff --git a/security/tor-browser/patches/patch-media_libtremor_Makefile.in b/security/tor-browser/patches/patch-media_libtremor_Makefile.in
new file mode 100644
index 00000000000..f16e376faa8
--- /dev/null
+++ b/security/tor-browser/patches/patch-media_libtremor_Makefile.in
@@ -0,0 +1,14 @@
+$NetBSD: patch-media_libtremor_Makefile.in,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+--- media/libtremor/Makefile.in.orig 2014-03-20 11:09:40.000000000 +0000
++++ media/libtremor/Makefile.in
+@@ -0,0 +1,9 @@
++# 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/.
++
++include $(topsrcdir)/config/rules.mk
++
++ifdef MOZ_NATIVE_OGG
++CFLAGS += $(MOZ_OGG_CFLAGS)
++endif
diff --git a/security/tor-browser/patches/patch-media_libtremor_moz.build b/security/tor-browser/patches/patch-media_libtremor_moz.build
new file mode 100644
index 00000000000..9e4480810a8
--- /dev/null
+++ b/security/tor-browser/patches/patch-media_libtremor_moz.build
@@ -0,0 +1,10 @@
+$NetBSD: patch-media_libtremor_moz.build,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+--- media/libtremor/moz.build.orig 2014-11-21 03:37:42.000000000 +0000
++++ media/libtremor/moz.build
+@@ -6,3 +6,5 @@
+
+ DIRS += ['include/tremor', 'lib']
+
++if CONFIG['MOZ_NATIVE_OGG']:
++ CFLAGS += CONFIG['MOZ_OGG_CFLAGS']
diff --git a/security/tor-browser/patches/patch-media_libvorbis_Makefile.in b/security/tor-browser/patches/patch-media_libvorbis_Makefile.in
new file mode 100644
index 00000000000..2ec7923f9b7
--- /dev/null
+++ b/security/tor-browser/patches/patch-media_libvorbis_Makefile.in
@@ -0,0 +1,14 @@
+$NetBSD: patch-media_libvorbis_Makefile.in,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+--- media/libvorbis/Makefile.in.orig 2014-03-20 11:09:40.000000000 +0000
++++ media/libvorbis/Makefile.in
+@@ -0,0 +1,9 @@
++# 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/.
++
++include $(topsrcdir)/config/rules.mk
++
++ifdef MOZ_NATIVE_OGG
++CFLAGS += $(MOZ_OGG_CFLAGS)
++endif
diff --git a/security/tor-browser/patches/patch-media_libvorbis_lib_vorbis_info.c b/security/tor-browser/patches/patch-media_libvorbis_lib_vorbis_info.c
new file mode 100644
index 00000000000..d9b7539e114
--- /dev/null
+++ b/security/tor-browser/patches/patch-media_libvorbis_lib_vorbis_info.c
@@ -0,0 +1,13 @@
+$NetBSD: patch-media_libvorbis_lib_vorbis_info.c,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+--- media/libvorbis/lib/vorbis_info.c.orig 2015-01-23 05:59:59.000000000 +0000
++++ media/libvorbis/lib/vorbis_info.c 2015-02-16 14:36:05.000000000 +0000
+@@ -87,7 +87,7 @@
+ static int tagcompare(const char *s1, const char *s2, int n){
+ int c=0;
+ while(c < n){
+- if(toupper(s1[c]) != toupper(s2[c]))
++ if(toupper((unsigned char)s1[c]) != toupper((unsigned char)s2[c]))
+ return !0;
+ c++;
+ }
diff --git a/security/tor-browser/patches/patch-media_libvorbis_moz.build b/security/tor-browser/patches/patch-media_libvorbis_moz.build
new file mode 100644
index 00000000000..3a3463e0c09
--- /dev/null
+++ b/security/tor-browser/patches/patch-media_libvorbis_moz.build
@@ -0,0 +1,11 @@
+$NetBSD: patch-media_libvorbis_moz.build,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+--- media/libvorbis/moz.build.orig 2014-11-21 03:37:42.000000000 +0000
++++ media/libvorbis/moz.build
+@@ -55,3 +55,6 @@ FINAL_LIBRARY = 'gkmedias'
+ # Suppress warnings in third-party code.
+ if CONFIG['GNU_CC']:
+ CFLAGS += ['-Wno-uninitialized']
++
++if CONFIG['MOZ_NATIVE_OGG']:
++ CFLAGS += CONFIG['MOZ_OGG_CFLAGS']
diff --git a/security/tor-browser/patches/patch-media_libyuv_include_libyuv_scale__row.h b/security/tor-browser/patches/patch-media_libyuv_include_libyuv_scale__row.h
new file mode 100644
index 00000000000..125a385b08b
--- /dev/null
+++ b/security/tor-browser/patches/patch-media_libyuv_include_libyuv_scale__row.h
@@ -0,0 +1,17 @@
+$NetBSD: patch-media_libyuv_include_libyuv_scale__row.h,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+--- media/libyuv/include/libyuv/scale_row.h.orig 2014-11-13 22:50:11.000000000 +0000
++++ media/libyuv/include/libyuv/scale_row.h
+@@ -219,10 +219,10 @@ void ScaleARGBFilterCols_SSSE3(uint8* ds
+ void ScaleARGBColsUp2_SSE2(uint8* dst_argb, const uint8* src_argb,
+ int dst_width, int x, int dx);
+ // Row functions.
+-void ScaleARGBRowDownEven_NEON(const uint8* src_argb, int src_stride,
++void ScaleARGBRowDownEven_NEON(const uint8* src_argb, ptrdiff_t src_stride,
+ int src_stepx,
+ uint8* dst_argb, int dst_width);
+-void ScaleARGBRowDownEvenBox_NEON(const uint8* src_argb, int src_stride,
++void ScaleARGBRowDownEvenBox_NEON(const uint8* src_argb, ptrdiff_t src_stride,
+ int src_stepx,
+ uint8* dst_argb, int dst_width);
+ void ScaleARGBRowDown2_NEON(const uint8* src_ptr, ptrdiff_t src_stride,
diff --git a/security/tor-browser/patches/patch-media_mtransport_third__party_nICEr_src_util_mbslen.c b/security/tor-browser/patches/patch-media_mtransport_third__party_nICEr_src_util_mbslen.c
new file mode 100644
index 00000000000..e05a9b123d9
--- /dev/null
+++ b/security/tor-browser/patches/patch-media_mtransport_third__party_nICEr_src_util_mbslen.c
@@ -0,0 +1,18 @@
+$NetBSD: patch-media_mtransport_third__party_nICEr_src_util_mbslen.c,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+--- media/mtransport/third_party/nICEr/src/util/mbslen.c.orig 2014-04-18 02:03:49.000000000 +0000
++++ media/mtransport/third_party/nICEr/src/util/mbslen.c
+@@ -54,6 +54,13 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ # endif
+ #endif
+
++#ifdef __DragonFly__
++#include <osreldate.h>
++# if __DragonFly_version > 300502
++# define HAVE_XLOCALE
++# endif
++#endif
++
+ #ifdef HAVE_XLOCALE
+ #include <xlocale.h>
+ #endif /* HAVE_XLOCALE */
diff --git a/security/tor-browser/patches/patch-media_mtransport_third__party_nrappkit_src_port_generic_include_sys_queue.h b/security/tor-browser/patches/patch-media_mtransport_third__party_nrappkit_src_port_generic_include_sys_queue.h
new file mode 100644
index 00000000000..79ee7c607a7
--- /dev/null
+++ b/security/tor-browser/patches/patch-media_mtransport_third__party_nrappkit_src_port_generic_include_sys_queue.h
@@ -0,0 +1,19 @@
+$NetBSD: patch-media_mtransport_third__party_nrappkit_src_port_generic_include_sys_queue.h,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+--- media/mtransport/third_party/nrappkit/src/port/generic/include/sys/queue.h.orig 2014-07-17 01:45:31.000000000 +0000
++++ media/mtransport/third_party/nrappkit/src/port/generic/include/sys/queue.h
+@@ -30,7 +30,13 @@
+ * $FreeBSD: src/sys/sys/queue.h,v 1.58 2004/04/07 04:19:49 imp Exp $
+ */
+
+-#ifndef _SYS_QUEUE_H_
++#if (defined(BSD) && !defined(__OpenBSD__)) || defined(DARWIN)
++#include_next <sys/queue.h>
++# if defined(__DragonFly__)
++#define STAILQ_FOREACH_SAFE STAILQ_FOREACH_MUTABLE
++#define TAILQ_FOREACH_SAFE TAILQ_FOREACH_MUTABLE
++# endif
++#elif !defined(_SYS_QUEUE_H_)
+ #define _SYS_QUEUE_H_
+
+ #include <stddef.h>
diff --git a/security/tor-browser/patches/patch-media_webrtc_signaling_test_moz.build b/security/tor-browser/patches/patch-media_webrtc_signaling_test_moz.build
new file mode 100644
index 00000000000..f81ff89b58d
--- /dev/null
+++ b/security/tor-browser/patches/patch-media_webrtc_signaling_test_moz.build
@@ -0,0 +1,26 @@
+$NetBSD: patch-media_webrtc_signaling_test_moz.build,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+--- media/webrtc/signaling/test/moz.build.orig 2015-02-17 21:40:43.000000000 +0000
++++ media/webrtc/signaling/test/moz.build
+@@ -112,15 +112,19 @@ if CONFIG['JS_SHARED_LIBRARY']:
+ 'js',
+ ]
+
++OS_LIBS += CONFIG['MOZ_LIBV4L2_LIBS']
+ OS_LIBS += CONFIG['MOZ_WEBRTC_X11_LIBS']
+ OS_LIBS += CONFIG['REALTIME_LIBS']
+
+-if CONFIG['MOZ_ALSA']:
+- OS_LIBS += CONFIG['MOZ_ALSA_LIBS']
++if CONFIG['MOZ_OSS']:
++ OS_LIBS += CONFIG['MOZ_OSS_LIBS']
+
+ if CONFIG['MOZ_NATIVE_JPEG']:
+ OS_LIBS += CONFIG['MOZ_JPEG_LIBS']
+
++if CONFIG['MOZ_NATIVE_OPUS']:
++ OS_LIBS += CONFIG['MOZ_OPUS_LIBS']
++
+ if CONFIG['MOZ_NATIVE_LIBVPX']:
+ OS_LIBS += CONFIG['MOZ_LIBVPX_LIBS']
+
diff --git a/security/tor-browser/patches/patch-media_webrtc_trunk_webrtc_build_common.gypi b/security/tor-browser/patches/patch-media_webrtc_trunk_webrtc_build_common.gypi
new file mode 100644
index 00000000000..6be6700aa39
--- /dev/null
+++ b/security/tor-browser/patches/patch-media_webrtc_trunk_webrtc_build_common.gypi
@@ -0,0 +1,13 @@
+$NetBSD: patch-media_webrtc_trunk_webrtc_build_common.gypi,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+--- media/webrtc/trunk/webrtc/build/common.gypi.orig 2014-04-18 02:03:52.000000000 +0000
++++ media/webrtc/trunk/webrtc/build/common.gypi
+@@ -256,7 +256,7 @@
+ }],
+ ['OS=="dragonfly" or OS=="netbsd"', {
+ 'defines': [
+- # doesn't support pthread_condattr_setclock
++ # doesn't support pthread_condattr_setclock, NetBSD 6 supports it.
+ 'WEBRTC_CLOCK_TYPE_REALTIME',
+ ],
+ }],
diff --git a/security/tor-browser/patches/patch-media_webrtc_trunk_webrtc_modules_audio__coding_codecs_opus_opus.gypi b/security/tor-browser/patches/patch-media_webrtc_trunk_webrtc_modules_audio__coding_codecs_opus_opus.gypi
new file mode 100644
index 00000000000..c1a8c10a89b
--- /dev/null
+++ b/security/tor-browser/patches/patch-media_webrtc_trunk_webrtc_modules_audio__coding_codecs_opus_opus.gypi
@@ -0,0 +1,27 @@
+$NetBSD: patch-media_webrtc_trunk_webrtc_modules_audio__coding_codecs_opus_opus.gypi,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+--- media/webrtc/trunk/webrtc/modules/audio_coding/codecs/opus/opus.gypi.orig 2015-05-04 00:43:28.000000000 +0000
++++ media/webrtc/trunk/webrtc/modules/audio_coding/codecs/opus/opus.gypi
+@@ -17,18 +17,11 @@
+ 'conditions': [
+ ['build_with_mozilla==1', {
+ # Mozilla provides its own build of the opus library.
+- 'include_dirs': [
+- '/media/libopus/include',
+- '/media/libopus/src',
+- '/media/libopus/celt',
++ 'cflags_mozilla': [
++ '$(filter -I%, $(MOZ_CELT_CFLAGS))/celt',
++ '$(MOZ_OPUS_CFLAGS)',
++ '$(filter -I%, $(MOZ_OPUS_CFLAGS))/../src',
+ ],
+- 'direct_dependent_settings': {
+- 'include_dirs': [
+- '/media/libopus/include',
+- '/media/libopus/src',
+- '/media/libopus/celt',
+- ],
+- },
+ }, {
+ 'dependencies': [
+ '<(DEPTH)/third_party/opus/opus.gyp:opus'
diff --git a/security/tor-browser/patches/patch-media_webrtc_trunk_webrtc_modules_audio__coding_neteq_neteq.gypi b/security/tor-browser/patches/patch-media_webrtc_trunk_webrtc_modules_audio__coding_neteq_neteq.gypi
new file mode 100644
index 00000000000..362d5ff9136
--- /dev/null
+++ b/security/tor-browser/patches/patch-media_webrtc_trunk_webrtc_modules_audio__coding_neteq_neteq.gypi
@@ -0,0 +1,28 @@
+$NetBSD: patch-media_webrtc_trunk_webrtc_modules_audio__coding_neteq_neteq.gypi,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+--- media/webrtc/trunk/webrtc/modules/audio_coding/neteq/neteq.gypi.orig 2015-05-04 00:43:28.000000000 +0000
++++ media/webrtc/trunk/webrtc/modules/audio_coding/neteq/neteq.gypi
+@@ -84,19 +84,11 @@
+ ],
+ }],
+ ['build_with_mozilla==1', {
+- 'include_dirs': [
+- # Need Opus header files for the audio classifier.
+- '<(DEPTH)/../../../media/opus/celt',
+-# '<(DEPTH)/third_party/opus/src/src',
++ 'cflags_mozilla': [
++ '$(filter -I%, $(MOZ_CELT_CFLAGS))/celt',
++ '$(MOZ_OPUS_CFLAGS)',
++ '$(filter -I%, $(MOZ_OPUS_CFLAGS))/../src',
+ ],
+- 'direct_dependent_settings': {
+- 'include_dirs': [
+- '../../../../../../media/opus/celt',
+- # Need Opus header files for the audio classifier.
+- '<(DEPTH)/../../../media/opus/celt',
+-# '<(DEPTH)/third_party/opus/src/src',
+- ],
+- },
+ }],
+ ],
+ 'sources': [
diff --git a/security/tor-browser/patches/patch-media_webrtc_trunk_webrtc_modules_desktop__capture_screen__capturer.cc b/security/tor-browser/patches/patch-media_webrtc_trunk_webrtc_modules_desktop__capture_screen__capturer.cc
new file mode 100644
index 00000000000..d8cef8962d9
--- /dev/null
+++ b/security/tor-browser/patches/patch-media_webrtc_trunk_webrtc_modules_desktop__capture_screen__capturer.cc
@@ -0,0 +1,13 @@
+$NetBSD: patch-media_webrtc_trunk_webrtc_modules_desktop__capture_screen__capturer.cc,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+--- media/webrtc/trunk/webrtc/modules/desktop_capture/screen_capturer.cc.orig 2014-10-11 09:06:41.000000000 +0000
++++ media/webrtc/trunk/webrtc/modules/desktop_capture/screen_capturer.cc
+@@ -18,7 +18,7 @@ ScreenCapturer* ScreenCapturer::Create()
+ return Create(DesktopCaptureOptions::CreateDefault());
+ }
+
+-#if defined(WEBRTC_LINUX)
++#if defined(WEBRTC_LINUX) || defined(WEBRTC_BSD)
+ ScreenCapturer* ScreenCapturer::CreateWithXDamage(
+ bool use_update_notifications) {
+ DesktopCaptureOptions options;
diff --git a/security/tor-browser/patches/patch-media_webrtc_trunk_webrtc_modules_desktop__capture_screen__capturer.h b/security/tor-browser/patches/patch-media_webrtc_trunk_webrtc_modules_desktop__capture_screen__capturer.h
new file mode 100644
index 00000000000..0f937aa0a46
--- /dev/null
+++ b/security/tor-browser/patches/patch-media_webrtc_trunk_webrtc_modules_desktop__capture_screen__capturer.h
@@ -0,0 +1,13 @@
+$NetBSD: patch-media_webrtc_trunk_webrtc_modules_desktop__capture_screen__capturer.h,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+--- media/webrtc/trunk/webrtc/modules/desktop_capture/screen_capturer.h.orig 2014-10-11 09:06:41.000000000 +0000
++++ media/webrtc/trunk/webrtc/modules/desktop_capture/screen_capturer.h
+@@ -74,7 +74,7 @@ class ScreenCapturer : public DesktopCap
+ static ScreenCapturer* Create(const DesktopCaptureOptions& options);
+ static ScreenCapturer* Create();
+
+-#if defined(WEBRTC_LINUX)
++#if defined(WEBRTC_LINUX) || defined(WEBRTC_BSD)
+ // Creates platform-specific capturer and instructs it whether it should use
+ // X DAMAGE support.
+ static ScreenCapturer* CreateWithXDamage(bool use_x_damage);
diff --git a/security/tor-browser/patches/patch-media_webrtc_trunk_webrtc_modules_video__capture_linux_device__info__linux.cc b/security/tor-browser/patches/patch-media_webrtc_trunk_webrtc_modules_video__capture_linux_device__info__linux.cc
new file mode 100644
index 00000000000..cc2cb0c3b91
--- /dev/null
+++ b/security/tor-browser/patches/patch-media_webrtc_trunk_webrtc_modules_video__capture_linux_device__info__linux.cc
@@ -0,0 +1,38 @@
+$NetBSD: patch-media_webrtc_trunk_webrtc_modules_video__capture_linux_device__info__linux.cc,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+--- media/webrtc/trunk/webrtc/modules/video_capture/linux/device_info_linux.cc.orig 2014-05-29 23:31:23.000000000 +0000
++++ media/webrtc/trunk/webrtc/modules/video_capture/linux/device_info_linux.cc
+@@ -25,10 +25,21 @@
+ #else
+ #include <linux/videodev2.h>
+ #endif
++#ifdef HAVE_LIBV4L2
++#include <libv4l2.h>
++#endif
+
+ #include "webrtc/system_wrappers/interface/ref_count.h"
+ #include "webrtc/system_wrappers/interface/trace.h"
+
++#ifdef HAVE_LIBV4L2
++#define open v4l2_open
++#define close v4l2_close
++#define dup v4l2_dup
++#define ioctl v4l2_ioctl
++#define mmap v4l2_mmap
++#define munmap v4l2_munmap
++#endif
+
+ namespace webrtc
+ {
+@@ -136,6 +147,11 @@ int32_t DeviceInfoLinux::GetDeviceName(
+ memset(deviceNameUTF8, 0, deviceNameLength);
+ memcpy(cameraName, cap.card, sizeof(cap.card));
+
++ if (cameraName[0] == '\0')
++ {
++ sprintf(cameraName, "Camera at /dev/video%d", deviceNumber);
++ }
++
+ if (deviceNameLength >= strlen(cameraName))
+ {
+ memcpy(deviceNameUTF8, cameraName, strlen(cameraName));
diff --git a/security/tor-browser/patches/patch-media_webrtc_trunk_webrtc_modules_video__capture_linux_video__capture__linux.cc b/security/tor-browser/patches/patch-media_webrtc_trunk_webrtc_modules_video__capture_linux_video__capture__linux.cc
new file mode 100644
index 00000000000..68bb82aa76a
--- /dev/null
+++ b/security/tor-browser/patches/patch-media_webrtc_trunk_webrtc_modules_video__capture_linux_video__capture__linux.cc
@@ -0,0 +1,30 @@
+$NetBSD: patch-media_webrtc_trunk_webrtc_modules_video__capture_linux_video__capture__linux.cc,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+--- media/webrtc/trunk/webrtc/modules/video_capture/linux/video_capture_linux.cc.orig 2014-05-29 23:31:23.000000000 +0000
++++ media/webrtc/trunk/webrtc/modules/video_capture/linux/video_capture_linux.cc
+@@ -25,6 +25,9 @@
+ #else
+ #include <linux/videodev2.h>
+ #endif
++#ifdef HAVE_LIBV4L2
++#include <libv4l2.h>
++#endif
+
+ #include <new>
+
+@@ -34,6 +37,15 @@
+ #include "webrtc/system_wrappers/interface/thread_wrapper.h"
+ #include "webrtc/system_wrappers/interface/trace.h"
+
++#ifdef HAVE_LIBV4L2
++#define open v4l2_open
++#define close v4l2_close
++#define dup v4l2_dup
++#define ioctl v4l2_ioctl
++#define mmap v4l2_mmap
++#define munmap v4l2_munmap
++#endif
++
+ namespace webrtc
+ {
+ namespace videocapturemodule
diff --git a/security/tor-browser/patches/patch-media_webrtc_trunk_webrtc_modules_video__capture_video__capture.gypi b/security/tor-browser/patches/patch-media_webrtc_trunk_webrtc_modules_video__capture_video__capture.gypi
new file mode 100644
index 00000000000..913b8b46df7
--- /dev/null
+++ b/security/tor-browser/patches/patch-media_webrtc_trunk_webrtc_modules_video__capture_video__capture.gypi
@@ -0,0 +1,34 @@
+$NetBSD: patch-media_webrtc_trunk_webrtc_modules_video__capture_video__capture.gypi,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+--- media/webrtc/trunk/webrtc/modules/video_capture/video_capture.gypi.orig 2015-05-04 00:43:29.000000000 +0000
++++ media/webrtc/trunk/webrtc/modules/video_capture/video_capture.gypi
+@@ -7,6 +7,9 @@
+ # be found in the AUTHORS file in the root of the source tree.
+
+ {
++ 'variables': {
++ 'use_libv4l2%': 0,
++ },
+ 'targets': [
+ {
+ # Note this library is missing an implementation for the video capture.
+@@ -69,6 +72,19 @@
+ 'linux/video_capture_linux.cc',
+ 'linux/video_capture_linux.h',
+ ],
++ 'conditions': [
++ ['use_libv4l2==1', {
++ 'defines': [
++ 'HAVE_LIBV4L2',
++ ],
++ 'cflags_mozilla': [
++ '$(MOZ_LIBV4L2_CFLAGS)',
++ ],
++ 'libraries': [
++ '-lv4l2',
++ ],
++ }],
++ ],
+ }], # linux
+ ['OS=="mac"', {
+ 'sources': [
diff --git a/security/tor-browser/patches/patch-media_webrtc_trunk_webrtc_system__wrappers_source_spreadsortlib_spreadsort.hpp b/security/tor-browser/patches/patch-media_webrtc_trunk_webrtc_system__wrappers_source_spreadsortlib_spreadsort.hpp
new file mode 100644
index 00000000000..81b1e302fed
--- /dev/null
+++ b/security/tor-browser/patches/patch-media_webrtc_trunk_webrtc_system__wrappers_source_spreadsortlib_spreadsort.hpp
@@ -0,0 +1,32 @@
+$NetBSD: patch-media_webrtc_trunk_webrtc_system__wrappers_source_spreadsortlib_spreadsort.hpp,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+--- media/webrtc/trunk/webrtc/system_wrappers/source/spreadsortlib/spreadsort.hpp.orig 2015-03-27 02:20:26.000000000 +0000
++++ media/webrtc/trunk/webrtc/system_wrappers/source/spreadsortlib/spreadsort.hpp
+@@ -14,6 +14,13 @@ Cygwin fix provided by:
+ Scott McMurray
+ */
+
++#ifdef __FreeBSD__
++# include <osreldate.h>
++# if __FreeBSD_version < 900506
++# define getchar boost_getchar
++# endif
++#endif
++
+ #ifndef BOOST_SPREAD_SORT_H
+ #define BOOST_SPREAD_SORT_H
+ #include <algorithm>
+@@ -21,6 +28,13 @@ Scott McMurray
+ #include <vector>
+ #include "webrtc/system_wrappers/source/spreadsortlib/constants.hpp"
+
++#ifdef __FreeBSD__
++# include <osreldate.h>
++# if __FreeBSD_version < 900506
++# define getchar boost_getchar
++# endif
++#endif
++
+ #ifdef getchar
+ #undef getchar
+ #endif
diff --git a/security/tor-browser/patches/patch-memory_build_mozjemalloc__compat.c b/security/tor-browser/patches/patch-memory_build_mozjemalloc__compat.c
new file mode 100644
index 00000000000..7989e88199a
--- /dev/null
+++ b/security/tor-browser/patches/patch-memory_build_mozjemalloc__compat.c
@@ -0,0 +1,53 @@
+$NetBSD: patch-memory_build_mozjemalloc__compat.c,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+--- memory/build/mozjemalloc_compat.c.orig 2015-03-27 02:20:26.000000000 +0000
++++ memory/build/mozjemalloc_compat.c
+@@ -131,6 +131,48 @@ compute_bin_unused(unsigned int narenas)
+ return bin_unused;
+ }
+
++static size_t
++compute_bin_unused(unsigned int narenas)
++{
++ size_t bin_unused = 0;
++
++ uint32_t nregs; // number of regions per run in the j-th bin
++ size_t reg_size; // size of regions served by the j-th bin
++ size_t curruns; // number of runs belonging to a bin
++ size_t curregs; // number of allocated regions in a bin
++
++ unsigned int nbins; // number of bins per arena
++ unsigned int i, j;
++
++ // curruns and curregs are not defined for uninitialized arenas,
++ // so we skip them when computing bin_unused. However, initialized
++ // arenas are not guaranteed to be sequential, so we must test each
++ // one when iterating below.
++ bool initialized[100]; // should be narenas, but MSVC doesn't have VLAs
++ size_t isz = sizeof(initialized) / sizeof(initialized[0]);
++
++ je_(mallctl)("arenas.initialized", initialized, &isz, NULL, 0);
++ CTL_GET("arenas.nbins", nbins);
++
++ for (j = 0; j < nbins; j++) {
++ CTL_I_GET("arenas.bin.0.nregs", nregs, j);
++ CTL_I_GET("arenas.bin.0.size", reg_size, j);
++
++ for (i = 0; i < narenas; i++) {
++ if (!initialized[i]) {
++ continue;
++ }
++
++ CTL_IJ_GET("stats.arenas.0.bins.0.curruns", curruns, i, j);
++ CTL_IJ_GET("stats.arenas.0.bins.0.curregs", curregs, i, j);
++
++ bin_unused += (nregs * curruns - curregs) * reg_size;
++ }
++ }
++
++ return bin_unused;
++}
++
+ MOZ_JEMALLOC_API void
+ jemalloc_stats_impl(jemalloc_stats_t *stats)
+ {
diff --git a/security/tor-browser/patches/patch-memory_jemalloc_Makefile.in b/security/tor-browser/patches/patch-memory_jemalloc_Makefile.in
new file mode 100644
index 00000000000..6cd37a8566f
--- /dev/null
+++ b/security/tor-browser/patches/patch-memory_jemalloc_Makefile.in
@@ -0,0 +1,12 @@
+$NetBSD: patch-memory_jemalloc_Makefile.in,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+--- memory/jemalloc/Makefile.in.orig 2014-03-15 05:19:31.000000000 +0000
++++ memory/jemalloc/Makefile.in
+@@ -21,3 +21,7 @@ endif
+ ifdef GNU_CC
+ CFLAGS += -std=gnu99
+ endif
++
++# XXX startup crash workaround for gcc47 on amd64
++jemalloc.$(OBJ_SUFFIX): OS_CFLAGS := $(filter-out -O3 -Ofast,$(OS_CFLAGS))
++jemalloc.$(OBJ_SUFFIX): MOZ_OPTIMIZE_FLAGS=
diff --git a/security/tor-browser/patches/patch-memory_jemalloc_src_configure b/security/tor-browser/patches/patch-memory_jemalloc_src_configure
new file mode 100644
index 00000000000..905e6912318
--- /dev/null
+++ b/security/tor-browser/patches/patch-memory_jemalloc_src_configure
@@ -0,0 +1,13 @@
+$NetBSD: patch-memory_jemalloc_src_configure,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+--- memory/jemalloc/src/configure.orig 2015-03-27 02:20:26.000000000 +0000
++++ memory/jemalloc/src/configure
+@@ -6566,7 +6566,7 @@ else
+ LG_PAGE="detect"
+ fi
+
+-if test "x$LG_PAGE" == "xdetect"; then
++if test "x$LG_PAGE" = "xdetect"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking LG_PAGE" >&5
+ $as_echo_n "checking LG_PAGE... " >&6; }
+ if ${je_cv_lg_page+:} false; then :
diff --git a/security/tor-browser/patches/patch-memory_mozalloc_mozalloc__abort.cpp b/security/tor-browser/patches/patch-memory_mozalloc_mozalloc__abort.cpp
new file mode 100644
index 00000000000..4fa1c78b688
--- /dev/null
+++ b/security/tor-browser/patches/patch-memory_mozalloc_mozalloc__abort.cpp
@@ -0,0 +1,16 @@
+$NetBSD: patch-memory_mozalloc_mozalloc__abort.cpp,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+--- memory/mozalloc/mozalloc_abort.cpp.orig 2015-01-09 04:38:22.000000000 +0000
++++ memory/mozalloc/mozalloc_abort.cpp
+@@ -63,7 +63,11 @@ void fillAbortMessage(char (&msg)[N], ui
+ // Define abort() here, so that it is used instead of the system abort(). This
+ // lets us control the behavior when aborting, in order to get better results
+ // on *NIX platforms. See mozalloc_abort for details.
++#if defined(SOLARIS)
++void std::abort(void)
++#else
+ void abort(void)
++#endif
+ {
+ #ifdef MOZ_WIDGET_ANDROID
+ char msg[64] = {};
diff --git a/security/tor-browser/patches/patch-memory_volatile_VolatileBufferOSX.cpp b/security/tor-browser/patches/patch-memory_volatile_VolatileBufferOSX.cpp
new file mode 100644
index 00000000000..359c6309fcd
--- /dev/null
+++ b/security/tor-browser/patches/patch-memory_volatile_VolatileBufferOSX.cpp
@@ -0,0 +1,19 @@
+$NetBSD: patch-memory_volatile_VolatileBufferOSX.cpp,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+--- memory/volatile/VolatileBufferOSX.cpp.orig 2015-03-27 02:20:26.000000000 +0000
++++ memory/volatile/VolatileBufferOSX.cpp
+@@ -47,7 +47,14 @@ VolatileBuffer::Init(size_t aSize, size_
+ }
+
+ heap_alloc:
++#if defined(HAVE_POSIX_MEMALIGN)
+ (void)moz_posix_memalign(&mBuf, aAlignment, aSize);
++#else
++ MOZ_RELEASE_ASSERT(
++ !(aAlignment > (size_t)getpagesize()),
++ "Cannot fallback to valloc(3): alignment is larger than the page size");
++ mBuf = valloc(aSize);
++#endif
+ mHeap = true;
+ return !!mBuf;
+ }
diff --git a/security/tor-browser/patches/patch-mfbt_Alignment.h b/security/tor-browser/patches/patch-mfbt_Alignment.h
new file mode 100644
index 00000000000..a1e57ea1293
--- /dev/null
+++ b/security/tor-browser/patches/patch-mfbt_Alignment.h
@@ -0,0 +1,48 @@
+$NetBSD: patch-mfbt_Alignment.h,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+Make MOZ_ALIGNOF() use gcc's builtin __alignof__.
+From https://bugzilla.mozilla.org/show_bug.cgi?id=1026499
+
+--- mfbt/Alignment.h.orig 2014-07-17 01:45:32.000000000 +0000
++++ mfbt/Alignment.h
+@@ -9,11 +9,20 @@
+ #ifndef mozilla_Alignment_h
+ #define mozilla_Alignment_h
+
++#include "mozilla/Attributes.h"
++
+ #include <stddef.h>
+ #include <stdint.h>
+
+ namespace mozilla {
+
++#if defined(MOZ_HAVE_CXX11_ALIGNAS)
++#define MOZ_ALIGNOF(T) alignof(T)
++#elif defined(__GNUC__)
++#define MOZ_ALIGNOF(T) __alignof__(T)
++#elif defined(_MSC_VER)
++#define MOZ_ALIGNOF(T) __alignof(T)
++#else
+ /*
+ * This class, and the corresponding macro MOZ_ALIGNOF, figures out how many
+ * bytes of alignment a given type needs.
+@@ -32,6 +41,7 @@ class AlignmentFinder
+ };
+
+ #define MOZ_ALIGNOF(T) mozilla::AlignmentFinder<T>::alignment
++#endif
+
+ /*
+ * Declare the MOZ_ALIGNED_DECL macro for declaring aligned types.
+@@ -43,7 +53,10 @@ class AlignmentFinder
+ * will declare a two-character array |arr| aligned to 8 bytes.
+ */
+
+-#if defined(__GNUC__)
++#if defined(MOZ_HAVE_CXX11_ALIGNAS)
++# define MOZ_ALIGNED_DECL(_type, _align) \
++ alignas(_align) _type
++#elif defined(__GNUC__)
+ # define MOZ_ALIGNED_DECL(_type, _align) \
+ _type __attribute__((aligned(_align)))
+ #elif defined(_MSC_VER)
diff --git a/security/tor-browser/patches/patch-mfbt_Attributes.h b/security/tor-browser/patches/patch-mfbt_Attributes.h
new file mode 100644
index 00000000000..3686bc34c63
--- /dev/null
+++ b/security/tor-browser/patches/patch-mfbt_Attributes.h
@@ -0,0 +1,32 @@
+$NetBSD: patch-mfbt_Attributes.h,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+--- mfbt/Attributes.h.orig 2015-05-04 00:43:30.000000000 +0000
++++ mfbt/Attributes.h
+@@ -50,6 +50,7 @@
+ * don't indicate support for them here, due to
+ * http://stackoverflow.com/questions/20498142/visual-studio-2013-explicit-keyword-bug
+ */
++# define MOZ_HAVE_CXX11_ALIGNAS
+ # define MOZ_HAVE_NEVER_INLINE __declspec(noinline)
+ # define MOZ_HAVE_NORETURN __declspec(noreturn)
+ # ifdef __clang__
+@@ -70,6 +71,9 @@
+ # ifndef __has_extension
+ # define __has_extension __has_feature /* compatibility, for older versions of clang */
+ # endif
++# if __has_extension(cxx_alignas)
++# define MOZ_HAVE_CXX11_ALIGNAS
++# endif
+ # if __has_extension(cxx_constexpr)
+ # define MOZ_HAVE_CXX11_CONSTEXPR
+ # endif
+@@ -84,6 +88,9 @@
+ # endif
+ #elif defined(__GNUC__)
+ # if defined(__GXX_EXPERIMENTAL_CXX0X__) || __cplusplus >= 201103L
++# if MOZ_GCC_VERSION_AT_LEAST(4, 8, 0)
++# define MOZ_HAVE_CXX11_ALIGNAS
++# endif
+ # define MOZ_HAVE_CXX11_CONSTEXPR
+ # define MOZ_HAVE_EXPLICIT_CONVERSION
+ # endif
diff --git a/security/tor-browser/patches/patch-mfbt_Poison.cpp b/security/tor-browser/patches/patch-mfbt_Poison.cpp
new file mode 100644
index 00000000000..5279deb02c7
--- /dev/null
+++ b/security/tor-browser/patches/patch-mfbt_Poison.cpp
@@ -0,0 +1,20 @@
+$NetBSD: patch-mfbt_Poison.cpp,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+* Use posix_madvise(3) instead of madvise(3) for Solaris/SunOS.
+ Solaris/SunOS's madvise(3) is not enabled in this context,
+ and its first argument type is different from NetBSD/Linux's one.
+
+--- mfbt/Poison.cpp.orig 2014-11-13 22:50:12.000000000 +0000
++++ mfbt/Poison.cpp
+@@ -129,7 +129,11 @@ ReleaseRegion(void* aRegion, uintptr_t a
+ static bool
+ ProbeRegion(uintptr_t aRegion, uintptr_t aSize)
+ {
++#if !defined(__sun__)
+ if (madvise(reinterpret_cast<void*>(aRegion), aSize, MADV_NORMAL)) {
++#else
++ if (posix_madvise(reinterpret_cast<void*>(aRegion), aSize, MADV_NORMAL)) {
++#endif
+ return true;
+ } else {
+ return false;
diff --git a/security/tor-browser/patches/patch-mobile_android_installer_Makefile.in b/security/tor-browser/patches/patch-mobile_android_installer_Makefile.in
new file mode 100644
index 00000000000..a74d3b2461d
--- /dev/null
+++ b/security/tor-browser/patches/patch-mobile_android_installer_Makefile.in
@@ -0,0 +1,15 @@
+$NetBSD: patch-mobile_android_installer_Makefile.in,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+--- mobile/android/installer/Makefile.in.orig 2015-02-17 21:40:48.000000000 +0000
++++ mobile/android/installer/Makefile.in
+@@ -55,6 +55,10 @@ BINPATH = bin
+ endif
+ DEFINES += -DBINPATH=$(BINPATH)
+
++ifdef MOZ_DEBUG
++DEFINES += -DMOZ_DEBUG=1
++endif
++
+ ifdef ENABLE_MARIONETTE
+ DEFINES += -DENABLE_MARIONETTE=1
+ endif
diff --git a/security/tor-browser/patches/patch-mobile_android_installer_package-manifest.in b/security/tor-browser/patches/patch-mobile_android_installer_package-manifest.in
new file mode 100644
index 00000000000..acfdd9b9ac3
--- /dev/null
+++ b/security/tor-browser/patches/patch-mobile_android_installer_package-manifest.in
@@ -0,0 +1,13 @@
+$NetBSD: patch-mobile_android_installer_package-manifest.in,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+--- mobile/android/installer/package-manifest.in.orig 2015-02-17 21:40:48.000000000 +0000
++++ mobile/android/installer/package-manifest.in
+@@ -440,7 +440,7 @@
+ @BINPATH@/components/dom_webspeechsynth.xpt
+ #endif
+
+-#ifdef MOZ_DEBUG
++#if defined(ENABLE_TESTS) && defined(MOZ_DEBUG)
+ @BINPATH@/components/TestInterfaceJS.js
+ @BINPATH@/components/TestInterfaceJS.manifest
+ #endif
diff --git a/security/tor-browser/patches/patch-modules_libjar_nsZipArchive.cpp b/security/tor-browser/patches/patch-modules_libjar_nsZipArchive.cpp
new file mode 100644
index 00000000000..b0861cdb141
--- /dev/null
+++ b/security/tor-browser/patches/patch-modules_libjar_nsZipArchive.cpp
@@ -0,0 +1,15 @@
+$NetBSD: patch-modules_libjar_nsZipArchive.cpp,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+--- modules/libjar/nsZipArchive.cpp.orig 2013-06-18 11:01:37.000000000 +0000
++++ modules/libjar/nsZipArchive.cpp
+@@ -590,7 +590,9 @@ MOZ_WIN_MEM_TRY_BEGIN
+ // Success means optimized jar layout from bug 559961 is in effect
+ uint32_t readaheadLength = xtolong(startp);
+ if (readaheadLength) {
+-#if defined(XP_UNIX)
++#if defined(OS_SOLARIS)
++ posix_madvise(const_cast<uint8_t*>(startp), readaheadLength, POSIX_MADV_WILLNEED);
++#elif defined(XP_UNIX)
+ madvise(const_cast<uint8_t*>(startp), readaheadLength, MADV_WILLNEED);
+ #elif defined(XP_WIN)
+ if (aFd) {
diff --git a/security/tor-browser/patches/patch-netwerk_base_nsNetUtil.h b/security/tor-browser/patches/patch-netwerk_base_nsNetUtil.h
new file mode 100644
index 00000000000..f8eeba6e3e3
--- /dev/null
+++ b/security/tor-browser/patches/patch-netwerk_base_nsNetUtil.h
@@ -0,0 +1,39 @@
+$NetBSD: patch-netwerk_base_nsNetUtil.h,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+--- netwerk/base/nsNetUtil.h.orig 2015-05-04 00:43:34.000000000 +0000
++++ netwerk/base/nsNetUtil.h
+@@ -13,6 +13,7 @@
+ #include "nsMemory.h"
+ #include "nsCOMPtr.h"
+ #include "prio.h" // for read/write flags, permissions, etc.
++#include "prnetdb.h"
+ #include "nsHashKeys.h"
+
+ #include "plstr.h"
+@@ -2828,6 +2829,26 @@ NS_IsSrcdocChannel(nsIChannel *aChannel)
+ bool NS_IsReasonableHTTPHeaderValue(const nsACString& aValue);
+
+ /**
++ * Return a host endian value decoded from network byte order,
++ * accessed in an alignement safe way.
++ */
++inline uint16_t NS_decodeN16(const void *bytes)
++{
++ uint16_t tmp;
++
++ memcpy(&tmp, bytes, sizeof tmp);
++ return PR_ntohs(tmp);
++}
++
++inline uint32_t NS_decodeN32(const void *bytes)
++{
++ uint32_t tmp;
++
++ memcpy(&tmp, bytes, sizeof tmp);
++ return PR_ntohl(tmp);
++}
++
++/**
+ * Return true if the given string is a valid HTTP token per RFC 2616 section
+ * 2.2.
+ */
diff --git a/security/tor-browser/patches/patch-netwerk_dns_moz.build b/security/tor-browser/patches/patch-netwerk_dns_moz.build
new file mode 100644
index 00000000000..2a7f885c9e8
--- /dev/null
+++ b/security/tor-browser/patches/patch-netwerk_dns_moz.build
@@ -0,0 +1,13 @@
+$NetBSD: patch-netwerk_dns_moz.build,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+--- netwerk/dns/moz.build.orig 2015-05-04 00:43:34.000000000 +0000
++++ netwerk/dns/moz.build
+@@ -68,5 +68,8 @@ LOCAL_INCLUDES += [
+ '/netwerk/base',
+ ]
+
++if CONFIG['MOZ_NATIVE_HARFBUZZ']:
++ CXXFLAGS += CONFIG['MOZ_HARFBUZZ_CFLAGS']
++
+ if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'gonk' and CONFIG['ANDROID_VERSION'] > '19':
+ CXXFLAGS += ['-I%s/bionic/libc/dns/include' % CONFIG['ANDROID_SOURCE']]
diff --git a/security/tor-browser/patches/patch-netwerk_protocol_http_Http2Session.cpp b/security/tor-browser/patches/patch-netwerk_protocol_http_Http2Session.cpp
new file mode 100644
index 00000000000..9c4ecca6567
--- /dev/null
+++ b/security/tor-browser/patches/patch-netwerk_protocol_http_Http2Session.cpp
@@ -0,0 +1,94 @@
+$NetBSD: patch-netwerk_protocol_http_Http2Session.cpp,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+https://bugzilla.mozilla.org/show_bug.cgi?id=1130822
+Fix obivous alignment issues (causing crashes on some architectures).
+
+--- netwerk/protocol/http/Http2Session.cpp.orig 2015-02-17 21:40:50.000000000 +0000
++++ netwerk/protocol/http/Http2Session.cpp
+@@ -32,7 +32,6 @@
+ #include "nsStandardURL.h"
+ #include "nsURLHelper.h"
+ #include "prprf.h"
+-#include "prnetdb.h"
+ #include "sslt.h"
+
+ #ifdef DEBUG
+@@ -1295,7 +1294,7 @@ Http2Session::RecvPriority(Http2Session
+ return rv;
+
+ uint32_t newPriorityDependency =
+- PR_ntohl(*reinterpret_cast<uint32_t *>(self->mInputFrameBuffer.get() + kFrameHeaderBytes));
++ NS_decodeN32(self->mInputFrameBuffer.get() + kFrameHeaderBytes);
+ bool exclusive = !!(newPriorityDependency & 0x80000000);
+ newPriorityDependency &= 0x7fffffff;
+ uint8_t newPriorityWeight = *(self->mInputFrameBuffer.get() + kFrameHeaderBytes + 4);
+@@ -1326,7 +1325,7 @@ Http2Session::RecvRstStream(Http2Session
+ }
+
+ self->mDownstreamRstReason =
+- PR_ntohl(*reinterpret_cast<uint32_t *>(self->mInputFrameBuffer.get() + kFrameHeaderBytes));
++ NS_decodeN32(self->mInputFrameBuffer.get() + kFrameHeaderBytes);
+
+ LOG3(("Http2Session::RecvRstStream %p RST_STREAM Reason Code %u ID %x\n",
+ self, self->mDownstreamRstReason, self->mInputFrameID));
+@@ -1387,8 +1386,8 @@ Http2Session::RecvSettings(Http2Session
+ uint8_t *setting = reinterpret_cast<uint8_t *>
+ (self->mInputFrameBuffer.get()) + kFrameHeaderBytes + index * 6;
+
+- uint16_t id = PR_ntohs(*reinterpret_cast<uint16_t *>(setting));
+- uint32_t value = PR_ntohl(*reinterpret_cast<uint32_t *>(setting + 2));
++ uint16_t id = NS_decodeN16(setting);
++ uint32_t value = NS_decodeN32(setting + 2);
+ LOG3(("Settings ID %u, Value %u", id, value));
+
+ switch (id)
+@@ -1473,7 +1472,7 @@ Http2Session::RecvPushPromise(Http2Sessi
+ }
+ promiseLen = 4;
+ promisedID =
+- PR_ntohl(*reinterpret_cast<uint32_t *>(self->mInputFrameBuffer.get() + kFrameHeaderBytes + paddingControlBytes));
++ NS_decodeN32(self->mInputFrameBuffer.get() + kFrameHeaderBytes + paddingControlBytes);
+ promisedID &= 0x7fffffff;
+ }
+
+@@ -1733,11 +1732,11 @@ Http2Session::RecvGoAway(Http2Session *s
+
+ self->mShouldGoAway = true;
+ self->mGoAwayID =
+- PR_ntohl(*reinterpret_cast<uint32_t *>(self->mInputFrameBuffer.get() + kFrameHeaderBytes));
++ NS_decodeN32(self->mInputFrameBuffer.get() + kFrameHeaderBytes);
+ self->mGoAwayID &= 0x7fffffff;
+ self->mCleanShutdown = true;
+ uint32_t statusCode =
+- PR_ntohl(*reinterpret_cast<uint32_t *>(self->mInputFrameBuffer.get() + kFrameHeaderBytes + 4));
++ NS_decodeN32(self->mInputFrameBuffer.get() + kFrameHeaderBytes + 4);
+
+ // Find streams greater than the last-good ID and mark them for deletion
+ // in the mGoAwayStreamsToRestart queue with the GoAwayEnumerator. The
+@@ -1809,7 +1808,7 @@ Http2Session::RecvWindowUpdate(Http2Sess
+ }
+
+ uint32_t delta =
+- PR_ntohl(*reinterpret_cast<uint32_t *>(self->mInputFrameBuffer.get() + kFrameHeaderBytes));
++ NS_decodeN32(self->mInputFrameBuffer.get() + kFrameHeaderBytes);
+ delta &= 0x7fffffff;
+
+ LOG3(("Http2Session::RecvWindowUpdate %p len=%d Stream 0x%X.\n",
+@@ -2453,7 +2452,7 @@ Http2Session::WriteSegments(nsAHttpSegme
+
+ // 3 bytes of length, 1 type byte, 1 flag byte, 1 unused bit, 31 bits of ID
+ uint8_t totallyWastedByte = mInputFrameBuffer.get()[0];
+- mInputFrameDataSize = PR_ntohs(*reinterpret_cast<uint16_t *>(mInputFrameBuffer.get() + 1));
++ mInputFrameDataSize = NS_decodeN16(mInputFrameBuffer.get() + 1);
+ if (totallyWastedByte || (mInputFrameDataSize > kMaxFrameData)) {
+ LOG3(("Got frame too large 0x%02X%04X", totallyWastedByte, mInputFrameDataSize));
+ RETURN_SESSION_ERROR(this, PROTOCOL_ERROR);
+@@ -2461,7 +2460,7 @@ Http2Session::WriteSegments(nsAHttpSegme
+ mInputFrameType = *reinterpret_cast<uint8_t *>(mInputFrameBuffer.get() + kFrameLengthBytes);
+ mInputFrameFlags = *reinterpret_cast<uint8_t *>(mInputFrameBuffer.get() + kFrameLengthBytes + kFrameTypeBytes);
+ mInputFrameID =
+- PR_ntohl(*reinterpret_cast<uint32_t *>(mInputFrameBuffer.get() + kFrameLengthBytes + kFrameTypeBytes + kFrameFlagBytes));
++ NS_decodeN32(mInputFrameBuffer.get() + kFrameLengthBytes + kFrameTypeBytes + kFrameFlagBytes);
+ mInputFrameID &= 0x7fffffff;
+ mInputFrameDataRead = 0;
+
diff --git a/security/tor-browser/patches/patch-pb b/security/tor-browser/patches/patch-pb
new file mode 100644
index 00000000000..c25f5f739f6
--- /dev/null
+++ b/security/tor-browser/patches/patch-pb
@@ -0,0 +1,11 @@
+$NetBSD: patch-pb,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+--- xulrunner/installer/libxul.pc.in.orig 2013-07-30 00:59:18.000000000 +0000
++++ xulrunner/installer/libxul.pc.in
+@@ -7,5 +7,5 @@ Name: libxul
+ Description: The Mozilla Runtime and Embedding Engine
+ Version: %MOZILLA_VERSION%
+ Requires: %NSPR_NAME% >= %NSPR_VERSION%
+-Libs: -L${sdkdir}/lib %MOZ_XUL_LINK%
++Libs: -Wl,-R${prefix}/lib/xulrunner -Wl,-R${prefix}/lib/xulrunner -Wl,-R${prefix}/lib/xulrunner -Wl,-R${prefix}/lib/xulrunner -L${prefix}/lib/xulrunner %MOZ_XUL_LINK%
+ Cflags: -I${includedir} %WCHAR_CFLAGS%
diff --git a/security/tor-browser/patches/patch-pc b/security/tor-browser/patches/patch-pc
new file mode 100644
index 00000000000..926b7b42b61
--- /dev/null
+++ b/security/tor-browser/patches/patch-pc
@@ -0,0 +1,12 @@
+$NetBSD: patch-pc,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+--- xulrunner/installer/libxul-embedding.pc.in.orig 2013-07-30 00:59:18.000000000 +0000
++++ xulrunner/installer/libxul-embedding.pc.in
+@@ -6,5 +6,6 @@ idldir=%idldir%
+ Name: libxul-embedding
+ Description: Static library for version-independent embedding of the Mozilla runtime
+ Version: %MOZILLA_VERSION%
+-Libs: -L${sdkdir}/lib -lxpcomglue -ldl
++# XXXtnn -ldl removed
++Libs: -Wl,-R${prefix}/lib/xulrunner -Wl,-R${prefix}/lib/xulrunner -Wl,-R${prefix}/lib/xulrunner -Wl,-R${prefix}/lib/xulrunner -L${prefix}/lib/xulrunner -lxpcomglue
+ Cflags: -DXPCOM_GLUE -I${includedir} %WCHAR_CFLAGS%
diff --git a/security/tor-browser/patches/patch-rc b/security/tor-browser/patches/patch-rc
new file mode 100644
index 00000000000..1e0c66826a1
--- /dev/null
+++ b/security/tor-browser/patches/patch-rc
@@ -0,0 +1,16 @@
+$NetBSD: patch-rc,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+--- browser/branding/unofficial/locales/en-US/brand.dtd.orig 2015-05-04 00:43:19.000000000 +0000
++++ browser/branding/unofficial/locales/en-US/brand.dtd
+@@ -2,8 +2,8 @@
+ - 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/. -->
+
+-<!ENTITY brandShorterName "Mozilla Developer Preview">
+-<!ENTITY brandShortName "Mozilla Developer Preview">
+-<!ENTITY brandFullName "Mozilla Developer Preview">
++<!ENTITY brandShorterName "Browser">
++<!ENTITY brandShortName "Browser">
++<!ENTITY brandFullName "Browser">
+ <!ENTITY vendorShortName "mozilla.org">
+ <!ENTITY trademarkInfo.part1 " ">
diff --git a/security/tor-browser/patches/patch-security_manager_ssl_src_nsNSSComponent.cpp b/security/tor-browser/patches/patch-security_manager_ssl_src_nsNSSComponent.cpp
new file mode 100644
index 00000000000..79791b72a0f
--- /dev/null
+++ b/security/tor-browser/patches/patch-security_manager_ssl_src_nsNSSComponent.cpp
@@ -0,0 +1,12 @@
+$NetBSD: patch-security_manager_ssl_src_nsNSSComponent.cpp,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+--- security/manager/ssl/src/nsNSSComponent.cpp.orig 2014-10-11 09:06:44.000000000 +0000
++++ security/manager/ssl/src/nsNSSComponent.cpp
+@@ -53,6 +53,7 @@
+ #include "nss.h"
+ #include "pkix/pkixnss.h"
+ #include "ssl.h"
++#define NSS_ENABLE_ECC 1
+ #include "sslproto.h"
+ #include "secmod.h"
+ #include "secerr.h"
diff --git a/security/tor-browser/patches/patch-toolkit_components_osfile_modules_osfile__unix__back.jsm b/security/tor-browser/patches/patch-toolkit_components_osfile_modules_osfile__unix__back.jsm
new file mode 100644
index 00000000000..9a47a263299
--- /dev/null
+++ b/security/tor-browser/patches/patch-toolkit_components_osfile_modules_osfile__unix__back.jsm
@@ -0,0 +1,49 @@
+$NetBSD: patch-toolkit_components_osfile_modules_osfile__unix__back.jsm,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+Based on martin@'s patch for firefox 27.0
+
+* Use off_t for st_size
+* Use function name for NetBSD
+
+--- toolkit/components/osfile/modules/osfile_unix_back.jsm.orig 2014-05-29 23:31:41.000000000 +0000
++++ toolkit/components/osfile/modules/osfile_unix_back.jsm
+@@ -228,8 +228,8 @@
+ let statvfs = new SharedAll.HollowStructure("statvfs",
+ Const.OSFILE_SIZEOF_STATVFS);
+
+- statvfs.add_field_at(Const.OSFILE_OFFSETOF_STATVFS_F_BSIZE,
+- "f_bsize", Type.unsigned_long.implementation);
++ statvfs.add_field_at(Const.OSFILE_OFFSETOF_STATVFS_F_FRSIZE,
++ "f_frsize", Type.unsigned_long.implementation);
+ statvfs.add_field_at(Const.OSFILE_OFFSETOF_STATVFS_F_BAVAIL,
+ "f_bavail", Type.fsblkcnt_t.implementation);
+
+@@ -626,21 +626,22 @@
+ return Stat.fxstat(ver, fd, buf);
+ };
+ } else if (OS.Constants.Sys.Name == "NetBSD") {
+- // NetBSD 5.0 and newer
+- libc.declareLazyFFI(SysFile, "stat",
+- "__stat50", ctypes.default_abi,
++ // NetBSD 5.0 uses *30, and netbsd-6 uses *50
++ let v = OS.Constants.libc.OSFILE_SIZEOF_TIME_T < 8 ? "30" : "50";
++ libc.declareLazyFFI(SysFile, "stat",
++ "__stat"+v, ctypes.default_abi,
+ /*return*/ Type.negativeone_or_nothing,
+ /*path*/ Type.path,
+ /*buf*/ Type.stat.out_ptr
+ );
+ libc.declareLazyFFI(SysFile, "lstat",
+- "__lstat50", ctypes.default_abi,
++ "__lstat"+v, ctypes.default_abi,
+ /*return*/ Type.negativeone_or_nothing,
+ /*path*/ Type.path,
+ /*buf*/ Type.stat.out_ptr
+ );
+- libc.declareLazyFFI(SysFile, "fstat",
+- "__fstat50", ctypes.default_abi,
++ libc.declareLazyFFI(SysFile, "fstat", libc,
++ "__fstat"+v, ctypes.default_abi,
+ /*return*/ Type.negativeone_or_nothing,
+ /*fd*/ Type.fd,
+ /*buf*/ Type.stat.out_ptr
diff --git a/security/tor-browser/patches/patch-toolkit_components_osfile_modules_osfile__unix__front.jsm b/security/tor-browser/patches/patch-toolkit_components_osfile_modules_osfile__unix__front.jsm
new file mode 100644
index 00000000000..aa5eba22011
--- /dev/null
+++ b/security/tor-browser/patches/patch-toolkit_components_osfile_modules_osfile__unix__front.jsm
@@ -0,0 +1,13 @@
+$NetBSD: patch-toolkit_components_osfile_modules_osfile__unix__front.jsm,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+--- toolkit/components/osfile/modules/osfile_unix_front.jsm.orig 2014-09-24 01:05:38.000000000 +0000
++++ toolkit/components/osfile/modules/osfile_unix_front.jsm
+@@ -399,7 +399,7 @@
+ throw_on_negative("statvfs", (UnixFile.statvfs || UnixFile.statfs)(sourcePath, fileSystemInfoPtr));
+
+ let bytes = new Type.uint64_t.implementation(
+- fileSystemInfo.f_bsize * fileSystemInfo.f_bavail);
++ fileSystemInfo.f_frsize * fileSystemInfo.f_bavail);
+
+ return bytes.value;
+ };
diff --git a/security/tor-browser/patches/patch-toolkit_library_moz.build b/security/tor-browser/patches/patch-toolkit_library_moz.build
new file mode 100644
index 00000000000..acf3b7818f6
--- /dev/null
+++ b/security/tor-browser/patches/patch-toolkit_library_moz.build
@@ -0,0 +1,75 @@
+$NetBSD: patch-toolkit_library_moz.build,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+MOZ_GSTREAMER:
+ GSTREAMER_LIBS are linked to libxul on Darwin, while they are
+ dlopen(3)'ed at runtime on other platforms. The problem is that the
+ toolkit being cocoa isn't relevant at all. It's Darwin that needs
+ the special handling, not Cocoa.
+
+--- toolkit/library/moz.build.orig 2015-05-04 00:43:33.000000000 +0000
++++ toolkit/library/moz.build
+@@ -214,6 +214,7 @@ if CONFIG['OS_ARCH'] == 'Linux' and CONF
+ ]
+
+ OS_LIBS += CONFIG['MOZ_CAIRO_OSLIBS']
++OS_LIBS += CONFIG['MOZ_LIBV4L2_LIBS']
+ OS_LIBS += CONFIG['MOZ_WEBRTC_X11_LIBS']
+
+ if CONFIG['MOZ_NATIVE_JPEG']:
+@@ -225,6 +226,30 @@ if CONFIG['MOZ_NATIVE_PNG']:
+ if CONFIG['MOZ_NATIVE_HUNSPELL']:
+ OS_LIBS += CONFIG['MOZ_HUNSPELL_LIBS']
+
++if CONFIG['MOZ_NATIVE_OGG']:
++ OS_LIBS += CONFIG['MOZ_OGG_LIBS']
++
++if CONFIG['MOZ_NATIVE_THEORA']:
++ OS_LIBS += CONFIG['MOZ_THEORA_LIBS']
++
++if CONFIG['MOZ_NATIVE_VORBIS']:
++ OS_LIBS += CONFIG['MOZ_VORBIS_LIBS']
++
++if CONFIG['MOZ_NATIVE_TREMOR']:
++ OS_LIBS += CONFIG['MOZ_TREMOR_LIBS']
++
++if CONFIG['MOZ_NATIVE_CELT']:
++ OS_LIBS += CONFIG['MOZ_CELT_LIBS']
++
++if CONFIG['MOZ_NATIVE_OPUS']:
++ OS_LIBS += CONFIG['MOZ_OPUS_LIBS']
++
++if CONFIG['MOZ_NATIVE_SPEEX']:
++ OS_LIBS += CONFIG['MOZ_SPEEX_LIBS']
++
++if CONFIG['MOZ_NATIVE_SOUNDTOUCH']:
++ OS_LIBS += CONFIG['MOZ_SOUNDTOUCH_LIBS']
++
+ if CONFIG['MOZ_NATIVE_LIBEVENT']:
+ OS_LIBS += CONFIG['MOZ_LIBEVENT_LIBS']
+
+@@ -234,8 +259,14 @@ if CONFIG['MOZ_NATIVE_LIBVPX']:
+ if not CONFIG['MOZ_TREE_PIXMAN']:
+ OS_LIBS += CONFIG['MOZ_PIXMAN_LIBS']
+
+-if CONFIG['MOZ_ALSA']:
+- OS_LIBS += CONFIG['MOZ_ALSA_LIBS']
++if CONFIG['MOZ_NATIVE_GRAPHITE2']:
++ OS_LIBS += CONFIG['MOZ_GRAPHITE2_LIBS']
++
++if CONFIG['MOZ_NATIVE_HARFBUZZ']:
++ OS_LIBS += CONFIG['MOZ_HARFBUZZ_LIBS']
++
++if CONFIG['MOZ_OSS']:
++ OS_LIBS += CONFIG['MOZ_OSS_LIBS']
+
+ if CONFIG['HAVE_CLOCK_MONOTONIC']:
+ OS_LIBS += CONFIG['REALTIME_LIBS']
+@@ -365,7 +396,7 @@ if CONFIG['OS_ARCH'] == 'WINNT':
+ if CONFIG['MOZ_ENABLE_QT']:
+ OS_LIBS += CONFIG['XEXT_LIBS']
+
+-if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa' and CONFIG['MOZ_GSTREAMER']:
++if CONFIG['OS_ARCH'] == 'Darwin' and CONFIG['MOZ_GSTREAMER']:
+ OS_LIBS += CONFIG['GSTREAMER_LIBS']
+
+ if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'windows':
diff --git a/security/tor-browser/patches/patch-toolkit_xre_nsAppRunner.cpp b/security/tor-browser/patches/patch-toolkit_xre_nsAppRunner.cpp
new file mode 100644
index 00000000000..8095078e7b6
--- /dev/null
+++ b/security/tor-browser/patches/patch-toolkit_xre_nsAppRunner.cpp
@@ -0,0 +1,46 @@
+$NetBSD: patch-toolkit_xre_nsAppRunner.cpp,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+MacOS X < 10.6 had an undocumented behavior concerning execve(2)
+inside a threaded process. If a process tried to call execve(2) and
+had more than one active thread, the kernel returned ENOTSUP. So we
+have to either fork(2) or vfork(2) before calling execve(2) to make
+sure the caller is single-threaded as otherwise the application fails
+to restart itself.
+
+__mac_execve() in XNU 1228 (Darwin 9, MacOS X 10.5) had the
+restriction:
+http://www.opensource.apple.com/source/xnu/xnu-1228.15.4/bsd/kern/kern_exec.c
+
+In XNU 1456 (Darwin 10, MacOS X 10.6) the multi-threaded check
+disappeared:
+http://www.opensource.apple.com/source/xnu/xnu-1456.1.26/bsd/kern/kern_exec.c
+
+--- toolkit/xre/nsAppRunner.cpp.orig 2015-01-30 04:06:22.000000000 +0000
++++ toolkit/xre/nsAppRunner.cpp
+@@ -1768,6 +1768,18 @@ static nsresult LaunchChild(nsINativeApp
+ if (NS_FAILED(rv))
+ return rv;
+
++#if defined(XP_DARWIN)
++ pid_t pid = vfork();
++ if (pid == 0) { // child
++ if (execv(exePath.get(), gRestartArgv) == -1) {
++ _exit(1);
++ }
++ }
++ else if (pid == -1) {
++ return NS_ERROR_FAILURE;
++ }
++#else
++
+ #if defined(XP_UNIX)
+ if (execv(exePath.get(), gRestartArgv) == -1)
+ return NS_ERROR_FAILURE;
+@@ -1781,6 +1793,7 @@ static nsresult LaunchChild(nsINativeApp
+ if (failed || exitCode)
+ return NS_ERROR_FAILURE;
+ #endif // XP_UNIX
++#endif // XP_DARWIN
+ #endif // WP_WIN
+ #endif // WP_MACOSX
+ #endif // MOZ_WIDGET_ANDROID
diff --git a/security/tor-browser/patches/patch-toolkit_xre_nsEmbedFunctions.cpp b/security/tor-browser/patches/patch-toolkit_xre_nsEmbedFunctions.cpp
new file mode 100644
index 00000000000..a446a1c8bef
--- /dev/null
+++ b/security/tor-browser/patches/patch-toolkit_xre_nsEmbedFunctions.cpp
@@ -0,0 +1,22 @@
+$NetBSD: patch-toolkit_xre_nsEmbedFunctions.cpp,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+--- toolkit/xre/nsEmbedFunctions.cpp.orig 2013-05-11 19:19:55.000000000 +0000
++++ toolkit/xre/nsEmbedFunctions.cpp
+@@ -239,7 +239,7 @@ XRE_SetRemoteExceptionHandler(const char
+ {
+ #if defined(XP_WIN) || defined(XP_MACOSX)
+ return CrashReporter::SetRemoteExceptionHandler(nsDependentCString(aPipe));
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_SOLARIS)
+ return CrashReporter::SetRemoteExceptionHandler();
+ #else
+ # error "OOP crash reporter unsupported on this platform"
+@@ -351,7 +351,7 @@ XRE_InitChildProcess(int aArgc,
+ // Bug 684322 will add better visibility into this condition
+ NS_WARNING("Could not setup crash reporting\n");
+ }
+-# elif defined(OS_LINUX)
++# elif defined(OS_LINUX) || defined(OS_SOLARIS)
+ // on POSIX, |crashReporterArg| is "true" if crash reporting is
+ // enabled, false otherwise
+ if (0 != strcmp("false", crashReporterArg) &&
diff --git a/security/tor-browser/patches/patch-toolkit_xre_nsXREDirProvider.cpp b/security/tor-browser/patches/patch-toolkit_xre_nsXREDirProvider.cpp
new file mode 100644
index 00000000000..39abcfd164e
--- /dev/null
+++ b/security/tor-browser/patches/patch-toolkit_xre_nsXREDirProvider.cpp
@@ -0,0 +1,87 @@
+$NetBSD: patch-toolkit_xre_nsXREDirProvider.cpp,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+https://github.com/torbsd/openbsd-ports/blob/beeb760037237c6e1864942356b8135e9c430d78/www/tbb/tor-browser/patches/patch-toolkit_xre_nsXREDirProvider_cpp
+
+--- toolkit/xre/nsXREDirProvider.cpp.orig 2016-02-13 07:06:53.000000000 +0000
++++ toolkit/xre/nsXREDirProvider.cpp
+@@ -1222,12 +1222,19 @@ nsXREDirProvider::GetUserDataDirectoryHo
+ NS_ENSURE_ARG_POINTER(aFile);
+ nsCOMPtr<nsIFile> localDir;
+
++#if 0
+ nsresult rv = GetAppRootDir(getter_AddRefs(localDir));
+ NS_ENSURE_SUCCESS(rv, rv);
+ rv = localDir->AppendRelativeNativePath(NS_LITERAL_CSTRING("TorBrowser"
+ XPCOM_FILE_PATH_SEPARATOR "Data"
+ XPCOM_FILE_PATH_SEPARATOR "Browser"));
+ NS_ENSURE_SUCCESS(rv, rv);
++#else
++ nsresult rv =
++ NS_NewNativeLocalFile(nsDependentCString(PR_GetEnv("HOME")), true,
++ getter_AddRefs(localDir));
++ NS_ENSURE_SUCCESS(rv, rv);
++#endif
+
+ if (aLocal) {
+ rv = localDir->AppendNative(NS_LITERAL_CSTRING("Caches"));
+@@ -1338,6 +1345,7 @@ nsXREDirProvider::GetAppRootDir(nsIFile*
+ nsresult rv = GetAppDir()->Clone(getter_AddRefs(appRootDir));
+ NS_ENSURE_SUCCESS(rv, rv);
+
++#if 0
+ int levelsToRemove = 1; // In FF21+, appDir points to browser subdirectory.
+ #if defined(XP_MACOSX)
+ levelsToRemove += 2;
+@@ -1358,6 +1366,7 @@ nsXREDirProvider::GetAppRootDir(nsIFile*
+ if (didRemove)
+ --levelsToRemove;
+ }
++#endif
+
+ if (!appRootDir)
+ return NS_ERROR_FAILURE;
+@@ -1454,7 +1463,7 @@ nsXREDirProvider::AppendSysUserExtension
+
+ #elif defined(XP_UNIX)
+
+- static const char* const sXR = ".mozilla";
++ static const char* const sXR = ".tor-browser";
+ rv = aFile->AppendNative(nsDependentCString(sXR));
+ NS_ENSURE_SUCCESS(rv, rv);
+
+@@ -1513,6 +1522,9 @@ nsXREDirProvider::AppendProfilePath(nsIF
+ rv = aFile->AppendNative(nsDependentCString("mozilla"));
+ NS_ENSURE_SUCCESS(rv, rv);
+ #elif defined(XP_UNIX)
++ nsAutoCString folder;
++ if (!aLocal)
++ folder.Assign('.');
+ if (!profile.IsEmpty()) {
+ // Skip any leading path characters
+ const char* profileStart = profile.get();
+@@ -1521,17 +1533,23 @@ nsXREDirProvider::AppendProfilePath(nsIF
+
+ // On the off chance that someone wanted their folder to be hidden don't
+ // let it become ".."
+- if (*profileStart == '.')
++ if (*profileStart == '.' && !aLocal)
+ profileStart++;
+
++#if 0
+ // Make it hidden (by starting with ".").
+ nsAutoCString folder(".");
++#endif
+ folder.Append(profileStart);
+ ToLowerCase(folder);
+
+ rv = AppendProfileString(aFile, folder.BeginReading());
+- NS_ENSURE_SUCCESS(rv, rv);
++ } else {
++ folder.Append("tor-browser");
++ ToLowerCase(folder);
++ rv = aFile->AppendNative(folder);
+ }
++ NS_ENSURE_SUCCESS(rv, rv);
+
+ #else
+ #error "Don't know how to get profile path on your platform"
diff --git a/security/tor-browser/patches/patch-webapprt_moz.build b/security/tor-browser/patches/patch-webapprt_moz.build
new file mode 100644
index 00000000000..86eb9cb0872
--- /dev/null
+++ b/security/tor-browser/patches/patch-webapprt_moz.build
@@ -0,0 +1,15 @@
+$NetBSD: patch-webapprt_moz.build,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+Don't assume cocoa toolkit just because OS_ARCH is Darwin.
+
+--- webapprt/moz.build.orig 2014-09-24 01:05:40.000000000 +0000
++++ webapprt/moz.build
+@@ -6,7 +6,7 @@
+
+ if CONFIG['OS_ARCH'] == 'WINNT':
+ DIRS += ['win']
+-elif CONFIG['OS_ARCH'] == 'Darwin':
++elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa':
+ DIRS += ['mac']
+ elif CONFIG['MOZ_ENABLE_GTK']:
+ DIRS += ['gtk']
diff --git a/security/tor-browser/patches/patch-widget_gtk_gtk2drawing.c b/security/tor-browser/patches/patch-widget_gtk_gtk2drawing.c
new file mode 100644
index 00000000000..8ef069efada
--- /dev/null
+++ b/security/tor-browser/patches/patch-widget_gtk_gtk2drawing.c
@@ -0,0 +1,22 @@
+$NetBSD: patch-widget_gtk_gtk2drawing.c,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+--- widget/gtk/gtk2drawing.c.orig 2015-03-27 02:20:33.000000000 +0000
++++ widget/gtk/gtk2drawing.c
+@@ -831,7 +831,7 @@ moz_gtk_get_focus_outline_size(gint* foc
+ return MOZ_GTK_SUCCESS;
+ }
+
+-gint
++static gint
+ moz_gtk_widget_get_focus(GtkWidget* widget, gboolean* interior_focus,
+ gint* focus_width, gint* focus_pad)
+ {
+@@ -928,7 +928,7 @@ moz_gtk_splitter_get_metrics(gint orient
+ return MOZ_GTK_SUCCESS;
+ }
+
+-gint
++static gint
+ moz_gtk_button_get_inner_border(GtkWidget* widget, GtkBorder* inner_border)
+ {
+ static const GtkBorder default_inner_border = { 1, 1, 1, 1 };
diff --git a/security/tor-browser/patches/patch-widget_gtk_gtk3drawing.c b/security/tor-browser/patches/patch-widget_gtk_gtk3drawing.c
new file mode 100644
index 00000000000..57bd75383c7
--- /dev/null
+++ b/security/tor-browser/patches/patch-widget_gtk_gtk3drawing.c
@@ -0,0 +1,833 @@
+$NetBSD: patch-widget_gtk_gtk3drawing.c,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+--- widget/gtk/gtk3drawing.c.orig 2015-05-04 00:43:35.000000000 +0000
++++ widget/gtk/gtk3drawing.c
+@@ -65,6 +65,7 @@ static GtkWidget* gScrolledWindowWidget;
+ static style_prop_t style_prop_func;
+ static gboolean have_arrow_scaling;
+ static gboolean checkbox_check_state;
++static gboolean notebook_has_tab_gap;
+ static gboolean is_initialized;
+
+ #define ARROW_UP 0
+@@ -725,6 +726,14 @@ moz_gtk_init()
+ else
+ checkbox_check_state = GTK_STATE_FLAG_ACTIVE;
+
++ if(!gtk_check_version(3, 12, 0)) {
++ ensure_tab_widget();
++ gtk_widget_style_get(gTabWidget, "has-tab-gap", &notebook_has_tab_gap, NULL);
++ }
++ else {
++ notebook_has_tab_gap = TRUE;
++ }
++
+ /* Add style property to GtkEntry.
+ * Adding the style property to the normal GtkEntry class means that it
+ * will work without issues inside GtkComboBox and for Spinbuttons. */
+@@ -762,37 +771,17 @@ moz_gtk_radio_get_metrics(gint* indicato
+ gint
+ moz_gtk_get_focus_outline_size(gint* focus_h_width, gint* focus_v_width)
+ {
+- gboolean interior_focus;
+- gint focus_width = 0;
++ GtkBorder border;
++ GtkBorder padding;
++ GtkStyleContext *style;
+
+ ensure_entry_widget();
+- gtk_widget_style_get(gEntryWidget,
+- "interior-focus", &interior_focus,
+- "focus-line-width", &focus_width,
+- NULL);
+- if (interior_focus) {
+- GtkBorder border;
+- GtkStyleContext *style = gtk_widget_get_style_context(gEntryWidget);
+- gtk_style_context_get_border(style, 0, &border);
+- *focus_h_width = border.left + focus_width;
+- *focus_v_width = border.top + focus_width;
+- } else {
+- *focus_h_width = focus_width;
+- *focus_v_width = focus_width;
+- }
+- return MOZ_GTK_SUCCESS;
+-}
+-
+-gint
+-moz_gtk_widget_get_focus(GtkWidget* widget, gboolean* interior_focus,
+- gint* focus_width, gint* focus_pad)
+-{
+- gtk_widget_style_get (widget,
+- "interior-focus", interior_focus,
+- "focus-line-width", focus_width,
+- "focus-padding", focus_pad,
+- NULL);
++ style = gtk_widget_get_style_context(gEntryWidget);
+
++ gtk_style_context_get_border(style, 0, &border);
++ gtk_style_context_get_padding(style, 0, &padding);
++ *focus_h_width = border.left + padding.left;
++ *focus_v_width = border.top + padding.top;
+ return MOZ_GTK_SUCCESS;
+ }
+
+@@ -880,24 +869,6 @@ moz_gtk_splitter_get_metrics(gint orient
+ return MOZ_GTK_SUCCESS;
+ }
+
+-gint
+-moz_gtk_button_get_inner_border(GtkWidget* widget, GtkBorder* inner_border)
+-{
+- static const GtkBorder default_inner_border = { 1, 1, 1, 1 };
+- GtkBorder *tmp_border;
+-
+- gtk_widget_style_get (widget, "inner-border", &tmp_border, NULL);
+-
+- if (tmp_border) {
+- *inner_border = *tmp_border;
+- gtk_border_free(tmp_border);
+- }
+- else
+- *inner_border = default_inner_border;
+-
+- return MOZ_GTK_SUCCESS;
+-}
+-
+ static gint
+ moz_gtk_button_paint(cairo_t *cr, GdkRectangle* rect,
+ GtkWidgetState* state,
+@@ -908,19 +879,8 @@ moz_gtk_button_paint(cairo_t *cr, GdkRec
+ GtkStyleContext* style = gtk_widget_get_style_context(widget);
+ gint x = rect->x, y=rect->y, width=rect->width, height=rect->height;
+
+- gboolean interior_focus;
+- gint focus_width, focus_pad;
+-
+- moz_gtk_widget_get_focus(widget, &interior_focus, &focus_width, &focus_pad);
+ gtk_widget_set_direction(widget, direction);
+-
+- if (!interior_focus && state->focused) {
+- x += focus_width + focus_pad;
+- y += focus_width + focus_pad;
+- width -= 2 * (focus_width + focus_pad);
+- height -= 2 * (focus_width + focus_pad);
+- }
+-
++
+ gtk_style_context_save(style);
+ gtk_style_context_set_state(style, state_flags);
+
+@@ -953,20 +913,12 @@ moz_gtk_button_paint(cairo_t *cr, GdkRec
+ }
+
+ if (state->focused) {
+- if (interior_focus) {
+- GtkBorder border;
+- gtk_style_context_get_border(style, state_flags, &border);
+- x += border.left + focus_pad;
+- y += border.top + focus_pad;
+- width -= 2 * (border.left + focus_pad);
+- height -= 2 * (border.top + focus_pad);
+- } else {
+- x -= focus_width + focus_pad;
+- y -= focus_width + focus_pad;
+- width += 2 * (focus_width + focus_pad);
+- height += 2 * (focus_width + focus_pad);
+- }
+-
++ GtkBorder border;
++ gtk_style_context_get_border(style, state_flags, &border);
++ x += border.left;
++ y += border.top;
++ width -= (border.left + border.right);
++ height -= (border.top + border.bottom);
+ gtk_render_focus(style, cr, x, y, width, height);
+ }
+ gtk_style_context_restore(style);
+@@ -1056,33 +1008,23 @@ calculate_button_inner_rect(GtkWidget* b
+ GtkTextDirection direction,
+ gboolean ignore_focus)
+ {
+- GtkBorder inner_border;
+- gboolean interior_focus;
+- gint focus_width, focus_pad;
+ GtkStyleContext* style;
+ GtkBorder border;
++ GtkBorder padding = {0, 0, 0, 0};
+
+ style = gtk_widget_get_style_context(button);
+
+ /* This mirrors gtkbutton's child positioning */
+- moz_gtk_button_get_inner_border(button, &inner_border);
+- moz_gtk_widget_get_focus(button, &interior_focus,
+- &focus_width, &focus_pad);
+-
+- if (ignore_focus)
+- focus_width = focus_pad = 0;
+-
+ gtk_style_context_get_border(style, 0, &border);
++ if (!ignore_focus)
++ gtk_style_context_get_padding(style, 0, &padding);
+
+- inner_rect->x = rect->x + border.left + focus_width + focus_pad;
+- inner_rect->x += direction == GTK_TEXT_DIR_LTR ?
+- inner_border.left : inner_border.right;
+- inner_rect->y = rect->y + inner_border.top + border.top +
+- focus_width + focus_pad;
+- inner_rect->width = MAX(1, rect->width - inner_border.left -
+- inner_border.right - (border.left + focus_pad + focus_width) * 2);
+- inner_rect->height = MAX(1, rect->height - inner_border.top -
+- inner_border.bottom - (border.top + focus_pad + focus_width) * 2);
++ inner_rect->x = rect->x + border.left + padding.left;
++ inner_rect->y = rect->y + padding.top + border.top;
++ inner_rect->width = MAX(1, rect->width - padding.left -
++ padding.right - border.left * 2);
++ inner_rect->height = MAX(1, rect->height - padding.top -
++ padding.bottom - border.top * 2);
+
+ return MOZ_GTK_SUCCESS;
+ }
+@@ -1230,6 +1172,7 @@ moz_gtk_scrollbar_thumb_paint(GtkThemeWi
+ GtkStyleContext* style;
+ GtkScrollbar *scrollbar;
+ GtkAdjustment *adj;
++ GtkBorder margin;
+
+ ensure_scrollbar_widget();
+
+@@ -1239,15 +1182,20 @@ moz_gtk_scrollbar_thumb_paint(GtkThemeWi
+ scrollbar = GTK_SCROLLBAR(gVertScrollbarWidget);
+
+ gtk_widget_set_direction(GTK_WIDGET(scrollbar), direction);
+-
++
+ style = gtk_widget_get_style_context(GTK_WIDGET(scrollbar));
+ gtk_style_context_save(style);
+-
++
+ gtk_style_context_add_class(style, GTK_STYLE_CLASS_SLIDER);
+ gtk_style_context_set_state(style, state_flags);
+
+- gtk_render_slider(style, cr, rect->x, rect->y,
+- rect->width, rect->height,
++ gtk_style_context_get_margin (style, state_flags, &margin);
++
++ gtk_render_slider(style, cr,
++ rect->x + margin.left,
++ rect->y + margin.top,
++ rect->width - margin.left - margin.right,
++ rect->height - margin.top - margin.bottom,
+ (widget == MOZ_GTK_SCROLLBAR_THUMB_HORIZONTAL) ?
+ GTK_ORIENTATION_HORIZONTAL : GTK_ORIENTATION_VERTICAL);
+
+@@ -1451,19 +1399,12 @@ moz_gtk_entry_paint(cairo_t *cr, GdkRect
+ {
+ gint x = rect->x, y = rect->y, width = rect->width, height = rect->height;
+ GtkStyleContext* style;
+- gboolean interior_focus;
+- gint focus_width;
+ int draw_focus_outline_only = state->depressed; // NS_THEME_FOCUS_OUTLINE
+
+ gtk_widget_set_direction(widget, direction);
+
+ style = gtk_widget_get_style_context(widget);
+
+- gtk_widget_style_get(widget,
+- "interior-focus", &interior_focus,
+- "focus-line-width", &focus_width,
+- NULL);
+-
+ if (draw_focus_outline_only) {
+ // Inflate the given 'rect' with the focus outline size.
+ gint h, v;
+@@ -1495,14 +1436,6 @@ moz_gtk_entry_paint(cairo_t *cr, GdkRect
+ /* This will get us the lit borders that focused textboxes enjoy on
+ * some themes. */
+ gtk_style_context_set_state(style, GTK_STATE_FLAG_FOCUSED);
+- if (!interior_focus) {
+- /* Indent the border a little bit if we have exterior focus
+- (this is what GTK does to draw native entries) */
+- x += focus_width;
+- y += focus_width;
+- width -= 2 * focus_width;
+- height -= 2 * focus_width;
+- }
+ }
+
+ if (state->disabled) {
+@@ -1514,11 +1447,6 @@ moz_gtk_entry_paint(cairo_t *cr, GdkRect
+ }
+ gtk_render_frame(style, cr, x, y, width, height);
+
+- if (state->focused && !state->disabled) {
+- if (!interior_focus) {
+- gtk_render_focus(style, cr, rect->x, rect->y, rect->width, rect->height);
+- }
+- }
+ gtk_style_context_restore(style);
+
+ return MOZ_GTK_SUCCESS;
+@@ -1823,8 +1751,6 @@ moz_gtk_container_paint(cairo_t *cr, Gdk
+ GtkStateFlags state_flags = GetStateFlagsFromGtkWidgetState(state);
+ GtkStyleContext* style;
+ GtkWidget *widget;
+- gboolean interior_focus;
+- gint focus_width, focus_pad;
+
+ if (isradio) {
+ ensure_radiobutton_widget();
+@@ -1837,7 +1763,6 @@ moz_gtk_container_paint(cairo_t *cr, Gdk
+
+ style = gtk_widget_get_style_context(widget);
+ gtk_style_context_save(style);
+- moz_gtk_widget_get_focus(widget, &interior_focus, &focus_width, &focus_pad);
+ gtk_style_context_set_state(style, state_flags);
+
+ /* this is for drawing a prelight box */
+@@ -1846,10 +1771,6 @@ moz_gtk_container_paint(cairo_t *cr, Gdk
+ rect->x, rect->y, rect->width, rect->height);
+ }
+
+- if (state->focused && !interior_focus) {
+- gtk_render_focus(style, cr,
+- rect->x, rect->y, rect->width, rect->height);
+- }
+ gtk_style_context_restore(style);
+
+ return MOZ_GTK_SUCCESS;
+@@ -1862,7 +1783,6 @@ moz_gtk_toggle_label_paint(cairo_t *cr,
+ {
+ GtkStyleContext *style;
+ GtkWidget *widget;
+- gboolean interior_focus;
+
+ if (!state->focused)
+ return MOZ_GTK_SUCCESS;
+@@ -1883,10 +1803,6 @@ moz_gtk_toggle_label_paint(cairo_t *cr,
+ }
+ gtk_widget_set_direction(widget, direction);
+
+- gtk_widget_style_get(widget, "interior-focus", &interior_focus, NULL);
+- if (!interior_focus)
+- return MOZ_GTK_SUCCESS;
+-
+ gtk_style_context_set_state(style, GetStateFlagsFromGtkWidgetState(state));
+ gtk_render_focus(style, cr,
+ rect->x, rect->y, rect->width, rect->height);
+@@ -2105,6 +2021,9 @@ moz_gtk_get_tab_thickness(void)
+ GtkStyleContext * style;
+
+ ensure_tab_widget();
++ if (!notebook_has_tab_gap)
++ return 0; /* tabs do not overdraw the tabpanel border with "no gap" style */
++
+ style = gtk_widget_get_style_context(gTabWidget);
+ gtk_style_context_add_class(style, GTK_STYLE_CLASS_NOTEBOOK);
+ gtk_style_context_get_border(style, 0, &border);
+@@ -2150,7 +2069,7 @@ moz_gtk_tab_paint(cairo_t *cr, GdkRectan
+ ensure_tab_widget();
+ gtk_widget_set_direction(gTabWidget, direction);
+
+- style = gtk_widget_get_style_context(gTabWidget);
++ style = gtk_widget_get_style_context(gTabWidget);
+ gtk_style_context_save(style);
+ moz_gtk_tab_prepare_style_context(style, flags);
+
+@@ -2167,143 +2086,155 @@ moz_gtk_tab_paint(cairo_t *cr, GdkRectan
+
+ focusRect = backRect = tabRect;
+
+- if ((flags & MOZ_GTK_TAB_SELECTED) == 0) {
+- /* Only draw the tab */
+- gtk_render_extension(style, cr,
+- tabRect.x, tabRect.y, tabRect.width, tabRect.height,
+- (flags & MOZ_GTK_TAB_BOTTOM) ?
+- GTK_POS_TOP : GTK_POS_BOTTOM );
+- } else {
+- /* Draw the tab and the gap
+- * We want the gap to be positioned exactly on the tabpanel top
+- * border; since tabbox.css may set a negative margin so that the tab
+- * frame rect already overlaps the tabpanel frame rect, we need to take
+- * that into account when drawing. To that effect, nsNativeThemeGTK
+- * passes us this negative margin (bmargin in the graphic below) in the
+- * lowest bits of |flags|. We use it to set gap_voffset, the distance
+- * between the top of the gap and the bottom of the tab (resp. the
+- * bottom of the gap and the top of the tab when we draw a bottom tab),
+- * while ensuring that the gap always touches the border of the tab,
+- * i.e. 0 <= gap_voffset <= gap_height, to avoid surprinsing results
+- * with big negative or positive margins.
+- * Here is a graphical explanation in the case of top tabs:
+- * ___________________________
+- * / \
+- * | T A B |
+- * ----------|. . . . . . . . . . . . . . .|----- top of tabpanel
+- * : ^ bmargin : ^
+- * : | (-negative margin, : |
+- * bottom : v passed in flags) : | gap_height
+- * of -> :.............................: | (the size of the
+- * the tab . part of the gap . | tabpanel top border)
+- * . outside of the tab . v
+- * ----------------------------------------------
+- *
+- * To draw the gap, we use gtk_paint_box_gap(), see comment in
+- * moz_gtk_tabpanels_paint(). This box_gap is made 3 * gap_height tall,
+- * which should suffice to ensure that the only visible border is the
+- * pierced one. If the tab is in the middle, we make the box_gap begin
+- * a bit to the left of the tab and end a bit to the right, adjusting
+- * the gap position so it still is under the tab, because we want the
+- * rendering of a gap in the middle of a tabpanel. This is the role of
+- * the gints gap_{l,r}_offset. On the contrary, if the tab is the
+- * first, we align the start border of the box_gap with the start
+- * border of the tab (left if LTR, right if RTL), by setting the
+- * appropriate offset to 0.*/
+- gint gap_loffset, gap_roffset, gap_voffset, gap_height;
+-
+- /* Get height needed by the gap */
+- gap_height = moz_gtk_get_tab_thickness();
+-
+- /* Extract gap_voffset from the first bits of flags */
+- gap_voffset = flags & MOZ_GTK_TAB_MARGIN_MASK;
+- if (gap_voffset > gap_height)
+- gap_voffset = gap_height;
+-
+- /* Set gap_{l,r}_offset to appropriate values */
+- gap_loffset = gap_roffset = 20; /* should be enough */
+- if (flags & MOZ_GTK_TAB_FIRST) {
+- if (direction == GTK_TEXT_DIR_RTL)
+- gap_roffset = initial_gap;
+- else
+- gap_loffset = initial_gap;
+- }
+-
+- if (flags & MOZ_GTK_TAB_BOTTOM) {
+- /* Draw the tab on bottom */
+- focusRect.y += gap_voffset;
+- focusRect.height -= gap_voffset;
+-
++ if (notebook_has_tab_gap) {
++ if ((flags & MOZ_GTK_TAB_SELECTED) == 0) {
++ /* Only draw the tab */
+ gtk_render_extension(style, cr,
+- tabRect.x, tabRect.y + gap_voffset, tabRect.width,
+- tabRect.height - gap_voffset, GTK_POS_TOP);
+-
+- gtk_style_context_remove_region(style, GTK_STYLE_REGION_TAB);
+-
+- backRect.y += (gap_voffset - gap_height);
+- backRect.height = gap_height;
+-
+- /* Draw the gap; erase with background color before painting in
+- * case theme does not */
+- gtk_render_background(style, cr, backRect.x, backRect.y,
+- backRect.width, backRect.height);
+- cairo_save(cr);
+- cairo_rectangle(cr, backRect.x, backRect.y, backRect.width, backRect.height);
+- cairo_clip(cr);
+-
+- gtk_render_frame_gap(style, cr,
+- tabRect.x - gap_loffset,
+- tabRect.y + gap_voffset - 3 * gap_height,
+- tabRect.width + gap_loffset + gap_roffset,
+- 3 * gap_height, GTK_POS_BOTTOM,
+- gap_loffset, gap_loffset + tabRect.width);
+- cairo_restore(cr);
++ tabRect.x, tabRect.y, tabRect.width, tabRect.height,
++ (flags & MOZ_GTK_TAB_BOTTOM) ?
++ GTK_POS_TOP : GTK_POS_BOTTOM );
+ } else {
+- /* Draw the tab on top */
+- focusRect.height -= gap_voffset;
+- gtk_render_extension(style, cr,
+- tabRect.x, tabRect.y, tabRect.width,
+- tabRect.height - gap_voffset, GTK_POS_BOTTOM);
+-
+- gtk_style_context_remove_region(style, GTK_STYLE_REGION_TAB);
+-
+- backRect.y += (tabRect.height - gap_voffset);
+- backRect.height = gap_height;
++ /* Draw the tab and the gap
++ * We want the gap to be positioned exactly on the tabpanel top
++ * border; since tabbox.css may set a negative margin so that the tab
++ * frame rect already overlaps the tabpanel frame rect, we need to take
++ * that into account when drawing. To that effect, nsNativeThemeGTK
++ * passes us this negative margin (bmargin in the graphic below) in the
++ * lowest bits of |flags|. We use it to set gap_voffset, the distance
++ * between the top of the gap and the bottom of the tab (resp. the
++ * bottom of the gap and the top of the tab when we draw a bottom tab),
++ * while ensuring that the gap always touches the border of the tab,
++ * i.e. 0 <= gap_voffset <= gap_height, to avoid surprinsing results
++ * with big negative or positive margins.
++ * Here is a graphical explanation in the case of top tabs:
++ * ___________________________
++ * / \
++ * | T A B |
++ * ----------|. . . . . . . . . . . . . . .|----- top of tabpanel
++ * : ^ bmargin : ^
++ * : | (-negative margin, : |
++ * bottom : v passed in flags) : | gap_height
++ * of -> :.............................: | (the size of the
++ * the tab . part of the gap . | tabpanel top border)
++ * . outside of the tab . v
++ * ----------------------------------------------
++ *
++ * To draw the gap, we use gtk_paint_box_gap(), see comment in
++ * moz_gtk_tabpanels_paint(). This box_gap is made 3 * gap_height tall,
++ * which should suffice to ensure that the only visible border is the
++ * pierced one. If the tab is in the middle, we make the box_gap begin
++ * a bit to the left of the tab and end a bit to the right, adjusting
++ * the gap position so it still is under the tab, because we want the
++ * rendering of a gap in the middle of a tabpanel. This is the role of
++ * the gints gap_{l,r}_offset. On the contrary, if the tab is the
++ * first, we align the start border of the box_gap with the start
++ * border of the tab (left if LTR, right if RTL), by setting the
++ * appropriate offset to 0.*/
++ gint gap_loffset, gap_roffset, gap_voffset, gap_height;
++
++ /* Get height needed by the gap */
++ gap_height = moz_gtk_get_tab_thickness();
++
++ /* Extract gap_voffset from the first bits of flags */
++ gap_voffset = flags & MOZ_GTK_TAB_MARGIN_MASK;
++ if (gap_voffset > gap_height)
++ gap_voffset = gap_height;
++
++ /* Set gap_{l,r}_offset to appropriate values */
++ gap_loffset = gap_roffset = 20; /* should be enough */
++ if (flags & MOZ_GTK_TAB_FIRST) {
++ if (direction == GTK_TEXT_DIR_RTL)
++ gap_roffset = initial_gap;
++ else
++ gap_loffset = initial_gap;
++ }
+
+- /* Draw the gap; erase with background color before painting in
+- * case theme does not */
+- gtk_render_background(style, cr, backRect.x, backRect.y,
+- backRect.width, backRect.height);
+-
+- cairo_save(cr);
+- cairo_rectangle(cr, backRect.x, backRect.y, backRect.width, backRect.height);
+- cairo_clip(cr);
+-
+- gtk_render_frame_gap(style, cr,
+- tabRect.x - gap_loffset,
+- tabRect.y + tabRect.height - gap_voffset,
+- tabRect.width + gap_loffset + gap_roffset,
+- 3 * gap_height, GTK_POS_TOP,
+- gap_loffset, gap_loffset + tabRect.width);
+- cairo_restore(cr);
++ if (flags & MOZ_GTK_TAB_BOTTOM) {
++ /* Draw the tab on bottom */
++ focusRect.y += gap_voffset;
++ focusRect.height -= gap_voffset;
++
++ gtk_render_extension(style, cr,
++ tabRect.x, tabRect.y + gap_voffset, tabRect.width,
++ tabRect.height - gap_voffset, GTK_POS_TOP);
++
++ gtk_style_context_remove_region(style, GTK_STYLE_REGION_TAB);
++
++ backRect.y += (gap_voffset - gap_height);
++ backRect.height = gap_height;
++
++ /* Draw the gap; erase with background color before painting in
++ * case theme does not */
++ gtk_render_background(style, cr, backRect.x, backRect.y,
++ backRect.width, backRect.height);
++ cairo_save(cr);
++ cairo_rectangle(cr, backRect.x, backRect.y, backRect.width, backRect.height);
++ cairo_clip(cr);
++
++ gtk_render_frame_gap(style, cr,
++ tabRect.x - gap_loffset,
++ tabRect.y + gap_voffset - 3 * gap_height,
++ tabRect.width + gap_loffset + gap_roffset,
++ 3 * gap_height, GTK_POS_BOTTOM,
++ gap_loffset, gap_loffset + tabRect.width);
++ cairo_restore(cr);
++ } else {
++ /* Draw the tab on top */
++ focusRect.height -= gap_voffset;
++ gtk_render_extension(style, cr,
++ tabRect.x, tabRect.y, tabRect.width,
++ tabRect.height - gap_voffset, GTK_POS_BOTTOM);
++
++ gtk_style_context_remove_region(style, GTK_STYLE_REGION_TAB);
++
++ backRect.y += (tabRect.height - gap_voffset);
++ backRect.height = gap_height;
++
++ /* Draw the gap; erase with background color before painting in
++ * case theme does not */
++ gtk_render_background(style, cr, backRect.x, backRect.y,
++ backRect.width, backRect.height);
++
++ cairo_save(cr);
++ cairo_rectangle(cr, backRect.x, backRect.y, backRect.width, backRect.height);
++ cairo_clip(cr);
++
++ gtk_render_frame_gap(style, cr,
++ tabRect.x - gap_loffset,
++ tabRect.y + tabRect.height - gap_voffset,
++ tabRect.width + gap_loffset + gap_roffset,
++ 3 * gap_height, GTK_POS_TOP,
++ gap_loffset, gap_loffset + tabRect.width);
++ cairo_restore(cr);
++ }
+ }
++ } else {
++ gtk_render_background(style, cr, tabRect.x, tabRect.y, tabRect.width, tabRect.height);
++ gtk_render_frame(style, cr, tabRect.x, tabRect.y, tabRect.width, tabRect.height);
+ }
+
++ gtk_style_context_restore(style);
++
+ if (state->focused) {
+ /* Paint the focus ring */
+- GtkBorder border;
+- gtk_style_context_get_border(style, GetStateFlagsFromGtkWidgetState(state), &border);
++ GtkBorder padding;
++
++ gtk_style_context_save(style);
++ moz_gtk_tab_prepare_style_context(style, flags);
+
+- focusRect.x += border.left;
+- focusRect.width -= (border.left + border.right);
+- focusRect.y += border.top;
+- focusRect.height -= (border.top + border.bottom);
++ gtk_style_context_get_padding(style, GetStateFlagsFromGtkWidgetState(state), &padding);
++
++ focusRect.x += padding.left;
++ focusRect.width -= (padding.left + padding.right);
++ focusRect.y += padding.top;
++ focusRect.height -= (padding.top + padding.bottom);
+
+ gtk_render_focus(style, cr,
+ focusRect.x, focusRect.y, focusRect.width, focusRect.height);
++
++ gtk_style_context_restore(style);
+ }
+
+- gtk_style_context_restore(style);
+
+ return MOZ_GTK_SUCCESS;
+ }
+@@ -2684,26 +2615,18 @@ moz_gtk_get_widget_border(GtkThemeWidget
+ switch (widget) {
+ case MOZ_GTK_BUTTON:
+ {
+- GtkBorder inner_border;
+- gboolean interior_focus;
+- gint focus_width, focus_pad;
+-
+ ensure_button_widget();
++ style = gtk_widget_get_style_context(gButtonWidget);
++
+ *left = *top = *right = *bottom = gtk_container_get_border_width(GTK_CONTAINER(gButtonWidget));
+
+ /* Don't add this padding in HTML, otherwise the buttons will
+ become too big and stuff the layout. */
+ if (!inhtml) {
+- moz_gtk_widget_get_focus(gButtonWidget, &interior_focus, &focus_width, &focus_pad);
+- moz_gtk_button_get_inner_border(gButtonWidget, &inner_border);
+- *left += focus_width + focus_pad + inner_border.left;
+- *right += focus_width + focus_pad + inner_border.right;
+- *top += focus_width + focus_pad + inner_border.top;
+- *bottom += focus_width + focus_pad + inner_border.bottom;
++ moz_gtk_add_style_padding(style, left, top, right, bottom);
+ }
+
+- moz_gtk_add_style_border(gtk_widget_get_style_context(gButtonWidget),
+- left, top, right, bottom);
++ moz_gtk_add_style_border(style, left, top, right, bottom);
+ return MOZ_GTK_SUCCESS;
+ }
+ case MOZ_GTK_ENTRY:
+@@ -2711,7 +2634,13 @@ moz_gtk_get_widget_border(GtkThemeWidget
+ ensure_entry_widget();
+ style = gtk_widget_get_style_context(gEntryWidget);
+ moz_gtk_add_style_border(style, left, top, right, bottom);
+- moz_gtk_add_style_padding(style, left, top, right, bottom);
++
++ /* Use the document padding in HTML
++ and GTK style padding in XUL. */
++ if (!inhtml) {
++ moz_gtk_add_style_padding(style, left, top, right, bottom);
++ }
++
+ return MOZ_GTK_SUCCESS;
+ }
+ case MOZ_GTK_TREEVIEW:
+@@ -2731,23 +2660,15 @@ moz_gtk_get_widget_border(GtkThemeWidget
+ * assigned.
+ * That is why the following code is the same as for MOZ_GTK_BUTTON.
+ * */
+-
+- GtkBorder inner_border;
+- gboolean interior_focus;
+- gint focus_width, focus_pad;
++ GtkStyleContext *style;
+
+ ensure_tree_header_cell_widget();
+ *left = *top = *right = *bottom = gtk_container_get_border_width(GTK_CONTAINER(gTreeHeaderCellWidget));
+
+- moz_gtk_widget_get_focus(gTreeHeaderCellWidget, &interior_focus, &focus_width, &focus_pad);
+- moz_gtk_button_get_inner_border(gTreeHeaderCellWidget, &inner_border);
+- *left += focus_width + focus_pad + inner_border.left;
+- *right += focus_width + focus_pad + inner_border.right;
+- *top += focus_width + focus_pad + inner_border.top;
+- *bottom += focus_width + focus_pad + inner_border.bottom;
+-
+- moz_gtk_add_style_border(gtk_widget_get_style_context(gTreeHeaderCellWidget),
+- left, top, right, bottom);
++ style = gtk_widget_get_style_context(gTreeHeaderCellWidget);
++
++ moz_gtk_add_style_border(style, left, top, right, bottom);
++ moz_gtk_add_style_padding(style, left, top, right, bottom);
+ return MOZ_GTK_SUCCESS;
+ }
+ case MOZ_GTK_TREE_HEADER_SORTARROW:
+@@ -2767,29 +2688,23 @@ moz_gtk_get_widget_border(GtkThemeWidget
+ /* We need to account for the arrow on the dropdown, so text
+ * doesn't come too close to the arrow, or in some cases spill
+ * into the arrow. */
+- gboolean ignored_interior_focus, wide_separators;
+- gint focus_width, focus_pad, separator_width;
++ gboolean wide_separators;
++ gint separator_width;
+ GtkRequisition arrow_req;
+ GtkBorder border;
+
+ ensure_combo_box_widgets();
+
+- *left = gtk_container_get_border_width(GTK_CONTAINER(gComboBoxButtonWidget));
++ *left = *top = *right = *bottom =
++ gtk_container_get_border_width(GTK_CONTAINER(gComboBoxButtonWidget));
++
++ style = gtk_widget_get_style_context(gComboBoxButtonWidget);
+
+ if (!inhtml) {
+- moz_gtk_widget_get_focus(gComboBoxButtonWidget,
+- &ignored_interior_focus,
+- &focus_width, &focus_pad);
+- *left += focus_width + focus_pad;
++ moz_gtk_add_style_padding(style, left, top, right, bottom);
+ }
+
+- style = gtk_widget_get_style_context(gComboBoxButtonWidget);
+- gtk_style_context_get_border(style, 0, &border);
+-
+- *top = *left + border.top;
+- *left += border.left;
+-
+- *right = *left; *bottom = *top;
++ moz_gtk_add_style_border(style, left, top, right, bottom);
+
+ /* If there is no separator, don't try to count its width. */
+ separator_width = 0;
+@@ -2841,60 +2756,23 @@ moz_gtk_get_widget_border(GtkThemeWidget
+ ensure_frame_widget();
+ w = gFrameWidget;
+ break;
+- case MOZ_GTK_CHECKBUTTON_LABEL:
+- case MOZ_GTK_RADIOBUTTON_LABEL:
+- {
+- gboolean interior_focus;
+- gint focus_width, focus_pad;
+-
+- /* If the focus is interior, then the label has a border of
+- (focus_width + focus_pad). */
+- if (widget == MOZ_GTK_CHECKBUTTON_LABEL) {
+- ensure_checkbox_widget();
+- moz_gtk_widget_get_focus(gCheckboxWidget, &interior_focus,
+- &focus_width, &focus_pad);
+- }
+- else {
+- ensure_radiobutton_widget();
+- moz_gtk_widget_get_focus(gRadiobuttonWidget, &interior_focus,
+- &focus_width, &focus_pad);
+- }
+-
+- if (interior_focus)
+- *left = *top = *right = *bottom = (focus_width + focus_pad);
+-
+- return MOZ_GTK_SUCCESS;
+- }
+-
+ case MOZ_GTK_CHECKBUTTON_CONTAINER:
+ case MOZ_GTK_RADIOBUTTON_CONTAINER:
+ {
+- gboolean interior_focus;
+- gint focus_width, focus_pad;
+-
+- /* If the focus is _not_ interior, then the container has a border
+- of (focus_width + focus_pad). */
+ if (widget == MOZ_GTK_CHECKBUTTON_CONTAINER) {
+ ensure_checkbox_widget();
+- moz_gtk_widget_get_focus(gCheckboxWidget, &interior_focus,
+- &focus_width, &focus_pad);
+ w = gCheckboxWidget;
+ } else {
+ ensure_radiobutton_widget();
+- moz_gtk_widget_get_focus(gRadiobuttonWidget, &interior_focus,
+- &focus_width, &focus_pad);
+ w = gRadiobuttonWidget;
+ }
++ style = gtk_widget_get_style_context(w);
+
+ *left = *top = *right = *bottom = gtk_container_get_border_width(GTK_CONTAINER(w));
+-
+- if (!interior_focus) {
+- *left += (focus_width + focus_pad);
+- *right += (focus_width + focus_pad);
+- *top += (focus_width + focus_pad);
+- *bottom += (focus_width + focus_pad);
+- }
+-
++ moz_gtk_add_style_border(style,
++ left, top, right, bottom);
++ moz_gtk_add_style_padding(style,
++ left, top, right, bottom);
+ return MOZ_GTK_SUCCESS;
+ }
+ case MOZ_GTK_MENUPOPUP:
+@@ -2921,6 +2799,8 @@ moz_gtk_get_widget_border(GtkThemeWidget
+ return MOZ_GTK_SUCCESS;
+ }
+ /* These widgets have no borders, since they are not containers. */
++ case MOZ_GTK_CHECKBUTTON_LABEL:
++ case MOZ_GTK_RADIOBUTTON_LABEL:
+ case MOZ_GTK_SPLITTER_HORIZONTAL:
+ case MOZ_GTK_SPLITTER_VERTICAL:
+ case MOZ_GTK_CHECKBUTTON:
+@@ -2975,11 +2855,7 @@ moz_gtk_get_tab_border(gint* left, gint*
+ gtk_style_context_save(style);
+ moz_gtk_tab_prepare_style_context(style, flags);
+
+- // TODO add_style_border() should be replaced
+- // with focus-line-width and focus-padding
+- // see Bug 877605
+ *left = *top = *right = *bottom = 0;
+- moz_gtk_add_style_border(style, left, top, right, bottom);
+ moz_gtk_add_style_padding(style, left, top, right, bottom);
+
+ gtk_widget_style_get (gTabWidget, "tab-curvature", &tab_curvature, NULL);
+@@ -2990,16 +2866,9 @@ moz_gtk_get_tab_border(gint* left, gint*
+ int initial_gap;
+ gtk_widget_style_get (gTabWidget, "initial-gap", &initial_gap, NULL);
+ if (direction == GTK_TEXT_DIR_RTL)
+- *right += initial_gap;
++ *right += initial_gap;
+ else
+- *left += initial_gap;
+- }
+-
+- // Top tabs have no bottom border, bottom tabs have no top border
+- if (flags & MOZ_GTK_TAB_BOTTOM) {
+- *top = 0;
+- } else {
+- *bottom = 0;
++ *left += initial_gap;
+ }
+
+ gtk_style_context_restore(style);
diff --git a/security/tor-browser/patches/patch-widget_gtk_gtkdrawing.h b/security/tor-browser/patches/patch-widget_gtk_gtkdrawing.h
new file mode 100644
index 00000000000..1f3d4b54b8a
--- /dev/null
+++ b/security/tor-browser/patches/patch-widget_gtk_gtkdrawing.h
@@ -0,0 +1,41 @@
+$NetBSD: patch-widget_gtk_gtkdrawing.h,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+--- widget/gtk/gtkdrawing.h.orig 2015-03-27 02:20:33.000000000 +0000
++++ widget/gtk/gtkdrawing.h
+@@ -293,16 +293,6 @@ moz_gtk_checkbox_get_metrics(gint* indic
+ gint
+ moz_gtk_radio_get_metrics(gint* indicator_size, gint* indicator_spacing);
+
+-/**
+- * Get the inner-border value for a GtkButton widget (button or tree header)
+- * widget: [IN] the widget to get the border value for
+- * inner_border: [OUT] the inner border
+- *
+- * returns: MOZ_GTK_SUCCESS if there was no error, an error code otherwise
+- */
+-gint
+-moz_gtk_button_get_inner_border(GtkWidget* widget, GtkBorder* inner_border);
+-
+ /** Get the extra size for the focus ring for outline:auto.
+ * widget: [IN] the widget to get the focus metrics for
+ * focus_h_width: [OUT] the horizontal width
+@@ -313,19 +303,6 @@ moz_gtk_button_get_inner_border(GtkWidge
+ gint
+ moz_gtk_get_focus_outline_size(gint* focus_h_width, gint* focus_v_width);
+
+-/** Get the focus metrics for a treeheadercell, button, checkbox, or radio button.
+- * widget: [IN] the widget to get the focus metrics for
+- * interior_focus: [OUT] whether the focus is drawn around the
+- * label (TRUE) or around the whole container (FALSE)
+- * focus_width: [OUT] the width of the focus line
+- * focus_pad: [OUT] the padding between the focus line and children
+- *
+- * returns: MOZ_GTK_SUCCESS if there was no error, an error code otherwise
+- */
+-gint
+-moz_gtk_widget_get_focus(GtkWidget* widget, gboolean* interior_focus,
+- gint* focus_width, gint* focus_pad);
+-
+ /** Get the horizontal padding for the menuitem widget or checkmenuitem widget.
+ * horizontal_padding: [OUT] The left and right padding of the menuitem or checkmenuitem
+ *
diff --git a/security/tor-browser/patches/patch-widget_gtk_nsNativeThemeGTK.cpp b/security/tor-browser/patches/patch-widget_gtk_nsNativeThemeGTK.cpp
new file mode 100644
index 00000000000..30e038f5b0f
--- /dev/null
+++ b/security/tor-browser/patches/patch-widget_gtk_nsNativeThemeGTK.cpp
@@ -0,0 +1,30 @@
+$NetBSD: patch-widget_gtk_nsNativeThemeGTK.cpp,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+--- widget/gtk/nsNativeThemeGTK.cpp.orig 2015-05-04 00:43:35.000000000 +0000
++++ widget/gtk/nsNativeThemeGTK.cpp
+@@ -761,6 +761,8 @@ nsNativeThemeGTK::GetExtraSizeForWidget(
+ return false;
+
+ gint gap_height = moz_gtk_get_tab_thickness();
++ if (!gap_height)
++ return false;
+
+ int32_t extra = gap_height - GetTabMarginPixels(aFrame);
+ if (extra <= 0)
+@@ -1528,9 +1530,15 @@ nsNativeThemeGTK::GetWidgetTransparency(
+ case NS_THEME_MENUPOPUP:
+ case NS_THEME_WINDOW:
+ case NS_THEME_DIALOG:
+- // Tooltips use gtk_paint_flat_box().
++ return eOpaque;
++ // Tooltips use gtk_paint_flat_box() on Gtk2
++ // but are shaped on Gtk3
+ case NS_THEME_TOOLTIP:
++#if (MOZ_WIDGET_GTK == 2)
+ return eOpaque;
++#else
++ return eTransparent;
++#endif
+ }
+
+ return eUnknownTransparency;
diff --git a/security/tor-browser/patches/patch-xpcom_base_nsStackWalk.cpp b/security/tor-browser/patches/patch-xpcom_base_nsStackWalk.cpp
new file mode 100644
index 00000000000..f6f41d13a8f
--- /dev/null
+++ b/security/tor-browser/patches/patch-xpcom_base_nsStackWalk.cpp
@@ -0,0 +1,59 @@
+$NetBSD: patch-xpcom_base_nsStackWalk.cpp,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+* Replace XP_MACOSX with XP_DARWIN as the former is not defined when
+ the toolkit is not cocoa.
+
+--- xpcom/base/nsStackWalk.cpp.orig 2015-05-04 00:43:35.000000000 +0000
++++ xpcom/base/nsStackWalk.cpp
+@@ -34,12 +34,12 @@ static CriticalAddress gCriticalAddress;
+ #define _GNU_SOURCE
+ #endif
+
+-#if defined(HAVE_DLOPEN) || defined(XP_MACOSX)
++#if defined(HAVE_DLOPEN) || defined(XP_DARWIN)
+ #include <dlfcn.h>
+ #endif
+
+-#define NSSTACKWALK_SUPPORTS_MACOSX \
+- (defined(XP_MACOSX) && \
++#define NSSTACKWALK_SUPPORTS_DARWIN \
++ (defined(XP_DARWIN) && \
+ (defined(__i386) || defined(__ppc__) || defined(HAVE__UNWIND_BACKTRACE)))
+
+ #define NSSTACKWALK_SUPPORTS_LINUX \
+@@ -47,7 +47,7 @@ static CriticalAddress gCriticalAddress;
+ ((defined(__GNUC__) && (defined(__i386) || defined(PPC))) || \
+ defined(HAVE__UNWIND_BACKTRACE)))
+
+-#if NSSTACKWALK_SUPPORTS_MACOSX
++#if NSSTACKWALK_SUPPORTS_DARWIN
+ #include <pthread.h>
+ #include <CoreServices/CoreServices.h>
+
+@@ -830,7 +830,7 @@ NS_DescribeCodeAddress(void* aPC, nsCode
+ }
+
+ // i386 or PPC Linux stackwalking code
+-#elif HAVE_DLADDR && (HAVE__UNWIND_BACKTRACE || NSSTACKWALK_SUPPORTS_LINUX || NSSTACKWALK_SUPPORTS_MACOSX)
++#elif HAVE_DLADDR && (HAVE__UNWIND_BACKTRACE || NSSTACKWALK_SUPPORTS_LINUX || NSSTACKWALK_SUPPORTS_DARWIN)
+
+ #include <stdlib.h>
+ #include <string.h>
+@@ -901,7 +901,7 @@ FramePointerStackWalk(NS_WalkStackCallba
+ (long(next) & 3)) {
+ break;
+ }
+-#if (defined(__ppc__) && defined(XP_MACOSX)) || defined(__powerpc64__)
++#if (defined(__ppc__) && defined(XP_DARWIN)) || defined(__powerpc64__)
+ // ppc mac or powerpc64 linux
+ void* pc = *(bp + 2);
+ bp += 3;
+@@ -931,7 +931,7 @@ FramePointerStackWalk(NS_WalkStackCallba
+ }
+
+ #define X86_OR_PPC (defined(__i386) || defined(PPC) || defined(__ppc__))
+-#if X86_OR_PPC && (NSSTACKWALK_SUPPORTS_MACOSX || NSSTACKWALK_SUPPORTS_LINUX) // i386 or PPC Linux or Mac stackwalking code
++#if X86_OR_PPC && (NSSTACKWALK_SUPPORTS_DARWIN || NSSTACKWALK_SUPPORTS_LINUX) // i386 or PPC Linux or Mac stackwalking code
+
+ XPCOM_API(nsresult)
+ NS_StackWalk(NS_WalkStackCallback aCallback, uint32_t aSkipFrames,
diff --git a/security/tor-browser/patches/patch-xpcom_base_nscore.h b/security/tor-browser/patches/patch-xpcom_base_nscore.h
new file mode 100644
index 00000000000..be4fb860029
--- /dev/null
+++ b/security/tor-browser/patches/patch-xpcom_base_nscore.h
@@ -0,0 +1,13 @@
+$NetBSD: patch-xpcom_base_nscore.h,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+--- xpcom/base/nscore.h.orig 2014-05-29 23:31:50.000000000 +0000
++++ xpcom/base/nscore.h
+@@ -114,7 +114,7 @@
+ * NS_HIDDEN_(int) NS_FASTCALL func2(char *foo);
+ */
+
+-#if defined(__i386__) && defined(__GNUC__)
++#if defined(__i386__) && defined(__GNUC__) && !(defined(__clang__) && __clang_major__ == 3 && __clang_minor__ == 4 && __clang_patchlevel__ == 0)
+ #define NS_FASTCALL __attribute__ ((regparm (3), stdcall))
+ #define NS_CONSTRUCTOR_FASTCALL __attribute__ ((regparm (3), stdcall))
+ #elif defined(XP_WIN) && !defined(_WIN64)
diff --git a/security/tor-browser/patches/patch-xpcom_build_PoisonIOInterposer.h b/security/tor-browser/patches/patch-xpcom_build_PoisonIOInterposer.h
new file mode 100644
index 00000000000..02b3ff85fec
--- /dev/null
+++ b/security/tor-browser/patches/patch-xpcom_build_PoisonIOInterposer.h
@@ -0,0 +1,58 @@
+$NetBSD: patch-xpcom_build_PoisonIOInterposer.h,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+Replace XP_MACOSX with XP_DARWIN as the former is not defined when the
+toolkit is not cocoa.
+
+--- xpcom/build/PoisonIOInterposer.h.orig 2015-01-28 23:04:52.000000000 +0000
++++ xpcom/build/PoisonIOInterposer.h
+@@ -26,7 +26,7 @@ void MozillaUnRegisterDebugFILE(FILE* aF
+
+ MOZ_END_EXTERN_C
+
+-#if defined(XP_WIN) || defined(XP_MACOSX)
++#if defined(XP_WIN) || defined(XP_DARWIN)
+
+ #ifdef __cplusplus
+ namespace mozilla {
+@@ -44,7 +44,7 @@ bool IsDebugFile(intptr_t aFileID);
+ */
+ void InitPoisonIOInterposer();
+
+-#ifdef XP_MACOSX
++#ifdef XP_DARWIN
+ /**
+ * Check that writes are dirty before reporting I/O (Mac OS X only)
+ * This is necessary for late-write checks on Mac OS X, but reading the buffer
+@@ -52,7 +52,7 @@ void InitPoisonIOInterposer();
+ * to do this for everything else that uses
+ */
+ void OnlyReportDirtyWrites();
+-#endif /* XP_MACOSX */
++#endif /* XP_DARWIN */
+
+ /**
+ * Clear IO poisoning, this is only safe to do on the main-thread when no other
+@@ -63,19 +63,19 @@ void ClearPoisonIOInterposer();
+ } // namespace mozilla
+ #endif /* __cplusplus */
+
+-#else /* XP_WIN || XP_MACOSX */
++#else /* XP_WIN || XP_DARWIN */
+
+ #ifdef __cplusplus
+ namespace mozilla {
+ inline bool IsDebugFile(intptr_t aFileID) { return true; }
+ inline void InitPoisonIOInterposer() {}
+ inline void ClearPoisonIOInterposer() {}
+-#ifdef XP_MACOSX
++#ifdef XP_DARWIN
+ inline void OnlyReportDirtyWrites() {}
+-#endif /* XP_MACOSX */
++#endif /* XP_DARWIN */
+ } // namespace mozilla
+ #endif /* __cplusplus */
+
+-#endif /* XP_WIN || XP_MACOSX */
++#endif /* XP_WIN || XP_DARWIN */
+
+ #endif // mozilla_PoisonIOInterposer_h
diff --git a/security/tor-browser/patches/patch-xpcom_build_XPCOMInit.cpp b/security/tor-browser/patches/patch-xpcom_build_XPCOMInit.cpp
new file mode 100644
index 00000000000..063e3a44656
--- /dev/null
+++ b/security/tor-browser/patches/patch-xpcom_build_XPCOMInit.cpp
@@ -0,0 +1,28 @@
+$NetBSD: patch-xpcom_build_XPCOMInit.cpp,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+--- xpcom/build/XPCOMInit.cpp.orig 2015-05-04 00:43:36.000000000 +0000
++++ xpcom/build/XPCOMInit.cpp
+@@ -141,7 +141,9 @@ extern nsresult nsStringInputStreamConst
+ #include "mozilla/VisualEventTracer.h"
+ #endif
+
++#ifndef MOZ_OGG_NO_MEM_REPORTING
+ #include "ogg/ogg.h"
++#endif
+ #if defined(MOZ_VPX) && !defined(MOZ_VPX_NO_MEM_REPORTING)
+ #if defined(HAVE_STDINT_H)
+ // mozilla-config.h defines HAVE_STDINT_H, and then it's defined *again* in
+@@ -669,11 +671,13 @@ NS_InitXPCOM2(nsIServiceManager** aResul
+ // this oddness.
+ mozilla::SetICUMemoryFunctions();
+
++#ifndef MOZ_OGG_NO_MEM_REPORTING
+ // Do the same for libogg.
+ ogg_set_mem_functions(OggReporter::CountingMalloc,
+ OggReporter::CountingCalloc,
+ OggReporter::CountingRealloc,
+ OggReporter::CountingFree);
++#endif
+
+ #if defined(MOZ_VPX) && !defined(MOZ_VPX_NO_MEM_REPORTING)
+ // And for VPX.
diff --git a/security/tor-browser/patches/patch-xpcom_components_Module.h b/security/tor-browser/patches/patch-xpcom_components_Module.h
new file mode 100644
index 00000000000..44abb8bfd51
--- /dev/null
+++ b/security/tor-browser/patches/patch-xpcom_components_Module.h
@@ -0,0 +1,13 @@
+$NetBSD: patch-xpcom_components_Module.h,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+--- xpcom/components/Module.h.orig 2016-01-21 05:38:42.000000000 +0000
++++ xpcom/components/Module.h
+@@ -124,7 +124,7 @@ struct Module
+ # define NSMODULE_SECTION __declspec(allocate(".kPStaticModules$M"), dllexport)
+ # elif defined(__GNUC__)
+ # if defined(__ELF__)
+-# define NSMODULE_SECTION __attribute__((section(".kPStaticModules"), visibility("protected")))
++# define NSMODULE_SECTION __attribute__((section(".kPStaticModules"), visibility("default")))
+ # elif defined(__MACH__)
+ # define NSMODULE_SECTION __attribute__((section("__DATA, .kPStaticModules"), visibility("default")))
+ # elif defined (_WIN32)
diff --git a/security/tor-browser/patches/patch-xpcom_glue_standalone_nsXPCOMGlue.cpp b/security/tor-browser/patches/patch-xpcom_glue_standalone_nsXPCOMGlue.cpp
new file mode 100644
index 00000000000..ba8c4579ee6
--- /dev/null
+++ b/security/tor-browser/patches/patch-xpcom_glue_standalone_nsXPCOMGlue.cpp
@@ -0,0 +1,17 @@
+$NetBSD: patch-xpcom_glue_standalone_nsXPCOMGlue.cpp,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+Fix inconsistent use of XP_DARWIN and XP_MACOSX: LEADING_UNDERSCORE
+should be empty when we are going to load XPCOM using dlopen(3), not
+NSAddImage().
+
+--- xpcom/glue/standalone/nsXPCOMGlue.cpp.orig 2015-01-30 05:17:58.000000000 +0000
++++ xpcom/glue/standalone/nsXPCOMGlue.cpp
+@@ -30,7 +30,7 @@ static bool do_preload = false;
+ #endif
+
+ #if defined(SUNOS4) || defined(NEXTSTEP) || \
+- defined(XP_DARWIN) || \
++ defined(XP_MACOSX) || \
+ (defined(OPENBSD) || defined(NETBSD)) && !defined(__ELF__)
+ #define LEADING_UNDERSCORE "_"
+ #else
diff --git a/security/tor-browser/patches/patch-xpcom_io_nsAppFileLocationProvider.cpp b/security/tor-browser/patches/patch-xpcom_io_nsAppFileLocationProvider.cpp
new file mode 100644
index 00000000000..eebe3d7e496
--- /dev/null
+++ b/security/tor-browser/patches/patch-xpcom_io_nsAppFileLocationProvider.cpp
@@ -0,0 +1,27 @@
+$NetBSD: patch-xpcom_io_nsAppFileLocationProvider.cpp,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+https://github.com/torbsd/openbsd-ports/blob/6bce5893badd924a4090fffa1998220505520661/www/tbb/tor-browser/patches/patch-xpcom_io_nsAppFileLocationProvider_cpp
+
+--- xpcom/io/nsAppFileLocationProvider.cpp.orig 2016-02-13 07:06:53.000000000 +0000
++++ xpcom/io/nsAppFileLocationProvider.cpp
+@@ -295,6 +295,7 @@ nsAppFileLocationProvider::GetProductDir
+ bool exists;
+ nsCOMPtr<nsIFile> localDir;
+
++#if 0
+ rv = CloneMozBinDirectory(getter_AddRefs(localDir));
+ NS_ENSURE_SUCCESS(rv, rv);
+
+@@ -328,6 +329,12 @@ nsAppFileLocationProvider::GetProductDir
+ XPCOM_FILE_PATH_SEPARATOR "Data"
+ XPCOM_FILE_PATH_SEPARATOR "Browser"));
+ NS_ENSURE_SUCCESS(rv, rv);
++#endif
++ rv = NS_NewNativeLocalFile(nsDependentCString(PR_GetEnv("HOME")), true, getter_AddRefs(localDir));
++ if (NS_FAILED(rv)) return rv;
++
++ rv = localDir->AppendRelativeNativePath(DEFAULT_PRODUCT_DIR);
++ if (NS_FAILED(rv)) return rv;
+
+ if (aLocal) {
+ rv = localDir->AppendNative(NS_LITERAL_CSTRING("Caches"));
diff --git a/security/tor-browser/patches/patch-xpcom_reflect_xptcall_md_unix_Makefile.in b/security/tor-browser/patches/patch-xpcom_reflect_xptcall_md_unix_Makefile.in
new file mode 100644
index 00000000000..676c4c2c9f0
--- /dev/null
+++ b/security/tor-browser/patches/patch-xpcom_reflect_xptcall_md_unix_Makefile.in
@@ -0,0 +1,44 @@
+$NetBSD: patch-xpcom_reflect_xptcall_md_unix_Makefile.in,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+--- xpcom/reflect/xptcall/md/unix/Makefile.in.orig 2014-10-11 09:06:50.000000000 +0000
++++ xpcom/reflect/xptcall/md/unix/Makefile.in
+@@ -56,6 +56,39 @@ endif
+ # SPARC
+ ######################################################################
+ #
++# Linux/SPARC
++#
++ifeq ($(OS_ARCH),Linux)
++ifneq (,$(findstring sparc,$(OS_TEST)))
++ASFILES := xptcinvoke_asm_sparc_linux_GCC3.s xptcstubs_asm_sparc_solaris.s
++endif
++endif
++#
++# NetBSD/SPARC
++#
++ifeq ($(OS_ARCH)$(OS_TEST),NetBSDsparc)
++ASFILES := xptcinvoke_asm_sparc_netbsd.s xptcstubs_asm_sparc_netbsd.s
++endif
++#
++# OpenBSD/SPARC
++#
++ifeq ($(OS_ARCH)$(OS_TEST),OpenBSDsparc)
++ASFILES := xptcinvoke_asm_sparc_openbsd.s xptcstubs_asm_sparc_openbsd.s
++endif
++#
++# OpenBSD/SPARC64
++#
++ifneq (,$(filter OpenBSDsparc64 FreeBSDsparc64,$(OS_ARCH)$(OS_TEST)))
++ASFILES := xptcinvoke_asm_sparc64_openbsd.s xptcstubs_asm_sparc64_openbsd.s
++endif
++#
++# NetBSD/SPARC64
++#
++ifeq ($(OS_ARCH)$(OS_TEST),NetBSDsparc64)
++CPPSRCS := xptcinvoke_sparc64_netbsd.cpp xptcstubs_sparc64_openbsd.cpp
++ASFILES := xptcinvoke_asm_sparc64_openbsd.s xptcstubs_asm_sparc64_netbsd.s
++endif
++#
+ # Solaris/SPARC
+ #
+ ifeq ($(OS_ARCH),SunOS)
diff --git a/security/tor-browser/patches/patch-xpcom_reflect_xptcall_md_unix_moz.build b/security/tor-browser/patches/patch-xpcom_reflect_xptcall_md_unix_moz.build
new file mode 100644
index 00000000000..9ac5df14db5
--- /dev/null
+++ b/security/tor-browser/patches/patch-xpcom_reflect_xptcall_md_unix_moz.build
@@ -0,0 +1,22 @@
+$NetBSD: patch-xpcom_reflect_xptcall_md_unix_moz.build,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+--- xpcom/reflect/xptcall/md/unix/moz.build.orig 2015-03-27 02:20:33.000000000 +0000
++++ xpcom/reflect/xptcall/md/unix/moz.build
+@@ -9,7 +9,7 @@ if CONFIG['OS_ARCH'] == 'Darwin':
+ 'xptcinvoke_darwin.cpp',
+ 'xptcstubs_darwin.cpp',
+ ]
+- if CONFIG['OS_TEST'] == 'powerpc':
++ if CONFIG['OS_TEST'] == 'ppc':
+ SOURCES += [
+ 'xptcinvoke_asm_ppc_rhapsody.s',
+ ]
+@@ -26,7 +26,7 @@ if CONFIG['OS_ARCH'] == 'GNU':
+ 'xptcstubs_gcc_x86_unix.cpp'
+ ]
+
+-if CONFIG['OS_ARCH'] in ('Linux', 'FreeBSD', 'NetBSD', 'OpenBSD') or \
++if CONFIG['OS_ARCH'] in ('Linux', 'FreeBSD', 'NetBSD', 'OpenBSD', 'DragonFly') or \
+ CONFIG['OS_ARCH'].startswith('GNU_'):
+ if CONFIG['OS_TEST'] == 'x86_64':
+ SOURCES += [
diff --git a/security/tor-browser/patches/patch-xpcom_reflect_xptcall_md_unix_xptcinvoke__arm__netbsd.cpp b/security/tor-browser/patches/patch-xpcom_reflect_xptcall_md_unix_xptcinvoke__arm__netbsd.cpp
new file mode 100644
index 00000000000..2d2311ef241
--- /dev/null
+++ b/security/tor-browser/patches/patch-xpcom_reflect_xptcall_md_unix_xptcinvoke__arm__netbsd.cpp
@@ -0,0 +1,527 @@
+$NetBSD: patch-xpcom_reflect_xptcall_md_unix_xptcinvoke__arm__netbsd.cpp,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+--- xpcom/reflect/xptcall/md/unix/xptcinvoke_arm_netbsd.cpp.orig 2014-11-13 22:50:21.000000000 +0000
++++ xpcom/reflect/xptcall/md/unix/xptcinvoke_arm_netbsd.cpp
+@@ -7,82 +7,92 @@
+
+ #include "xptcprivate.h"
+
+-// Remember that these 'words' are 32bit DWORDS
++#include "mozilla/Compiler.h"
+
+-static uint32_t
+-invoke_count_words(uint32_t paramCount, nsXPTCVariant* s)
++#ifndef __ARM_PCS_VFP
++
++/* This function copies a 64-bits word from dw to the given pointer in
++ * a buffer delimited by start and end, possibly wrapping around the
++ * buffer boundaries, and/or properly aligning the data at 64-bits word
++ * boundaries (for EABI).
++ * start and end are both assumed to be 64-bits aligned.
++ * Returns a pointer to the second 32-bits word copied (to accomodate
++ * the invoke_copy_to_stack loop).
++ */
++static uint32_t *
++copy_double_word(uint32_t *start, uint32_t *current, uint32_t *end, uint64_t *dw)
+ {
+- uint32_t result = 0;
+- for(uint32_t i = 0; i < paramCount; i++, s++)
+- {
+- if(s->IsPtrData())
+- {
+- result++;
+- continue;
+- }
+- switch(s->type)
+- {
+- case nsXPTType::T_I8 :
+- case nsXPTType::T_I16 :
+- case nsXPTType::T_I32 :
+- result++;
+- break;
+- case nsXPTType::T_I64 :
+- result+=2;
+- break;
+- case nsXPTType::T_U8 :
+- case nsXPTType::T_U16 :
+- case nsXPTType::T_U32 :
+- result++;
+- break;
+- case nsXPTType::T_U64 :
+- result+=2;
+- break;
+- case nsXPTType::T_FLOAT :
+- result++;
+- break;
+- case nsXPTType::T_DOUBLE :
+- result+=2;
+- break;
+- case nsXPTType::T_BOOL :
+- case nsXPTType::T_CHAR :
+- case nsXPTType::T_WCHAR :
+- result++;
+- break;
+- default:
+- // all the others are plain pointer types
+- result++;
+- break;
+- }
++#ifdef __ARM_EABI__
++ /* Aligning the pointer for EABI */
++ current = (uint32_t *)(((uint32_t)current + 7) & ~7);
++ /* Wrap when reaching the end of the buffer */
++ if (current == end) current = start;
++#else
++ /* On non-EABI, 64-bits values are not aligned and when we reach the end
++ * of the buffer, we need to write half of the data at the end, and the
++ * other half at the beginning. */
++ if (current == end - 1) {
++ *current = ((uint32_t*)dw)[0];
++ *start = ((uint32_t*)dw)[1];
++ return start;
+ }
+- return result;
++#endif
++
++ *((uint64_t*) current) = *dw;
++ return current + 1;
+ }
+
+-static void
+-invoke_copy_to_stack(uint32_t* d, uint32_t paramCount, nsXPTCVariant* s)
++/* See stack_space comment in NS_InvokeByIndex to see why this needs not to
++ * be static on DEBUG builds. */
++#ifndef DEBUG
++static
++#endif
++void
++invoke_copy_to_stack(uint32_t* stk, uint32_t *end,
++ uint32_t paramCount, nsXPTCVariant* s)
+ {
++ /* The stack buffer is 64-bits aligned. The end argument points to its end.
++ * The caller is assumed to create a stack buffer of at least four 32-bits
++ * words.
++ * We use the last three 32-bit words to store the values for r1, r2 and r3
++ * for the method call, i.e. the first words for arguments passing.
++ */
++ uint32_t *d = end - 3;
+ for(uint32_t i = 0; i < paramCount; i++, d++, s++)
+ {
++ /* Wrap when reaching the end of the stack buffer */
++ if (d == end) d = stk;
++ NS_ASSERTION(d >= stk && d < end,
++ "invoke_copy_to_stack is copying outside its given buffer");
+ if(s->IsPtrData())
+ {
+ *((void**)d) = s->ptr;
+ continue;
+ }
++ // According to the ARM EABI, integral types that are smaller than a word
++ // are to be sign/zero-extended to a full word and treated as 4-byte values.
++
+ switch(s->type)
+ {
+- case nsXPTType::T_I8 : *((int8_t*) d) = s->val.i8; break;
+- case nsXPTType::T_I16 : *((int16_t*) d) = s->val.i16; break;
++ case nsXPTType::T_I8 : *((int32_t*) d) = s->val.i8; break;
++ case nsXPTType::T_I16 : *((int32_t*) d) = s->val.i16; break;
+ case nsXPTType::T_I32 : *((int32_t*) d) = s->val.i32; break;
+- case nsXPTType::T_I64 : *((int64_t*) d) = s->val.i64; d++; break;
+- case nsXPTType::T_U8 : *((uint8_t*) d) = s->val.u8; break;
+- case nsXPTType::T_U16 : *((uint16_t*)d) = s->val.u16; break;
++ case nsXPTType::T_I64 :
++ d = copy_double_word(stk, d, end, (uint64_t *)&s->val.i64);
++ break;
++ case nsXPTType::T_U8 : *((uint32_t*)d) = s->val.u8; break;
++ case nsXPTType::T_U16 : *((uint32_t*)d) = s->val.u16; break;
+ case nsXPTType::T_U32 : *((uint32_t*)d) = s->val.u32; break;
+- case nsXPTType::T_U64 : *((uint64_t*)d) = s->val.u64; d++; break;
++ case nsXPTType::T_U64 :
++ d = copy_double_word(stk, d, end, (uint64_t *)&s->val.u64);
++ break;
+ case nsXPTType::T_FLOAT : *((float*) d) = s->val.f; break;
+- case nsXPTType::T_DOUBLE : *((double*) d) = s->val.d; d++; break;
+- case nsXPTType::T_BOOL : *((bool*) d) = s->val.b; break;
+- case nsXPTType::T_CHAR : *((char*) d) = s->val.c; break;
+- case nsXPTType::T_WCHAR : *((wchar_t*) d) = s->val.wc; break;
++ case nsXPTType::T_DOUBLE :
++ d = copy_double_word(stk, d, end, (uint64_t *)&s->val.d);
++ break;
++ case nsXPTType::T_BOOL : *((int32_t*) d) = s->val.b; break;
++ case nsXPTType::T_CHAR : *((int32_t*) d) = s->val.c; break;
++ case nsXPTType::T_WCHAR : *((int32_t*) d) = s->val.wc; break;
+ default:
+ // all the others are plain pointer types
+ *((void**)d) = s->val.p;
+@@ -91,47 +101,27 @@ invoke_copy_to_stack(uint32_t* d, uint32
+ }
+ }
+
+-extern "C"
+-struct my_params_struct {
+- nsISupports* that;
+- uint32_t Index;
+- uint32_t Count;
+- nsXPTCVariant* params;
+- uint32_t fn_count;
+- uint32_t fn_copy;
+-};
++typedef nsresult (*vtable_func)(nsISupports *, uint32_t, uint32_t, uint32_t);
+
+-XPTC_PUBLIC_API(nsresult)
+-XPTC_InvokeByIndex(nsISupports* that, uint32_t methodIndex,
++EXPORT_XPCOM_API(nsresult)
++NS_InvokeByIndex(nsISupports* that, uint32_t methodIndex,
+ uint32_t paramCount, nsXPTCVariant* params)
+ {
+- uint32_t result;
+- struct my_params_struct my_params;
+- my_params.that = that;
+- my_params.Index = methodIndex;
+- my_params.Count = paramCount;
+- my_params.params = params;
+- my_params.fn_copy = (uint32_t) &invoke_copy_to_stack;
+- my_params.fn_count = (uint32_t) &invoke_count_words;
+
+ /* This is to call a given method of class that.
+ * The parameters are in params, the number is in paramCount.
+ * The routine will issue calls to count the number of words
+ * required for argument passing and to copy the arguments to
+ * the stack.
+- * Since APCS passes the first 3 params in r1-r3, we need to
+- * load the first three words from the stack and correct the stack
+- * pointer (sp) in the appropriate way. This means:
+- *
+- * 1.) more than 3 arguments: load r1-r3, correct sp and remember No.
+- * of bytes left on the stack in r4
+- *
+- * 2.) <= 2 args: load r1-r3 (we won't be causing a stack overflow I hope),
+- * restore sp as if nothing had happened and set the marker r4 to zero.
+- *
+- * Afterwards sp will be restored using the value in r4 (which is not a temporary register
+- * and will be preserved by the function/method called according to APCS [ARM Procedure
+- * Calling Standard]).
++ * ACPS passes the first 3 params in r1-r3 (with exceptions for 64-bits
++ * arguments), and the remaining goes onto the stack.
++ * We allocate a buffer on the stack for a "worst case" estimate of how much
++ * stack might be needed for EABI, i.e. twice the number of parameters.
++ * The end of this buffer will be used to store r1 to r3, so that the start
++ * of the stack is the remaining parameters.
++ * The magic here is to call the method with "that" and three 32-bits
++ * arguments corresponding to r1-r3, so that the compiler generates the
++ * proper function call. The stack will also contain the remaining arguments.
+ *
+ * !!! IMPORTANT !!!
+ * This routine makes assumptions about the vtable layout of the c++ compiler. It's implemented
+@@ -139,43 +129,272 @@ XPTC_InvokeByIndex(nsISupports* that, ui
+ *
+ */
+
+- __asm__ __volatile__(
+- "ldr r1, [%1, #12] \n\t" /* prepare to call invoke_count_words */
+- "ldr ip, [%1, #16] \n\t" /* r0=paramCount, r1=params */
+- "ldr r0, [%1, #8] \n\t"
+- "mov lr, pc \n\t" /* call it... */
+- "mov pc, ip \n\t"
+- "mov r4, r0, lsl #2 \n\t" /* This is the amount of bytes needed. */
+- "sub sp, sp, r4 \n\t" /* use stack space for the args... */
+- "mov r0, sp \n\t" /* prepare a pointer an the stack */
+- "ldr r1, [%1, #8] \n\t" /* =paramCount */
+- "ldr r2, [%1, #12] \n\t" /* =params */
+- "ldr ip, [%1, #20] \n\t" /* =invoke_copy_to_stack */
+- "mov lr, pc \n\t" /* copy args to the stack like the */
+- "mov pc, ip \n\t" /* compiler would. */
+- "ldr r0, [%1] \n\t" /* =that */
+- "ldr r1, [r0, #0] \n\t" /* get that->vtable offset */
+- "ldr r2, [%1, #4] \n\t"
+- "add r2, r1, r2, lsl #3\n\t" /* a vtable_entry(x)=8 + (8 bytes * x) */
+- "add r2, r2, #8 \n\t" /* with this compilers */
+- "ldr r3, [r2] \n\t" /* get virtual offset from vtable */
+- "mov r3, r3, lsl #16 \n\t"
+- "add r0, r0, r3, asr #16\n\t"
+- "ldr ip, [r2, #4] \n\t" /* get method address from vtable */
+- "cmp r4, #12 \n\t" /* more than 3 arguments??? */
+- "ldmgtia sp!, {r1, r2, r3}\n\t" /* yes: load arguments for r1-r3 */
+- "subgt r4, r4, #12 \n\t" /* and correct the stack pointer */
+- "ldmleia sp, {r1, r2, r3}\n\t" /* no: load r1-r3 from stack */
+- "addle sp, sp, r4 \n\t" /* and restore stack pointer */
+- "movle r4, #0 \n\t" /* a mark for restoring sp */
+- "mov lr, pc \n\t" /* call mathod */
+- "mov pc, ip \n\t"
+- "add sp, sp, r4 \n\t" /* restore stack pointer */
+- "mov %0, r0 \n\t" /* the result... */
+- : "=r" (result)
+- : "r" (&my_params)
+- : "r0", "r1", "r2", "r3", "r4", "ip", "lr"
+- );
+-
+- return result;
++ vtable_func *vtable, func;
++ int base_size = (paramCount > 1) ? paramCount : 2;
++
++/* !!! IMPORTANT !!!
++ * On DEBUG builds, the NS_ASSERTION used in invoke_copy_to_stack needs to use
++ * the stack to pass the 5th argument to NS_DebugBreak. When invoke_copy_to_stack
++ * is inlined, this can result, depending on the compiler and flags, in the
++ * stack pointer not pointing at stack_space when the method is called at the
++ * end of this function. More generally, any function call requiring stack
++ * allocation of arguments is unsafe to be inlined in this function.
++ */
++ uint32_t *stack_space = (uint32_t *) __builtin_alloca(base_size * 8);
++
++ invoke_copy_to_stack(stack_space, &stack_space[base_size * 2],
++ paramCount, params);
++
++ vtable = *reinterpret_cast<vtable_func **>(that);
++ func = vtable[methodIndex];
++
++ return func(that, stack_space[base_size * 2 - 3],
++ stack_space[base_size * 2 - 2],
++ stack_space[base_size * 2 - 1]);
+ }
++
++#else /* __ARM_PCS_VFP */
++
++/* "Procedure Call Standard for the ARM Architecture" document, sections
++ * "5.5 Parameter Passing" and "6.1.2 Procedure Calling" contain all the
++ * needed information.
++ *
++ * http://infocenter.arm.com/help/topic/com.arm.doc.ihi0042d/IHI0042D_aapcs.pdf
++ */
++
++#if defined(__thumb__) && !defined(__thumb2__)
++#error "Thumb1 is not supported"
++#endif
++
++#ifndef __ARMEL__
++#error "Only little endian compatibility was tested"
++#endif
++
++/*
++ * Allocation of integer function arguments initially to registers r1-r3
++ * and then to stack. Handling of 'this' argument which goes to r0 registers
++ * is handled separately and does not belong to these two inline functions.
++ *
++ * The doubleword arguments are allocated to even:odd
++ * register pairs or get aligned at 8-byte boundary on stack. The "holes"
++ * which may appear as a result of this realignment remain unused.
++ *
++ * 'ireg_args' - pointer to the current position in the buffer,
++ * corresponding to the register arguments
++ * 'stack_args' - pointer to the current position in the buffer,
++ * corresponding to the arguments on stack
++ * 'end' - pointer to the end of the registers argument
++ * buffer (it is guaranteed to be 8-bytes aligned)
++ */
++
++static inline void copy_word(uint32_t* &ireg_args,
++ uint32_t* &stack_args,
++ uint32_t* end,
++ uint32_t data)
++{
++ if (ireg_args < end) {
++ *ireg_args = data;
++ ireg_args++;
++ } else {
++ *stack_args = data;
++ stack_args++;
++ }
++}
++
++static inline void copy_dword(uint32_t* &ireg_args,
++ uint32_t* &stack_args,
++ uint32_t* end,
++ uint64_t data)
++{
++ if (ireg_args + 1 < end) {
++ if ((uint32_t)ireg_args & 4) {
++ ireg_args++;
++ }
++ *(uint64_t *)ireg_args = data;
++ ireg_args += 2;
++ } else {
++ if ((uint32_t)stack_args & 4) {
++ stack_args++;
++ }
++ *(uint64_t *)stack_args = data;
++ stack_args += 2;
++ }
++}
++
++/*
++ * Allocation of floating point arguments to VFP registers (s0-s15, d0-d7).
++ *
++ * Unlike integer registers allocation, "back-filling" needs to be
++ * supported. For example, the third floating point argument in the
++ * following function is going to be allocated to s1 register, back-filling
++ * the "hole":
++ * void f(float s0, double d1, float s1)
++ *
++ * Refer to the "Procedure Call Standard for the ARM Architecture" document
++ * for more details.
++ *
++ * 'vfp_s_args' - pointer to the current position in the buffer with
++ * the next unallocated single precision register
++ * 'vfp_d_args' - pointer to the current position in the buffer with
++ * the next unallocated double precision register,
++ * it has the same value as 'vfp_s_args' when back-filling
++ * is not used
++ * 'end' - pointer to the end of the vfp registers argument
++ * buffer (it is guaranteed to be 8-bytes aligned)
++ *
++ * Mozilla bugtracker has a test program attached which be used for
++ * experimenting with VFP registers allocation code and testing its
++ * correctness:
++ * https://bugzilla.mozilla.org/show_bug.cgi?id=601914#c19
++ */
++
++static inline bool copy_vfp_single(float* &vfp_s_args, double* &vfp_d_args,
++ float* end, float data)
++{
++ if (vfp_s_args >= end)
++ return false;
++
++ *vfp_s_args = data;
++ vfp_s_args++;
++ if (vfp_s_args < (float *)vfp_d_args) {
++ // It was the case of back-filling, now the next free single precision
++ // register should overlap with the next free double precision register
++ vfp_s_args = (float *)vfp_d_args;
++ } else if (vfp_s_args > (float *)vfp_d_args) {
++ // also update the pointer to the next free double precision register
++ vfp_d_args++;
++ }
++ return true;
++}
++
++static inline bool copy_vfp_double(float* &vfp_s_args, double* &vfp_d_args,
++ float* end, double data)
++{
++ if (vfp_d_args >= (double *)end) {
++ // The back-filling continues only so long as no VFP CPRC has been
++ // allocated to a slot on the stack. Basically no VFP registers can
++ // be allocated after this point.
++ vfp_s_args = end;
++ return false;
++ }
++
++ if (vfp_s_args == (float *)vfp_d_args) {
++ // also update the pointer to the next free single precision register
++ vfp_s_args += 2;
++ }
++ *vfp_d_args = data;
++ vfp_d_args++;
++ return true;
++}
++
++static void
++invoke_copy_to_stack(uint32_t* stk, uint32_t *end,
++ uint32_t paramCount, nsXPTCVariant* s)
++{
++ uint32_t *ireg_args = end - 3;
++ float *vfp_s_args = (float *)end;
++ double *vfp_d_args = (double *)end;
++ float *vfp_end = vfp_s_args + 16;
++
++ for (uint32_t i = 0; i < paramCount; i++, s++) {
++ if (s->IsPtrData()) {
++ copy_word(ireg_args, stk, end, (uint32_t)s->ptr);
++ continue;
++ }
++ // According to the ARM EABI, integral types that are smaller than a word
++ // are to be sign/zero-extended to a full word and treated as 4-byte values
++ switch (s->type)
++ {
++ case nsXPTType::T_FLOAT:
++ if (!copy_vfp_single(vfp_s_args, vfp_d_args, vfp_end, s->val.f)) {
++ copy_word(end, stk, end, reinterpret_cast<uint32_t&>(s->val.f));
++ }
++ break;
++ case nsXPTType::T_DOUBLE:
++ if (!copy_vfp_double(vfp_s_args, vfp_d_args, vfp_end, s->val.d)) {
++ copy_dword(end, stk, end, reinterpret_cast<uint64_t&>(s->val.d));
++ }
++ break;
++ case nsXPTType::T_I8: copy_word(ireg_args, stk, end, s->val.i8); break;
++ case nsXPTType::T_I16: copy_word(ireg_args, stk, end, s->val.i16); break;
++ case nsXPTType::T_I32: copy_word(ireg_args, stk, end, s->val.i32); break;
++ case nsXPTType::T_I64: copy_dword(ireg_args, stk, end, s->val.i64); break;
++ case nsXPTType::T_U8: copy_word(ireg_args, stk, end, s->val.u8); break;
++ case nsXPTType::T_U16: copy_word(ireg_args, stk, end, s->val.u16); break;
++ case nsXPTType::T_U32: copy_word(ireg_args, stk, end, s->val.u32); break;
++ case nsXPTType::T_U64: copy_dword(ireg_args, stk, end, s->val.u64); break;
++ case nsXPTType::T_BOOL: copy_word(ireg_args, stk, end, s->val.b); break;
++ case nsXPTType::T_CHAR: copy_word(ireg_args, stk, end, s->val.c); break;
++ case nsXPTType::T_WCHAR: copy_word(ireg_args, stk, end, s->val.wc); break;
++ default:
++ // all the others are plain pointer types
++ copy_word(ireg_args, stk, end, reinterpret_cast<uint32_t>(s->val.p));
++ break;
++ }
++ }
++}
++
++typedef uint32_t (*vtable_func)(nsISupports *, uint32_t, uint32_t, uint32_t);
++
++EXPORT_XPCOM_API(nsresult)
++NS_InvokeByIndex(nsISupports* that, uint32_t methodIndex,
++ uint32_t paramCount, nsXPTCVariant* params)
++{
++ vtable_func *vtable = *reinterpret_cast<vtable_func **>(that);
++ vtable_func func = vtable[methodIndex];
++ // 'register uint32_t result asm("r0")' could be used here, but it does not
++ // seem to be reliable in all cases: http://gcc.gnu.org/PR46164
++ nsresult result;
++ asm (
++ "mov r3, sp\n"
++ "mov %[stack_space_size], %[param_count_plus_2], lsl #3\n"
++ "tst r3, #4\n" /* check stack alignment */
++
++ "add %[stack_space_size], #(4 * 16)\n" /* space for VFP registers */
++ "mov r3, %[params]\n"
++
++ "it ne\n"
++ "addne %[stack_space_size], %[stack_space_size], #4\n"
++ "sub r0, sp, %[stack_space_size]\n" /* allocate space on stack */
++
++ "sub r2, %[param_count_plus_2], #2\n"
++ "mov sp, r0\n"
++
++ "add r1, r0, %[param_count_plus_2], lsl #3\n"
++ "blx %[invoke_copy_to_stack]\n"
++
++ "add ip, sp, %[param_count_plus_2], lsl #3\n"
++ "mov r0, %[that]\n"
++ "ldmdb ip, {r1, r2, r3}\n"
++ "vldm ip, {d0, d1, d2, d3, d4, d5, d6, d7}\n"
++ "blx %[func]\n"
++
++ "add sp, sp, %[stack_space_size]\n" /* cleanup stack */
++ "mov %[stack_space_size], r0\n" /* it's actually 'result' variable */
++ : [stack_space_size] "=&r" (result)
++ : [func] "r" (func),
++ [that] "r" (that),
++ [params] "r" (params),
++ [param_count_plus_2] "r" (paramCount + 2),
++ [invoke_copy_to_stack] "r" (invoke_copy_to_stack)
++ : "cc", "memory",
++ // Mark all the scratch registers as clobbered because they may be
++ // modified by the functions, called from this inline assembly block
++ "r0", "r1", "r2", "r3", "ip", "lr",
++ "d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7",
++ // Also unconditionally mark d16-d31 registers as clobbered even though
++ // they actually don't exist in vfpv2 and vfpv3-d16 variants. There is
++ // no way to identify VFP variant using preprocessor at the momemnt
++ // (see http://gcc.gnu.org/PR46128 for more details), but fortunately
++ // current versions of gcc do not seem to complain about these registers
++ // even when this code is compiled with '-mfpu=vfpv3-d16' option.
++ // If gcc becomes more strict in the future and/or provides a way to
++ // identify VFP variant, the following d16-d31 registers list needs
++ // to be wrapped into some #ifdef
++ "d16", "d17", "d18", "d19", "d20", "d21", "d22", "d23",
++ "d24", "d25", "d26", "d27", "d28", "d29", "d30", "d31"
++ );
++ return result;
++}
++
++#endif
diff --git a/security/tor-browser/patches/patch-xpcom_reflect_xptcall_md_unix_xptcinvoke__asm__mips.S b/security/tor-browser/patches/patch-xpcom_reflect_xptcall_md_unix_xptcinvoke__asm__mips.S
new file mode 100644
index 00000000000..92ac2e77058
--- /dev/null
+++ b/security/tor-browser/patches/patch-xpcom_reflect_xptcall_md_unix_xptcinvoke__asm__mips.S
@@ -0,0 +1,52 @@
+$NetBSD: patch-xpcom_reflect_xptcall_md_unix_xptcinvoke__asm__mips.S,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+--- xpcom/reflect/xptcall/md/unix/xptcinvoke_asm_mips.S.orig 2014-10-11 09:06:50.000000000 +0000
++++ xpcom/reflect/xptcall/md/unix/xptcinvoke_asm_mips.S
+@@ -16,6 +16,47 @@
+ #include <sys/asm.h>
+ #endif
+
++#ifdef __NetBSD__
++# include <machine/regdef.h>
++# include <machine/asm.h>
++# ifndef fp
++# define fp s8
++# endif
++# ifndef PTRLOG
++# if SZREG == 4
++# define PTRLOG 2
++# else
++# define PTRLOG 3
++# endif
++# endif
++# ifndef SETUP_GP
++# if defined(__mips_o32)
++# define SETUP_GP \
++ .set push; \
++ .set noreorder; \
++ .cpload t9; \
++ .set pop
++# define SAVE_GP(x) \
++ .cprestore x
++# else
++# define SETUP_GP
++# define SAVE_GP(x)
++# endif
++# endif
++# ifndef ALSZ
++# if defined(__mips_n32) || defined(__mips_n64)
++# define ALSZ 15
++# define ALMASK ~15
++# else
++# define ALSZ 7
++# define ALMASK ~7
++# endif
++# endif
++#else
++# include <sys/regdef.h>
++# include <sys/asm.h>
++#endif
++
+ # NARGSAVE is the argument space in the callers frame, including extra
+ # 'shadowed' space for the argument registers. The minimum of 4
+ # argument slots is sometimes predefined in the header files.
diff --git a/security/tor-browser/patches/patch-xpcom_reflect_xptcall_md_unix_xptcinvoke__asm__ppc__netbsd.s b/security/tor-browser/patches/patch-xpcom_reflect_xptcall_md_unix_xptcinvoke__asm__ppc__netbsd.s
new file mode 100644
index 00000000000..e6518d2926f
--- /dev/null
+++ b/security/tor-browser/patches/patch-xpcom_reflect_xptcall_md_unix_xptcinvoke__asm__ppc__netbsd.s
@@ -0,0 +1,25 @@
+$NetBSD: patch-xpcom_reflect_xptcall_md_unix_xptcinvoke__asm__ppc__netbsd.s,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+--- xpcom/reflect/xptcall/md/unix/xptcinvoke_asm_ppc_netbsd.s.orig 2014-10-11 09:06:50.000000000 +0000
++++ xpcom/reflect/xptcall/md/unix/xptcinvoke_asm_ppc_netbsd.s
+@@ -20,15 +20,15 @@
+
+ .section ".text"
+ .align 2
+- .globl XPTC_InvokeByIndex
+- .type XPTC_InvokeByIndex,@function
++ .globl NS_InvokeByIndex_P
++ .type NS_InvokeByIndex_P,@function
+
+ #
+-# XPTC_InvokeByIndex(nsISupports* that, uint32_t methodIndex,
+-# uint32_t paramCount, nsXPTCVariant* params)
++# NS_InvokeByIndex_P(nsISupports* that, PRUint32 methodIndex,
++# PRUint32 paramCount, nsXPTCVariant* params)
+ #
+
+-XPTC_InvokeByIndex:
++NS_InvokeByIndex_P:
+ stwu sp,-32(sp) # setup standard stack frame
+ mflr r0 # save LR
+ stw r3,8(sp) # r3 <= that
diff --git a/security/tor-browser/patches/patch-xpcom_reflect_xptcall_md_unix_xptcinvoke__gcc__x86__unix.cpp b/security/tor-browser/patches/patch-xpcom_reflect_xptcall_md_unix_xptcinvoke__gcc__x86__unix.cpp
new file mode 100644
index 00000000000..e66b32d36c7
--- /dev/null
+++ b/security/tor-browser/patches/patch-xpcom_reflect_xptcall_md_unix_xptcinvoke__gcc__x86__unix.cpp
@@ -0,0 +1,13 @@
+$NetBSD: patch-xpcom_reflect_xptcall_md_unix_xptcinvoke__gcc__x86__unix.cpp,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+--- xpcom/reflect/xptcall/md/unix/xptcinvoke_gcc_x86_unix.cpp.orig 2014-10-11 09:06:50.000000000 +0000
++++ xpcom/reflect/xptcall/md/unix/xptcinvoke_gcc_x86_unix.cpp
+@@ -9,7 +9,7 @@
+ #include "xptc_gcc_x86_unix.h"
+
+ extern "C" {
+-static void ATTRIBUTE_USED __attribute__ ((regparm(3)))
++void ATTRIBUTE_USED __attribute__ ((regparm(3)))
+ invoke_copy_to_stack(uint32_t paramCount, nsXPTCVariant* s, uint32_t* d)
+ {
+ for(uint32_t i = paramCount; i >0; i--, d++, s++)
diff --git a/security/tor-browser/patches/patch-xpcom_reflect_xptcall_md_unix_xptcinvoke__netbsd__m68k.cpp b/security/tor-browser/patches/patch-xpcom_reflect_xptcall_md_unix_xptcinvoke__netbsd__m68k.cpp
new file mode 100644
index 00000000000..a20f35cb415
--- /dev/null
+++ b/security/tor-browser/patches/patch-xpcom_reflect_xptcall_md_unix_xptcinvoke__netbsd__m68k.cpp
@@ -0,0 +1,75 @@
+$NetBSD: patch-xpcom_reflect_xptcall_md_unix_xptcinvoke__netbsd__m68k.cpp,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+--- xpcom/reflect/xptcall/md/unix/xptcinvoke_netbsd_m68k.cpp.orig 2014-10-11 09:06:50.000000000 +0000
++++ xpcom/reflect/xptcall/md/unix/xptcinvoke_netbsd_m68k.cpp
+@@ -100,6 +100,15 @@ extern "C" {
+ }
+ }
+
++/*
++ * SYMBOL PREFIX must be "_" for aout symbols and "" for ELF
++ */
++#ifndef __ELF__
++#define SYMBOLPREFIX "_"
++#else
++#define SYMBOLPREFIX
++#endif
++
+ XPTC_PUBLIC_API(nsresult)
+ XPTC_InvokeByIndex(nsISupports* that, uint32_t methodIndex,
+ uint32_t paramCount, nsXPTCVariant* params)
+@@ -107,30 +116,30 @@ XPTC_InvokeByIndex(nsISupports* that, ui
+ uint32_t result;
+
+ __asm__ __volatile__(
+- "movl %4, sp@-\n\t"
+- "movl %3, sp@-\n\t"
+- "jbsr _invoke_count_words\n\t" /* count words */
+- "addql #8, sp\n\t"
+- "lsll #2, d0\n\t" /* *= 4 */
+- "movl sp, a2\n\t" /* save original sp */
+- "subl d0, sp\n\t" /* make room for params */
+- "movl sp, a0\n\t"
+- "movl %4, sp@-\n\t"
+- "movl %3, sp@-\n\t"
+- "movl a0, sp@-\n\t"
+- "jbsr _invoke_copy_to_stack\n\t" /* copy params */
+- "addl #12, sp\n\t"
+- "movl %1, a0\n\t"
+- "movl a0@, a1\n\t"
+- "movl %2, d0\n\t" /* function index */
+- "movl a0, d1\n\t"
+- "movw a1@(8,d0:l:8), a0\n\t"
+- "addl a0, d1\n\t"
+- "movl a1@(12,d0:l:8), a1\n\t"
+- "movl d1, sp@-\n\t"
+- "jbsr a1@\n\t"
+- "movl a2, sp\n\t" /* restore original sp */
+- "movl d0, %0\n\t"
++ "movl %4, %%sp@-\n\t"
++ "movl %3, %%sp@-\n\t"
++ "jbsr "SYMBOLPREFIX"invoke_count_words\n\t" /* count words */
++ "addql #8, %%sp\n\t"
++ "lsll #2, %%d0\n\t" /* *= 4 */
++ "movl %%sp, %%a2\n\t" /* save original sp */
++ "subl %%d0, %%sp\n\t" /* make room for params */
++ "movl %%sp, %%a0\n\t"
++ "movl %4, %%sp@-\n\t"
++ "movl %3, %%sp@-\n\t"
++ "movl %%a0, %%sp@-\n\t"
++ "jbsr "SYMBOLPREFIX"invoke_copy_to_stack\n\t" /* copy params */
++ "addl #12, %%sp\n\t"
++ "movl %1, %%a0\n\t"
++ "movl %%a0@, %%a1\n\t"
++ "movl %2, %%d0\n\t" /* function index */
++ "movl %%a0, %%d1\n\t"
++ "movw %%a1@(8,%%d0:l:8), %%a0\n\t"
++ "addl %%a0, %%d1\n\t"
++ "movl %%a1@(12,%%d0:l:8), %%a1\n\t"
++ "movl %%d1, %%sp@-\n\t"
++ "jbsr %%a1@\n\t"
++ "movl %%a2, %%sp\n\t" /* restore original sp */
++ "movl %%d0, %0\n\t"
+ : "=g" (result) /* %0 */
+ : "g" (that), /* %1 */
+ "g" (methodIndex), /* %2 */
diff --git a/security/tor-browser/patches/patch-xpcom_reflect_xptcall_md_unix_xptcinvoke__ppc__netbsd.cpp b/security/tor-browser/patches/patch-xpcom_reflect_xptcall_md_unix_xptcinvoke__ppc__netbsd.cpp
new file mode 100644
index 00000000000..11b8eac0e8f
--- /dev/null
+++ b/security/tor-browser/patches/patch-xpcom_reflect_xptcall_md_unix_xptcinvoke__ppc__netbsd.cpp
@@ -0,0 +1,47 @@
+$NetBSD: patch-xpcom_reflect_xptcall_md_unix_xptcinvoke__ppc__netbsd.cpp,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+--- xpcom/reflect/xptcall/md/unix/xptcinvoke_ppc_netbsd.cpp.orig 2014-10-11 09:06:50.000000000 +0000
++++ xpcom/reflect/xptcall/md/unix/xptcinvoke_ppc_netbsd.cpp
+@@ -5,9 +5,9 @@
+
+ // Platform specific code to invoke XPCOM methods on native objects
+
+-// The purpose of XPTC_InvokeByIndex() is to map a platform
++// The purpose of NS_InvokeByIndex_P() is to map a platform
+ // indepenpent call to the platform ABI. To do that,
+-// XPTC_InvokeByIndex() has to determine the method to call via vtable
++// NS_InvokeByIndex_P() has to determine the method to call via vtable
+ // access. The parameters for the method are read from the
+ // nsXPTCVariant* and prepared for the native ABI. For the Linux/PPC
+ // ABI this means that the first 8 integral and floating point
+@@ -72,8 +72,10 @@ invoke_copy_to_stack(uint32_t* d,
+ if ((uint32_t) d & 4) d++; // doubles are 8-byte aligned on stack
+ *((double*) d) = s->val.d;
+ d += 2;
++#if __GXX_ABI_VERSION < 100
+ if (gpr < GPR_COUNT)
+ gpr += 2;
++#endif
+ }
+ }
+ else if (!s->IsPtrData() && s->type == nsXPTType::T_FLOAT) {
+@@ -82,8 +84,10 @@ invoke_copy_to_stack(uint32_t* d,
+ else {
+ *((float*) d) = s->val.f;
+ d += 1;
++#if __GXX_ABI_VERSION < 100
+ if (gpr < GPR_COUNT)
+ gpr += 1;
++#endif
+ }
+ }
+ else if (!s->IsPtrData() && (s->type == nsXPTType::T_I64
+@@ -110,6 +114,6 @@ invoke_copy_to_stack(uint32_t* d,
+ }
+
+ extern "C"
+-XPTC_PUBLIC_API(nsresult)
+-XPTC_InvokeByIndex(nsISupports* that, uint32_t methodIndex,
++EXPORT_XPCOM_API(nsresult)
++NS_InvokeByIndex_P(nsISupports* that, PRUint32 methodIndex,
+ uint32_t paramCount, nsXPTCVariant* params);
diff --git a/security/tor-browser/patches/patch-xpcom_reflect_xptcall_md_unix_xptcinvoke__sparc64__netbsd.cpp b/security/tor-browser/patches/patch-xpcom_reflect_xptcall_md_unix_xptcinvoke__sparc64__netbsd.cpp
new file mode 100644
index 00000000000..e9a12421f57
--- /dev/null
+++ b/security/tor-browser/patches/patch-xpcom_reflect_xptcall_md_unix_xptcinvoke__sparc64__netbsd.cpp
@@ -0,0 +1,89 @@
+$NetBSD: patch-xpcom_reflect_xptcall_md_unix_xptcinvoke__sparc64__netbsd.cpp,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+--- xpcom/reflect/xptcall/md/unix/xptcinvoke_sparc64_netbsd.cpp.orig 2014-10-14 18:49:14.000000000 +0000
++++ xpcom/reflect/xptcall/md/unix/xptcinvoke_sparc64_netbsd.cpp
+@@ -0,0 +1,84 @@
++/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
++ *
++ * The contents of this file are subject to the Netscape Public
++ * License Version 1.1 (the "License"); you may not use this file
++ * except in compliance with the License. You may obtain a copy of
++ * the License at http://www.mozilla.org/NPL/
++ *
++ * Software distributed under the License is distributed on an "AS
++ * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
++ * implied. See the License for the specific language governing
++ * rights and limitations under the License.
++ *
++ * The Original Code is mozilla.org code.
++ *
++ * The Initial Developer of the Original Code is Netscape
++ * Communications Corporation. Portions created by Netscape are
++ * Copyright (C) 1998 Netscape Communications Corporation. All
++ * Rights Reserved.
++ *
++ * Contributor(s):
++ */
++
++/* Platform specific code to invoke XPCOM methods on native objects */
++
++#include "xptcprivate.h"
++
++#if !defined(__sparc64__) && !defined(_LP64)
++#error "This code is for Sparc64 only"
++#endif
++
++extern "C" PRUint32
++invoke_copy_to_stack(PRUint64* d, PRUint32 paramCount, nsXPTCVariant* s)
++{
++ /*
++ We need to copy the parameters for this function to locals and use them
++ from there since the parameters occupy the same stack space as the stack
++ we're trying to populate.
++ */
++ PRUint64 *l_d = d;
++ nsXPTCVariant *l_s = s;
++ PRUint64 l_paramCount = paramCount;
++ PRUint64 regCount = 0; // return the number of registers to load from the stack
++
++ for(PRUint64 i = 0; i < l_paramCount; i++, l_d++, l_s++)
++ {
++ if (regCount < 5) regCount++;
++
++ if (l_s->IsPtrData())
++ {
++ *l_d = (PRUint64)l_s->ptr;
++ continue;
++ }
++ switch (l_s->type)
++ {
++ case nsXPTType::T_I8 : *((PRInt64*)l_d) = l_s->val.i8; break;
++ case nsXPTType::T_I16 : *((PRInt64*)l_d) = l_s->val.i16; break;
++ case nsXPTType::T_I32 : *((PRInt64*)l_d) = l_s->val.i32; break;
++ case nsXPTType::T_I64 : *((PRInt64*)l_d) = l_s->val.i64; break;
++
++ case nsXPTType::T_U8 : *((PRUint64*)l_d) = l_s->val.u8; break;
++ case nsXPTType::T_U16 : *((PRUint64*)l_d) = l_s->val.u16; break;
++ case nsXPTType::T_U32 : *((PRUint64*)l_d) = l_s->val.u32; break;
++ case nsXPTType::T_U64 : *((PRUint64*)l_d) = l_s->val.u64; break;
++
++ /* in the case of floats, we want to put the bits in to the
++ 64bit space right justified... floats in the paramter array on
++ sparcv9 use odd numbered registers.. %f1, %f3, so we have to skip
++ the space that would be occupied by %f0, %f2, etc.
++ */
++ case nsXPTType::T_FLOAT : *(((float*)l_d) + 1) = l_s->val.f; break;
++ case nsXPTType::T_DOUBLE: *((double*)l_d) = l_s->val.d; break;
++ case nsXPTType::T_BOOL : *((PRInt64*)l_d) = l_s->val.b; break;
++ case nsXPTType::T_CHAR : *((PRUint64*)l_d) = l_s->val.c; break;
++ case nsXPTType::T_WCHAR : *((PRInt64*)l_d) = l_s->val.wc; break;
++
++ default:
++ // all the others are plain pointer types
++ *((void**)l_d) = l_s->val.p;
++ break;
++ }
++ }
++
++ return regCount;
++}
diff --git a/security/tor-browser/patches/patch-xpcom_reflect_xptcall_md_unix_xptcstubs__arm__netbsd.cpp b/security/tor-browser/patches/patch-xpcom_reflect_xptcall_md_unix_xptcstubs__arm__netbsd.cpp
new file mode 100644
index 00000000000..4577eccc666
--- /dev/null
+++ b/security/tor-browser/patches/patch-xpcom_reflect_xptcall_md_unix_xptcstubs__arm__netbsd.cpp
@@ -0,0 +1,217 @@
+$NetBSD: patch-xpcom_reflect_xptcall_md_unix_xptcstubs__arm__netbsd.cpp,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+--- xpcom/reflect/xptcall/md/unix/xptcstubs_arm_netbsd.cpp.orig 2014-11-26 12:30:27.000000000 +0000
++++ xpcom/reflect/xptcall/md/unix/xptcstubs_arm_netbsd.cpp
+@@ -6,15 +6,32 @@
+ /* Implement shared vtbl methods. */
+
+ #include "xptcprivate.h"
++#include "xptiprivate.h"
+
+-nsresult ATTRIBUTE_USED
++/* Specify explicitly a symbol for this function, don't try to guess the c++ mangled symbol. */
++static nsresult PrepareAndDispatch(nsXPTCStubBase* self, uint32_t methodIndex, uint32_t* args) asm("_PrepareAndDispatch")
++ATTRIBUTE_USED;
++
++#ifdef __ARM_EABI__
++#define DOUBLEWORD_ALIGN(p) ((uint32_t *)((((uint32_t)(p)) + 7) & 0xfffffff8))
++#else
++#define DOUBLEWORD_ALIGN(p) (p)
++#endif
++
++// Apple's iOS toolchain is lame and does not support .cfi directives.
++#ifdef __APPLE__
++#define CFI(str)
++#else
++#define CFI(str) str
++#endif
++
++static nsresult
+ PrepareAndDispatch(nsXPTCStubBase* self, uint32_t methodIndex, uint32_t* args)
+ {
+ #define PARAM_BUFFER_COUNT 16
+
+ nsXPTCMiniVariant paramBuffer[PARAM_BUFFER_COUNT];
+ nsXPTCMiniVariant* dispatchParams = nullptr;
+- nsIInterfaceInfo* iface_info = nullptr;
+ const nsXPTMethodInfo* info;
+ uint8_t paramCount;
+ uint8_t i;
+@@ -22,12 +39,7 @@ PrepareAndDispatch(nsXPTCStubBase* self,
+
+ NS_ASSERTION(self,"no self");
+
+- self->GetInterfaceInfo(&iface_info);
+- NS_ASSERTION(iface_info,"no interface info");
+-
+- iface_info->GetMethodInfo(uint16_t(methodIndex), &info);
+- NS_ASSERTION(info,"no interface info");
+-
++ self->mEntry->GetMethodInfo(uint16_t(methodIndex), &info);
+ paramCount = info->GetParamCount();
+
+ // setup variant array pointer
+@@ -55,13 +67,16 @@ PrepareAndDispatch(nsXPTCStubBase* self,
+ case nsXPTType::T_I8 : dp->val.i8 = *((int8_t*) ap); break;
+ case nsXPTType::T_I16 : dp->val.i16 = *((int16_t*) ap); break;
+ case nsXPTType::T_I32 : dp->val.i32 = *((int32_t*) ap); break;
+- case nsXPTType::T_I64 : dp->val.i64 = *((int64_t*) ap); ap++; break;
++ case nsXPTType::T_I64 : ap = DOUBLEWORD_ALIGN(ap);
++ dp->val.i64 = *((int64_t*) ap); ap++; break;
+ case nsXPTType::T_U8 : dp->val.u8 = *((uint8_t*) ap); break;
+ case nsXPTType::T_U16 : dp->val.u16 = *((uint16_t*)ap); break;
+ case nsXPTType::T_U32 : dp->val.u32 = *((uint32_t*)ap); break;
+- case nsXPTType::T_U64 : dp->val.u64 = *((uint64_t*)ap); ap++; break;
++ case nsXPTType::T_U64 : ap = DOUBLEWORD_ALIGN(ap);
++ dp->val.u64 = *((uint64_t*)ap); ap++; break;
+ case nsXPTType::T_FLOAT : dp->val.f = *((float*) ap); break;
+- case nsXPTType::T_DOUBLE : dp->val.d = *((double*) ap); ap++; break;
++ case nsXPTType::T_DOUBLE : ap = DOUBLEWORD_ALIGN(ap);
++ dp->val.d = *((double*) ap); ap++; break;
+ case nsXPTType::T_BOOL : dp->val.b = *((bool*) ap); break;
+ case nsXPTType::T_CHAR : dp->val.c = *((char*) ap); break;
+ case nsXPTType::T_WCHAR : dp->val.wc = *((wchar_t*) ap); break;
+@@ -71,9 +86,7 @@ PrepareAndDispatch(nsXPTCStubBase* self,
+ }
+ }
+
+- result = self->CallMethod((uint16_t)methodIndex, info, dispatchParams);
+-
+- NS_RELEASE(iface_info);
++ result = self->mOuter->CallMethod((uint16_t)methodIndex, info, dispatchParams);
+
+ if(dispatchParams != paramBuffer)
+ delete [] dispatchParams;
+@@ -82,26 +95,114 @@ PrepareAndDispatch(nsXPTCStubBase* self,
+ }
+
+ /*
+- * These stubs move just move the values passed in registers onto the stack,
+- * so they are contiguous with values passed on the stack, and then calls
+- * PrepareAndDispatch() to do the dirty work.
++ * This is our shared stub.
++ *
++ * r0 = Self.
++ *
++ * The Rules:
++ * We pass an (undefined) number of arguments into this function.
++ * The first 3 C++ arguments are in r1 - r3, the rest are built
++ * by the calling function on the stack.
++ *
++ * We are allowed to corrupt r0 - r3, ip, and lr.
++ *
++ * Other Info:
++ * We pass the stub number in using `ip'.
++ *
++ * Implementation:
++ * - We save r1 to r3 inclusive onto the stack, which will be
++ * immediately below the caller saved arguments.
++ * - setup r2 (PrepareAndDispatch's args pointer) to point at
++ * the base of all these arguments
++ * - Save LR (for the return address)
++ * - Set r1 (PrepareAndDispatch's methodindex argument) from ip
++ * - r0 is passed through (self)
++ * - Call PrepareAndDispatch
++ * - When the call returns, we return by loading the PC off the
++ * stack, and undoing the stack (one instruction)!
++ *
+ */
++__asm__ ("\n"
++ ".text\n"
++ ".align 2\n"
++ "SharedStub:\n"
++ CFI(".cfi_startproc\n")
++ "stmfd sp!, {r1, r2, r3}\n"
++ CFI(".cfi_def_cfa_offset 12\n")
++ CFI(".cfi_offset r3, -4\n")
++ CFI(".cfi_offset r2, -8\n")
++ CFI(".cfi_offset r1, -12\n")
++ "mov r2, sp\n"
++ "str lr, [sp, #-4]!\n"
++ CFI(".cfi_def_cfa_offset 16\n")
++ CFI(".cfi_offset lr, -16\n")
++ "mov r1, ip\n"
++ "bl _PrepareAndDispatch\n"
++ "ldr pc, [sp], #16\n"
++ CFI(".cfi_endproc\n"));
++
++/*
++ * Create sets of stubs to call the SharedStub.
++ * We don't touch the stack here, nor any registers, other than IP.
++ * IP is defined to be corruptable by a called function, so we are
++ * safe to use it.
++ *
++ * This will work with or without optimisation.
++ */
++
++/*
++ * Note : As G++3 ABI contains the length of the functionname in the
++ * mangled name, it is difficult to get a generic assembler mechanism like
++ * in the G++ 2.95 case.
++ * Create names would be like :
++ * _ZN14nsXPTCStubBase5Stub9Ev
++ * _ZN14nsXPTCStubBase6Stub13Ev
++ * _ZN14nsXPTCStubBase7Stub144Ev
++ * Use the assembler directives to get the names right...
++ */
++
++#define STUB_ENTRY(n) \
++ __asm__( \
++ ".section \".text\"\n" \
++" .align 2\n" \
++" .iflt ("#n" - 10)\n" \
++" .globl _ZN14nsXPTCStubBase5Stub"#n"Ev\n" \
++" .type _ZN14nsXPTCStubBase5Stub"#n"Ev,#function\n" \
++"_ZN14nsXPTCStubBase5Stub"#n"Ev:\n" \
++" .else\n" \
++" .iflt ("#n" - 100)\n" \
++" .globl _ZN14nsXPTCStubBase6Stub"#n"Ev\n" \
++" .type _ZN14nsXPTCStubBase6Stub"#n"Ev,#function\n" \
++"_ZN14nsXPTCStubBase6Stub"#n"Ev:\n" \
++" .else\n" \
++" .iflt ("#n" - 1000)\n" \
++" .globl _ZN14nsXPTCStubBase7Stub"#n"Ev\n" \
++" .type _ZN14nsXPTCStubBase7Stub"#n"Ev,#function\n" \
++"_ZN14nsXPTCStubBase7Stub"#n"Ev:\n" \
++" .else\n" \
++" .err \"stub number "#n"> 1000 not yet supported\"\n" \
++" .endif\n" \
++" .endif\n" \
++" .endif\n" \
++" mov ip, #"#n"\n" \
++" b SharedStub\n\t");
++
++#if 0
++/*
++ * This part is left in as comment : this is how the method definition
++ * should look like.
++ */
++
++#define STUB_ENTRY(n) \
++nsresult nsXPTCStubBase::Stub##n () \
++{ \
++ __asm__ ( \
++" mov ip, #"#n"\n" \
++" b SharedStub\n\t"); \
++ return 0; /* avoid warnings */ \
++}
++#endif
+
+-#define STUB_ENTRY(n) \
+-__asm__( \
+- ".global _Stub"#n"__14nsXPTCStubBase\n\t" \
+-"_Stub"#n"__14nsXPTCStubBase:\n\t" \
+- "stmfd sp!, {r1, r2, r3} \n\t" \
+- "mov ip, sp \n\t" \
+- "stmfd sp!, {fp, ip, lr, pc} \n\t" \
+- "sub fp, ip, #4 \n\t" \
+- "mov r1, #"#n" \n\t" /* = methodIndex */ \
+- "add r2, sp, #16 \n\t" \
+- "bl _PrepareAndDispatch__FP14nsXPTCStubBaseUiPUi \n\t" \
+- "ldmea fp, {fp, sp, lr} \n\t" \
+- "add sp, sp, #12 \n\t" \
+- "mov pc, lr \n\t" \
+-);
+
+ #define SENTINEL_ENTRY(n) \
+ nsresult nsXPTCStubBase::Sentinel##n() \
diff --git a/security/tor-browser/patches/patch-xpcom_reflect_xptcall_md_unix_xptcstubs__asm__mips.S b/security/tor-browser/patches/patch-xpcom_reflect_xptcall_md_unix_xptcstubs__asm__mips.S
new file mode 100644
index 00000000000..158676997e7
--- /dev/null
+++ b/security/tor-browser/patches/patch-xpcom_reflect_xptcall_md_unix_xptcstubs__asm__mips.S
@@ -0,0 +1,52 @@
+$NetBSD: patch-xpcom_reflect_xptcall_md_unix_xptcstubs__asm__mips.S,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+--- xpcom/reflect/xptcall/md/unix/xptcstubs_asm_mips.S.orig 2014-10-11 09:06:50.000000000 +0000
++++ xpcom/reflect/xptcall/md/unix/xptcstubs_asm_mips.S
+@@ -14,6 +14,47 @@
+ #include <sys/asm.h>
+ #endif
+
++#ifdef __NetBSD__
++# include <machine/regdef.h>
++# include <machine/asm.h>
++# ifndef fp
++# define fp s8
++# endif
++# ifndef PTRLOG
++# if SZREG == 4
++# define PTRLOG 2
++# else
++# define PTRLOG 3
++# endif
++# endif
++# ifndef SETUP_GP
++# if defined(__mips_o32)
++# define SETUP_GP \
++ .set push; \
++ .set noreorder; \
++ .cpload t9; \
++ .set pop
++# define SAVE_GP(x) \
++ .cprestore x
++# else
++# define SETUP_GP
++# define SAVE_GP(x)
++# endif
++# endif
++# ifndef ALSZ
++# if defined(__mips_n32) || defined(__mips_n64)
++# define ALSZ 15
++# define ALMASK ~15
++# else
++# define ALSZ 7
++# define ALMASK ~7
++# endif
++# endif
++#else
++# include <sys/regdef.h>
++# include <sys/asm.h>
++#endif
++
+ # NARGSAVE is the argument space in the callers frame, including extra
+ # 'shadowed' space for the argument registers. The minimum of 4
+ # argument slots is sometimes predefined in the header files.
diff --git a/security/tor-browser/patches/patch-xpcom_reflect_xptcall_md_unix_xptcstubs__asm__sparc64__netbsd.s b/security/tor-browser/patches/patch-xpcom_reflect_xptcall_md_unix_xptcstubs__asm__sparc64__netbsd.s
new file mode 100644
index 00000000000..e902d6a59b2
--- /dev/null
+++ b/security/tor-browser/patches/patch-xpcom_reflect_xptcall_md_unix_xptcstubs__asm__sparc64__netbsd.s
@@ -0,0 +1,71 @@
+$NetBSD: patch-xpcom_reflect_xptcall_md_unix_xptcstubs__asm__sparc64__netbsd.s,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+--- xpcom/reflect/xptcall/md/unix/xptcstubs_asm_sparc64_netbsd.s.orig 2014-10-14 18:49:14.000000000 +0000
++++ xpcom/reflect/xptcall/md/unix/xptcstubs_asm_sparc64_netbsd.s
+@@ -0,0 +1,66 @@
++/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
++ *
++ * The contents of this file are subject to the Netscape Public
++ * License Version 1.1 (the "License"); you may not use this file
++ * except in compliance with the License. You may obtain a copy of
++ * the License at http://www.mozilla.org/NPL/
++ *
++ * Software distributed under the License is distributed on an "AS
++ * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
++ * implied. See the License for the specific language governing
++ * rights and limitations under the License.
++ *
++ * The Original Code is mozilla.org code.
++ *
++ * The Initial Developer of the Original Code is Netscape
++ * Communications Corporation. Portions created by Netscape are
++ * Copyright (C) 1999 Netscape Communications Corporation. All
++ * Rights Reserved.
++ *
++ * Contributor(s):
++ */
++
++ .global SharedStub
++
++/*
++ in the frame for the function that called SharedStub are the
++ rest of the parameters we need
++
++*/
++
++SharedStub:
++! we don't create a new frame yet, but work within the frame of the calling
++! function to give ourselves the other parameters we want
++
++ mov %o0, %o1 ! shuffle the index up to 2nd place
++ mov %i0, %o0 ! the original 'this'
++ add %fp, 0x7ff + 136, %o2 ! previous stack top adjusted to the first argument slot (beyond 'this')
++
++! save off the original incoming parameters that arrived in
++! registers, the ABI guarantees the space for us to do this
++ stx %i1, [%fp + 0x7ff + 136]
++ stx %i2, [%fp + 0x7ff + 144]
++ stx %i3, [%fp + 0x7ff + 152]
++ stx %i4, [%fp + 0x7ff + 160]
++ stx %i5, [%fp + 0x7ff + 168]
++! now we can build our own stack frame
++ save %sp,-(128 + 64),%sp ! room for the register window and
++ ! struct pointer, rounded up to 0 % 64
++! our function now appears to have been called
++! as SharedStub(nsISupports* that, PRUint32 index, PRUint32* args)
++! so we can just copy these through
++
++ mov %i0, %o0
++ mov %i1, %o1
++ mov %i2, %o2
++ call PrepareAndDispatch
++ nop
++ mov %o0,%i0 ! propagate return value
++ b .LL1
++ nop
++.LL1:
++ ret
++ restore
++
++ .size SharedStub, .-SharedStub
++ .type SharedStub, #function
diff --git a/security/tor-browser/patches/patch-xpcom_reflect_xptcall_md_unix_xptcstubs__gcc__x86__unix.cpp b/security/tor-browser/patches/patch-xpcom_reflect_xptcall_md_unix_xptcstubs__gcc__x86__unix.cpp
new file mode 100644
index 00000000000..11712d347d6
--- /dev/null
+++ b/security/tor-browser/patches/patch-xpcom_reflect_xptcall_md_unix_xptcstubs__gcc__x86__unix.cpp
@@ -0,0 +1,13 @@
+$NetBSD: patch-xpcom_reflect_xptcall_md_unix_xptcstubs__gcc__x86__unix.cpp,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+--- xpcom/reflect/xptcall/md/unix/xptcstubs_gcc_x86_unix.cpp.orig 2014-10-11 09:06:50.000000000 +0000
++++ xpcom/reflect/xptcall/md/unix/xptcstubs_gcc_x86_unix.cpp
+@@ -10,7 +10,7 @@
+ #include "xptc_gcc_x86_unix.h"
+
+ extern "C" {
+-static nsresult ATTRIBUTE_USED
++nsresult ATTRIBUTE_USED
+ __attribute__ ((regparm (3)))
+ PrepareAndDispatch(uint32_t methodIndex, nsXPTCStubBase* self, uint32_t* args)
+ {
diff --git a/security/tor-browser/patches/patch-xpcom_reflect_xptcall_md_unix_xptcstubs__netbsd__m68k.cpp b/security/tor-browser/patches/patch-xpcom_reflect_xptcall_md_unix_xptcstubs__netbsd__m68k.cpp
new file mode 100644
index 00000000000..af7b0541869
--- /dev/null
+++ b/security/tor-browser/patches/patch-xpcom_reflect_xptcall_md_unix_xptcstubs__netbsd__m68k.cpp
@@ -0,0 +1,41 @@
+$NetBSD: patch-xpcom_reflect_xptcall_md_unix_xptcstubs__netbsd__m68k.cpp,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+--- xpcom/reflect/xptcall/md/unix/xptcstubs_netbsd_m68k.cpp.orig 2014-10-11 09:06:50.000000000 +0000
++++ xpcom/reflect/xptcall/md/unix/xptcstubs_netbsd_m68k.cpp
+@@ -91,17 +91,27 @@ extern "C" {
+ }
+ }
+
++/*
++ * Beware: use % instead of %% for register identifiers in a preprocessor macro
++ * SYMBOL PREFIX must be "_" for aout and "" for ELF
++ */
++#ifndef __ELF__
++#define SYMBOLPREFIX "_"
++#else
++#define SYMBOLPREFIX
++#endif
++
+ #define STUB_ENTRY(n) \
+ __asm__( \
+- ".global _Stub"#n"__14nsXPTCStubBase\n\t" \
+-"_Stub"#n"__14nsXPTCStubBase:\n\t" \
+- "link a6,#0 \n\t" \
+- "lea a6@(12), a0 \n\t" /* pointer to args */ \
+- "movl a0, sp@- \n\t" \
+- "movl #"#n", sp@- \n\t" /* method index */ \
+- "movl a6@(8), sp@- \n\t" /* this */ \
+- "jbsr _PrepareAndDispatch \n\t" \
+- "unlk a6 \n\t" \
++ ".global "SYMBOLPREFIX"Stub"#n"__14nsXPTCStubBase\n\t" \
++SYMBOLPREFIX"Stub"#n"__14nsXPTCStubBase:\n\t" \
++ "link %a6,#0 \n\t" \
++ "lea %a6@(12), %a0 \n\t" /* pointer to args */ \
++ "movl %a0, %sp@- \n\t" \
++ "movl #"#n", %sp@- \n\t" /* method index */ \
++ "movl %a6@(8), %sp@- \n\t" /* this */ \
++ "jbsr "SYMBOLPREFIX"PrepareAndDispatch\n\t" \
++ "unlk %a6 \n\t" \
+ "rts \n\t" \
+ );
+
diff --git a/security/tor-browser/patches/patch-xulrunner_installer_Makefile.in b/security/tor-browser/patches/patch-xulrunner_installer_Makefile.in
new file mode 100644
index 00000000000..42cc0618985
--- /dev/null
+++ b/security/tor-browser/patches/patch-xulrunner_installer_Makefile.in
@@ -0,0 +1,15 @@
+$NetBSD: patch-xulrunner_installer_Makefile.in,v 1.1 2016/02/14 07:30:54 ryoon Exp $
+
+* Install pkg-config pc files to package specific directory.
+
+--- xulrunner/installer/Makefile.in.orig 2013-07-30 00:59:18.000000000 +0000
++++ xulrunner/installer/Makefile.in
+@@ -96,7 +96,7 @@ endif
+
+ install:: $(pkg_config_files)
+ @echo pkg_config_file: $(pkg_config_files)
+- $(SYSINSTALL) $(IFLAGS1) $^ $(DESTDIR)$(libdir)/pkgconfig
++ $(SYSINSTALL) $(IFLAGS1) $^ $(DESTDIR)${PREFIX}/lib/${MOZILLA_PKG_NAME}/pkgconfig
+
+ GARBAGE += $(pkg_config_files)
+