diff --git a/BuildParams b/BuildParams
index 2cb58755e513dccf0c5937b195acaed0ed6a28ef..a602be2fe2f2d535852cba470aa71d6a6ee5fed4 100644
--- a/BuildParams
+++ b/BuildParams
@@ -171,13 +171,6 @@ viewer-tut-teamcity.email = enus@lindenlab.com
 viewer-tut-teamcity.build_server = false
 viewer-tut-teamcity.build_server_tests = false
 
-# ========================================
-# experience
-# ========================================
-viewer-experience.public_build = false
-viewer-experience.viewer_channel = "Second Life SkyLight Viewer"
-viewer-experience.login_channel = "Second Life SkyLight Viewer"
-
 # =================================================================
 # asset delivery 2010 projects
 # =================================================================
diff --git a/indra/llwindow/llwindowmacosx.cpp b/indra/llwindow/llwindowmacosx.cpp
index affd7276cceca1ebb83c9aff24fa3ba32c774ec0..447e3661db90709164d7dc10a83b00fbca75b946 100644
--- a/indra/llwindow/llwindowmacosx.cpp
+++ b/indra/llwindow/llwindowmacosx.cpp
@@ -108,9 +108,6 @@ static long getDictLong (CFDictionaryRef refDict, CFStringRef key);
 static EventTypeSpec WindowHandlerEventList[] =
 {
 	// Window-related events
-	//	{ kEventClassWindow, kEventWindowCollapsing },
-	//	{ kEventClassWindow, kEventWindowCollapsed },
-	//	{ kEventClassWindow, kEventWindowShown },
 	{ kEventClassWindow, kEventWindowActivated },
 	{ kEventClassWindow, kEventWindowDeactivated },
 	{ kEventClassWindow, kEventWindowShown },
@@ -121,8 +118,7 @@ static EventTypeSpec WindowHandlerEventList[] =
 	{ kEventClassWindow, kEventWindowClose },
 	{ kEventClassWindow, kEventWindowBoundsChanging },
 	{ kEventClassWindow, kEventWindowBoundsChanged },
-	//	{ kEventClassWindow, kEventWindowZoomed },
-	//	{ kEventClassWindow, kEventWindowDrawContent },
+	{ kEventClassWindow, kEventWindowGetIdealSize },
 
 	// Mouse events
 	{ kEventClassMouse, kEventMouseDown },
@@ -248,6 +244,7 @@ LLWindowMacOSX::LLWindowMacOSX(LLWindowCallbacks* callbacks,
 	mCursorIgnoreNextDelta = FALSE;
 	mNeedsResize = FALSE;
 	mOverrideAspectRatio = 0.f;
+	mMaximized = FALSE;
 	mMinimized = FALSE;
 	mTSMDocument = NULL; // Just in case.
 	mLanguageTextInputAllowed = FALSE;
@@ -455,24 +452,23 @@ BOOL LLWindowMacOSX::createContext(int x, int y, int width, int height, int bits
 
 	if(!mFullscreen && (mWindow == NULL))
 	{
-		Rect			window_rect;
 		//int				displayWidth = CGDisplayPixelsWide(mDisplay);
 		//int				displayHeight = CGDisplayPixelsHigh(mDisplay);
 		//const int		menuBarPlusTitleBar = 44;   // Ugly magic number.
 
 		LL_DEBUGS("Window") << "createContext: creating window" << LL_ENDL;
 
-		window_rect.left = (long) x;
-		window_rect.right = (long) x + width;
-		window_rect.top = (long) y;
-		window_rect.bottom = (long) y + height;
+		mPreviousWindowRect.left = (long) x;
+		mPreviousWindowRect.right = (long) x + width;
+		mPreviousWindowRect.top = (long) y;
+		mPreviousWindowRect.bottom = (long) y + height;
 
 		//-----------------------------------------------------------------------
 		// Create the window
 		//-----------------------------------------------------------------------
 		mWindow = NewCWindow(
 			NULL,
-			&window_rect,
+			&mPreviousWindowRect,
 			mWindowTitle,
 			false,				// Create the window invisible.  Whoever calls createContext() should show it after any moving/resizing.
 			//		noGrowDocProc,		// Window with no grow box and no zoom box
@@ -481,8 +477,7 @@ BOOL LLWindowMacOSX::createContext(int x, int y, int width, int height, int bits
 			kFirstWindowOfClass,
 			true,
 			(long)this);
-
-
+		
 		if (!mWindow)
 		{
 			setupFailure("Window creation error", "Error", OSMB_OK);
@@ -1093,31 +1088,22 @@ BOOL LLWindowMacOSX::getVisible()
 
 BOOL LLWindowMacOSX::getMinimized()
 {
-	BOOL result = FALSE;
-	
-	// Since the set of states where we want to act "minimized" is non-trivial, it's easier to
-	// track things locally than to try and retrieve the state from the window manager.
-	result = mMinimized;
-
-	return(result);
+	return mMinimized;
 }
 
 BOOL LLWindowMacOSX::getMaximized()
 {
-	BOOL result = FALSE;
-
-	if (mWindow)
-	{
-		// TODO
-	}
-
-	return(result);
+	return mMaximized;
 }
 
 BOOL LLWindowMacOSX::maximize()
 {
-	// TODO
-	return FALSE;
+	if (mWindow && !mMaximized)
+	{
+		ZoomWindow(mWindow, inContent, true);
+	}
+	
+	return mMaximized;
 }
 
 BOOL LLWindowMacOSX::getFullscreen()
@@ -2559,7 +2545,24 @@ OSStatus LLWindowMacOSX::eventHandler (EventHandlerCallRef myHandler, EventRef e
 
 				GetEventParameter(event, kEventParamCurrentBounds, typeQDRectangle, NULL, sizeof(Rect), NULL, &currentBounds);
 				GetEventParameter(event, kEventParamPreviousBounds, typeQDRectangle, NULL, sizeof(Rect), NULL, &previousBounds);
-
+				
+				// Put an offset into window un-maximize operation since the kEventWindowGetIdealSize
+				// event only allows the specification of size and not position.
+				if (mMaximized)
+				{
+					short leftOffset = mPreviousWindowRect.left - currentBounds.left;
+					currentBounds.left += leftOffset;
+					currentBounds.right += leftOffset;
+					
+					short topOffset = mPreviousWindowRect.top - currentBounds.top;
+					currentBounds.top += topOffset;
+					currentBounds.bottom += topOffset;
+				}
+				else
+				{
+					// Store off the size for future un-maximize operations
+					mPreviousWindowRect = previousBounds;
+				}
 
 				if ((currentBounds.right - currentBounds.left) < MIN_WIDTH)
 				{
@@ -2578,13 +2581,43 @@ OSStatus LLWindowMacOSX::eventHandler (EventHandlerCallRef myHandler, EventRef e
 
 		case kEventWindowBoundsChanged:
 			{
+				// Get new window bounds
 				Rect newBounds;
-
 				GetEventParameter(event, kEventParamCurrentBounds, typeQDRectangle, NULL, sizeof(Rect), NULL, &newBounds);
+				
+				// Get previous window bounds
+				Rect oldBounds;
+				GetEventParameter(event, kEventParamPreviousBounds, typeQDRectangle, NULL, sizeof(Rect), NULL, &oldBounds);
+				
+				// Determine if the new size is larger than the old
+				bool newBoundsLarger = ((newBounds.right - newBounds.left) >= (oldBounds.right - oldBounds.left));
+				newBoundsLarger &= ((newBounds.bottom - newBounds.top) >= (oldBounds.bottom - oldBounds.top));
+				
+				// Check to see if this is a zoom event (+ button on window pane)
+				unsigned int eventParams;
+				GetEventParameter(event, kEventParamAttributes, typeUInt32, NULL, sizeof(int), NULL, &eventParams);
+				bool isZoomEvent = ((eventParams & kWindowBoundsChangeZoom) != 0);
+				
+				// Maximized flag is if zoom event and increasing window size
+				mMaximized = (isZoomEvent && newBoundsLarger);
+				
 				aglUpdateContext(mContext);
+				
 				mCallbacks->handleResize(this, newBounds.right - newBounds.left, newBounds.bottom - newBounds.top);
-
-
+			}
+			break;
+			
+		case kEventWindowGetIdealSize:
+			// Only recommend a new ideal size when un-maximizing
+			if (mMaximized == TRUE)
+			{
+				Point nonMaximizedSize;
+				
+				nonMaximizedSize.v = mPreviousWindowRect.bottom - mPreviousWindowRect.top;
+				nonMaximizedSize.h = mPreviousWindowRect.right - mPreviousWindowRect.left;
+				
+				SetEventParameter(event, kEventParamDimensions, typeQDPoint, sizeof(Point), &nonMaximizedSize);
+				result = noErr;
 			}
 			break;
 
diff --git a/indra/llwindow/llwindowmacosx.h b/indra/llwindow/llwindowmacosx.h
index 6dc093b4be0e31a622b08e3993e1b143af1170a9..6c9e075a219b0d92adafdb9cb60f78d542106f32 100644
--- a/indra/llwindow/llwindowmacosx.h
+++ b/indra/llwindow/llwindowmacosx.h
@@ -156,7 +156,6 @@ class LLWindowMacOSX : public LLWindow
 	static pascal Boolean staticMoveEventComparator( EventRef event, void* data);
 	OSStatus eventHandler (EventHandlerCallRef myHandler, EventRef event);
 	void adjustCursorDecouple(bool warpingMouse = false);
-	void fixWindowSize(void);
 	void stopDockTileBounce();
 	static MASK modifiersToMask(SInt16 modifiers);
 	
@@ -182,6 +181,7 @@ class LLWindowMacOSX : public LLWindow
 	EventComparatorUPP  mMoveEventCampartorUPP;
 	
 	Rect		mOldMouseClip;  // Screen rect to which the mouse cursor was globally constrained before we changed it in clipMouse()
+	Rect		mPreviousWindowRect;  // Save previous window for un-maximize event
 	Str255 		mWindowTitle;
 	double		mOriginalAspectRatio;
 	BOOL		mSimulatedRightClick;
@@ -195,6 +195,7 @@ class LLWindowMacOSX : public LLWindow
 	BOOL		mNeedsResize;		// Constructor figured out the window is too big, it needs a resize.
 	LLCoordScreen   mNeedsResizeSize;
 	F32			mOverrideAspectRatio;
+	BOOL		mMaximized;
 	BOOL		mMinimized;
 	U32			mFSAASamples;
 	BOOL		mForceRebuild;
diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt
index b1cb10665ba348166f4287b9558339a3f43c17f7..95cfc23edeb43a768622cd70e962d730a545efdf 100644
--- a/indra/newview/CMakeLists.txt
+++ b/indra/newview/CMakeLists.txt
@@ -214,6 +214,7 @@ set(viewer_SOURCE_FILES
     llfloatersettingsdebug.cpp
     llfloatersidetraytab.cpp
     llfloatersnapshot.cpp
+    llfloatersounddevices.cpp
     llfloatertelehub.cpp
     llfloatertestinspectors.cpp
     llfloatertestlistview.cpp
@@ -758,6 +759,7 @@ set(viewer_HEADER_FILES
     llfloatersettingsdebug.h
     llfloatersidetraytab.h
     llfloatersnapshot.h
+    llfloatersounddevices.h
     llfloatertelehub.h
     llfloatertestinspectors.h
     llfloatertestlistview.h
diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index 4e666952ce90fd0d30c62dab8e95b1a7e889033a..6b56da5edd7b8e1c30add9603674c39ab7e9191e 100644
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -11651,10 +11651,10 @@
       <key>Value</key>
       <integer>0</integer>
     </map>
-    <key>VoiceCallsRejectAll</key>
+    <key>VoiceCallsRejectGroup</key>
     <map>
       <key>Comment</key>
-      <string>Silently reject all incoming voice calls.</string>
+      <string>Silently reject all incoming group voice calls.</string>
       <key>Persist</key>
       <integer>1</integer>
       <key>Type</key>
diff --git a/indra/newview/app_settings/settings_minimal.xml b/indra/newview/app_settings/settings_minimal.xml
index 60aecb279cc4ca2f5a7c8c57a7f7ad688b6d83ab..2180abdcee0ad3dc616cc42f227b9406f8bfbec0 100644
--- a/indra/newview/app_settings/settings_minimal.xml
+++ b/indra/newview/app_settings/settings_minimal.xml
@@ -117,10 +117,10 @@
         <key>Value</key>
             <integer>0</integer>
         </map>
-    <key>VoiceCallsRejectAll</key>
+    <key>VoiceCallsRejectGroup</key>
         <map>
         <key>Comment</key>
-            <string>Silently reject all incoming voice calls.</string>
+            <string>Silently reject all incoming group voice calls.</string>
         <key>Type</key>
             <string>Boolean</string>
         <key>Value</key>
diff --git a/indra/newview/llagent.cpp b/indra/newview/llagent.cpp
index 7d491a777489c0e025c8e0ebc66b0bea377cecd8..a6d2c96d52902099e488648310d8ad628eadf1e5 100644
--- a/indra/newview/llagent.cpp
+++ b/indra/newview/llagent.cpp
@@ -62,6 +62,7 @@
 #include "llstatusbar.h"
 #include "llteleportflags.h"
 #include "lltool.h"
+#include "lltoolpie.h"
 #include "lltoolmgr.h"
 #include "lltrans.h"
 #include "llurlentry.h"
@@ -559,6 +560,8 @@ void LLAgent::setFlying(BOOL fly)
 // static
 void LLAgent::toggleFlying()
 {
+	LLToolPie::instance().stopClickToWalk();
+
 	BOOL fly = !gAgent.getFlying();
 
 	gAgent.mMoveTimer.reset();
diff --git a/indra/newview/llbottomtray.cpp b/indra/newview/llbottomtray.cpp
index b6482e0ec473d7eec8ee85cdf935e374d0e726a8..a29f157cdf06355c3aa912dda66c822936a32b21 100644
--- a/indra/newview/llbottomtray.cpp
+++ b/indra/newview/llbottomtray.cpp
@@ -378,12 +378,13 @@ void LLBottomTray::onChange(EStatusType status, const std::string &channelURI, b
 	}
 
 	// We have to enable/disable right and left parts of speak button separately (EXT-4648)
-	mSpeakBtn->setSpeakBtnEnabled(enable);
+	getChild<LLButton>("speak_btn")->setEnabled(enable);
+
 	// skipped to avoid button blinking
 	if (status != STATUS_JOINING && status!= STATUS_LEFT_CHANNEL)
 	{
 		bool voice_status = LLVoiceClient::getInstance()->voiceEnabled() && LLVoiceClient::getInstance()->isVoiceWorking();
-		mSpeakBtn->setFlyoutBtnEnabled(voice_status);
+		getChild<LLButton>("speak_flyout_btn")->setEnabled(voice_status);
 		if (voice_status)
 		{
 			LLFirstUse::speak(true);
@@ -546,17 +547,21 @@ BOOL LLBottomTray::postBuild()
 	setRightMouseDownCallback(boost::bind(&LLBottomTray::showBottomTrayContextMenu,this, _2, _3,_4));
 
 	mSpeakPanel = getChild<LLPanel>("speak_panel");
-	mSpeakBtn = getChild<LLSpeakButton>("talk");
-	LLHints::registerHintTarget("speak_btn", mSpeakBtn->getHandle());
+	mSpeakBtn = findChild<LLSpeakButton>("talk");
+	if (mSpeakBtn)
+	{
+		LLHints::registerHintTarget("speak_btn", mSpeakBtn->getHandle());
+
+		// Localization tool doesn't understand custom buttons like <talk_button>
+		mSpeakBtn->setSpeakToolTip( getString("SpeakBtnToolTip") );
+		mSpeakBtn->setShowToolTip( getString("VoiceControlBtnToolTip") );
+	}
 
 	// Both parts of speak button should be initially disabled because
 	// it takes some time between logging in to world and connecting to voice channel.
-	mSpeakBtn->setSpeakBtnEnabled(false);
-	mSpeakBtn->setFlyoutBtnEnabled(false);
+	getChild<LLButton>("speak_btn")->setEnabled(false);
+	getChild<LLButton>("speak_flyout_btn")->setEnabled(false);
 
-	// Localization tool doesn't understand custom buttons like <talk_button>
-	mSpeakBtn->setSpeakToolTip( getString("SpeakBtnToolTip") );
-	mSpeakBtn->setShowToolTip( getString("VoiceControlBtnToolTip") );
 
 	// Registering Chat Bar to receive Voice client status change notifications.
 	LLVoiceClient::getInstance()->addObserver(this);
@@ -852,6 +857,10 @@ void LLBottomTray::draw()
 
 	getChild<LLButton>("show_help_btn")->setToggleState(help_floater_visible);
 
+	bool openmic = LLVoiceClient::getInstance()->getUserPTTState();
+	bool voiceenabled = LLVoiceClient::getInstance()->voiceEnabled();
+	getChild<LLButton>("speak_btn")->setToggleState(openmic && voiceenabled);
+	getChild<LLOutputMonitorCtrl>("chat_zone_indicator")->setIsMuted(!voiceenabled);
 
 }
 
@@ -1309,7 +1318,11 @@ void LLBottomTray::processShrinkButtons(S32& required_width, S32& buttons_freed_
 
 			if (possible_shrink_width > 0)
 			{
-				mSpeakBtn->setLabelVisible(false);
+				if (mSpeakBtn)
+				{	
+					mSpeakBtn->setLabelVisible(false);
+				}
+
 				mSpeakPanel->reshape(panel_width - possible_shrink_width, mSpeakPanel->getRect().getHeight());
 
 				required_width += possible_shrink_width;
@@ -1435,7 +1448,7 @@ bool LLBottomTray::processExtendSpeakButton(S32& available_width)
 		}
 
 		// Reshape the Speak button to its maximum width.
-		mSpeakBtn->setLabelVisible(true);
+		if (mSpeakBtn) mSpeakBtn->setLabelVisible(true);
 		mSpeakPanel->reshape(panel_max_width, mSpeakPanel->getRect().getHeight());
 
 		available_width -= required_headroom;
diff --git a/indra/newview/llchiclet.cpp b/indra/newview/llchiclet.cpp
index 885d5535247e86c3de6449e2d06fd110bd85b21e..277fc9d7b9a612bfa7bc3704b2d28038d4b76cd5 100644
--- a/indra/newview/llchiclet.cpp
+++ b/indra/newview/llchiclet.cpp
@@ -483,8 +483,9 @@ void LLIMChiclet::setShowSpeaker(bool show)
 	if(needs_resize)
 	{		
 		mShowSpeaker = show;
-		toggleSpeakerControl();
 	}
+
+	toggleSpeakerControl();
 }
 
 void LLIMChiclet::enableCounterControl(bool enable) 
diff --git a/indra/newview/llfloatersounddevices.cpp b/indra/newview/llfloatersounddevices.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..4f3945c95ffe574696c106bb6b39ce480cf7985b
--- /dev/null
+++ b/indra/newview/llfloatersounddevices.cpp
@@ -0,0 +1,85 @@
+/** 
+ * @file llfloatersounddevices.cpp
+ * @author Leyla Farazha
+ * @brief Sound Preferences used for minimal skin
+ *
+* $LicenseInfo:firstyear=2011&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2010, Linden Research, Inc.
+ * 
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ * 
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ * 
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
+ * $/LicenseInfo$
+ */
+#include "llviewerprecompiledheaders.h"
+
+#include "llfloatersounddevices.h"
+
+#include "llbottomtray.h"
+#include "lldraghandle.h"
+
+#include "llpanelvoicedevicesettings.h"
+
+// Library includes
+#include "indra_constants.h"
+
+// protected
+LLFloaterSoundDevices::LLFloaterSoundDevices(const LLSD& key)
+:	LLTransientDockableFloater(NULL, false, key)
+{
+	LLTransientFloaterMgr::getInstance()->addControlView(this);
+
+	// force docked state since this floater doesn't save it between recreations
+	setDocked(true);
+}
+
+LLFloaterSoundDevices::~LLFloaterSoundDevices()
+{
+	LLTransientFloaterMgr::getInstance()->removeControlView(this);
+}
+
+// virtual
+BOOL LLFloaterSoundDevices::postBuild()
+{
+	LLTransientDockableFloater::postBuild();
+		
+	LLView *anchor_panel = LLBottomTray::getInstance()->getChild<LLView>("speak_flyout_btn");
+	setDockControl(new LLDockControl(anchor_panel, this, getDockTongue(), LLDockControl::TOP));
+
+	setIsChrome(TRUE);
+	if (mDragHandle)
+		mDragHandle->setTitleVisible(TRUE);
+	updateTransparency(TT_ACTIVE); // force using active floater transparency (STORM-730)
+	
+	return TRUE;
+}
+
+//virtual
+void LLFloaterSoundDevices::setDocked(bool docked, bool pop_on_undock/* = true*/)
+{
+	LLTransientDockableFloater::setDocked(docked, pop_on_undock);
+}
+
+// virtual
+void LLFloaterSoundDevices::setFocus( BOOL b )
+{
+	LLTransientDockableFloater::setFocus(b);
+
+	// Force using active floater transparency
+	// We have to override setFocus() for because selecting an item of the
+	// combobox causes the floater to lose focus and thus become transparent.
+	updateTransparency(TT_ACTIVE);
+}
diff --git a/indra/newview/llfloatersounddevices.h b/indra/newview/llfloatersounddevices.h
new file mode 100644
index 0000000000000000000000000000000000000000..f09ee3b06931004e36bf25ed4f6236c301190a07
--- /dev/null
+++ b/indra/newview/llfloatersounddevices.h
@@ -0,0 +1,49 @@
+/** 
+ * @file llfloatersounddevices.h
+ * @author Leyla Farazha
+ * @brief Sound Preferences used for minimal skin
+ *
+* $LicenseInfo:firstyear=2011&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2010, Linden Research, Inc.
+ * 
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ * 
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ * 
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
+ * $/LicenseInfo$
+ */
+
+#ifndef LL_LLFLOATERSOUNDDEVICES_H
+#define LL_LLFLOATERSOUNDDEVICES_H
+
+#include "lltransientdockablefloater.h"
+
+class LLFloaterSoundDevices : public LLTransientDockableFloater
+{
+public:
+
+	LOG_CLASS(LLFloaterSoundDevices);
+
+	LLFloaterSoundDevices(const LLSD& key);
+	~LLFloaterSoundDevices();
+
+	/*virtual*/ BOOL postBuild();
+	/*virtual*/ void setDocked(bool docked, bool pop_on_undock = true);
+	/*virtual*/ void setFocus( BOOL b );
+};
+
+
+#endif //LL_LLFLOATERSOUNDDEVICES_H
+
diff --git a/indra/newview/llimview.cpp b/indra/newview/llimview.cpp
index ec3fe481511cc3afb491c1cd3ae48761238f6f80..38c5ba71bd8dcd8b64cd48cffaae54220b108b39 100644
--- a/indra/newview/llimview.cpp
+++ b/indra/newview/llimview.cpp
@@ -2696,10 +2696,10 @@ void LLIMMgr::inviteToSession(
 
 	if (voice_invite)
 	{
-		if	(	// if we're rejecting all incoming call requests
-				gSavedSettings.getBOOL("VoiceCallsRejectAll")	
+		if	(	// if we are rejecting group calls 
+				(gSavedSettings.getBOOL("VoiceCallsRejectGroup") && notify_box_type == "VoiceInviteGroup") ||
 				// or we're rejecting non-friend voice calls and this isn't a friend	
-				|| (gSavedSettings.getBOOL("VoiceCallsFriendsOnly") && (LLAvatarTracker::instance().getBuddyInfo(caller_id) == NULL))
+				(gSavedSettings.getBOOL("VoiceCallsFriendsOnly") && (LLAvatarTracker::instance().getBuddyInfo(caller_id) == NULL))
 			)
 		{
 			// silently decline the call
diff --git a/indra/newview/llmediactrl.cpp b/indra/newview/llmediactrl.cpp
index 5007f1c17acb70b59236368c21afe62ab9841c16..b3ad9efeb242e7027892f83a0fc715adf99abbcf 100644
--- a/indra/newview/llmediactrl.cpp
+++ b/indra/newview/llmediactrl.cpp
@@ -68,7 +68,6 @@ LLMediaCtrl::Params::Params()
 :	start_url("start_url"),
 	border_visible("border_visible", true),
 	ignore_ui_scale("ignore_ui_scale", true),
-	hide_loading("hide_loading", false),
 	decouple_texture_size("decouple_texture_size", false),
 	texture_width("texture_width", 1024),
 	texture_height("texture_height", 1024),
@@ -97,8 +96,6 @@ LLMediaCtrl::LLMediaCtrl( const Params& p) :
 	mCurrentNavUrl( "" ),
 	mStretchToFill( true ),
 	mMaintainAspectRatio ( true ),
-	mHideLoading (false),
-	mHidingInitialLoad (false),
 	mDecoupleTextureSize ( false ),
 	mTextureWidth ( 1024 ),
 	mTextureHeight ( 1024 ),
@@ -121,8 +118,6 @@ LLMediaCtrl::LLMediaCtrl( const Params& p) :
 	
 	setBorderVisible(p.border_visible);
 	
-	mHideLoading = p.hide_loading;
-	
 	setDecoupleTextureSize(p.decouple_texture_size);
 	
 	setTextureSize(p.texture_width, p.texture_height);
@@ -684,11 +679,6 @@ bool LLMediaCtrl::ensureMediaSourceExists()
 				mMediaSource->clearCache();
 				mClearCache = false;
 			}
-			
-			if(mHideLoading)
-			{
-				mHidingInitialLoad = true;
-			}
 		}
 		else
 		{
@@ -756,11 +746,11 @@ void LLMediaCtrl::draw()
 		}
 	}
 	
-	if(mHidingInitialLoad)
-	{
-		// If we're hiding loading, don't draw at all.
-		draw_media = false;
-	}
+//	if(mHidingInitialLoad)
+//	{
+//		// If we're hiding loading, don't draw at all.
+//		draw_media = false;
+//	}
 	
 	bool background_visible = isBackgroundVisible();
 	bool background_opaque = isBackgroundOpaque();
diff --git a/indra/newview/llpanellogin.cpp b/indra/newview/llpanellogin.cpp
index 979d96ca0de72147b920809c6c6a3894f278e4c9..4ac3a248d322746c1a12468fba83741194a3d436 100644
--- a/indra/newview/llpanellogin.cpp
+++ b/indra/newview/llpanellogin.cpp
@@ -100,58 +100,6 @@ class LLLoginRefreshHandler : public LLCommandHandler
 	}
 };
 
-LLLoginRefreshHandler gLoginRefreshHandler;
-
-
-// helper class that trys to download a URL from a web site and calls a method 
-// on parent class indicating if the web server is working or not
-class LLIamHereLogin : public LLHTTPClient::Responder
-{
-	private:
-		LLIamHereLogin( LLPanelLogin* parent ) :
-		   mParent( parent )
-		{}
-
-		LLPanelLogin* mParent;
-
-	public:
-		static boost::intrusive_ptr< LLIamHereLogin > build( LLPanelLogin* parent )
-		{
-			return boost::intrusive_ptr< LLIamHereLogin >( new LLIamHereLogin( parent ) );
-		};
-
-		virtual void  setParent( LLPanelLogin* parentIn )
-		{
-			mParent = parentIn;
-		};
-
-		// We don't actually expect LLSD back, so need to override completedRaw
-		virtual void completedRaw(U32 status, const std::string& reason,
-								  const LLChannelDescriptors& channels,
-								  const LLIOPipe::buffer_ptr_t& buffer)
-		{
-			completed(status, reason, LLSD()); // will call result() or error()
-		}
-	
-		virtual void result( const LLSD& content )
-		{
-			if ( mParent )
-				mParent->setSiteIsAlive( true );
-		};
-
-		virtual void error( U32 status, const std::string& reason )
-		{
-			if ( mParent )
-				mParent->setSiteIsAlive( false );
-		};
-};
-
-// this is global and not a class member to keep crud out of the header file
-namespace {
-	boost::intrusive_ptr< LLIamHereLogin > gResponsePtr = 0;
-};
-
-
 //---------------------------------------------------------------------------
 // Public methods
 //---------------------------------------------------------------------------
@@ -163,7 +111,6 @@ LLPanelLogin::LLPanelLogin(const LLRect &rect,
 	mLogoImage(),
 	mCallback(callback),
 	mCallbackData(cb_data),
-	mHtmlAvailable( TRUE ),
 	mListener(new LLPanelLoginListener(this))
 {
 	setBackgroundVisible(FALSE);
@@ -193,21 +140,11 @@ LLPanelLogin::LLPanelLogin(const LLRect &rect,
 
 	buildFromFile( "panel_login.xml");
 	
-	// Legacy login web page is hidden under the menu bar.
-	// Adjust reg-in-client web browser widget to not be hidden.
-	if (gSavedSettings.getBOOL("RegInClient"))
-	{
-		reshape(rect.getWidth(), rect.getHeight() - MENU_BAR_HEIGHT);
-	}
-	else
-	{
-		reshape(rect.getWidth(), rect.getHeight());
-	}
+	reshape(rect.getWidth(), rect.getHeight());
 
 	getChild<LLLineEditor>("password_edit")->setKeystrokeCallback(onPassKey, this);
 
 	// change z sort of clickable text to be behind buttons
-	//sendChildToBack(getChildView("channel_text"));
 	sendChildToBack(getChildView("forgot_password_text"));
 
 	if(LLStartUp::getStartSLURL().getType() != LLSLURL::LOCATION)
@@ -252,16 +189,10 @@ LLPanelLogin::LLPanelLogin(const LLRect &rect,
 	LLMediaCtrl* web_browser = getChild<LLMediaCtrl>("login_html");
 	web_browser->addObserver(this);
 	
-	// Clear the browser's cache to avoid any potential for the cache messing up the login screen.
-	web_browser->clearCache();
-
 	reshapeBrowser();
 
-	// kick off a request to grab the url manually
-	gResponsePtr = LLIamHereLogin::build( this );
-
-	LLHTTPClient::head( LLGridManager::getInstance()->getLoginPage(), gResponsePtr );
-
+	loadLoginPage();
+			
 	// Show last logged in user favorites in "Start at" combo.
 	addUsersWithFavoritesToUsername();
 	getChild<LLComboBox>("username_combo")->setTextChangedCallback(boost::bind(&LLPanelLogin::addFavoritesToStartLocation, this));
@@ -344,46 +275,10 @@ void LLPanelLogin::reshapeBrowser()
 	reshape( rect.getWidth(), rect.getHeight(), 1 );
 }
 
-void LLPanelLogin::setSiteIsAlive( bool alive )
-{
-	LLMediaCtrl* web_browser = getChild<LLMediaCtrl>("login_html");
-	// if the contents of the site was retrieved
-	if ( alive )
-	{
-		if ( web_browser )
-		{
-			loadLoginPage();
-			
-			// mark as available
-			mHtmlAvailable = TRUE;
-		}
-	}
-	else
-	// the site is not available (missing page, server down, other badness)
-	{
-		if ( web_browser )
-		{
-			// hide browser control (revealing default one)
-			web_browser->setVisible( FALSE );
-
-			// mark as unavailable
-			mHtmlAvailable = FALSE;
-		}
-	}
-}
-
-
 LLPanelLogin::~LLPanelLogin()
 {
 	LLPanelLogin::sInstance = NULL;
 
-	// tell the responder we're not here anymore
-	if ( gResponsePtr )
-		gResponsePtr->setParent( 0 );
-
-	//// We know we're done with the image, so be rid of it.
-	//gTextureList.deleteImage( mLogoImage );
-
 	// Controls having keyboard focus by default
 	// must reset it on destroy. (EXT-2748)
 	gFocusMgr.setDefaultKeyboardFocus(NULL);
@@ -406,22 +301,13 @@ void LLPanelLogin::draw()
 		S32 width = getRect().getWidth();
 		S32 height = getRect().getHeight();
 
-		if ( mHtmlAvailable )
+		if (getChild<LLView>("login_widgets")->getVisible())
 		{
-			if (getChild<LLView>("login_widgets")->getVisible())
-			{
-				// draw a background box in black
-				gl_rect_2d( 0, height - 264, width, 264, LLColor4::black );
-				// draw the bottom part of the background image
-				// just the blue background to the native client UI
-				mLogoImage->draw(0, -264, width + 8, mLogoImage->getHeight());
-			}
-		}
-		else
-		{
-			// the HTML login page is not available so default to the original screen
-			S32 offscreen_part = height / 3;
-			mLogoImage->draw(0, -offscreen_part, width, height+offscreen_part);
+			// draw a background box in black
+			gl_rect_2d( 0, height - 264, width, 264, LLColor4::black );
+			// draw the bottom part of the background image
+			// just the blue background to the native client UI
+			mLogoImage->draw(0, -264, width + 8, mLogoImage->getHeight());
 		};
 	}
 	glPopMatrix();
@@ -880,23 +766,10 @@ void LLPanelLogin::loadLoginPage()
 	oStr << "&os=" << os_info;
 	curl_free(os_info);
 	
-	
 	gViewerWindow->setMenuBackgroundColor(false, !LLGridManager::getInstance()->isInProductionGrid());
-	gLoginMenuBarView->setBackgroundColor(gMenuBarView->getBackgroundColor());
 	
 	LLMediaCtrl* web_browser = sInstance->getChild<LLMediaCtrl>("login_html");
-
-	// navigate to the "real" page
-	if (gSavedSettings.getBOOL("RegInClient"))
-	{
-		web_browser->setFocus(TRUE);
-		login_page = sInstance->getString("reg_in_client_url");
-		web_browser->navigateTo(login_page, "text/html");
-	}
-	else
-	{
-		web_browser->navigateTo( oStr.str(), "text/html" );
-	}
+	web_browser->navigateTo( oStr.str(), "text/html" );
 }
 
 void LLPanelLogin::handleMediaEvent(LLPluginClassMedia* /*self*/, EMediaEvent event)
@@ -927,10 +800,6 @@ void LLPanelLogin::onClickConnect(void *)
 {
 	if (sInstance && sInstance->mCallback)
 	{
-		// tell the responder we're not here anymore
-		if ( gResponsePtr )
-			gResponsePtr->setParent( 0 );
-
 		// JC - Make sure the fields all get committed.
 		sInstance->setFocus(FALSE);
 
@@ -998,24 +867,6 @@ void LLPanelLogin::onClickConnect(void *)
 	}
 }
 
-/*
-// static
-bool LLPanelLogin::newAccountAlertCallback(const LLSD& notification, const LLSD& response)
-{
-	S32 option = LLNotificationsUtil::getSelectedOption(notification, response);
-	if (0 == option)
-	{
-		llinfos << "Going to account creation URL" << llendl;
-		LLWeb::loadURLExternal( LLNotifications::instance().getGlobalString("CREATE_ACCOUNT_URL")); 
-	}
-	else
-	{
-		sInstance->setFocus(TRUE);
-	}
-	return false;
-}
-*/
-
 // static
 void LLPanelLogin::onClickNewAccount(void*)
 {
diff --git a/indra/newview/llpanellogin.h b/indra/newview/llpanellogin.h
index 9cc5e3456abea4664d1ca72151451135ab041bf9..11273453bae6788d01921a3aa344ff2ff1e1a19f 100644
--- a/indra/newview/llpanellogin.h
+++ b/indra/newview/llpanellogin.h
@@ -89,7 +89,6 @@ class LLPanelLogin:
 	void addUsersWithFavoritesToUsername();
 	static void onClickConnect(void*);
 	static void onClickNewAccount(void*);
-//	static bool newAccountAlertCallback(const LLSD& notification, const LLSD& response);
 	static void onClickVersion(void*);
 	static void onClickForgotPassword(void*);
 	static void onClickHelp(void*);
@@ -114,7 +113,6 @@ class LLPanelLogin:
 
 	static LLPanelLogin* sInstance;
 	static BOOL		sCapslockDidNotification;
-	BOOL			mHtmlAvailable;
 };
 
 std::string load_password_from_disk(void);
diff --git a/indra/newview/llpanelvoicedevicesettings.cpp b/indra/newview/llpanelvoicedevicesettings.cpp
index aef870d3524923813410103e8b43cad1f3d040c4..d13f57bd6a4640096a4d2838025c768c64baf01b 100644
--- a/indra/newview/llpanelvoicedevicesettings.cpp
+++ b/indra/newview/llpanelvoicedevicesettings.cpp
@@ -316,6 +316,6 @@ void LLPanelVoiceDeviceSettings::onCommitOutputDevice()
 	if(LLVoiceClient::getInstance())
 	{
 		LLVoiceClient::getInstance()->setRenderDevice(
-			getChild<LLComboBox>("voice_input_device")->getValue().asString());
+			getChild<LLComboBox>("voice_output_device")->getValue().asString());
 	}
 }
diff --git a/indra/newview/llspeakbutton.cpp b/indra/newview/llspeakbutton.cpp
index d52e0a6c8683c2214a138974eb73ed6c53b3e4fb..d3e96f8dfb308ed9684768c5c599b22d3f931456 100644
--- a/indra/newview/llspeakbutton.cpp
+++ b/indra/newview/llspeakbutton.cpp
@@ -54,26 +54,6 @@ LLSpeakButton::Params::Params()
 	// See widgets/talk_button.xml
 }
 
-void LLSpeakButton::draw()
-{
-	// LLVoiceClient::getInstance() is the authoritative global source of info regarding our open-mic state, we merely reflect that state.
-	bool openmic = LLVoiceClient::getInstance()->getUserPTTState();
-	bool voiceenabled = LLVoiceClient::getInstance()->voiceEnabled();
-	mSpeakBtn->setToggleState(openmic && voiceenabled);
-	mOutputMonitor->setIsMuted(!voiceenabled);
-	LLUICtrl::draw();
-}
-void LLSpeakButton::setSpeakBtnEnabled(bool enabled)
-{
-	LLButton* speak_btn = getChild<LLButton>("speak_btn");
-	speak_btn->setEnabled(enabled);
-}
-void LLSpeakButton::setFlyoutBtnEnabled(bool enabled)
-{
-	LLButton* show_btn = getChild<LLBottomtrayButton>("speak_flyout_btn");
-	show_btn->setEnabled(enabled);
-}
-
 LLSpeakButton::LLSpeakButton(const Params& p)
 : LLUICtrl(p)
 , mOutputMonitor(NULL)
diff --git a/indra/newview/llspeakbutton.h b/indra/newview/llspeakbutton.h
index 2fdf80c1f2fe91257172b1bc8b11d10e237c4dc5..7db01112ef09dedc435f4c703680f26c2e694494 100644
--- a/indra/newview/llspeakbutton.h
+++ b/indra/newview/llspeakbutton.h
@@ -53,12 +53,7 @@ class LLSpeakButton : public LLUICtrl
 	};
 
 	/*virtual*/ ~LLSpeakButton();
-	/*virtual*/ void draw();
 	
-	// methods for enabling/disabling right and left parts of speak button separately(EXT-4648)
-	void setSpeakBtnEnabled(bool enabled);
-	void setFlyoutBtnEnabled(bool enabled);
-
 	// *HACK: Need to put tooltips in a translatable location,
 	// the panel that contains this button.
 	void setSpeakToolTip(const std::string& msg);
diff --git a/indra/newview/lltoolpie.cpp b/indra/newview/lltoolpie.cpp
index 06e0d17b8c5041e6a14f877ec312b96f0b3c4361..9ec4d3303603c49d506b0e66982a44144f8335bb 100644
--- a/indra/newview/lltoolpie.cpp
+++ b/indra/newview/lltoolpie.cpp
@@ -688,6 +688,15 @@ BOOL LLToolPie::handleMouseUp(S32 x, S32 y, MASK mask)
 	return LLTool::handleMouseUp(x, y, mask);
 }
 
+void LLToolPie::stopClickToWalk()
+{
+	mPick.mPosGlobal = gAgent.getPositionGlobal();
+	handle_go_to();
+	if(mAutoPilotDestination) 
+	{ 
+		mAutoPilotDestination->markDead(); 
+	}
+}
 
 BOOL LLToolPie::handleDoubleClick(S32 x, S32 y, MASK mask)
 {
diff --git a/indra/newview/lltoolpie.h b/indra/newview/lltoolpie.h
index 22359a6db841d665a2053a6de8bb3ae7d671bf97..d7c79ee223425fd9cc16c69ae29ae73ceb5a4392 100644
--- a/indra/newview/lltoolpie.h
+++ b/indra/newview/lltoolpie.h
@@ -67,6 +67,7 @@ class LLToolPie : public LLTool, public LLSingleton<LLToolPie>
 	LLObjectSelection*	getLeftClickSelection() { return (LLObjectSelection*)mLeftClickSelection; }
 	void 				resetSelection();
 	void				blockClickToWalk() { mBlockClickToWalk = true; }
+	void				stopClickToWalk();
 	
 	static void			selectionPropertiesReceived();
 
diff --git a/indra/newview/llviewerfloaterreg.cpp b/indra/newview/llviewerfloaterreg.cpp
index dca1e33e609fac9f0539631c0c74511fee972b71..6dc85799ce2dbaa1bca1f39d2477a8ff9278eaf0 100644
--- a/indra/newview/llviewerfloaterreg.cpp
+++ b/indra/newview/llviewerfloaterreg.cpp
@@ -91,6 +91,7 @@
 #include "llfloatersettingsdebug.h"
 #include "llfloatersidetraytab.h"
 #include "llfloatersnapshot.h"
+#include "llfloatersounddevices.h"
 #include "llfloatertelehub.h"
 #include "llfloatertestinspectors.h"
 #include "llfloatertestlistview.h"
@@ -239,6 +240,7 @@ void LLViewerFloaterReg::registerFloaters()
 	LLFloaterReg::add("sell_land", "floater_sell_land.xml", &LLFloaterSellLand::buildFloater);
 	LLFloaterReg::add("settings_debug", "floater_settings_debug.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterSettingsDebug>);
 	LLFloaterReg::add("side_bar_tab", "floater_side_bar_tab.xml", &LLFloaterReg::build<LLFloaterSideTrayTab>);
+	LLFloaterReg::add("sound_devices", "floater_sound_devices.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterSoundDevices>);
 	LLFloaterReg::add("stats", "floater_stats.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloater>);
 	LLFloaterReg::add("start_queue", "floater_script_queue.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterRunQueue>);
 	LLFloaterReg::add("stop_queue", "floater_script_queue.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterNotRunQueue>);
diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp
index 5a3baf26505fc8e7cd6b371fca0367db2f2a027d..d958551a0a8b7dceb379922ac96c413558ca5f7e 100644
--- a/indra/newview/llviewermenu.cpp
+++ b/indra/newview/llviewermenu.cpp
@@ -5591,6 +5591,14 @@ class LLToggleHelp : public view_listener_t
 	}
 };
 
+class LLToggleSpeak : public view_listener_t
+{
+	bool handleEvent(const LLSD& userdata)
+	{
+		LLVoiceClient::getInstance()->toggleUserPTTState();
+		return true;
+	}
+};
 class LLShowSidetrayPanel : public view_listener_t
 {
 	bool handleEvent(const LLSD& userdata)
@@ -8187,6 +8195,7 @@ void initialize_menus()
 	commit.add("BuyCurrency", boost::bind(&handle_buy_currency));
 	view_listener_t::addMenu(new LLShowHelp(), "ShowHelp");
 	view_listener_t::addMenu(new LLToggleHelp(), "ToggleHelp");
+	view_listener_t::addMenu(new LLToggleSpeak(), "ToggleSpeak");
 	view_listener_t::addMenu(new LLPromptShowURL(), "PromptShowURL");
 	view_listener_t::addMenu(new LLShowAgentProfile(), "ShowAgentProfile");
 	view_listener_t::addMenu(new LLToggleAgentProfile(), "ToggleAgentProfile");
diff --git a/indra/newview/skins/default/xui/en/floater_sound_devices.xml b/indra/newview/skins/default/xui/en/floater_sound_devices.xml
new file mode 100644
index 0000000000000000000000000000000000000000..584413c030cc05111333350fdf0bd4488ee7cc40
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/floater_sound_devices.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater
+ border_visible="false"
+ border="false"
+ legacy_header_height="18"
+ can_minimize="true"
+ can_resize="true"
+ can_close="false"
+ save_dock_state="true"
+ save_visibility="true"
+ save_rect="true"
+ single_instance="true"
+ bevel_style="in"
+ height="140"
+ layout="topleft"
+ name="floater_sound_devices"
+ title="Sound Devices"
+ width="315">
+  <panel
+    layout="topleft"
+    follows="all"
+    filename="panel_sound_devices.xml"
+    name="device_settings_panel"
+    width="300"
+    left="2"
+    top="26"
+    class="panel_voice_device_settings"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/en/main_view.xml b/indra/newview/skins/default/xui/en/main_view.xml
index e5ae0b950a9d004c8dae3e5bcc3e8edaf517874e..3ead67ca57f85efe27c303cc30c971a6109dbb01 100644
--- a/indra/newview/skins/default/xui/en/main_view.xml
+++ b/indra/newview/skins/default/xui/en/main_view.xml
@@ -8,12 +8,6 @@
  tab_stop="false" 
  name="main_view"
  width="1024">
-  <panel top="0"
-     follows="all"
-     height="768"
-     mouse_opaque="false"
-     name="login_panel_holder"
-     width="1024"/>
   <layout_stack border_size="0"
                 follows="all"
                 mouse_opaque="false"
@@ -133,7 +127,14 @@
                       user_resize="false"
                       visible="false"
                       width="333"/>
-      </layout_stack>      
+      </layout_stack>
+      <panel top="0"
+         follows="all"
+         height="500"
+         mouse_opaque="false"
+         name="login_panel_holder"
+         width="1024"/>
+
       <panel follows="all"
                     height="500"
                     left="0"
@@ -171,6 +172,7 @@
          top="0" 
          width="1024"
          visible="false"/>
+  
   <view mouse_opaque="false"
         follows="all"
         name="menu_bar_holder"
diff --git a/indra/newview/skins/default/xui/en/menu_viewer.xml b/indra/newview/skins/default/xui/en/menu_viewer.xml
index a5115b0faaaa962ebc9f1542931efbac82cc6593..8a85a331e5acb36f3d3f09b1fe9dfac6bc7025c7 100644
--- a/indra/newview/skins/default/xui/en/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/en/menu_viewer.xml
@@ -2696,7 +2696,7 @@
           <menu_item_call
            label="Web Content Browser"
            name="Web Content Browser"
-           shortcut="control|alt|W">
+           shortcut="control|shift|Z">
             <menu_item_call.on_click
              function="Advanced.WebContentTest"
              parameter="http://google.com"/>
diff --git a/indra/newview/skins/default/xui/en/panel_preferences_sound.xml b/indra/newview/skins/default/xui/en/panel_preferences_sound.xml
index f89494da72b993c0a9f232668bb73332ec5d56cd..62e445862f582fe59ac0d26070f629dbf4d06e16 100644
--- a/indra/newview/skins/default/xui/en/panel_preferences_sound.xml
+++ b/indra/newview/skins/default/xui/en/panel_preferences_sound.xml
@@ -478,164 +478,13 @@
    name="device_settings_btn"
    width="190">
   </button>
-    <panel
-     background_visible="false"
-     bg_alpha_color="DkGray"
-     visiblity_control="ShowDeviceSettings"
-     border="false"
-     follows="top|left"
-     height="100"
-     label="Device Settings"
-     layout="topleft"
-     left_delta="-2"
-     name="device_settings_panel"
-     class="panel_voice_device_settings"
-     width="470"
-     top_pad="0">
-      <panel.string
-        name="default_text">
-        Default
-      </panel.string>
-      <panel.string
-        name="default system device">
-        Default system device
-      </panel.string>
-      <panel.string
-        name="no device">
-        No device
-      </panel.string>
-      <icon
-             height="18"
-             image_name="Microphone_On"
-             left_delta="4"
-             name="microphone_icon"
-             mouse_opaque="false"
-             top="7"
-             visible="true"
-             width="18" />
-    <text
-     type="string"
-     length="1"
-      font.style="BOLD"
-     follows="left|top"
-     height="16"
-     layout="topleft"
-     left_pad="3"
-     name="Input"
-     width="70">
-        Input
-    </text>
-    <combo_box
-     height="23"
-     control_name="VoiceInputAudioDevice"
-     layout="topleft"
-     left_pad="0"
-     max_chars="128"
-     name="voice_input_device"
-     top_delta="-5"
-     width="200" />
-   <text
-     type="string"
-     length="1"
-     follows="left|top"
-     height="16"
-     layout="topleft"
-     left_delta="-70"
-     name="My volume label"
-     top_pad="4"
-     width="200">
-        My volume:
-    </text>
-      <slider_bar
-        control_name="AudioLevelMic"
-     follows="left|top"
-     height="17"
-     increment="0.025"
-     initial_value="1.0"
-     layout="topleft"
-     left_delta="-6"
-     max_val="2"
-     name="mic_volume_slider"
-     tool_tip="Change the volume using this slider"
-     top_pad="-1"
-     width="220" />
-    <text
-     type="string"
-     text_color="EmphasisColor"
-     length="1"
-     follows="left|top"
-     height="18"
-     layout="topleft"
-     left_pad="5"
-     name="wait_text"
-     top_delta="-1"
-     width="110">
-        Please wait
-    </text>
-    <locate
-     height="20"
-     layout="topleft"
-     left_delta="0"
-     name="bar0"
-     top_delta="-2"
-     width="20" />
-    <locate
-     height="20"
-     layout="topleft"
-     left_pad="5"
-     name="bar1"
-     top_delta="0"
-     width="20" />
-    <locate
-     height="20"
-     layout="topleft"
-     left_pad="5"
-     name="bar2"
-     top_delta="0"
-     width="20" />
-    <locate
-     height="20"
-     layout="topleft"
-     left_pad="5"
-     name="bar3"
-     top_delta="0"
-     width="20" />
-    <locate
-     height="20"
-     layout="topleft"
-     left_pad="5"
-     name="bar4"
-     top_delta="0"
-     width="20" />
-          <icon
-             height="18"
-             image_name="Parcel_Voice_Light"
-             left="5"
-             name="speaker_icon"
-             mouse_opaque="false"
-             top_pad="3"
-             visible="true"
-             width="22" />
-    <text
-     font.style="BOLD"
-     type="string"
-     length="1"
-     follows="left|top"
-     height="15"
-     layout="topleft"
-     left_pad="0"
-     name="Output"
-     width="70">
-        Output
-    </text>
-    <combo_box
-     control_name="VoiceOutputAudioDevice"
-     height="23"
-     layout="topleft"
-     left_pad="0"
-     max_chars="128"
-     name="voice_output_device"
-     top_delta="-3"
-     width="200" />
-    </panel>
-    </panel>
+  <panel
+    layout="topleft"
+    filename="panel_sound_devices.xml"
+    visiblity_control="ShowDeviceSettings"
+    name="device_settings_panel"
+    top="314"
+    width="345"
+    left="18"
+    class="panel_voice_device_settings"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/en/panel_sound_devices.xml b/indra/newview/skins/default/xui/en/panel_sound_devices.xml
new file mode 100644
index 0000000000000000000000000000000000000000..981228132390756d435c5ad6ecc9e5cdc6f1ca9a
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/panel_sound_devices.xml
@@ -0,0 +1,163 @@
+<panel
+ background_visible="false"
+ bg_alpha_color="DkGray"
+ follows="all"
+ height="200"
+ label="Device Settings"
+ layout="topleft"
+ name="device_settings_panel"
+ width="360">
+	<panel.string
+	  name="default_text">
+		Default
+	</panel.string>
+	<panel.string
+	  name="default system device">
+		Default system device
+	</panel.string>
+	<panel.string
+	  name="no device">
+		No device
+	</panel.string>
+	<icon
+		   height="18"
+		   image_name="Microphone_On"
+		   left_delta="4"
+		   name="microphone_icon"
+		   mouse_opaque="false"
+		   top="7"
+       layout="topleft"
+		   visible="true"
+		   width="18" />
+	<text
+     type="string"
+     length="1"
+      font.style="BOLD"
+     follows="left|top"
+     height="16"
+     layout="topleft"
+     left_pad="3"
+     name="Input"
+     width="70">
+		Input
+	</text>
+	<combo_box
+     height="23"
+     control_name="VoiceInputAudioDevice"
+     follows="left|top"
+     layout="topleft"
+     left_pad="0"
+     max_chars="128"
+     name="voice_input_device"
+     top_delta="-5"
+     width="200" />
+	<text
+	  type="string"
+	  length="1"
+	  follows="left|top"
+	  height="16"
+	  layout="topleft"
+	  left_delta="-70"
+	  name="My volume label"
+	  top_pad="4"
+	  width="200">
+		My volume:
+	</text>
+	<slider_bar
+	  control_name="AudioLevelMic"
+   follows="top|right|left"
+   height="17"
+   increment="0.025"
+   initial_value="1.0"
+   layout="topleft"
+   left_delta="-6"
+   max_val="2"
+   name="mic_volume_slider"
+   tool_tip="Change the volume using this slider"
+   top_pad="-1"
+   width="220" />
+	<text
+     type="string"
+     text_color="EmphasisColor"
+     length="1"
+     follows="right|top"
+     height="18"
+     layout="topleft"
+     left_pad="5"
+     name="wait_text"
+     top_delta="-1"
+     width="110">
+		Please wait
+	</text>
+  <locate
+     follows="right|top"
+     height="20"
+     layout="topleft"
+     left_delta="0"
+     name="bar0"
+     top_delta="-2"
+     width="20" />
+  <locate
+     follows="right|top"
+     height="20"
+     layout="topleft"
+     left_pad="5"
+     name="bar1"
+     top_delta="0"
+     width="20" />
+  <locate
+     follows="right|top"
+     height="20"
+     layout="topleft"
+     left_pad="5"
+     name="bar2"
+     top_delta="0"
+     width="20" />
+  <locate
+     follows="right|top"
+     height="20"
+     layout="topleft"
+     left_pad="5"
+     name="bar3"
+     top_delta="0"
+     width="20" />
+  <locate
+     follows="right|top"
+     height="20"
+     layout="topleft"
+     left_pad="5"
+     name="bar4"
+     top_delta="0"
+     width="20" />
+	<icon
+	   height="18"
+	   image_name="Parcel_Voice_Light"
+	   left="5"
+	   name="speaker_icon"
+	   mouse_opaque="false"
+	   top_pad="3"
+	   visible="true"
+	   width="22" />
+	<text
+     font.style="BOLD"
+     type="string"
+     length="1"
+     follows="left|top"
+     height="15"
+     layout="topleft"
+     left_pad="0"
+     name="Output"
+     width="70">
+		Output
+	</text>
+	<combo_box
+     control_name="VoiceOutputAudioDevice"
+     height="23"
+     follows="left|top"
+     layout="topleft"
+     left_pad="0"
+     max_chars="128"
+     name="voice_output_device"
+     top_delta="-3"
+     width="200" />
+</panel>
diff --git a/indra/newview/skins/default/xui/en/widgets/chiclet_im_p2p.xml b/indra/newview/skins/default/xui/en/widgets/chiclet_im_p2p.xml
index 99807d47175b745c99e85530b43da6069b3c4195..d27c14f4e70ba09d532f79b3608bed27a0205a10 100644
--- a/indra/newview/skins/default/xui/en/widgets/chiclet_im_p2p.xml
+++ b/indra/newview/skins/default/xui/en/widgets/chiclet_im_p2p.xml
@@ -21,6 +21,7 @@
      width="20" />
     <chiclet_im_p2p.avatar_icon
      bottom="3"
+     color="white"
      follows="left|top|bottom"
      height="20"
      left="2"
diff --git a/indra/newview/skins/minimal/textures/bottomtray/Speak_Btn_Off.png b/indra/newview/skins/minimal/textures/bottomtray/Speak_Btn_Off.png
new file mode 100644
index 0000000000000000000000000000000000000000..b6e9eef891bd5ef3b79e50685c7b0d2922ea6119
Binary files /dev/null and b/indra/newview/skins/minimal/textures/bottomtray/Speak_Btn_Off.png differ
diff --git a/indra/newview/skins/minimal/textures/bottomtray/Speak_Btn_Selected_Press.png b/indra/newview/skins/minimal/textures/bottomtray/Speak_Btn_Selected_Press.png
new file mode 100644
index 0000000000000000000000000000000000000000..687cb7fb53569a577d619a09ab211290dc909807
Binary files /dev/null and b/indra/newview/skins/minimal/textures/bottomtray/Speak_Btn_Selected_Press.png differ
diff --git a/indra/newview/skins/minimal/textures/textures.xml b/indra/newview/skins/minimal/textures/textures.xml
index b4848a0619694b0d5d7235e8ffe826506423797e..e3ed01721a5f5cd76673507874e15256a9ed3ee9 100644
--- a/indra/newview/skins/minimal/textures/textures.xml
+++ b/indra/newview/skins/minimal/textures/textures.xml
@@ -6,4 +6,6 @@
   <texture name="bottomtray_close_off" file_name="bottomtray/close_off.png" preload="true" />
   <texture name="bottomtray_close_over" file_name="bottomtray/close_over.png" preload="true" />
   <texture name="bottomtray_close_press" file_name="bottomtray/close_press.png" preload="true" />
-</textures>
+  <texture name="Speak_Btn_Off" file_name="bottomtray/Speak_Btn_Off.png" preload="true" scale.left="4" scale.top="16" scale.right="8" scale.bottom="4" />
+  <texture name="Speak_Btn_Selected_Press" file_name="bottomtray/Speak_Btn_Selected_Press.png" preload="true" scale.left="4" scale.top="16" scale.right="8" scale.bottom="4" />
+ </textures>
diff --git a/indra/newview/skins/minimal/xui/en/main_view.xml b/indra/newview/skins/minimal/xui/en/main_view.xml
index 45ba785c1f90dc0feba4dcd01acb4e6ee0ef6e2a..ac5bae2f3b2bf71a4a3cceb8164f274df4711b20 100644
--- a/indra/newview/skins/minimal/xui/en/main_view.xml
+++ b/indra/newview/skins/minimal/xui/en/main_view.xml
@@ -8,13 +8,6 @@
  tab_stop="false" 
  name="main_view"
  width="1024">
-  <panel top="0"
-   follows="all"
-   height="768"
-   mouse_opaque="false"
-   name="login_panel_holder"
-   width="1024"/>
- 
   <layout_stack border_size="0"
                 follows="all"
                 mouse_opaque="false"
@@ -96,6 +89,14 @@
                      name="stand_stop_flying_container"
                      visible="false"
                      width="500"/>
+              
+              <panel top="0"
+               follows="all"
+               height="500"
+               mouse_opaque="false"
+               name="login_panel_holder"
+               width="1024"/>
+
               <panel follows="all"
 										 height="500"
 										 left="0"
diff --git a/indra/newview/skins/minimal/xui/en/notification_visibility.xml b/indra/newview/skins/minimal/xui/en/notification_visibility.xml
index 616b544847ec8830223ec49e323fa6a87abd579f..bdd3c3d4a473626caabcbedea83e3ae060f61af9 100644
--- a/indra/newview/skins/minimal/xui/en/notification_visibility.xml
+++ b/indra/newview/skins/minimal/xui/en/notification_visibility.xml
@@ -1,12 +1,9 @@
 <?xml version="1.0" ?>
 <notification_visibility>
-  <respond name="VoiceInviteP2P" response="Decline"/>
-  <respond name="VoiceInviteAdHoc" response="Decline"/>
   <respond name="VoiceInviteGroup" response="Decline"/>
 
   <!-- group and voice are disabled features -->
   <hide tag="group"/>
-  <hide tag="voice"/>
 
   <!-- no spammy scripts -->
   <!-- <hide name="ScriptDialog"/> -->
@@ -16,6 +13,7 @@
   <hide name="FirstInventory"/>
   <hide name="HintSidePanel"/>
   <hide name="HintMove"/>
+  <hide name="HintSpeak"/>
   <hide name="HintDisplayName"/>
   <hide name="HintInventory"/>
   <hide name="HintLindenDollar"/>
diff --git a/indra/newview/skins/minimal/xui/en/panel_bottomtray.xml b/indra/newview/skins/minimal/xui/en/panel_bottomtray.xml
index 95f2010e441bf1fd21bdbf54e21d2fb85ecf2997..49eead5079492a5fffeaa7e871a31a72c6eeb454 100644
--- a/indra/newview/skins/minimal/xui/en/panel_bottomtray.xml
+++ b/indra/newview/skins/minimal/xui/en/panel_bottomtray.xml
@@ -12,16 +12,16 @@
  focus_root="true"
  top="28"
  width="1310">
-	<string
+  <string
      name="DragIndicationImageName"
      value="Accordion_ArrowOpened_Off" />
-	<string
+  <string
      name="SpeakBtnToolTip"
      value="Turns microphone on/off" />
-	<string
+  <string
      name="VoiceControlBtnToolTip"
      value="Shows/hides voice control panel" />
-	<layout_stack
+  <layout_stack
      border_size="0"
      clip="false"
      follows="all"
@@ -33,12 +33,12 @@
      orientation="horizontal"
      top="0"
      width="1310">
-		<layout_panel
+    <layout_panel
          auto_resize="false"
          user_resize="false"
          min_width="2"
          width="2" />
-		<layout_panel
+    <layout_panel
          auto_resize="false"
          layout="topleft"
          max_width="320"
@@ -48,7 +48,7 @@
 		 name="chat_bar_layout_panel"
          user_resize="true"
          width="308" >
-			<panel
+      <panel
 		   name="chat_bar"
 			  filename="panel_nearby_chat_bar.xml"
 			  left="0"
@@ -65,39 +65,74 @@
         height="28"
         layout="topleft"
         min_height="28"
-        min_width="59"
+        min_width="35"
         mouse_opaque="false"
         name="speak_panel"
         top_delta="0"
         user_resize="false"
-        width="108">
-      <talk_button
+        width="85">
+      <button
        follows="left|right"
        height="23"
        layout="topleft"
+       label="Speak"
        left="0"
-       name="talk"
+       name="speak_btn"
+       tool_tip="Turn your microphone on and off"
+       pad_right="30"
+       halign="center"
+       use_ellipses="true"
+       tab_stop="true"
+    is_toggle="true"
+    image_selected="Speak_Btn_Selected_Press"
+    image_unselected="Speak_Btn_Off"
+		 image_pressed="Speak_Btn_Selected_Press"
+		 image_pressed_selected="Speak_Btn_Selected_Press"
        top="5"
-       width="105">
-        <show_button
-         tab_stop="true">
-          <init_callback
-           function="Button.SetDockableFloaterToggle"
-           parameter="voice_controls" />
-        </show_button>
-        <!-- do not remove halign attribute with default value. otherwise it can't be overridden in other locales.
-                 & pad_right is default value for long label which can be right aligned. See EXT-6318 -->
-        <speak_button
-         halign="center"
-         label="Speak"
-         label_selected="Speak"
-         name="speak_btn"
-         pad_right="20"
-         tab_stop="true"
-         use_ellipses="true" />
-      </talk_button>
+       width="85">
+
+        <commit_callback
+				  function="ToggleSpeak"
+				  parameter="f1_help" />
+      </button>
     </layout_panel>
-		<layout_panel
+
+    <layout_panel
+          auto_resize="false"
+          follows="left|right"
+          height="28"
+          layout="topleft"
+          min_height="28"
+          min_width="20"
+          mouse_opaque="false"
+          name="speak_flyout_panel"
+          top_delta="0"
+          user_resize="false"
+          width="20">
+      <button
+     follows="left|right"
+     width="20"
+        top="5"
+     left="0"
+     height="23"
+     name="speak_flyout_btn"
+     label=""
+     tab_stop="false"
+     tool_tip="Change your sound preferences"
+     is_toggle="true"
+     image_disabled="ComboButton_UpOff"
+     image_unselected="ComboButton_UpOff"
+     image_selected="ComboButton_On"
+     image_pressed="ComboButton_UpSelected"
+     image_pressed_selected="ComboButton_Selected">
+        <init_callback
+         function="Button.SetDockableFloaterToggle"
+         parameter="sound_devices" />
+      </button>
+
+    </layout_panel>
+
+    <layout_panel
          auto_resize="false"
          follows="right"
          height="28"
@@ -108,7 +143,7 @@
          name="gesture_panel"
          top_delta="0"
          user_resize="false"
-         width="85">
+         width="88">
 			<gesture_combo_list
              follows="left|right"
              height="23"
@@ -116,20 +151,20 @@
              layout="topleft"
              get_more="false"
              view_all="false"
-             left="0"
+             left="3"
              name="Gesture"
-             tool_tip="Shows/hides gestures"
+             tool_tip="Make your avatar do things"
              top="5"
              width="82">
-				<combo_button
+        <combo_button
                  pad_right="10"
                  can_drag="false"
                  use_ellipses="true" />
-				<combo_list
+        <combo_list
                  page_lines="17" />
-			</gesture_combo_list>
-		</layout_panel>
-		<layout_panel
+      </gesture_combo_list>
+    </layout_panel>
+    <layout_panel
          auto_resize="false"
          follows="left|right"
          height="28"
@@ -140,7 +175,7 @@
          name="cam_panel"
          user_resize="false"
          width="83">
-			<bottomtray_button
+      <bottomtray_button
               can_drag="false"
              follows="left|right"
              height="23"
@@ -152,16 +187,16 @@
              layout="topleft"
              left="0"
              name="camera_btn"
-             tool_tip="Shows/hides camera controls"
+             tool_tip="Control your camera angle"
              top="5"
              use_ellipses="true"
              width="80">
-				<init_callback
+        <init_callback
                  function="Button.SetDockableFloaterToggle"
                  parameter="camera" />
-			</bottomtray_button>
-		</layout_panel>
-		<layout_panel
+      </bottomtray_button>
+    </layout_panel>
+    <layout_panel
          auto_resize="false"
          follows="left|right"
          height="28"
@@ -170,7 +205,7 @@
          name="splitter_panel"
          user_resize="false"
          width="17">
-			<icon
+      <icon
              follows="left|bottom"
              height="18"
              width="2"
@@ -178,8 +213,8 @@
              image_name="Button_Separator"
              name="separator"
              top="7"/>
-		</layout_panel>
-		<layout_panel
+    </layout_panel>
+    <layout_panel
 		  auto_resize="false"
 		  follows="left|right"
 		  height="28"
@@ -190,7 +225,7 @@
 		  name="avatar_and_destinations_panel"
 		  user_resize="false"
 		  width="103">
-			<bottomtray_button
+      <bottomtray_button
 			 can_drag="false"
 			follows="left|right"
 			height="23"
@@ -201,16 +236,16 @@
 			layout="topleft"
 			left="0"
 			name="destination_btn"
-			tool_tip="Shows destinations window"
+			tool_tip="Travel through Second Life"
 			top="5"
 			is_toggle="true"
 			use_ellipses="true"
 			width="100">
-				<bottomtray_button.commit_callback
+        <bottomtray_button.commit_callback
 				  function="Destination.show" />
-			</bottomtray_button>
-		</layout_panel>
-		<layout_panel
+      </bottomtray_button>
+    </layout_panel>
+    <layout_panel
 		  auto_resize="false"
 		  follows="left|right"
 		  height="28"
@@ -221,7 +256,7 @@
 		  name="avatar_and_destinations_panel"
 		  user_resize="false"
 		  width="103">
-			<bottomtray_button
+      <bottomtray_button
 			 can_drag="false"
 			follows="left|right"
 			height="23"
@@ -234,13 +269,14 @@
 			name="avatar_btn"
 			top="5"
 			is_toggle="true"
+			tool_tip="Change your appearance"
 			use_ellipses="true"
 			width="100">
-				<bottomtray_button.commit_callback
+        <bottomtray_button.commit_callback
 				  function="Avatar.show" />
-			</bottomtray_button>
-		</layout_panel>
-		<layout_panel
+      </bottomtray_button>
+    </layout_panel>
+    <layout_panel
 		  auto_resize="false"
 		  follows="left|right"
 		  height="28"
@@ -249,7 +285,7 @@
 		  name="splitter_panel"
 		  user_resize="false"
 		  width="17">
-			<icon
+      <icon
              follows="left|bottom"
              height="18"
              width="2"
@@ -257,8 +293,8 @@
              image_name="Button_Separator"
              name="separator"
              top="7"/>
-		</layout_panel>
-		<layout_panel
+    </layout_panel>
+    <layout_panel
          auto_resize="false"
          follows="right"
          height="28"
@@ -270,7 +306,7 @@
          top_delta="0"
          user_resize="false"
          width="105">
-			<bottomtray_button
+      <bottomtray_button
 			   can_drag="false"
 			  follows="left|right"
 			  height="23"
@@ -281,17 +317,17 @@
 			  layout="topleft"
 			  left="0"
 			  name="show_people_button"
-			  tool_tip="Shows people window"
+			  tool_tip="Find people in Second Life"
 			  top="5"
 			  is_toggle="true"
 			  use_ellipses="true"
 			  width="100">
-				<bottomtray_button.commit_callback
+        <bottomtray_button.commit_callback
 				  function="ShowSidetrayPanel"
 				 parameter="panel_people" />
-			</bottomtray_button>
-		</layout_panel>
-		<layout_panel
+      </bottomtray_button>
+    </layout_panel>
+    <layout_panel
 		   auto_resize="false"
 		   follows="right"
 		   height="28"
@@ -303,7 +339,7 @@
 		   top_delta="0"
 		   user_resize="false"
 		   width="105">
-			<bottomtray_button
+      <bottomtray_button
 			   can_drag="false"
 			  follows="left|right"
 			  height="23"
@@ -314,17 +350,17 @@
 			  layout="topleft"
 			  left="0"
 			  name="show_profile_btn"
-			  tool_tip="Shows profile window"
+			  tool_tip="View and edit your Profile"
 			  is_toggle="true"
 			  top="5"
 			  use_ellipses="true"
 			  width="100">
-				<bottomtray_button.commit_callback
+        <bottomtray_button.commit_callback
 				  function="ToggleAgentProfile"
 				  parameter="agent"/>
-			</bottomtray_button>
-		</layout_panel>
-		<layout_panel
+      </bottomtray_button>
+    </layout_panel>
+    <layout_panel
 		   auto_resize="false"
 		   follows="right"
 		   height="28"
@@ -336,7 +372,7 @@
 		   top_delta="0"
 		   user_resize="false"
 		   width="105">
-			<bottomtray_button
+      <bottomtray_button
 			   can_drag="false"
 			  follows="left|right"
 			  height="23"
@@ -347,17 +383,17 @@
 			  layout="topleft"
 			  left="0"
 			  name="show_help_btn"
-			  tool_tip="Open Second Life How To topics"
+			  tool_tip="View Second Life help info"
 			  is_toggle="true"
 			  top="5"
 			  use_ellipses="true"
 			  width="100">
-				<bottomtray_button.commit_callback
+        <bottomtray_button.commit_callback
 				  function="ToggleHelp"
 				  parameter="f1_help" />
-			</bottomtray_button>
-		</layout_panel>
-		<layout_panel
+      </bottomtray_button>
+    </layout_panel>
+    <layout_panel
 		   follows="left|right"
 		   height="30"
 		   layout="topleft"
@@ -367,9 +403,9 @@
 		   top="0"
 		   user_resize="false"
 		   width="189">
-			<!--*NOTE: min_width of the chiclet_panel (chiclet_list) must be the same
+      <!--*NOTE: min_width of the chiclet_panel (chiclet_list) must be the same
 as for parent layout_panel (chiclet_list_panel) to resize bottom tray properly. EXT-991-->
-			<chiclet_panel
+      <chiclet_panel
              chiclet_padding="4"
              follows="left|right"
              height="24"
@@ -380,7 +416,7 @@ as for parent layout_panel (chiclet_list_panel) to resize bottom tray properly.
              name="chiclet_list"
              top="7"
              width="189">
-				<button
+        <button
                  auto_resize="true"
                  follows="right"
                  height="29"
@@ -397,7 +433,7 @@ as for parent layout_panel (chiclet_list_panel) to resize bottom tray properly.
                  top="-28"
                  visible="false"
                  width="7" />
-				<button
+        <button
                  auto_resize="true"
                  follows="right"
                  height="29"
@@ -414,13 +450,13 @@ as for parent layout_panel (chiclet_list_panel) to resize bottom tray properly.
                  top="-28"
                  visible="false"
                  width="7" />
-			</chiclet_panel>
-		</layout_panel>
-		<layout_panel auto_resize="false"
+      </chiclet_panel>
+    </layout_panel>
+    <layout_panel auto_resize="false"
                       user_resize="false"
                       width="4"
                       min_width="4"/>
-		<layout_panel
+    <layout_panel
          auto_resize="false"
          follows="right"
          height="28"
@@ -431,7 +467,7 @@ as for parent layout_panel (chiclet_list_panel) to resize bottom tray properly.
          top="0"
          user_resize="false"
          width="37">
-			<chiclet_im_well
+      <chiclet_im_well
              follows="right"
              height="28"
              layout="topleft"
@@ -440,7 +476,7 @@ as for parent layout_panel (chiclet_list_panel) to resize bottom tray properly.
              name="im_well"
              top="0"
              width="35">
-				<!--
+        <!--
 Emulate 4 states of button by background images, see details in EXT-3147. The same should be for notification_well button
 xml attribute           Description
 image_unselected        "Unlit" - there are no new messages
@@ -448,7 +484,7 @@ image_selected          "Unlit" + "Selected" - there are no new messages and the
 image_pressed           "Lit" - there are new messages
 image_pressed_selected  "Lit" + "Selected" - there are new messages and the Well is open
              -->
-				<button
+        <button
                  auto_resize="true"
                  follows="right"
                  halign="center"
@@ -463,13 +499,13 @@ image_pressed_selected  "Lit" + "Selected" - there are new messages and the Well
                  name="Unread IM messages"
                  tool_tip="Conversations"
                  width="34">
-					<init_callback
+          <init_callback
                      function="Button.SetDockableFloaterToggle"
                      parameter="im_well_window" />
-				</button>
-			</chiclet_im_well>
-		</layout_panel>
-		<layout_panel
+        </button>
+      </chiclet_im_well>
+    </layout_panel>
+    <layout_panel
          auto_resize="false"
          follows="right"
          height="28"
@@ -480,7 +516,7 @@ image_pressed_selected  "Lit" + "Selected" - there are new messages and the Well
          top="0"
          user_resize="false"
          width="37">
-			<chiclet_notification
+      <chiclet_notification
              follows="right"
              height="23"
              layout="topleft"
@@ -489,7 +525,7 @@ image_pressed_selected  "Lit" + "Selected" - there are new messages and the Well
              name="notification_well"
              top="5"
              width="35">
-				<button
+        <button
                  auto_resize="true"
                  bottom_pad="3"
                  follows="right"
@@ -505,7 +541,7 @@ image_pressed_selected  "Lit" + "Selected" - there are new messages and the Well
                  name="Unread"
                  tool_tip="Notifications"
                  width="34">
-					<init_callback
+          <init_callback
                      function="Button.SetDockableFloaterToggle"
                      parameter="notification_well_window" />
 				</button>
@@ -517,5 +553,5 @@ image_pressed_selected  "Lit" + "Selected" - there are new messages and the Well
 		   min_width="4"
 		   name="DUMMY2"
 		   width="8" />
-	</layout_stack>
+  </layout_stack>
 </panel>