diff --git a/build.sh b/build.sh
index 8ca3208087f6a4729a1f8a991e86f08832a40a26..00a9baec0a1d5aa480b5a57d392e66b6e8984459 100755
--- a/build.sh
+++ b/build.sh
@@ -268,6 +268,12 @@ then
     else
       upload_item installer "$package" binary/octet-stream
       upload_item quicklink "$package" binary/octet-stream
+	  mapfilepath=$build_dir/newview
+	  gzip $mapfilepath/secondlife-bin.MAP
+	  mapfile=secondlife-bin-$arch.MAP.gz
+	  mv $mapfilepath/secondlife-bin.MAP.gz $mapfilepath/$mapfile
+	  upload_item mapfile "$mapfilepath/$mapfile" binary/octet-stream
+	  echo "Uploaded mapfile"
       [ -f summary.json ] && upload_item installer summary.json text/plain
 
       # Upload crash reporter files.
diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt
index 4d295ac5e566ee0de5564104d4fa3beaeeb96ae0..04d67b51086141e64cef41b97c5654f1247a0bce 100644
--- a/indra/newview/CMakeLists.txt
+++ b/indra/newview/CMakeLists.txt
@@ -1550,7 +1550,7 @@ if (WINDOWS)
         #LINK_FLAGS "/debug /NODEFAULTLIB:LIBCMT /SUBSYSTEM:WINDOWS /INCLUDE:\"__tcmalloc\""
         LINK_FLAGS "/debug /NODEFAULTLIB:LIBCMT /SUBSYSTEM:WINDOWS /INCLUDE:__tcmalloc "
         LINK_FLAGS_DEBUG "/NODEFAULTLIB:\"LIBCMT;LIBCMTD;MSVCRT\" /INCREMENTAL:NO"
-        LINK_FLAGS_RELEASE "/FORCE:MULTIPLE"
+        LINK_FLAGS_RELEASE "/FORCE:MULTIPLE /MAP\"secondlife-bin.MAP\" /OPT:REF"
         )
     if(USE_PRECOMPILED_HEADERS)
         set_target_properties(
@@ -1755,6 +1755,17 @@ if (WINDOWS)
         #${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/event_host.tar.bz2)
 
     endif (PACKAGE)
+elseif (DARWIN)
+    set_target_properties(${VIEWER_BINARY_NAME}
+        PROPERTIES
+        LINK_FLAGS_RELEASE "${LINK_FLAGS_RELEASE} -Xlinker -dead_strip -Xlinker -map -Xlinker ${CMAKE_CURRENT_BINARY_DIR}/${VIEWER_BINARY_NAME}.MAP"
+        )
+else (WINDOWS)
+        # Linux 
+    set_target_properties(${VIEWER_BINARY_NAME}
+        PROPERTIES
+        LINK_FLAGS_RELEASE "${LINK_FLAGS_RELEASE} -Wl,--Map=${VIEWER_BINARY_NAME}.MAP"
+        )
 endif (WINDOWS)
 
 # *NOTE - this list is very sensitive to ordering, test carefully on all
diff --git a/indra/newview/llfloaterpathfindingcharacters.cpp b/indra/newview/llfloaterpathfindingcharacters.cpp
index b4a1394b06503d5eefba4bf07414ef3f39b9dbc9..60e66174f361c554fbb4ece461981a1fb5d9cad7 100644
--- a/indra/newview/llfloaterpathfindingcharacters.cpp
+++ b/indra/newview/llfloaterpathfindingcharacters.cpp
@@ -160,11 +160,11 @@ LLSD LLFloaterPathfindingCharacters::convertObjectsIntoScrollListData(const LLPa
 	return scrollListData;
 }
 
-void LLFloaterPathfindingCharacters::updateControls()
+void LLFloaterPathfindingCharacters::updateControlsOnScrollListChange()
 {
-	LLFloaterPathfindingObjects::updateControls();
-	updateOnScrollListChange();
-	updateStateOnActionFields();
+	LLFloaterPathfindingObjects::updateControlsOnScrollListChange();
+	updateStateOnDisplayControls();
+	showSelectedCharacterCapsules();
 }
 
 S32 LLFloaterPathfindingCharacters::getNameColumnIndex() const
@@ -233,7 +233,7 @@ LLSD LLFloaterPathfindingCharacters::buildCharacterScrollListData(const LLPathfi
 	return element;
 }
 
-void LLFloaterPathfindingCharacters::updateStateOnActionFields()
+void LLFloaterPathfindingCharacters::updateStateOnDisplayControls()
 {
 	int numSelectedItems = getNumSelectedObjects();;
 #ifndef SERVER_SIDE_CHARACTER_SHAPE_ROLLOUT_COMPLETE
@@ -249,7 +249,7 @@ void LLFloaterPathfindingCharacters::updateStateOnActionFields()
 	}
 }
 
-void LLFloaterPathfindingCharacters::updateOnScrollListChange()
+void LLFloaterPathfindingCharacters::showSelectedCharacterCapsules()
 {
 	// Hide any previous capsule
 	hideCapsule();
diff --git a/indra/newview/llfloaterpathfindingcharacters.h b/indra/newview/llfloaterpathfindingcharacters.h
index a86a9700b15ad439c62ff3d4885c966832579aef..be178d2746ee4bfc1f1c3671dadf43c8c4dad0aa 100644
--- a/indra/newview/llfloaterpathfindingcharacters.h
+++ b/indra/newview/llfloaterpathfindingcharacters.h
@@ -61,7 +61,7 @@ class LLFloaterPathfindingCharacters : public LLFloaterPathfindingObjects
 
 	virtual LLSD                       convertObjectsIntoScrollListData(const LLPathfindingObjectListPtr pObjectListPtr);
 
-	virtual void                       updateControls();
+	virtual void                       updateControlsOnScrollListChange();
 
 	virtual S32                        getNameColumnIndex() const;
 	virtual const LLColor4             &getBeaconColor() const;
@@ -73,8 +73,8 @@ class LLFloaterPathfindingCharacters : public LLFloaterPathfindingObjects
 
 	LLSD buildCharacterScrollListData(const LLPathfindingCharacter *pCharacterPtr) const;
 
-	void updateStateOnActionFields();
-	void updateOnScrollListChange();
+	void updateStateOnDisplayControls();
+	void showSelectedCharacterCapsules();
 
 	void showCapsule() const;
 	void hideCapsule() const;
diff --git a/indra/newview/llfloaterpathfindinglinksets.cpp b/indra/newview/llfloaterpathfindinglinksets.cpp
index 8488ee1aa3bdac066e4fee5687e3a747eb217046..a7b856b271f972bed7a1aea5c635937ddd9f8903 100644
--- a/indra/newview/llfloaterpathfindinglinksets.cpp
+++ b/indra/newview/llfloaterpathfindinglinksets.cpp
@@ -250,9 +250,9 @@ LLSD LLFloaterPathfindingLinksets::convertObjectsIntoScrollListData(const LLPath
 	return scrollListData;
 }
 
-void LLFloaterPathfindingLinksets::updateControls()
+void LLFloaterPathfindingLinksets::updateControlsOnScrollListChange()
 {
-	LLFloaterPathfindingObjects::updateControls();
+	LLFloaterPathfindingObjects::updateControlsOnScrollListChange();
 	updateEditFieldValues();
 	updateStateOnEditFields();
 	updateStateOnEditLinksetUse();
diff --git a/indra/newview/llfloaterpathfindinglinksets.h b/indra/newview/llfloaterpathfindinglinksets.h
index 8c464dc1d5e70ad5a4088b384e5e7748c9e2ecc5..c9ae5a059a896a8df4a55dedf0bebf69211bbc43 100644
--- a/indra/newview/llfloaterpathfindinglinksets.h
+++ b/indra/newview/llfloaterpathfindinglinksets.h
@@ -60,7 +60,7 @@ class LLFloaterPathfindingLinksets : public LLFloaterPathfindingObjects
 
 	virtual LLSD                       convertObjectsIntoScrollListData(const LLPathfindingObjectListPtr pObjectListPtr);
 
-	virtual void                       updateControls();
+	virtual void                       updateControlsOnScrollListChange();
 
 	virtual S32                        getNameColumnIndex() const;
 	virtual const LLColor4             &getBeaconColor() const;
diff --git a/indra/newview/llfloaterpathfindingobjects.cpp b/indra/newview/llfloaterpathfindingobjects.cpp
index 6f183c78b102e51feba61c6c6c4315e6bc080e74..14fa0ac4282990185dd837a4fe3e91ea8030f3a9 100644
--- a/indra/newview/llfloaterpathfindingobjects.cpp
+++ b/indra/newview/llfloaterpathfindingobjects.cpp
@@ -348,7 +348,7 @@ void LLFloaterPathfindingObjects::rebuildObjectsScrollList()
 
 	mObjectsScrollList->selectMultiple(selectedUUIDs);
 	mObjectsScrollList->setScrollPos(origScrollPosition);
-	updateControls();
+	updateControlsOnScrollListChange();
 }
 
 LLSD LLFloaterPathfindingObjects::convertObjectsIntoScrollListData(const LLPathfindingObjectListPtr pObjectListPtr)
@@ -368,11 +368,17 @@ void LLFloaterPathfindingObjects::rebuildScrollListAfterAvatarNameLoads(const LL
 	}
 }
 
-void LLFloaterPathfindingObjects::updateControls()
+void LLFloaterPathfindingObjects::updateControlsOnScrollListChange()
 {
 	updateMessagingStatus();
-	updateStateOnListActionControls();
-	updateStateOnEditFields();
+	updateStateOnListControls();
+	selectScrollListItemsInWorld();
+	updateStateOnActionControls();
+}
+
+void LLFloaterPathfindingObjects::updateControlsOnInWorldSelectionChange()
+{
+	updateStateOnActionControls();
 }
 
 S32 LLFloaterPathfindingObjects::getNameColumnIndex() const
@@ -491,7 +497,7 @@ LLFloaterPathfindingObjects::EMessagingState LLFloaterPathfindingObjects::getMes
 void LLFloaterPathfindingObjects::setMessagingState(EMessagingState pMessagingState)
 {
 	mMessagingState = pMessagingState;
-	updateControls();
+	updateControlsOnScrollListChange();
 }
 
 void LLFloaterPathfindingObjects::onRefreshObjectsClicked()
@@ -539,13 +545,12 @@ void LLFloaterPathfindingObjects::onTeleportClicked()
 
 void LLFloaterPathfindingObjects::onScrollListSelectionChanged()
 {
-	updateOnScrollListChange();
-	updateControls();
+	updateControlsOnScrollListChange();
 }
 
 void LLFloaterPathfindingObjects::onInWorldSelectionListChanged()
 {
-	updateControls();
+	updateControlsOnInWorldSelectionChange();
 }
 
 void LLFloaterPathfindingObjects::onRegionBoundaryCrossed()
@@ -632,7 +637,7 @@ void LLFloaterPathfindingObjects::updateMessagingStatus()
 	mMessagingStatus->setText((LLStringExplicit)statusText, styleParams);
 }
 
-void LLFloaterPathfindingObjects::updateStateOnListActionControls()
+void LLFloaterPathfindingObjects::updateStateOnListControls()
 {
 	switch (getMessagingState())
 	{
@@ -665,7 +670,7 @@ void LLFloaterPathfindingObjects::updateStateOnListActionControls()
 	}
 }
 
-void LLFloaterPathfindingObjects::updateStateOnEditFields()
+void LLFloaterPathfindingObjects::updateStateOnActionControls()
 {
 	int numSelectedItems = mObjectsScrollList->getNumSelected();
 	bool isEditEnabled = (numSelectedItems > 0);
@@ -678,7 +683,7 @@ void LLFloaterPathfindingObjects::updateStateOnEditFields()
 	mTeleportButton->setEnabled(numSelectedItems == 1);
 }
 
-void LLFloaterPathfindingObjects::updateOnScrollListChange()
+void LLFloaterPathfindingObjects::selectScrollListItemsInWorld()
 {
 	mObjectsSelection.clear();
 	LLSelectMgr::getInstance()->deselectAll();
diff --git a/indra/newview/llfloaterpathfindingobjects.h b/indra/newview/llfloaterpathfindingobjects.h
index cf418b3b71cd4cbd4bf682004846a918c646eda2..88790db12d2a20245eaa4702657d502463bb6da9 100644
--- a/indra/newview/llfloaterpathfindingobjects.h
+++ b/indra/newview/llfloaterpathfindingobjects.h
@@ -82,7 +82,8 @@ class LLFloaterPathfindingObjects : public LLFloater
 
 	void                               rebuildScrollListAfterAvatarNameLoads(const LLUUID &pAvatarId);
 
-	virtual void                       updateControls();
+	virtual void                       updateControlsOnScrollListChange();
+	virtual void                       updateControlsOnInWorldSelectionChange();
 
 	virtual S32                        getNameColumnIndex() const;
 	virtual const LLColor4             &getBeaconColor() const;
@@ -124,9 +125,9 @@ class LLFloaterPathfindingObjects : public LLFloater
 	void                   handleAvatarNameLoads(const LLUUID &pAvatarId, const LLAvatarName &pAvatarName);
 
 	void                   updateMessagingStatus();
-	void                   updateStateOnListActionControls();
-	void                   updateStateOnEditFields();
-	void                   updateOnScrollListChange();
+	void                   updateStateOnListControls();
+	void                   updateStateOnActionControls();
+	void                   selectScrollListItemsInWorld();
 
 	LLPathfindingObjectPtr findObject(const LLScrollListItem *pListItem) const;
 
diff --git a/indra/newview/lllocationinputctrl.cpp b/indra/newview/lllocationinputctrl.cpp
index db7371d993cc486d708c0968da9a7ef15f5a8b50..0d8526d3f14ee6e4bf5815a4b9ca0f91c61dcfb9 100644
--- a/indra/newview/lllocationinputctrl.cpp
+++ b/indra/newview/lllocationinputctrl.cpp
@@ -827,7 +827,7 @@ void LLLocationInputCtrl::refreshParcelIcons()
 		bool allow_scripts	= vpm->allowAgentScripts(agent_region, current_parcel);
 		bool allow_damage	= vpm->allowAgentDamage(agent_region, current_parcel);
 		bool see_avs        = current_parcel->getSeeAVs();
-		bool pathfinding_dynamic = gAgent.getRegion()->dynamicPathfindingEnabled();
+		bool pathfinding_dynamic_enabled = gAgent.getRegion()->dynamicPathfindingEnabled();
 
 		// Most icons are "block this ability"
 		mParcelIcon[VOICE_ICON]->setVisible(   !allow_voice );
@@ -836,7 +836,7 @@ void LLLocationInputCtrl::refreshParcelIcons()
 		mParcelIcon[BUILD_ICON]->setVisible(   !allow_build );
 		mParcelIcon[SCRIPTS_ICON]->setVisible( !allow_scripts );
 		mParcelIcon[DAMAGE_ICON]->setVisible(  allow_damage );
-		mParcelIcon[PATHFINDING_DYNAMIC_ICON]->setVisible( pathfinding_dynamic );
+		mParcelIcon[PATHFINDING_DYNAMIC_ICON]->setVisible( !pathfinding_dynamic_enabled );
 
 		mDamageText->setVisible(allow_damage);
 		mParcelIcon[SEE_AVATARS_ICON]->setVisible( !see_avs );
diff --git a/indra/newview/llpathfindingmanager.cpp b/indra/newview/llpathfindingmanager.cpp
index 16283282fb2b014917759cb5058ef047368172ca..a77d6bcc4c0771e2f06d79d8426fe78d6e0bc9ea 100644
--- a/indra/newview/llpathfindingmanager.cpp
+++ b/indra/newview/llpathfindingmanager.cpp
@@ -285,10 +285,7 @@ LLPathfindingManager::LLPathfindingManager()
 	mShowNavMeshRebake(false),
 	mCrossingSlot()
 {
-	if ( !mCrossingSlot.connected() )
-	{
-		mCrossingSlot = LLEnvManagerNew::getInstance()->setRegionChangeCallback(boost::bind(&LLPathfindingManager::onRegionBoundaryCrossed, this));
-	}
+	
 }
 
 void LLPathfindingManager::onRegionBoundaryCrossed()
@@ -616,6 +613,11 @@ LLPathfindingNavMeshPtr LLPathfindingManager::getNavMeshForRegion(LLViewerRegion
 
 void LLPathfindingManager::requestGetAgentState()
 {
+	if ( !mCrossingSlot.connected() )
+	{
+		mCrossingSlot = LLEnvManagerNew::getInstance()->setRegionChangeCallback(boost::bind(&LLPathfindingManager::onRegionBoundaryCrossed, this));
+	}
+
 	std::string agentStateURL = getAgentStateURLForCurrentRegion( getCurrentRegion() );
 
 	if ( !agentStateURL.empty() )
diff --git a/indra/newview/llpathfindingmanager.h b/indra/newview/llpathfindingmanager.h
index 309d7513c6e3adc0f19fc95ce74706b3c32278d9..1de9fd65257537a91df04b01587aa8d3fdd24b3c 100644
--- a/indra/newview/llpathfindingmanager.h
+++ b/indra/newview/llpathfindingmanager.h
@@ -98,6 +98,7 @@ class LLPathfindingManager : public LLSingleton<LLPathfindingManager>
 	void handleNavMeshRebakeError( U32 pStatus, const std::string &pReason, const std::string &pURL );
 	void triggerNavMeshRebuild();
 	void onRegionBoundaryCrossed();
+	void requestGetAgentState();
 
 protected:
 
@@ -129,16 +130,13 @@ class LLPathfindingManager : public LLSingleton<LLPathfindingManager>
 	
 	void displayNavMeshRebakePanel();
 	void hideNavMeshRebakePanel();	
-
-
-	void requestGetAgentState();
-	void handleAgentStateResult(const LLSD &pContent );//, EAgentState pRequestedAgentState);
+	void handleAgentStateResult(const LLSD &pContent );
 	void handleAgentStateError(U32 pStatus, const std::string &pReason, const std::string &pURL);
 
 
 	NavMeshMap mNavMeshMap;
 
-
+	//prep#stinson# set this flag instead of directly showing/hiding the rebake panel
 	BOOL mShowNavMeshRebake;
 };
 
diff --git a/indra/newview/llstartup.cpp b/indra/newview/llstartup.cpp
index 6bee373181443a5359405d647dcfbc2e2cb575d4..fd6f6e14d3735eff59cba442ffdd91bc459edaea 100644
--- a/indra/newview/llstartup.cpp
+++ b/indra/newview/llstartup.cpp
@@ -2169,6 +2169,8 @@ bool idle_startup()
 		LLIMFloater::initIMFloater();
 		display_startup();
 
+		LLPathfindingManager::getInstance()->requestGetAgentState();
+
 		return TRUE;
 	}
 
diff --git a/indra/newview/skins/default/textures/icons/Pathfinding_Dynamic.png b/indra/newview/skins/default/textures/icons/Pathfinding_Dynamic.png
index 2c485aef0dd2dc566e4463ee15f8690c8aaa30e4..0622141848d674ff013842bc0554b25679f91c41 100644
Binary files a/indra/newview/skins/default/textures/icons/Pathfinding_Dynamic.png and b/indra/newview/skins/default/textures/icons/Pathfinding_Dynamic.png differ
diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml
index e9151c2db9d5e339e582bc288f9f9fd00dc1b852..ac36736a51191cf241e918bd6cca2f09a2b0a347 100644
--- a/indra/newview/skins/default/xui/en/notifications.xml
+++ b/indra/newview/skins/default/xui/en/notifications.xml
@@ -5786,7 +5786,7 @@ This area has building disabled. You can&apos;t build or rez objects here.
      persist="true"
      type="notify">
     <unique/>
-    Dynamic pathing is enabled.
+    Dynamic pathing is not available.
   </notification>
   
   <notification
diff --git a/indra/newview/skins/default/xui/en/strings.xml b/indra/newview/skins/default/xui/en/strings.xml
index e6af4cf5a6d4d9336051f07aab78c6c43aa01da0..8771d83aa4270d91939a3e75fed0d22f2db7da3c 100644
--- a/indra/newview/skins/default/xui/en/strings.xml
+++ b/indra/newview/skins/default/xui/en/strings.xml
@@ -3325,7 +3325,7 @@ If you continue to receive this message, contact the [SUPPORT_SITE].
   <string name="LocationCtrlModerateIconTooltip">Moderate Region</string>
   <string name="LocationCtrlGeneralIconTooltip">General Region</string>
   <string name="LocationCtrlSeeAVsTooltip">Avatars visible and chat allowed outside of this parcel</string>
-  <string name="PathfindingDynamicTooltip">Dynamic Pathfinding Enabled</string>
+  <string name="PathfindingDynamicTooltip">Dynamic Pathfinding is not available</string>
   <!-- Strings used by the (currently Linux) auto-updater app -->
 	<string name="UpdaterWindowTitle">
 	  [APP_NAME] Update