diff --git a/indra/llcommon/llfasttimer.h b/indra/llcommon/llfasttimer.h
index 45b84ea3eaa5c353913b7bc3acfec5ddbe6bafce..f5c90291b801d3a87346a7c89f0024f9062bd4f2 100644
--- a/indra/llcommon/llfasttimer.h
+++ b/indra/llcommon/llfasttimer.h
@@ -36,6 +36,7 @@
 #include "llinstancetracker.h"
 
 #define FAST_TIMER_ON 1
+#define TIME_FAST_TIMERS 0
 
 #if LL_WINDOWS
 
@@ -56,7 +57,7 @@ inline U32 get_cpu_clock_count_32()
     return ret_val;
 }
 
-// return full timer value, still shifted by 8 bits
+// return full timer value, *not* shifted by 8 bits
 inline U64 get_cpu_clock_count_64()
 {
 	U64 ret_val;
@@ -69,7 +70,7 @@ inline U64 get_cpu_clock_count_64()
 		mov dword ptr [ret_val+4], edx
 		mov dword ptr [ret_val], eax
 	}
-    return ret_val >> 8;
+    return ret_val;
 }
 
 #endif // LL_WINDOWS
@@ -242,6 +243,9 @@ class LL_COMMON_API LLFastTimer
 	LLFastTimer(NamedTimer::FrameState& timer)
 	:	mFrameState(&timer)
 	{
+#if TIME_FAST_TIMERS
+		U64 timer_start = get_cpu_clock_count_64();
+#endif
 #if FAST_TIMER_ON
 		NamedTimer::FrameState* frame_state = &timer;
 		U32 cur_time = get_cpu_clock_count_32();
@@ -255,11 +259,18 @@ class LL_COMMON_API LLFastTimer
 	
 		mLastTimer = sCurTimer;
 		sCurTimer = this;
+#endif
+#if TIME_FAST_TIMERS
+		U64 timer_end = get_cpu_clock_count_64();
+		sTimerCycles += timer_end - timer_start;
 #endif
 	}
 
 	~LLFastTimer()
 	{
+#if TIME_FAST_TIMERS
+		U64 timer_start = get_cpu_clock_count_64();
+#endif
 #if FAST_TIMER_ON
 		NamedTimer::FrameState* frame_state = mFrameState;
 		U32 cur_time = get_cpu_clock_count_32();
@@ -276,6 +287,11 @@ class LL_COMMON_API LLFastTimer
 		U32 total_time = cur_time - mStartTotalTime;
 		last_timer->mStartSelfTime += total_time;
 #endif
+#if TIME_FAST_TIMERS
+		U64 timer_end = get_cpu_clock_count_64();
+		sTimerCycles += timer_end - timer_start;
+		sTimerCalls++;
+#endif	
 	}
 
 
@@ -297,11 +313,12 @@ class LL_COMMON_API LLFastTimer
 	static const NamedTimer* getTimerByName(const std::string& name);
 
 public:
-	static bool 		sPauseHistory;
-	static bool 		sResetHistory;
+	static bool 			sPauseHistory;
+	static bool 			sResetHistory;
+	static U64				sTimerCycles;
+	static U32				sTimerCalls;
 	
 private:
-	typedef std::vector<LLFastTimer*> timer_stack_t;
 	static LLFastTimer*		sCurTimer;
 	static S32				sCurFrameIndex;
 	static S32				sLastFrameIndex;
diff --git a/indra/llui/llfloater.cpp b/indra/llui/llfloater.cpp
index f7fd2dbdfee233bbfc51ce1a439daffbc6bf441e..d7a692ec9badf7eced4ee6dd39d3dad8b8d71566 100644
--- a/indra/llui/llfloater.cpp
+++ b/indra/llui/llfloater.cpp
@@ -2717,7 +2717,7 @@ bool LLFloater::initFloaterXML(LLXMLNodePtr node, LLView *parent, LLXMLNodePtr o
 	}
 
 	params.from_xui = true;
-	setupParams(params, parent);
+	applyXUILayout(params, parent);
  	initFromParams(params);
 	
 	initFloater(params);
diff --git a/indra/llui/lllayoutstack.cpp b/indra/llui/lllayoutstack.cpp
index 5e15fa3919ae4c5d0c866cf7de6f467b14ed2f4b..7d8c10275021df6e680fa8a6b510d6690e2c3a2f 100644
--- a/indra/llui/lllayoutstack.cpp
+++ b/indra/llui/lllayoutstack.cpp
@@ -247,7 +247,7 @@ LLView* LLLayoutStack::fromXML(LLXMLNodePtr node, LLView *parent, LLXMLNodePtr o
 	}
 
 	p.from_xui = true;
-	setupParams(p, parent);
+	applyXUILayout(p, parent);
 	LLLayoutStack* layout_stackp = LLUICtrlFactory::create<LLLayoutStack>(p);
 
 	if (parent && layout_stackp)
diff --git a/indra/llui/llmultislider.cpp b/indra/llui/llmultislider.cpp
index 1891bca36cb5be97592a1649f59261bd6ef2b892..aea7c5f87c3017fc8fb99066d848210cd1b0634c 100644
--- a/indra/llui/llmultislider.cpp
+++ b/indra/llui/llmultislider.cpp
@@ -50,6 +50,12 @@ const F32 FLOAT_THRESHOLD = 0.00001f;
 
 S32 LLMultiSlider::mNameCounter = 0;
 
+LLMultiSlider::SliderParams::SliderParams()
+:	name("name"),
+	value("value", 0.f)
+{
+}
+
 LLMultiSlider::Params::Params()
 :	max_sliders("max_sliders", 1),
 	allow_overlap("allow_overlap", false),
@@ -63,7 +69,8 @@ LLMultiSlider::Params::Params()
 	triangle_color("triangle_color"),
 	mouse_down_callback("mouse_down_callback"),
 	mouse_up_callback("mouse_up_callback"),
-	thumb_width("thumb_width")
+	thumb_width("thumb_width"),
+	sliders("slider")
 {
 	name = "multi_slider_bar";
 	mouse_opaque(true);
@@ -99,6 +106,20 @@ LLMultiSlider::LLMultiSlider(const LLMultiSlider::Params& p)
 	{
 		setMouseUpCallback(initCommitCallback(p.mouse_up_callback));
 	}
+
+	for (LLInitParam::ParamIterator<SliderParams>::const_iterator it = p.sliders().begin();
+		it != p.sliders().end();
+		++it)
+	{
+		if (it->name.isProvided())
+		{
+			addSlider(it->value, it->name);
+		}
+		else
+		{
+			addSlider(it->value);
+		}
+	}
 }
 
 LLMultiSlider::~LLMultiSlider()
@@ -230,6 +251,30 @@ const std::string& LLMultiSlider::addSlider(F32 val)
 	return mCurSlider;
 }
 
+void LLMultiSlider::addSlider(F32 val, const std::string& name)
+{
+	F32 initVal = val;
+
+	if(mValue.size() >= mMaxNumSliders) {
+		return;
+	}
+
+	bool foundOne = findUnusedValue(initVal);
+	if(!foundOne) {
+		return;
+	}
+
+	// add a new thumb rect
+	mThumbRects[name] = LLRect( 0, getRect().getHeight(), mThumbWidth, 0 );
+
+	// add the value and set the current slider to this one
+	mValue.insert(name, initVal);
+	mCurSlider = name;
+
+	// move the slider
+	setSliderValue(mCurSlider, initVal, TRUE);
+}
+
 bool LLMultiSlider::findUnusedValue(F32& initVal)
 {
 	bool firstTry = true;
@@ -572,7 +617,6 @@ void LLMultiSlider::draw()
 
 	LLF32UICtrl::draw();
 }
-
 boost::signals2::connection LLMultiSlider::setMouseDownCallback( const commit_signal_t::slot_type& cb ) 
 { 
 	if (!mMouseDownSignal) mMouseDownSignal = new commit_signal_t();
diff --git a/indra/llui/llmultislider.h b/indra/llui/llmultislider.h
index f8e43a0470aa4a1d87b83f19a664c0bdb0977dcf..88576da85b1fb649cb28a42c16261684d322b79f 100644
--- a/indra/llui/llmultislider.h
+++ b/indra/llui/llmultislider.h
@@ -41,6 +41,13 @@ class LLUICtrlFactory;
 class LLMultiSlider : public LLF32UICtrl
 {
 public:
+	struct SliderParams : public LLInitParam::Block<SliderParams>
+	{
+		Optional<std::string>	name;
+		Mandatory<F32>			value;
+		SliderParams();
+	};
+
 	struct Params : public LLInitParam::Block<Params, LLF32UICtrl::Params>
 	{
 		Optional<S32>	max_sliders;
@@ -60,6 +67,7 @@ class LLMultiSlider : public LLF32UICtrl
 										mouse_up_callback;
 		Optional<S32>		thumb_width;
 
+		Multiple<SliderParams>	sliders;
 		Params();
 	};
 
@@ -68,13 +76,13 @@ class LLMultiSlider : public LLF32UICtrl
 	friend class LLUICtrlFactory;
 public:
 	virtual ~LLMultiSlider();
-	void			setSliderValue(const std::string& name, F32 value, BOOL from_event = FALSE);
-	F32				getSliderValue(const std::string& name) const;
+	void				setSliderValue(const std::string& name, F32 value, BOOL from_event = FALSE);
+	F32					getSliderValue(const std::string& name) const;
 
-	const std::string& getCurSlider() const					{ return mCurSlider; }
-	F32				getCurSliderValue() const				{ return getSliderValue(mCurSlider); }
-	void			setCurSlider(const std::string& name);
-	void			setCurSliderValue(F32 val, BOOL from_event = false) { setSliderValue(mCurSlider, val, from_event); }
+	const std::string&	getCurSlider() const					{ return mCurSlider; }
+	F32					getCurSliderValue() const				{ return getSliderValue(mCurSlider); }
+	void				setCurSlider(const std::string& name);
+	void				setCurSliderValue(F32 val, BOOL from_event = false) { setSliderValue(mCurSlider, val, from_event); }
 
 	/*virtual*/ void	setValue(const LLSD& value);
 	/*virtual*/ LLSD	getValue() const		{ return mValue; }
@@ -82,12 +90,13 @@ class LLMultiSlider : public LLF32UICtrl
 	boost::signals2::connection setMouseDownCallback( const commit_signal_t::slot_type& cb );
 	boost::signals2::connection setMouseUpCallback(	const commit_signal_t::slot_type& cb );
 
-	bool			findUnusedValue(F32& initVal);
+	bool				findUnusedValue(F32& initVal);
 	const std::string&	addSlider();
 	const std::string&	addSlider(F32 val);
-	void			deleteSlider(const std::string& name);
-	void			deleteCurSlider()			{ deleteSlider(mCurSlider); }
-	void			clear();
+	void				addSlider(F32 val, const std::string& name);
+	void				deleteSlider(const std::string& name);
+	void				deleteCurSlider()			{ deleteSlider(mCurSlider); }
+	void				clear();
 
 	/*virtual*/ BOOL	handleHover(S32 x, S32 y, MASK mask);
 	/*virtual*/ BOOL	handleMouseUp(S32 x, S32 y, MASK mask);
@@ -109,7 +118,8 @@ class LLMultiSlider : public LLF32UICtrl
 	LLRect			mDragStartThumbRect;
 	S32				mThumbWidth;
 
-	std::map<std::string, LLRect>	mThumbRects;
+	std::map<std::string, LLRect>	
+					mThumbRects;
 	LLUIColor		mTrackColor;
 	LLUIColor		mThumbOutlineColor;
 	LLUIColor		mThumbCenterColor;
diff --git a/indra/llui/llmultisliderctrl.cpp b/indra/llui/llmultisliderctrl.cpp
index 7323323d8caff10eff125b445011079d7334908a..f4434a0f7805501b4b0d63d6639e74da2f9fd2b5 100644
--- a/indra/llui/llmultisliderctrl.cpp
+++ b/indra/llui/llmultisliderctrl.cpp
@@ -65,7 +65,8 @@ LLMultiSliderCtrl::Params::Params()
 	text_color("text_color"),
 	text_disabled_color("text_disabled_color"),
 	mouse_down_callback("mouse_down_callback"),
-	mouse_up_callback("mouse_up_callback")
+	mouse_up_callback("mouse_up_callback"),
+	sliders("slider")
 {
 	mouse_opaque = true;
 }
@@ -161,6 +162,7 @@ LLMultiSliderCtrl::LLMultiSliderCtrl(const LLMultiSliderCtrl::Params& p)
 	S32 slider_left = label_width ? label_width + multi_sliderctrl_spacing : 0;
 	LLRect slider_rect( slider_left, top, slider_right, bottom );
 	LLMultiSlider::Params params;
+	params.sliders = p.sliders;
 	params.rect(slider_rect);
 	params.commit_callback.function( LLMultiSliderCtrl::onSliderCommit );
 	params.mouse_down_callback( p.mouse_down_callback );
diff --git a/indra/llui/llmultisliderctrl.h b/indra/llui/llmultisliderctrl.h
index 16d07541f2f632e626b1fc61d4c2ce3429d3f73a..e8366d09c27a3bb90ad8982537efca985a9bdf51 100644
--- a/indra/llui/llmultisliderctrl.h
+++ b/indra/llui/llmultisliderctrl.h
@@ -69,6 +69,8 @@ class LLMultiSliderCtrl : public LLF32UICtrl
 		Optional<CommitCallbackParam>	mouse_down_callback,
 										mouse_up_callback;
 
+		Multiple<LLMultiSlider::SliderParams>	sliders;
+
 		Params();
 	};
 
diff --git a/indra/llui/llpanel.cpp b/indra/llui/llpanel.cpp
index 738a96f7305206ffadab451e873e104ec9879088..db3288243828de36db4ab1582df7c34b63c511f0 100644
--- a/indra/llui/llpanel.cpp
+++ b/indra/llui/llpanel.cpp
@@ -452,7 +452,7 @@ void LLPanel::initFromParams(const LLPanel::Params& p)
 	parseFollowsFlags(p);
 
 	setToolTip(p.tool_tip());
-	setSaveToXML(p.from_xui);
+	setFromXUI(p.from_xui);
 	
 	mHoverCursor = getCursorFromString(p.hover_cursor);
 	
@@ -542,7 +542,7 @@ BOOL LLPanel::initPanelXML(LLXMLNodePtr node, LLView *parent, LLXMLNodePtr outpu
 		}
 		
 		params.from_xui = true;
-		setupParams(params, parent);
+		applyXUILayout(params, parent);
 		{
 			LLFastTimer timer(FTM_PANEL_CONSTRUCTION);
 			initFromParams(params);
diff --git a/indra/llui/llradiogroup.cpp b/indra/llui/llradiogroup.cpp
index 997b9c13f8523038cea6670a413a690472afa02e..4087b484aaa657a64fba9f503899294ef9928455 100644
--- a/indra/llui/llradiogroup.cpp
+++ b/indra/llui/llradiogroup.cpp
@@ -116,6 +116,10 @@ void LLRadioGroup::initFromParams(const Params& p)
 		item_params.font.setIfNotProvided(mFont); // apply radio group font by default
 		item_params.commit_callback.function = boost::bind(&LLRadioGroup::onClickButton, this, _1);
 		item_params.from_xui = p.from_xui;
+		if (p.from_xui)
+		{
+			applyXUILayout(item_params, this);
+		}
 
 		LLRadioCtrl* item = LLUICtrlFactory::create<LLRadioCtrl>(item_params, this);
 		mRadioButtons.push_back(item);
diff --git a/indra/llui/llscrolllistcell.cpp b/indra/llui/llscrolllistcell.cpp
index 544352176abcbe61cf704ce30c687508538f234a..7238d903a30cf6062ccad4853890f335bbc3f5a2 100644
--- a/indra/llui/llscrolllistcell.cpp
+++ b/indra/llui/llscrolllistcell.cpp
@@ -353,7 +353,7 @@ LLScrollListCheck::LLScrollListCheck(const LLScrollListCell::Params& p)
 {
 	LLCheckBoxCtrl::Params checkbox_p;
 	checkbox_p.name("checkbox");
-	checkbox_p.rect.left(0).bottom(0).width(p.width).height(p.width);
+	checkbox_p.rect = LLRect(0, p.width, p.width, 0);
 	checkbox_p.enabled(p.enabled);
 	checkbox_p.initial_value(p.value());
 
diff --git a/indra/llui/llspinctrl.cpp b/indra/llui/llspinctrl.cpp
index d6d46654d57003bff84c31b680d2ee45b153dcb9..20a1ab7af3a4536c2cc6dc1cb589f289a6d922a5 100644
--- a/indra/llui/llspinctrl.cpp
+++ b/indra/llui/llspinctrl.cpp
@@ -75,10 +75,8 @@ LLSpinCtrl::LLSpinCtrl(const LLSpinCtrl::Params& p)
 	static LLUICachedControl<S32> spinctrl_spacing ("UISpinctrlSpacing", 0);
 	static LLUICachedControl<S32> spinctrl_btn_width ("UISpinctrlBtnWidth", 0);
 	static LLUICachedControl<S32> spinctrl_btn_height ("UISpinctrlBtnHeight", 0);
-	S32 top = getRect().getHeight();
-	S32 bottom = top - 2 * spinctrl_btn_height;
-	S32 centered_top = top;
-	S32 centered_bottom = bottom;
+	S32 centered_top = getRect().getHeight();
+	S32 centered_bottom = getRect().getHeight() - 2 * spinctrl_btn_height;
 	S32 btn_left = 0;
 	// reserve space for spinner
 	S32 label_width = llclamp(p.label_width(), 0, llmax(0, getRect().getWidth() - 40));
@@ -105,25 +103,15 @@ LLSpinCtrl::LLSpinCtrl(const LLSpinCtrl::Params& p)
 	
 	// Spin buttons
 	LLButton::Params up_button_params(p.up_button);
-	up_button_params.rect
-					.left(btn_left)
-					.top(top)
-					.right(btn_right)
-					.height(spinctrl_btn_height);
+	up_button_params.rect = LLRect(btn_left, getRect().getHeight(), btn_right, getRect().getHeight() - spinctrl_btn_height);
 	up_button_params.click_callback.function(boost::bind(&LLSpinCtrl::onUpBtn, this, _2));
 	up_button_params.mouse_held_callback.function(boost::bind(&LLSpinCtrl::onUpBtn, this, _2));
 
 	mUpBtn = LLUICtrlFactory::create<LLButton>(up_button_params);
 	addChild(mUpBtn);
 
-	LLRect down_rect( btn_left, top - spinctrl_btn_height, btn_right, bottom );
-
 	LLButton::Params down_button_params(p.down_button);
-	down_button_params.rect
-					.left(btn_left)
-					.right(btn_right)
-					.bottom(bottom)
-					.height(spinctrl_btn_height);
+	down_button_params.rect = LLRect(btn_left, getRect().getHeight() - spinctrl_btn_height, btn_right, getRect().getHeight() - 2 * spinctrl_btn_height);
 	down_button_params.click_callback.function(boost::bind(&LLSpinCtrl::onDownBtn, this, _2));
 	down_button_params.mouse_held_callback.function(boost::bind(&LLSpinCtrl::onDownBtn, this, _2));
 	mDownBtn = LLUICtrlFactory::create<LLButton>(down_button_params);
diff --git a/indra/llui/lltabcontainer.cpp b/indra/llui/lltabcontainer.cpp
index 83e2e3db50d82fa80eb39bff5d544f1d9b1483ab..327dd01612b18c3cf20f87faa2249d84da61434a 100644
--- a/indra/llui/lltabcontainer.cpp
+++ b/indra/llui/lltabcontainer.cpp
@@ -266,8 +266,6 @@ bool LLTabContainer::addChild(LLView* view, S32 tab_group)
 
 	if (panelp)
 	{
-		panelp->setSaveToXML(TRUE);
-
 		addTabPanel(TabPanelParams().panel(panelp).label(panelp->getLabel()).is_placeholder(dynamic_cast<LLPlaceHolderPanel*>(view) != NULL));
 		return true;
 	}
@@ -1019,12 +1017,10 @@ void LLTabContainer::addTabPanel(const TabPanelParams& panel)
 	{
 		if (textbox)
 		{
-			textbox->setSaveToXML(false);
 			addChild( textbox, 0 );
 		}
 		if (btn)
 		{
-			btn->setSaveToXML(false);
 			addChild( btn, 0 );
 		}
 	}
@@ -1747,24 +1743,20 @@ void LLTabContainer::initButtons()
 		}
 	}
 
-	mPrevArrowBtn->setSaveToXML(false);
 	mPrevArrowBtn->setTabStop(FALSE);
 	addChild(mPrevArrowBtn);
 
-	mNextArrowBtn->setSaveToXML(false);
 	mNextArrowBtn->setTabStop(FALSE);
 	addChild(mNextArrowBtn);
 
 	if (mJumpPrevArrowBtn)
 	{
-		mJumpPrevArrowBtn->setSaveToXML(false);
 		mJumpPrevArrowBtn->setTabStop(FALSE);
 		addChild(mJumpPrevArrowBtn);
 	}
 
 	if (mJumpNextArrowBtn)
 	{
-		mJumpNextArrowBtn->setSaveToXML(false);
 		mJumpNextArrowBtn->setTabStop(FALSE);
 		addChild(mJumpNextArrowBtn);
 	}
diff --git a/indra/llui/lltextbase.cpp b/indra/llui/lltextbase.cpp
index cb0907a771b9aad466230f7b6b08bbc33fb6b7f5..e54032ac5e52c88457bf18f948bd64bba2c77cae 100644
--- a/indra/llui/lltextbase.cpp
+++ b/indra/llui/lltextbase.cpp
@@ -962,7 +962,10 @@ void LLTextBase::draw()
 	reflow();
 
 	// then update scroll position, as cursor may have moved
-	updateScrollFromCursor();
+	if (!mReadOnly)
+	{
+		updateScrollFromCursor();
+	}
 
 	LLRect doc_rect;
 	if (mScroller)
@@ -1932,11 +1935,19 @@ void LLTextBase::endOfLine()
 void LLTextBase::startOfDoc()
 {
 	setCursorPos(0);
+	if (mScroller)
+	{
+		mScroller->goToTop();
+	}
 }
 
 void LLTextBase::endOfDoc()
 {
 	setCursorPos(getLength());
+	if (mScroller)
+	{
+		mScroller->goToBottom();
+	}
 }
 
 void LLTextBase::changePage( S32 delta )
@@ -2001,6 +2012,16 @@ void LLTextBase::changeLine( S32 delta )
 	setCursorPos(new_cursor_pos, true);
 }
 
+bool LLTextBase::scrolledToStart()
+{
+	return mScroller->isAtTop();
+}
+
+bool LLTextBase::scrolledToEnd()
+{
+	return mScroller->isAtBottom();
+}
+
 
 bool LLTextBase::setCursor(S32 row, S32 column)
 {
diff --git a/indra/llui/lltextbase.h b/indra/llui/lltextbase.h
index a1f8ba39ae7ea5bff7c2e66e8b3f375ef23b6a5f..c91578b63772ca752f4b1036897f1ed9c6841755 100644
--- a/indra/llui/lltextbase.h
+++ b/indra/llui/lltextbase.h
@@ -180,6 +180,8 @@ class LLTextBase
 	void					changePage( S32 delta );
 	void					changeLine( S32 delta );
 
+	bool					scrolledToStart();
+	bool					scrolledToEnd();
 
 	const LLFontGL*			getDefaultFont() const					{ return mDefaultFont; }
 
diff --git a/indra/llui/llui.cpp b/indra/llui/llui.cpp
index 1ea6b66a93cba23efb6fc9912f2f16d292927136..d0ed3b6fcae6d5bd9ef8a1a0a2bc978b660c1196 100644
--- a/indra/llui/llui.cpp
+++ b/indra/llui/llui.cpp
@@ -1915,6 +1915,7 @@ namespace LLInitParam
 		green = color.mV[VGREEN];
 		blue = color.mV[VBLUE];
 		alpha = color.mV[VALPHA];
+		control.set("", false);
 	}
 
 	void TypeValues<LLUIColor>::declareValues()
@@ -2046,12 +2047,16 @@ namespace LLInitParam
 	
 	void TypedParam<LLRect>::setBlockFromValue()
 	{
-		left = mData.mValue.mLeft;
-		right = mData.mValue.mRight;
-		bottom = mData.mValue.mBottom;
-		top = mData.mValue.mTop;
-		width.setProvided(false);
-		height.setProvided(false);
+		// because of the ambiguity in specifying a rect by position and/or dimensions
+		// we clear the "provided" flag so that values from xui/etc have priority
+		// over those calculated from the rect object
+
+		left.set(mData.mValue.mLeft, false);
+		right.set(mData.mValue.mRight, false);
+		bottom.set(mData.mValue.mBottom, false);
+		top.set(mData.mValue.mTop, false);
+		width.set(mData.mValue.getWidth(), false);
+		height.set(mData.mValue.getHeight(), false);
 	}
 
 	TypedParam<LLCoordGL>::TypedParam(BlockDescriptor& descriptor, const char* name, LLCoordGL value, ParamDescriptor::validation_func_t func, S32 min_count, S32 max_count)
diff --git a/indra/llui/lluictrlfactory.h b/indra/llui/lluictrlfactory.h
index 6788f29ba93352eb92d1158f135a563cb1c57835..b1fa6add67bfbc708b81714ac2b66a4e8422676f 100644
--- a/indra/llui/lluictrlfactory.h
+++ b/indra/llui/lluictrlfactory.h
@@ -184,8 +184,6 @@ class LLUICtrlFactory : public LLSingleton<LLUICtrlFactory>
 	{
 		T* widget = NULL;
 
-		T::setupParams(params, parent);
-
 		if (!params.validateBlock())
 		{
 			llwarns << getInstance()->getCurFileName() << ": Invalid parameter block for " << typeid(T).name() << llendl;
@@ -310,6 +308,7 @@ class LLUICtrlFactory : public LLSingleton<LLUICtrlFactory>
 
 		// Apply layout transformations, usually munging rect
 		params.from_xui = true;
+		T::applyXUILayout(params, parent);
 		T* widget = createWidget<T>(params, parent);
 
 		typedef typename T::child_registry_t registry_t;
diff --git a/indra/llui/lluiimage.cpp b/indra/llui/lluiimage.cpp
index 1dfc281d93e66190c20c43e54dbc27e0039ba2ad..966d919dc764d82b0415369b3f2f4eb30fe7d192 100644
--- a/indra/llui/lluiimage.cpp
+++ b/indra/llui/lluiimage.cpp
@@ -168,6 +168,7 @@ namespace LLInitParam
 		if (name() == "none")
 		{
 			mData.mValue = NULL;
+			return;
 		}
 
 		LLUIImage* imagep =  LLUI::getUIImage(name());
diff --git a/indra/llui/llview.cpp b/indra/llui/llview.cpp
index a8d8626e49e6bca06870253b8dc2e26eafa70e4f..f1b08c380b5ff79f9c2907ffea1162f193e820e9 100644
--- a/indra/llui/llview.cpp
+++ b/indra/llui/llview.cpp
@@ -126,7 +126,7 @@ LLView::LLView(const LLView::Params& p)
 :	mName(p.name),
 	mParentView(NULL),
 	mReshapeFlags(FOLLOWS_NONE),
-	mSaveToXML(p.from_xui),
+	mFromXUI(p.from_xui),
 	mIsFocusRoot(FALSE),
 	mLastVisible(FALSE),
 	mNextInsertionOrdinal(0),
@@ -2479,7 +2479,7 @@ static bool get_last_child_rect(LLView* parent, LLRect *rect)
 	for (;itor != parent->getChildList()->end(); ++itor)
 	{
 		LLView *last_view = (*itor);
-		if (last_view->getSaveToXML())
+		if (last_view->getFromXUI())
 		{
 			*rect = last_view->getRect();
 			return true;
@@ -2489,7 +2489,7 @@ static bool get_last_child_rect(LLView* parent, LLRect *rect)
 }
 
 //static
-void LLView::setupParams(LLView::Params& p, LLView* parent)
+void LLView::applyXUILayout(LLView::Params& p, LLView* parent)
 {
 	const S32 VPAD = 4;
 	const S32 MIN_WIDGET_HEIGHT = 10;
@@ -2509,7 +2509,7 @@ void LLView::setupParams(LLView::Params& p, LLView* parent)
 		LLRect last_rect = parent->getLocalRect();
 
 		bool layout_topleft = (p.layout() == "topleft");
-		if (layout_topleft && p.from_xui)
+		if (layout_topleft)
 		{
 			//invert top to bottom
 			if (p.rect.top.isProvided()) p.rect.top = parent_rect.getHeight() - p.rect.top;
@@ -2535,10 +2535,10 @@ void LLView::setupParams(LLView::Params& p, LLView* parent)
 				p.rect.right.setProvided(false); // recalculate the right
 			}
 		}
-		else if (p.from_xui) // only do negative coordinate magic for XUI
+		else
 		{
-			if (p.rect.left < 0) p.rect.left = p.rect.left + parent_rect.getWidth();
-			if (p.rect.right < 0) p.rect.right = p.rect.right + parent_rect.getWidth();
+			if (p.rect.left.isProvided() && p.rect.left < 0) p.rect.left = p.rect.left + parent_rect.getWidth();
+			if (p.rect.right.isProvided() && p.rect.right < 0) p.rect.right = p.rect.right + parent_rect.getWidth();
 		}
 		if (p.center_vert)
 		{
@@ -2556,15 +2556,15 @@ void LLView::setupParams(LLView::Params& p, LLView* parent)
 				p.rect.top.setProvided(false); // recalculate the top
 			}
 		}
-		else if (p.from_xui)
+		else
 		{
-			if (p.rect.bottom < 0) p.rect.bottom = p.rect.bottom + parent_rect.getHeight();
-			if (p.rect.top < 0) p.rect.top = p.rect.top + parent_rect.getHeight();
+			if (p.rect.bottom.isProvided() && p.rect.bottom < 0) p.rect.bottom = p.rect.bottom + parent_rect.getHeight();
+			if (p.rect.top.isProvided() && p.rect.top < 0) p.rect.top = p.rect.top + parent_rect.getHeight();
 		}
 
 
 		// DEPRECATE: automatically fall back to height of MIN_WIDGET_HEIGHT pixels
-		if (!p.rect.height.isProvided() && !p.rect.top.isProvided())
+		if (!p.rect.height.isProvided() && !p.rect.top.isProvided() && p.rect.height == 0)
 		{
 			p.rect.height = MIN_WIDGET_HEIGHT;
 		}
@@ -2663,7 +2663,7 @@ static void convert_to_relative_layout(LLView::Params& p, LLView* parent)
 	// Use setupParams to get the final widget rectangle
 	// according to our wacky layout rules.
 	LLView::Params final = p;
-	LLView::setupParams(final, parent);
+	LLView::applyXUILayout(final, parent);
 	// Must actually extract the rectangle to get consistent
 	// right = left+width, top = bottom+height
 	LLRect final_rect = final.rect;
diff --git a/indra/llui/llview.h b/indra/llui/llview.h
index f8460f536168daa5fccad9a05ba47f4171072e0b..c4d731374313907a79bc72560cb6680c1e0aa67d 100644
--- a/indra/llui/llview.h
+++ b/indra/llui/llview.h
@@ -395,8 +395,8 @@ class LLView : public LLMouseHandler, public LLMortician, public LLFocusableElem
 	void parseFollowsFlags(const LLView::Params& params);
 
 	// Some widgets, like close box buttons, don't need to be saved
-	BOOL getSaveToXML() const { return mSaveToXML; }
-	void setSaveToXML(BOOL b) { mSaveToXML = b; }
+	BOOL getFromXUI() const { return mFromXUI; }
+	void setFromXUI(BOOL b) { mFromXUI = b; }
 
 	typedef enum e_hit_test_type
 	{
@@ -498,7 +498,7 @@ class LLView : public LLMouseHandler, public LLMortician, public LLFocusableElem
 
 	// Set up params after XML load before calling new(),
 	// usually to adjust layout.
-	static void setupParams(Params& p, LLView* parent);
+	static void applyXUILayout(Params& p, LLView* parent);
 
 	// For re-export of floaters and panels, convert the coordinate system
 	// to be top-left based.
@@ -573,7 +573,7 @@ class LLView : public LLMouseHandler, public LLMortician, public LLFocusableElem
 	LLUIString	mToolTipMsg;	// isNull() is true if none.
 
 	U8          mSoundFlags;
-	BOOL		mSaveToXML;
+	BOOL		mFromXUI;
 
 	BOOL		mIsFocusRoot;
 	BOOL		mUseBoundingRect; // hit test against bounding rectangle that includes all child elements
diff --git a/indra/newview/llavataractions.cpp b/indra/newview/llavataractions.cpp
index c5a1ffdcb3931a0f5f83ee71b5e6722f853b2826..651c66d0a756a8822cb1cf82cc6010149d6b33a7 100644
--- a/indra/newview/llavataractions.cpp
+++ b/indra/newview/llavataractions.cpp
@@ -333,6 +333,54 @@ void LLAvatarActions::pay(const LLUUID& id)
 	}
 }
 
+// static
+void LLAvatarActions::kick(const LLUUID& id)
+{
+	LLSD payload;
+	payload["avatar_id"] = id;
+	LLNotifications::instance().add("KickUser", LLSD(), payload, handleKick);
+}
+
+// static
+void LLAvatarActions::freeze(const LLUUID& id)
+{
+	LLSD payload;
+	payload["avatar_id"] = id;
+	LLNotifications::instance().add("FreezeUser", LLSD(), payload, handleFreeze);
+}
+
+// static
+void LLAvatarActions::unfreeze(const LLUUID& id)
+{
+	LLSD payload;
+	payload["avatar_id"] = id;
+	LLNotifications::instance().add("UnFreezeUser", LLSD(), payload, handleUnfreeze);
+}
+
+//static 
+void LLAvatarActions::csr(const LLUUID& id, std::string name)
+{
+	if (name.empty()) return;
+	
+	std::string url = "http://csr.lindenlab.com/agent/";
+	
+	// slow and stupid, but it's late
+	S32 len = name.length();
+	for (S32 i = 0; i < len; i++)
+	{
+		if (name[i] == ' ')
+		{
+			url += "%20";
+		}
+		else
+		{
+			url += name[i];
+		}
+	}
+	
+	LLWeb::loadURL(url);
+}
+
 //static 
 void LLAvatarActions::share(const LLUUID& id)
 {
@@ -456,6 +504,67 @@ bool LLAvatarActions::callbackAddFriendWithMessage(const LLSD& notification, con
 	return false;
 }
 
+// static
+bool LLAvatarActions::handleKick(const LLSD& notification, const LLSD& response)
+{
+	S32 option = LLNotification::getSelectedOption(notification, response);
+
+	if (option == 0)
+	{
+		LLUUID avatar_id = notification["payload"]["avatar_id"].asUUID();
+		LLMessageSystem* msg = gMessageSystem;
+
+		msg->newMessageFast(_PREHASH_GodKickUser);
+		msg->nextBlockFast(_PREHASH_UserInfo);
+		msg->addUUIDFast(_PREHASH_GodID,		gAgent.getID() );
+		msg->addUUIDFast(_PREHASH_GodSessionID, gAgent.getSessionID());
+		msg->addUUIDFast(_PREHASH_AgentID,   avatar_id );
+		msg->addU32("KickFlags", KICK_FLAGS_DEFAULT );
+		msg->addStringFast(_PREHASH_Reason,    response["message"].asString() );
+		gAgent.sendReliableMessage();
+	}
+	return false;
+}
+bool LLAvatarActions::handleFreeze(const LLSD& notification, const LLSD& response)
+{
+	S32 option = LLNotification::getSelectedOption(notification, response);
+
+	if (option == 0)
+	{
+		LLUUID avatar_id = notification["payload"]["avatar_id"].asUUID();
+		LLMessageSystem* msg = gMessageSystem;
+
+		msg->newMessageFast(_PREHASH_GodKickUser);
+		msg->nextBlockFast(_PREHASH_UserInfo);
+		msg->addUUIDFast(_PREHASH_GodID,		gAgent.getID() );
+		msg->addUUIDFast(_PREHASH_GodSessionID, gAgent.getSessionID());
+		msg->addUUIDFast(_PREHASH_AgentID,   avatar_id );
+		msg->addU32("KickFlags", KICK_FLAGS_FREEZE );
+		msg->addStringFast(_PREHASH_Reason, response["message"].asString() );
+		gAgent.sendReliableMessage();
+	}
+	return false;
+}
+bool LLAvatarActions::handleUnfreeze(const LLSD& notification, const LLSD& response)
+{
+	S32 option = LLNotification::getSelectedOption(notification, response);
+	std::string text = response["message"].asString();
+	if (option == 0)
+	{
+		LLUUID avatar_id = notification["payload"]["avatar_id"].asUUID();
+		LLMessageSystem* msg = gMessageSystem;
+
+		msg->newMessageFast(_PREHASH_GodKickUser);
+		msg->nextBlockFast(_PREHASH_UserInfo);
+		msg->addUUIDFast(_PREHASH_GodID,		gAgent.getID() );
+		msg->addUUIDFast(_PREHASH_GodSessionID, gAgent.getSessionID());
+		msg->addUUIDFast(_PREHASH_AgentID,   avatar_id );
+		msg->addU32("KickFlags", KICK_FLAGS_UNFREEZE );
+		msg->addStringFast(_PREHASH_Reason,    text );
+		gAgent.sendReliableMessage();
+	}
+	return false;
+}
 // static
 bool LLAvatarActions::callbackAddFriend(const LLSD& notification, const LLSD& response)
 {
diff --git a/indra/newview/llavataractions.h b/indra/newview/llavataractions.h
index 01c18d42285e5b8b6decfea1b4d6b144cd13bc60..a4504ae679b946b513670d19731b7c9e35e0c88c 100644
--- a/indra/newview/llavataractions.h
+++ b/indra/newview/llavataractions.h
@@ -138,11 +138,35 @@ class LLAvatarActions
 	 */	
 	static void inviteToGroup(const LLUUID& id);
 	
+	/**
+	 * Kick avatar off grid
+	 */	
+	static void kick(const LLUUID& id);
+
+	/**
+	 * Freeze avatar
+	 */	
+	static void freeze(const LLUUID& id);
+
+	/**
+	 * Unfreeze avatar
+	 */	
+	static void unfreeze(const LLUUID& id);
+
+	/**
+	 * Open csr page for avatar
+	 */	
+	static void csr(const LLUUID& id, std::string name);
+
+	
 private:
 	static bool callbackAddFriend(const LLSD& notification, const LLSD& response);
 	static bool callbackAddFriendWithMessage(const LLSD& notification, const LLSD& response);
 	static bool handleRemove(const LLSD& notification, const LLSD& response);
 	static bool handlePay(const LLSD& notification, const LLSD& response, LLUUID avatar_id);
+	static bool handleKick(const LLSD& notification, const LLSD& response);
+	static bool handleFreeze(const LLSD& notification, const LLSD& response);
+	static bool handleUnfreeze(const LLSD& notification, const LLSD& response);
 	static void callback_invite_to_group(LLUUID group_id, LLUUID id);
 
 	// Just request friendship, no dialog.
diff --git a/indra/newview/llchathistory.cpp b/indra/newview/llchathistory.cpp
index 7a83299daced7c30de80718100ea16a8d9104880..b1ddddc4b1dab42f8bd2981a73eb6b14415942b2 100644
--- a/indra/newview/llchathistory.cpp
+++ b/indra/newview/llchathistory.cpp
@@ -44,6 +44,8 @@
 #include "llfloaterreg.h"
 #include "llmutelist.h"
 #include "llstylemap.h"
+#include "lllayoutstack.h"
+#include "llagent.h"
 
 #include "llsidetray.h"//for blocked objects panel
 
@@ -346,18 +348,23 @@ class LLChatHistoryHeader: public LLPanel
 
 
 LLChatHistory::LLChatHistory(const LLChatHistory::Params& p)
-: LLTextEditor(p),
-mMessageHeaderFilename(p.message_header),
-mMessageSeparatorFilename(p.message_separator),
-mLeftTextPad(p.left_text_pad),
-mRightTextPad(p.right_text_pad),
-mLeftWidgetPad(p.left_widget_pad),
-mRightWidgetPad(p.right_widget_pad),
-mTopSeparatorPad(p.top_separator_pad),
-mBottomSeparatorPad(p.bottom_separator_pad),
-mTopHeaderPad(p.top_header_pad),
-mBottomHeaderPad(p.bottom_header_pad)
+:	LLUICtrl(p),
+	mMessageHeaderFilename(p.message_header),
+	mMessageSeparatorFilename(p.message_separator),
+	mLeftTextPad(p.left_text_pad),
+	mRightTextPad(p.right_text_pad),
+	mLeftWidgetPad(p.left_widget_pad),
+	mRightWidgetPad(p.right_widget_pad),
+	mTopSeparatorPad(p.top_separator_pad),
+	mBottomSeparatorPad(p.bottom_separator_pad),
+	mTopHeaderPad(p.top_header_pad),
+	mBottomHeaderPad(p.bottom_header_pad)
 {
+	LLTextEditor::Params editor_params(p);
+	editor_params.rect = getLocalRect();
+	editor_params.follows.flags = FOLLOWS_ALL;
+	editor_params.enabled = false; // read only
+	mEditor = LLUICtrlFactory::create<LLTextEditor>(editor_params, this);
 }
 
 LLChatHistory::~LLChatHistory()
@@ -365,6 +372,49 @@ LLChatHistory::~LLChatHistory()
 	this->clear();
 }
 
+void LLChatHistory::initFromParams(const LLChatHistory::Params& p)
+{
+	static LLUICachedControl<S32> scrollbar_size ("UIScrollbarSize", 0);
+
+	LLRect stack_rect = getLocalRect();
+	stack_rect.mRight -= scrollbar_size;
+	LLLayoutStack::Params layout_p;
+	layout_p.rect = stack_rect;
+	layout_p.follows.flags = FOLLOWS_ALL;
+	layout_p.orientation = "vertical";
+	layout_p.mouse_opaque = false;
+	
+	LLLayoutStack* stackp = LLUICtrlFactory::create<LLLayoutStack>(layout_p, this);
+	
+	const S32 NEW_TEXT_NOTICE_HEIGHT = 20;
+	
+	LLPanel::Params panel_p;
+	panel_p.name = "spacer";
+	panel_p.background_visible = false;
+	panel_p.has_border = false;
+	panel_p.mouse_opaque = false;
+	stackp->addPanel(LLUICtrlFactory::create<LLPanel>(panel_p), 0, 30, true, false, LLLayoutStack::ANIMATE);
+
+	panel_p.name = "new_text_notice_holder";
+	LLRect new_text_notice_rect = getLocalRect();
+	new_text_notice_rect.mTop = new_text_notice_rect.mBottom + NEW_TEXT_NOTICE_HEIGHT;
+	panel_p.rect = new_text_notice_rect;
+	panel_p.background_opaque = true;
+	panel_p.background_visible = true;
+	panel_p.visible = false;
+	mMoreChatPanel = LLUICtrlFactory::create<LLPanel>(panel_p);
+	
+	LLTextBox::Params text_p(p.more_chat_text);
+	text_p.rect = mMoreChatPanel->getLocalRect();
+	text_p.follows.flags = FOLLOWS_ALL;
+	text_p.name = "more_chat_text";
+	mMoreChatText = LLUICtrlFactory::create<LLTextBox>(text_p, mMoreChatPanel);
+	mMoreChatText->setClickedCallback(boost::bind(&LLChatHistory::onClickMoreText, this));
+
+	stackp->addPanel(mMoreChatPanel, 0, 0, false, false, LLLayoutStack::ANIMATE);
+}
+
+
 /*void LLChatHistory::updateTextRect()
 {
 	static LLUICachedControl<S32> texteditor_border ("UITextEditorBorder", 0);
@@ -393,15 +443,49 @@ LLView* LLChatHistory::getHeader(const LLChat& chat,const LLStyle::Params& style
 	return header;
 }
 
+void LLChatHistory::onClickMoreText()
+{
+	mEditor->endOfDoc();
+}
+
 void LLChatHistory::clear()
 {
 	mLastFromName.clear();
-	LLTextEditor::clear();
+	mEditor->clear();
 	mLastFromID = LLUUID::null;
 }
 
 void LLChatHistory::appendMessage(const LLChat& chat, const bool use_plain_text_chat_history, const LLStyle::Params& input_append_params)
 {
+	if (!mEditor->scrolledToEnd() && chat.mFromID != gAgent.getID() && !chat.mFromName.empty())
+	{
+		mUnreadChatSources.insert(chat.mFromName);
+		mMoreChatPanel->setVisible(TRUE);
+		std::string chatters;
+		for (unread_chat_source_t::iterator it = mUnreadChatSources.begin();
+			it != mUnreadChatSources.end();)
+		{
+			chatters += *it;
+			if (++it != mUnreadChatSources.end())
+			{
+				chatters += ",";
+			}
+		}
+		LLStringUtil::format_map_t args;
+		args["SOURCES"] = chatters;
+
+		if (mUnreadChatSources.size() == 1)
+		{
+			mMoreChatText->setValue(LLTrans::getString("unread_chat_single", args));
+		}
+		else
+		{
+			mMoreChatText->setValue(LLTrans::getString("unread_chat_multiple", args));
+		}
+		S32 height = mMoreChatText->getTextPixelHeight() + 5;
+		mMoreChatPanel->reshape(mMoreChatPanel->getRect().getWidth(), height);
+	}
+
 	LLColor4 txt_color = LLUIColorTable::instance().getColor("White");
 	LLViewerChat::getChatColor(chat,txt_color);
 	LLFontGL* fontp = LLViewerChat::getChatFont();	
@@ -416,7 +500,7 @@ void LLChatHistory::appendMessage(const LLChat& chat, const bool use_plain_text_
 	
 	if (use_plain_text_chat_history)
 	{
-		appendText("[" + chat.mTimeStr + "] ", getText().size() != 0, style_params);
+		mEditor->appendText("[" + chat.mTimeStr + "] ", mEditor->getText().size() != 0, style_params);
 
 		if (utf8str_trim(chat.mFromName).size() != 0)
 		{
@@ -426,11 +510,11 @@ void LLChatHistory::appendMessage(const LLChat& chat, const bool use_plain_text_
 				LLStyle::Params link_params(style_params);
 				link_params.fillFrom(LLStyleMap::instance().lookupAgent(chat.mFromID));
 				// Convert the name to a hotlink and add to message.
-				appendText(chat.mFromName + ": ", false, link_params);
+				mEditor->appendText(chat.mFromName + ": ", false, link_params);
 			}
 			else
 			{
-				appendText(chat.mFromName + ": ", false, style_params);
+				mEditor->appendText(chat.mFromName + ": ", false, style_params);
 			}
 		}
 	}
@@ -457,7 +541,7 @@ void LLChatHistory::appendMessage(const LLChat& chat, const bool use_plain_text_
 		else
 		{
 			view = getHeader(chat, style_params);
-			if (getText().size() == 0)
+			if (mEditor->getText().size() == 0)
 				p.top_pad = 0;
 			else
 				p.top_pad = mTopHeaderPad;
@@ -467,9 +551,9 @@ void LLChatHistory::appendMessage(const LLChat& chat, const bool use_plain_text_
 		p.view = view;
 
 		//Prepare the rect for the view
-		LLRect target_rect = getDocumentView()->getRect();
+		LLRect target_rect = mEditor->getDocumentView()->getRect();
 		// squeeze down the widget by subtracting padding off left and right
-		target_rect.mLeft += mLeftWidgetPad + mHPad;
+		target_rect.mLeft += mLeftWidgetPad + mEditor->getHPad();
 		target_rect.mRight -= mRightWidgetPad;
 		view->reshape(target_rect.getWidth(), view->getRect().getHeight());
 		view->setOrigin(target_rect.mLeft, view->getRect().mBottom);
@@ -478,7 +562,7 @@ void LLChatHistory::appendMessage(const LLChat& chat, const bool use_plain_text_
 		if (utf8str_trim(chat.mFromName).size() != 0 && chat.mFromName != SYSTEM_FROM)
 			header_text += chat.mFromName + ": ";
 
-		appendWidget(p, header_text, false);
+		mEditor->appendWidget(p, header_text, false);
 		mLastFromName = chat.mFromName;
 		mLastFromID = chat.mFromID;
 		mLastMessageTime = new_message_time;
@@ -490,10 +574,10 @@ void LLChatHistory::appendMessage(const LLChat& chat, const bool use_plain_text_
 		style_params.font.style = "ITALIC";
 
 		if (chat.mFromName.size() > 0)
-			appendText(chat.mFromName + " ", TRUE, style_params);
+			mEditor->appendText(chat.mFromName + " ", TRUE, style_params);
 		// Ensure that message ends with NewLine, to avoid losing of new lines
 		// while copy/paste from text chat. See EXT-3263.
-		appendText(chat.mText.substr(4) + NEW_LINE, FALSE, style_params);
+		mEditor->appendText(chat.mText.substr(4) + NEW_LINE, FALSE, style_params);
 	}
 	else
 	{
@@ -504,8 +588,19 @@ void LLChatHistory::appendMessage(const LLChat& chat, const bool use_plain_text_
 			// while copy/paste from text chat. See EXT-3263.
 			message += NEW_LINE;
 		}
-		appendText(message, FALSE, style_params);
+		mEditor->appendText(message, FALSE, style_params);
 	}
-	blockUndo();
+	mEditor->blockUndo();
+}
+
+void LLChatHistory::draw()
+{
+	if (mEditor->scrolledToEnd())
+	{
+		mUnreadChatSources.clear();
+		mMoreChatPanel->setVisible(FALSE);
+	}
+
+	LLUICtrl::draw();
 }
 
diff --git a/indra/newview/llchathistory.h b/indra/newview/llchathistory.h
index 8ca7dd1d58993be856ea48f81c08e94b8737ac65..260015e2dc8a048b88c7e9964aca249daf8e61cc 100644
--- a/indra/newview/llchathistory.h
+++ b/indra/newview/llchathistory.h
@@ -34,10 +34,11 @@
 #define LLCHATHISTORY_H_
 
 #include "lltexteditor.h"
+#include "lltextbox.h"
 #include "llviewerchat.h"
 
 //Chat log widget allowing addition of a message as a widget 
-class LLChatHistory : public LLTextEditor
+class LLChatHistory : public LLUICtrl
 {
 	public:
 		struct Params : public LLInitParam::Block<Params, LLTextEditor::Params>
@@ -63,6 +64,8 @@ class LLChatHistory : public LLTextEditor
 			//Header bottom padding
 			Optional<S32>			bottom_header_pad;
 
+			Optional<LLTextBox::Params>	more_chat_text;
+
 			Params()
 			:	message_header("message_header"),
 				message_separator("message_separator"),
@@ -73,15 +76,16 @@ class LLChatHistory : public LLTextEditor
 				top_separator_pad("top_separator_pad"),
 				bottom_separator_pad("bottom_separator_pad"),
 				top_header_pad("top_header_pad"),
-				bottom_header_pad("bottom_header_pad")
-				{
-				}
+				bottom_header_pad("bottom_header_pad"),
+				more_chat_text("more_chat_text")
+			{}
 
 		};
 	protected:
 		LLChatHistory(const Params&);
 		friend class LLUICtrlFactory;
 
+		/*virtual*/ void draw();
 		/**
 		 * Redefinition of LLTextEditor::updateTextRect() to considerate text
 		 * left/right padding params.
@@ -98,9 +102,13 @@ class LLChatHistory : public LLTextEditor
 		 */
 		LLView* getHeader(const LLChat& chat,const LLStyle::Params& style_params);
 
+		void onClickMoreText();
+
 	public:
 		~LLChatHistory();
 
+		void initFromParams(const Params&);
+
 		/**
 		 * Appends a widget message.
 		 * If last user appended message, concurs with current user,
@@ -129,5 +137,11 @@ class LLChatHistory : public LLTextEditor
 		S32 mBottomSeparatorPad;
 		S32 mTopHeaderPad;
 		S32 mBottomHeaderPad;
+
+		LLPanel*		mMoreChatPanel;
+		LLTextBox*		mMoreChatText;
+		LLTextEditor*	mEditor;
+		typedef std::set<std::string> unread_chat_source_t;
+		unread_chat_source_t mUnreadChatSources;
 };
 #endif /* LLCHATHISTORY_H_ */
diff --git a/indra/newview/llfasttimerview.cpp b/indra/newview/llfasttimerview.cpp
index 0b27001f10300ae8d32ac585e71c876ba5655860..effa57b1efba5cf91d3a4893821d585e4b39f7bb 100644
--- a/indra/newview/llfasttimerview.cpp
+++ b/indra/newview/llfasttimerview.cpp
@@ -98,6 +98,7 @@ LLFastTimerView::LLFastTimerView(const LLRect& rect)
 	mHoverBarIndex = -1;
 	FTV_NUM_TIMERS = LLFastTimer::NamedTimer::instanceCount();
 	mPrintStats = -1;	
+	mAverageCyclesPerTimer = 0;
 }
 
 
@@ -306,8 +307,9 @@ void LLFastTimerView::draw()
 	S32 height = (S32) (gViewerWindow->getWindowRectScaled().getHeight()*0.75f);
 	S32 width = (S32) (gViewerWindow->getWindowRectScaled().getWidth() * 0.75f);
 	
-	// HACK: casting away const. Should use setRect or some helper function instead.
-		const_cast<LLRect&>(getRect()).setLeftTopAndSize(getRect().mLeft, getRect().mTop, width, height);
+	LLRect new_rect;
+	new_rect.setLeftTopAndSize(getRect().mLeft, getRect().mTop, width, height);
+	setRect(new_rect);
 
 	S32 left, top, right, bottom;
 	S32 x, y, barw, barh, dx, dy;
@@ -321,6 +323,10 @@ void LLFastTimerView::draw()
 	S32 xleft = margin;
 	S32 ytop = margin;
 	
+	mAverageCyclesPerTimer = llround(lerp((F32)mAverageCyclesPerTimer, (F32)(LLFastTimer::sTimerCycles / (U64)LLFastTimer::sTimerCalls), 0.1f));
+	LLFastTimer::sTimerCycles = 0;
+	LLFastTimer::sTimerCalls = 0;
+
 	// Draw some help
 	{
 		
@@ -328,6 +334,10 @@ void LLFastTimerView::draw()
 		y = height - ytop;
 		texth = (S32)LLFontGL::getFontMonospace()->getLineHeight();
 
+#if TIME_FAST_TIMERS
+		tdesc = llformat("Cycles per timer call: %d", mAverageCyclesPerTimer);
+		LLFontGL::getFontMonospace()->renderUTF8(tdesc, 0, x, y, LLColor4::white, LLFontGL::LEFT, LLFontGL::TOP);
+#else
 		char modedesc[][32] = {
 			"2 x Average ",
 			"Max         ",
@@ -342,7 +352,6 @@ void LLFastTimerView::draw()
 
 		tdesc = llformat("Full bar = %s [Click to pause/reset] [SHIFT-Click to toggle]",modedesc[mDisplayMode]);
 		LLFontGL::getFontMonospace()->renderUTF8(tdesc, 0, x, y, LLColor4::white, LLFontGL::LEFT, LLFontGL::TOP);
-
 		textw = LLFontGL::getFontMonospace()->getWidth(tdesc);
 
 		x = xleft, y -= (texth + 2);
@@ -352,6 +361,7 @@ void LLFastTimerView::draw()
 
 		LLFontGL::getFontMonospace()->renderUTF8(std::string("[Right-Click log selected] [ALT-Click toggle counts] [ALT-SHIFT-Click sub hidden]"),
 										 0, x, y, LLColor4::white, LLFontGL::LEFT, LLFontGL::TOP);
+#endif
 		y -= (texth + 2);
 	}
 
diff --git a/indra/newview/llfasttimerview.h b/indra/newview/llfasttimerview.h
index 2bb023ab143771aeb9c9f775a596c5facd369b9e..f5c8f2381860b1c23061556f3b3011d5c44d9cdf 100644
--- a/indra/newview/llfasttimerview.h
+++ b/indra/newview/llfasttimerview.h
@@ -91,6 +91,7 @@ class LLFastTimerView : public LLFloater
 	S32 mHoverBarIndex;
 	LLFrameTimer mHighlightTimer;
 	S32 mPrintStats;
+	S32 mAverageCyclesPerTimer;
 };
 
 #endif
diff --git a/indra/newview/llfloaterpreference.cpp b/indra/newview/llfloaterpreference.cpp
index ff568a11a92406fb3bf6acf4732c37391b230653..7e0e8bfaa70b865b80a1866ff85b36ed0c000022 100644
--- a/indra/newview/llfloaterpreference.cpp
+++ b/indra/newview/llfloaterpreference.cpp
@@ -760,8 +760,9 @@ void LLFloaterPreference::onClickResetCache()
 	{
 		gSavedSettings.setString("NewCacheLocation", "");
 		gSavedSettings.setString("NewCacheLocationTopFolder", "");
-		LLNotificationsUtil::add("CacheWillBeMoved");
 	}
+	
+	LLNotificationsUtil::add("CacheWillBeMoved");
 	std::string cache_location = gDirUtilp->getCacheDir(true);
 	gSavedSettings.setString("CacheLocation", cache_location);
 	std::string top_folder(gDirUtilp->getBaseFileName(cache_location));
diff --git a/indra/newview/llfloatersnapshot.cpp b/indra/newview/llfloatersnapshot.cpp
index dbecd45d1f2cf591e8cc615f920d9a18e7f576ff..f53b62e4903b11a789207a3ab3ffd72ab12628a9 100644
--- a/indra/newview/llfloatersnapshot.cpp
+++ b/indra/newview/llfloatersnapshot.cpp
@@ -1379,7 +1379,6 @@ void LLFloaterSnapshot::Impl::onClickDiscard(void* data)
 	
 	if (view)
 	{
-		view->getParent()->setMouseOpaque(FALSE);
 		view->closeFloater();
 	}
 }
@@ -2105,6 +2104,12 @@ void LLFloaterSnapshot::onOpen(const LLSD& key)
 	gSnapshotFloaterView->adjustToFitScreen(this, FALSE);
 }
 
+void LLFloaterSnapshot::onClose(bool app_quitting)
+{
+	getParent()->setMouseOpaque(FALSE);
+}
+
+
 //static 
 void LLFloaterSnapshot::update()
 {
diff --git a/indra/newview/llfloatersnapshot.h b/indra/newview/llfloatersnapshot.h
index bd01f6c5731ecc9dead351fd353a66d76c7ac0e9..1333497bd25f1211aad2746d177b8001e6d17f5e 100644
--- a/indra/newview/llfloatersnapshot.h
+++ b/indra/newview/llfloatersnapshot.h
@@ -52,6 +52,7 @@ class LLFloaterSnapshot : public LLFloater
 	/*virtual*/ BOOL postBuild();
 	/*virtual*/ void draw();
 	/*virtual*/ void onOpen(const LLSD& key);
+	/*virtual*/ void onClose(bool app_quitting);
 	
 	static void update();
 	
diff --git a/indra/newview/llpanelavatar.cpp b/indra/newview/llpanelavatar.cpp
index ffe7f5716766a1e82511812abf4085263819b745..e9131a342e6327aebe10f6561bb53b832d93347e 100644
--- a/indra/newview/llpanelavatar.cpp
+++ b/indra/newview/llpanelavatar.cpp
@@ -403,6 +403,11 @@ void LLPanelProfileTab::updateButtons()
 //////////////////////////////////////////////////////////////////////////
 //////////////////////////////////////////////////////////////////////////
 
+bool enable_god()
+{
+	return gAgent.isGodlike();
+}
+
 LLPanelAvatarProfile::LLPanelAvatarProfile()
 : LLPanelProfileTab()
 {
@@ -423,6 +428,13 @@ BOOL LLPanelAvatarProfile::postBuild()
 	LLUICtrl::CommitCallbackRegistry::ScopedRegistrar registrar;
 	registrar.add("Profile.Pay",  boost::bind(&LLPanelAvatarProfile::pay, this));
 	registrar.add("Profile.Share", boost::bind(&LLPanelAvatarProfile::share, this));
+	registrar.add("Profile.Kick", boost::bind(&LLPanelAvatarProfile::kick, this));
+	registrar.add("Profile.Freeze", boost::bind(&LLPanelAvatarProfile::freeze, this));
+	registrar.add("Profile.Unfreeze", boost::bind(&LLPanelAvatarProfile::unfreeze, this));
+	registrar.add("Profile.CSR", boost::bind(&LLPanelAvatarProfile::csr, this));
+
+	LLUICtrl::EnableCallbackRegistry::ScopedRegistrar enable;
+	enable.add("Profile.EnableGod", boost::bind(&enable_god));
 
 	mProfileMenu = LLUICtrlFactory::getInstance()->createFromFile<LLToggleableMenu>("menu_profile_overflow.xml", gMenuHolder, LLViewerMenuHolderGL::child_registry_t::instance());
 
@@ -622,6 +634,28 @@ void LLPanelAvatarProfile::share()
 	LLAvatarActions::share(getAvatarId());
 }
 
+void LLPanelAvatarProfile::kick()
+{
+	LLAvatarActions::kick(getAvatarId());
+}
+
+void LLPanelAvatarProfile::freeze()
+{
+	LLAvatarActions::freeze(getAvatarId());
+}
+
+void LLPanelAvatarProfile::unfreeze()
+{
+	LLAvatarActions::unfreeze(getAvatarId());
+}
+
+void LLPanelAvatarProfile::csr()
+{
+	std::string name;
+	gCacheName->getFullName(getAvatarId(), name);
+	LLAvatarActions::csr(getAvatarId(), name);
+}
+
 void LLPanelAvatarProfile::onUrlTextboxClicked(const std::string& url)
 {
 	LLWeb::loadURL(url);
diff --git a/indra/newview/llpanelavatar.h b/indra/newview/llpanelavatar.h
index b19c5cca49c8b1b48b055a5e82d754f3d190972e..8f07c67fb183dd1fd6aa40c715980427b7aef054 100644
--- a/indra/newview/llpanelavatar.h
+++ b/indra/newview/llpanelavatar.h
@@ -181,6 +181,15 @@ class LLPanelAvatarProfile
 	 */
 	void share();
 
+	void kick();
+	void freeze();
+	void unfreeze();
+	void csr();
+	
+
+	bool enableGod();
+
+
 	void onUrlTextboxClicked(const std::string& url);
 	void onHomepageTextboxClicked();
 	void onAddFriendButtonClick();
diff --git a/indra/newview/lltoolpie.cpp b/indra/newview/lltoolpie.cpp
index 74fbce890d9513b3eecd1f73fd4bc750c0041b06..b1d09eccba194b7eae52a7304ce142155c058c69 100644
--- a/indra/newview/lltoolpie.cpp
+++ b/indra/newview/lltoolpie.cpp
@@ -731,14 +731,13 @@ BOOL LLToolPie::handleToolTip(S32 local_x, S32 local_y, MASK mask)
 				// *HACK: We may select this object, so pretend it was clicked
 				mPick = mHoverPick;
 				LLInspector::Params p;
+				p.fillFrom(LLUICtrlFactory::instance().getDefaultParams<LLInspector>());
 				p.message(avatar_name);
 				p.image(LLUI::getUIImage("Info"));
 				p.click_callback(boost::bind(showAvatarInspector, hover_object->getID()));
 				p.visible_time_near(6.f);
 				p.visible_time_far(3.f);
 				p.wrap(false);
-
-				p.fillFrom(LLUICtrlFactory::instance().getDefaultParams<LLInspector>());
 				
 				LLToolTipMgr::instance().show(p);
 			}
@@ -822,6 +821,7 @@ BOOL LLToolPie::handleToolTip(S32 local_x, S32 local_y, MASK mask)
 					// We may select this object, so pretend it was clicked
 					mPick = mHoverPick;
 					LLInspector::Params p;
+					p.fillFrom(LLUICtrlFactory::instance().getDefaultParams<LLInspector>());
 					p.message(tooltip_msg);
 					p.image(LLUI::getUIImage("Info_Off"));
 					p.click_callback(boost::bind(showObjectInspector, hover_object->getID(), mHoverPick.mObjectFace));
@@ -833,8 +833,6 @@ BOOL LLToolPie::handleToolTip(S32 local_x, S32 local_y, MASK mask)
 					p.visible_time_near(6.f);
 					p.visible_time_far(3.f);
 					p.wrap(false);
-
-					p.fillFrom(LLUICtrlFactory::instance().getDefaultParams<LLInspector>());
 					
 					LLToolTipMgr::instance().show(p);
 				}
diff --git a/indra/newview/skins/default/colors.xml b/indra/newview/skins/default/colors.xml
index 88e77f11ee9f21d85b6a6b6b823d68f4f7ae370a..706245a4793e5d0f2cf9a10222622d71a0a5cb18 100644
--- a/indra/newview/skins/default/colors.xml
+++ b/indra/newview/skins/default/colors.xml
@@ -71,10 +71,14 @@
 	<color
 	 name="Transparent"
 	 value="0 0 0 0" />
+  <!-- Make potentially unused colors show up bright purple.
+  Leave this here until all Unused? are removed below, otherwise
+  the viewer generates many warnings on startup. -->
+  <color
+	 name="Unused?"
+	 value="1 0 1 1" />
 
-
-
-	<!-- UI Definitions -->
+  <!-- UI Definitions -->
 
 	<color
      name="AgentChatColor"
diff --git a/indra/newview/skins/default/textures/icons/SL_Logo.png b/indra/newview/skins/default/textures/icons/SL_Logo.png
new file mode 100644
index 0000000000000000000000000000000000000000..c9fbde987a6615c783207ad967cb0c6c49670d04
Binary files /dev/null and b/indra/newview/skins/default/textures/icons/SL_Logo.png differ
diff --git a/indra/newview/skins/default/textures/textures.xml b/indra/newview/skins/default/textures/textures.xml
index 412f8b6d681977e5acac4425cfe4591789c54054..8a9126208a3093332d3a819f51522ca920d591df 100644
--- a/indra/newview/skins/default/textures/textures.xml
+++ b/indra/newview/skins/default/textures/textures.xml
@@ -234,6 +234,7 @@ with the same filename but different name
   <texture name="Inv_Gloves" file_name="icons/Inv_Gloves.png" preload="false" />
   <texture name="Inv_Hair" file_name="icons/Inv_Hair.png" preload="false" />
   <texture name="Inv_LinkItem" file_name="icons/Inv_LinkItem.png" preload="false" />
+  <texture name="Inv_LinkItem_Broken" file_name="icons/Inv_LinkItem_Broken.png" preload="false" />
   <texture name="Inv_LinkFolder" file_name="icons/Inv_LinkFolder.png" preload="false" />
   <texture name="Inv_Jacket" file_name="icons/Inv_Jacket.png" preload="false" />
   <texture name="Inv_LookFolderOpen" file_name="icons/Inv_LookFolderOpen.png" preload="false" />
@@ -487,7 +488,8 @@ with the same filename but different name
   <texture name="SliderThumb_Off" file_name="widgets/SliderThumb_Off.png" />
   <texture name="SliderThumb_Disabled" file_name="widgets/SliderThumb_Disabled.png" />
   <texture name="SliderThumb_Press" file_name="widgets/SliderThumb_Press.png" />
-  <texture name="SL_Logo" file_name="map_infohub.tga" />
+
+  <texture name="SL_Logo" file_name="icons/SL_Logo.png" preload="true" />
 
   <texture name="Snapshot_Off" file_name="bottomtray/Snapshot_Off.png" preload="true" scale.left="4" scale.top="19" scale.right="22" scale.bottom="4" />
   <texture name="Snapshot_Over" file_name="bottomtray/Snapshot_Over.png" preload="false" />
@@ -495,12 +497,12 @@ with the same filename but different name
 
   <texture name="startup_logo"  file_name="windows/startup_logo.png" preload="true" />
 
-  <texture name="Stepper_Down_Disabled" file_name="widgets/Stepper_Down_Disabled.png" preload="true" />
-  <texture name="Stepper_Down_Off" file_name="widgets/Stepper_Down_Off.png" preload="true" />
-  <texture name="Stepper_Down_Press" file_name="widgets/Stepper_Down_Press.png" preload="true" />
-  <texture name="Stepper_Up_Disabled" file_name="widgets/Stepper_Up_Disabled.png" preload="true" />
-  <texture name="Stepper_Up_Off" file_name="widgets/Stepper_Up_Off.png" preload="true" />
-  <texture name="Stepper_Up_Press" file_name="widgets/Stepper_Up_Press.png" preload="true" />
+  <texture name="Stepper_Down_Disabled" file_name="widgets/Stepper_Down_Disabled.png" preload="false" />
+  <texture name="Stepper_Down_Off" file_name="widgets/Stepper_Down_Off.png" preload="false" />
+  <texture name="Stepper_Down_Press" file_name="widgets/Stepper_Down_Press.png" preload="false" />
+  <texture name="Stepper_Up_Disabled" file_name="widgets/Stepper_Up_Disabled.png" preload="false" />
+  <texture name="Stepper_Up_Off" file_name="widgets/Stepper_Up_Off.png" preload="false" />
+  <texture name="Stepper_Up_Press" file_name="widgets/Stepper_Up_Press.png" preload="false" />
 
   <texture name="Stop_Off" file_name="icons/Stop_Off.png" preload="false" />
   <texture name="Stop_Over" file_name="icons/Stop_Over.png" preload="false" />
diff --git a/indra/newview/skins/default/xui/en/floater_aaa.xml b/indra/newview/skins/default/xui/en/floater_aaa.xml
index 6956b73371440f6570f75a48f9b6f41593b0aca8..cb4cbd229a82b0afe09590de4aa0124c9bd8f41c 100644
--- a/indra/newview/skins/default/xui/en/floater_aaa.xml
+++ b/indra/newview/skins/default/xui/en/floater_aaa.xml
@@ -15,21 +15,21 @@
  title="TEST FLOATER"
  save_dock_state="true"
  save_visibility="true"
- single_instance="true"
+ single_instance="true" 
  width="320">
   <string name="nudge_parabuild">Nudge 1</string>
   <string name="test_the_vlt">This string is extracted.</string>
   <chat_history
    allow_html="true"
    bg_readonly_color="ChatHistoryBgColor"
-   bg_writeable_color="ChatHistoryBgColor"
-   border_visible="false" 
+   bg_writeable_color="ChatHistoryBgColor" 
+   border_visible="false"
    follows="all"
    font="SansSerif" 
-	    left="1"
+	 left="1"
    top="20"
    layout="topleft"
-	    height="260"
+	 height="260"
    name="chat_history"
    parse_highlights="true"
    text_color="ChatHistoryTextColor"
diff --git a/indra/newview/skins/default/xui/en/floater_world_map.xml b/indra/newview/skins/default/xui/en/floater_world_map.xml
index e632b67d119f3b7e2acc5b0a24a78797f65d1e23..169a0ea676801cca7e9aafb76396383b0858a8c0 100644
--- a/indra/newview/skins/default/xui/en/floater_world_map.xml
+++ b/indra/newview/skins/default/xui/en/floater_world_map.xml
@@ -296,7 +296,7 @@
      layout="topleft"
      name="pg_label"
      width="60">
-        PG
+        General
     </text>
 
     <check_box
@@ -330,7 +330,7 @@
      layout="topleft"
      name="mature_label"
      width="66">
-        Mature
+        Moderate
     </text>
 
     <check_box
@@ -361,7 +361,7 @@
      top_delta="2"
      left_pad="3"
      layout="topleft"
-     name="pg_label"
+     name="adult_label"
      width="66">
         Adult
     </text>
diff --git a/indra/newview/skins/default/xui/en/menu_profile_overflow.xml b/indra/newview/skins/default/xui/en/menu_profile_overflow.xml
index d0128d1c9a09a4c2f986f568f97b2c048d08b3b8..1dc1c610cfe09c086e9130c739a78995859e10db 100644
--- a/indra/newview/skins/default/xui/en/menu_profile_overflow.xml
+++ b/indra/newview/skins/default/xui/en/menu_profile_overflow.xml
@@ -19,4 +19,40 @@
         <menu_item_call.on_click
          function="Profile.Share" />
     </menu_item_call>
+  <menu_item_call
+   label="Kick"
+   layout="topleft"
+   name="kick">
+    <menu_item_call.on_click
+     function="Profile.Kick" />
+    <menu_item_call.on_visible
+     function="Profile.EnableGod" />
+  </menu_item_call>
+  <menu_item_call
+   label="Freeze"
+   layout="topleft"
+   name="freeze">
+    <menu_item_call.on_click
+     function="Profile.Freeze" />
+    <menu_item_call.on_visible
+     function="Profile.EnableGod" />
+  </menu_item_call>
+  <menu_item_call
+   label="Unfreeze"
+   layout="topleft"
+   name="unfreeze">
+    <menu_item_call.on_click
+     function="Profile.Unfreeze" />
+    <menu_item_call.on_visible
+     function="Profile.EnableGod" />
+  </menu_item_call>
+  <menu_item_call
+   label="CSR"
+   layout="topleft"
+   name="csr">
+    <menu_item_call.on_click
+     function="Profile.CSR" />
+    <menu_item_call.on_visible
+     function="Profile.EnableGod" />
+  </menu_item_call>
 </toggleable_menu>
diff --git a/indra/newview/skins/default/xui/en/sidepanel_item_info.xml b/indra/newview/skins/default/xui/en/sidepanel_item_info.xml
index 7b0b4b0bde13c1fa8801f98e09f3a2d0c7417eaf..790f8afd3a62c2f1a3e2ac0c7923619304d7a899 100644
--- a/indra/newview/skins/default/xui/en/sidepanel_item_info.xml
+++ b/indra/newview/skins/default/xui/en/sidepanel_item_info.xml
@@ -33,10 +33,10 @@
      	 height="18"
      	 image_name="Lock"
 	     layout="topleft"
-		 right="-50"
+		 right="-15"
 	     mouse_opaque="true"
 	     name="IconLocked"
-	     top="4"
+	     top="8"
 	     width="18" />
     <button
      follows="top|right"
@@ -60,14 +60,23 @@
      use_ellipses="true"
      value="Object Profile"
      width="275" />
+    	    <text
+     follows="top|left"
+     height="13"
+     layout="topleft"
+     left="45"
+     name="where"
+     text_color="LtGray_50"
+     value="(Inventory)"
+     width="150" />
 	<panel
          follows="all"
-         height="500"
+         height="490"
          label=""
          layout="topleft"
          left="10"
          help_topic=""
-         top="30"
+         top="45"
          width="313"
    background_visible="true"
    bg_alpha_color="DkGray2">
@@ -125,7 +134,7 @@
 		     layout="topleft"
     		 left="5"
 		     name="LabelCreatorTitle"
-top_pad="10"
+		  top_pad="10"
 		     width="78">
 	        Creator:
     	</text>
@@ -135,7 +144,7 @@ top_pad="10"
      default_icon_name="Generic_Person"
      layout="topleft"
      left_pad="0"
-		     top_delta="-6"
+     top_delta="-6"
      mouse_opaque="true"
      width="20" />
 	    <text
@@ -165,28 +174,28 @@ top_pad="10"
 			 follows="left|top"
 			 height="23"
 			 layout="topleft"
-    		 left="5"
+			   left="5"
 			 name="LabelOwnerTitle"
-top_pad="5"
+			   top_pad="10"
 			 width="78">
 			    Owner:
 	     </text>
 	     <avatar_icon
-     follows="top|left"
-     height="20"
-     default_icon_name="Generic_Person"
-     layout="topleft"
-     left_pad="0"
-		     top_delta="-6"
-     mouse_opaque="true"
-     width="20" />
+			   follows="top|left"
+			   height="20"
+			   default_icon_name="Generic_Person"
+			   layout="topleft"
+			   left_pad="0"
+			   top_delta="-6"
+			   mouse_opaque="true"
+			   width="20" />
 	     <text
 			 type="string"
-     follows="left|right"
-     font="SansSerifSmall"
-     height="15"
-     layout="topleft"
-     left_pad="5"
+			   follows="left|right"
+			   font="SansSerifSmall"
+			   height="15"
+			   layout="topleft"
+			   left_pad="5"
 			 name="LabelOwnerName"
 			 top_delta="6"
 			 width="140">
@@ -224,7 +233,7 @@ top_pad="10"
 			 top_delta="0"
 			 width="222">
 			Wed May 24 12:50:46 2006
-	    </text>
+      </text>
 	 <panel
          border="false"
          follows="left|top"
@@ -350,7 +359,7 @@ top_pad="10"
 			 tool_tip="Next owner can give away or resell this object"
 			 width="106" />
 	    </panel>
-	    <check_box
+	<check_box
 			 height="18"
 			 label="For Sale"
 			 layout="topleft"
@@ -388,144 +397,21 @@ top_pad="10"
 			    height="23"
 			    max_val="999999999"
 			    top_pad="10"/>
-	    <!--line_editor
-			 border_style="line"
-			 border_thickness="1"
-			 follows="left|top|right"
-			 height="16"
-			 layout="topleft"
-			 left_pad="5"
-			 max_length="25"
-			 name="EditPrice"
-			 top_delta="0"
-			 width="242" /-->
-	    <!--text
-			 type="string"
-			 length="1"
-			 follows="left|top"
-			 height="10"
-			 layout="topleft"
-			 left="10"
-			 name="BaseMaskDebug"
-			 top="155"
-			 width="330">
-			B:
-	    </text>
-	    <text
-			 type="string"
-			 length="1"
-			 follows="left|top"
-			 height="10"
-			 layout="topleft"
-			 left_delta="60"
-			 name="OwnerMaskDebug"
-			 top_delta="0"
-			 width="270">
-			O:
-	    </text>
-	    <text
-			 type="string"
-			 length="1"
-			 follows="left|top"
-			 height="10"
-			 layout="topleft"
-			 left_delta="60"
-			 name="GroupMaskDebug"
-			 top_delta="0"
-			 width="210">
-			G:
-	    </text>
-	    <text
-			 type="string"
-			 length="1"
-			 follows="left|top"
-			 height="10"
-			 layout="topleft"
-			 left_delta="60"
-			 name="EveryoneMaskDebug"
-			 top_delta="0"
-			 width="150">
-			E:
-	    </text>
-	    <text
-			 type="string"
-			 length="1"
-			 follows="left|top"
-			 height="10"
-			 layout="topleft"
-			 left_delta="60"
-			 name="NextMaskDebug"
-			 top_delta="0"
-			 width="90">
-			N:
-	    </text-->
-			    <!--text
-			 type="string"
-			 length="1"
-			 follows="left|top"
-			 height="10"
-			 layout="topleft"
-			 left="10"
-			 name="SaleLabel"
-			 top_pad="5"
-			 width="330">
-			Mark Item:
-	    </text-->
-	    <!--radio_group
-			 draw_border="false"
-			 follows="left|top|right"
-			 height="16"
-			 layout="topleft"
-			 left_delta="78"
-			 name="RadioSaleType"
-			 top_delta="0"
-			 width="252">
-			    <radio_item
-			     height="16"
-			     label="Original"
-			     layout="topleft"
-			     left="0"
-			     name="radio"
-			     top="0"
-			     width="70" />
-			    <radio_item
-			     height="16"
-			     label="Copy"
-			     layout="topleft"
-			     left_delta="60"
-			     name="radio2"
-			     top_delta="0"
-			     width="70" />
-	    </radio_group-->
-	    <!--text
-			 type="string"
-			 length="1"
-			 follows="left|top"
-			 height="16"
-			 layout="topleft"
-			 left="10"
-			 name="TextPrice"
-			 top_pad="5"
-			 width="78">
-			Price: L$
-	    </text-->
-	</panel>
+   </panel>
     <panel
-		 height="25"
+		 height="30"
 		 layout="bottomright"
 		 help_topic="button_tab"
 		 name="button_panel"
 		 left="5"
-		 bottom="5"
+		 bottom="2"
 		 width="313">
 	    <button
-		     follows="bottom|right"
-		     height="25"
+		     height="23"
 		     label="Cancel"
 		     layout="topleft"
 		     name="cancel_btn"
 		     right="-1"
-		     left_pad="10"
 		     width="100" />
-	</panel>
-</panel>
+	    </panel>
+	</panel>
\ No newline at end of file
diff --git a/indra/newview/skins/default/xui/en/sidepanel_task_info.xml b/indra/newview/skins/default/xui/en/sidepanel_task_info.xml
index 5b379b54e3030c3f8d4d6701392ac999bc57f9ca..d26e855e2f636b3518ebe16d748f9746972d149e 100644
--- a/indra/newview/skins/default/xui/en/sidepanel_task_info.xml
+++ b/indra/newview/skins/default/xui/en/sidepanel_task_info.xml
@@ -6,7 +6,7 @@
 	 name="object properties"
 	 help_topic="object_properties"
 	 save_rect="true"
-	 title="Object Properties"
+	 title="Object Profile"
 	 width="333">
 	 <panel.string
 	  name="text deed continued">
@@ -57,127 +57,173 @@
                 Mixed Sale
             </panel.string>
     <button
-	     follows="top|right"
-	     height="25"
-	     image_overlay="BackArrow_Off"
-	     layout="topleft"
-	     name="back_btn"
-	     picture_style="true"
-	     right="-5"
-	     tab_stop="false"
-	     top="0"
-	     width="25" />
+     follows="top|right"
+     height="23"
+     image_overlay="BackArrow_Off"
+     layout="topleft"
+     left="10"
+     name="back_btn"
+     tab_stop="false"
+     top="0"
+     width="23" />
+        <text
+     follows="top|left|right"
+     font="SansSerifHuge"
+     height="26"
+     layout="topleft"
+     left_pad="10"
+     name="title"
+     text_color="LtGray"
+     top="0"
+     use_ellipses="true"
+     value="Object Profile"
+     width="275" />
+	    <text
+     follows="top|left"
+     height="13"
+     layout="topleft"
+     left="45"
+     name="where"
+     text_color="LtGray_50"
+     value="(In World)"
+     width="150" />
 	<panel
          follows="all"
-         height="500"
+         height="490"
          label=""
          layout="topleft"
-         left="5"
+         left="10"
          help_topic=""
-         top="30"
-		 border="1"
-         width="313">
-            <text
-             type="string"
-             length="1"
-             follows="left|top"
-             height="10"
-             layout="topleft"
-             left="10"
+         top="45"
+         width="313"
+   background_visible="true"
+   bg_alpha_color="DkGray2">
+	    	    <text
+		     type="string"
+		     length="1"
+		     follows="left|top"
+		     height="10"
+		     layout="topleft"
+		     left="5"
              name="Name:"
-             top_pad="5"
-             width="90">
-                Name:
-            </text>
-            <line_editor
-             follows="left|top|right"
-             height="19"
-             layout="topleft"
-             left_pad="0"
-             max_length="63"
+		     top="10"
+		     width="78">
+	        Name:
+	    </text>
+	    <line_editor
+		     border_style="line"
+		     border_thickness="1"
+	    	 follows="left|top|right"
+		     height="20"
+		     layout="topleft"
+	    	 left_delta="78"
+		     max_length="63"
              name="Object Name"
-             select_on_focus="true"
-             top_delta="0"
-             width="170" />
-            <text
-             type="string"
-             length="1"
-             follows="left|top"
-             height="10"
-             layout="topleft"
-             left="10"
+	    	 top_delta="0"
+		     width="225" />
+	    <text
+	    type="string"
+	    length="1"
+	    follows="left|top"
+	    height="10"
+	    layout="topleft"
+	    left="5"
              name="Description:"
-             top_pad="3"
-             width="90">
-                Description:
-            </text>
+	    top_pad="10"
+	    width="78">
+	        Description:
+	    </text>
             <line_editor
+	     border_style="line"
+    	     border_thickness="1"
              follows="left|top|right"
-             height="19"
+             height="23"
              layout="topleft"
-             left_pad="0"
-             max_length="127"
              name="Object Description"
              select_on_focus="true"
-             top_delta="0"
-             width="170" />
-            <text
-             type="string"
-             left="10"
-             length="1"
-             follows="left|top"
-             height="19"
-             layout="topleft"
-             name="Creator:"
-             width="90">
-                Creator:
-            </text>
-            <text
-             type="string"
-             length="1"
-             follows="left|top"
-             left_pad="0"
-             height="19"
-             layout="topleft"
+    		 left_delta="78"
+		     max_length="127"
+	    	 top_delta="-5"
+	    	 width="225"/>
+	    <text
+		     type="string"
+		     length="1"
+		     follows="left|top"
+		     height="23"
+		     layout="topleft"
+    		 left="5"
+		 name="CreatorNameLabel"
+		  top_pad="10"
+		     width="78">
+	        Creator:
+    	</text>
+	    	<avatar_icon
+     follows="top|left"
+     height="20"
+     default_icon_name="Generic_Person"
+     layout="topleft"
+     left_pad="0"
+      top_delta="-6"
+     mouse_opaque="true"
+     width="20" />
+	    <text
+		     type="string"
+     follows="left|right"
+     font="SansSerifSmall"
+     height="15"
+     layout="topleft"
+     left_pad="5"
              name="Creator Name"
-             width="175">
-                Esbee Linden
-            </text>
-            <text
-             type="string"
-             length="1"
-             left="10"
-             follows="left|top"
-             height="19"
-             layout="topleft"
-             name="Owner:"
-             width="90">
-                Owner:
-            </text>
-            <text
-             type="string"
-             length="1"
-             follows="left|top"
-             height="19"
-             layout="topleft"
-             name="Owner Name"
-             left_pad="0"
-             width="175">
-                Erica Linden
-            </text>
-           <text
-             type="string"
-             length="1"
-             follows="left|top"
-             layout="topleft"
-             left="10"
-             height="18"
-             name="Group:"
-             top_pad="4"
-             width="75">
-                Group:
-            </text>
-            <button
+		     top_delta="6"
+		     width="140">
+	        Erica Linden
+	     </text>
+	    <text
+			 type="string"
+			 length="1"
+			 follows="left|top"
+			 height="23"
+			layout="topleft"
+			left="5"
+			name="Owner:"
+			top_pad="10"
+			 width="78">
+			    Owner:
+	     </text>
+	     <avatar_icon
+     follows="top|left"
+     height="20"
+     default_icon_name="Generic_Person"
+     layout="topleft"
+     left_pad="0"
+	    top_delta="-6"
+	    mouse_opaque="true"
+     width="20" />
+	     <text
+			    type="string"
+			    follows="left|right"
+			    font="SansSerifSmall"
+			    height="15"
+			    layout="topleft"
+			    left_pad="5"
+			    name="Owner Name"
+			    top_delta="6"
+			    width="140">
+			    Erica Linden
+	     </text>
+	    	    <text
+			 type="string"
+			 length="1"
+			 follows="left|top"
+			 height="23"
+			 layout="topleft"
+			 left="5"
+			name="Group_label"
+			top_pad="10"
+			width="78">
+			    Group:
+	     </text>
+      		<button
 			 follows="top|left"
 			 height="10"
 			 image_disabled="Activate_Checkmark"
@@ -203,43 +249,34 @@
              width="150" />
             <button
              follows="top|left"
-             height="20"
+             height="23"
              label="Deed"
              label_selected="Deed"
              layout="topleft"
              name="button deed"
              top_pad="0"
-             left="100"
+             left="81"
              tool_tip="Deeding gives this item away with next owner permissions. Group shared objects can be deeded by a group officer."
-             width="80" />
-            <check_box
-             height="19"
-             follows="left|top"
-             label="Share"
-             layout="topleft"
-             name="checkbox share with group"
-             tool_tip="Allow all members of the set group to share your modify permissions for this object. You must Deed to enable role restrictions."
-             left_pad="3"
              width="100" />
             <text
              type="string"
              length="1"
              follows="left|top"
-             height="16"
+             height="9"
              layout="topleft"
-             top_pad="15"
-             left="10"
+             top_pad="5"
+             left="5"
              name="label click action"
-             width="90">
+             width="280">
                 Click to:
             </text>
             <combo_box
              follows="left|top"
-             height="20"
+             height="23"
              layout="topleft"
              name="clickaction"
              width="168"
-             left_pad="0">
+             left="81">
                 <combo_box.item
                  label="Touch  (default)"
                  name="Touch/grab(default)"
@@ -261,26 +298,131 @@
                  name="Open"
                  value="Open" />
             </combo_box>
-            <check_box
-             height="16"
+	 <panel
+         border="false"
+         follows="left|top"
+         layout="topleft"
+         mouse_opaque="false"
+         background_visible="true"
+         bg_alpha_color="DkGray"
+         name="perms_inv"
+         left="0"
+         top_pad="15"
+         height="135"
+         width="313">
+	  <text
+             type="string"
+             length="1"
+             left="10"
              top_pad="15"
-             label="For Sale:"
+             text_color="EmphasisColor"
+	     height="15"
+             follows="left|top|right"
+             layout="topleft"
+             name="perm_modify"
+             width="200">
+                You can modify this object
+            </text>
+	  	    <text
+			 type="string"
+			 length="1"
+			 follows="left|top"
+			 height="16"
+			 layout="topleft"
+			 left="10"
+               name="Anyone can:"
+			 top_pad="8"
+			 width="100">
+			Anyone:
+	    </text>
+	    <check_box
+			 height="18"
+			 label="Copy"
+			 layout="topleft"
+			 left_pad="0"
+             name="checkbox allow everyone copy"
+			 top_delta="-2"
+			 width="90" />
+	    <check_box
+             height="18"
+             label="Move"
              layout="topleft"
+             name="checkbox allow everyone move"
+			 left_pad="0"
+             width="150" />
+	       	<text
+			 type="string"
+			 length="1"
+			 follows="left|top"
+			 height="16"
+			 layout="topleft"
+			 left="10"
+			 name="GroupLabel"
+			 top_pad="8"
+			 width="100">
+			Group:
+    	</text>
+			    <check_box
+			 height="18"
+			 label="Share"
+			 layout="topleft"
+			 left_pad="90"
+			 top_delta="-2"
+             name="checkbox share with group"
+			 tool_tip="Allow all members of the set group to share your modify permissions for this object. You must Deed to enable role restrictions."
+			 width="150" />
+	    	    <text
+			 type="string"
+			 length="1"
+			 follows="left|top"
+			 height="16"
+			 layout="topleft"
+			 left="10"
+			 name="NextOwnerLabel"
+			 top_pad="8"
+			 width="200"
+			 word_wrap="true">
+			Next owner:
+	    </text>
+	    <check_box
+			 height="18"
+			 label="Modify"
+			 layout="topleft"
+			 left="20"
+			 top_pad="0"
+             name="checkbox next owner can modify"
+			 width="90" />
+	    <check_box
+			 height="18"
+			 label="Copy"
+			 layout="topleft"
+			 left_pad="0"
+             name="checkbox next owner can copy"
+			 width="90" />
+	    <check_box
+			 height="18"
+			 label="Transfer"
+			 layout="topleft"
+			 left_pad="0"
+             name="checkbox next owner can transfer"
+			 tool_tip="Next owner can give away or resell this object"
+			 width="106" />
+	    </panel>
+	    <check_box
+			 height="23"
+			 label="For Sale"
+			 layout="topleft"
+			 left="20"
              name="checkbox for sale"
-             left="10"
-             width="90" />
-<!-- NEW SALE TYPE COMBO BOX -->
-      <combo_box
-            left_pad="0"
-            layout="topleft"
-            follows="left|top"
-            allow_text_entry="false"
-            height="20"
-            intial_value="2"
-            max_chars="20"
-            mouse_opaque="true"
+			 top_pad="10"
+			 width="100" />
+		<combo_box
+			 height="23"
+			 left_pad="0"
+			 layout="topleft"
+			 follows="left|top"
             name="sale type"
-            width="158">
+			 width="170">
         <combo_box.item
            name="Copy"
            label="Copy"
@@ -293,14 +435,13 @@
            name="Original"
            label="Original"
            value="1" />
-      </combo_box>
-<!-- NEW PRICE SPINNER -->
-      <spinner
+	    </combo_box>
+		<spinner
         follows="left|top"
         decimal_digits="0"
         increment="1"
-        top_pad="8"
-        left="100"
+        top_pad="10"
+        left="120"
         control_name="Edit Cost"
         name="Edit Cost"
         label="Price: L$"
@@ -310,106 +451,25 @@
         height="20"
         max_val="999999999" />
       <check_box
-	   height="15"
+	   height="20"
 	   width="110"
-	   top_pad="3"
+	   top_pad="6"
 	   label="Show in search"
        layout="topleft"
-	   left="100"
+	   left="120"
        name="search_check"
        tool_tip="Let people see this object in search results" />
-		<panel
-         border="false"
-         follows="left|top"
-         layout="topleft"
-         mouse_opaque="false"
-         background_visible="true"
-         bg_alpha_color="DkGray"
-         name="perms_build"
-         left="0"
-         top="241"
-         height="120"
-         width="278">
-            <text
-             type="string"
-             length="1"
-             left="10"
-             top_pad="9"
-             text_color="EmphasisColor"
-             height="16"
-             follows="left|top|right"
-             layout="topleft"
-             name="perm_modify"
-             width="250">
-                You can modify this object
-            </text>
-            <text
-               type="string"
-               follows="left|top"
-               name="Anyone can:"
-               width="250"
-               left="10">
-                 Anyone:
-            </text>
-            <check_box
-             height="19"
-             label="Move"
-             layout="topleft"
-             name="checkbox allow everyone move"
-             left="15"
-             width="85" />
-            <check_box
-             height="19"
-             label="Copy"
-             layout="topleft"
-             left_pad="0"
-             name="checkbox allow everyone copy"
-             width="90" />
-            <text
-               type="string"
-               follows="left|top"
-               height="19"
-               name="Next owner can:"
-               width="250"
-               left="10">
-                  Next owner:
-            </text>
-            <check_box
-             follows="left|top|right"
-             label="Modify"
-             layout="topleft"
-             left="15"
-             name="checkbox next owner can modify"
-             width="85" />
-            <check_box
-             follows="left|top|right"
-             height="19"
-             label="Copy"
-             layout="topleft"
-             left_pad="0"
-             name="checkbox next owner can copy"
-             width="90" />
-            <check_box
-             follows="left|top|right"
-             height="19"
-             label="Transfer"
-             layout="topleft"
-             name="checkbox next owner can transfer"
-             left_pad="0"
-             top_delta="0"
-             tool_tip="Next owner can give away or resell this object"
-             width="90" />
             <text
              type="string"
              text_color="EmphasisColor"
              length="1"
-             top_pad="5"
+             top_pad="15"
              follows="left|top"
              layout="topleft"
              left="10"
              name="B:"
              height="10"
-             width="45">
+             width="50">
                 B:
             </text>
             <text
@@ -421,7 +481,7 @@
              left_pad="0"
              name="O:"
              height="10"
-             width="44">
+             width="50">
                 O:
             </text>
             <text
@@ -433,7 +493,7 @@
              left_pad="0"
              name="G:"
              height="10"
-             width="43">
+             width="50">
                 G:
             </text>
             <text
@@ -445,7 +505,7 @@
              layout="topleft"
              name="E:"
              height="10"
-             width="43">
+             width="50">
                 E:
             </text>
             <text
@@ -457,7 +517,7 @@
              left_pad="0"
              name="N:"
              height="10"
-             width="48">
+             width="50">
                 N:
             </text>
             <text
@@ -473,7 +533,6 @@
                 F:
             </text>
 		</panel>
- </panel>
     <panel
 		 height="25"
 		 layout="bottomright"
@@ -484,30 +543,30 @@
 		 width="313">
         <button
 		     follows="bottom|left"
-		     height="25"
+		     height="23"
 		     label="Open"
 		     layout="topleft"
 		     left="5"
 		     name="open_btn"
 		     top="0"
-		     width="60" />
+		     width="100" />
 	    <button
 		     follows="bottom|left"
-		     height="25"
+		     height="23"
 		     label="Pay"
 		     layout="topleft"
 		     left_pad="5"
 		     name="pay_btn"
 		     top="0"
-		     width="50" />
+		     width="100" />
 	    <button
 		     follows="bottom|left"
-		     height="25"
+		     height="23"
 		     label="Buy"
 		     layout="topleft"
 		     left_pad="5"
 		     name="buy_btn"
 		     top="0"
-		     width="60" />
+		     width="100" />
 	</panel>
 </panel>
\ No newline at end of file
diff --git a/indra/newview/skins/default/xui/en/strings.xml b/indra/newview/skins/default/xui/en/strings.xml
index 9aae04ba38105831f2c21712987690f042c54f95..acdf3d1bf7a90045bb63896b3c51c0ef673b2a8b 100644
--- a/indra/newview/skins/default/xui/en/strings.xml
+++ b/indra/newview/skins/default/xui/en/strings.xml
@@ -2996,4 +2996,10 @@ If you continue to receive this message, contact the [SUPPORT_SITE].
   <string name="close_on_no_ability">
     You no longer have the ability to be in the chat session.
   </string>
+  <string name="unread_chat_single">
+    [SOURCES] has said something new
+  </string>"
+  <string name="unread_chat_multiple">
+    [SOURCES] have said something new
+  </string>"
 </strings>
diff --git a/indra/newview/skins/default/xui/en/widgets/chat_history.xml b/indra/newview/skins/default/xui/en/widgets/chat_history.xml
index 2be37d222a55af0927b84e7fad0aeb94105c73c5..8785dff2ae55ed3e5eb726453790ff7b92a45e55 100644
--- a/indra/newview/skins/default/xui/en/widgets/chat_history.xml
+++ b/indra/newview/skins/default/xui/en/widgets/chat_history.xml
@@ -11,9 +11,13 @@
 	top_header_pad="17"
 	bottom_header_pad="10"
 	max_length="2147483647"
-	enabled="false"
 	track_bottom="true"
 	name="chat_history"
 	type="string"
 	word_wrap="true"
-  font="SansSerif"/>
+  font="SansSerif">
+  <more_chat_text
+    mouse_opaque="true" 
+    word_wrap="true"
+    />
+</chat_history>
diff --git a/indra/newview/skins/default/xui/en/widgets/tab_container.xml b/indra/newview/skins/default/xui/en/widgets/tab_container.xml
index 3368fa88ef5fcf7b42928ad605de2855ef02598f..3f5a4b8379d4fbf832bb79701175ac8c96db00d5 100644
--- a/indra/newview/skins/default/xui/en/widgets/tab_container.xml
+++ b/indra/newview/skins/default/xui/en/widgets/tab_container.xml
@@ -20,12 +20,12 @@ label_pad_left - padding to the left of tab button labels
                tab_top_image_selected="TabTop_Middle_Selected"
                tab_bottom_image_unselected="Toolbar_Middle_Off"
                tab_bottom_image_selected="Toolbar_Middle_Selected"
-               tab_left_image_unselected="TabTop_Middle_Off"
-               tab_left_image_selected="TabTop_Middle_Selected"/>
+               tab_left_image_unselected="SegmentedBtn_Left_Disabled"
+               tab_left_image_selected="SegmentedBtn_Left_Off"/>
   <last_tab tab_top_image_unselected="TabTop_Right_Off"
                tab_top_image_selected="TabTop_Right_Selected"
                tab_bottom_image_unselected="Toolbar_Right_Off"
                tab_bottom_image_selected="Toolbar_Right_Selected"
-               tab_left_image_unselected="TabTop_Middle_Off"
-               tab_left_image_selected="TabTop_Middle_Selected"/>
+               tab_left_image_unselected="SegmentedBtn_Left_Disabled"
+               tab_left_image_selected="SegmentedBtn_Left_Off"/>
 </tab_container>