diff --git a/indra/llui/llaccordionctrl.cpp b/indra/llui/llaccordionctrl.cpp
index 673631f99ad7ec5fee6539218853027d900ecf61..28125ccaaf32fc4fde521578c8ab6e3aa51a10a7 100644
--- a/indra/llui/llaccordionctrl.cpp
+++ b/indra/llui/llaccordionctrl.cpp
@@ -40,6 +40,8 @@
 #include "llfocusmgr.h"
 #include "lllocalcliprect.h"
 
+#include "lltrans.h"
+
 #include "boost/bind.hpp"
 
 static const S32 DRAGGER_BAR_MARGIN = 4;
@@ -72,6 +74,7 @@ LLAccordionCtrl::LLAccordionCtrl(const Params& params):LLPanel(params)
 {
 	initNoTabsWidget(params.no_matched_tabs_text);
 
+	mNoVisibleTabsOrigString = LLTrans::getString(params.no_visible_tabs_text.initial_value().asString());
 	mSingleExpansion = params.single_expansion;
 	if(mFitParent && !mSingleExpansion)
 	{
@@ -386,7 +389,7 @@ void	LLAccordionCtrl::initNoTabsWidget(const LLTextBox::Params& tb_params)
 {
 	LLTextBox::Params tp = tb_params;
 	tp.rect(getLocalRect());
-	mNoMatchedTabsOrigString = tp.initial_value().asString();
+	mNoMatchedTabsOrigString = LLTrans::getString(tp.initial_value().asString());
 	mNoVisibleTabsHelpText = LLUICtrlFactory::create<LLTextBox>(tp, this);
 }
 
diff --git a/indra/newview/featuretable.txt b/indra/newview/featuretable.txt
index 1c763453dc86d097a90aefc5337242409d5b40a6..ccdb109d95d5d70b5e75660e2d7b21cbab39c81a 100644
--- a/indra/newview/featuretable.txt
+++ b/indra/newview/featuretable.txt
@@ -1,4 +1,4 @@
-version 21
+version 22
 
 // NOTE: This is mostly identical to featuretable_mac.txt with a few differences
 // Should be combined into one table
@@ -59,6 +59,7 @@ RenderTextureMemoryMultiple		1	1.0
 RenderShaderLightingMaxLevel	1	3
 SkyUseClassicClouds			1	1
 WatchdogDisabled				1	1
+RenderUseStreamVBO			1	1
 
 
 //
@@ -431,6 +432,10 @@ list ATIOldDriver
 RenderAvatarVP				0	0
 RenderAvatarCloth			0	0
 
+// ATI cards generally perform better when not using VBOs for streaming data
+
+list ATI
+RenderUseStreamVBO			1	0
 
 /// Tweaked NVIDIA
 
diff --git a/indra/newview/llagent.cpp b/indra/newview/llagent.cpp
index 345953f2e9cacf30b5e6f063ea3278d2a74b0ff6..4e5fdb1219dbf0a2444daf1738be5d74329803cc 100644
--- a/indra/newview/llagent.cpp
+++ b/indra/newview/llagent.cpp
@@ -3234,6 +3234,9 @@ bool LLAgent::teleportCore(bool is_local)
 	// hide land floater too - it'll be out of date
 	LLFloaterReg::hideInstance("about_land");
 
+	// hide the search floater (EXT-8276)
+	LLFloaterReg::hideInstance("search");
+
 	LLViewerParcelMgr::getInstance()->deselectLand();
 	LLViewerMediaFocus::getInstance()->clearFocus();
 
diff --git a/indra/newview/llagentcamera.cpp b/indra/newview/llagentcamera.cpp
index c70bbb985ff5e20056bea08fc132e64b025c9dfb..1ef9e34f87fe65a72682d68912568172093cce51 100644
--- a/indra/newview/llagentcamera.cpp
+++ b/indra/newview/llagentcamera.cpp
@@ -2065,6 +2065,7 @@ void LLAgentCamera::changeCameraToMouselook(BOOL animate)
 
 	// Menus should not remain open on switching to mouselook...
 	LLMenuGL::sMenuContainer->hideMenus();
+	LLUI::clearPopups();
 
 	// unpause avatar animation
 	gAgent.unpauseAnimation();
diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp
index f8cff4241225916f5441881fed143723b4955f2d..43f6be42b660293d22c45eddbe36ff056f7f14c9 100644
--- a/indra/newview/llappearancemgr.cpp
+++ b/indra/newview/llappearancemgr.cpp
@@ -403,7 +403,10 @@ void LLWearableHoldingPattern::checkMissingWearables()
 
 	for (S32 type = 0; type < LLWearableType::WT_COUNT; ++type)
 	{
-		llinfos << "type " << type << " requested " << requested_by_type[type] << " found " << found_by_type[type] << llendl;
+		if (requested_by_type[type] > found_by_type[type])
+		{
+			llwarns << "got fewer wearables than requested, type " << type << ": requested " << requested_by_type[type] << ", found " << found_by_type[type] << llendl;
+		}
 		if (found_by_type[type] > 0)
 			continue;
 		if (
@@ -670,12 +673,15 @@ bool LLWearableHoldingPattern::pollMissingWearables()
 	bool timed_out = isTimedOut();
 	bool missing_completed = isMissingCompleted();
 	bool done = timed_out || missing_completed;
-	
-	llinfos << "polling missing wearables, waiting for items " << mTypesToRecover.size()
-			<< " links " << mTypesToLink.size()
-			<< " wearables, timed out " << timed_out
-			<< " elapsed " << mWaitTime.getElapsedTimeF32()
-			<< " done " << done << llendl;
+
+	if (!done)
+	{
+		llinfos << "polling missing wearables, waiting for items " << mTypesToRecover.size()
+				<< " links " << mTypesToLink.size()
+				<< " wearables, timed out " << timed_out
+				<< " elapsed " << mWaitTime.getElapsedTimeF32()
+				<< " done " << done << llendl;
+	}
 
 	if (done)
 	{
@@ -795,12 +801,8 @@ void LLWearableHoldingPattern::onWearableAssetFetch(LLWearable *wearable)
 	}
 	
 	mResolved += 1;  // just counting callbacks, not successes.
-	llinfos << "onWearableAssetFetch, resolved count " << mResolved << " of requested " << getFoundList().size() << llendl;
-	if (wearable)
-	{
-		llinfos << "wearable found, type " << wearable->getType() << " asset " << wearable->getAssetID() << llendl;
-	}
-	else
+	llinfos << "resolved " << mResolved << "/" << getFoundList().size() << llendl;
+	if (!wearable)
 	{
 		llwarns << "no wearable found" << llendl;
 	}
@@ -830,10 +832,14 @@ void LLWearableHoldingPattern::onWearableAssetFetch(LLWearable *wearable)
 		LLFoundData& data = *iter;
 		if(wearable->getAssetID() == data.mAssetID)
 		{
-			data.mWearable = wearable;
 			// Failing this means inventory or asset server are corrupted in a way we don't handle.
-			llassert((data.mWearableType < LLWearableType::WT_COUNT) && (wearable->getType() == data.mWearableType));
-			break;
+			if ((data.mWearableType >= LLWearableType::WT_COUNT) || (wearable->getType() != data.mWearableType))
+			{
+				llwarns << "recovered wearable but type invalid. inventory wearable type: " << data.mWearableType << " asset wearable type: " << wearable->getType() << llendl;
+				break;
+			}
+
+			data.mWearable = wearable;
 		}
 	}
 }
@@ -945,7 +951,7 @@ const LLUUID LLAppearanceMgr::getBaseOutfitUUID()
 	return outfit_cat->getUUID();
 }
 
-bool LLAppearanceMgr::wearItemOnAvatar(const LLUUID& item_id_to_wear, bool do_update, bool replace)
+bool LLAppearanceMgr::wearItemOnAvatar(const LLUUID& item_id_to_wear, bool do_update, bool replace, LLPointer<LLInventoryCallback> cb)
 {
 	if (item_id_to_wear.isNull()) return false;
 
@@ -999,7 +1005,7 @@ bool LLAppearanceMgr::wearItemOnAvatar(const LLUUID& item_id_to_wear, bool do_up
 		// Remove existing body parts anyway because we must not be able to wear e.g. two skins.
 		removeCOFLinksOfType(item_to_wear->getWearableType(), false);
 
-		addCOFItemLink(item_to_wear, do_update);
+		addCOFItemLink(item_to_wear, do_update, cb);
 		break;
 	case LLAssetType::AT_OBJECT:
 		rez_attachment(item_to_wear, NULL);
@@ -1635,7 +1641,7 @@ void LLAppearanceMgr::updateAppearanceFromCOF(bool update_base_outfit_ordering)
 	// the saved outfit stored as a folder link
 	updateIsDirty();
 
-	dumpCat(getCOF(),"COF, start");
+	//dumpCat(getCOF(),"COF, start");
 
 	bool follow_folder_links = true;
 	LLUUID current_outfit_id = getCOF();
@@ -1718,7 +1724,7 @@ void LLAppearanceMgr::updateAppearanceFromCOF(bool update_base_outfit_ordering)
 	{
 		LLFoundData& found = *it;
 
-		llinfos << "waiting for onWearableAssetFetch callback, asset " << found.mAssetID.asString() << llendl;
+		lldebugs << "waiting for onWearableAssetFetch callback, asset " << found.mAssetID.asString() << llendl;
 
 		// Fetch the wearables about to be worn.
 		LLWearableList::instance().getAsset(found.mAssetID,
@@ -1953,9 +1959,10 @@ bool areMatchingWearables(const LLViewerInventoryItem *a, const LLViewerInventor
 class LLDeferredCOFLinkObserver: public LLInventoryObserver
 {
 public:
-	LLDeferredCOFLinkObserver(const LLUUID& item_id, bool do_update):
+	LLDeferredCOFLinkObserver(const LLUUID& item_id, bool do_update, LLPointer<LLInventoryCallback> cb = NULL):
 		mItemID(item_id),
-		mDoUpdate(do_update)
+		mDoUpdate(do_update),
+		mCallback(cb)
 	{
 	}
 
@@ -1969,7 +1976,7 @@ class LLDeferredCOFLinkObserver: public LLInventoryObserver
 		if (item)
 		{
 			gInventory.removeObserver(this);
-			LLAppearanceMgr::instance().addCOFItemLink(item,mDoUpdate);
+			LLAppearanceMgr::instance().addCOFItemLink(item,mDoUpdate,mCallback);
 			delete this;
 		}
 	}
@@ -1977,26 +1984,27 @@ class LLDeferredCOFLinkObserver: public LLInventoryObserver
 private:
 	const LLUUID mItemID;
 	bool mDoUpdate;
+	LLPointer<LLInventoryCallback> mCallback;
 };
 
 
 // BAP - note that this runs asynchronously if the item is not already loaded from inventory.
 // Dangerous if caller assumes link will exist after calling the function.
-void LLAppearanceMgr::addCOFItemLink(const LLUUID &item_id, bool do_update )
+void LLAppearanceMgr::addCOFItemLink(const LLUUID &item_id, bool do_update, LLPointer<LLInventoryCallback> cb)
 {
 	const LLInventoryItem *item = gInventory.getItem(item_id);
 	if (!item)
 	{
-		LLDeferredCOFLinkObserver *observer = new LLDeferredCOFLinkObserver(item_id, do_update);
+		LLDeferredCOFLinkObserver *observer = new LLDeferredCOFLinkObserver(item_id, do_update, cb);
 		gInventory.addObserver(observer);
 	}
 	else
 	{
-		addCOFItemLink(item, do_update);
+		addCOFItemLink(item, do_update, cb);
 	}
 }
 
-void LLAppearanceMgr::addCOFItemLink(const LLInventoryItem *item, bool do_update )
+void LLAppearanceMgr::addCOFItemLink(const LLInventoryItem *item, bool do_update, LLPointer<LLInventoryCallback> cb)
 {		
 	const LLViewerInventoryItem *vitem = dynamic_cast<const LLViewerInventoryItem*>(item);
 	if (!vitem)
@@ -2057,7 +2065,10 @@ void LLAppearanceMgr::addCOFItemLink(const LLInventoryItem *item, bool do_update
 	}
 	else
 	{
-		LLPointer<LLInventoryCallback> cb = do_update ? new ModifiedCOFCallback : 0;
+		if(do_update && cb.isNull())
+		{
+			cb = new ModifiedCOFCallback;
+		}
 		const std::string description = vitem->getIsLinkType() ? vitem->getDescription() : "";
 		link_inventory_item( gAgent.getID(),
 							 vitem->getLinkedUUID(),
@@ -2489,6 +2500,14 @@ void LLAppearanceMgr::removeItemFromAvatar(const LLUUID& id_to_remove)
 		}
 	default: break;
 	}
+
+	// *HACK: Force to remove garbage from COF.
+	// Unworn links or objects can't be processed by existed removing functionality
+	// since it is not designed for such cases. As example attachment object can't be removed
+	// since sever don't sends message _PREHASH_KillObject in that case.
+	// Also we can't check is link was successfully removed from COF since in case
+	// deleting attachment link removing performs asynchronously in process_kill_object callback.
+	removeCOFItemLinks(id_to_remove,false);
 }
 
 bool LLAppearanceMgr::moveWearable(LLViewerInventoryItem* item, bool closer_to_body)
diff --git a/indra/newview/llappearancemgr.h b/indra/newview/llappearancemgr.h
index 8834f8c395ab81ded8c1c476f19c7b1e98bea14c..84c911c038c1a8fddf24bf0427fa275e08d3ed6a 100644
--- a/indra/newview/llappearancemgr.h
+++ b/indra/newview/llappearancemgr.h
@@ -99,7 +99,7 @@ class LLAppearanceMgr: public LLSingleton<LLAppearanceMgr>
 	const LLUUID getBaseOutfitUUID();
 
 	// Wear/attach an item (from a user's inventory) on the agent
-	bool wearItemOnAvatar(const LLUUID& item_to_wear, bool do_update = true, bool replace = false);
+	bool wearItemOnAvatar(const LLUUID& item_to_wear, bool do_update = true, bool replace = false, LLPointer<LLInventoryCallback> cb = NULL);
 
 	// Update the displayed outfit name in UI.
 	void updatePanelOutfitName(const std::string& name);
@@ -124,8 +124,8 @@ class LLAppearanceMgr: public LLSingleton<LLAppearanceMgr>
 				 LLPointer<LLInventoryCallback> cb);
 
 	// Add COF link to individual item.
-	void addCOFItemLink(const LLUUID& item_id, bool do_update = true);
-	void addCOFItemLink(const LLInventoryItem *item, bool do_update = true);
+	void addCOFItemLink(const LLUUID& item_id, bool do_update = true, LLPointer<LLInventoryCallback> cb = NULL);
+	void addCOFItemLink(const LLInventoryItem *item, bool do_update = true, LLPointer<LLInventoryCallback> cb = NULL);
 
 	// Remove COF entries
 	void removeCOFItemLinks(const LLUUID& item_id, bool do_update = true);
@@ -175,6 +175,8 @@ class LLAppearanceMgr: public LLSingleton<LLAppearanceMgr>
 
 	bool isOutfitLocked() { return mOutfitLocked; }
 
+	bool isInUpdateAppearanceFromCOF() { return mIsInUpdateAppearanceFromCOF; }
+
 protected:
 	LLAppearanceMgr();
 	~LLAppearanceMgr();
diff --git a/indra/newview/llavataractions.cpp b/indra/newview/llavataractions.cpp
index 5bc3b3ac8dc73c4c0cf232a552d19dde04d1055f..752a2e750479359a1afc96ae2cd27dec14335936 100644
--- a/indra/newview/llavataractions.cpp
+++ b/indra/newview/llavataractions.cpp
@@ -60,6 +60,7 @@
 #include "llimview.h"			// for gIMMgr
 #include "llmutelist.h"
 #include "llnotificationsutil.h"	// for LLNotificationsUtil
+#include "llpaneloutfitedit.h"
 #include "llrecentpeople.h"
 #include "llsidetray.h"
 #include "lltrans.h"
@@ -435,13 +436,29 @@ namespace action_give_inventory
 {
 	typedef std::set<LLUUID> uuid_set_t;
 
+	/**
+	 * Returns a pointer to 'Add More' inventory panel of Edit Outfit SP.
+	 */
+	static LLInventoryPanel* get_outfit_editor_inventory_panel()
+	{
+		LLPanelOutfitEdit* panel_outfit_edit = dynamic_cast<LLPanelOutfitEdit*>(LLSideTray::getInstance()->getPanel("panel_outfit_edit"));
+		if (NULL == panel_outfit_edit) return NULL;
+
+		LLInventoryPanel* inventory_panel = panel_outfit_edit->findChild<LLInventoryPanel>("folder_view");
+		return inventory_panel;
+	}
+
 	/**
 	 * Checks My Inventory visibility.
 	 */
 	static bool is_give_inventory_acceptable()
 	{
 		LLInventoryPanel* active_panel = LLInventoryPanel::getActiveInventoryPanel(FALSE);
-		if (NULL == active_panel) return false;
+		if (!active_panel)
+		{
+			active_panel = get_outfit_editor_inventory_panel();
+			if (!active_panel) return false;
+		}
 
 		// check selection in the panel
 		const uuid_set_t inventory_selected_uuids = active_panel->getRootFolder()->getSelectionList();
@@ -621,9 +638,10 @@ namespace action_give_inventory
 
 
 		LLInventoryPanel* active_panel = LLInventoryPanel::getActiveInventoryPanel(FALSE);
-		if (NULL == active_panel)
+		if (!active_panel)
 		{
-			return;
+			active_panel = get_outfit_editor_inventory_panel();
+			if (!active_panel) return;
 		}
 
 		const uuid_set_t inventory_selected_uuids = active_panel->getRootFolder()->getSelectionList();
diff --git a/indra/newview/llcofwearables.cpp b/indra/newview/llcofwearables.cpp
index d83706de5228812ec9628b4c3cf648d7cd91351d..4c0f51056ddeaf6677d1042f32a3bb689316a5e9 100644
--- a/indra/newview/llcofwearables.cpp
+++ b/indra/newview/llcofwearables.cpp
@@ -79,9 +79,7 @@ class CofContextMenu : public LLListContextMenu
 		}
 
 		// Set proper label for the "Create new <WEARABLE_TYPE>" menu item.
-		LLStringUtil::format_map_t args;
-		args["[WEARABLE_TYPE]"] = LLWearableType::getTypeDefaultNewName(w_type);
-		std::string new_label = LLTrans::getString("CreateNewWearable", args);
+		std::string new_label = LLTrans::getString("create_new_" + LLWearableType::getTypeName(w_type));
 		menu_item->setLabel(new_label);
 	}
 
@@ -333,6 +331,10 @@ BOOL LLCOFWearables::postBuild()
 	mBodyPartsTab = getChild<LLAccordionCtrlTab>("tab_body_parts");
 	mBodyPartsTab->setDropDownStateChangedCallback(boost::bind(&LLCOFWearables::onAccordionTabStateChanged, this, _1, _2));
 
+	mTab2AssetType[mClothingTab] = LLAssetType::AT_CLOTHING;
+	mTab2AssetType[mAttachmentsTab] = LLAssetType::AT_OBJECT;
+	mTab2AssetType[mBodyPartsTab] = LLAssetType::AT_BODYPART;
+
 	return LLPanel::postBuild();
 }
 
@@ -632,49 +634,17 @@ LLAssetType::EType LLCOFWearables::getExpandedAccordionAssetType()
 
 	static type_map_t type_map;
 	static LLAccordionCtrl* accordion_ctrl = getChild<LLAccordionCtrl>("cof_wearables_accordion");
+	const LLAccordionCtrlTab* expanded_tab = accordion_ctrl->getExpandedTab();
 
-	if (type_map.empty())
-	{
-		type_map["tab_clothing"] = LLAssetType::AT_CLOTHING;
-		type_map["tab_attachments"] = LLAssetType::AT_OBJECT;
-		type_map["tab_body_parts"] = LLAssetType::AT_BODYPART;
-	}
-
-	const LLAccordionCtrlTab* tab = accordion_ctrl->getExpandedTab();
-	LLAssetType::EType result = LLAssetType::AT_NONE;
-
-	if (tab)
-	{
-		type_map_t::iterator i = type_map.find(tab->getName());
-		llassert(i != type_map.end());
-		result = i->second;
-	}
-
-	return result;
+	return get_if_there(mTab2AssetType, expanded_tab, LLAssetType::AT_NONE);
 }
 
 LLAssetType::EType LLCOFWearables::getSelectedAccordionAssetType()
 {
-	//*TODO share the code with ::getExpandedAccordionAssetType(...)
 	static LLAccordionCtrl* accordion_ctrl = getChild<LLAccordionCtrl>("cof_wearables_accordion");
 	const LLAccordionCtrlTab* selected_tab = accordion_ctrl->getSelectedTab();
-	
-	if (selected_tab == mClothingTab)
-	{
-		return LLAssetType::AT_CLOTHING;
-	} 
-	else if (selected_tab == mAttachmentsTab)
-	{
-		return LLAssetType::AT_OBJECT;
-	}
-	else if (selected_tab == mBodyPartsTab)
-	{
-		return LLAssetType::AT_BODYPART;
-	}
-	else
-	{
-		return LLAssetType::AT_NONE;
-	}
+
+	return get_if_there(mTab2AssetType, selected_tab, LLAssetType::AT_NONE);
 }
 
 void LLCOFWearables::onListRightClick(LLUICtrl* ctrl, S32 x, S32 y, LLListContextMenu* menu)
diff --git a/indra/newview/llcofwearables.h b/indra/newview/llcofwearables.h
index de148e0d46c6f9b89ebd20b4783929e06f7fb65d..0518d59df36f452a6be9045c7665109a418e399d 100644
--- a/indra/newview/llcofwearables.h
+++ b/indra/newview/llcofwearables.h
@@ -116,6 +116,8 @@ class LLCOFWearables : public LLPanel
 
 	LLAccordionCtrlTab* mLastSelectedTab;
 
+	std::map<const LLAccordionCtrlTab*, LLAssetType::EType> mTab2AssetType;
+
 	LLCOFCallbacks mCOFCallbacks;
 
 	LLListContextMenu* mClothingMenu;
diff --git a/indra/newview/lldrawable.h b/indra/newview/lldrawable.h
index 651dabff9eaa3805f9ff3deeed41b2c0fab79f7a..08972853c3a03c4c88f64e984379a6398ed31072 100644
--- a/indra/newview/lldrawable.h
+++ b/indra/newview/lldrawable.h
@@ -313,8 +313,20 @@ class LLDrawable : public LLRefCount
 
 inline LLFace* LLDrawable::getFace(const S32 i) const
 {
-	llassert((U32)i < mFaces.size());
-	llassert(mFaces[i]);
+	//switch these asserts to llerrs -- davep
+	//llassert((U32)i < mFaces.size());
+	//llassert(mFaces[i]);
+
+	if ((U32) i >= mFaces.size())
+	{
+		llerrs << "Invalid face index." << llendl;
+	}
+
+	if (!mFaces[i])
+	{
+		llerrs << "Null face found." << llendl;
+	}
+	
 	return mFaces[i];
 }
 
diff --git a/indra/newview/llface.h b/indra/newview/llface.h
index 67dd97e6f7ad0954a8a80e84aadbd2ea2f02fea4..de533a6864b63e1c207e8a69523a711b66a316fb 100644
--- a/indra/newview/llface.h
+++ b/indra/newview/llface.h
@@ -279,7 +279,7 @@ class LLFace
 	{
 		bool operator()(const LLFace* const& lhs, const LLFace* const& rhs)
 		{
-			return lhs->mDistance > rhs->mDistance; // farthest = first
+			return !lhs || (rhs && (lhs->mDistance > rhs->mDistance)); // farthest = first
 		}
 	};
 	
diff --git a/indra/newview/llfloaterland.cpp b/indra/newview/llfloaterland.cpp
index 98f940c23384dbe4965951b225edb6be1cbbd269..913bb676b0479d2ddde32af6e16839736f0d248e 100644
--- a/indra/newview/llfloaterland.cpp
+++ b/indra/newview/llfloaterland.cpp
@@ -58,6 +58,7 @@
 #include "llpanellandaudio.h"
 #include "llpanellandmedia.h"
 #include "llradiogroup.h"
+#include "llresmgr.h"					// getMonetaryString
 #include "llscrolllistctrl.h"
 #include "llscrolllistitem.h"
 #include "llscrolllistcell.h"
@@ -739,7 +740,8 @@ void LLPanelLandGeneral::refresh()
 				cost_per_sqm = (F32)parcel->getSalePrice() / (F32)area;
 			}
 
-			mSaleInfoForSale1->setTextArg("[PRICE]", llformat("%d", parcel->getSalePrice()));
+			S32 price = parcel->getSalePrice();
+			mSaleInfoForSale1->setTextArg("[PRICE]", LLResMgr::getInstance()->getMonetaryString(price));
 			mSaleInfoForSale1->setTextArg("[PRICE_PER_SQM]", llformat("%.1f", cost_per_sqm));
 			if (can_be_sold)
 			{
diff --git a/indra/newview/llinventorybridge.cpp b/indra/newview/llinventorybridge.cpp
index 1ddbaaa95fb74f2278757c1b8f77fbc4de80b461..7ec6440dc3790e0a720c060c773b13b84a319732 100644
--- a/indra/newview/llinventorybridge.cpp
+++ b/indra/newview/llinventorybridge.cpp
@@ -2998,7 +2998,7 @@ BOOL LLFolderBridge::dragItemIntoFolder(LLInventoryItem* inv_item,
 					// BAP - should skip if dup.
 					if (move_is_into_current_outfit)
 					{
-						LLAppearanceMgr::instance().addCOFItemLink(inv_item);
+						LLAppearanceMgr::instance().wearItemOnAvatar(inv_item->getUUID(), true, true);
 					}
 					else
 					{
diff --git a/indra/newview/llpanelclassified.cpp b/indra/newview/llpanelclassified.cpp
index 70a7bf644b79bc307f2f77fc25d4403f6f392fa9..7f027d299b43d88c8c567d225da08691114c4355 100644
--- a/indra/newview/llpanelclassified.cpp
+++ b/indra/newview/llpanelclassified.cpp
@@ -1792,6 +1792,7 @@ void LLPanelClassifiedEdit::onOpen(const LLSD& key)
 
 	enableVerbs(is_new);
 	enableEditing(is_new);
+	showEditing(!is_new);
 	resetDirty();
 	setInfoLoaded(false);
 }
@@ -2011,6 +2012,12 @@ void LLPanelClassifiedEdit::enableEditing(bool enable)
 	childSetEnabled("auto_renew", enable);
 }
 
+void LLPanelClassifiedEdit::showEditing(bool show)
+{
+	childSetVisible("price_for_listing_label", show);
+	childSetVisible("price_for_listing", show);
+}
+
 std::string LLPanelClassifiedEdit::makeClassifiedName()
 {
 	std::string name;
diff --git a/indra/newview/llpanelclassified.h b/indra/newview/llpanelclassified.h
index 1157649a168493406bdc5b5f9f4b76bf31dba480..eaf652ca06390765c8ee07c8db86b1cb1910e5c4 100644
--- a/indra/newview/llpanelclassified.h
+++ b/indra/newview/llpanelclassified.h
@@ -416,6 +416,8 @@ class LLPanelClassifiedEdit : public LLPanelClassifiedInfo
 
 	void enableEditing(bool enable);
 
+	void showEditing(bool show);
+
 	std::string makeClassifiedName();
 
 	void setPriceForListing(S32 price);
diff --git a/indra/newview/llpaneleditwearable.cpp b/indra/newview/llpaneleditwearable.cpp
index 26f0b3f48fca79421811b2e2673dde6615319711..14f05bdb1730640889e6d9b2de0e056947db0ce3 100644
--- a/indra/newview/llpaneleditwearable.cpp
+++ b/indra/newview/llpaneleditwearable.cpp
@@ -963,8 +963,7 @@ void LLPanelEditWearable::updatePanelPickerControls(LLWearableType::EType type)
 		for_each_picker_ctrl_entry <LLColorSwatchCtrl> (panel, type, boost::bind(update_color_swatch_ctrl, this, _1, _2));
 		for_each_picker_ctrl_entry <LLTextureCtrl>     (panel, type, boost::bind(update_texture_ctrl, this, _1, _2));
 	}
-
-	if (!is_modifiable || !is_copyable)
+	else
 	{
 		// Disable controls
 		for_each_picker_ctrl_entry <LLColorSwatchCtrl> (panel, type, boost::bind(set_enabled_color_swatch_ctrl, false, _1, _2));
diff --git a/indra/newview/llpaneloutfitedit.cpp b/indra/newview/llpaneloutfitedit.cpp
index c397dd509243db67548a2023c87b55be1dfb727c..f8350a56ef1788f681895a69547ff97bde61959d 100644
--- a/indra/newview/llpaneloutfitedit.cpp
+++ b/indra/newview/llpaneloutfitedit.cpp
@@ -196,7 +196,7 @@ class LLPanelOutfitEditGearMenu
 
 			LLMenuItemCallGL::Params p;
 			p.name = type_name;
-			p.label = LLWearableType::getTypeDefaultNewName(type);
+			p.label = LLTrans::getString(LLWearableType::getTypeDefaultNewName(type));
 			p.on_click.function_name = "Wearable.Create";
 			p.on_click.parameter = LLSD(type_name);
 
@@ -567,13 +567,20 @@ void LLPanelOutfitEdit::onSearchEdit(const std::string& string)
 
 void LLPanelOutfitEdit::onPlusBtnClicked(void)
 {
-	LLUUID selected_id;
-	getCurrentItemUUID(selected_id);
-
-	if (selected_id.isNull()) return;
+	uuid_vec_t selected_items;
+	getSelectedItemsUUID(selected_items);
 
-	//replacing instead of adding the item
-	LLAppearanceMgr::getInstance()->wearItemOnAvatar(selected_id, true, true);
+	LLPointer<LLInventoryCallback> link_waiter = new LLUpdateAppearanceOnDestroy;
+	
+	for(uuid_vec_t::iterator iter = selected_items.begin(); iter != selected_items.end(); iter++)
+	{
+		LLUUID selected_id = *iter;
+		if (!selected_id.isNull())
+		{
+			//replacing instead of adding the item
+			LLAppearanceMgr::getInstance()->wearItemOnAvatar(selected_id, false, true, link_waiter);
+		}
+	}
 }
 
 void LLPanelOutfitEdit::onVisibilityChange()
diff --git a/indra/newview/llscreenchannel.cpp b/indra/newview/llscreenchannel.cpp
index ef89c07c60dbb2c2fab2cb8efddd8e3aa457e4ec..40c99edecda056c4a26f9794fa057a18aca6a4c0 100644
--- a/indra/newview/llscreenchannel.cpp
+++ b/indra/newview/llscreenchannel.cpp
@@ -297,6 +297,12 @@ void LLScreenChannel::onToastDestroyed(LLToast* toast)
 	{
 		mStoredToastList.erase(it);
 	}
+
+	// if destroyed toast is hovered - reset hovered
+	if (mHoveredToast == toast)
+	{
+		mHoveredToast = NULL;
+	}
 }
 
 
diff --git a/indra/newview/llspatialpartition.cpp b/indra/newview/llspatialpartition.cpp
index d6e9256feea2af8ad1461e46505e914117135fb2..86faeeaa731abcce9b6850de58293e83278f829b 100644
--- a/indra/newview/llspatialpartition.cpp
+++ b/indra/newview/llspatialpartition.cpp
@@ -300,6 +300,7 @@ LLSpatialGroup::~LLSpatialGroup()
 	}
 
 	delete [] mOcclusionVerts;
+	mOcclusionVerts = NULL;
 
 	LLMemType mt(LLMemType::MTYPE_SPACE_PARTITION);
 	clearDrawMap();
diff --git a/indra/newview/llspatialpartition.h b/indra/newview/llspatialpartition.h
index 7896488379e0d80dc8aa7f1b808032648117787f..48070cc438ac5b19356859de6d8217760ab45917 100644
--- a/indra/newview/llspatialpartition.h
+++ b/indra/newview/llspatialpartition.h
@@ -164,8 +164,6 @@ class LLSpatialGroup : public LLOctreeListener<LLDrawable>
 	static BOOL sNoDelete; //deletion of spatial groups and draw info not allowed if TRUE
 
 	typedef std::vector<LLPointer<LLSpatialGroup> > sg_vector_t;
-	typedef std::set<LLPointer<LLSpatialGroup> > sg_set_t;
-	typedef std::list<LLPointer<LLSpatialGroup> > sg_list_t;
 	typedef std::vector<LLPointer<LLSpatialBridge> > bridge_list_t;
 	typedef std::vector<LLPointer<LLDrawInfo> > drawmap_elem_t; 
 	typedef std::map<U32, drawmap_elem_t > draw_map_t;	
diff --git a/indra/newview/lltoolpie.cpp b/indra/newview/lltoolpie.cpp
index ae244cd8a147691def38d4bfcbc8a55a54f00078..95c4f01e4698acab8db68faafb00f97cd27fddbd 100644
--- a/indra/newview/lltoolpie.cpp
+++ b/indra/newview/lltoolpie.cpp
@@ -53,6 +53,7 @@
 #include "llmediaentry.h"
 #include "llmenugl.h"
 #include "llmutelist.h"
+#include "llresmgr.h"  // getMonetaryString
 #include "llselectmgr.h"
 #include "lltoolfocus.h"
 #include "lltoolgrab.h"
@@ -808,7 +809,8 @@ BOOL LLToolPie::handleTooltipLand(std::string line, std::string tooltip_msg)
 	if (hover_parcel && hover_parcel->getParcelFlag(PF_FOR_SALE))
 	{
 		LLStringUtil::format_map_t args;
-		args["[AMOUNT]"] = llformat("%d", hover_parcel->getSalePrice());
+		S32 price = hover_parcel->getSalePrice();
+		args["[AMOUNT]"] = LLResMgr::getInstance()->getMonetaryString(price);
 		line = LLTrans::getString("TooltipForSaleL$", args);
 		tooltip_msg.append(line);
 		tooltip_msg.push_back('\n');
@@ -906,13 +908,14 @@ BOOL LLToolPie::handleTooltipObject( LLViewerObject* hover_object, std::string l
 			 || !existing_inspector->getVisible()
 			 || existing_inspector->getKey()["object_id"].asUUID() != hover_object->getID()))
 		{
-						
+
 			// Add price to tooltip for items on sale
 			bool for_sale = for_sale_selection(nodep);
 			if(for_sale)
 			{
 				LLStringUtil::format_map_t args;
-				args["[PRICE]"] = llformat ("%d", nodep->mSaleInfo.getSalePrice());
+				S32 price = nodep->mSaleInfo.getSalePrice();
+				args["[AMOUNT]"] = LLResMgr::getInstance()->getMonetaryString(price);
 				tooltip_msg.append(LLTrans::getString("TooltipPrice", args) );
 			}
 
diff --git a/indra/newview/llviewerinventory.cpp b/indra/newview/llviewerinventory.cpp
index 3430f265ae5c0935432b8d2b4f49348ef6f43855..1ff4d6db9e860dcca4a9e72692f85ab663f65704 100644
--- a/indra/newview/llviewerinventory.cpp
+++ b/indra/newview/llviewerinventory.cpp
@@ -625,7 +625,15 @@ bool LLViewerInventoryCategory::fetch()
 		// AIS folks are aware of the issue and have a fix in process.
 		// see ticket for details.
 
-		std::string url = gAgent.getRegion()->getCapability("WebFetchInventoryDescendents");
+		std::string url;
+		if (gAgent.getRegion())
+		{
+			url = gAgent.getRegion()->getCapability("WebFetchInventoryDescendents");
+		}
+		else
+		{
+			llwarns << "agent region is null" << llendl;
+		}
 		if (!url.empty()) //Capability found.  Build up LLSD and use it.
 		{
 			LLInventoryModelBackgroundFetch::instance().start(mUUID, false);			
diff --git a/indra/newview/llviewerobject.cpp b/indra/newview/llviewerobject.cpp
index 9a2866832a98e133cf39b056084dbfa58a85b249..6d93de23837df9c9d9daf5e79d9cf82780ac8e62 100644
--- a/indra/newview/llviewerobject.cpp
+++ b/indra/newview/llviewerobject.cpp
@@ -765,12 +765,19 @@ U32 LLViewerObject::processUpdateMessage(LLMessageSystem *mesgsys,
 	
 	{
 		LLViewerRegion* regionp = LLWorld::getInstance()->getRegionFromHandle(region_handle);
-		if(regionp != mRegionp && regionp && mRegionp)
+		if(regionp != mRegionp && regionp && mRegionp)//region cross
 		{
+			//this is the redundant position and region update, but it is necessary in case the viewer misses the following 
+			//position and region update messages from sim.
+			//this redundant update should not cause any problems.
 			LLVector3 delta_pos =  mRegionp->getOriginAgent() - regionp->getOriginAgent();
-			setPosition(getPosition() + delta_pos) ; //update the region position immediately.		
+			setPositionParent(getPosition() + delta_pos); //update to the new region position immediately.
+			setRegion(regionp) ; //change the region.
+		}
+		else
+		{
+			mRegionp = regionp ;
 		}
-		mRegionp = regionp ;
 	}	
 	
 	if (!mRegionp)
diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index 844ad6ca2def9d17f4871cae62f8815d30a06523..47e35ca0c40d9c23696aa0135884c897e5d5cb2c 100644
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -2095,8 +2095,10 @@ void LLVOAvatar::computeBodySize()
 	if (new_body_size != mBodySize)
 	{
 		mBodySize = new_body_size;
-		if (isSelf())
+
+		if (isSelf() && !LLAppearanceMgr::instance().isInUpdateAppearanceFromCOF())
 		{	// notify simulator of change in size
+			// but not if we are in the middle of updating appearance
 			gAgent.sendAgentSetAppearance();
 		}
 	}
diff --git a/indra/newview/llvotree.cpp b/indra/newview/llvotree.cpp
index eb5b6c6618dc6a86e86dacd82eb3cf353f73291d..5431aec07c2bb798b40ae12997c3ce92f54f6968 100644
--- a/indra/newview/llvotree.cpp
+++ b/indra/newview/llvotree.cpp
@@ -313,7 +313,10 @@ U32 LLVOTree::processUpdateMessage(LLMessageSystem *mesgsys,
 	//
 	//  Load Species-Specific data 
 	//
+	static const S32 MAX_TREE_TEXTURE_VIRTURE_SIZE_RESET_INTERVAL = 32 ; //frames.
 	mTreeImagep = LLViewerTextureManager::getFetchedTexture(sSpeciesTable[mSpecies]->mTextureID, TRUE, LLViewerTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE);
+	mTreeImagep->setMaxVirtualSizeResetInterval(MAX_TREE_TEXTURE_VIRTURE_SIZE_RESET_INTERVAL); //allow to wait for at most 16 frames to reset virtual size.
+
 	mBranchLength = sSpeciesTable[mSpecies]->mBranchLength;
 	mTrunkLength = sSpeciesTable[mSpecies]->mTrunkLength;
 	mLeafScale = sSpeciesTable[mSpecies]->mLeafScale;
diff --git a/indra/newview/llwearableitemslist.cpp b/indra/newview/llwearableitemslist.cpp
index 9f9a9bef352b9c4e72a5247790c5beccbf6ceae9..3887f646186bfbed83028b18f4b96d6fbb81af7f 100644
--- a/indra/newview/llwearableitemslist.cpp
+++ b/indra/newview/llwearableitemslist.cpp
@@ -576,8 +576,8 @@ LLContextMenu* LLWearableItemsList::ContextMenu::createMenu()
 	const uuid_vec_t& ids = mUUIDs;		// selected items IDs
 	LLUUID selected_id = ids.front();	// ID of the first selected item
 
-	functor_t wear = boost::bind(&LLAppearanceMgr::wearItemOnAvatar, LLAppearanceMgr::getInstance(), _1, true, true);
-	functor_t add = boost::bind(&LLAppearanceMgr::wearItemOnAvatar, LLAppearanceMgr::getInstance(), _1, true, false);
+	functor_t wear = boost::bind(&LLAppearanceMgr::wearItemOnAvatar, LLAppearanceMgr::getInstance(), _1, true, true, LLPointer<LLInventoryCallback>(NULL));
+	functor_t add = boost::bind(&LLAppearanceMgr::wearItemOnAvatar, LLAppearanceMgr::getInstance(), _1, true, false, LLPointer<LLInventoryCallback>(NULL));
 	functor_t take_off = boost::bind(&LLAppearanceMgr::removeItemFromAvatar, LLAppearanceMgr::getInstance(), _1);
 
 	// Register handlers common for all wearable types.
@@ -725,10 +725,8 @@ void LLWearableItemsList::ContextMenu::updateItemsLabels(LLContextMenu* menu)
 	LLViewerInventoryItem* item = gInventory.getLinkedItem(mUUIDs.back());
 	if (!item || !item->isWearableType()) return;
 
-	LLStringUtil::format_map_t args;
 	LLWearableType::EType w_type = item->getWearableType();
-	args["[WEARABLE_TYPE]"] = LLWearableType::getTypeDefaultNewName(w_type);
-	std::string new_label = LLTrans::getString("CreateNewWearable", args);
+	std::string new_label = LLTrans::getString("create_new_" + LLWearableType::getTypeName(w_type));
 
 	LLMenuItemGL* menu_item = menu->getChild<LLMenuItemGL>("create_new");
 	menu_item->setLabel(new_label);
diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp
index 3716a5e9d9a7b950e6d31246d63cabdd958e9f06..7d0f763bd1ccc23ea6a36ab1fd5de9c781df1304 100644
--- a/indra/newview/pipeline.cpp
+++ b/indra/newview/pipeline.cpp
@@ -1794,7 +1794,7 @@ void LLPipeline::rebuildPriorityGroups()
 	assertInitialized();
 
 	// Iterate through all drawables on the priority build queue,
-	for (LLSpatialGroup::sg_list_t::iterator iter = mGroupQ1.begin();
+	for (LLSpatialGroup::sg_vector_t::iterator iter = mGroupQ1.begin();
 		 iter != mGroupQ1.end(); ++iter)
 	{
 		LLSpatialGroup* group = *iter;
@@ -2253,7 +2253,6 @@ void LLPipeline::stateSort(LLCamera& camera, LLCullResult &result)
 			}
 		}
 	}
-	llpushcallstacks ;
 	{
 		LLFastTimer ftm(FTM_STATESORT_DRAWABLE);
 		for (LLCullResult::drawable_list_t::iterator iter = sCull->beginVisibleList();
@@ -2266,15 +2265,12 @@ void LLPipeline::stateSort(LLCamera& camera, LLCullResult &result)
 			}
 		}
 	}
-	llpushcallstacks ;	
 	{
 		LLFastTimer ftm(FTM_CLIENT_COPY);
 		LLVertexBuffer::clientCopy();
 	}
-	llpushcallstacks ;
 	
-	postSort(camera);
-	llpushcallstacks ;
+	postSort(camera);	
 }
 
 void LLPipeline::stateSort(LLSpatialGroup* group, LLCamera& camera)
@@ -2544,6 +2540,7 @@ void LLPipeline::postSort(LLCamera& camera)
 
 	assertInitialized();
 
+	llpushcallstacks ;
 	//rebuild drawable geometry
 	for (LLCullResult::sg_list_t::iterator i = sCull->beginDrawableGroups(); i != sCull->endDrawableGroups(); ++i)
 	{
@@ -2554,7 +2551,7 @@ void LLPipeline::postSort(LLCamera& camera)
 			group->rebuildGeom();
 		}
 	}
-
+	llpushcallstacks ;
 	//rebuild groups
 	sCull->assertDrawMapsEmpty();
 
@@ -2574,6 +2571,7 @@ void LLPipeline::postSort(LLCamera& camera)
 
 
 	rebuildPriorityGroups();
+	llpushcallstacks ;
 
 	const S32 bin_count = 1024*8;
 		
@@ -2675,7 +2673,7 @@ void LLPipeline::postSort(LLCamera& camera)
 
 		std::sort(sCull->beginAlphaGroups(), sCull->endAlphaGroups(), LLSpatialGroup::CompareDepthGreater());
 	}
-	
+	llpushcallstacks ;
 	// only render if the flag is set. The flag is only set if we are in edit mode or the toggle is set in the menus
 	if (LLFloaterReg::instanceVisible("beacons") && !sShadowRender)
 	{
@@ -2723,7 +2721,7 @@ void LLPipeline::postSort(LLCamera& camera)
 			forAllVisibleDrawables(renderSoundHighlights);
 		}
 	}
-
+	llpushcallstacks ;
 	// If managing your telehub, draw beacons at telehub and currently selected spawnpoint.
 	if (LLFloaterTelehub::renderBeacons())
 	{
@@ -2753,6 +2751,7 @@ void LLPipeline::postSort(LLCamera& camera)
 	}
 
 	//LLSpatialGroup::sNoDelete = FALSE;
+	llpushcallstacks ;
 }
 
 
diff --git a/indra/newview/pipeline.h b/indra/newview/pipeline.h
index 89649a0682440914e07b5d3f8cfd7bad1fd9d129..862bfc2f30e0042b7b9702fd72cc8d29c0981084 100644
--- a/indra/newview/pipeline.h
+++ b/indra/newview/pipeline.h
@@ -584,7 +584,7 @@ class LLPipeline
 	//
 	LLDrawable::drawable_list_t 	mBuildQ1; // priority
 	LLDrawable::drawable_list_t 	mBuildQ2; // non-priority
-	LLSpatialGroup::sg_list_t		mGroupQ1; //priority
+	LLSpatialGroup::sg_vector_t		mGroupQ1; //priority
 	LLSpatialGroup::sg_vector_t		mGroupQ2; // non-priority
 
 	LLViewerObject::vobj_list_t		mCreateQ;
diff --git a/indra/newview/skins/default/textures/icons/Edit_Wrench.png b/indra/newview/skins/default/textures/icons/Edit_Wrench.png
index 1c43960d02d811fd10b198a56adf5fb030fbc307..250697b4b1d03ccee8bb45dd3ecd2a1cbaced5c8 100644
Binary files a/indra/newview/skins/default/textures/icons/Edit_Wrench.png and b/indra/newview/skins/default/textures/icons/Edit_Wrench.png differ
diff --git a/indra/newview/skins/default/textures/icons/Hierarchy_View_On.png b/indra/newview/skins/default/textures/icons/Hierarchy_View_On.png
index c590a5a5d3226221fc9ca60fe4304af2657ad01a..296311e7979c7f38b20dd77f1f78288b6ae243fc 100644
Binary files a/indra/newview/skins/default/textures/icons/Hierarchy_View_On.png and b/indra/newview/skins/default/textures/icons/Hierarchy_View_On.png differ
diff --git a/indra/newview/skins/default/textures/icons/Shop.png b/indra/newview/skins/default/textures/icons/Shop.png
index 9d091fed44fadaa9867e69821a4e381a481064e5..81c13eeabd3af1c751e4b80ad7c626bf91ed1c2c 100644
Binary files a/indra/newview/skins/default/textures/icons/Shop.png and b/indra/newview/skins/default/textures/icons/Shop.png differ
diff --git a/indra/newview/skins/default/xui/da/strings.xml b/indra/newview/skins/default/xui/da/strings.xml
index 32f37c038e24fac21def4b821c0b643da16dabd0..71c9f74dc03a158b139a96bf3cc98413e3051fd9 100644
--- a/indra/newview/skins/default/xui/da/strings.xml
+++ b/indra/newview/skins/default/xui/da/strings.xml
@@ -233,7 +233,7 @@
 		Klik for at starte secondlife:// kommando
 	</string>
 	<string name="CurrentURL" value=" Nuværende URL: [CurrentURL]"/>
-	<string name="TooltipPrice" value="L$[PRICE]-"/>
+	<string name="TooltipPrice" value="L$[AMOUNT]: "/>
 	<string name="SLurlLabelTeleport">
 		Teleportér til
 	</string>
diff --git a/indra/newview/skins/default/xui/de/menu_cof_clothing.xml b/indra/newview/skins/default/xui/de/menu_cof_clothing.xml
index 5cf31791ba19f7566b262625fcf804d166fa5046..7fced273a7892774d6fbd5a94935c67eda5e02cf 100644
--- a/indra/newview/skins/default/xui/de/menu_cof_clothing.xml
+++ b/indra/newview/skins/default/xui/de/menu_cof_clothing.xml
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu name="COF Clothing">
 	<menu_item_call label="Ausziehen" name="take_off"/>
+	<menu_item_call label="Ersetzen" name="replace"/>
 	<menu_item_call label="Eine Kategorie nach oben" name="move_up"/>
 	<menu_item_call label="Eine Kategorie nach unten" name="move_down"/>
 	<menu_item_call label="Bearbeiten" name="edit"/>
diff --git a/indra/newview/skins/default/xui/de/panel_edit_alpha.xml b/indra/newview/skins/default/xui/de/panel_edit_alpha.xml
index b6c53be778fdb4037a42bc9a4ac8f4e053ae3e0e..4b48950341771110c8840ce498248cfb9d475757 100644
--- a/indra/newview/skins/default/xui/de/panel_edit_alpha.xml
+++ b/indra/newview/skins/default/xui/de/panel_edit_alpha.xml
@@ -1,10 +1,10 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="edit_alpha_panel" width="320">
-	<panel name="avatar_alpha_color_panel" width="300">
-		<texture_picker label="Alpha: Unten" name="Lower Alpha" tool_tip="Zum Auswählen eines Bildes hier klicken" width="70"/>
-		<texture_picker label="Alpha: Oben" name="Upper Alpha" tool_tip="Zum Auswählen eines Bildes hier klicken" width="66"/>
+<panel name="edit_alpha_panel">
+	<panel name="avatar_alpha_color_panel">
+		<texture_picker label="Alpha: Unten" name="Lower Alpha" tool_tip="Zum Auswählen eines Bildes hier klicken"/>
+		<texture_picker label="Alpha: Oben" name="Upper Alpha" tool_tip="Zum Auswählen eines Bildes hier klicken"/>
 		<texture_picker label="Kopf: Alpha" name="Head Alpha" tool_tip="Zum Auswählen eines Bildes hier klicken"/>
-		<texture_picker label="Alpha: Augen" name="Eye Alpha" tool_tip="Zum Auswählen eines Bildes hier klicken" width="72"/>
-		<texture_picker label="Alpha: Haare" name="Hair Alpha" tool_tip="Zum Auswählen eines Bildes hier klicken" width="70"/>
+		<texture_picker label="Alpha: Augen" name="Eye Alpha" tool_tip="Zum Auswählen eines Bildes hier klicken"/>
+		<texture_picker label="Alpha: Haare" name="Hair Alpha" tool_tip="Zum Auswählen eines Bildes hier klicken"/>
 	</panel>
 </panel>
diff --git a/indra/newview/skins/default/xui/de/panel_edit_tattoo.xml b/indra/newview/skins/default/xui/de/panel_edit_tattoo.xml
index 830c7b0bb8d2ebc58e3e19ad32af44895298626b..075a9d752a31d9e199577eae99ebaacc9585b327 100644
--- a/indra/newview/skins/default/xui/de/panel_edit_tattoo.xml
+++ b/indra/newview/skins/default/xui/de/panel_edit_tattoo.xml
@@ -1,9 +1,9 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel name="edit_tattoo_panel">
 	<panel name="avatar_tattoo_color_panel">
-		<texture_picker label="Kopftattoo" name="Head Tattoo" tool_tip="Zum Auswählen eines Bildes hier klicken" width="80"/>
-		<texture_picker label="Obere Tattoos" name="Upper Tattoo" tool_tip="Zum Auswählen eines Bildes hier klicken" width="80"/>
-		<texture_picker label="Untere Tattoos" name="Lower Tattoo" tool_tip="Zum Auswählen eines Bildes hier klicken" width="80"/>
+		<texture_picker label="Kopftattoo" name="Head Tattoo" tool_tip="Zum Auswählen eines Bildes hier klicken"/>
+		<texture_picker label="Obere Tattoos" name="Upper Tattoo" tool_tip="Zum Auswählen eines Bildes hier klicken"/>
+		<texture_picker label="Untere Tattoos" name="Lower Tattoo" tool_tip="Zum Auswählen eines Bildes hier klicken"/>
 		<color_swatch label="Farbe/Ton" name="Color/Tint" tool_tip="Klicken Sie hier, um die Farbauswahl zu öffnen"/>
 	</panel>
 </panel>
diff --git a/indra/newview/skins/default/xui/de/strings.xml b/indra/newview/skins/default/xui/de/strings.xml
index f6ae17239a9cc4df5d49e9dd8f4782c7f0d8a271..206017c06cdf540dc5c87b0f437ecc91163af282 100644
--- a/indra/newview/skins/default/xui/de/strings.xml
+++ b/indra/newview/skins/default/xui/de/strings.xml
@@ -248,7 +248,7 @@
 		Anklicken, um Befehl secondlife:// auszuführen
 	</string>
 	<string name="CurrentURL" value=" CurrentURL: [CurrentURL]"/>
-	<string name="TooltipPrice" value="[PRICE] L$"/>
+	<string name="TooltipPrice" value="[AMOUNT]L$: "/>
 	<string name="SLurlLabelTeleport">
 		Teleportieren nach
 	</string>
diff --git a/indra/newview/skins/default/xui/en/floater_publish_classified.xml b/indra/newview/skins/default/xui/en/floater_publish_classified.xml
index f25c170f334c4e21a56d793490c92c2c1eabdefc..6ce9ed6e771a10e16b1f172fe63175a3ea752963 100644
--- a/indra/newview/skins/default/xui/en/floater_publish_classified.xml
+++ b/indra/newview/skins/default/xui/en/floater_publish_classified.xml
@@ -25,10 +25,11 @@ Remember, Classified fees are non-refundable.
     <spinner
      decimal_digits="0"
      follows="left|top"
+     font="SansSerif"
      halign="left"
      height="23"
      increment="1"
-     label_width="45"
+     label_width="50"
      label="Price: L$ "
      v_pad="10"
      layout="topleft"
diff --git a/indra/newview/skins/default/xui/en/floater_tools.xml b/indra/newview/skins/default/xui/en/floater_tools.xml
index 194a93977f3ddd6b047e1ea10ef949bbecd9ca3e..a96dbe3553487ac379f0f1ce573bc9c111a13c78 100644
--- a/indra/newview/skins/default/xui/en/floater_tools.xml
+++ b/indra/newview/skins/default/xui/en/floater_tools.xml
@@ -910,29 +910,34 @@
              width="75">
                 Group:
             </text>
+            <name_box
+             follows="left|top"
+             height="18"
+             initial_value="Loading..."
+             layout="topleft"
+             left_pad="23"
+             name="Group Name Proxy"
+             width="142" />
             <button
 			 follows="top|left"
-			 height="10"
-			 image_disabled="Activate_Checkmark"
-			 image_selected="Activate_Checkmark"
-			 image_unselected="Activate_Checkmark"
-			 image_color="White_50"
+			 height="23"
+			 image_overlay="Edit_Wrench"
 			 layout="topleft"
-			 left_pad="0"
-			 top_delta="0"
+			 left_pad="3"
 			 name="button set group"
 			 tab_stop="false"
 			 tool_tip="Choose a group to share this object's permissions"
-			 width="10" />
-            <name_box
+			 width="23" />
+            <check_box
+             height="19"
              follows="left|top"
-             height="18"
-             initial_value="Loading..."
+             label="Share"
              layout="topleft"
-             left_pad="5"
-             top_delta="-1"
-             name="Group Name Proxy"
-             width="150" />
+             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."
+             top_pad="10"
+             left="106"
+             width="87" />
             <button
              follows="top|left"
              height="23"
@@ -940,26 +945,16 @@
              label_selected="Deed"
              layout="topleft"
              name="button deed"
-             top_pad="0"
-             left="108"
+             left_pad="3"
              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"
              layout="topleft"
-             top_pad="15"
+             top_pad="10"
              left="10"
              name="label click action"
              width="98">
diff --git a/indra/newview/skins/default/xui/en/menu_inventory.xml b/indra/newview/skins/default/xui/en/menu_inventory.xml
index 5c19f1932d334c2979644e4b08873fee0f043406..c0046d8e2834bed314670daa691bd936c407c13a 100644
--- a/indra/newview/skins/default/xui/en/menu_inventory.xml
+++ b/indra/newview/skins/default/xui/en/menu_inventory.xml
@@ -472,7 +472,7 @@
      layout="topleft" 
      name="Paste Separator" />
     <menu_item_call
-     label="Remove Link"
+     label="Delete"
      layout="topleft"
      name="Remove Link">
         <menu_item_call.on_click
diff --git a/indra/newview/skins/default/xui/en/panel_edit_classified.xml b/indra/newview/skins/default/xui/en/panel_edit_classified.xml
index cbdd5485772a7cbab3aa4a264a8e9e1c654de3ba..9408f193fd9ca39e76d6ac514b2671a39d3773cb 100644
--- a/indra/newview/skins/default/xui/en/panel_edit_classified.xml
+++ b/indra/newview/skins/default/xui/en/panel_edit_classified.xml
@@ -261,6 +261,34 @@
          name="auto_renew"
          top_pad="15"
          width="250" />
+        <text
+         follows="left|top"
+         height="10"
+         layout="topleft"
+         left="10"
+         name="price_for_listing_label"
+         text_color="white"
+         top_pad="15"
+         value="Price for listing:"
+         width="250" />
+        <spinner
+         decimal_digits="0"
+         follows="left|top"
+         halign="left"
+         height="23"
+         increment="1"
+         label_width="20"
+         label="L$"
+         v_pad="10"
+         layout="topleft"
+         left="10"
+         value="50"
+         min_val="50"
+         max_val="99999"
+         name="price_for_listing"
+         top_pad="5"
+         tool_tip="Price for listing."
+         width="105" />
      </panel>
     </scroll_container>
     <panel
diff --git a/indra/newview/skins/default/xui/en/panel_outfit_edit.xml b/indra/newview/skins/default/xui/en/panel_outfit_edit.xml
index adc38b966c9564a593c6069e6b0523f22684dfc9..cf174da2f07d2b5dd928f30f8282dbbe78f40050 100644
--- a/indra/newview/skins/default/xui/en/panel_outfit_edit.xml
+++ b/indra/newview/skins/default/xui/en/panel_outfit_edit.xml
@@ -406,6 +406,7 @@ It is calculated as border_size + 2*UIResizeBarOverlap
          left_pad="1"
          name="shop_btn_1"
          top="1"
+         tool_tip="Visit the SL Marketplace. You can also select something you are wearing, then click here to see more things like it"
          width="31" />
     </panel>
     
@@ -480,6 +481,7 @@ It is calculated as border_size + 2*UIResizeBarOverlap
          left_pad="1"
          name="shop_btn_2"
          top="1"
+         tool_tip="Visit the SL Marketplace. You can also select something you are wearing, then click here to see more things like it"
          width="31" />
     </panel>
     
diff --git a/indra/newview/skins/default/xui/en/panel_outfits_list.xml b/indra/newview/skins/default/xui/en/panel_outfits_list.xml
index 27e23440dfd4bc620c8ad7405c3b1bdaa99713e0..b43aa0a8248369fa8e8192b543cda5185e92ff8e 100644
--- a/indra/newview/skins/default/xui/en/panel_outfits_list.xml
+++ b/indra/newview/skins/default/xui/en/panel_outfits_list.xml
@@ -14,9 +14,9 @@
      background_visible="true"
      bg_alpha_color="DkGray2"
      bg_opaque_color="DkGray2"
-     no_matched_tabs_text.value="Didn't find what you're looking for? Try [secondlife:///app/search/all/[SEARCH_TERM] Search]."
+     no_matched_tabs_text.value="NoOutfitsTabsMatched"
      no_matched_tabs_text.v_pad="10"
-     no_visible_tabs_text.value="..."
+     no_visible_tabs_text.value="NoOutfits"
      follows="all"
      height="400"
      layout="topleft"
diff --git a/indra/newview/skins/default/xui/en/strings.xml b/indra/newview/skins/default/xui/en/strings.xml
index 1e8d0d2fe53cb38308e22e2b1869cda843fc47a7..ece57a6682d92b41a6aca5eecab1691110a9d060 100644
--- a/indra/newview/skins/default/xui/en/strings.xml
+++ b/indra/newview/skins/default/xui/en/strings.xml
@@ -67,7 +67,7 @@
 	<string name="SentToInvalidRegion">You were sent to an invalid region.</string>
 	<string name="TestingDisconnect">Testing viewer disconnect</string>
 
-	<!-- Tooltip, lltooltipview.cpp -->
+	<!-- Tooltip -->
 	<string name="TooltipPerson">Person</string><!-- Object under mouse pointer is an avatar -->
 	<string name="TooltipNoName">(no name)</string> <!-- No name on an object -->
 	<string name="TooltipOwner">Owner:</string> <!-- Owner name follows -->
@@ -83,6 +83,7 @@
 	<string name="TooltipFlagNoScripts">No Scripts</string>
 	<string name="TooltipLand">Land:</string>
 	<string name="TooltipMustSingleDrop">Only a single item can be dragged here</string>
+	<string name="TooltipPrice" value="L$[AMOUNT]: "/>
 
 	<!-- tooltips for Urls -->
 	<string name="TooltipHttpUrl">Click to view this web page</string>
@@ -103,8 +104,6 @@
 	<string name="TooltipMapUrl">Click to view this location on a map</string>
 	<string name="TooltipSLAPP">Click to run the secondlife:// command</string>
 	<string name="CurrentURL" value=" CurrentURL: [CurrentURL]" />	
-  <string name="TooltipPrice" value=" L$[PRICE]-" />
-  
 
 	<!-- text for SLURL labels -->
 	<string name="SLurlLabelTeleport">Teleport to</string>
@@ -1830,9 +1829,26 @@ Clears (deletes) the media and all params from the given face.
 	<string name="tattoo_not_worn">Tattoo not worn</string>
 	<string name="invalid_not_worn">invalid</string>
 
+	<!-- Create new wearable of the specified type -->
+	<string name="create_new_shape">Create new shape</string>
+	<string name="create_new_skin">Create new skin</string>
+	<string name="create_new_hair">Create new hair</string>
+	<string name="create_new_eyes">Create new eyes</string>
+	<string name="create_new_shirt">Create new shirt</string>
+	<string name="create_new_pants">Create new pants</string>
+	<string name="create_new_shoes">Create new shoes</string>
+	<string name="create_new_socks">Create new socks</string>
+	<string name="create_new_jacket">Create new jacket</string>
+	<string name="create_new_gloves">Create new gloves</string>
+	<string name="create_new_undershirt">Create new undershirt</string>
+	<string name="create_new_underpants">Create new underpants</string>
+	<string name="create_new_skirt">Create new skirt</string>
+	<string name="create_new_alpha">Create new alpha</string>
+	<string name="create_new_tattoo">Create new tattoo</string>
+	<string name="create_new_invalid">invalid</string>
+
   <!-- Wearable List-->
   <string name="NewWearable">New [WEARABLE_ITEM]</string>
-  <string name="CreateNewWearable">Create [WEARABLE_TYPE]</string>
   
 	<!-- LLGroupNotify -->
 	<!-- used in the construction of a Group Notice blue dialog box, buttons, tooltip etc. Seems to be no longer utilized by code in Viewer 2.0 -->
@@ -2172,12 +2188,17 @@ Clears (deletes) the media and all params from the given face.
 	<string name="PanelDirEventsDateText">[mthnum,datetime,slt]/[day,datetime,slt]</string>
 
 	<!-- panel contents -->
+	<string name="PanelContentsTooltip">Content of object</string>
 	<string name="PanelContentsNewScript">New Script</string>
 	<string name="PanelContentsTooltip">Content of object</string>
 
   <!-- panel preferences general -->
   <string name="BusyModeResponseDefault">The Resident you messaged is in &apos;busy mode&apos; which means they have requested not to be disturbed.  Your message will still be shown in their IM panel for later viewing.</string>
 
+	<!-- Outfits Panel -->
+	<string name="NoOutfits">You don't have any outfits yet. Try [secondlife:///app/search/all/ Search]</string>
+	<string name="NoOutfitsTabsMatched">Didn't find what you're looking for? Try [secondlife:///app/search/all/[SEARCH_TERM] Search].</string>
+
 	<!-- Mute -->
 	<string name="MuteByName">(By name)</string>
 	<string name="MuteAgent">(Resident)</string>
diff --git a/indra/newview/skins/default/xui/es/strings.xml b/indra/newview/skins/default/xui/es/strings.xml
index 717665f4d9af3814d5711077e5b16f907d20d2b7..17e9f687b2f55cf408e486b4ad5a5c007aa2d16a 100644
--- a/indra/newview/skins/default/xui/es/strings.xml
+++ b/indra/newview/skins/default/xui/es/strings.xml
@@ -236,7 +236,7 @@
 		Pulsa para ejecutar el comando secondlife://
 	</string>
 	<string name="CurrentURL" value="URL actual: [CurrentURL]"/>
-	<string name="TooltipPrice" value="[PRICE] L$"/>
+	<string name="TooltipPrice" value="[AMOUNT]L$: "/>
 	<string name="SLurlLabelTeleport">
 		Teleportarse a
 	</string>
diff --git a/indra/newview/skins/default/xui/fr/panel_edit_tattoo.xml b/indra/newview/skins/default/xui/fr/panel_edit_tattoo.xml
index 9a6939e6b77921829c0489b4e7cdddc3a72d327a..086542dee29297ed980218ade4278326aba8f235 100644
--- a/indra/newview/skins/default/xui/fr/panel_edit_tattoo.xml
+++ b/indra/newview/skins/default/xui/fr/panel_edit_tattoo.xml
@@ -1,9 +1,9 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel name="edit_tattoo_panel">
 	<panel name="avatar_tattoo_color_panel">
-		<texture_picker label="Tatouage tête" name="Head Tattoo" tool_tip="Cliquez pour sélectionner une image" width="76"/>
-		<texture_picker label="Tatouage haut" name="Upper Tattoo" tool_tip="Cliquez pour sélectionner une image" width="80"/>
-		<texture_picker label="Tatouage bas" name="Lower Tattoo" tool_tip="Cliquez pour sélectionner une image" width="76"/>
+		<texture_picker label="Tatouage tête" name="Head Tattoo" tool_tip="Cliquez pour sélectionner une image"/>
+		<texture_picker label="Tatouage haut" name="Upper Tattoo" tool_tip="Cliquez pour sélectionner une image"/>
+		<texture_picker label="Tatouage bas" name="Lower Tattoo" tool_tip="Cliquez pour sélectionner une image"/>
 		<color_swatch label="Coul./Teinte" name="Color/Tint" tool_tip="Cliquez pour ouvrir le sélecteur de couleurs"/>
 	</panel>
 </panel>
diff --git a/indra/newview/skins/default/xui/fr/strings.xml b/indra/newview/skins/default/xui/fr/strings.xml
index 604398a6580c732429b7a56b5a47b8ab935febe9..15368c715f8468e790e6d714352c0b98190fe6c3 100644
--- a/indra/newview/skins/default/xui/fr/strings.xml
+++ b/indra/newview/skins/default/xui/fr/strings.xml
@@ -248,7 +248,7 @@
 		Cliquez pour exécuter la commande secondlife:// command
 	</string>
 	<string name="CurrentURL" value=" URL actuelle : [CurrentURL]"/>
-	<string name="TooltipPrice" value="[PRICE] L$-"/>
+	<string name="TooltipPrice" value="[AMOUNT]L$: "/>
 	<string name="SLurlLabelTeleport">
 		Me téléporter vers
 	</string>
diff --git a/indra/newview/skins/default/xui/it/strings.xml b/indra/newview/skins/default/xui/it/strings.xml
index aeaf8098b97e1b7834775e8a34ef7145917bbfb9..5554a3ca4f62d899e99509a32551a1ce41a8dfb6 100644
--- a/indra/newview/skins/default/xui/it/strings.xml
+++ b/indra/newview/skins/default/xui/it/strings.xml
@@ -242,7 +242,7 @@
 		Clicca per avviare il comando secondlife://
 	</string>
 	<string name="CurrentURL" value="URL attuale: [CurrentURL]"/>
-	<string name="TooltipPrice" value="L$ [PRICE]-"/>
+	<string name="TooltipPrice" value="L$[AMOUNT]: "/>
 	<string name="SLurlLabelTeleport">
 		Teleportati a
 	</string>
diff --git a/indra/newview/skins/default/xui/ja/panel_edit_tattoo.xml b/indra/newview/skins/default/xui/ja/panel_edit_tattoo.xml
index c3f8c1262005e14033f332f82a805b82210ad3dd..f4cfe6d83f769b24479b5889dc8c7b63d3bb61c9 100644
--- a/indra/newview/skins/default/xui/ja/panel_edit_tattoo.xml
+++ b/indra/newview/skins/default/xui/ja/panel_edit_tattoo.xml
@@ -1,9 +1,9 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel name="edit_tattoo_panel">
 	<panel name="avatar_tattoo_color_panel">
-		<texture_picker label="頭部のタトゥー" name="Head Tattoo" tool_tip="クリックして写真を選択" width="70"/>
-		<texture_picker label="上部のタトゥー" name="Upper Tattoo" tool_tip="クリックして写真を選択" width="70"/>
-		<texture_picker label="下部のタトゥー" name="Lower Tattoo" tool_tip="クリックして写真を選択" width="70"/>
+		<texture_picker label="頭部のタトゥー" name="Head Tattoo" tool_tip="クリックして写真を選択"/>
+		<texture_picker label="上部のタトゥー" name="Upper Tattoo" tool_tip="クリックして写真を選択"/>
+		<texture_picker label="下部のタトゥー" name="Lower Tattoo" tool_tip="クリックして写真を選択"/>
 		<color_swatch label="色・色彩配合" name="Color/Tint" tool_tip="クリックしてカラーピッカーを開きます"/>
 	</panel>
 </panel>
diff --git a/indra/newview/skins/default/xui/ja/strings.xml b/indra/newview/skins/default/xui/ja/strings.xml
index 619f9fc9efb6a30e4f8c442470252e2ca5afad95..5aab0875f48258e6a0312dd40490a6e3e50cb8f1 100644
--- a/indra/newview/skins/default/xui/ja/strings.xml
+++ b/indra/newview/skins/default/xui/ja/strings.xml
@@ -248,7 +248,7 @@
 		クリックして secondlife:// コマンドを出します
 	</string>
 	<string name="CurrentURL" value=" 現在の URL: [CurrentURL]"/>
-	<string name="TooltipPrice" value="L$[PRICE]-"/>
+	<string name="TooltipPrice" value="L$[AMOUNT]: "/>
 	<string name="SLurlLabelTeleport">
 		テレポート
 	</string>
diff --git a/indra/newview/skins/default/xui/pl/strings.xml b/indra/newview/skins/default/xui/pl/strings.xml
index f110052f6830a2e7e0f06c54c032006c96579af1..99539a84f5c6a8a04afdbbcb93235142c4cf193d 100644
--- a/indra/newview/skins/default/xui/pl/strings.xml
+++ b/indra/newview/skins/default/xui/pl/strings.xml
@@ -215,7 +215,7 @@
 		Kliknij by uruchomić secondlife:// command
 	</string>
 	<string name="CurrentURL" value=" Obecny Adres: [CurrentURL]"/>
-	<string name="TooltipPrice" value="L$[PRICE]-"/>
+	<string name="TooltipPrice" value="L$[AMOUNT]: "/>
 	<string name="SLurlLabelTeleport">
 		Teleportuj do
 	</string>
diff --git a/indra/newview/skins/default/xui/pt/strings.xml b/indra/newview/skins/default/xui/pt/strings.xml
index ca32412058ca8d28901ee22cced56f4eb48202bf..701e18a58a5da87694ae12cde1d46489280e1826 100644
--- a/indra/newview/skins/default/xui/pt/strings.xml
+++ b/indra/newview/skins/default/xui/pt/strings.xml
@@ -236,7 +236,7 @@
 		Clique para ativar no secondlife:// comando
 	</string>
 	<string name="CurrentURL" value="URL atual: [CurrentURL]"/>
-	<string name="TooltipPrice" value="L$[PRICE]-"/>
+	<string name="TooltipPrice" value="L$[AMOUNT]: "/>
 	<string name="SLurlLabelTeleport">
 		Teletransportar para
 	</string>