From 152ce1e4c493c0cd124316424567c42715a044da Mon Sep 17 00:00:00 2001
From: Rye Mutt <rye@alchemyviewer.org>
Date: Sun, 16 Jun 2024 01:49:06 -0400
Subject: [PATCH] Butcher in BD joystick control scheme

---
 .../newview/app_settings/settings_alchemy.xml |  154 ++
 indra/newview/llfloaterjoystick.cpp           |   15 +
 indra/newview/llfloaterjoystick.h             |    2 +
 indra/newview/llviewerjoystick.cpp            | 1113 +++++++----
 indra/newview/llviewerjoystick.h              |   62 +
 .../skins/default/textures/textures.xml       |   21 +
 .../skins/default/textures/xbox/button_a.png  |  Bin 0 -> 1365 bytes
 .../skins/default/textures/xbox/button_b.png  |  Bin 0 -> 1363 bytes
 .../default/textures/xbox/button_back.png     |  Bin 0 -> 1330 bytes
 .../default/textures/xbox/button_start.png    |  Bin 0 -> 1210 bytes
 .../skins/default/textures/xbox/button_x.png  |  Bin 0 -> 1380 bytes
 .../skins/default/textures/xbox/button_y.png  |  Bin 0 -> 1336 bytes
 .../default/textures/xbox/left_button.png     |  Bin 0 -> 1123 bytes
 .../default/textures/xbox/left_thumb.png      |  Bin 0 -> 1383 bytes
 .../textures/xbox/left_thumb_press.png        |  Bin 0 -> 1484 bytes
 .../default/textures/xbox/left_thumb_x.png    |  Bin 0 -> 13303 bytes
 .../default/textures/xbox/left_thumb_y.png    |  Bin 0 -> 13103 bytes
 .../default/textures/xbox/left_trigger.png    |  Bin 0 -> 1134 bytes
 .../skins/default/textures/xbox/none.png      |  Bin 0 -> 1301 bytes
 .../default/textures/xbox/right_button.png    |  Bin 0 -> 1139 bytes
 .../default/textures/xbox/right_thumb.png     |  Bin 0 -> 1374 bytes
 .../textures/xbox/right_thumb_press.png       |  Bin 0 -> 1493 bytes
 .../default/textures/xbox/right_thumb_x.png   |  Bin 0 -> 13509 bytes
 .../default/textures/xbox/right_thumb_y.png   |  Bin 0 -> 13166 bytes
 .../default/textures/xbox/right_trigger.png   |  Bin 0 -> 1228 bytes
 .../skins/default/textures/xbox/triggers.png  |  Bin 0 -> 6006 bytes
 .../skins/default/xui/en/floater_joystick.xml | 1662 ++++++++++++++++-
 27 files changed, 2694 insertions(+), 335 deletions(-)
 create mode 100644 indra/newview/skins/default/textures/xbox/button_a.png
 create mode 100644 indra/newview/skins/default/textures/xbox/button_b.png
 create mode 100644 indra/newview/skins/default/textures/xbox/button_back.png
 create mode 100644 indra/newview/skins/default/textures/xbox/button_start.png
 create mode 100644 indra/newview/skins/default/textures/xbox/button_x.png
 create mode 100644 indra/newview/skins/default/textures/xbox/button_y.png
 create mode 100644 indra/newview/skins/default/textures/xbox/left_button.png
 create mode 100644 indra/newview/skins/default/textures/xbox/left_thumb.png
 create mode 100644 indra/newview/skins/default/textures/xbox/left_thumb_press.png
 create mode 100644 indra/newview/skins/default/textures/xbox/left_thumb_x.png
 create mode 100644 indra/newview/skins/default/textures/xbox/left_thumb_y.png
 create mode 100644 indra/newview/skins/default/textures/xbox/left_trigger.png
 create mode 100644 indra/newview/skins/default/textures/xbox/none.png
 create mode 100644 indra/newview/skins/default/textures/xbox/right_button.png
 create mode 100644 indra/newview/skins/default/textures/xbox/right_thumb.png
 create mode 100644 indra/newview/skins/default/textures/xbox/right_thumb_press.png
 create mode 100644 indra/newview/skins/default/textures/xbox/right_thumb_x.png
 create mode 100644 indra/newview/skins/default/textures/xbox/right_thumb_y.png
 create mode 100644 indra/newview/skins/default/textures/xbox/right_trigger.png
 create mode 100644 indra/newview/skins/default/textures/xbox/triggers.png

diff --git a/indra/newview/app_settings/settings_alchemy.xml b/indra/newview/app_settings/settings_alchemy.xml
index b1414c4f3f6..acf2676b966 100644
--- a/indra/newview/app_settings/settings_alchemy.xml
+++ b/indra/newview/app_settings/settings_alchemy.xml
@@ -2066,5 +2066,159 @@
             <key>Value</key>
             <integer>2</integer>
         </map>
+        <key>BlackDragonControls</key>
+        <map>
+            <key>Comment</key>
+            <string>Use BlackDragon style joystick controls</string>
+            <key>Persist</key>
+            <integer>1</integer>
+            <key>Type</key>
+            <string>Boolean</string>
+            <key>Value</key>
+            <integer>0</integer>
+        </map>
+		<key>JoystickButtonFlycam</key>
+		<map>
+		  <key>Comment</key>
+		  <string>Test</string>
+		  <key>Persist</key>
+		  <integer>1</integer>
+		  <key>Type</key>
+		  <string>S32</string>
+		  <key>Value</key>
+		  <integer>7</integer>
+		</map>
+		<key>JoystickButtonJump</key>
+		<map>
+		  <key>Comment</key>
+		  <string>Test</string>
+		  <key>Persist</key>
+		  <integer>1</integer>
+		  <key>Type</key>
+		  <string>S32</string>
+		  <key>Value</key>
+		  <integer>0</integer>
+		</map>
+		<key>JoystickButtonFly</key>
+		<map>
+		  <key>Comment</key>
+		  <string>Test</string>
+		  <key>Persist</key>
+		  <integer>1</integer>
+		  <key>Type</key>
+		  <string>S32</string>
+		  <key>Value</key>
+		  <integer>2</integer>
+		</map>
+		<key>JoystickButtonCrouch</key>
+		<map>
+		  <key>Comment</key>
+		  <string>Test</string>
+		  <key>Persist</key>
+		  <integer>1</integer>
+		  <key>Type</key>
+		  <string>S32</string>
+		  <key>Value</key>
+		  <integer>1</integer>
+		</map>
+		<key>JoystickButtonRunToggle</key>
+		<map>
+		  <key>Comment</key>
+		  <string>Test</string>
+		  <key>Persist</key>
+		  <integer>1</integer>
+		  <key>Type</key>
+		  <string>S32</string>
+		  <key>Value</key>
+		  <integer>8</integer>
+		</map>
+		<key>JoystickButtonMouselook</key>
+		<map>
+		  <key>Comment</key>
+		  <string>Test</string>
+		  <key>Persist</key>
+		  <integer>1</integer>
+		  <key>Type</key>
+		  <string>S32</string>
+		  <key>Value</key>
+		  <integer>9</integer>
+		</map>
+		<key>JoystickButtonZoomIn</key>
+		<map>
+		  <key>Comment</key>
+		  <string>Test</string>
+		  <key>Persist</key>
+		  <integer>1</integer>
+		  <key>Type</key>
+		  <string>S32</string>
+		  <key>Value</key>
+		  <integer>4</integer>
+		</map>
+		<key>JoystickButtonZoomOut</key>
+		<map>
+		  <key>Comment</key>
+		  <string>Test</string>
+		  <key>Persist</key>
+		  <integer>1</integer>
+		  <key>Type</key>
+		  <string>S32</string>
+		  <key>Value</key>
+		  <integer>5</integer>
+		</map>
+		<key>JoystickButtonZoomDefault</key>
+		<map>
+		  <key>Comment</key>
+		  <string>Test</string>
+		  <key>Persist</key>
+		  <integer>1</integer>
+		  <key>Type</key>
+		  <string>S32</string>
+		  <key>Value</key>
+		  <integer>6</integer>
+		</map>
+		<key>JoystickButtonRollLeft</key>
+		<map>
+		  <key>Comment</key>
+		  <string>Test</string>
+		  <key>Persist</key>
+		  <integer>1</integer>
+		  <key>Type</key>
+		  <string>S32</string>
+		  <key>Value</key>
+		  <integer>-1</integer>
+		</map>
+		<key>JoystickButtonRollRight</key>
+		<map>
+		  <key>Comment</key>
+		  <string>Test</string>
+		  <key>Persist</key>
+		  <integer>1</integer>
+		  <key>Type</key>
+		  <string>S32</string>
+		  <key>Value</key>
+		  <integer>-1</integer>
+		</map>
+		<key>JoystickButtonRollDefault</key>
+		<map>
+		  <key>Comment</key>
+		  <string>Test</string>
+		  <key>Persist</key>
+		  <integer>1</integer>
+		  <key>Type</key>
+		  <string>S32</string>
+		  <key>Value</key>
+		  <integer>-1</integer>
+		</map>
+		<key>JoystickInvertPitch</key>
+		  <map>
+			<key>Comment</key>
+			<string>Invert pitch axis in all joystick modes.</string>
+			<key>Persist</key>
+			<integer>1</integer>
+			<key>Type</key>
+			<string>Boolean</string>
+			<key>Value</key>
+			<integer>0</integer>
+		  </map>
 	</map>
 </llsd>
diff --git a/indra/newview/llfloaterjoystick.cpp b/indra/newview/llfloaterjoystick.cpp
index 09763b7bb5a..03e587e38ee 100644
--- a/indra/newview/llfloaterjoystick.cpp
+++ b/indra/newview/llfloaterjoystick.cpp
@@ -134,6 +134,15 @@ void LLFloaterJoystick::draw()
         }
     }
 
+	for (U32 i = 0; i < 16; i++)
+	{
+        U32 value = joystick->getJoystickButton(i);
+		if (!mAxisButton[i]->getEnabled() && value)
+		{
+			mAxisButton[i]->setEnabled(TRUE);
+		}
+		mAxisButton[i]->setToggleState(value);
+	}
     LLFloater::draw();
 }
 
@@ -154,6 +163,12 @@ BOOL LLFloaterJoystick::postBuild()
         }
     }
 
+	for (U32 i = 0; i < 16; i++)
+	{
+		std::string btn_name = llformat("btn%d", i);
+		mAxisButton[i] = getChild<LLButton>(btn_name);
+	}
+
     mJoysticksCombo = getChild<LLComboBox>("joystick_combo");
     childSetCommitCallback("joystick_combo",onCommitJoystickEnabled,this);
     mCheckFlycamEnabled = getChild<LLCheckBoxCtrl>("JoystickFlycamEnabled");
diff --git a/indra/newview/llfloaterjoystick.h b/indra/newview/llfloaterjoystick.h
index 6a804239dbf..5aa0dbd0104 100644
--- a/indra/newview/llfloaterjoystick.h
+++ b/indra/newview/llfloaterjoystick.h
@@ -100,6 +100,8 @@ class LLFloaterJoystick final : public LLFloater
 
     // stats view
     LLStatBar* mAxisStatsBar[6];
+
+	LLButton* mAxisButton[16];
 };
 
 #endif
diff --git a/indra/newview/llviewerjoystick.cpp b/indra/newview/llviewerjoystick.cpp
index 739234534a9..dcccd244013 100644
--- a/indra/newview/llviewerjoystick.cpp
+++ b/indra/newview/llviewerjoystick.cpp
@@ -402,6 +402,19 @@ LLViewerJoystick::LLViewerJoystick()
 
     gSavedSettings.getControl("JoystickInvertPitch")->getCommitSignal()->connect([this](LLControlVariable* control, const LLSD& new_val, const LLSD& old_val) { refreshFromSettings(); });
 
+    gSavedSettings.getControl("JoystickButtonRollLeft")->getCommitSignal()->connect([this](LLControlVariable* control, const LLSD& new_val, const LLSD& old_val) { refreshFromSettings(); });
+    gSavedSettings.getControl("JoystickButtonRollRight")->getCommitSignal()->connect([this](LLControlVariable* control, const LLSD& new_val, const LLSD& old_val) { refreshFromSettings(); });
+    gSavedSettings.getControl("JoystickButtonRollDefault")->getCommitSignal()->connect([this](LLControlVariable* control, const LLSD& new_val, const LLSD& old_val) { refreshFromSettings(); });
+    gSavedSettings.getControl("JoystickButtonZoomOut")->getCommitSignal()->connect([this](LLControlVariable* control, const LLSD& new_val, const LLSD& old_val) { refreshFromSettings(); });
+    gSavedSettings.getControl("JoystickButtonZoomIn")->getCommitSignal()->connect([this](LLControlVariable* control, const LLSD& new_val, const LLSD& old_val) { refreshFromSettings(); });
+    gSavedSettings.getControl("JoystickButtonZoomDefault")->getCommitSignal()->connect([this](LLControlVariable* control, const LLSD& new_val, const LLSD& old_val) { refreshFromSettings(); });
+    gSavedSettings.getControl("JoystickButtonJump")->getCommitSignal()->connect([this](LLControlVariable* control, const LLSD& new_val, const LLSD& old_val) { refreshFromSettings(); });
+    gSavedSettings.getControl("JoystickButtonCrouch")->getCommitSignal()->connect([this](LLControlVariable* control, const LLSD& new_val, const LLSD& old_val) { refreshFromSettings(); });
+    gSavedSettings.getControl("JoystickButtonFly")->getCommitSignal()->connect([this](LLControlVariable* control, const LLSD& new_val, const LLSD& old_val) { refreshFromSettings(); });
+    gSavedSettings.getControl("JoystickButtonMouselook")->getCommitSignal()->connect([this](LLControlVariable* control, const LLSD& new_val, const LLSD& old_val) { refreshFromSettings(); });
+    gSavedSettings.getControl("JoystickButtonFlycam")->getCommitSignal()->connect([this](LLControlVariable* control, const LLSD& new_val, const LLSD& old_val) { refreshFromSettings(); });
+    gSavedSettings.getControl("JoystickButtonRunToggle")->getCommitSignal()->connect([this](LLControlVariable* control, const LLSD& new_val, const LLSD& old_val) { refreshFromSettings(); });
+
     refreshFromSettings();
 }
 
@@ -607,6 +620,19 @@ void LLViewerJoystick::refreshFromSettings()
     mFlycamFeathering = gSavedSettings.getF32("FlycamFeathering");
 
     mInvertPitch = gSavedSettings.getBOOL("JoystickInvertPitch");
+	
+	mMappedButtons[ROLL_LEFT] = gSavedSettings.getS32("JoystickButtonRollLeft");
+	mMappedButtons[ROLL_RIGHT] = gSavedSettings.getS32("JoystickButtonRollRight");
+	mMappedButtons[ROLL_DEFAULT] = gSavedSettings.getS32("JoystickButtonRollDefault");
+	mMappedButtons[ZOOM_OUT] = gSavedSettings.getS32("JoystickButtonZoomOut");
+	mMappedButtons[ZOOM_IN] = gSavedSettings.getS32("JoystickButtonZoomIn");
+	mMappedButtons[ZOOM_DEFAULT] = gSavedSettings.getS32("JoystickButtonZoomDefault");
+	mMappedButtons[JUMP] = gSavedSettings.getS32("JoystickButtonJump");
+	mMappedButtons[CROUCH] = gSavedSettings.getS32("JoystickButtonCrouch");
+	mMappedButtons[FLY] = gSavedSettings.getS32("JoystickButtonFly");
+	mMappedButtons[MOUSELOOK] = gSavedSettings.getS32("JoystickButtonMouselook");
+	mMappedButtons[FLYCAM] = gSavedSettings.getS32("JoystickButtonFlycam");
+	mMappedButtons[TOGGLE_RUN] = gSavedSettings.getS32("JoystickButtonRunToggle");
 }
 
 void LLViewerJoystick::initDevice(LLSD &guid)
@@ -958,49 +984,115 @@ void LLViewerJoystick::moveObjects(bool reset)
 
     F32 cur_delta[6];
     F32 time = gFrameIntervalSeconds.value();
+    bool is_zero = true;
 
-    // avoid making ridicously big movements if there's a big drop in fps
-    if (time > .2f)
-    {
-        time = .2f;
-    }
+    static LLCachedControl<bool> blackdragon(gSavedSettings, "BlackDragonControls", false);
+	if(blackdragon)
+	{
+		//BD - Avoid making ridicously big movements if there's a big drop in fps 
+		time = llclamp(time, 0.016f, 0.033f);
 
-    // max feather is 32
-    F32 feather = mBuildFeathering;
-    bool is_zero = true, absolute = m3DCursor;
+	//	//BD - Remappable Joystick Controls
 
-    for (U32 i = 0; i < 6; i++)
-    {
-        cur_delta[i] = -mAxes[mJoystickAxis[i]];
-//      //BD - Invertable Pitch Controls
-        if (!mInvertPitch && i == 4)
-            cur_delta[i] = -cur_delta[i];
+	
+		for (U32 i = 0; i < 6; i++)
+		{
+			cur_delta[i] = -getJoystickAxis(mJoystickAxis[i]);
 
-        F32 tmp = cur_delta[i];
-        if (absolute)
-        {
-            cur_delta[i] = cur_delta[i] - sLastDelta[i];
-        }
-        sLastDelta[i] = tmp;
-        is_zero = is_zero && (cur_delta[i] == 0.f);
-
-        if (cur_delta[i] > 0)
-        {
-            cur_delta[i] = llmax(cur_delta[i]- mBuildAxisDeadZone[i], 0.f);
-        }
-        else
-        {
-            cur_delta[i] = llmin(cur_delta[i]+ mBuildAxisDeadZone[i], 0.f);
-        }
-        cur_delta[i] *= mBuildAxisScale[i];
-
-        if (!absolute)
-        {
-            cur_delta[i] *= time;
-        }
+            if (i == CAM_X_AXIS)
+            {
+                cur_delta[i] -= (F32)getJoystickButton(mMappedButtons[ROLL_LEFT]);
+                cur_delta[i] += (F32)getJoystickButton(mMappedButtons[ROLL_RIGHT]);
+            }
+            if (i == Z_AXIS)
+            {
+                cur_delta[i] += (F32)getJoystickButton(mMappedButtons[JUMP]);
+                cur_delta[i] -= (F32)getJoystickButton(mMappedButtons[CROUCH]);
+            }
 
-        sDelta[i] = sDelta[i] + (cur_delta[i]-sDelta[i])*time*feather;
-    }
+	//		//BD - Invertable Pitch Controls
+            if (mInvertPitch && i == 4)
+				cur_delta[4] *= -1.f;
+
+			F32 tmp = cur_delta[i];
+			F32 axis_deadzone = mBuildAxisDeadZone[i];
+			if (m3DCursor || llabs(cur_delta[i]) < axis_deadzone)
+			{
+				cur_delta[i] = cur_delta[i] - sLastDelta[i];
+			}
+			sLastDelta[i] = tmp;
+			is_zero = is_zero && (cur_delta[i] == 0.f);
+			
+			//BD - We assume that delta 1.0 is the maximum.
+			if (llabs(cur_delta[i]) > axis_deadzone)
+			{
+				//BD - Clamp the delta between 1 and -1 while taking the deadzone into account.
+				if (cur_delta[i] > 0)
+				{
+					cur_delta[i] = llclamp(cur_delta[i] - axis_deadzone, 0.f, 1.f - axis_deadzone);
+				}
+				else
+				{
+					cur_delta[i] = llclamp(cur_delta[i] + axis_deadzone, -1.f + axis_deadzone, 0.f);
+				}
+				//BD - Rescale the remaining delta to match the maximum to get a new clean 0 to 1 range.
+				cur_delta[i] = cur_delta[i] / (1.f - axis_deadzone);
+			}
+			cur_delta[i] *= mBuildAxisScale[i];
+		
+			if (!m3DCursor)
+			{
+				cur_delta[i] *= time;
+			}
+
+			sDelta[i] = sDelta[i] + (cur_delta[i] - sDelta[i]) * time * mBuildFeathering;
+		}
+	}
+	else
+	{
+	    // avoid making ridicously big movements if there's a big drop in fps
+	    if (time > .2f)
+	    {
+	        time = .2f;
+	    }
+
+	    // max feather is 32
+	    F32 feather = mBuildFeathering;
+	    bool absolute = m3DCursor;
+
+	    for (U32 i = 0; i < 6; i++)
+	    {
+	        cur_delta[i] = -mAxes[mJoystickAxis[i]];
+	//      //BD - Invertable Pitch Controls
+	        if (!mInvertPitch && i == 4)
+	            cur_delta[i] = -cur_delta[i];
+
+	        F32 tmp = cur_delta[i];
+	        if (absolute)
+	        {
+	            cur_delta[i] = cur_delta[i] - sLastDelta[i];
+	        }
+	        sLastDelta[i] = tmp;
+	        is_zero = is_zero && (cur_delta[i] == 0.f);
+
+	        if (cur_delta[i] > 0)
+	        {
+	            cur_delta[i] = llmax(cur_delta[i]- mBuildAxisDeadZone[i], 0.f);
+	        }
+	        else
+	        {
+	            cur_delta[i] = llmin(cur_delta[i]+ mBuildAxisDeadZone[i], 0.f);
+	        }
+	        cur_delta[i] *= mBuildAxisScale[i];
+
+	        if (!absolute)
+	        {
+	            cur_delta[i] *= time;
+	        }
+
+	        sDelta[i] = sDelta[i] + (cur_delta[i]-sDelta[i])*time*feather;
+	    }
+	}
 
     U32 upd_type = UPD_NONE;
     LLVector3 v;
@@ -1058,198 +1150,373 @@ void LLViewerJoystick::moveAvatar(bool reset)
         return;
     }
 
-    bool is_zero = true;
-    static bool button_held = false;
-
-    if (mBtn[1] == 1)
-    {
-        // If AutomaticFly is enabled, then button1 merely causes a
-        // jump (as the up/down axis already controls flying) if on the
-        // ground, or cease flight if already flying.
-        // If AutomaticFly is disabled, then button1 toggles flying.
-        if (ALControlCache::AutomaticFly)
-        {
-            if (!gAgent.getFlying())
-            {
-                gAgent.moveUp(1);
-            }
-            else if (!button_held)
-            {
-                button_held = true;
-                gAgent.setFlying(FALSE);
-            }
-        }
-        else if (!button_held)
-        {
-            button_held = true;
-            gAgent.setFlying(!gAgent.getFlying());
-        }
-
-        is_zero = false;
-    }
-    else
-    {
-        button_held = false;
-    }
-
-    // time interval in seconds between this frame and the previous
-    F32 time = gFrameIntervalSeconds.value();
-
-    // avoid making ridicously big movements if there's a big drop in fps
-    if (time > .2f)
-    {
-        time = .2f;
-    }
-
-    // note: max feather is 32.0
-    F32 feather = mAvatarFeathering;
-
-    F32 cur_delta[6];
-    F32 val, dom_mov = 0.f;
-    U32 dom_axis = Z_I;
-#if LIB_NDOF
-    bool absolute = (m3DCursor && mNdofDev->absolute);
-#else
-    bool absolute = false;
-#endif
-    // remove dead zones and determine biggest movement on the joystick
-    for (U32 i = 0; i < 6; i++)
-    {
-        cur_delta[i] = -mAxes[mJoystickAxis[i]];
-
-        if (!mInvertPitch && i == 4)
-            cur_delta[i] = -cur_delta[i];
-
-        if (absolute)
-        {
-            F32 tmp = cur_delta[i];
-            cur_delta[i] = cur_delta[i] - sLastDelta[i];
-            sLastDelta[i] = tmp;
-        }
-
-        if (cur_delta[i] > 0)
-        {
-            cur_delta[i] = llmax(cur_delta[i]- mAvatarAxisDeadZone[i], 0.f);
-        }
-        else
-        {
-            cur_delta[i] = llmin(cur_delta[i]+ mAvatarAxisDeadZone[i], 0.f);
-        }
-
-        // we don't care about Roll (RZ) and Z is calculated after the loop
-        if (i != Z_I && i != RZ_I)
-        {
-            // find out the axis with the biggest joystick motion
-            val = fabs(cur_delta[i]);
-            if (val > dom_mov)
+    static LLCachedControl<bool> blackdragon(gSavedSettings, "BlackDragonControls", false);
+    if (blackdragon)
+	{
+		bool is_zero = true;
+		static bool button_held = false;
+		//BD
+		static bool w_button_held = false;
+		static bool m_button_held = false;
+
+	//	//BD - Remappable Joystick Controls
+		if (getJoystickButton(mMappedButtons[FLY]) == 1 && !button_held)
+		{
+			button_held = true;
+			if (gAgent.getFlying())
+			{
+				gAgent.setFlying(FALSE);
+			}
+			else
+			{
+				gAgent.setFlying(TRUE);
+			}
+		}
+		else if (getJoystickButton(mMappedButtons[FLY]) == 0 && button_held)
+		{
+			button_held = false;
+		}
+
+		if (getJoystickButton(mMappedButtons[TOGGLE_RUN]) == 1 && !w_button_held)
+		{
+			w_button_held = true;
+			if (gAgent.getAlwaysRun())
+			{
+				gAgent.clearAlwaysRun();
+			}
+			else
+			{
+				gAgent.setAlwaysRun();
+			}
+		}
+		else if (getJoystickButton(mMappedButtons[TOGGLE_RUN]) == 0 && w_button_held)
+		{
+			w_button_held = false;
+		}
+
+		if (getJoystickButton(mMappedButtons[MOUSELOOK]) == 1 && !m_button_held)
+		{
+			m_button_held = true;
+			if (gAgentCamera.cameraMouselook())
+			{
+				gAgentCamera.changeCameraToDefault();
+			}
+			else
+			{
+				gAgentCamera.changeCameraToMouselook();
+			}
+		}
+		else if (getJoystickButton(mMappedButtons[MOUSELOOK]) == 0 && m_button_held)
+		{
+			m_button_held = false;
+		}
+
+		// time interval in seconds between this frame and the previous
+		F32 time = gFrameIntervalSeconds.value();
+
+		//BD - Avoid making ridicously big movements if there's a big drop in fps 
+		time = llclamp(time, 0.016f, 0.033f);
+
+		// note: max feather is 32.0
+	
+        F32 cur_delta[6] = {};
+		F32 val, dom_mov = 0.f;
+		U32 dom_axis = Z_I;
+
+		// remove dead zones and determine biggest movement on the joystick 
+		for (U32 i = 0; i < 6; i++)
+		{
+			cur_delta[i] = -getJoystickAxis(mJoystickAxis[i]);
+
+            if(i == Z_AXIS)
             {
-                dom_axis = i;
-                dom_mov = val;
+                cur_delta[i] += (F32)getJoystickButton(mMappedButtons[JUMP]);
+                cur_delta[i] -= (F32)getJoystickButton(mMappedButtons[CROUCH]);
             }
-        }
-
-        is_zero = is_zero && (cur_delta[i] == 0.f);
-    }
-
-    if (!is_zero)
-    {
-        // Clear AFK state if moved beyond the deadzone
-        if (gAwayTimer.getElapsedTimeF32() > LLAgent::MIN_AFK_TIME)
-        {
-            gAgent.clearAFK();
-        }
-
-        setCameraNeedsUpdate(true);
-    }
-
-    // forward|backward movements overrule the real dominant movement if
-    // they're bigger than its 20%. This is what you want 'cos moving forward
-    // is what you do most. We also added a special (even more lenient) case
-    // for RX|RY to allow walking while pitching and turning
-    if (fabs(cur_delta[Z_I]) > .2f * dom_mov
-        || ((dom_axis == RX_I || dom_axis == RY_I)
-        && fabs(cur_delta[Z_I]) > .05f * dom_mov))
-    {
-        dom_axis = Z_I;
-    }
-
-    sDelta[X_I] = -cur_delta[X_I] * mAvatarAxisScale[X_I];
-    sDelta[Y_I] = -cur_delta[Y_I] * mAvatarAxisScale[Y_I];
-    sDelta[Z_I] = -cur_delta[Z_I] * mAvatarAxisScale[Z_I];
-    cur_delta[RX_I] *= -mAvatarAxisScale[RX_I] * mPerfScale;
-    cur_delta[RY_I] *= -mAvatarAxisScale[RY_I] * mPerfScale;
-
-    if (!absolute)
-    {
-        cur_delta[RX_I] *= time;
-        cur_delta[RY_I] *= time;
-    }
-    sDelta[RX_I] += (cur_delta[RX_I] - sDelta[RX_I]) * time * feather;
-    sDelta[RY_I] += (cur_delta[RY_I] - sDelta[RY_I]) * time * feather;
-
-    handleRun((F32) sqrt(sDelta[Z_I]*sDelta[Z_I] + sDelta[X_I]*sDelta[X_I]));
 
-    // Allow forward/backward movement some priority
-    if (dom_axis == Z_I)
-    {
-        agentPush(sDelta[Z_I]);         // forward/back
-
-        if (fabs(sDelta[X_I])  > .1f)
-        {
-            agentSlide(sDelta[X_I]);    // move sideways
-        }
-
-        if (fabs(sDelta[Y_I])  > .1f)
-        {
-            agentFly(sDelta[Y_I]);      // up/down & crouch
-        }
-
-        // too many rotations during walking can be confusing, so apply
-        // the deadzones one more time (quick & dirty), at 50%|30% power
-        F32 eff_rx = .3f * mAvatarAxisDeadZone[RX_I];
-        F32 eff_ry = .3f * mAvatarAxisDeadZone[RY_I];
-
-        if (sDelta[RX_I] > 0)
-        {
-            eff_rx = llmax(sDelta[RX_I] - eff_rx, 0.f);
-        }
-        else
-        {
-            eff_rx = llmin(sDelta[RX_I] + eff_rx, 0.f);
-        }
-
-        if (sDelta[RY_I] > 0)
-        {
-            eff_ry = llmax(sDelta[RY_I] - eff_ry, 0.f);
-        }
-        else
-        {
-            eff_ry = llmin(sDelta[RY_I] + eff_ry, 0.f);
-        }
-
-
-        if (fabs(eff_rx) > 0.f || fabs(eff_ry) > 0.f)
-        {
-            if (gAgent.getFlying())
-            {
-                agentPitch(eff_rx);
-                agentYaw(eff_ry);
-            }
-            else
-            {
-                agentPitch(eff_rx);
-                agentYaw(2.f * eff_ry);
-            }
-        }
-    }
-    else
-    {
-        agentSlide(sDelta[X_I]);        // move sideways
-        agentFly(sDelta[Y_I]);          // up/down & crouch
-        agentPush(sDelta[Z_I]);         // forward/back
-        agentPitch(sDelta[RX_I]);       // pitch
-        agentYaw(sDelta[RY_I]);         // turn
-    }
+			F32 axis_deadzone = mAvatarAxisDeadZone[i];
+
+			//BD - We assume that delta 1.0 is the maximum.
+			if (llabs(cur_delta[i]) > axis_deadzone)
+			{
+				//BD - Clamp the delta between 1 and -1 while taking the deadzone into account.
+				if (cur_delta[i] > 0)
+				{
+					cur_delta[i] = llclamp(cur_delta[i] - axis_deadzone, 0.f, 1.f - axis_deadzone);
+				}
+				else
+				{
+					cur_delta[i] = llclamp(cur_delta[i] + axis_deadzone, -1.f + axis_deadzone, 0.f);
+				}
+				//BD - Rescale the remaining delta to match the maximum to get a new clean 0 to 1 range.
+				cur_delta[i] = cur_delta[i] / (1.f - axis_deadzone);
+			}
+			else
+			{
+				cur_delta[i] = 0.f;
+			}
+
+			// we don't care about Roll (RZ) and Z is calculated after the loop
+	        if (i != Z_I && i != RZ_I)
+			{
+				// find out the axis with the biggest joystick motion
+				val = fabs(cur_delta[i]);
+				if (val > dom_mov)
+				{
+					dom_axis = i;
+					dom_mov = val;
+				}
+			}
+		
+			cur_delta[i] *= mAvatarAxisScale[i] * time;
+
+			//sDelta[i] = sDelta[i] + (cur_delta[i] - sDelta[i]) * time;
+			is_zero = is_zero && (cur_delta[i] == 0.f);
+		}
+
+		if (!is_zero)
+		{
+			// Clear AFK state if moved beyond the deadzone
+			if (gAwayTimer.getElapsedTimeF32() > LLAgent::MIN_AFK_TIME)
+			{
+				gAgent.clearAFK();
+			}
+		
+			setCameraNeedsUpdate(true);
+		}
+
+	//	//BD - Invertable Pitch Controls
+		if (!mInvertPitch)
+			cur_delta[RX_I] = -cur_delta[RX_I];
+
+		// forward|backward movements overrule the real dominant movement if 
+		// they're bigger than its 20%. This is what you want 'cos moving forward
+		// is what you do most. We also added a special (even more lenient) case 
+		// for RX|RY to allow walking while pitching and turning
+		if (fabs(cur_delta[Z_I]) > .2f * dom_mov
+		    || ((dom_axis == RX_I || dom_axis == RY_I) 
+			&& fabs(cur_delta[Z_I]) > .05f * dom_mov))
+		{
+			dom_axis = Z_I;
+		}
+
+		sDelta[X_I] = -cur_delta[X_I];
+		sDelta[Y_I] = -cur_delta[Y_I];
+		sDelta[Z_I] = -cur_delta[Z_I];
+		cur_delta[RX_I] *= -mAvatarAxisScale[RX_I];
+		cur_delta[RY_I] *= -mAvatarAxisScale[RY_I];
+		
+		sDelta[RX_I] += (cur_delta[RX_I] - sDelta[RX_I]) * time * mAvatarFeathering;
+		sDelta[RY_I] += (cur_delta[RY_I] - sDelta[RY_I]) * time * mAvatarFeathering;
+	
+		handleRun((F32) sqrt(sDelta[Z_I]*sDelta[Z_I] + sDelta[X_I]*sDelta[X_I]));
+	
+	//	//BD - Xbox360 Controller Support
+		//     Use raw deltas, do not add any stupid limitations or extra dead zones
+		//     otherwise alot controllers will cry and camera movement will bug out
+		//     or be completely ignored on some controllers. Especially fixes Xbox 360
+		//     controller avatar movement.
+		agentSlide(sDelta[X_I]);		// move sideways
+		agentFly(sDelta[Y_I]);			// up/down & crouch
+		agentPush(sDelta[Z_I]);			// forward/back
+		agentPitch(sDelta[RX_I]);		// pitch
+		agentYaw(sDelta[RY_I]);			// turn
+	}
+	else
+	{
+	    bool is_zero = true;
+	    static bool button_held = false;
+
+	    if (mBtn[1] == 1)
+	    {
+	        // If AutomaticFly is enabled, then button1 merely causes a
+	        // jump (as the up/down axis already controls flying) if on the
+	        // ground, or cease flight if already flying.
+	        // If AutomaticFly is disabled, then button1 toggles flying.
+	        if (ALControlCache::AutomaticFly)
+	        {
+	            if (!gAgent.getFlying())
+	            {
+	                gAgent.moveUp(1);
+	            }
+	            else if (!button_held)
+	            {
+	                button_held = true;
+	                gAgent.setFlying(FALSE);
+	            }
+	        }
+	        else if (!button_held)
+	        {
+	            button_held = true;
+	            gAgent.setFlying(!gAgent.getFlying());
+	        }
+
+	        is_zero = false;
+	    }
+	    else
+	    {
+	        button_held = false;
+	    }
+
+	    // time interval in seconds between this frame and the previous
+	    F32 time = gFrameIntervalSeconds.value();
+
+	    // avoid making ridicously big movements if there's a big drop in fps
+	    if (time > .2f)
+	    {
+	        time = .2f;
+	    }
+
+	    // note: max feather is 32.0
+	    F32 feather = mAvatarFeathering;
+
+	    F32 cur_delta[6];
+	    F32 val, dom_mov = 0.f;
+	    U32 dom_axis = Z_I;
+	#if LIB_NDOF
+	    bool absolute = (m3DCursor && mNdofDev->absolute);
+	#else
+	    bool absolute = false;
+	#endif
+	    // remove dead zones and determine biggest movement on the joystick
+	    for (U32 i = 0; i < 6; i++)
+	    {
+	        cur_delta[i] = -mAxes[mJoystickAxis[i]];
+
+	        if (!mInvertPitch && i == 4)
+	            cur_delta[i] = -cur_delta[i];
+
+	        if (absolute)
+	        {
+	            F32 tmp = cur_delta[i];
+	            cur_delta[i] = cur_delta[i] - sLastDelta[i];
+	            sLastDelta[i] = tmp;
+	        }
+
+	        if (cur_delta[i] > 0)
+	        {
+	            cur_delta[i] = llmax(cur_delta[i]- mAvatarAxisDeadZone[i], 0.f);
+	        }
+	        else
+	        {
+	            cur_delta[i] = llmin(cur_delta[i]+ mAvatarAxisDeadZone[i], 0.f);
+	        }
+
+	        // we don't care about Roll (RZ) and Z is calculated after the loop
+	        if (i != Z_I && i != RZ_I)
+	        {
+	            // find out the axis with the biggest joystick motion
+	            val = fabs(cur_delta[i]);
+	            if (val > dom_mov)
+	            {
+	                dom_axis = i;
+	                dom_mov = val;
+	            }
+	        }
+
+	        is_zero = is_zero && (cur_delta[i] == 0.f);
+	    }
+
+	    if (!is_zero)
+	    {
+	        // Clear AFK state if moved beyond the deadzone
+	        if (gAwayTimer.getElapsedTimeF32() > LLAgent::MIN_AFK_TIME)
+	        {
+	            gAgent.clearAFK();
+	        }
+
+	        setCameraNeedsUpdate(true);
+	    }
+
+	    // forward|backward movements overrule the real dominant movement if
+	    // they're bigger than its 20%. This is what you want 'cos moving forward
+	    // is what you do most. We also added a special (even more lenient) case
+	    // for RX|RY to allow walking while pitching and turning
+	    if (fabs(cur_delta[Z_I]) > .2f * dom_mov
+	        || ((dom_axis == RX_I || dom_axis == RY_I)
+	        && fabs(cur_delta[Z_I]) > .05f * dom_mov))
+	    {
+	        dom_axis = Z_I;
+	    }
+
+	    sDelta[X_I] = -cur_delta[X_I] * mAvatarAxisScale[X_I];
+	    sDelta[Y_I] = -cur_delta[Y_I] * mAvatarAxisScale[Y_I];
+	    sDelta[Z_I] = -cur_delta[Z_I] * mAvatarAxisScale[Z_I];
+	    cur_delta[RX_I] *= -mAvatarAxisScale[RX_I] * mPerfScale;
+	    cur_delta[RY_I] *= -mAvatarAxisScale[RY_I] * mPerfScale;
+
+	    if (!absolute)
+	    {
+	        cur_delta[RX_I] *= time;
+	        cur_delta[RY_I] *= time;
+	    }
+	    sDelta[RX_I] += (cur_delta[RX_I] - sDelta[RX_I]) * time * feather;
+	    sDelta[RY_I] += (cur_delta[RY_I] - sDelta[RY_I]) * time * feather;
+
+	    handleRun((F32) sqrt(sDelta[Z_I]*sDelta[Z_I] + sDelta[X_I]*sDelta[X_I]));
+
+	    // Allow forward/backward movement some priority
+	    if (dom_axis == Z_I)
+	    {
+	        agentPush(sDelta[Z_I]);         // forward/back
+
+	        if (fabs(sDelta[X_I])  > .1f)
+	        {
+	            agentSlide(sDelta[X_I]);    // move sideways
+	        }
+
+	        if (fabs(sDelta[Y_I])  > .1f)
+	        {
+	            agentFly(sDelta[Y_I]);      // up/down & crouch
+	        }
+
+	        // too many rotations during walking can be confusing, so apply
+	        // the deadzones one more time (quick & dirty), at 50%|30% power
+	        F32 eff_rx = .3f * mAvatarAxisDeadZone[RX_I];
+	        F32 eff_ry = .3f * mAvatarAxisDeadZone[RY_I];
+
+	        if (sDelta[RX_I] > 0)
+	        {
+	            eff_rx = llmax(sDelta[RX_I] - eff_rx, 0.f);
+	        }
+	        else
+	        {
+	            eff_rx = llmin(sDelta[RX_I] + eff_rx, 0.f);
+	        }
+
+	        if (sDelta[RY_I] > 0)
+	        {
+	            eff_ry = llmax(sDelta[RY_I] - eff_ry, 0.f);
+	        }
+	        else
+	        {
+	            eff_ry = llmin(sDelta[RY_I] + eff_ry, 0.f);
+	        }
+
+
+	        if (fabs(eff_rx) > 0.f || fabs(eff_ry) > 0.f)
+	        {
+	            if (gAgent.getFlying())
+	            {
+	                agentPitch(eff_rx);
+	                agentYaw(eff_ry);
+	            }
+	            else
+	            {
+	                agentPitch(eff_rx);
+	                agentYaw(2.f * eff_ry);
+	            }
+	        }
+	    }
+	    else
+	    {
+	        agentSlide(sDelta[X_I]);        // move sideways
+	        agentFly(sDelta[Y_I]);          // up/down & crouch
+	        agentPush(sDelta[Z_I]);         // forward/back
+	        agentPitch(sDelta[RX_I]);       // pitch
+	        agentYaw(sDelta[RY_I]);         // turn
+	    }
+	}
 }
 
 // -----------------------------------------------------------------------------
@@ -1277,106 +1544,250 @@ void LLViewerJoystick::moveFlycam(bool reset)
         return;
     }
 
-    F32 time = gFrameIntervalSeconds.value();
+    static LLCachedControl<F32> build_mode_scale(gSavedSettings, "FlycamBuildModeScale", 1.0);
 
-    // avoid making ridiculously big movements if there's a big drop in fps
-    if (time > .2f)
-    {
-        time = .2f;
-    }
+    static LLCachedControl<bool> blackdragon(gSavedSettings, "BlackDragonControls", false);
+    if (blackdragon)
+	{
+		F32 time = gFrameIntervalSeconds.value();
 
-    F32 cur_delta[7];
-    F32 feather = mFlycamFeathering;
-    bool absolute = m3DCursor;
-    bool is_zero = true;
+		//BD - Avoid making ridiculously big movements if there's a big drop in fps 
+		time = llclamp(time, 0.016f, 0.033f);
 
-    for (U32 i = 0; i < 7; i++)
-    {
-        cur_delta[i] = -getJoystickAxis(mJoystickAxis[i]);
+		F32 flycam_feather = mFlycamFeathering;
+		F32 cur_delta[MAX_AXES];
+		F32 max_angle = LLViewerCamera::getInstance()->getMaxView();
+		F32 min_angle = LLViewerCamera::getInstance()->getMinView();
 
-        if (!mInvertPitch && i == 4)
-            cur_delta[i] = -cur_delta[i];
+		//BD - Slam zoom back to default and kill any delta we might have.
+		if (getJoystickButton(mMappedButtons[ZOOM_DEFAULT]) == 1)
+		{
+			sFlycamZoom = gSavedSettings.getF32("CameraAngle");
+			sDelta[CAM_W_AXIS] = 0.0f;
+		}
 
-        F32 tmp = cur_delta[i];
-        if (absolute)
-        {
-            cur_delta[i] = cur_delta[i] - sLastDelta[i];
-        }
-        sLastDelta[i] = tmp;
+		//BD - Only smooth flycam zoom if we are not capping at the min/max otherwise the feathering
+		//     ends up working against previous input, delaying zoom in movement when we just zoomed
+		//     out beyond capped max for a bit and vise versa.
+		if ((sFlycamZoom <= min_angle
+			|| sFlycamZoom >= max_angle))
+		{
+			flycam_feather = 3.0f;
+		}
 
-        if (cur_delta[i] > 0)
-        {
-            cur_delta[i] = llmax(cur_delta[i]- mFlycamAxisDeadZone[i], 0.f);
-        }
-        else
-        {
-            cur_delta[i] = llmin(cur_delta[i]+ mFlycamAxisDeadZone[i], 0.f);
-        }
+		bool is_zero = true;
+		for (U32 i = 0; i < 7; i++)
+		{
+			cur_delta[i] = -getJoystickAxis(mJoystickAxis[i]);
 
-        // We may want to scale camera movements up or down in build mode.
-        // NOTE: this needs to remain after the deadzone calculation, otherwise
-        // we have issues with flycam "jumping" when the build dialog is opened/closed  -Nyx
-        if (in_build_mode)
-        {
-            if (i == X_I || i == Y_I || i == Z_I)
+            if (i == CAM_W_AXIS)
             {
-                static LLCachedControl<F32> build_mode_scale(gSavedSettings,"FlycamBuildModeScale", 1.0);
-                cur_delta[i] *= build_mode_scale;
+                cur_delta[i] -= (F32)getJoystickButton(mMappedButtons[ZOOM_OUT]);
+                cur_delta[i] += (F32)getJoystickButton(mMappedButtons[ZOOM_IN]);
+            }
+            if (i == Z_AXIS)
+            {
+                cur_delta[i] += (F32)getJoystickButton(mMappedButtons[JUMP]);
+                cur_delta[i] -= (F32)getJoystickButton(mMappedButtons[CROUCH]);
+            }
+            if (i == CAM_X_AXIS)
+            {
+                cur_delta[i] -= (F32)getJoystickButton(mMappedButtons[ROLL_LEFT]);
+                cur_delta[i] += (F32)getJoystickButton(mMappedButtons[ROLL_RIGHT]);
             }
-        }
-
-        cur_delta[i] *= mFlycamAxisScale[i];
-
-        if (!absolute)
-        {
-            cur_delta[i] *= time;
-        }
-
-        sDelta[i] = sDelta[i] + (cur_delta[i]-sDelta[i])*time*feather;
-
-        is_zero = is_zero && (cur_delta[i] == 0.f);
-
-    }
-
-    // Clear AFK state if moved beyond the deadzone
-    if (!is_zero && gAwayTimer.getElapsedTimeF32() > LLAgent::MIN_AFK_TIME)
-    {
-        gAgent.clearAFK();
-    }
-
-    sFlycamPosition += LLVector3(sDelta.data()) * sFlycamRotation;
-
-    LLMatrix3 rot_mat(sDelta[3], sDelta[4], sDelta[5]);
-    sFlycamRotation = LLQuaternion(rot_mat)*sFlycamRotation;
-
-    if (mAutoLeveling)
-    {
-        LLMatrix3 level(sFlycamRotation);
-
-        LLVector3 x = LLVector3(level.mMatrix[0]);
-        LLVector3 y = LLVector3(level.mMatrix[1]);
-        LLVector3 z = LLVector3(level.mMatrix[2]);
-
-        y.mV[2] = 0.f;
-        y.normVec();
-
-        level.setRows(x,y,z);
-        level.orthogonalize();
-
-        LLQuaternion quat(level);
-        sFlycamRotation = nlerp(llmin(feather*time,1.f), sFlycamRotation, quat);
-    }
 
-    if (mZoomDirect)
-    {
-        sFlycamZoom = sLastDelta[6]* mFlycamAxisScale[6]+ mFlycamAxisDeadZone[6];
-    }
-    else
-    {
-        //BD - We need to cap zoom otherwise it internally counts higher causing
-        //     the zoom level to not react until that extra has been removed first.
-        sFlycamZoom = llclamp(sFlycamZoom + sDelta[6], LLViewerCamera::getInstance()->getMinView(), LLViewerCamera::getInstance()->getMaxView());
-    }
+			F32 tmp = cur_delta[i];
+			F32 axis_deadzone = mFlycamAxisDeadZone[i];
+			if (m3DCursor || llabs(cur_delta[i]) < axis_deadzone)
+			{
+				cur_delta[i] = cur_delta[i] - sLastDelta[i];
+			}
+			sLastDelta[i] = tmp;
+
+			//BD - We assume that delta 1.0 is the maximum.
+			if (llabs(cur_delta[i]) > axis_deadzone)
+			{
+				//BD - Clamp the delta between 1 and -1 while taking the deadzone into account.
+				if (cur_delta[i] > 0)
+				{
+					cur_delta[i] = llclamp(cur_delta[i] - axis_deadzone, 0.f, 1.f - axis_deadzone);
+				}
+				else
+				{
+					cur_delta[i] = llclamp(cur_delta[i] + axis_deadzone, -1.f + axis_deadzone, 0.f);
+				}
+				//BD - Rescale the remaining delta to match the maximum to get a new clean 0 to 1 range.
+				cur_delta[i] = cur_delta[i] / (1.f - axis_deadzone);
+			}
+
+			// We may want to scale camera movements up or down in build mode.
+			// NOTE: this needs to remain after the deadzone calculation, otherwise
+			// we have issues with flycam "jumping" when the build dialog is opened/closed  -Nyx
+			if (LLToolMgr::getInstance()->inBuildMode())
+			{
+				if (i == X_I || i == Y_I || i == Z_I)
+				{
+					cur_delta[i] *= build_mode_scale;
+				}
+			}
+
+			cur_delta[i] *= mFlycamAxisScale[i];
+
+			if (!m3DCursor)
+			{
+				cur_delta[i] *= time;
+			}
+
+			sDelta[i] = sDelta[i] + (cur_delta[i] - sDelta[i]) * time * flycam_feather;
+			is_zero = is_zero && (cur_delta[i] == 0.f);
+		}
+
+	//	//BD - Invertable Pitch Controls
+		if (mInvertPitch)
+			cur_delta[CAM_Y_AXIS] = -cur_delta[CAM_Y_AXIS];
+	
+		// Clear AFK state if moved beyond the deadzone
+		if (!is_zero && gAwayTimer.getElapsedTimeF32() > LLAgent::MIN_AFK_TIME)
+		{
+			gAgent.clearAFK();
+		}
+
+		sFlycamPosition += LLVector3(sDelta.data()) * sFlycamRotation;
+		LLMatrix3 rot_mat(sDelta[CAM_X_AXIS], sDelta[CAM_Y_AXIS], sDelta[CAM_Z_AXIS]);
+		sFlycamRotation = LLQuaternion(rot_mat)*sFlycamRotation;
+
+		if (mAutoLeveling || getJoystickButton(mMappedButtons[ROLL_DEFAULT]) == 1)
+		{
+			LLMatrix3 level(sFlycamRotation);
+
+			LLVector3 x = LLVector3(level.mMatrix[0]);
+			LLVector3 y = LLVector3(level.mMatrix[1]);
+			LLVector3 z = LLVector3(level.mMatrix[2]);
+
+			y.mV[2] = 0.f;
+			y.normVec();
+
+			level.setRows(x,y,z);
+			level.orthogonalize();
+				
+			LLQuaternion quat(level);
+			LLQuaternion lerp = nlerp(llmin(flycam_feather * time, 1.f), sFlycamRotation, quat);
+			sFlycamRotation = getJoystickButton(mMappedButtons[ROLL_DEFAULT]) == 1 ? quat : lerp;
+		}
+
+		if (mZoomDirect)
+		{
+			sFlycamZoom = sLastDelta[CAM_W_AXIS] * mFlycamAxisScale[FLYCAM_AXIS_6] + mFlycamAxisScale[FLYCAM_AXIS_6];
+		}
+		else
+		{
+			//BD - We need to cap zoom otherwise it internally counts higher causing
+			//     the zoom level to not react until that extra has been removed first.
+			sFlycamZoom = llclamp(sFlycamZoom + sDelta[CAM_W_AXIS], LLViewerCamera::getInstance()->getMinView(), LLViewerCamera::getInstance()->getMaxView());
+		}
+	}
+	else
+	{
+	    F32 time = gFrameIntervalSeconds.value();
+
+	    // avoid making ridiculously big movements if there's a big drop in fps
+	    if (time > .2f)
+	    {
+	        time = .2f;
+	    }
+
+	    F32 cur_delta[7];
+	    F32 feather = mFlycamFeathering;
+	    bool absolute = m3DCursor;
+	    bool is_zero = true;
+
+	    for (U32 i = 0; i < 7; i++)
+	    {
+	        cur_delta[i] = -getJoystickAxis(mJoystickAxis[i]);
+
+	        if (!mInvertPitch && i == 4)
+	            cur_delta[i] = -cur_delta[i];
+
+	        F32 tmp = cur_delta[i];
+	        if (absolute)
+	        {
+	            cur_delta[i] = cur_delta[i] - sLastDelta[i];
+	        }
+	        sLastDelta[i] = tmp;
+
+	        if (cur_delta[i] > 0)
+	        {
+	            cur_delta[i] = llmax(cur_delta[i]- mFlycamAxisDeadZone[i], 0.f);
+	        }
+	        else
+	        {
+	            cur_delta[i] = llmin(cur_delta[i]+ mFlycamAxisDeadZone[i], 0.f);
+	        }
+
+	        // We may want to scale camera movements up or down in build mode.
+	        // NOTE: this needs to remain after the deadzone calculation, otherwise
+	        // we have issues with flycam "jumping" when the build dialog is opened/closed  -Nyx
+	        if (in_build_mode)
+	        {
+	            if (i == X_I || i == Y_I || i == Z_I)
+	            {
+	                cur_delta[i] *= build_mode_scale;
+	            }
+	        }
+
+	        cur_delta[i] *= mFlycamAxisScale[i];
+
+	        if (!absolute)
+	        {
+	            cur_delta[i] *= time;
+	        }
+
+	        sDelta[i] = sDelta[i] + (cur_delta[i]-sDelta[i])*time*feather;
+
+	        is_zero = is_zero && (cur_delta[i] == 0.f);
+
+	    }
+
+	    // Clear AFK state if moved beyond the deadzone
+	    if (!is_zero && gAwayTimer.getElapsedTimeF32() > LLAgent::MIN_AFK_TIME)
+	    {
+	        gAgent.clearAFK();
+	    }
+
+	    sFlycamPosition += LLVector3(sDelta.data()) * sFlycamRotation;
+
+	    LLMatrix3 rot_mat(sDelta[3], sDelta[4], sDelta[5]);
+	    sFlycamRotation = LLQuaternion(rot_mat)*sFlycamRotation;
+
+	    if (mAutoLeveling)
+	    {
+	        LLMatrix3 level(sFlycamRotation);
+
+	        LLVector3 x = LLVector3(level.mMatrix[0]);
+	        LLVector3 y = LLVector3(level.mMatrix[1]);
+	        LLVector3 z = LLVector3(level.mMatrix[2]);
+
+	        y.mV[2] = 0.f;
+	        y.normVec();
+
+	        level.setRows(x,y,z);
+	        level.orthogonalize();
+
+	        LLQuaternion quat(level);
+	        sFlycamRotation = nlerp(llmin(feather*time,1.f), sFlycamRotation, quat);
+	    }
+
+	    if (mZoomDirect)
+	    {
+	        sFlycamZoom = sLastDelta[6]* mFlycamAxisScale[6]+ mFlycamAxisDeadZone[6];
+	    }
+	    else
+	    {
+	        //BD - We need to cap zoom otherwise it internally counts higher causing
+	        //     the zoom level to not react until that extra has been removed first.
+	        sFlycamZoom = llclamp(sFlycamZoom + sDelta[6], LLViewerCamera::getInstance()->getMinView(), LLViewerCamera::getInstance()->getMaxView());
+	    }
+	}
 
     LLMatrix3 mat(sFlycamRotation);
 
@@ -1445,17 +1856,35 @@ void LLViewerJoystick::scanJoystick()
 
     static long toggle_flycam = 0;
 
-    if (mBtn[0] == 1)
-    {
-        if (mBtn[0] != toggle_flycam)
-        {
-            toggle_flycam = toggleFlycam() ? 1 : 0;
-        }
-    }
-    else
-    {
-        toggle_flycam = 0;
-    }
+    static LLCachedControl<bool> blackdragon(gSavedSettings, "BlackDragonControls", false);
+    if (blackdragon)
+	{
+		if (getJoystickButton(mMappedButtons[FLYCAM]) == 1)
+		{
+			if (getJoystickButton(mMappedButtons[FLYCAM]) != toggle_flycam)
+			{
+				toggle_flycam = toggleFlycam() ? 1 : 0;
+			}
+		}
+		else
+		{
+			toggle_flycam = 0;
+		}
+	}
+	else
+	{
+	    if (mBtn[0] == 1)
+	    {
+	        if (mBtn[0] != toggle_flycam)
+	        {
+	            toggle_flycam = toggleFlycam() ? 1 : 0;
+	        }
+	    }
+	    else
+	    {
+	        toggle_flycam = 0;
+	    }
+	}
 
     if (!mOverrideCamera && !(LLToolMgr::getInstance()->inBuildMode() && mBuildEnabled))
     {
@@ -1617,6 +2046,7 @@ void LLViewerJoystick::setSNDefaults()
 
     //gViewerWindow->alertXml("CacheWillClear");
     LL_INFOS("Joystick") << "restoring SpaceNavigator defaults..." << LL_ENDL;
+    gSavedSettings.setBOOL("BlackDragonControls", FALSE);
 
     gSavedSettings.setS32("JoystickAxis0", 1); // z (at)
     gSavedSettings.setS32("JoystickAxis1", 0); // x (slide)
@@ -1626,6 +2056,19 @@ void LLViewerJoystick::setSNDefaults()
     gSavedSettings.setS32("JoystickAxis5", 5); // yaw
     gSavedSettings.setS32("JoystickAxis6", -1);
 
+	gSavedSettings.setS32("JoystickButtonJump", -1);
+	gSavedSettings.setS32("JoystickButtonCrouch", -1);
+	gSavedSettings.setS32("JoystickButtonFly", -1);
+	gSavedSettings.setS32("JoystickButtonRunToggle", -1);
+	gSavedSettings.setS32("JoystickButtonMouselook", -1);
+	gSavedSettings.setS32("JoystickButtonZoomDefault", -1);
+	gSavedSettings.setS32("JoystickButtonFlycam", 0);
+	gSavedSettings.setS32("JoystickButtonZoomOut", -1);
+	gSavedSettings.setS32("JoystickButtonZoomIn", -1);
+	gSavedSettings.setS32("JoystickButtonRollLeft", -1);
+	gSavedSettings.setS32("JoystickButtonRollRight", -1);
+	gSavedSettings.setS32("JoystickButtonRollDefault", -1);
+	
     gSavedSettings.setBOOL("Cursor3D", is_3d_cursor);
     gSavedSettings.setBOOL("AutoLeveling", true);
     gSavedSettings.setBOOL("ZoomDirect", false);
@@ -1680,6 +2123,7 @@ void LLViewerJoystick::setSNDefaults()
 void LLViewerJoystick::setXboxDefaults()
 {
     LL_INFOS() << "restoring Xbox Controller defaults..." << LL_ENDL;
+    gSavedSettings.setBOOL("BlackDragonControls", TRUE);
 
     gSavedSettings.setS32("JoystickAxis0", 1);  // Z
     gSavedSettings.setS32("JoystickAxis1", 0);  // X
@@ -1689,6 +2133,19 @@ void LLViewerJoystick::setXboxDefaults()
     gSavedSettings.setS32("JoystickAxis5", 3);  // Yaw
     gSavedSettings.setS32("JoystickAxis6", -1); // Zoom
 
+	gSavedSettings.setS32("JoystickButtonJump", 0);
+	gSavedSettings.setS32("JoystickButtonCrouch", 1);
+	gSavedSettings.setS32("JoystickButtonFly", 2);
+	gSavedSettings.setS32("JoystickButtonRunToggle", 8);
+	gSavedSettings.setS32("JoystickButtonMouselook", 9);
+	gSavedSettings.setS32("JoystickButtonZoomDefault", 6);
+	gSavedSettings.setS32("JoystickButtonFlycam", 7);
+	gSavedSettings.setS32("JoystickButtonZoomOut", 5);
+	gSavedSettings.setS32("JoystickButtonZoomIn", 4);
+	gSavedSettings.setS32("JoystickButtonRollLeft", -1);
+	gSavedSettings.setS32("JoystickButtonRollRight", -1);
+	gSavedSettings.setS32("JoystickButtonRollDefault", -1);
+	
     gSavedSettings.setBOOL("Cursor3D", false); // Xbox Gamepad, not 3D Mouse
     gSavedSettings.setBOOL("AutoLeveling", false);
     gSavedSettings.setBOOL("ZoomDirect", false);
diff --git a/indra/newview/llviewerjoystick.h b/indra/newview/llviewerjoystick.h
index 51a1c26d8b1..19e544f7da7 100644
--- a/indra/newview/llviewerjoystick.h
+++ b/indra/newview/llviewerjoystick.h
@@ -46,6 +46,67 @@ typedef enum e_joystick_driver_state
     JDS_INITIALIZING
 } EJoystickDriverState;
 
+typedef enum E_Buttons
+{
+	ROLL_LEFT = 0,
+	ROLL_RIGHT,
+	ROLL_DEFAULT ,
+	ZOOM_IN,
+	ZOOM_OUT,
+	ZOOM_DEFAULT,
+	JUMP,
+	CROUCH,
+	FLY,
+	MOUSELOOK,
+	FLYCAM,
+	TOGGLE_RUN,
+	MAX_BUTTONS
+} E_buttons;
+
+typedef enum E_Axes
+{
+	X_AXIS = 0,
+	Y_AXIS = 1,
+	Z_AXIS = 2,
+	CAM_X_AXIS = 3,
+	CAM_Y_AXIS = 4,
+	CAM_Z_AXIS = 5,
+	CAM_W_AXIS = 6,
+	MAX_AXES = 7
+} E_Axes;
+
+typedef enum E_AVScalings
+{
+	AV_AXIS_0 = 0,
+	AV_AXIS_1,
+	AV_AXIS_2,
+	AV_AXIS_3,
+	AV_AXIS_4,
+	AV_AXIS_5,
+} E_AVScalings;
+
+typedef enum E_BuildScalings
+{
+	BUILD_AXIS_0 = 0,
+	BUILD_AXIS_1,
+	BUILD_AXIS_2,
+	BUILD_AXIS_3,
+	BUILD_AXIS_4,
+	BUILD_AXIS_5,
+} E_BuildScalings;
+
+typedef enum E_FlycamScalings
+{
+	FLYCAM_AXIS_0 = 0,
+	FLYCAM_AXIS_1,
+	FLYCAM_AXIS_2,
+	FLYCAM_AXIS_3,
+	FLYCAM_AXIS_4,
+	FLYCAM_AXIS_5,
+	FLYCAM_AXIS_6,
+} E_FlycamScalings;
+
+
 class LLViewerJoystick final : public LLSingleton<LLViewerJoystick>
 {
     LLSINGLETON(LLViewerJoystick);
@@ -132,6 +193,7 @@ class LLViewerJoystick final : public LLSingleton<LLViewerJoystick>
     bool mAvatarEnabled;
     bool mBuildEnabled;
     bool mFlycamEnabled;
+    S32 mMappedButtons[MAX_BUTTONS];
     F32 mAvatarAxisScale[6];
     F32 mBuildAxisScale[6];
     F32 mFlycamAxisScale[7];
diff --git a/indra/newview/skins/default/textures/textures.xml b/indra/newview/skins/default/textures/textures.xml
index eab371f8b27..36ba00251e5 100644
--- a/indra/newview/skins/default/textures/textures.xml
+++ b/indra/newview/skins/default/textures/textures.xml
@@ -967,4 +967,25 @@ with the same filename but different name
 
   <texture name="Cam_Recall" file_name="icons/Cam_Recall.png"/>
   <texture name="Cam_Save" file_name="icons/Cam_Save.png"/>
+
+  <texture name="Button_A" file_name="xbox/button_a.png" preload="false" />
+  <texture name="Button_B" file_name="xbox/button_b.png" preload="false" />
+  <texture name="Button_Y" file_name="xbox/button_y.png" preload="false" />
+  <texture name="Button_X" file_name="xbox/button_x.png" preload="false" />
+  <texture name="Button_Back" file_name="xbox/button_back.png" preload="false" />
+  <texture name="Button_Start" file_name="xbox/button_start.png" preload="false" />
+  <texture name="Left_Button" file_name="xbox/left_button.png" preload="false" />
+  <texture name="Right_Button" file_name="xbox/right_button.png" preload="false" />
+  <texture name="Left_Thumb" file_name="xbox/left_thumb.png" preload="false" />
+  <texture name="Right_Thumb" file_name="xbox/right_thumb.png" preload="false" />
+  <texture name="Left_Thumb_Press" file_name="xbox/left_thumb_press.png" preload="false" />
+  <texture name="Right_Thumb_Press" file_name="xbox/right_thumb_press.png" preload="false" />
+  <texture name="Left_Thumb_X" file_name="xbox/left_thumb_x.png" preload="false" />
+  <texture name="Right_Thumb_X" file_name="xbox/right_thumb_x.png" preload="false" />
+  <texture name="Left_Thumb_Y" file_name="xbox/left_thumb_y.png" preload="false" />
+  <texture name="Right_Thumb_Y" file_name="xbox/right_thumb_y.png" preload="false" />
+  <texture name="Left_Trigger" file_name="xbox/left_trigger.png" preload="false" />
+  <texture name="Right_Trigger" file_name="xbox/right_trigger.png" preload="false" />
+  <texture name="Triggers" file_name="xbox/triggers.png" preload="false" />
+  <texture name="None" file_name="xbox/none.png" preload="false" />
 </textures>
diff --git a/indra/newview/skins/default/textures/xbox/button_a.png b/indra/newview/skins/default/textures/xbox/button_a.png
new file mode 100644
index 0000000000000000000000000000000000000000..09d2fc5623110512e54e18704f48000bccd1c4cc
GIT binary patch
literal 1365
zcmV-b1*-aqP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV0004nX+uL$Nkc;*
zaB^>EX>4Tx04R}tkv&MmKpe$i(@Kj}6zm}4kfG{gK~%(1s#pXIrLEAagUO{ILX(Ch
z#l=x@EjakGSaoo5*44pP5ClI!9G#pLU8KbSC509-9vt`M-Mz=%J3weum}&;b0ade%
zbRsV1@+)HS6(RH?fFMRCX6nhzLKdFm>mEM7-o<#9_qjhuk5Vuh;1h{wnQmCb>%`NW
zmd<&fIKs-3LVQj<X3zzRAGt2O{KmQDu)s4TMm9Z193d7<9V~Y+D;p~D6me8hHOd!q
zE-Re3IIEQ!Yu%H-FkH}<GhC-Rgaj6mL<%Bg)UbgHEW~KlNHLM7{kVsJ(DA3pC6j9d
zj2!c*LWSh`!T;cQw`Os2!c7Xtfvy+Z{ul;=yFjyU+uz5w-8=#O&%l+|_E#Ig%qQvf
zwiZ1Cdbfd#>$WEE0hc?#z>_W+k|X(P3dJJuen#Jv2l{V;?p3$9);>-jfGl;jbORh5
z0wX2LUh{Z&sI#|!&$Rmc0Z1NlmS3U&_5c6?24YJ`L;wH)0002_L%V+f000SaNLh0L
z01FcU01FcV0GgZ_00007bV*G`2j&P62Prp|6k-4X000?uMObu0Z*6U5Zgc=ca%Ew3
zWn>_CX>@2HM@dakSAh-}0009lNkl<ZILl3tOH5;B7>1w!|IayiN>f6C2@xd&ZAv?0
zAvDB|j6^3Ib-~8{1fnr9F>z%Vtk|)1CCH|Uvz(1P!I_wdgal2<h+NXvHcgdGg)sEO
z?etuJ7Z{jt`+j*Zk7zcV_`Z*6nmCSwQcBFt&7}?x5ARDU$F$a-*7}chI{ov?%1XIj
zuVWYnuIpl&CZgGF0^qtXv$L~rR4SEk3x&e{WHL!45<zRt>FFt@Qb~`DjQlV@KK@lM
zm#el~Ewt8%Mx#L_5@C9J`s1CQoyX~P+8%su5M@e003Z-JZHIEXOrcOXj>qE<wzjr*
z>h(HODaFjp%;fg=_T#CkDSK#W2x&<K0`Ef~|J^p40L!vSCX-|`nZ9zl{Pf|&hl7@7
zA*<D@%;)nflarHnG#b55)B<nN!%bb_yy+nA>m~pL0|UfjvA%<YgKt8i5UN-#zE>`n
zzs_Vb2yy!uyyfFX+eitx0(q!zw63l$*4NjQM@L7GR5%>|tiQki?Y_P~ZclUd-~!{w
zM6?BTgZk6FQI%3$TwI9b<KtcFy6$K=9R42`XavEqMu&Z@vWfcJ!oL&XM}368jfh60
z7>03A`o4c-9UxFz;N5dDeT9Dl;$MLf9(vS+mnI4!a9!7wwr%fTUS0wq3Ghu1{kq0g
zKJ8ChI3JzkOCRs9$4dohG#VI&u_t?bdw(gFN@%UoNP<Lw8*=H`3t_KD=vWQYQRyV;
z^$70x0C=89KA$HRi>=G~`S~^5wkx$-?V3Q3z&^GxezTB!3bn6L&n&DH3;F8xgle@)
zDwSGaSXela6B85dL?ZF|=H_N_)@mYuHIR>9LA(&4uc6AnB=Y+Z;u)NroUp&Yf0;-m
zzUc1m)=~&THk<t^l}dg3<jK?E`SU|W02+-JAkb)`!Skq8{$XQd<1(2{&SbOMJs||5
z)oKw00jsO4<Z`+9i^bx1=jZ2l<MBAQZ3ED1wI~z{M5EEIv9Yl)mzI`(w=4^#6rx_Q
zV_6ngS675WA=cK`tmWn94{EjAJD%r_0&Zt#=Wb6=&yS0XiyOnk!-3;C*tX5t*%|)<
X<6~@rq?&<c00000NkvXXu0mjf%A9>e

literal 0
HcmV?d00001

diff --git a/indra/newview/skins/default/textures/xbox/button_b.png b/indra/newview/skins/default/textures/xbox/button_b.png
new file mode 100644
index 0000000000000000000000000000000000000000..d88699f8884c7f34b3e8c4d0364bc38b3a5b5366
GIT binary patch
literal 1363
zcmV-Z1+4msP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV0004nX+uL$Nkc;*
zaB^>EX>4Tx04R}tkv&MmKpe$i(@Kj}6zm}4kfG{gK~%(1s#pXIrLEAagUO{ILX(Ch
z#l=x@EjakGSaoo5*44pP5ClI!9G#pLU8KbSC509-9vt`M-Mz=%J3weum}&;b0ade%
zbRsV1@+)HS6(RH?fFMRCX6nhzLKdFm>mEM7-o<#9_qjhuk5Vuh;1h{wnQmCb>%`NW
zmd<&fIKs-3LVQj<X3zzRAGt2O{KmQDu)s4TMm9Z193d7<9V~Y+D;p~D6me8hHOd!q
zE-Re3IIEQ!Yu%H-FkH}<GhC-Rgaj6mL<%Bg)UbgHEW~KlNHLM7{kVsJ(DA3pC6j9d
zj2!c*LWSh`!T;cQw`Os2!c7Xtfvy+Z{ul;=yFjyU+uz5w-8=#O&%l+|_E#Ig%qQvf
zwiZ1Cdbfd#>$WEE0hc?#z>_W+k|X(P3dJJuen#Jv2l{V;?p3$9);>-jfGl;jbORh5
z0wX2LUh{Z&sI#|!&$Rmc0Z1NlmS3U&_5c6?24YJ`L;wH)0002_L%V+f000SaNLh0L
z01FcU01FcV0GgZ_00007bV*G`2j&P61Qr6BKQcxD000?uMObu0Z*6U5Zgc=ca%Ew3
zWn>_CX>@2HM@dakSAh-}0009jNkl<ZILl3w%}Zlv6vlt&-rS^;FJ&CCHMVwwMmw2w
zq!dddQqt0e&~{UB<rfqNoJETk`~zm?rqE3(g;H?gDw{!=z?4o$OInK}BTg|jBEdF_
z)HLMN<i`8HT||dI%fsP3A3R42g#sRrhgPeFX`1-`er9H7ZXF#ReQ4YEZ4q%PrFNsy
z=*H60(taou(zb15Sr(4tAf-|X5y9{GGd(>W-r3ptDx1xI6p2Knv$GR`a=A<<lVNyx
zcq1GR&reNF{gFr{0FY|6ir4F9a&q#6R4TQ4=T7uy|LeE#SQeT#1dV;^aD05s^S!-`
zSS<F*{QUfn6B83ip-^CPaWR}sCVz{^<2OUEyv(4u0F4H;z?q{cYmH+-;h%HT>GZ|;
z`1rdkD=W`LYfU5)dDz|E{qf-7Abu1N+%I8hja;!i2u~cvL!|*lE|(*h%WZ6LZ@*{e
za=ACs>Gap}cw9`=#Ep<JP5#pGSUDVMMXw>e>M~isY@x35+TGoKZEI`mkt>_cjt>nD
ziDg-Bzq;+bBJhiH0O2iDxPf3?Wn!8pkw}D6sWjngG#YOPgF&vL5wvIqweZ00#?%@=
zn#Zk6T4KOew1Gf?)6>&o!!%7q1pa?QLmkD5qd8H~#H8Pl7wWDdBDgHe%2q0s7sG3g
zycWK7S_qnZD27ZIonr7W3V>RzhR5SMGJ1P^pJXx_9LE8`z7o@oCMv>h3~m@EN<h)x
zQA&}`W(fv^Kgs#|xr~jCJ?-h~8Sn4!M+<ymT7->u4@83&;khGxf7wEbCZEr9aB#4<
zy1IJT<?(p*$jHc-Yin!k!C<hXtE-D|S~gL`h0kcqDLa=u6NMo{xm;#*b5kV}iTklw
zOi86uA)n8)u(0sy`uh6H=sTkwq23UNVE}?$cT#EoK0D#}UpG}e9{((rO8ro+R*_<{
zh}-R^*=#a9JNx$j{{DBxV)5?4zyLm<4}f~T&f(!9mSydYj*fnwOeTM>)oSf;ytufa
zUa!;9(SdE-*tTuV&CMmw&d%O%Hk(ncH9nv3&p;sXba{FCQD0x5@_M~A8VxMV;y)GV
VY>2Ua5;6b)002ovPDHLkV1jF|ebxW~

literal 0
HcmV?d00001

diff --git a/indra/newview/skins/default/textures/xbox/button_back.png b/indra/newview/skins/default/textures/xbox/button_back.png
new file mode 100644
index 0000000000000000000000000000000000000000..af2ca91ede0f35c00e8306354c68ba400f7467ee
GIT binary patch
literal 1330
zcmV-21<m@2P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV0004nX+uL$Nkc;*
zaB^>EX>4Tx04R}tkv&MmKpe$i(@Kj}6zm}4kfG{gK~%(1s#pXIrLEAagUO{ILX(Ch
z#l=x@EjakGSaoo5*44pP5ClI!9G#pLU8KbSC509-9vt`M-Mz=%J3weum}&;b0ade%
zbRsV1@+)HS6(RH?fFMRCX6nhzLKdFm>mEM7-o<#9_qjhuk5Vuh;1h{wnQmCb>%`NW
zmd<&fIKs-3LVQj<X3zzRAGt2O{KmQDu)s4TMm9Z193d7<9V~Y+D;p~D6me8hHOd!q
zE-Re3IIEQ!Yu%H-FkH}<GhC-Rgaj6mL<%Bg)UbgHEW~KlNHLM7{kVsJ(DA3pC6j9d
zj2!c*LWSh`!T;cQw`Os2!c7Xtfvy+Z{ul;=yFjyU+uz5w-8=#O&%l+|_E#Ig%qQvf
zwiZ1Cdbfd#>$WEE0hc?#z>_W+k|X(P3dJJuen#Jv2l{V;?p3$9);>-jfGl;jbORh5
z0wX2LUh{Z&sI#|!&$Rmc0Z1NlmS3U&_5c6?24YJ`L;wH)0002_L%V+f000SaNLh0L
z01FcU01FcV0GgZ_00007bV*G`2j&P62Pq=>$%g9y000?uMObu0Z*6U5Zgc=ca%Ew3
zWn>_CX>@2HM@dakSAh-}0009CNkl<ZILmF5%}XP97{|Xezu(WGGZ~S=P%v6F8uCI|
z5nY19BDPhikSYjXy!Nnqun2-41aAt8)I;09Km<LkdvFh~P3VG>vK3RYI&m~G)PoSC
zjEQ7q-g@e^Tl>8|56|a$;dvhJ@$nI+X@ci@0Dxs#+~nls3r*7oOw;VJEDMB?-`m>S
zKCG^;p8NfNmoWy%abVjvI9=Dl^E`679F~@r;)O!tM@`dSMWa#p{eA#|uItF>^N2(u
z=~yf_H8C-v^!4=t04UG%P*oK(Gc#XZTwJ{E?Ch-V>FEI>1pih%9*3rB1L<`7H^VSS
zd7gitOeR4AV0n4DM^Tiw{r&y5vMl5O#27<+dpjga5)Ka!-!R6ylgXq)P1EF#j*h<X
z?(VJ)1OjMmZ2SZ?O%tV3$+H82079XVkk99TxV^pok{cQtdYR2;e@&%Q7#$tO@bEC6
zo}N5F5Clw3O~Eh>&u3W{wzs!2GBOgUrBdnZNF)M62nZoKJ3GVr`Z@rhuC5O8cpQu|
zFvj4zE-IA@D5Z$SVz|7#d_~LU^5?-|@Y&2QEiG7FT!d+wo{v(B&CN~h@9#sBBvh-_
z7nBgfIF17V*tU&mG>WygHSFx{K-YClPfr5?IF7^I+#G6ZYP^JoVSviA{AZ<70RZgo
z?&AFX9JXzP5CV?lyaW5M%H=WyK~SkANk3<^*|~5y3;<A76#&rM+6qw=v9hw_L82%k
zm&?JjEGUYCR4SF`PESwyv9YmSQ&Ur-xw-k1Dxpvalv2-jT^EHy0jjFv=H}+Z!NEa4
z4F-cwB9VB#x3~9;BuS*czTN|_uCAW7es_0=<KyFMZ*T9U&*yV_N-4Iswhjgd2fxi^
zGWPZLH5|uz20D%dP1BIcWUAqC_?v}=g+Cm}0r&9m008j&{TLq~?>jj;`KeeeCOSGg
zAc~^5dqq(o%kp7YSJ!v5v$G$g(I{Nk{pTB9*98D*n#Rx1&kx++-+xgo7C&Q*F+mV6
o8yXtkZES3O^!a@5-?0Gj7bDO_wmKYVr~m)}07*qoM6N<$f`8y**Z=?k

literal 0
HcmV?d00001

diff --git a/indra/newview/skins/default/textures/xbox/button_start.png b/indra/newview/skins/default/textures/xbox/button_start.png
new file mode 100644
index 0000000000000000000000000000000000000000..11db7f3de1dd4e1567e04f7448f987e18570a0fb
GIT binary patch
literal 1210
zcmV;r1V#IaP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV0004nX+uL$Nkc;*
zaB^>EX>4Tx04R}tkv&MmKpe$i(@Kj}6zm}4kfG{gK~%(1s#pXIrLEAagUO{ILX(Ch
z#l=x@EjakGSaoo5*44pP5ClI!9G#pLU8KbSC509-9vt`M-Mz=%J3weum}&;b0ade%
zbRsV1@+)HS6(RH?fFMRCX6nhzLKdFm>mEM7-o<#9_qjhuk5Vuh;1h{wnQmCb>%`NW
zmd<&fIKs-3LVQj<X3zzRAGt2O{KmQDu)s4TMm9Z193d7<9V~Y+D;p~D6me8hHOd!q
zE-Re3IIEQ!Yu%H-FkH}<GhC-Rgaj6mL<%Bg)UbgHEW~KlNHLM7{kVsJ(DA3pC6j9d
zj2!c*LWSh`!T;cQw`Os2!c7Xtfvy+Z{ul;=yFjyU+uz5w-8=#O&%l+|_E#Ig%qQvf
zwiZ1Cdbfd#>$WEE0hc?#z>_W+k|X(P3dJJuen#Jv2l{V;?p3$9);>-jfGl;jbORh5
z0wX2LUh{Z&sI#|!&$Rmc0Z1NlmS3U&_5c6?24YJ`L;wH)0002_L%V+f000SaNLh0L
z01FcU01FcV0GgZ_00007bV*G`2j&P62PrFo6+TY@000?uMObu0Z*6U5Zgc=ca%Ew3
zWn>_CX>@2HM@dakSAh-}0007!Nkl<ZILnPwO-mb56g}^a#OOo_xEK|KAc;~mlqv%W
z{Sab6vyj@2LN-<?D($YD{sT95+wNSr5d>E$lt2P4E>!5Ii8kiLFe@uMXq-uAMl;TP
zU5IHZvGu@(1NWZG;eL=xrGnPhR+y#<kH>>jsYI5Sm*rBa^n@`MAcTNYni(D*-dbH<
z%~_U(%gal&x3@#rb&zVc3dR_0+s6F-yqwKu-=CeGJsTVxgva9n0BD+qgM$O!*Vp%H
zbaeFX`uciV(=-Tz0HW(UEX%^;;^NC>GWjta4!8C8_CgQ@{0ZB(p(qOW_V(0REEeC`
z*hp)dcGF;PZtih1nM_SgOtg8uUi=Hk$H&;&*->X^X2L5gD`lc63XMb}-~0RfgFc@R
z_d%ghK&@6wWV6}lBpQuIGnq^(7K=d;1WZj$K@`QNLRD3fPNz|?*Ri>|$>Z_3zvcY=
zd^`{cfKm$1IV4GfD2gD2-08sOa$#U#fE0_xNQ-4zk2*U$8_7zgf~%{mrb12A8r<vk
z!f~93Eq_nj?RLZEay4z>cDoy#5CYD*O(~`OrfD`3jIledJC4)f7Z(@coENDiNngw5
zGC1drBF5OAaeEVmLV=HrjBJr~I!zZA7WM;yz=Q7Y?t88A@bC~PCnt$wvG|;ZLLoLZ
zH1uYBdz<OH{$H`Gs>tW_hAhkPOw$B)90!R+;!7wLdX-A0*wN8Z(>XYf14U7=ySr=2
zvixFfY%E`|*KbZ406IE4Fg-o}G?U4EFbpH;_xmA=A~@%$R;$S6a_H&l*$M`OuO}xb
zf6UI#f^+`+8wEkY_4PGQPfzL6(o&>WtBo6m;WG@wlqBhAS6A2PwY9Zxgb;pPD+mI9
Y0pjdedh4ZYc>n+a07*qoM6N<$f}!Uo*8l(j

literal 0
HcmV?d00001

diff --git a/indra/newview/skins/default/textures/xbox/button_x.png b/indra/newview/skins/default/textures/xbox/button_x.png
new file mode 100644
index 0000000000000000000000000000000000000000..d6fb980b78bb03ff7158a4444234b4b8b82f4cfa
GIT binary patch
literal 1380
zcmV-q1)KVbP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV0004nX+uL$Nkc;*
zaB^>EX>4Tx04R}tkv&MmKpe$i(@Kj}6zm}4kfG{gK~%(1s#pXIrLEAagUO{ILX(Ch
z#l=x@EjakGSaoo5*44pP5ClI!9G#pLU8KbSC509-9vt`M-Mz=%J3weum}&;b0ade%
zbRsV1@+)HS6(RH?fFMRCX6nhzLKdFm>mEM7-o<#9_qjhuk5Vuh;1h{wnQmCb>%`NW
zmd<&fIKs-3LVQj<X3zzRAGt2O{KmQDu)s4TMm9Z193d7<9V~Y+D;p~D6me8hHOd!q
zE-Re3IIEQ!Yu%H-FkH}<GhC-Rgaj6mL<%Bg)UbgHEW~KlNHLM7{kVsJ(DA3pC6j9d
zj2!c*LWSh`!T;cQw`Os2!c7Xtfvy+Z{ul;=yFjyU+uz5w-8=#O&%l+|_E#Ig%qQvf
zwiZ1Cdbfd#>$WEE0hc?#z>_W+k|X(P3dJJuen#Jv2l{V;?p3$9);>-jfGl;jbORh5
z0wX2LUh{Z&sI#|!&$Rmc0Z1NlmS3U&_5c6?24YJ`L;wH)0002_L%V+f000SaNLh0L
z01FcU01FcV0GgZ_00007bV*G`2j&P62P*&{pQVie000?uMObu0Z*6U5Zgc=ca%Ew3
zWn>_CX>@2HM@dakSAh-}0009!Nkl<ZILlp=-%Dg=7{@>FJI8VKFlV&!M<X%W%BbnC
zM($evSb~kxn~3yku^^<{qN^^&{)Fg8D!PaeS-ME{!ZnN;5{j8|L4s{kbW+^)2U{lY
zoO5P&CY|%XU1+;Y-`nT;@_czde1+pUD5VfWAcP<o3^G1G-nzE7c1<bOSy@?WNGb0$
zH#h%0Jw3f{+cr{4fHR-tH~>sePI7c~)Uvv|`uXne?i;PGt)ix;1_0Z(+1S|7ZEbBo
zc6WDwGB!50F)%OyfT5IPW@d){{r%ULmzTfq=<Enx>3s=*g~4M9x-NBzySsOX6N$vt
zLZR@M>$>sb;b9EJFi5A<?Wt61zOS#(j9hpTUm%26{2N_3!joWBK1HCep4QqZRxo5H
zlgW9l_2r?Vp$(~&5}8cqi&!jXHa0e*t1Re!AK&F0XsI!@#JF+;(fc7PP)B2Z1MThY
z=JxjX*N2CP!nd=t(~(N0KI`xAM@or)c!aEKMAXN?6HwcNY<dBG@GI=Z(L!Tc7RhAt
z*}c8JAAHr-)$fGE;h{(*0)Pa(2iq7;J&15KzS`$d<%g74zd@^$vmGhXTH`p*wmdyO
zjaioU=v^8Rr+H4-Z-KuWDgt=xx1gLqpPtFGENt6umZee&Aq4-ItOy|V83ExppRk^D
z5rR^wgbatn`}utSi39>FYpG}-LY=tqkBe-39iQI<9v{l*^E5Ox{3V0IV0?3P6VLO`
ziGy+RI;z4%W#g3pNZ>O9$gZ~$=Q)&8WV2bq;c(oyu&{7Hkx0DhdEV2ZPzc%dGQO5q
z@a%o`@85xQ4^j6#qV58^m`6K%92^`_E|)X2v$LPdNF<`7(dY;1bh?<!<q+i}Ix~;D
za}zBD8bLX86aCv9;v|n_KVW5L#p~?s{3sL(DPh|-mSr(AGV<=y($bfG1A|r1G)0h7
zoI^c}trZ;H|C8IdQ|jvA;CqXUi{HAgi*Q{Rtu?`5kkQf6flMazRW6si6pO_$O%s4Z
zp}^MG7J)z@)6>)Q@!Z_pFaP<(@$oT!zaOO(T5Gb|telvbxMth-tHomRqEZUeG&e2F
mTAG@g`Y9TXD$nyC)&F1A=yJv9cyB}i0000<MNUMnLSTYZ`IB=1

literal 0
HcmV?d00001

diff --git a/indra/newview/skins/default/textures/xbox/button_y.png b/indra/newview/skins/default/textures/xbox/button_y.png
new file mode 100644
index 0000000000000000000000000000000000000000..774dbb4a67771a57377bac723e922e9b70987e89
GIT binary patch
literal 1336
zcmV-81;_e{P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV0004nX+uL$Nkc;*
zaB^>EX>4Tx04R}tkv&MmKpe$i(@Kj}6zm}4kfG{gK~%(1s#pXIrLEAagUO{ILX(Ch
z#l=x@EjakGSaoo5*44pP5ClI!9G#pLU8KbSC509-9vt`M-Mz=%J3weum}&;b0ade%
zbRsV1@+)HS6(RH?fFMRCX6nhzLKdFm>mEM7-o<#9_qjhuk5Vuh;1h{wnQmCb>%`NW
zmd<&fIKs-3LVQj<X3zzRAGt2O{KmQDu)s4TMm9Z193d7<9V~Y+D;p~D6me8hHOd!q
zE-Re3IIEQ!Yu%H-FkH}<GhC-Rgaj6mL<%Bg)UbgHEW~KlNHLM7{kVsJ(DA3pC6j9d
zj2!c*LWSh`!T;cQw`Os2!c7Xtfvy+Z{ul;=yFjyU+uz5w-8=#O&%l+|_E#Ig%qQvf
zwiZ1Cdbfd#>$WEE0hc?#z>_W+k|X(P3dJJuen#Jv2l{V;?p3$9);>-jfGl;jbORh5
z0wX2LUh{Z&sI#|!&$Rmc0Z1NlmS3U&_5c6?24YJ`L;wH)0002_L%V+f000SaNLh0L
z01FcU01FcV0GgZ_00007bV*G`2j&P62P!ltFkpEA000?uMObu0Z*6U5Zgc=ca%Ew3
zWn>_CX>@2HM@dakSAh-}0009INkl<ZILmF5Pe_}07{@=q_f4WPO<ql`8nbkjMtz-Z
zhq6wCtcSvwScdHEpwx?Wu*=Rl4naKZAnvk(I}cID3LTbta7ql>R8k$mV0CqIYcA$}
z6OA!>f4?0ZcB}gyp3C=nzF(ey!m=!sQs}x)tyZI@rG>Gvv9}Hm4(>XR(=Vk&*YzFK
zG?(Y*=5{U1Len%H$HC=tA#B?QU}<TI#l=N4lgWI!ySw{gZ*Q+K3<ChmvdCt$s;jH(
zhj={xd0SiCULuhIxDeRd+G2Wo`h#>jz1ZE|?YnW~P26r5AOHmj>gQGVe}BRL{_~S~
zJpS>}(9qNI@o`*22xezz`%|gZ_jm5x_V&i2yb*Hq*YP=p;~F4n4{CHY`)LcB`2E*>
zYinzZUa$AviHV7<Rwxw2&d$zPrfGVwUk{^G<H1K74@O)lbU-nFzmZSwdjN-yjt*k6
zm~VS~dsa#*^uxo$_ck^*z8D-FMAP8(OefqTFmLL-_*2puQrx}W$gjUuNoN(H2m}JG
ztgLkH?d^T18;0?)wYBwLdwV;eflwU1tPy{wkzfFBb~bXYQS$ZUD%EoUF1JuBm7Z(I
z$H$RCAaKE;04S6+wsy~nMO@s9NPfvm?6SJ#0Sv>SR;zVul}d%zAy7PCbErF#YE9!w
z@@fvi+1VMcNF-7ym&;ekV%g!OBB(2{PqqKJ1Du?k5DJC<(4x`k&$(O<DdqoosDH&*
za2$thHj7~xPqmqundM+G`0VKD=xVvRIHlJm^7%aBa5yzNIhod)nwq3(nvYVclw(=e
zt0@S{lceIuWF7I33_!71B$-TB`uh4li$<eL*tU(|?`LFW<l*Y->Nf)e16riB6HVwK
zB#MjvrIh6JdDhq0E5pOXpU%(Ee{0(|qEsrOl)~@#Gdeo@{^sW9Y_(c_I~I%K^Z5WM
zm&@dGIfB99v;O}6M+*xJYqo8p>pH@+tjkw!XlNjl$!Lj0;$E>>96mig?e%y(ZnxXL
u+1%Xx)6~?|a!*f>tk>&!JRT~Q3V#D(kX^#ZbPM?a0000<MNUMnLSTYZUx4`l

literal 0
HcmV?d00001

diff --git a/indra/newview/skins/default/textures/xbox/left_button.png b/indra/newview/skins/default/textures/xbox/left_button.png
new file mode 100644
index 0000000000000000000000000000000000000000..b2a84340e63c9cf3bed53df36ad71ac318c4ee9f
GIT binary patch
literal 1123
zcmV-p1f2VcP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV0004nX+uL$Nkc;*
zaB^>EX>4Tx04R}tkv&MmKpe$i(@Kj}6zm}4kfG{gK~%(1s#pXIrLEAagUO{ILX(Ch
z#l=x@EjakGSaoo5*44pP5ClI!9G#pLU8KbSC509-9vt`M-Mz=%J3weum}&;b0ade%
zbRsV1@+)HS6(RH?fFMRCX6nhzLKdFm>mEM7-o<#9_qjhuk5Vuh;1h{wnQmCb>%`NW
zmd<&fIKs-3LVQj<X3zzRAGt2O{KmQDu)s4TMm9Z193d7<9V~Y+D;p~D6me8hHOd!q
zE-Re3IIEQ!Yu%H-FkH}<GhC-Rgaj6mL<%Bg)UbgHEW~KlNHLM7{kVsJ(DA3pC6j9d
zj2!c*LWSh`!T;cQw`Os2!c7Xtfvy+Z{ul;=yFjyU+uz5w-8=#O&%l+|_E#Ig%qQvf
zwiZ1Cdbfd#>$WEE0hc?#z>_W+k|X(P3dJJuen#Jv2l{V;?p3$9);>-jfGl;jbORh5
z0wX2LUh{Z&sI#|!&$Rmc0Z1NlmS3U&_5c6?24YJ`L;wH)0002_L%V+f000SaNLh0L
z01FcU01FcV0GgZ_00007bV*G`2j&P62P!NyT=*{l000?uMObu0Z*6U5Zgc=ca%Ew3
zWn>_CX>@2HM@dakSAh-}0006yNkl<ZILnQbJxg3c6o#LfJNMHCR~OO3g$uSy5S3sV
z6wEKMv<UeD60pl3*e;c+(nuPALBM7~5Uc`Q2`Q375oAGhzwXZ7nYn3lFKRZB)0|<>
zJI@&o?-BR+_XI(J)|x1a&|2gBKE@cNlmHY(fs_(!ElMdSlL=82F&>W*y<QI?1VvF)
z`F}zPfpZR7l0DDET8osjf|bJZT-Hjh=Xt0+&vDK%J3Gr{G9d_pl03C@S?l$BXsuCU
z7>e!f?T=ZOy)(x6N-2ync%FxIuIgUS;m_S@d3pIuyWMVy-QC@{olfW5*4EZPyS@x-
zE$8Rw#opfDYn5eLV}5>~xw*Ni;{E-7PESvX<Cw$4L$ubMoSblVbtUfZ?wYbztNpmW
zz5VC(S5{U4@O_^oNl;3WrYS-QwARR0tMz?xaq(BT+now1!DSweM#OOpKp2L|X0vJ6
z*492;US7I>zyBAY)9G+@bj14lI**T!)M_=Zude~f^Bgf6jW|0y<M{aa{l&$_=hf9!
zwXm>27=}~L17M7y-EOn9v-5_BhX;nkAw^MeaB%QyV`JlMnx;SN_4*`95|<>2i{toN
zZZsOh&CShEMNtSb7z`>`8Dq$@jHRU|Zf<UZnVA`3t;IP<5CjZ|L+bT9-EP;VX_^lP
z14O^y$2s@R%B9=N!9CrTms;tZLn%d`=P0GB-@J6;)5pdbO2<my_Zg4JBuPS+WrSf^
p!Agh_0&6Y4?^mmwWf@Tv@f(I}Jo;HQh!6k(002ovPDHLkV1kCz1eO2*

literal 0
HcmV?d00001

diff --git a/indra/newview/skins/default/textures/xbox/left_thumb.png b/indra/newview/skins/default/textures/xbox/left_thumb.png
new file mode 100644
index 0000000000000000000000000000000000000000..75cbfd30956152fdf4af609439de3e72fb0cbdec
GIT binary patch
literal 1383
zcmV-t1(^DYP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV0004nX+uL$Nkc;*
zaB^>EX>4Tx04R}tkv&MmKpe$i(@Kj}6zm}4kfG{gK~%(1s#pXIrLEAagUO{ILX(Ch
z#l=x@EjakGSaoo5*44pP5ClI!9G#pLU8KbSC509-9vt`M-Mz=%J3weum}&;b0ade%
zbRsV1@+)HS6(RH?fFMRCX6nhzLKdFm>mEM7-o<#9_qjhuk5Vuh;1h{wnQmCb>%`NW
zmd<&fIKs-3LVQj<X3zzRAGt2O{KmQDu)s4TMm9Z193d7<9V~Y+D;p~D6me8hHOd!q
zE-Re3IIEQ!Yu%H-FkH}<GhC-Rgaj6mL<%Bg)UbgHEW~KlNHLM7{kVsJ(DA3pC6j9d
zj2!c*LWSh`!T;cQw`Os2!c7Xtfvy+Z{ul;=yFjyU+uz5w-8=#O&%l+|_E#Ig%qQvf
zwiZ1Cdbfd#>$WEE0hc?#z>_W+k|X(P3dJJuen#Jv2l{V;?p3$9);>-jfGl;jbORh5
z0wX2LUh{Z&sI#|!&$Rmc0Z1NlmS3U&_5c6?24YJ`L;wH)0002_L%V+f000SaNLh0L
z01FcU01FcV0GgZ_00007bV*G`2j&P61P>7LhUyjo000?uMObu0Z*6U5Zgc=ca%Ew3
zWn>_CX>@2HM@dakSAh-}0009%Nkl<ZILmF3O-L(O0EN%Jb8jYLlADatpox-DVh}<U
zf)d0+tv(SRT}U@wyK2G31MziNsFmlc&?2}l(n6ONEJCGPP>LlQL=htxB(Z8YCQfdC
z%p{piS5J`kY|mMIoR3H;HPbYklu`hIVHj*>W#wbTFjBQzt)Ef~r_*_>>-wMX-n~2E
zoVOK4fo<EcEXzTP#UkgNw>%yXW@cvQbGh6~tyT+#!(phZ3IH%o6Zw1|jIn$ok@#k3
zXXl4Xr2^ZwIVqRRTnNz`A0PidpU=NZCX;YFok*oph(sdT*w_Fe1gfgy>FEiXOa|d_
z_}g?k{r2(kky8Meo16PIm&?7GoSXz>3;+-e1`&xw5C{aI>pB2{bB?L0DO_J)FHKKR
zzp`x`wB2r_P$+zoNF=}*gJoF|Lg4);0Kgc75CWEEfpd;{JdSd?{25~m)ai5rfRj=R
z#uzB2kW!*vufy;6V`5?gx~@Y?2}&sxMS-Fy0HBzr30kdI(bd(poy}&^ZnvLtH#awN
ze0+@l{(dmVKnQ`Z>u9xFxVX505MoQyG!WA?`N_#iXJKJsw^S;9luRb!@pxd{HaeXS
z0Dw{oLI|Xk$Ye6`dcD6bFE77NrBVvHySwA_^Yfn{9v*%dkH=Xyn?+Ag4}!rU91h2`
z#{2twlu9MUVliA^UbaR@N59zK-u_W(Hk;#HTU$TR&d%~sD1=xn1|b9rg#x6MD3{A<
zG#VHh8p6oP2m*lsLZOgyaB%RtTCM)B2qC`o`~Bm6eSOckE|&|9MgzUQz3_UyP*oMd
zU=V~50D!8hpp+_7N`oni;=uoeQi_L%2Xs0exZUpm^n?&tmPKeZ8vW_?^t4^6R9*}Q
z1_q#M8iWuCg+ebnDJ9O%&f3Gn!@nrIySx9S(`jRGZ|{}c?WUThJ^S|geDL{v@4chd
zYT@?w7W@1A?Xj`3g|)S{Ux{HDyi_W+78e&kJU>7G`sU_lIvS0lySw{^g<`RYtE($3
z5{djVI5_y#>gwuW;c%FfVzH>XT&`xb*#sektgo+saCCGu*=RI|YqeT8W2~ttiWEYe
pC6mdWrKP36>-9P~=df+t@h`$mR0t|aP7(kB002ovPDHLkV1lT1ayS40

literal 0
HcmV?d00001

diff --git a/indra/newview/skins/default/textures/xbox/left_thumb_press.png b/indra/newview/skins/default/textures/xbox/left_thumb_press.png
new file mode 100644
index 0000000000000000000000000000000000000000..4e710f9ff9ef80deb6ca7d7f54363e56b611af3c
GIT binary patch
literal 1484
zcmV;-1vC1IP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV0004nX+uL$Nkc;*
zaB^>EX>4Tx04R}tkv&MmKpe$i(@Kj}6zm}4kfG{gK~%(1s#pXIrLEAagUO{ILX(Ch
z#l=x@EjakGSaoo5*44pP5ClI!9G#pLU8KbSC509-9vt`M-Mz=%J3weum}&;b0ade%
zbRsV1@+)HS6(RH?fFMRCX6nhzLKdFm>mEM7-o<#9_qjhuk5Vuh;1h{wnQmCb>%`NW
zmd<&fIKs-3LVQj<X3zzRAGt2O{KmQDu)s4TMm9Z193d7<9V~Y+D;p~D6me8hHOd!q
zE-Re3IIEQ!Yu%H-FkH}<GhC-Rgaj6mL<%Bg)UbgHEW~KlNHLM7{kVsJ(DA3pC6j9d
zj2!c*LWSh`!T;cQw`Os2!c7Xtfvy+Z{ul;=yFjyU+uz5w-8=#O&%l+|_E#Ig%qQvf
zwiZ1Cdbfd#>$WEE0hc?#z>_W+k|X(P3dJJuen#Jv2l{V;?p3$9);>-jfGl;jbORh5
z0wX2LUh{Z&sI#|!&$Rmc0Z1NlmS3U&_5c6?24YJ`L;wH)0002_L%V+f000SaNLh0L
z01FcU01FcV0GgZ_00007bV*G`2j&P62Php^w3?Ry000?uMObu0Z*6U5Zgc=ca%Ew3
zWn>_CX>@2HM@dakSAh-}000A{Nkl<ZILkecUr1|p0LQ<-bIvx)GY9AFpMTKU%bZYJ
zVl;KE5bn^2#Uu*cn~2_!aKQ*edPwlW?cuVFsH^Cc2wu8K^B+c*2)kZKjlw&avNopE
z?O}R$cG%pho%NKT*AIN)1Ha#IDV0j3TCHMrb(L&vY^V!`0whU-AP5je5v5WIcXxMK
zTwGK~qfv5ye~)xJO?*Dz8_f0fb(7oeUUfR1pL)ICe<mj<f4I1~_*|`4D+Yr>93LOY
z?Ck98l}bf@c6JsV8ylONpPy$Vk;u1AO-)~udcBUdwY8sgI$i6|&W^|Ba)s1tb;tVp
z`hnSOekDngDv?OMHa9mnSu7S`9UL5d<?(oa%;j=_PfbmYQj#Pg91cIR+wJd6OicV9
z4u`899UX7WviwD*Qh7>I)YI11)}^+#wzsyow>8t#(=U5_d*9sL+?<yr2}BSC=yW=S
z!{J{W8XDgB`~8q43C+#TpePCepePEm*(`XTM<5V@APB#Wj*fmH2m(mCT*lts9=))z
zuzP!Z`>4CS8x%#s>2$(kv0!<58MRss8jS|ES`D#S3_Q<o#$vHgs?{o}N~MB8An;)>
zmwPlYFaSkSK+`nzdOeIrBY2*NUatpD)2P?$a5x;exw-jxczD<&iXteU=TWItKC;<t
zAcR0s6tFA{LJ0ncqA0K|`w+L;Y{+J_BOJ$ps@Ln#XfzFqqJUu-&@_!=u?SHV(bCca
zx7!Vq$pk?V9=xI`P^nZ6hlhutW3kw~kw|1w6h*4Ny&WveqE@RR9*=_%0+mXIR4RpX
zxeTpVi)yus7cX8QpU>NJx!g0-)6?@!V`JlI0FX>3(bv}pj^iG72q7SZpkA+|P$=N^
z^c0<)oseZ2vMeuB48ssY2s|DSwzjrF2*LjTKH~8>GMNn0=``Z;IQI7TpwVcsySodQ
z%LM?SX&Q{lWLiHtIeEOYvcjm<Y8Z`19334Y5{aN#EP|$KXti3{?REr%LFn~*xZQ4q
zLZN?$hK8Qe=jZ2FG)+4>j<d|n%%H!&A4a1Qp->1c%c4*y;Q06$gM)*}=kr)vT7tvj
zfL^a(x7+RC5wF*4Vi@LmCX;z`b#?XFYPAj}5(#h|2bN_40For3P$;0Qs|(3w@)x7g
z_`Stq`I6`P5r(3u4y)BV5(<TirBdm+&*yv3U@&ybvfO=ndD%n=flj9r&1UnT6h-|N
mjYj{FWmyRZgFmNIDa(I1IijWdcq9@40000<MNUMnLSTaT-l&fN

literal 0
HcmV?d00001

diff --git a/indra/newview/skins/default/textures/xbox/left_thumb_x.png b/indra/newview/skins/default/textures/xbox/left_thumb_x.png
new file mode 100644
index 0000000000000000000000000000000000000000..5d6711a6979e2a2a97368397587992b494f5f2e2
GIT binary patch
literal 13303
zcmeHtbx>T(*6%<<a3{FC4>G{u?!ny|7~F>;NN@@6kOU9GAy|N*3GS}JAwWWK2rhv)
zIp^Ga&#m`Wy}DKJ`|s|mJ+t?cU$6D+)m_~)9j&RZh>byx0RRB7m6hbQ5#I!e8xQRX
z;*;VD&=dfmZT8bOglj{*Y29INwhqoVv~XW{8(JG52U`HZXR$KN=@q4DLgB+LyC3?P
zP&1{(cm~zk&s%;TKBgj9uP-BKdg<C^U%#po1b1RdiQP&*jQie)J(N3LN0-ek!ve2?
zALsqIY0f`AVBao%n!Nwqel`B$aQsW&`1s{{8_^ZnVfDe@qpUB#swwJk0=i%P`V#*+
zZ|2(I=3L<@?@NDPb>cX7z%So|ag5MbjleJ4kMbx`9*nfw+Q-LZU=`mID=V*kVRvo1
zLBAwlZg>t=$=xU1b1@0soBg7|+-|O)(A+=Cp4?Wp0Q&#B_bRhf3q&O`zsKoZ(|hu3
zEplvpXiZ`!64Q+JLbX;XhUzYs%?Me@^|G&|eJ%3(cHvH>An0VRy{__gWOik2P~GC?
zI8ET`uWFjWy6!yJQ<sKJ$=BhMqc`7=@*b{QR4s&V{22Tt*B<V-L?j=627NYfTWY82
zJ#B3sH#(m$UXV}Bs2j*r3vijd@AZ-`vCkX2V{;2UUL2A<D>*6o{41xa!;d9d@XFhh
zdWnW)1-3%fc(4smWm0Gl_*!y#deUkBp0w<mYzs>(X!(SxzUG*arubSD>;47T81>S=
z$MmeX_z}!>mrBU<JM<wjC^zV`%acfTY=_gkrf$OxsA2cCy8G^?)5fqTXFQ)-biG<q
z@*&mi5%II<Bk9-|-eQ-;49yl}Pe&#~FbO5y_M1OQ2(3r?z^!<>EklG_lT2;pdv7-=
zQPC}}5*lytesv&oGqoEQCelIUWZ}oo5<1ytyQ%HKuyQ&Hx`<~@`kXVo`f=zFY_%J*
z;t@nTD#GcyI;!H4?+1pPp`D(<{GJpQ?xLBJ`YET<+Tu*7vWAa~S#C&I>hWNghK4y&
z+=J!j)15JtPq>m@Q4H~7L!|}c1scnCeHpg7HggNM7J(7+!PRX;<rS5mSNhVQFFS0T
zJzsIT46Dd--%w`B`<d;xxU;5z`{uk_@_|I(lcvJAE{&UWO@DJ%`?KrU$1KW%-BuDJ
zSmrh4#ND+vb&V~gpEy~vk`tq1wv3=D9<Ne+Yb=+?N;W^cT-Gjkv)xzEAF$2te}4$#
zx*UK%6o0$_xFl)h!lpWM`Ldu(GxFxiyTr>&($g6!rJFR>xa~N9oFlIz>owq!WXn1i
zU~Y|s6}56T6X?vmslrg@zv%9@eUmbqV)FSZ&YL>_SKIp>=#l+aJA=xF{9TlGm38av
zf$3ejW1<UR6C(LBKOHPwa1;oT*t#4A>Z^x<&v9y8hL(oqFQ&fC3tYB*h}{HRFgNYS
z0NIYd2vxSQP3P#C<n2)sK-I+eUk8QFecK;+vQ?y<d$_!wUawe-O{4#!hkyQiwl91G
zn&#JsmAEHv@OJgv3<c`?ugt)DIJl@@milN_+&-~-B|Nw$VgRpgVpRYq=|Li}%0VOR
zuxHHG-`rz7o=yG0ca(Z}c{uX9t=s07QTIa8CQ^1&#f|e<%G`XpToXT32RmI09=SI<
ztF=B!8aZJ`kx}gNOx2^q*fgaa*m(*zjYnC2K`)2jS7v8U#hxh3W>5H?^d<dtXBeN>
zpO1ZT@24Dl@6UIs_Yydpz;k$#8;P5R?dKlwZ2SWxGPW?}7KbvadyB59?j_O3$QFXg
zy*3VfP6x<p4zt6lFy`yQ=3c71+~hR#Wxt9xUKp#dZUz{e?^nQjE7X`@*i}(!Z@WyR
zYuL2uH6EK`9>o$<(qPK5#Yd1aMRI>`CjUvAg-iqIy(I1-*mPtQ5?i<@wed3hT5H8Q
z$9*|9N~|cGk;N;ahD7`8hm3WM{_{3FiI{?xCv^9P!6E#U8>idxI?}--L*gM?9R0$b
zip1Ek^OFm$vx^>FOvU`!;aeI(oL0ki;^bFKoZF+_ICKW9)7Z^KO->H5nWB@x5u00@
zBgrQG{0?QvQSEV`4%o^7^~5zfkgsAytnB3{DxYAJh1%)_)%c+WuU8lAnF0i{4MXLR
z8<Gm++Z4f-Ii|uKAk`<Q$O#`VI~RN7c5fW6N1#h#G<tC`Z$E5*cTvi1fu(C}=?;1q
z%+Hon$;7BVsUOGfHrt8{FUj_>ywSR`z6<8*FNI!w8pNp@C3q#X3kY~)k-*+huV7Be
z%H<FDZCX0ffH16EFrzK@1hBkf5RA-jhiq>~?TEXVQ_hQ)Hh}9tt6Pqm{y=gty%Kv-
z*IS=u6{hAyVSNAo<7v?}EyQxf=*c8sQ}zhP7?x$+CKn;pMgVsXz30;-qW+C(1}4_+
z5bxJ@Bbz5EpN<a~_9zws(b8QC<i-KTvZdDbH=JCRu=s!|)(J%e)sV{Oo@z^D&5N3D
zYJxXQx3*5eaBh7Zv0V7$+@zMFSPP5C$R)#v`y+&2@6*gIF^Fe@>NB74*w-agX$y9E
zta8V@E^c$ONJ}wvV4ydGN_jWBW{d0EJWDac=Xe^k@geieEZ^swvO<CuovC=}Bh}<9
za?SP^rs=W3ohHTRqnCP1ffg#l$Q*}Hhh=ZjF;trd7rdDHP^eqbNrY^XfrH&y;t-W}
z-p7{tfTv+Ijm+xPEY4&lfdj9L@)Aid6G;-+KE3&sAhg<@P8hFOgS@V1(&URmfKQDa
zRXC)&K(j`|JY$W-f0xxJ%AVBOBIr?{PqaioxAC+!PNCe)ocD4>=rvF0qF`T2fwRWg
zI%RQqN~0aJjPiZF_@MDyki+DKrH4I9{I+>_bza5%l+gM58qLqn(VyZQZZ{{JncLg)
zwz%`CpX<bh)0(<^>XN*u?jJQFEkw#Ppocw^!gmM`S2o|odzH}jmAcozj1#AB{)X3?
z(pUtea|B~la-SmqIi-^9+|tncw*~QCPFj@Kkq`ULJ?cNeL>;O`XVgx^o*gMUG|(My
z_TUw6u632lqL_B^_kJ>_AAQIcP>BwoGpn+c`IAK@2^marr+sfiQFPYiPw^+M*;<zi
zveRNh{`Pv*B<H!iezdYsgm4i-^x<rBb~uNSyYNdb{z3s=Dq1X^BFwiZ5dP2)%K&e*
zVczoe3dHyt)tin{S!HB!jbF2Mjc%_Yc&$v!$mB{y$ji*pApxiqmgkOZ2`{>RBe_}5
zI35+*Yqm*lN{Kv}8!zL2Jb)&n9>$+CLOk1H(JhCHho(6E+SAfv`3rUw0Z;NvO=3zE
zlq=JX>UEpI0devwYE&Ud79)aK^=vfd8mm=SVwTe;IYA}NcaQFv$k3c$If06}=Le$m
z((7GCkpU-|p^xu*!oS3t?BT{r8_-J7mLy<-22FC&oG5y)!}&Lu#a$#84)KRurF(Wc
zAH1nnWXk+u)QgYiUTu*-b;NQhO-eguoJW1zvZ6HF&j))&9O7qiGF_9|7SAur;~|A*
z*c7syzyjF};#g$J^+jUg>Nt!|N@2q-Y(O5iVSa1%lbJ5Hk27#+DH-}$C~%T$;@MgK
zHppEVnX}KX>#p#-)Vx{Jo6>OAp14`1t}%)&3z7w<aiJqRe!?H9hul0e7GzI=DBLe1
zp5p~(iPi3}+-$cVJNuY@PkO66J#UEzd{Ckok($FZ-a_hLN`bfTYzbpj@_#Yw#pqg2
zq&#+KU(xJ@g-^+8kKtGi=#Wu&@ILD?fN6L|&JRQ+w^jfQqa#=pt-~pw)Zi>Wf#99_
z{ji0S6Nvl5uDm**E+lW+Ohg$`(Wiqyq->VxJJpY17eL!EHMU$R@p6%RBj08Y3mNoy
zaQKZ#i&&HnQ)(XMK%ATCjd<C9$aBllnEiYmod#TtTUGthnyI%ZL!+TgE*x~~)5eO+
z!v|*#unNOI(S$G+JDEqNGvr2RDcH;B55+u92>(o6P@M$@xjRMe-AcvLS!~@tHg3b%
zBRV1M%6yFbjG+%H8OP~O6f+Ns(!`Ts%Lz8~)V|Q`*D)i;iZwdi-ybV0V#pe7AZ^ov
zL%FEQ^oq(U6G?k+v+#2b;<Aqk<6c)`7~+35i9*V!To9KR48{C5iW?Xbz&IgX#dPtw
zHp7Z8bdd|0mxFP=>LsOT`UOr8yE3&#MJ|!n)=CE_I<;3&p{s(<5W_u9V|=ZsvT$sr
z;lO};!{}Bo5TDcCa9@8{5ZPMOI{4HJeMD07dAdqf>FLhmy$Pj%bfm{Bbi>MpcXn;{
zi%ODFR*8H@Q$5KV8W4BXn9L+?-`tspFmc^<WxJ1IlF`dWMn<Bkdm5fAWtlRfgulU&
zKLOm2P5TPtml>p3@=zpCO{5LmzAJohElE?#eRP~gX@t8Wj78MOujcR9NGMeV<++Jx
zC@`^2#I|!pvB*-juc^gt&f8B8KTbkzgb)-ipr0;wTqwxL`Y?M;zY{?sLkiDZ#oAnB
zdxwkYq8LTn8NAO@SKBSjZ4-(qHyqJ879BzO9b#mOd7n(^86z&70*TcL#u9DhBrmYO
z&5@)PV)-i2*1$MugF-LxU!oUJfva^tq%>NYT##)HYb0reS#eq5yo(eB#j-3Sq0c8y
z5swii5J?U1U;wrF(qN37ZLIxa!;y3Pl_t8uS(fc|xljRGP#VE-&%2>%%59TpLY_NL
zu;K1C5%-gxQ{H!w3B@?yjDZMbHNYf$+>?*)Hxq6OGneK~cJI}-#DyiPKBA2l6%??~
zO+us27+<MN=no>xdvK!yQ>HqYzjE=X+BLp;!baYAp$ZG)a5W?s?pBX?dJC63-9{ce
z@z$z}l$JbZ_*Sh^yTO9=aw!sq?oPmT!*Z`m%7o165=DHrET4mfB-oHJ+g*h9C`bXf
zIG+7c<=EI|^1|}TR`J1Cz<?-^sLgw`H12hj;Pr40>B=@K>y)F|7)g@ey%G>J4vAdG
zz8*E)$r)TS$U8d{g%Yt9C7?DzCYiWJIg75ey`(J%-;2quu4gf89@f!4j&QcaqxO)c
zO`6lC*GwxW9autnRrMqqgKKGOh<X>bM!u#t_1>~rqY4#yHI$r{Q&ySqX)yoWu$w6T
zH^!S!J28dEL-2Wu^xCezG6!cRVK;Lx0F4Hb+()1sN>*x8AGT%*EVf*Fnyk`jUuM8e
z2(VDy_mbTV^(YBGdsf5&O+T_(m-#_UCv~ammb|p~1t|dIi_wkORkf?bhIhe`a76*a
zTzuE>KETp;_JMpty=-}pZ2+$3tBo0mNK)n*ga3BujqhQ%3o;1%qr8+bCdUO=R8~1B
z<2O7k%l?y?JsA`Qd!7_cI<tmR)K%`|M~y`j^G#GCO<c|NJ4w6=QlG%RW-saLLK_Ai
zQKRI1wf~v}^o=hiC{?*2$bkT6_E~~Te>N|3sZ|;!RZK)S2FpJts}D=$SWDZETVtR>
zPk(yT(cjk6AY7QdE3lo~pHehuWh9WIXNNQ8>p1fj5ENr!63ezSm{E!raC&$()H=w=
zF0ti&d8beuk8fP%cjs2*{Q=O^Rl%33qA9RhJtQh6y!1pf*r5w15eVgT2r26l)eYqy
zlIv;Y3{Rn90y)<u^Ji0adJs-l?zYL5EtBJc(y<#cPrBZ)zUQXn2c`ELI6xh*&>lC!
z)4X1!Z{dv`FM#geYc5?|-M`{T3pIuq(Jxbfdz+$xMjx?UVqpz+P<4KxYuvMQQ0tQ;
z6{QQN?%1^1JXY8fzxJkRRi%Q+&s%f1&8Ni3+HKdy;LxTxuD@6kup;g-N;Q-<>sa=s
z*KZs`%|0LqXXL}+*APLS`GNk9I}3%F>qWy;{arOu<xr>&F)lEsQ1k^VXVg>6lpkqI
z$sDKPtJghw$G7syozqU%LXW8~eDL;6<b59HN{o=Z1flWmG*LEyi0tT5r<^@-z)8nD
z^hIWjr4h9RqMZ6gj_qmRt>x*iY93uP#Pgh}r}=boE<2a?RhLWH$E1YogWp{mdCK0f
zJCNh&$Os1Rq0J)s*AIP-*hi;r;(1%B&K9et(r7CEwgT-D$8w?{t}LdWV+VF@3Lwd-
zME!|Mx+Ot@e*HT?SMb=906$-2A(C{Q&D1x=Mjl1`R&Iez^?va}(wB>}d*^SkgJt(O
z&Ly1cm`Dav!<%oIUt#A$&r!j+Ad`K5Wu3e`y-VN*vA)E}7GnjHt&_J88uL5CqbJW_
z<ZArD5u_}{8?Y@TDXhNPKZxh~YF;GS62moA<DUMe<pzTtPs!GKBBjJfzi^3Nt0JO|
zzL!zAA;Th#o~%fTMg?CYjs8xVje3)4#~#qBoYY_Vs$u4utJh0F8q?Re)-9cge09zx
zbbao14q+DiR$x=eo8q!m>8t1)hKg51{mWv67KYd{3v;BJE#aJ1s=4{>UcuW2QBw>)
zBrj@F-<xyxor^VbRc9WN&6Ebl+12}))}WT1^bew*`&$L+ng-yH20j+zHyABmj2WmO
znlGmga&lGX6@?e6Eg#!1zO&YbwC&QYY>%9b$i1;{n`b69nd-_m=<!B!)ppt34JRnF
z(j|KK<9IdCu#Wso!ZNMh^4=%QMI})7M-Th!ma`cgRV3{JpxSuy{PW!hx-1%6ORPQb
z^#u2(cjlQ*x8G*nTRV1Q(h@k}Pi9mT2KYWMUaEg;BhD)(UarS5i2L}e#udrKS@|Ba
z!yIk2P7rKycz*sCM7IAFz6-%W2I{1b##6Pc5+hwjJJJ~|LP@5;ADgkmr}MQ~dJf;U
zJh#Bby1sUOR2p2#PeQ<1B)3vm5i4U!ET{K9)nPaJoe*PpA}F%#LskFo6g7SNOpf>-
zd&s-hw-iDakM-JwojufjM8Y{${9?ZYluWv05A@#1@;(MT1+IlZUT{s$xb;`(w2ESm
zOlo5tlfFmgLz(dHEMp11p;FiDOuQC$mTwr+*-X=D?D3-+I7Tnw?~!GzlR}<2k0F2Y
zrQ1B}*0@5W^b^UOJ|hK#ER6gf{Nug|iHKwr^Z{`==Yb&D{WM2Bb8aXCAQhpOgtw>w
zKl?7k`WV2htv$-6H^tD>$Qn1G*7)hIOveTL=)NNCzI{?kCMue!SNmKSnw}_vp;TkP
z%p|kxVkGk6Ck6g)+bqpbTx!N{Fh}#%64gYQ$mjU?!*$0Yq#VtX8{RdiB+z;G)XMVR
zIpq_bz5cBwGq&!*?U}|!H?4LTFWryCU}1*z9X<?Q-v}lX0rE@HqOGzyntg{svjs<E
zN4YhOnAA3N`KQ}2k!bf{B;YD*Ez`0}WPil3;u3nJ1uQ?LGtW0y8x5MKGowEoutS%E
z&gmAq)V_{u#MtWTT&)U0*I3+&RJpGXayw(G{rGro-lG|kez2~pq;Uh!(u->P^*x3j
z@2eS2^LxQPE|^sI?2aw3HtDPi2^9#i)aoin<Q3bLkR6!pJ6aJCuoWsNd^e?e(89Dc
z(xQOw@dQ+M;4q@kPLVx{93FnGb~n>Gr+~5kXfaJv@v&f+;0F3&vaI<S2IvWWgh#Ge
zs_=eenVlvhgM@K|lW~tOeuA?ErCui!*Rr{TywD?BQcWwI&m@l-0t|t?$sO*v$=2a`
zB`8AQ`lP%Q1%p2He>8@ADJOfJdwXiu<v00DAcsPeKPl)L%dDlmtzfaM{k3U+w!A9T
zT8Wo3>*Y-d`z3htGkE%1k390ojLAiB)P(3^qz-g`?arx<Yg$}>Vp0yK!}8GZl2Cu~
z{L24snH<LSAw1n{6)DnYtOf<ZE@hnT7TdAt8!8VwcF@m~ecfVUslPrc&Y?Z^`Kom1
z)9n>dMZY>X#(c~7X|($M@uNVD9~hJl$o6jwrUoc|q+~w!m1a<_>+#38J{l?ybLpop
z1ktIGWOR9|a`KZM*D&V`VQMyDtOS(U(|>rx{ZuchGlDNX;&jJpyFQ7bsi=?i+P-vk
zbXWGk)0i+N&ef*+nr-K^46EYMw@t_K?&N8jqn=9-DgONs?1ubZexKX1_tG4!4k>d;
z_&saG^>c=vyXY(&p%0Er6*z;6IoK4xt}+G_H+PL^SM&tNGo4j_h!AnPR(vMqt&Qsu
ztJdsYm+m0&KB5}U;MjkbV<U*<&>ALhs8iowI(?+7#~y7ZL3zKM=nsVoctlePY)<E}
zrKt2RMY+qAIXm<k;lJJ8#aD4`@y*Ac%+kX35ww5HMqd$UWm`x*rW}_>FIeuCqB?ko
z31h`^Wk7<m6J1d1qbIq|^=Iy~GuN*9FMyr{9&om#GT59xLCR)gG-tutQ^FM{Poc0(
z;R!};Xqs-5{~9}Av#Rc^C$HXrEWY<kI)8SJvD#Aa-KsXmM2zN@pc$&@@$G57^LopD
zP3(uvFat1dz%uE@%{}<7VXVX2<<HkF2PQnUo=%6+QOXqP$GiSYI(V&mJ=I@T)x!i8
z83?xMx9n@sD`7h$1xBJUr*O$_kPDXE{m}FibL#WW2#F&aU-HlIGAFgkDU49mzAT-K
zyB4D(r+fY67NkXTmUd7WChtP4d0gU4@=j@WGZSVsPXA%NB+fxPpNbot0hU*4j5=AB
znBwUD=vq!P+VCu~{l+{d-3hOsTy#Py0vugO|ITlb=3U_XZ&utfqOia~8>U;mi1;5H
zUTG`CkLld}NW!Qdh!RcWOAGObTpG$JX6LAu_g7M$Wvcv?4tqBG0z1-yPkEF#Jk@yZ
zXNJxI%2lU=;qo(y`<VUs<LU5&Q;wQzEL>Wz^)G108?hBb1DfWSvyP$X_MBW5bMdv>
ziMu<a>$}s7{?iH+Zffs+Mx#u;j{uLv6E$o*a~+3kr-mtKzvlHMy&1qhDM1@{+ACdP
zvn}X~KrERysaP$s1@WrL85wtyo9JXq^|Cr+-O;otm&1MlW%|jBZ8K`5BdI{p1%+mp
zfY;XYKL%m!0C<uGfg_!rag_8YwQQu2oxV-ZjWzNr*%G`WUtOI~W|6JwMs=eMWtiXm
z1)0rV^@b}<HB&LrR+8r#lo`&l&K8?kClauY$fTohZ$J61W%&UYUucGwu+s@ekLrA@
zdyg`FX4v{NBb0%p=%#8>&vDba(Y9BxUWUKA6GLBNpE~OUxCz&|zYDWXONbW>t-B|-
zu{c3`veJ>t+gl1a;*JD>Fe)bCU8~|g)?8~K9aPCb4m*&HSo6KTxz|z6oHNg?8Fe1z
z9j?~m4hGaO;~wn(I0$lnAFF40YC37(CVJP~+IcG;75F@#d-Be;)x=YAGqB*1`}5__
zev|YoQ0&uo@8|D4?!D)ZUKd)Ndw+j#MLy4J9QBsQvFYY)N3UB}TQ9kJE#|^1I+2eg
z>$3J%zrUr9^J=p4yAx>-E5CDAVp(-Lb_^SY`bEDo?#Nr_v>ILPL@x$RQI+WVJBP&i
zj~-7%H^00Md1)-*RWUsc>(um}ba&?Zo+YHqFb&_T5czOP9=!#Zkj;~ic0sp%JxpJ;
zm9ljL!I`o$H3|>&K9K#Elv-|*kNfQTXA3I&r}AwT<O-z2Dsxr<!Y^5)-;-zn-mANt
zK6?0!LeOfg{II3LqBo#I$7m*&kg^2i0ku5d8VxJoDrD34?;UeF$hV$oBM*tPmgDW2
z$hZB>hLPd+67i=%RX$o(){E$xfainkdS55>>Wc3&zslp}K+JZi>87JrDoM2j4qqJ{
zcfkzem`B+o?X8v-BFto(_4Fj70*C@iGvj9`ln0~>kdw^g&ub}tdJft9Z7Xt@p2Y^;
zm)&7oTL?1S2P_ri6Q0X75NM0ncAKmA6_U1}N?LgO@uj^&?WB9VD_Sudd~_qq)2!#O
zIblbmP@zuG--r{pJ}Hr4z-5X@ZYrSVDG>orxQvQG8vkan)ZnkyVa!nf+VE{58bPE)
z7{jx8NdJAQMC&`->7z=(PWf`FaPLGFB?>Omp1@IBxPrCn#fF{I3$=WMA7eV8eq0(>
z{l4j%6)ROE%K|b$ZTo6E$xrDRu%1^6>sZy`0qjK)r07^_2!O%w+<=t&3U}LnZ(Grs
zUEBd+Nfm%;KP;i&KGn$G(ir+(e`R=;=7w0F`32MYhG)e4h(e$zUcJeR#v7#==fUrx
z$xS!NfGxJ7ZEw3)>{@cstIuf(B<R7f+v0IH!TZ>PR7B!S3=8WtJ}b+-FYO-3<DXp+
z2k3nTsYSyN3wDhFiDP$XngRzAW1pwnO_)>E5_owxP6j2%Ww}mF>g^c=lW2x`>Fiib
zzP+@va$-jA;y+JMQ_X&*C_@>)UGa+pck!1#lQT7re=0xDfC{6aLYXMdjJ-?J^u+0w
z86TTDhP8>~q(`N8hZ_HAQ)*0e^{5G(4WSx2o>;kP5ZiLqJ@#Eblc7eSc}`^3jR<80
zQ~WYz(4nqd21&TiiQsz61Cy(`q^)Ut^_3Ia1;s)a=jry<Lg{#rWDap$#|zTOe1OeF
z!yIF?UGyecNr%SE?VRn8k@C@?*T;TsW<-H~mKM8kInhI5$DDN2CmVW6Ze?Q<0supF
zOY2HO{+7`Lyas~Xq<2p_osZg@7=qPVr^_m$ht=!{GzBi1+GmCPe;J3i;OWH6S3C_X
zoLzhajW+ysmMJw?;=Z<l>^xZVgrMD<0LeV<P%JmbE4#=vMz`FiG@?fQaN_dAPsUCQ
zo97(Imj?Wa`bgN$TTcP_n&D@@U7^g_P!?yqCO{EE@<Aqq#=Mcw+*$nMlj;pP^0tO>
zc9b%-hC%*Ztpk7F=d7G&{T`daSWi<N>hw(GByg74k=5!Ol)~cmcT<z6q4DB}ui3$v
z^g&%apybVGZ$N54q?wf3Gp;5K=t2#$+I_T%W<0Ak2Ic9*^VrDLKigsM)S+N+HUswM
z`lV&fK}LF&Z}|pP<ipVQ-ycBV%pVbTrMj4|s>YMbgQBrMeMw^&V)6fM0N0ULYQ%_a
zb9IcSIlZfJ7`7vRe3B&Mx36A+k}Q_srZBJVCc)Sv0_SLlg_X{{_w%kwnG?q&N#yl8
z=k3!vpS7K7TB$hFpoHGx;W|u6a_Ld*mcO}fc)K(}KC|Sn+<V^%6yL|o16qoyKuTSo
zzp%UL4ST=HgKuYX*{OWy#UP+UWpYX??6k}j8QD`-%|NPjcEom7jenU(c-VzjFd^9o
z02houUcGeA!DpL_0tVG@JOdKPJKtu^Rq3b3TOfX#zDPgqg#|Pi4Y+Ef%nSa^Ix;}k
z9g*?wKg-Y(>&s{z4QBxKwtVqi)03~#ZSY+Tpku-m`|;tyuSM8V2>o>^W!Hi>T)_6l
z29FtbbH8Uf|4&yp;*`4<Z;$r)qQ#-%ocy|9emOiD7neHsw`h_qJ{oBKCI{C*vd_01
z+Jl>@002_BgRHEkvaIYs4ly8(E@THJiz{_YQTAHs^wK|-7A5i+&@`*3W#3@c;|z_M
z(zl=O+?oQ~PbC#LfibF3P$h{gaJa`>M4B){*HNPiQd8f>rd_ocPSE#-Z3ecrUN*fz
zMT^JK8LdK>n&o78ni##XTt0sq1Lz_R4(5%{@T33qCS?1nB{H$vTPyclz~T60$(Gua
zE4dBfVhZAuCnqDtMV_lHIJGH-czJ}06maPc#j0WMb`Ne5&f}4!WaUx9$f#Z`)M2U-
zm6s}FYLr^K@joNp4`Xa|jX4(e8DDMzvA#E?gT6T6FeETBCWWJs38ZO-M6gzpvoUMe
z)0`gT3g0s}Lt*Ki1GT~Ix=IN&cesJxPQ=B`D}|O=KLTqH67k>Kk=W0<+}_TA%wh?C
zAZwahymx%`<`?6q)j4`asRu!KkCnMC@pTv~n&eIjop4HCu_i0v$nH!{*z%b8hneRK
zr-RKiqybHXVWEyrIv(S~eXm4sRFN0Am(MENY5YIID*St;-4TaPo;x58l^Ci$6R~!4
z;f6rntZcY_To4MxB_`?P4zYH!fzw*q*g3e0(;v0A)6+UY#pw+M)Ogg~Wo_&ol>A^e
zI)3W9)_zXb!ccli2@EkG5d?sX4ID!2<Kpb<DdHne{|BxJ;`z52NKgBR3EWAX-cU`G
zR@Mz>Lkr>tar1D=`#3!3qnE&-6@x)-MYQD<{(?ZfiPPJ|;qD?pptrX-w>Lkx8_W*K
zD=aJw<lzJI@o^z6xIBGb;Se7#S5JoD5PxFG*?3yR9Ngg!ZmzVyF(FoNUT|@GdW4?#
zAMv@ktEv4H-qrIj77%;@eIV{YUTz+siwp4Y9-eUd=LnF$0{S04JarLgbAZ}5o^D<+
zYa99JHm-1nze7N+|LO1U1#|u*9jG<X#@WUNVd{x!mG|G8R8&^e{HMon3hW$Q-2d=G
zko|9#a0lCek@at}{nq@E&ffz;xc?LP->m<U`ya*#D>XF{IX7#s-{C3CiPQgXUj*uA
z?En?|^U;b2BFF~?b3tsNHe4W(pe+~Jnjg$%ZDk`QC?ssf0|g2F4NBS76Ap2;w)qW(
z0Oxi<;P4^rd919UT)aFsP%e<55DynbP)LZ&+7<%k1M&0n@q?g$gV2CEAgU7L{P(DS
zLqQQxyh1zzwgN&nTmoQ_6(Sm89xh>9K0z+9l?|^oFT@H0=C}C+3TiE);0AMnAiC4R
z1!89dba%D;L-Ct%5ot|jae6*(o_|R+ogr{rgacv>IJiRHygmP=(sgjL(SbvL^T{hH
zh=_m(#0Tc#;Y9@gFC%>$m?xqZf1~p9aP$AE`Q0%hh;$ItLVi~&0^ko1L^dL_FdGQm
z4W{en<}6PCJ1E-Up8r&<AqEr_0*A;!;5G<Q9zH%19<T@>SeI8wgilC>M~H(5A^DrV
z8`Qzp_y1-6d-%|b{n_bC4xWhieg6>sIi_@MJpO$9^VQkmkHJJs`^T^lfmr{Uf+ys;
z&7a+c!1_~VZ4Ys^vq8)se--RM<PQHsF$mcp$_EPJ=i;>j@o<5x_yoAD_`$YZ{K9;~
zAP|oL4=-5o4;KE3?&)R=_lCf1r0ozqBDg{n=pS6svi{XoZ2xZWZEy3t9}tvr@qoGh
zMH!eL_*b&P-!sNPvK0gVUwnxDVeq#p2I2Ro3^8>fW<uaUr^3JZLd5#NdHvN7|C>$F
z(*C!R|A^oJ()C}u{v!tdBjf*8*MI5yj~MumjQ?9*|KI4s_}6C2#uc#w@<wcxhB2IE
z5!<XMR;r3}0A7F^z!#M9O9ml9cULm<1OPAzf8R)e%xqGG5EZVhCXf0ZjS`mvmE7mY
z3PMB%mp6pVy1D#blLP)(DB3`2y&d58w7(aM1|c{k0KlUtWjSeG@UTm&suG7cQC|@M
zDGgzC23T2FiAZ+RnNcs4G&aJR1MM|&5k;)10asHKMXS43X>~-srI0Jvl$9BVOuc~$
z2|Y1QlsxFI(wXCaR}U2ANS(UVrFaw(*jfi(`<lIW%?Rk`p=>tg1`hK9cHqWwiHSj(
z>Lm;d&L8z(+3Y{RZLZqeOHEC6DlaE~D&P5m^Vu|KMOoRP3SbbbeeNTM5`1`g*txm6
zdEzX%S6yA*Z(E0yH2f{9e-n*vBVW_r*~{zPF8CR9L5pcs=$Y%}>gv6Y7<CX8PGs%U
zfgC+PatOfF(^DxWeAIUH{ysM+hiZ3kFKBsj@kTIRrOdUl^|%RhVrl92+sVnv-q@IW
zI3C~%@fTYNV0L!)M+;7Hc{$w6%L4}ETSf?6jEDhzQniL#XJ==pnyle?$kU)nQ2cfl
z5*pnE2zwf&rI%h@%*>bZ?BP_Cti!eO(Y%e30$K>?FzL(Al@%)L#K?pM9JpCO4;Iu&
zL5qk;9!V3{yd0#^*x1;#a`@xxSGr!S6Px(nUipuWjb)XU@@OH9%0F7v^EKDk*8ytN
zuPAX)0aJwdUf$k~AQ0$Gkv;u}krHPUE>g=Gt6g>m)_Rr9h~CXJzp&8x4fabyMC68@
zAevPo?<je(w>Lrr48A(=>+6H-=%j+h#0tyHG4jS0jf@sB@8#&F+0*Gsu?S*&F)Ax7
z*W?N&Et~~Sq>%=;PieTgxPHw|PZ!+$3JmR}%`Eot^NWFyLixz3si_T(jK2Q-nX<d<
zco*2thiI^OWMm}k{QSHTnU**<V0L-=y-1EafJnac;Q8jc-y{gTeQo^g4D=GRe&XZa
zx?=cBUR5=g5+g#txVSibqpUXWA(?a7)Xa=mR8&=79z_O?nVH#q0G+OeQ?-_pgZ&XA
z@4J@9MuWEIX5aDBsw$kw?#_-5K*qC|+GRaIfAV2sVvdZD>u?e$Gw#qRr<f~i<m=tu
z-bT*N%>~*!IT0er_}02MJ1~G|ZEej+fR5Nm#%^zK^G<`h&8shyjYV?wIXE~l0|EkQ
zj*gCkf}TIWFp`yhgwTmQ4nk833K;nD(C!xI=da8_<iGZAZj5KWJ{@NVD*F2RO5}|*
zD5rq<`A<9N=JdC_ySpP7oaZ>g2RLG^>@zRC!IXjgVq$j}hle<NdbOMtBRg>02NXgT
WugtXaj9$dR1t`m_%T>u(hW;NSoTbG8

literal 0
HcmV?d00001

diff --git a/indra/newview/skins/default/textures/xbox/left_thumb_y.png b/indra/newview/skins/default/textures/xbox/left_thumb_y.png
new file mode 100644
index 0000000000000000000000000000000000000000..3384a50c7a05c5de81e6c685afb4f1a88764a7d2
GIT binary patch
literal 13103
zcmeIYWl&tr7B)ISaDoR7?!g@fcXv;M48s6}`#^B_;2sFUoe(?(P4M6jAxLm{mpjRO
z<UMu2s#~Y(e*ey{+B17Ed3vp<S9f*Kbfl)b!cz<~3;+P|R7p`*8~%+Czj4t};Gg6u
zoUZ`@s>?UJhHly*7`2m&qb1Z1Lha_|1fhm_LM;IR&-uzMBbVnbpCFH5LjDj*94ypI
zqoLd|Q(KWl!fw}}wXb3=@cX~_p#cus$WgEM9?vC4P9?5%mS!ZlQ!-x-bNZV{55d|>
z5AS*R{4eEiA0L(_4x8Ie{l!h2nK+T#!fwI0Hys=9kDDl!eoIFtkM8-0Ozv$e{y(?w
zPj9Yn&ySlwRJS{xkxDsT_8;E(EW73}OVCAKZeEjWIn>|r*YitgynUax^WLAE@V$-)
z!-@ZyBTMtK@3|ve#pbxAOigdC{Cg(f)}!;&nZg|IYl_#N*Ah?s6-duU!iQ%D9>pia
zF^!oof*)Wsb6xEri8M~XJRE&)Zd=nOW;RC1?uq>$lAx`kYj(zWbT&(-{_8`Ru=W$n
z@b-xf5gUGg4s`$U^Pwfv$8-0zHixrw`76J+$Llqq#L{)U>0xi>dzIrmtV`i?$}GOx
zE$&*PYu?gomU-A~!Mdo6((g+r8{rj|KKbpj?dSW4^vKg9rFET`Ltf_ouiXaSVLuwG
zC)C17?k_^Ce~$E`de`6=Y*=aX$lkm6rj2&dYWSq5%5YyD)(Cmq)%L0xES-NDbS{Pc
z_->SVZ~EZ-Fo8Lu#V%Z2|D$s{>amq4TkFf)qg~82JUp0qbf#Tk`@_RSeiI69x?Kh<
z!QP?g0lU15e<G`4E)p?g+s}Ddh_6Ej{_)l~v)9y!jzwj!EoHlJSD#}Vp=(-giOWhv
z1gP|LqHKfFGL|(dM6*T+t<rAR4hM5>A~Y0fbgEL&+=HHhY5kQe)-*L}x|6ll8Kx$+
zM`+4VTsVx5eyA|l6eOy!oU>G(k=ay~ZoIUqti0HG1!&XBSAS(+c|I&70z2^e>?(Em
zHI8dlkuHvB$9iNd=`6#!D8nkly<slR6r{DxTK#FqrrfbnsgMFT@0Df@TbS%SW_ss2
z-d`+Qoa1o=n-mA#_bxpKmo#fkevwlqPCYC+wqY@CbP7r;NXO%*qCnu3jg3f{jhcI9
z9AlE8^L?4FjMfV!gYextAvY~a<LP$O;jAz1<;SQ;)76V)8|Tx<>I84X&yQR#k1-4F
za`ur78{UIjkP<mxq^aIp?-(zeTzcODh8|aW@$k#fmo<lJmsG|_M1bA*#1X;zjzh$Z
zNlJxy2IBTjpIv=H^=qk)p~#l(@7IlPF;<QYX~m2p-Q?4MRk#zq?5@^MpYUSh{c-%!
z@<XH8g5R^cjjoFQ#gPFP&ElU34QgLnUt4ha#u~d;v$hDmJ%t37S6wBZ`1wwhWThXx
zo4<LzDH+dy{?W7zwQ_JS0i9VTiD$97lNB0gP9Pq0p=iZ5Bz(Fx+0T3)LrOX0T_xE%
zSSm==am#;iz5P)c8ZP>?)qC{0X$v|s2uX|D^FyocbLvOmyVnyr0*jH^b5~zhbFwtw
z&7Wq9O*W_D?0^5+(_b4_tHOk2=xlI4*98=nk<EGa2DOg2jPnWY_tHH>(Z1s0t_m5s
zl%DvRjdgkK$&@gSe4d3%wN{C*kRE+?wQYv0QC!wKlTX|QqCfgh>z-Y#;%ujX%}CMM
zXd5^xoX77G`+0f<ibjYkirXd?*m05~D>$S^FjA$|27(nq-UY1gO~Wnt-HAjii%{vT
z5u*atVfKUN%a~9SnH{}35~F0%GU<0=boP6JhuYTcYXuYxmDR=Kk!-FjCenqtz7BS2
zxp>O7{u$%e_Og`THp7!Tek@a;t^{$mg<gOE1&SJV4`{-(^3xT3Rs8(2fL4QriA5<p
ze=k(Gz^<sN%USF&BW|apN-9!<1$SAs{_4)_mo6?fuZsp~a==CXC_yUtweJ^S!d9{V
zuU*>KX9Ex6k@*}%O>%_{5$j*PW@*<3yg$>VA;Q?zQa|(kjBB=g+`SLy%Of;oSrsFi
z^Tbfu+sXY|Ij&)uoWV5pu@MPJk@eNZlv1gdQOocsrFN~nO^v=>N*+;SUBV?=aeWf2
z?fTIRGZSj93vt;NLrr4|_V*cfZ?^K4H4juB18|@Ut6zvj{43B%3e-A@rGew-fu7?R
z*LI1G$!Fr=>=kTCdgqUg37c1=ZGwBt^K78f0_;(RtCSLDHk&nuz;RlIG=&z5M?yx#
z2S`+|+Bghf*v6Iln%r6ZZRXG5f`P#1;Fr;IySq<%zK2rAGlq`T3hJn~lnSKR6@6G4
zvEem+`4lbKY?!AcwR4?|Rfso$JGD_YK4nZ)mPzvxTl0CeMqG0IJJdzv;ZHG4#AjVC
zR@IKyNc1S^<a~8Es^Qv9*5^iKFW1R#arJWJs!|bkTqCJE>!>e2c2n}CFWg#!Ig>fG
zuth0>h#I+7Cy6t}fgRhQM0ihiDd-?XAwg2-(FE?CF&IrFxMqCp^50L5zWKGg>LBSs
zFcgBJNH>$kJL6B%qUPkkmxX(lIbeO;5J&H2T*SJYu-pm2doG|?`NpHhN~4@>Im9mG
z4gZpX{f%#=%M<+{tf{Cs=r2_2`sdsk(}S=UlcULb1JjO<EY(BsJ+TlBnI*deZl>v>
zH?r(WlQ=#`H`f-<j~2&Q8QtGuUyeDd60Iww2?5pfUF*+eWj&dx6;skaNwjfFm-Hf9
zt_gk-c@f{)B;a0`K)CQ?dMBkR24#w)I@5b2OC{aRo*c}g)ez2W7|xQvwx1E8sqIIg
zVThR=Mr4nzAMP>cdBA^n)f~m*tAf+^7=h!EdWi2o7-u>o+RpjOGgrJXdw)f9Ckl52
zaTj=k>V)(OCmIDkSXB~_4*=@2W$PN(78=ht<Vfi@CnA>!jFpk;r7<*2xDNLMPrgNh
znzgc{aE=^k*#<JtLQ)|kg&xvO9{?t0xtE5oa*$H??g9#zN)bI;>Lg#(r@pwp;M$3F
znj43F#9{tnua>H>?L%4;FKA#*tQ4FeM<-A~N>7FILRhGO$!IdN;~FxkUrhQ=&wN}>
zOTARK%-fxfX?@`7>$jlE80)8cm=RsNyNK34=`p!%f*ll{E~+-`I~+uwDpPfNedIi=
z(`)t{scV>Y&ZLNe$xT|Slj(T@H-Ng0<R-3d{L};RwQ8AkP6AeROAmjO(38HLNLr`9
zJ~V0dU|vN_6`S~K&?*vhNd5||a0KV}E{ZgIx}pp-=G!1dAC6<wBMgaEN*seY8S?t1
zm~VMWj9vH@>4I;&SwuNHQJ^$#0qq5Vz#-*W#vSR{cUPoJy8?88_%FGNqc}32txfe0
zJS0BI8%WMOX1VB&UN0)_pKlTjN07gn_xZHQpzjeJF-7_aV_)nl^%253475>Ej*a4z
z7toa*@WS6g(p+>X*Z`9X4@OhBmY+cl)#iFKDUyY#QP_S+JM_xTt}R7fL|B=0C}DoQ
z#V_Dmm#Wh@YySR3SM_Is#dvzR21Fz^W|fiiGg4-0&c!<v4uyd3Gu3n|8|>so<j6>s
zCh70Gv21%^<R07;j8A-aDbq8gC9GkAcn<?yo~2G1te=8U7LLAsg6%FH=GBh5XUIuw
ztLX$weZB+Rqajt$)b$~SHbS;NCI)H=$*ihcl%It(Q!y-q^ge$Gat^VkjjRnOJR$sw
zBor38rhHI(fJ^?Gq`8GGAmyc}3!hw{Ibb)}9v6kCI@|$eLh|fr?PxcMwSkUhFdnZK
zsQSX)g1uLxdfFm`oUz}NIJ<9wo*IZ087Env>{zAvOaCri#;r{;O*npDB!5;>&XBuw
zi-Cil%J{?}GMRHOW=Z9$C39-Gi%P?YjKTlZ;tM?v7f&6tFMe?BktUd-h}<M3B|oP$
zOCBosVIb;RY)E@*UNt!nSpk37xi4-{1m~4_AW`)IQ0^q;Q`mAK^t%xCxYkpGi6=z>
z^h^LQ7O<Oq+z{<iJIUx5TEjqhA~jS=Ym1iB2|JK(b~QoExNP7=QR<6C(9sv|wdD6^
zU)<a~qMj^uVWF*?T@q%Xu_OzcULl+(NNzTzP7-ukDu<%kG(P!O5fLClCbR+Erzp`=
z%uy|;jA9;eFe3`;U8HKx8k6;!eEikG;=#mfRsRe#W^Zyq)#L{MYfu=2L!ko!7YaX$
zkZD@(-6`0hbUjMsebv5yW-#X|*KpSN*A?uAH@|#ipJdg0z0{3R@$Qd3IvK4<;Fg;^
z=zij=?|3ok>ma7B<}zbRpByYAs<w;%gmEs05U-5~<G!m+mXt-1F7XRD1#FG`8co1+
z7zaXedqeH+6<)m7=gBn!T3*ifTAgUA1aL3}k2yXkUE=Y!qt{_wn}01Gtmd=qH%o`U
zf`{XfPoFy%c{1N|(Icng$q1du6Gw;vbZIyS9v>!;Dxjv5FwpTjM7++ub2TO~-l8jb
z7|6>f?lZ;W(qQ~$btoUAY2ChJwH)u{7lU^{%bUDlimOC=5+ey(*Oz<<*~`ZwP%f-7
zDYZyww0U(*IzFhOsUB?3Zu&GYTtGCscpd?LGR`{M0z&~icik;Ejh<9pSewWs@fXdy
zjBWWeJ4=UJ#8SNaCrVsO<!?NZC7zk<KGD~f9KJ&iUT3dRIdVM3rTDOJ(z&Z~n>FLn
zsb9*C<r1k=-Smgt{ER+}nJO(~+AZ!*&24sZ)13n5U?t@gjIV&}*_;SBZH{PJpW12v
z#NZWeDdfwwCS0Hzyx(uqf;xp&lFd+Wmu!q6SNzh@sS2l&=%YKHDK<KO1<2o*X+{)M
z!oSaYD2%~JP8E>G^g76!4nWKz>)lyV4wDl9g*wrb5~y#rdD~~V?ddXcrU=-hNYCaO
z<H*BwL!cHKQ&wc<98Ev+)jHkG^SrO?DOd@jPih?qc8H5z;}a>$A+66%d|p$84oup_
z8`gRc04~YnjaAydX|vX7b4e>MS&5z<rWV}@lMa}kq}5C*B3a%KQl3GHBx7H&hT!a@
za>;$Hk@07qV44XAI7*Q-W62amVp5YHN%_j!s#YE=FNY4gnmtj5KI8OlVp(Ri_*yl1
zF{u9uz{YDAs#t-pnA-YsJo-y4sX?svH)b6N%+8O1Myl&Dy+WEXk;cKRJV+La$|9Xi
zY|#ap-3&v`f*n8<T>NvRrRPnx`7u%`9_6{Jr+m}*V-rpPsrau<Wx~<Fh7l;JQ_ZKe
zfDxHz<vyFzH(m!{?GbsN*2_r=v$AfmM`Z1=(L19dd|dY|bWcE}<0DimiKv?22zDU8
z3S4lpR{fDGIZsrj_|hVXPLosJJx!}G#*E#w<5w;(8T*&h(3z4Kfn|1_Q=}-8Lp~=8
zFW#3gj!&i|H^1<8!!(plpb@!hx+)U2x~uSE)79TbqB^~q-uNiLGxH87jv;^Ayn+lg
zl@aWdBe0_w&^}Zh+x_mqLTxgn?Tbj8ryyy5qRg=6hz6H^OrOj7FaNrqAcT-m11r9i
zT!$VB;2~h$j$9I<h-L8lDgiVeq%8+4K{oy-JK0DZl0?P8XI@*wTS3w79J%G;Zc?TT
zeTtSjD8CTu2~x$^PwT)^+dtMLQ;nsRT26gi>rkzT{WT^>?dwQXT{h>6qi`^F)3Y#!
z&V6TWo9hs2tv=tIr}C+d^bHD?a*01FRi@EHa=VTJl$-<#g7ZI<{2NPKCb{*K#a3ve
zV|Aa4i^S>G0r1MC4((@3i~v?@Hcw%JE}N0Ei$E&t23Fj}Z_ERtPztAfCdJQoD29A{
zQ~HLbf*|@Q{RI`2CeM{%7ubfltR3_dEJ=B~8_rvt84@d((R4D!Gd*_9z|~{3>Bh_>
z6j5J8zWE0<i>;>T_Rx}HdhE5i)#ujKD-&|cEsC1a=7k<46)&g!A~(R@G*=&y?h@qF
zEtu3r@rWE6CVv?iQ1Nvu(Xu|Dx~*u&^L>`tBU>D=wggmm2T)ah@}%*`Kx4;Zh88Dx
zGLEquXl~gQ+uk*Fc4>C$4K7nfD?XH%2JzZ>QAec=N`1yIPbBA^cSvll=)PbwcXc^s
zZpb`Vx!N#LPL@hasqnkrVInNJyExbBpj*6{ySBlty+XE*V7nOg7=I%MLc!(k)r}l^
z`7RODTt(jGmMu+e??RDYxA~h*B69B`>7@*sJ~LHzHmK%y@|D0Y@-5NH`zNFU?jyWz
z;UU<co@r9Q3n4a|&vtZ_mAHH{Gd`8qX+adWSWo<+sH?t|JO-IT>{y2v+heA!7)X9q
z|C+C`-7QQBkC&ft_ZiMy=&?79nj-t9lglypHR{X6VuOWJ+h27Z>(TupS=Mw4xAlQv
z>k^VsSPO9WX2er1RqdrgBwSz>HLHW1(t*Gu>8lEE+#qyb<Fpf{*8KpHlD_iGY4JR(
z#q7qZ_vTwp?;|-j*au&k90{<De(3%cB&MDfCQEJIjt1GTUnI?<>g<P5*$;Q<;jbQl
zrD!oeD51KiO#&CFtdQ#vv!~rfw0XSel^z^<qKMl)tJtnNjxhj?Ij|RFa+j|fWY(fo
zWbY1%HW1;momr4#i~GFq-5O-hb7L9L;<TZ=*5hIL^Q5#xLro*m2sSVA%_EpvhT{1C
z2bl~q(SA=#^<sD24Qkn|gt{pLlqoZ4zgfdufY3f_!)#sjrRr{?+<r({ArZaaiy?Kh
zL^t$O1h)+nQ=Fc!{?!4O<*j1_x?o*)eNqs=DB|+7dIab#ON%U0Wq|yuB?X>`^d5)J
z$e}o!#c|LZrRp~gBiRzxjKC?177sJ#@gSN(9}cw~V)|I>@wiHb^~^p{dd_Get2|!T
zG2$-Gc9qYY&C#QDirwLm0O<k>myCM9{+(D+L?ka?q5XqEg#=mcG&%ipYsYjs7>_*r
z)q3SzLDlhe>QEI-!fNgTz-n1LhlQDiEY1_X9Kx~E&>>jyY=mFN$wr_y3`%$3_pUx3
zg`#@R*j-&MG8V_1{Z16Qn=XPjG{o>$uhx&(jrhBehtn`X&~^}T@+4&3BS!x=ZuUng
z*_b>ri#GR9nQU8AE<m!{$ue?`rc(FN_iiB1Gp&Wqed%9|rOwOk*x1bFE6r1mGh2qN
z6cT_kTfsm+NFQENkXhgzWg(4VRWSVy_ROZ$6B=Z-QSgq_ue)T$dUI=SZ8ZS#MH`ye
zH0p_3!=feHCnO&~vxr8?)@m%D#;Or}rZ>Bqg|@XOwqLWH5B)#t3eeCLzIb=)RQtyF
z+&+vzp94DY>QO3OjqMmD9Z&IWjI%vGdq~JvQJP%QRaB1|)^hg|G;>hUA|VLvd6R(d
zm|SmRNKq^{SU9ghYiF4C?uk0pH@14tK@+DF`xck`(30$zr7#;~>ZmLrkk9E=b%c<s
z<s?!a+57x%8Uma0k9h_<!ch+l2gK2Pp{+Z$#;m}}C@lq6<-{P5why$W-xW;L?9X+p
zrJv}2W?QiCQ|52|g56N!e)$V4;tJ|-ai%rsoHVC6tDa5mp3pImZO05)ZxBGyT$U<E
zXi^hdd=qx3p=c$4`vp(Onr7e}bbP{kVw<M2vrki{C~U0TcOc)(F}eWK7+bPSp^|`6
z;Se7V-T=|0zn4A7CL=B&pI<eez^-%S|L_*u>G^&;o6HTP3h`(KX7*D?^YLgWS~~(y
zu9YnZWY@0V{t~tHwcQ_zA51tuMRWbE&d1vMUXi;IvUl=oe>wDm=hd`F@A-9*&vf*O
zOj}Z)N{wJNSmb32>r?sHikO0Xd+F*{L|chbQ<blJVJ{hdOm_I`;@l@SL~O^a`s1q&
zDa3)JplG{IMSVWnq%j>UR4LZ(`nqN`N(BBPg-J#!x5I+zAIHLZ<4dQx{1)%%zXCos
zl3)7+X>ZGDt23^7rjjpX^!bXdpf=*L^^s@!6whS)lN1*Pu8;-ng$U4*5GNUP=1))7
zwG{e}E|joWd;|je@lO<e@vXvfMY~J*<VXhnzu*?Wd-Wd4oMaw%RZ3_*l7aR%VEN~F
z#6*{agq}n(x~y^c$4Vq0O#8R;1NVopI*mM!rk8;#6nt&f%*W^A>ALnJOuMy@!lYbd
z58W4TL8AS@_Y=ZOrA2n${=QRM8udsH3Y!<M_&$R?leke-jlm;tx-fJ<dZcDh9O3X4
zh7?oai7d^_u<2Ljh3CJX*1|Z6H#gGJ;A)LKB-7g87p^HP&@l_~kp768g$eUh)H=QP
z`xfUknj=I*6o;O<;OWS1dVa_!Dh>SPp5&G*FSc=EjSxP}c7(H<Ok-?YE|(tD6_PrZ
zdD8vHuiCE4V~xR`gLcL1=zg5YbYEsJ-OH^*S^@6|_DnP4*8+3kr^D=Pw2D%?7ZDvR
zfS&{LIl>#g4{rz+NQ2TogpD68D;$Ut<Fs%Osy3u(@3BlewchSJzj|-3XuYqTF0VZF
zg8jw?*(|Yrs`M-5EEEw_pVq+0;QTco>T3gRf-E_f7&R8etYLMpk~||Tk>h}h&&61E
z&tlzPVvUf!D%*!f>D`)DJk+|;2JI+y8e()SDFgS#pUI@0J4T|9k~KB5;uwiItf{s=
zp*?7f;<pKx&lcaz+9_yftT~!D+|+1s=*zq{Q5>@@F2N@|sg^}$Cp?V`yGq(zi}_LR
zVP?XHRrfRl<r7(on;4~x_s0$&N|G4|#60w*LL@ETAbp@$*;~WZ^e}}XGrG#c<K966
zShAN<)WO$GgOOF8gvjsAzurD$4DWj!K10EQCd&m;Mv5?6qPV8HW8IY|zLmD8_=^98
z&!xj9#7M8Kzw<{8Pm4M&m#4$Wx{2J_VFu)ug3DfTFMt#)bwZu-jydM6oGVj(2jNYG
zFN%Mo_=q?A{Owkh*V<uWyXC}L`mMLOfB9X?WnWTYZEDaOg=J@~yve+tPls4`$xC2s
z%B0v`3RNnlvO50}?ruf7zU|F2z>m=4d1{%)XsTJ4i#?mwj8{ToZJDx`Ey7|pO?G}u
zZ<MC`;_Nq5yxA2eykk1#e5B75T&!|gZ-61irkk27gXcMZXx*II%qdrecw?U@O1D{6
z=I^PpZn?(|$tfBqgBWPixjZm2Cd~8*^iYUthQ+B~Ycx*Niyjr;ikE3jRVUGXtPVyx
zRDU8{ym&T-)l;tiwq(#F{s+#n<U~GlLIkn4JL74IvF~0wiS4d?j_&Bj0Vvvu`UQo3
zG<%U#V-i*N{S?bniUj<a(q%g<x_*R`sYQJ=(9-Q&E0$lr)Es{EZNrl^$-S*VIQ9tK
zNiegMsxO>9u&*&j&BmlnIC9m<RD&YFFmfk+vvjrcoP<X8R6bDV*{+)SBh<}z0;Gfk
zT5)%4tmJ||Ar8@h)7JN{sh!nA&L!wrKI;MJMHJeCKaqR^MuH-%E<)?q>q?f>fOoLZ
z3twYG{1tw<>*-a#+NX${Jv`95-lKfFV0Kdti}Re$hfcjG7lwg}3hqCznO1)UXPYyA
zAgDcvQ~a(;o@!^SJ<kT<?a1CaBazUKs^)v|F{eRTzQvZ;@{Cu)q)`0URh)N6QLR}7
zkL|s>EI7v8fro&Zv5X;c5nYe3R{aKyST2Ky9l4p3Bh#Nx{I$3}^`M8C=hhW}K@w{}
zU`yWs@p;n3td(zb5lYOrzKB#<4WYfuDz_!7>XdKf&TQ^b;&;QbS_c9W+tMUVHa{8>
zrTbF-rsx$fu^ZwoJs5{S_6y4XtcCEYw@=xu8`KoC#1+m}D=whJB8i;+opp+2KBY7I
z3h};gdky`nM>5)T-9ERH6RM!Y;_P2)&utWcGxjgQ00+s1Z@9nvn(0`5>w{geWnDRa
z=+>*NR^!gDtvsDGO+#jX*JV4s)pZ)r?qN~*sxdUGT8{kXO(AkNp3roNgG7~J1ybJX
zqH%AY1qF@*+rY#2nt^V4tPjrgvXWx;DdkaAfEtC*c-<84Ym6ENenec2_Rai2ySRXz
zdGVQJ>};=x;m?q)?bY18mza#N1p&-zi3QK2y-g^<=TMG2#v(lW6)8#y1V^mfl*$rQ
zhJf|aXC*o-i<`tKlA%=`wLSHeg8NwS3{vc_8|c&Gf)e~MW((RFs-q8gbr}0@N9Mxm
zOY$h2q<lPTmLgUkBOtcqx;L#AXbd7=uZKEzJ)c`teUcOSKAd?*^3e!=ku=<Xhq~=D
zbj;hNKAq%z^r}0XiivkdEbV&JaN~4ld+3n$!THPS?J{GK<Ab<iA=qHVA9nC!OHg)s
zSQ1Z5)ZyDsU1WY+J?o{<X@6S+{^?kc)slmCFGYF6kwf1E$==K}W1^S>tzE)mL~<b(
ztn8Z>;Jkj}90KxWXZ}~ZOch5No}x}w>OJvBs8WBy3z>sDQ$akOp>~;8`5(R&1gw|B
z2WRwngEiuovxW00#?l-HE=pFm=PVr!0cqH<dFhhF#X#$pf`u+r<oa35<l6DA2yi`>
z^a-1YPe6&D=~hF|`dz_nD6gvQK87km9O}CjKkGWx<9(+OO2cyZRk7Gn+xqfF4c;*x
z>hIT_jxoq6K1-7ja^Dhg83slwI1OO8@CBhI{an;qaLMijiu|A@WLxt-xo}6{c&RsF
z?g{p;b8X-~LDae2sfervpQ%}myxHHOdQvT>o9!zbPDHiBr`*v&yqu8Jt0U$;t;HXD
zmVp>2`4oHz-a;M{u6sINmqzN&Cq-U0AE<G4qZBdrP6_k+HBIWk($f~Z9F&yqCsPd)
zQcTB-^#V!?(n<>axms`O>G>W?<fnM$g?HZJ#*cQ-He9x*q&dks-{@@>4%v9mWV+9!
z7&7&qC=OLT2n!Z~9hWK8J9w98>ueRU3T9yuj56BuE48)m{$lGY1fu@32%kZVt}Jap
z?UQmh$f#c`N0{{9w$v6?`_TDp(Wl0x4`V3ERUqmPw}v7HKqt0Xx^td|Lfw*8q)awm
z#X+j3`t&=68zuSv*o=PQKy#L}#A)R#owjX*){b4L!@b*&Lv%(jqNa1~vxUhOw)}@Z
zmj+b~zM9zRBRdvn2j5$cxBB<p#74)2e$;w=#uZB?CDoQAvTa>`|8lQ7^p5S<Y5iMR
zhNmug<v|e4?0ZOG#To?wAcR0=WHgmzWd3;s0RG4SJKqE`#jldjyG?bvX`e}n5IXm1
z8rM<3SY_5@3kn_Ax1Q=;8|Snhk1uEv!l*(<l^`m|<{17AY{CdyMvcf%O3I5)zG^QR
zrR@p+<@crKvdJ42Efzy(s0v+jijD4BT;$x3vf0xpKo?0s0C!}@8`{?Nz|E`A;c?Y4
zt(<k=gORb~H8qqg*;U~pa-w6D<L^a<u0NTuYZ41^-xI`<yGgAoR1I>pJ97Zpj=sky
zC=C&WM|7K`4pMwq4pSCYd#<G$dlFhPh_T5&Y*X0t@^Xz6Yok7eZw87@_m+V^J_L=F
zKUpg<l(~|Og;BeX>huUl_<_FJ!X>4%uO{GyuHsv&I~+flEm0BUVu2afmS4?&9A2&!
zvGuh5?d@zs7E{0@Y18=pgAG#pJ$>uXX<7xzM*%12#pyM%WfxR5iS0xh;l%evn#_Ph
zt1~rWvm>G{V^?q6{a<GYeVPV?f*qYSTrUgu+~Z)VK=0d2)$(>KpH`Q0pKd89_)!fH
zDEvr<p_(cX>}bycvT!tqaCq9o74S<`!qW)^wuQJ+n?tOi4q~*2E$y__Pzy0y1Aa9w
zH76N}HB|A93q<FQx-R&QEm+usRze&@)Ds8?u!p#Ts6FlN99)5(Vzhs7f$-<wVoqA>
zKPGOrVzh>8n$$9mE)Z%y4n7Vpb~#U|2M?_{2DPY*g(Xm1R{kFl@Ha79Yd1G1ASWjb
z2IGM7ayYtJadHa_3v+VuaPsi5!!6idy&T*?p6m{;biX0~!jOfyf?c3aZcs-D>fe|k
zb4PbKF<M%<p8B8h**mGJ{R`f~^&c$2`QY>fIdO7xaB<q(bN=1K)lJR=4)TwH{*NB6
zy6}@NoZ1jqM|T%6M9u@^;70d%2n+DP{GHrg?Ea)<0p^6*LG0nCuJBg5|D#C-B{j`|
zdHklp3Tp54#|uvOe^|OfE&ol{f5i4%^Cz9Z2LgBh7w&&p|1<YL#&9b&HK42`*!_2S
zO0r_KzuN~|ID(-Tz(0>X+`K{pLIMzWJ`k9noe#nfW*6q;;%4VD=L7KySqeb7c?JFk
zrR3o1266yHenY{*IiPSHE^`nV!pqIW4z{r5h2scWvI|3mA?)T59zhFp0kE*8IrrZn
zG+dzYss!2nJ*wYO7H}v*ejx!qK_Py2UcukdaB)M}L420{><|lKOE3h?Cn&&c`3K4Z
z43u|tu?NAs6KW5#f^a%HSp8A_CLAcGsU$|r!@>1$iKZRM%@Xba9|KSa3rCpizg4<W
zdx(x3=r^C-0s`EETwHv-{6f4!+yeanHqwW<xWa4kH!3$52QSYb&F_u@!qb6M3;JED
zaDYE@cs4*87YNAB(M8wM(N2u^cTm*7J^!UvgAXVRkQ+!A<OYF*a`Es0xrBf`Lb}|7
zKpsILH$N*ET=F-2M+>N>*Z-IG@8Lr&`d6nbLS5nQd;JmpHKueR&VRlA^=b$GGnlBU
z{|pNt2>e$Ht{@MH#h*CgSbwR&)*uHf2z>tdN5TG64*fqAgC$5nfKQlLfE~icW5LcR
zASB2R666B03v%)CaG68Q`7F5pBJW@5u8x*&FpvvG$_maSoGW;N{^5$6`5#@y@}JSb
ztRcVq0Zth^mk|5kD5K^4N3xv1XN-SlE6Vx*;zRV0!QZABxZhtg_|yfT2|52Y75;-S
zc&z_7uYdHz|IH?-ssGo=f5q?r==vXB{}luOmGS?o>wk3pR}B1D#{a9X|KI4s`1fWC
z;s9R(!QfjZ*heZ`_%;j0Ttz_^zzt9Xc=2W2OT#7TPKrjZ001Vz?;8P-`HloGM0HbA
zlSAD=dyYenLzr)N2p5sM$r-xIINJYSlLP)N6d@MWFsPd~_3wqEK_E6U0Du&vBrByW
zG-#isqR0v(>GtP6eQ!YzbWU8R8+*ZzM*G<b<fFSw$NXCPnP8P;Bhf(-J4gL$kN#GV
znxGsr;i4`sM(cP=(?>1YV+4HqH@nJ1YK%BZs*Dq%Q$M9gc5VfhR^FXbpm*@8Y1A09
z^?$;We362$qN0*ts{0~wa6Qw)NPeQO9qa4tD-)BSdV2L0%ouNfnJqMwx3!5gA&82K
zmiV<VAx6mOSN}S`(&k9RtgowE_Gm$1CW@xVM-Rb`tg5PVgn4-QAu1M6l+Enc7vQ9|
zwY5><M}Eu7$)V&^qr;CJou41LxdA59uXwb0`S`3I9mS`nrXGT8W@q{>w9l`7rjv-w
zY;0^8DdXBnNlB&95G1)s3hL`qK7R&ceFaGB>GkyVG=2VjV`FE>wj+cM;E`;8y>WAM
zQ(INV5rRA05L>k?>WxAjB01x3w;->l2NV%eDxRnvDc}hxf&wzx2GMBZA*2(0{hOy(
z_kJj-sN7gc6MP8}QaLS6LS#u6qUcA;0n6GepSC3q4i4tDK~A2Ah6W)aq1@6^beboL
z^dJ(HREV>m-`lF)1<E*7!1jCD$^88MfgeA9Q1x4!Ou#dR$M5t!T)FV%8}p!IVhA*|
zqN0L}m-qB`b#=8|kv{K9uoPy%!on+ebMw`~%uKTK>gti>H?8VI&ppDz!?UgVc4YIl
ztgNm3ptiQIJQ*=bBb(VREiD6AS69T{=32;_0OdmM$BT;#&ZMLy8)m}1)>aDRndY{(
z9zM14ZN5<Hz}VQQL7mhNjpS*A3{Rgv^=*SQ=Hcjgn2ngbdn4%A-rinQb1Vm^=Na5M
zEDYs~38zD2*5IJZ@bEAR35l7jYtr?#S3lp7t|+BHD}YeW`B)+zl5u<M{UQZpYHCWO
zNEyGu9&9vy%GO#ygdOfLE-ubt#gp;)+{VG7=ht!WF7SgUT7U(QQla*Tva%?6oGvif
zWi@AMMo}rejp6-+1HYMt1=gU><w2N#L}(~-2=0}SxZMK$$B}RJN@Q415H*Zd3bk$Q
z?JN1k#P0jIx3{~7hK4+ao-^X2ExR<EDBm6(bv!(X!=p(aT!)pF`JFx7drxs;sQ_jh
z_6Igkla&j7l@d)VD=U4UM|aC(gi6EUHH${0oLQ7XK|#S(W4JdmHa138J7?!Fkfle_
d>x?kH)Mn=K^g2WbKBNHvB{_B3DrvKz{|CvbRoVam

literal 0
HcmV?d00001

diff --git a/indra/newview/skins/default/textures/xbox/left_trigger.png b/indra/newview/skins/default/textures/xbox/left_trigger.png
new file mode 100644
index 0000000000000000000000000000000000000000..aa68944df8f41d50cbafe024c56a1a180a91e2ad
GIT binary patch
literal 1134
zcmV-!1d;oRP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV0004nX+uL$Nkc;*
zaB^>EX>4Tx04R}tkv&MmKpe$i(@Kj}6zm}4kfG{gK~%(1s#pXIrLEAagUO{ILX(Ch
z#l=x@EjakGSaoo5*44pP5ClI!9G#pLU8KbSC509-9vt`M-Mz=%J3weum}&;b0ade%
zbRsV1@+)HS6(RH?fFMRCX6nhzLKdFm>mEM7-o<#9_qjhuk5Vuh;1h{wnQmCb>%`NW
zmd<&fIKs-3LVQj<X3zzRAGt2O{KmQDu)s4TMm9Z193d7<9V~Y+D;p~D6me8hHOd!q
zE-Re3IIEQ!Yu%H-FkH}<GhC-Rgaj6mL<%Bg)UbgHEW~KlNHLM7{kVsJ(DA3pC6j9d
zj2!c*LWSh`!T;cQw`Os2!c7Xtfvy+Z{ul;=yFjyU+uz5w-8=#O&%l+|_E#Ig%qQvf
zwiZ1Cdbfd#>$WEE0hc?#z>_W+k|X(P3dJJuen#Jv2l{V;?p3$9);>-jfGl;jbORh5
z0wX2LUh{Z&sI#|!&$Rmc0Z1NlmS3U&_5c6?24YJ`L;wH)0002_L%V+f000SaNLh0L
z01FcU01FcV0GgZ_00007bV*G`2j&P62PzaCUO=$`000?uMObu0Z*6U5Zgc=ca%Ew3
zWn>_CX>@2HM@dakSAh-}0006-Nkl<ZILmcXu}<7T5Pdt|-NW`BCs1VWq$`j>N=4`p
zU6hhEG)PE%!FAC!@CW%1sM3%wP((s>M&};B;E04k7kma`uXiU+ya5HCw3=dO-n@A`
zVmh6Ih#-W3wH8uJ7-OKdMjXdDI5<eMEc-A&Kc62R9c2Jm2m$9Df*=6y@9&Z4`HMFk
z4zabh^?q$_?WdHoT3TA-cDv0R8yjDl+1JfxGl)FT(Le}+D2lMXz5Q`K9{*TbS&0XO
z0kqaAiUL`d{Z7;L-NM3xZB$6-+=~_V_xHOO7Z=~w*Vp4-ujk2wAb@kOtF@Lw2<x1K
zloAvK0RX@`2c;C!G#w>L(tF<AfQZm;xBdQARe_8#enJ#QxVgFcG#Cu<8k}=zOt0%2
zb8~Z`R;vXe1nRm*S(aetRju`_1Vn@+Nxa&JhX>Hp(-W8(N-6v$V<E(w3a+oOz5Gt6
z^G|^>231v|u4}vnB0|64hqc!K3>jm<%#cz-YYi#on*`1|+}_@Th+vFC7>1BiN-#65
zwEzHXEjBkdvAn#DlamvSMk6dPF5>L$3~8F8+wJ;+Wm$rnMk4YtiXwD69RR@L;US8m
z!0G8J0O0ZQ5zP@Pr9e$1GyCYALl}k#!|=Z~lu}@3PeQL4#pCf9N-6B_?xHM9TwPtk
zS_@__;yAX?>tCGm-Q6Af{r>U!`T3X2%S&IBrfHM=-fFe##&{xvn9XM1VJRghlL-xn
z!_UT;RjoCus)AAqLWo~`dwa(_J3DoAxyBg$0RbK{oGeiuumAu607*qoM6N<$f}j-n
ArT_o{

literal 0
HcmV?d00001

diff --git a/indra/newview/skins/default/textures/xbox/none.png b/indra/newview/skins/default/textures/xbox/none.png
new file mode 100644
index 0000000000000000000000000000000000000000..4b6ec1c74c0ef84c267f5043ca5284ab2a82a6b9
GIT binary patch
literal 1301
zcmV+w1?u{VP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV0004nX+uL$Nkc;*
zaB^>EX>4Tx04R}tkv&MmKpe$i(@Kj}6zm}4kfG{gK~%(1s#pXIrLEAagUO{ILX(Ch
z#l=x@EjakGSaoo5*44pP5ClI!9G#pLU8KbSC509-9vt`M-Mz=%J3weum}&;b0ade%
zbRsV1@+)HS6(RH?fFMRCX6nhzLKdFm>mEM7-o<#9_qjhuk5Vuh;1h{wnQmCb>%`NW
zmd<&fIKs-3LVQj<X3zzRAGt2O{KmQDu)s4TMm9Z193d7<9V~Y+D;p~D6me8hHOd!q
zE-Re3IIEQ!Yu%H-FkH}<GhC-Rgaj6mL<%Bg)UbgHEW~KlNHLM7{kVsJ(DA3pC6j9d
zj2!c*LWSh`!T;cQw`Os2!c7Xtfvy+Z{ul;=yFjyU+uz5w-8=#O&%l+|_E#Ig%qQvf
zwiZ1Cdbfd#>$WEE0hc?#z>_W+k|X(P3dJJuen#Jv2l{V;?p3$9);>-jfGl;jbORh5
z0wX2LUh{Z&sI#|!&$Rmc0Z1NlmS3U&_5c6?24YJ`L;wH)0002_L%V+f000SaNLh0L
z01FcU01FcV0GgZ_00007bV*G`2j&P70t^8RDuVC;000?uMObu0Z*6U5Zgc=ca%Ew3
zWn>_CX>@2HM@dakSAh-}0008)Nkl<ZILlp=%}Zlf7{-6+<mO`xIWfJO5GldV5KX78
zmfErPqjY6;t*c^JLYe*x;-BHV3z5=|*o7kq6LFR3fOL~OXsS3>LyHaSy*HVpCik2!
zlFkf$w(tA!KD<93;kqtbYlIL8A&A9dEG;c@baaH)ns7Lbl#;>0LDtsRa2y9IB|yjL
zx-I}KD=Sp1RSpjixwyDsXlRJu-d+G4$Km++nBn1JMn^|kTwG*oY6<{LYt8!lI#*X$
z?CtIG_@l=>8UKP%(BiEGBcF`$>f#moe4cu}j^}yI&COw1mc{=5KE+~@iHQl)4?iOi
ziQ_l^#?-6$60GohMEd#}N@P&6IE6w1V+^yivq-HqrBaD(HcKj%!aPtg{yl-upJJrJ
zG7{^_Q^fcW=tv)_{v^3vj<d5fuCK2NoS&alEEbuZoJ2~Ad0j<5NFn;O;0s7RLJoY2
zsr(A(&oRQFl%h~5aCv!2pr@w?+qOxk(*Q`ozdgem7(>{D1QH*h+plRK{)o}{ogFDL
z#^Aaxvejy#lzQ_n1Bh0Q*2`xQ>VaSc|K&4i*Sgb=lu{j}&1MrJ1pk)|Mi8b$K!l?2
zSi4+=pxJC9ZQG_+tG$yzKsZ4#H;caa;2#e;{0)JS0^S~~)oLV@Nn|V*<K*N7-}k%3
z!TR`HbTEo8Kd1eBo`4lWj(msc=FnPGE|;-wo50rA7WsT0-}i~f<H&(82|W55-?_s4
z_A|JDAo@N;^gYBhY8dyDN~J=(-DYEB11p_QlgVV*-Q7hgg`I3*O243Q%NQX5LA&%5
zfkX~*U&D27IXF0AW@d(XJdSW22c;DA^YiTN>@YDk&HDpsq!eAKo!CZ0<<Gx(@uJ9A
z)6;BkZ{v9$!t*?gF~njq78VvLl}g;*-I2{^iAJLU)a!LlPfv+NB8-iVvAMa)e?D<@
zb3-T;LTimNhH|;g^71l{<Ird{&{`9XMo~(!y1Ggxlfn1>H}(G)e!xc`?0M2%00000
LNkvXXu0mjfSZ-Q}

literal 0
HcmV?d00001

diff --git a/indra/newview/skins/default/textures/xbox/right_button.png b/indra/newview/skins/default/textures/xbox/right_button.png
new file mode 100644
index 0000000000000000000000000000000000000000..094349661cb1e76d8c2e3363b3a0468c5aa4d0d2
GIT binary patch
literal 1139
zcmV-(1dRKMP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV0004nX+uL$Nkc;*
zaB^>EX>4Tx04R}tkv&MmKpe$i(@Kj}6zm}4kfG{gK~%(1s#pXIrLEAagUO{ILX(Ch
z#l=x@EjakGSaoo5*44pP5ClI!9G#pLU8KbSC509-9vt`M-Mz=%J3weum}&;b0ade%
zbRsV1@+)HS6(RH?fFMRCX6nhzLKdFm>mEM7-o<#9_qjhuk5Vuh;1h{wnQmCb>%`NW
zmd<&fIKs-3LVQj<X3zzRAGt2O{KmQDu)s4TMm9Z193d7<9V~Y+D;p~D6me8hHOd!q
zE-Re3IIEQ!Yu%H-FkH}<GhC-Rgaj6mL<%Bg)UbgHEW~KlNHLM7{kVsJ(DA3pC6j9d
zj2!c*LWSh`!T;cQw`Os2!c7Xtfvy+Z{ul;=yFjyU+uz5w-8=#O&%l+|_E#Ig%qQvf
zwiZ1Cdbfd#>$WEE0hc?#z>_W+k|X(P3dJJuen#Jv2l{V;?p3$9);>-jfGl;jbORh5
z0wX2LUh{Z&sI#|!&$Rmc0Z1NlmS3U&_5c6?24YJ`L;wH)0002_L%V+f000SaNLh0L
z01FcU01FcV0GgZ_00007bV*G`2j&P62Pz|^<K?~p000?uMObu0Z*6U5Zgc=ca%Ew3
zWn>_CX>@2HM@dakSAh-}0006?Nkl<ZILm#Lze^lJ7>1vjoxQzX@3=$JDA<S~F^CYw
zD{TA=VkiCqR)I8W(go~O*=iS3rnFORQdt}}R|pbP<OG$4+q*T~{<xV*wHwb%@>Ns3
z&pR(4?<WR>0a|Mu$H7_)fDi($HA*S+Jje4qk|e?NJn}q8DTUS=Aq1k|?<0iZe<Oq_
z&7Y4n#vr9Eh0h@=Wtp(hT5C(Ks#GcrheH~T21=<h_d=MaX&K*jT>$$1K91ucthH=!
zZ@<02zke^K44x(^ek}Ge8jWxq2Pvg(G#Z~zPEJ0Gy}i9xr>Cc#ot+)=Ji))l7(=_=
zW@TmNjp}y0FK1?E#Ky)3`}_Oc-rjO`b;a)PE>RS5e0+>CX2N88dKzQQ3t6dD09ajJ
z<>uyw<>h7O=jTb1goT9#eBYmdt+m|U-BGL6zRN7j%8jnCuVaj1G#X*8CCf6Z)#`*n
z7>3mA^&dw^N8hCDx>#$8qKLDzGr};W+wJ1}K53c~$MG2a`1r`><)v9$Tl=uMxTsaV
zUhhUx#QFI-N+~WbE&w<@JRAelG$jl}I-QQ*+S+>8YPG&<t>OCmT5N7^ewv$``{nz-
z34*``L12ov@B60NY-USKOFvt!)|Z2WgV)wt27>`{93y(Y9?fQxBuU&jj-?O+$8kv0
zlv=Guuh(OCcGf;TJY>~sm8q#IwAOzb8AVZfNKZTev`EGn9LE_4i>enL{~KID#Z@Y$
zChkF|X^QK*rF#J@rO2`j&+`}#hXg@Dk|emUOP=RtvfmO-Kzv*oX<z^V002ovPDHLk
FV1iwt1V;b>

literal 0
HcmV?d00001

diff --git a/indra/newview/skins/default/textures/xbox/right_thumb.png b/indra/newview/skins/default/textures/xbox/right_thumb.png
new file mode 100644
index 0000000000000000000000000000000000000000..d254f7847927720eef28aeb74c0f510f1f711711
GIT binary patch
literal 1374
zcmV-k1)=(hP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV0004nX+uL$Nkc;*
zaB^>EX>4Tx04R}tkv&MmKpe$i(@Kj}6zm}4kfG{gK~%(1s#pXIrLEAagUO{ILX(Ch
z#l=x@EjakGSaoo5*44pP5ClI!9G#pLU8KbSC509-9vt`M-Mz=%J3weum}&;b0ade%
zbRsV1@+)HS6(RH?fFMRCX6nhzLKdFm>mEM7-o<#9_qjhuk5Vuh;1h{wnQmCb>%`NW
zmd<&fIKs-3LVQj<X3zzRAGt2O{KmQDu)s4TMm9Z193d7<9V~Y+D;p~D6me8hHOd!q
zE-Re3IIEQ!Yu%H-FkH}<GhC-Rgaj6mL<%Bg)UbgHEW~KlNHLM7{kVsJ(DA3pC6j9d
zj2!c*LWSh`!T;cQw`Os2!c7Xtfvy+Z{ul;=yFjyU+uz5w-8=#O&%l+|_E#Ig%qQvf
zwiZ1Cdbfd#>$WEE0hc?#z>_W+k|X(P3dJJuen#Jv2l{V;?p3$9);>-jfGl;jbORh5
z0wX2LUh{Z&sI#|!&$Rmc0Z1NlmS3U&_5c6?24YJ`L;wH)0002_L%V+f000SaNLh0L
z01FcU01FcV0GgZ_00007bV*G`2j&P62Ph`yzjLzy000?uMObu0Z*6U5Zgc=ca%Ew3
zWn>_CX>@2HM@dakSAh-}0009uNkl<ZILmF5Pe@}|7{$-M_q~^A%!`S-F#bg+(P)H$
zAcMA}qqP#OqSB4)?mBcMw%rH=g1VY6#6_2bi)Pi03u!5_2*!Vi0gJ>CA|f`f3?aFR
zc_w-9-EJn+3O(E3=A83=hvafOFvd`+R8Ut}hgdAeR##WYN~O|ghGDdurU|FhnP!X~
zZ)|KF3=9mIrfEV^6qHIOkV2sVAp|r{!`Rr^H#avoYn4i+t*fgGHk%CqP%f8odwUC;
z&34=0-~TQWiTuJj2V)F`a}G_@FgiN=^Y!)h+h8yVRaG%HHHC?Z32@G_xw(m_rzhyT
zj`Q<#_<X*fj*gCg<eY;7!0hbo*U4n^?fCdOBuN4QjEs!n`1lw?2+YmR0RUuK#^mHA
zlF8%`p-|{cAq42z*%|Kc?q&xE2O&ukK4u0X1k=;g=<e=DB9VZmX)sL_k|ZGz2q2ry
zE=rOFy1TmzS(a5wDHvm*l%m$l&dv@1;PLShg+c+0F-VdGN+}G(5an_ibZu=7PN(y?
ztE(%RrU|#(4FEVjJw-eoM>rgY+wBG+1TL2g)oQio=y$u_4wBF35sgOK%F4>0g+k#?
zFc^fUX%IrdvMc}qr4)n^aLy5n#n9N;_{Y}P)>pl~y%rHdU}k1!DH@Hw4+H{IB9TCI
zb2Hl7+Mp;30H9K-Ae~Mlo6W-S_ah#USBHj%zFk~g{6H2K7GCY`?Hz?eA*ohWE|)_p
zmHOmDmSuRoUbtK?P)d={=MjlSs`K;nubIte`@XZY^K*~K^U1E=ZilYx@OV6EXlQ_<
zC}?eM1tA0gpsFe;r7V-lWF<<eTm%0Vr4$bj53no?4u=E(C&Ms6TUuJe7Z(>su~>Wt
zJ32aGx7(p<8rs|2pE1rk;_<lQ_xpcksZ=U`aB!gS@9%%%a5!jveLZSF;dZ;>a=E}5
z0{~R3Rix8t93CDT!^6YhEiEnW63#g;FE6pazWzFyOs?MF-%onIUNki|J-b3ClR+w#
zGJAS@_WSz!-i5>AQz68^Yb1m~RaGo6FTXfBIeBB6=1X1IogbIV6-D{W=krCjx3~W;
g7K^Yf3zSm)11?%`o6$zvs{jB107*qoM6N<$g8kiU;{X5v

literal 0
HcmV?d00001

diff --git a/indra/newview/skins/default/textures/xbox/right_thumb_press.png b/indra/newview/skins/default/textures/xbox/right_thumb_press.png
new file mode 100644
index 0000000000000000000000000000000000000000..fbeba206dc0cf21ed11c8712ada9a57ed02f89a7
GIT binary patch
literal 1493
zcmV;`1uFW9P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV0004nX+uL$Nkc;*
zaB^>EX>4Tx04R}tkv&MmKpe$i(@Kj}6zm}4kfG{gK~%(1s#pXIrLEAagUO{ILX(Ch
z#l=x@EjakGSaoo5*44pP5ClI!9G#pLU8KbSC509-9vt`M-Mz=%J3weum}&;b0ade%
zbRsV1@+)HS6(RH?fFMRCX6nhzLKdFm>mEM7-o<#9_qjhuk5Vuh;1h{wnQmCb>%`NW
zmd<&fIKs-3LVQj<X3zzRAGt2O{KmQDu)s4TMm9Z193d7<9V~Y+D;p~D6me8hHOd!q
zE-Re3IIEQ!Yu%H-FkH}<GhC-Rgaj6mL<%Bg)UbgHEW~KlNHLM7{kVsJ(DA3pC6j9d
zj2!c*LWSh`!T;cQw`Os2!c7Xtfvy+Z{ul;=yFjyU+uz5w-8=#O&%l+|_E#Ig%qQvf
zwiZ1Cdbfd#>$WEE0hc?#z>_W+k|X(P3dJJuen#Jv2l{V;?p3$9);>-jfGl;jbORh5
z0wX2LUh{Z&sI#|!&$Rmc0Z1NlmS3U&_5c6?24YJ`L;wH)0002_L%V+f000SaNLh0L
z01FcU01FcV0GgZ_00007bV*G`2j&P62PhM;47ZQ~000?uMObu0Z*6U5Zgc=ca%Ew3
zWn>_CX>@2HM@dakSAh-}000B5Nkl<ZILkedT}X0w0Ed5n&(YV?6txd)Y0*t(4WS^G
zR$~kt6-7(vVi!R-`4TOH1*?l77H&jQ%V-y^Mi5&t*lSo5y6A%i*=jL%F}0{6I{Fx$
z?EFp3W5=_LvG?w|dw3oU4GmQ!5(&a_9M;#@v9q%yqm&|%NFW}MBbiKs<2XD&Kf~>I
zD`K%2xx2eVDwQIGgM;Nvd3kx+%F4=DJkM|U^z=vr0|Vb)UtjNsLZMfb(sXTYEoNqB
zayK?MR7XcgU%Onct%ZdJ_2lH_($mw^FGP|gtgf#5G#br2o12?mZEbBHg+fuXwzjrw
zGMR#uQh7KW&KVmU8>E!}zPGnG-qF$V)6LDzU;X|4-7=o%;q&?CY&Kh+%jG)W+}uo?
z&E^I{5I(1rE&*67DJfYnnM_qapYN5+<@&X*uI^p0*ZT#f6eO8UA~!b|KA-PEsZ=(N
zjEo?aO2KF}f?*f{fGCQ%y1IhFV8GPW6yovtzSHUaAdyIbO{G%U-Q8uz$H!BYQdq54
z5JJ%1-HqnvW+anI%*@Q7u&@xKD59^g4_dAEAE(oaY&Hv-R;$JA?Cd9ZcXtk(%?42v
z!Llr@RxA8|KX{%;YilbQhJhqWXliQ0?d@%k!{PXtWm(AFZZ~+IZ>_Gb1|bBJBtflK
zgAjtQt}awoR^s&Z6e^YKKch?ri^YO?Jl-Y<0%Q{t6Ci|WBuRo?E(gOf;CUXBB*E+T
z;^pN9a=9El&x2)Iuq=ygHj8vRt&GKDU;=?a!^z3Xmy}XjSy>rWDiuUggdhkA27|b`
zxPT-{xWB(gUS1y3=`;d?0631TzPh^dlKT33k5Z}p6aX$SFVWD@0G&?vHV434<~R<=
z$H%Cus)8U005B!XWHRLc>t3%Hgb-|RZzB{6Argro5{V!f48rgCL#b54@At#uZ~y=@
znGD#{($epbj*eb0FE6tSg#!8c`Pkpz$Kl~29v&XRFbuR>EgBmeF+Dwvf`S5cc6P$!
z@w_xPHvYhzpP&CNm&@PR>-81G!^5!K?I<iP#Qgj`)M_<2j>Eyh0qk}=Zf<Vi@p#bE
z(gK6Q@MC*>`!}Swx3`E8@+K0A%*A4{*A|QA!?Uw9==FN!<>f(=Bs@Mog5x;U)YKpx
z4)2&urti#V^JhgxMQto0#B4MgKU!Q|d<=y`Z|3Ia-qY!HRhdl28jVIZ48tHNCx;pg
vhCehK&7WIaTfY?-7mK5#qd!NZ(TaZo>=C`OdrJIj00000NkvXXu0mjfwd1aw

literal 0
HcmV?d00001

diff --git a/indra/newview/skins/default/textures/xbox/right_thumb_x.png b/indra/newview/skins/default/textures/xbox/right_thumb_x.png
new file mode 100644
index 0000000000000000000000000000000000000000..e5c1ce2c975a40025053bc53727816c333d62ce9
GIT binary patch
literal 13509
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
Z`Fu`IS0YGs`e|SR6lK+9Dy7~8{vY_#GDrXb

literal 0
HcmV?d00001

diff --git a/indra/newview/skins/default/textures/xbox/right_thumb_y.png b/indra/newview/skins/default/textures/xbox/right_thumb_y.png
new file mode 100644
index 0000000000000000000000000000000000000000..9cfdebd85dba9257e1db97c76b16f59c2876fdab
GIT binary patch
literal 13166
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

literal 0
HcmV?d00001

diff --git a/indra/newview/skins/default/textures/xbox/right_trigger.png b/indra/newview/skins/default/textures/xbox/right_trigger.png
new file mode 100644
index 0000000000000000000000000000000000000000..0afa104f6e09fc736ae82259c64fd56f40c6e575
GIT binary patch
literal 1228
zcmV;-1T*`IP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV0004nX+uL$Nkc;*
zaB^>EX>4Tx04R}tkv&MmKpe$i(@Kj}6zm}4kfG{gK~%(1s#pXIrLEAagUO{ILX(Ch
z#l=x@EjakGSaoo5*44pP5ClI!9G#pLU8KbSC509-9vt`M-Mz=%J3weum}&;b0ade%
zbRsV1@+)HS6(RH?fFMRCX6nhzLKdFm>mEM7-o<#9_qjhuk5Vuh;1h{wnQmCb>%`NW
zmd<&fIKs-3LVQj<X3zzRAGt2O{KmQDu)s4TMm9Z193d7<9V~Y+D;p~D6me8hHOd!q
zE-Re3IIEQ!Yu%H-FkH}<GhC-Rgaj6mL<%Bg)UbgHEW~KlNHLM7{kVsJ(DA3pC6j9d
zj2!c*LWSh`!T;cQw`Os2!c7Xtfvy+Z{ul;=yFjyU+uz5w-8=#O&%l+|_E#Ig%qQvf
zwiZ1Cdbfd#>$WEE0hc?#z>_W+k|X(P3dJJuen#Jv2l{V;?p3$9);>-jfGl;jbORh5
z0wX2LUh{Z&sI#|!&$Rmc0Z1NlmS3U&_5c6?24YJ`L;wH)0002_L%V+f000SaNLh0L
z01FcU01FcV0GgZ_00007bV*G`2j&P62PzB?GT7$;000?uMObu0Z*6U5Zgc=ca%Ew3
zWn>_CX>@2HM@dakSAh-}0007`Nkl<ZILmdC%}OI_6o#Lw`l>2b6;p~yI)oN=BT81v
zC<x{jrWfKp^elw&0%j-P!t`EnBMox{V}lz(T&SzKaG@<RNMb5g6)W}gRc6(p)6@OJ
zS)G@M_xvdRejgzOX_{i1CJzq}%F)r$=HugIso8Aa9UdNj^?e_J@pz1;X=GW3uIt2c
z48HGADhL9a&E{W@<BV&y+E~|h*=RJr?CtISc5!j>Kd<lmD8BDc$hK{>va<4Zb#?W<
z>$;?AO1s_W_V)H|V`Jm@e!u_k`T6-&3N_F3$p|kmFN{VbMF;_auInr=F0#G7ZQtG9
z{j<5b`R<$7Fbqbc5vmY^IF7L_3&(L#Rh1uAE|;lRtHtZ<>p!C?qEIOC_Vz}xSVT?J
z6x+55!w}E&kW%t9)$4VFAowspKhJPDq*N;5c^;}^7z9Cp>$;T7WxmD#QKo6)d0y%A
z@{&@iM6cJQQmLTEag6J_yuQBD>2yfb^rrw-RVPdJJdbL%%JcIx!Zb|=g8_4MbIi=l
zpzAunl9UqP_i<g9ZnsOVRzoC7La|sR2m+!gBFnO00#sGSaU8-hWOjCzUayDHb)6`R
zux%S%*U>bM-Q8W**Vk#c+oWmA+S(d7H#eM}oiQ4Xuq=x(3~^l-RZ59r7{qZ*6h-8D
z&hqjytyYVrr6o>IP6)%0<Ktr#MZqu(k|dd&QYeaoloBBXd7h&v3IGcW3p_nNO^q-f
zkC9SNf8zH|$8pd!jaIA0>FFs^6amm`wUAO`Sr&~(V+yJa27?LFbzOFLcK*J<zyDaN
zRHlsGZkKw!{^{!K>JQ)d5kin82}%$IWLZX`P+&M5(&=>6{r&w9ilQuLS%#)*<av%|
qS<eRt2cNgLwldQ+iJ}O{arh4&CR!mZnD4a!0000<MNUMnLSTYLE;eTX

literal 0
HcmV?d00001

diff --git a/indra/newview/skins/default/textures/xbox/triggers.png b/indra/newview/skins/default/textures/xbox/triggers.png
new file mode 100644
index 0000000000000000000000000000000000000000..462f2deacb5c51b63783f4da6acf35c4a8bf2684
GIT binary patch
literal 6006
zcmeHLdo)yg`yZ7{lTe}(HHM-xS2M#*hU7M*#$7_xT=p<7Gh=2L<bF#zQYeK(<W_R)
zs8pONl_HfyIl3X7*ZokG(z{3Z^?TR)t=4+q|JrNqJ$pZw&-Zyg-{<@6@16s8Hdafa
zYETFSvXn|OcL0BtB&VDVcwIO7kq&`KZwqzWC32vPVSE9P&G7?Zq7Xg+1A;kh2qd_x
z%*9vmx<ujqy-n=Ju!-FY_s(32b)CZzQiXz4>pw3sbu5pW`n0D~THen_HouQgYI5&2
zyHnNZ9q_hiiL>03XD(NATHg(Yc%GF*g`Qd`x9Minv~S+2-1}xh19j>;HvLJOubnjG
z2h7T>o_oF?Syk}<$$iuM(Kmj#T>0`C4fDB(F<E;(Vx6D=RPU2@&Jhu0or9W}`zEGX
zjt8X$8-|p7hy**EjD3xR!OP=oo1GSH$Q*v$b9;w@^|PyuD$JW{hHG|+vPV}M1$abX
zJh@zHZ%ucC%Xzhyl&TQM)ZN!v{;r0uLfg6et~6N1+q~3S%gDB^uFVr+FI?RG+b6cy
zEn!fME8pd%<Op5vp+eQR#M}dn+v+-+hPrS;_TlDwJx|j8UZtWdMsz((;iIfmrX6g#
zS!B&0Wf!!h6Glp^WiA;mm~IX+*d5q>*LS#lVSX`nv6j6-V+J<1VB7Cv>`eF-ivvp(
zwWR~D3Yzpcs){cmGOmoC)3~Xy|8(Ep77ywh6mRmc1HL0}f>w623jaZ?=wzkB)R@%6
z`b2k~l9$lR?%ayIn`0aJ@kD0qBZ4r?yMcWB#>xl39gynv*oRDJLNsHBAm~F4QOSp5
zleVTOrV8a)GNvl`50LTb7u!xs9qv1!)npo2Z_uGFrWJ0zsOE9B?q&Tli>wAaY1e16
zeYXFsCOR#YUAHY!GhW@g<VbIM?JCFakxLtFjN?~0T0bdB_30lLHerghg}2Y!(W}So
z?26ZCIQYargf^>`Zr;$|RT40XsDA9wTy}itmbT*AwV}hO2RuVHaKR_*t<*Vv_LjeM
z;YW*d={HZXbAXO`C->U-(9Pwnot}U*FmnH0&_^lX(Mrpej{6u69Vcnj9W_sFuJz0R
zc0>#_ipHZ88lPo98Lln9+ubieu<Q(6X=?(lm7j${4;G)Q%od1`>nHX^Udy7s?Ma^7
z)8A4wn$c1>`9{T;nY;W0V;Ff|!>PH%ct>gaM6CMCXmg6y-iIUW8(IoN3kYHSwFBlc
z{6@;Y?puS^G|`~xMeYu*p53EimM2qSOKNA&F0<Gs&wT(}*|?L}Q+==umi5x@c~IK^
zl74=_r|ZF*@ylgOqF6oaC%GyaN$-*u-m;&*>?qyYSlPAo?AAqV+FmaTZ1GX3S-&BB
z=FakzIGMnLnW*31U8+E2Zbw2@s9Gnxi|g;K%4aNr7kV$+omQVbp(gX%zHLjRT4RM&
zBsSo0g_$+zJyFXQmg-QiABkL0_#$-KSV7`ib=&2gx$@Eh#vVq?=MvhZ7N0<TsQhCU
zet$8%t$lT-P07e#@NoT|G`G@OjGLAH674x}%22(}pP6|#oU}VOzYj@Fco63DCPMy!
zS;U?Nf1W6|Tt9H#XmZ#<i=#yHjZ5x%B$x2U*G!*Uoqu{y<<7`^nS|~7*9TfBtP&H{
z?wlF66+X0aTQQ#P5LIOql;g=bHtOKsrv7(Xm{uMBtd1&KmUBL7#QmxbBH?032z&y1
zcH!|$oqffXf0sSY@1(A8+&?y@ZfmoJ<@=9@)j)6xYmU)rdisib=9SCZ4_(?v-@fb%
zgPIDC4hU7BZk8`N19KHmF14hs@z6iG)=DUc@9J_`>|-><hF;CEOgq2f{CIZtzev9O
zP-^er;vVKl$_?fv-h87wJF{E-e429i*m|$X`<4#XLkTlx=L0ut9V$jIoeM{{IqkH^
zY=5b`?A$68T(@CiM+-gJ=%!kDCPgsp>v`^R+paN_59tH=@v)0<Woa!R0~#as$PkEB
z9LLPej%sH1rJI61G&}qVnR0!r`i(t~H{dF!TUG=#*?CmMHudN_>&3*k?eu=s(AS3Y
zZaZ91V+bvmmNii=RY100Ce=V=UdSe%N=wU6N}st}a36j%wl|{o%5=>>S-E7W<K6Pb
zTOa9ZsiYiu(tYOf<Uz=_RZ&rx11Cb^b;qLzW-jkfsSw-eyb2$^_n^3sCNpE+Lo8aO
zIw3RBQdB5>rlU}mTA-AxoU%q_+GADTjJz6vB<YQ}96mz5tGqw)21B-4qs2PG+K8rZ
z@09#c{Mlyc0HW2W@TS{zA4<Oe{83ydM?ve*dhNq;a;x#__R;aWWojEYI8?8j99JaH
zX<uRqjy5z^MQw7T99s8YF+%LCTD0M5!Cv{nh^mp4WhcE>dUyEG&OW}7r4#jWbxm8>
zoX^7JAGGV9b-=B*ekAY%o_6$+UkGI7O#V*QB&OyT+37;YyryWxz2mBb9>RUTBfV2n
zO?EEL2K5b^Xt#plz!b48Y2WPhj?$~^!s-O2VK+?q;9D<<1HRpM(RPrSJbxse#bW@-
zV1G~n9!4g?d^*z?5WyIL7l%uRk6pP6hjCbBxC@?!rt!@HZw@6?062!)I59(gnM4-c
z#29K6OacM?0TCS*?C-}Fl7h+bd0Y~BFA<~Quz3@aFB!gzW(PCl2>=)li9@0h7Qvh#
zEZi6hGZL`aBnNZL&k*1f8SX6-@kuC@SS&`0^^rV*7Yaip5>aR@3X4U676@SoS40m+
zaD`eDh))>ifRHKR@I@RR7bd}^GkAd_G8_)-VPE3&=hJ9k;km-kEP#BVg6Vt|28l-b
z`=h@15Q;2<K#<P?{YMX>6Szr0IRHXlpnwTj1OZ%;*7p!B=2w4ypulfF9TpP>_yPW)
zsSq3$^TUu<RGQsa4+#Zc9Dn}27fALGmLd-O8(BZZCeh5N^L-$o`&Zl_tiR+wZwy+|
zXe4tUGf)y9)tn5Mj89_mm>d>q{+7vN;Bf$6AE8e-z#(u3EC4|yU>OKJ1FMhIM;j1X
zOyYM?RIX4&=Q05a6bO#wfH(jfhb0=YaR_}3(-48fGVut80Un1S7#iZSSOVP;AQ*lJ
zVJqN(RY~{zJ}L<m3xvYc@k~P;8;<~8upkthjbN||Y=j{j&17J~I}mpsip3;Z@&x{L
za5_2ubT0tK=X%X6B!rVp?Wklp7K#2QvGb#g*q{Tr1~^<6Pb~bVa^m;{jv~5*PYi*8
zF+ij77y=%P0h9k`v=a~r!CI7{V$eu^?7T)YF(fb@kXpK=QbB-uIhYN}OaRbDJb@FB
z=SPN1f`Umrzp82Af@0A{baT200721MED3E$!WueZ48SW%Uw<<ilzeB;V{zCa|DUyF
z`M``mO*(}m1ji4V7kye&jzGYtr%#W5ocYBBgUv4s5}o-e1tC2MV9mz~VtrCEz3E&p
z0PG*13-*hg^B;;qAI$;`i3~ad%SNLSU<DZ>h&UV@fnymE(JU5|fx~^Or?2Qj9$O@)
z3jk9ukVlX!ut4Xzg6V#qs*OKJBlZR)^8iwY0KvaeMu4L}CySDFj4#<5q5cmaM)L;W
zwHVOvlMHNKU?)U<ZH1rt0%QGO9-rsoe>nsU_G^%z;`bL_zv%iY27b!;S9SfO>!%p_
zDdS(&^<Se4`t4&1;DS3KG5D!;|5&Xt_?acc*luMG!9Zw`5Zs9m+d#=;KE+iCfh<v$
zoKld?>{XypRz#&)$o9*rE2?Wxdn$T^qSYdcT_Q7{zhqAincpY^ESQ)h@`gz^iZ0O#
zD<O~t5ma+iC&T9OG!x1id-Ypa$DZZ}i>arUrzzPeA8?4F*jZPb>1rVI6yPz5X=bV$
zO_fNZk?yJ?O^Rt8@=+d6MLkZ4O|q(|*^VnVhN{(F5mz`irWZVaJ^5@pJi;V+!QAb4
z??QJUd)4_i%$S{7R99QOgUjVY>+0$*6&9}NMMi#91h@9={#P?IGq(0Co|?lOuD?X1
zRzP!;ZuIET9tLAi^rdQ7fyeX7$;k@0X*o!`b)i8KXRe9;M`roZVPN&4-WTKJmCKTD
zWas5+lGT#0O&UGEknC0#WI`mqjo|UdGHNbdP{qslx*O+qrrz#LI|7rFi-D;@<3}y*
z7eOegaU#-E+QW9YvNz!X0GPw#!d5KG!;wf`gw(NF!!29P_Uy@3R@kp~PR|76>>MB#
z>+JFLd^gq8(^FPHq%pmGkyP08u_lMpE4VzK*T#XczL42TJL?C@@!K?UYRN0pm98z;
z^jNxf?b^%7_T|WS(W(MVii?Xkd;J!DfzW-oKJe*BV;J@(noLgKu_5;N-!+^zsZ32z
zpK>efdGP|0ugl<a6_k~gEB)8x3}|LFzZ@Ktd*q{%?f`XmUUtA70!g6P2dEE^jv8|m
z6cw+Z(_>**`*FF~0@VHd{GyZ=+#y;iEwWo7eK23tz9_1p!8AK3=K`jcs9TtxRkWCz
zT3J~cb?cUu`nq+o7@5{fy_b;}^_IB1yL%I|Adu#B^{Zm@bzwIc;NQ8PAC*#W{nb@b
zQE`N#E${4{rK6+sDmprv5D^#{@3iUl(e|N0H)O{1kQ@VeGj?}pyfzgUmyJRqxwbT#
ubZKenA907P$7ah+7FgJ~Za#YF&7SEgsqBf<N%mm5LZ}ut=H=V=#{3(1(_m@<

literal 0
HcmV?d00001

diff --git a/indra/newview/skins/default/xui/en/floater_joystick.xml b/indra/newview/skins/default/xui/en/floater_joystick.xml
index a84fe28cf79..05f0fbbcae5 100644
--- a/indra/newview/skins/default/xui/en/floater_joystick.xml
+++ b/indra/newview/skins/default/xui/en/floater_joystick.xml
@@ -1,12 +1,12 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
  legacy_header_height="18"
- height="500"
+ height="700"
  layout="topleft"
  name="Joystick"
  help_topic="Viewerhelp:Joystick_Configuration"
  title="JOYSTICK CONFIGURATION"
- width="569">
+ width="565">
     <floater.string
      name="JoystickDisabled">
         None
@@ -175,7 +175,7 @@
      bottom="134"
      height="10"     
      control_name="JoystickAvatarEnabled"
-     halign="center"
+     halign="left"
      label="Avatar"
      layout="topleft"
      left="150"
@@ -185,7 +185,7 @@
      bottom_delta="0"
      height="10"     
      control_name="JoystickBuildEnabled"
-     halign="center"
+     halign="left"
      label="Build"
      layout="topleft"
      left="219"
@@ -195,7 +195,7 @@
      bottom_delta="0"
      height="10"     
      control_name="JoystickFlycamEnabled"
-     halign="center"
+     halign="left"
      label="Flycam"
      layout="topleft"
      left="289"
@@ -892,6 +892,1654 @@
      left="290"
      name="FlycamAxisDeadZone6"
      width="56" />
+     <text
+     name="general_label"
+     follows="left|top"
+     layout="topleft"
+     top_pad="5" 
+     left="30" 
+     height="12"
+     width="94">
+     Button Mapping:
+     </text>
+       <text
+       top_pad="7"
+       height="18"
+       label_width="125"
+       layout="topleft"
+       left_delta="0"
+       name="JoystickButtonJump"
+       width="90" >
+       Jump
+       </text>
+        <icons_combo_box
+           follows="left|top|right"
+           control_name="JoystickButtonJump"
+           height="23"
+           layout="topleft"
+           left_pad="0"
+           name="JoystickButtonJump"
+           top_delta="0"
+           width="170">
+           <icons_combo_box.drop_down_button
+           image_overlay="None"
+           image_overlay_alignment="left"
+           imgoverlay_label_space="3"
+           pad_left="3"/>
+           <icons_combo_box.item
+              name="none"
+              value="-1">
+              <item.columns
+                halign="left"
+                type="icontext"
+                label="None"
+                value="None"
+                width="20"/>
+            </icons_combo_box.item>
+           <icons_combo_box.item
+              name="btn_a"
+              value="0">
+              <item.columns
+                halign="left"
+                type="icontext"
+                label="Button A"
+                value="Button_A"
+                width="20"/>
+            </icons_combo_box.item>
+           <icons_combo_box.item
+              name="btn_b"
+              value="1">
+              <item.columns
+                halign="left"
+                type="icontext"
+                label="Button B"
+                value="Button_B"
+                width="20"/>
+            </icons_combo_box.item>
+           <icons_combo_box.item
+              name="btn_y"
+              value="3">
+              <item.columns
+                halign="left"
+                type="icontext"
+                label="Button Y"
+                value="Button_Y"
+                width="20"/>
+            </icons_combo_box.item>
+           <icons_combo_box.item
+              name="btn_x"
+              value="2">
+              <item.columns
+                halign="left"
+                type="icontext"
+                label="Button X"
+                value="Button_X"
+                width="20"/>
+            </icons_combo_box.item>
+           <icons_combo_box.item
+              name="back"
+              value="6">
+              <item.columns
+                halign="left"
+                type="icontext"
+                label="Back"
+                value="Button_Back"
+                width="20"/>
+            </icons_combo_box.item>
+           <icons_combo_box.item
+              name="start"
+              value="7">
+              <item.columns
+                halign="left"
+                type="icontext"
+                label="Start"
+                value="Button_Start"
+                width="20"/>
+            </icons_combo_box.item>
+           <icons_combo_box.item
+              name="button_left"
+              value="4">
+              <item.columns
+                halign="left"
+                type="icontext"
+                label="Left Shoulder Button"
+                value="Left_Button"
+                width="20"/>
+            </icons_combo_box.item>
+           <icons_combo_box.item
+              name="button_right"
+              value="5">
+              <item.columns
+                halign="left"
+                type="icontext"
+                label="Right Shoulder Button"
+                value="Right_Button"
+                width="20"/>
+            </icons_combo_box.item>
+           <icons_combo_box.item
+              name="thumb_l"
+              value="8">
+              <item.columns
+                halign="left"
+                type="icontext"
+                label="Thumbstick Left"
+                value="Left_Thumb_Press"
+                width="20"/>
+            </icons_combo_box.item>
+           <icons_combo_box.item
+              name="thumb_r"
+              value="9">
+              <item.columns
+                halign="left"
+                type="icontext"
+                label="Thumbstick Right"
+                value="Right_Thumb_Press"
+                width="20"/>
+            </icons_combo_box.item>
+        </icons_combo_box>
+        <text
+       top_pad="5"
+       layout="topleft"
+       left_delta="-90"
+       name="JoystickButtonCrouch"
+       width="90"
+       height="18" >
+       Crouch
+       </text>
+        <icons_combo_box
+           follows="left|top|right"
+           control_name="JoystickButtonCrouch"
+           height="23"
+           layout="topleft"
+           left_pad="0"
+           name="JoystickButtonCrouch"
+           top_delta="0"
+           width="170">
+              <icons_combo_box.commit_callback
+              function="Joystick.Refresh"/>
+              <icons_combo_box.drop_down_button
+              image_overlay="None"
+              image_overlay_alignment="left"
+              imgoverlay_label_space="3"
+              pad_left="3"/>
+              <icons_combo_box.item
+                 name="none"
+                 value="-1">
+                 <item.columns
+                   halign="left"
+                   type="icontext"
+                   label="None"
+                   value="None"
+                   width="20"/>
+               </icons_combo_box.item>
+              <icons_combo_box.item
+                 name="btn_a"
+                 value="0">
+                 <item.columns
+                   halign="left"
+                   type="icontext"
+                   label="Button A"
+                   value="Button_A"
+                   width="20"/>
+               </icons_combo_box.item>
+              <icons_combo_box.item
+                 name="btn_b"
+                 value="1">
+                 <item.columns
+                   halign="left"
+                   type="icontext"
+                   label="Button B"
+                   value="Button_B"
+                   width="20"/>
+               </icons_combo_box.item>
+              <icons_combo_box.item
+                 name="btn_y"
+                 value="3">
+                 <item.columns
+                   halign="left"
+                   type="icontext"
+                   label="Button Y"
+                   value="Button_Y"
+                   width="20"/>
+               </icons_combo_box.item>
+              <icons_combo_box.item
+                 name="btn_x"
+                 value="2">
+                 <item.columns
+                   halign="left"
+                   type="icontext"
+                   label="Button X"
+                   value="Button_X"
+                   width="20"/>
+               </icons_combo_box.item>
+              <icons_combo_box.item
+                 name="back"
+                 value="6">
+                 <item.columns
+                   halign="left"
+                   type="icontext"
+                   label="Back"
+                   value="Button_Back"
+                   width="20"/>
+               </icons_combo_box.item>
+              <icons_combo_box.item
+                 name="start"
+                 value="7">
+                 <item.columns
+                   halign="left"
+                   type="icontext"
+                   label="Start"
+                   value="Button_Start"
+                   width="20"/>
+               </icons_combo_box.item>
+              <icons_combo_box.item
+                 name="button_left"
+                 value="4">
+                 <item.columns
+                   halign="left"
+                   type="icontext"
+                   label="Left Shoulder Button"
+                   value="Left_Button"
+                   width="20"/>
+               </icons_combo_box.item>
+              <icons_combo_box.item
+                 name="button_right"
+                 value="5">
+                 <item.columns
+                   halign="left"
+                   type="icontext"
+                   label="Right Shoulder Button"
+                   value="Right_Button"
+                   width="20"/>
+               </icons_combo_box.item>
+              <icons_combo_box.item
+                 name="thumb_l"
+                 value="8">
+                 <item.columns
+                   halign="left"
+                   type="icontext"
+                   label="Thumbstick Left"
+                   value="Left_Thumb_Press"
+                   width="20"/>
+               </icons_combo_box.item>
+              <icons_combo_box.item
+                 name="thumb_r"
+                 value="9">
+                 <item.columns
+                   halign="left"
+                   type="icontext"
+                   label="Thumbstick Right"
+                   value="Right_Thumb_Press"
+                   width="20"/>
+               </icons_combo_box.item>
+          </icons_combo_box>
+        <text
+       top_pad="5"
+       layout="topleft"
+       left_delta="-90"
+       name="JoystickButtonFly"
+       width="90" 
+       height="18">
+       Toggle Fly
+       </text>
+        <icons_combo_box
+           follows="left|top|right"
+           control_name="JoystickButtonFly"
+           height="23"
+           layout="topleft"
+           left_pad="0"
+           name="JoystickButtonFly"
+           top_delta="0"
+           width="170">
+              <icons_combo_box.commit_callback
+              function="Joystick.Refresh"/>
+              <icons_combo_box.drop_down_button
+              image_overlay="None"
+              image_overlay_alignment="left"
+              imgoverlay_label_space="3"
+              pad_left="3"/>
+              <icons_combo_box.item
+                 name="none"
+                 value="-1">
+                 <item.columns
+                   halign="left"
+                   type="icontext"
+                   label="None"
+                   value="None"
+                   width="20"/>
+               </icons_combo_box.item>
+              <icons_combo_box.item
+                 name="btn_a"
+                 value="0">
+                 <item.columns
+                   halign="left"
+                   type="icontext"
+                   label="Button A"
+                   value="Button_A"
+                   width="20"/>
+               </icons_combo_box.item>
+              <icons_combo_box.item
+                 name="btn_b"
+                 value="1">
+                 <item.columns
+                   halign="left"
+                   type="icontext"
+                   label="Button B"
+                   value="Button_B"
+                   width="20"/>
+               </icons_combo_box.item>
+              <icons_combo_box.item
+                 name="btn_y"
+                 value="3">
+                 <item.columns
+                   halign="left"
+                   type="icontext"
+                   label="Button Y"
+                   value="Button_Y"
+                   width="20"/>
+               </icons_combo_box.item>
+              <icons_combo_box.item
+                 name="btn_x"
+                 value="2">
+                 <item.columns
+                   halign="left"
+                   type="icontext"
+                   label="Button X"
+                   value="Button_X"
+                   width="20"/>
+               </icons_combo_box.item>
+              <icons_combo_box.item
+                 name="back"
+                 value="6">
+                 <item.columns
+                   halign="left"
+                   type="icontext"
+                   label="Back"
+                   value="Button_Back"
+                   width="20"/>
+               </icons_combo_box.item>
+              <icons_combo_box.item
+                 name="start"
+                 value="7">
+                 <item.columns
+                   halign="left"
+                   type="icontext"
+                   label="Start"
+                   value="Button_Start"
+                   width="20"/>
+               </icons_combo_box.item>
+              <icons_combo_box.item
+                 name="button_left"
+                 value="4">
+                 <item.columns
+                   halign="left"
+                   type="icontext"
+                   label="Left Shoulder Button"
+                   value="Left_Button"
+                   width="20"/>
+               </icons_combo_box.item>
+              <icons_combo_box.item
+                 name="button_right"
+                 value="5">
+                 <item.columns
+                   halign="left"
+                   type="icontext"
+                   label="Right Shoulder Button"
+                   value="Right_Button"
+                   width="20"/>
+               </icons_combo_box.item>
+              <icons_combo_box.item
+                 name="thumb_l"
+                 value="8">
+                 <item.columns
+                   halign="left"
+                   type="icontext"
+                   label="Thumbstick Left"
+                   value="Left_Thumb_Press"
+                   width="20"/>
+               </icons_combo_box.item>
+              <icons_combo_box.item
+                 name="thumb_r"
+                 value="9">
+                 <item.columns
+                   halign="left"
+                   type="icontext"
+                   label="Thumbstick Right"
+                   value="Right_Thumb_Press"
+                   width="20"/>
+               </icons_combo_box.item>
+          </icons_combo_box>
+        <text
+       height="18"
+       top_pad="5"
+       layout="topleft"
+       left_delta="-90"
+       name="JoystickButtonRunToggle"
+       width="90" >
+       Toggle Run
+       </text>
+        <icons_combo_box
+           follows="left|top|right"
+           control_name="JoystickButtonRunToggle"
+           height="23"
+           layout="topleft"
+           left_pad="0"
+           name="JoystickButtonRunToggle"
+           top_delta="0"
+           width="170">
+              <icons_combo_box.commit_callback
+              function="Joystick.Refresh"/>
+              <icons_combo_box.drop_down_button
+              image_overlay="None"
+              image_overlay_alignment="left"
+              imgoverlay_label_space="3"
+              pad_left="3"/>
+              <icons_combo_box.item
+                 name="none"
+                 value="-1">
+                 <item.columns
+                   halign="left"
+                   type="icontext"
+                   label="None"
+                   value="None"
+                   width="20"/>
+               </icons_combo_box.item>
+              <icons_combo_box.item
+                 name="btn_a"
+                 value="0">
+                 <item.columns
+                   halign="left"
+                   type="icontext"
+                   label="Button A"
+                   value="Button_A"
+                   width="20"/>
+               </icons_combo_box.item>
+              <icons_combo_box.item
+                 name="btn_b"
+                 value="1">
+                 <item.columns
+                   halign="left"
+                   type="icontext"
+                   label="Button B"
+                   value="Button_B"
+                   width="20"/>
+               </icons_combo_box.item>
+              <icons_combo_box.item
+                 name="btn_y"
+                 value="3">
+                 <item.columns
+                   halign="left"
+                   type="icontext"
+                   label="Button Y"
+                   value="Button_Y"
+                   width="20"/>
+               </icons_combo_box.item>
+              <icons_combo_box.item
+                 name="btn_x"
+                 value="2">
+                 <item.columns
+                   halign="left"
+                   type="icontext"
+                   label="Button X"
+                   value="Button_X"
+                   width="20"/>
+               </icons_combo_box.item>
+              <icons_combo_box.item
+                 name="back"
+                 value="6">
+                 <item.columns
+                   halign="left"
+                   type="icontext"
+                   label="Back"
+                   value="Button_Back"
+                   width="20"/>
+               </icons_combo_box.item>
+              <icons_combo_box.item
+                 name="start"
+                 value="7">
+                 <item.columns
+                   halign="left"
+                   type="icontext"
+                   label="Start"
+                   value="Button_Start"
+                   width="20"/>
+               </icons_combo_box.item>
+              <icons_combo_box.item
+                 name="button_left"
+                 value="4">
+                 <item.columns
+                   halign="left"
+                   type="icontext"
+                   label="Left Shoulder Button"
+                   value="Left_Button"
+                   width="20"/>
+               </icons_combo_box.item>
+              <icons_combo_box.item
+                 name="button_right"
+                 value="5">
+                 <item.columns
+                   halign="left"
+                   type="icontext"
+                   label="Right Shoulder Button"
+                   value="Right_Button"
+                   width="20"/>
+               </icons_combo_box.item>
+              <icons_combo_box.item
+                 name="thumb_l"
+                 value="8">
+                 <item.columns
+                   halign="left"
+                   type="icontext"
+                   label="Thumbstick Left"
+                   value="Left_Thumb_Press"
+                   width="20"/>
+               </icons_combo_box.item>
+              <icons_combo_box.item
+                 name="thumb_r"
+                 value="9">
+                 <item.columns
+                   halign="left"
+                   type="icontext"
+                   label="Thumbstick Right"
+                   value="Right_Thumb_Press"
+                   width="20"/>
+               </icons_combo_box.item>
+          </icons_combo_box>
+        <text
+       height="18"
+       top_pad="5"
+       layout="topleft"
+       left_delta="-90"
+       name="JoystickButtonMouselook"
+       width="90" >
+       Mouselook
+       </text>
+        <icons_combo_box
+           follows="left|top|right"
+           control_name="JoystickButtonMouselook"
+           height="23"
+           layout="topleft"
+           left_pad="0"
+           name="JoystickButtonMouselook"
+           top_delta="0"
+           width="170">
+              <icons_combo_box.commit_callback
+              function="Joystick.Refresh"/>
+              <icons_combo_box.drop_down_button
+              image_overlay="None"
+              image_overlay_alignment="left"
+              imgoverlay_label_space="3"
+              pad_left="3"/>
+              <icons_combo_box.item
+                 name="none"
+                 value="-1">
+                 <item.columns
+                   halign="left"
+                   type="icontext"
+                   label="None"
+                   value="None"
+                   width="20"/>
+               </icons_combo_box.item>
+              <icons_combo_box.item
+                 name="btn_a"
+                 value="0">
+                 <item.columns
+                   halign="left"
+                   type="icontext"
+                   label="Button A"
+                   value="Button_A"
+                   width="20"/>
+               </icons_combo_box.item>
+              <icons_combo_box.item
+                 name="btn_b"
+                 value="1">
+                 <item.columns
+                   halign="left"
+                   type="icontext"
+                   label="Button B"
+                   value="Button_B"
+                   width="20"/>
+               </icons_combo_box.item>
+              <icons_combo_box.item
+                 name="btn_y"
+                 value="3">
+                 <item.columns
+                   halign="left"
+                   type="icontext"
+                   label="Button Y"
+                   value="Button_Y"
+                   width="20"/>
+               </icons_combo_box.item>
+              <icons_combo_box.item
+                 name="btn_x"
+                 value="2">
+                 <item.columns
+                   halign="left"
+                   type="icontext"
+                   label="Button X"
+                   value="Button_X"
+                   width="20"/>
+               </icons_combo_box.item>
+              <icons_combo_box.item
+                 name="back"
+                 value="6">
+                 <item.columns
+                   halign="left"
+                   type="icontext"
+                   label="Back"
+                   value="Button_Back"
+                   width="20"/>
+               </icons_combo_box.item>
+              <icons_combo_box.item
+                 name="start"
+                 value="7">
+                 <item.columns
+                   halign="left"
+                   type="icontext"
+                   label="Start"
+                   value="Button_Start"
+                   width="20"/>
+               </icons_combo_box.item>
+              <icons_combo_box.item
+                 name="button_left"
+                 value="4">
+                 <item.columns
+                   halign="left"
+                   type="icontext"
+                   label="Left Shoulder Button"
+                   value="Left_Button"
+                   width="20"/>
+               </icons_combo_box.item>
+              <icons_combo_box.item
+                 name="button_right"
+                 value="5">
+                 <item.columns
+                   halign="left"
+                   type="icontext"
+                   label="Right Shoulder Button"
+                   value="Right_Button"
+                   width="20"/>
+               </icons_combo_box.item>
+              <icons_combo_box.item
+                 name="thumb_l"
+                 value="8">
+                 <item.columns
+                   halign="left"
+                   type="icontext"
+                   label="Thumbstick Left"
+                   value="Left_Thumb_Press"
+                   width="20"/>
+               </icons_combo_box.item>
+              <icons_combo_box.item
+                 name="thumb_r"
+                 value="9">
+                 <item.columns
+                   halign="left"
+                   type="icontext"
+                   label="Thumbstick Right"
+                   value="Right_Thumb_Press"
+                   width="20"/>
+               </icons_combo_box.item>
+          </icons_combo_box>
+        <text
+       height="18"
+       top_pad="5"
+       layout="topleft"
+       left_delta="-90"
+       name="JoystickButtonFlycam"
+       width="90" >
+       Toggle Flycam
+       </text>
+        <icons_combo_box
+           follows="left|top|right"
+           control_name="JoystickButtonFlycam"
+           height="23"
+           layout="topleft"
+           left_pad="0"
+           name="JoystickButtonFlycam"
+           top_delta="0"
+           width="170">
+              <icons_combo_box.commit_callback
+              function="Joystick.Refresh"/>
+              <icons_combo_box.drop_down_button
+              image_overlay="None"
+              image_overlay_alignment="left"
+              imgoverlay_label_space="3"
+              pad_left="3"/>
+              <icons_combo_box.item
+                 name="none"
+                 value="-1">
+                 <item.columns
+                   halign="left"
+                   type="icontext"
+                   label="None"
+                   value="None"
+                   width="20"/>
+               </icons_combo_box.item>
+              <icons_combo_box.item
+                 name="btn_a"
+                 value="0">
+                 <item.columns
+                   halign="left"
+                   type="icontext"
+                   label="Button A"
+                   value="Button_A"
+                   width="20"/>
+               </icons_combo_box.item>
+              <icons_combo_box.item
+                 name="btn_b"
+                 value="1">
+                 <item.columns
+                   halign="left"
+                   type="icontext"
+                   label="Button B"
+                   value="Button_B"
+                   width="20"/>
+               </icons_combo_box.item>
+              <icons_combo_box.item
+                 name="btn_y"
+                 value="3">
+                 <item.columns
+                   halign="left"
+                   type="icontext"
+                   label="Button Y"
+                   value="Button_Y"
+                   width="20"/>
+               </icons_combo_box.item>
+              <icons_combo_box.item
+                 name="btn_x"
+                 value="2">
+                 <item.columns
+                   halign="left"
+                   type="icontext"
+                   label="Button X"
+                   value="Button_X"
+                   width="20"/>
+               </icons_combo_box.item>
+              <icons_combo_box.item
+                 name="back"
+                 value="6">
+                 <item.columns
+                   halign="left"
+                   type="icontext"
+                   label="Back"
+                   value="Button_Back"
+                   width="20"/>
+               </icons_combo_box.item>
+              <icons_combo_box.item
+                 name="start"
+                 value="7">
+                 <item.columns
+                   halign="left"
+                   type="icontext"
+                   label="Start"
+                   value="Button_Start"
+                   width="20"/>
+               </icons_combo_box.item>
+              <icons_combo_box.item
+                 name="button_left"
+                 value="4">
+                 <item.columns
+                   halign="left"
+                   type="icontext"
+                   label="Left Shoulder Button"
+                   value="Left_Button"
+                   width="20"/>
+               </icons_combo_box.item>
+              <icons_combo_box.item
+                 name="button_right"
+                 value="5">
+                 <item.columns
+                   halign="left"
+                   type="icontext"
+                   label="Right Shoulder Button"
+                   value="Right_Button"
+                   width="20"/>
+               </icons_combo_box.item>
+              <icons_combo_box.item
+                 name="thumb_l"
+                 value="8">
+                 <item.columns
+                   halign="left"
+                   type="icontext"
+                   label="Thumbstick Left"
+                   value="Left_Thumb_Press"
+                   width="20"/>
+               </icons_combo_box.item>
+              <icons_combo_box.item
+                 name="thumb_r"
+                 value="9">
+                 <item.columns
+                   halign="left"
+                   type="icontext"
+                   label="Thumbstick Right"
+                   value="Right_Thumb_Press"
+                   width="20"/>
+               </icons_combo_box.item>
+          </icons_combo_box>
+        <text
+       height="18"
+       top_delta="-140"
+       label_width="125"
+       layout="topleft"
+       left_pad="10"
+       name="JoystickButtonZoomOut"
+       width="90" >
+       Zoom Out
+       </text>
+        <icons_combo_box
+           follows="left|top|right"
+           control_name="JoystickButtonZoomOut"
+           height="23"
+           layout="topleft"
+           left_pad="0"
+           name="JoystickButtonZoomOut"
+           top_delta="0"
+           width="170">
+              <icons_combo_box.commit_callback
+              function="Joystick.Refresh"/>
+              <icons_combo_box.drop_down_button
+              image_overlay="None"
+              image_overlay_alignment="left"
+              imgoverlay_label_space="3"
+              pad_left="3"/>
+              <icons_combo_box.item
+                 name="none"
+                 value="-1">
+                 <item.columns
+                   halign="left"
+                   type="icontext"
+                   label="None"
+                   value="None"
+                   width="20"/>
+               </icons_combo_box.item>
+              <icons_combo_box.item
+                 name="btn_a"
+                 value="0">
+                 <item.columns
+                   halign="left"
+                   type="icontext"
+                   label="Button A"
+                   value="Button_A"
+                   width="20"/>
+               </icons_combo_box.item>
+              <icons_combo_box.item
+                 name="btn_b"
+                 value="1">
+                 <item.columns
+                   halign="left"
+                   type="icontext"
+                   label="Button B"
+                   value="Button_B"
+                   width="20"/>
+               </icons_combo_box.item>
+              <icons_combo_box.item
+                 name="btn_y"
+                 value="3">
+                 <item.columns
+                   halign="left"
+                   type="icontext"
+                   label="Button Y"
+                   value="Button_Y"
+                   width="20"/>
+               </icons_combo_box.item>
+              <icons_combo_box.item
+                 name="btn_x"
+                 value="2">
+                 <item.columns
+                   halign="left"
+                   type="icontext"
+                   label="Button X"
+                   value="Button_X"
+                   width="20"/>
+               </icons_combo_box.item>
+              <icons_combo_box.item
+                 name="back"
+                 value="6">
+                 <item.columns
+                   halign="left"
+                   type="icontext"
+                   label="Back"
+                   value="Button_Back"
+                   width="20"/>
+               </icons_combo_box.item>
+              <icons_combo_box.item
+                 name="start"
+                 value="7">
+                 <item.columns
+                   halign="left"
+                   type="icontext"
+                   label="Start"
+                   value="Button_Start"
+                   width="20"/>
+               </icons_combo_box.item>
+              <icons_combo_box.item
+                 name="button_left"
+                 value="4">
+                 <item.columns
+                   halign="left"
+                   type="icontext"
+                   label="Left Shoulder Button"
+                   value="Left_Button"
+                   width="20"/>
+               </icons_combo_box.item>
+              <icons_combo_box.item
+                 name="button_right"
+                 value="5">
+                 <item.columns
+                   halign="left"
+                   type="icontext"
+                   label="Right Shoulder Button"
+                   value="Right_Button"
+                   width="20"/>
+               </icons_combo_box.item>
+              <icons_combo_box.item
+                 name="thumb_l"
+                 value="8">
+                 <item.columns
+                   halign="left"
+                   type="icontext"
+                   label="Thumbstick Left"
+                   value="Left_Thumb_Press"
+                   width="20"/>
+               </icons_combo_box.item>
+              <icons_combo_box.item
+                 name="thumb_r"
+                 value="9">
+                 <item.columns
+                   halign="left"
+                   type="icontext"
+                   label="Thumbstick Right"
+                   value="Right_Thumb_Press"
+                   width="20"/>
+               </icons_combo_box.item>
+          </icons_combo_box>
+        <text
+       height="18"
+       top_pad="5"
+       label_width="125"
+       layout="topleft"
+       left_delta="-90"
+       name="JoystickButtonZoomIn"
+       width="90" >
+       Zoom In
+       </text>
+        <icons_combo_box
+           follows="left|top|right"
+           control_name="JoystickButtonZoomIn"
+           height="23"
+           layout="topleft"
+           left_pad="0"
+           name="JoystickButtonZoomIn"
+           top_delta="0"
+           width="170">
+              <icons_combo_box.commit_callback
+              function="Joystick.Refresh"/>
+              <icons_combo_box.drop_down_button
+              image_overlay="None"
+              image_overlay_alignment="left"
+              imgoverlay_label_space="3"
+              pad_left="3"/>
+              <icons_combo_box.item
+                 name="none"
+                 value="-1">
+                 <item.columns
+                   halign="left"
+                   type="icontext"
+                   label="None"
+                   value="None"
+                   width="20"/>
+               </icons_combo_box.item>
+              <icons_combo_box.item
+                 name="btn_a"
+                 value="0">
+                 <item.columns
+                   halign="left"
+                   type="icontext"
+                   label="Button A"
+                   value="Button_A"
+                   width="20"/>
+               </icons_combo_box.item>
+              <icons_combo_box.item
+                 name="btn_b"
+                 value="1">
+                 <item.columns
+                   halign="left"
+                   type="icontext"
+                   label="Button B"
+                   value="Button_B"
+                   width="20"/>
+               </icons_combo_box.item>
+              <icons_combo_box.item
+                 name="btn_y"
+                 value="3">
+                 <item.columns
+                   halign="left"
+                   type="icontext"
+                   label="Button Y"
+                   value="Button_Y"
+                   width="20"/>
+               </icons_combo_box.item>
+              <icons_combo_box.item
+                 name="btn_x"
+                 value="2">
+                 <item.columns
+                   halign="left"
+                   type="icontext"
+                   label="Button X"
+                   value="Button_X"
+                   width="20"/>
+               </icons_combo_box.item>
+              <icons_combo_box.item
+                 name="back"
+                 value="6">
+                 <item.columns
+                   halign="left"
+                   type="icontext"
+                   label="Back"
+                   value="Button_Back"
+                   width="20"/>
+               </icons_combo_box.item>
+              <icons_combo_box.item
+                 name="start"
+                 value="7">
+                 <item.columns
+                   halign="left"
+                   type="icontext"
+                   label="Start"
+                   value="Button_Start"
+                   width="20"/>
+               </icons_combo_box.item>
+              <icons_combo_box.item
+                 name="button_left"
+                 value="4">
+                 <item.columns
+                   halign="left"
+                   type="icontext"
+                   label="Left Shoulder Button"
+                   value="Left_Button"
+                   width="20"/>
+               </icons_combo_box.item>
+              <icons_combo_box.item
+                 name="button_right"
+                 value="5">
+                 <item.columns
+                   halign="left"
+                   type="icontext"
+                   label="Right Shoulder Button"
+                   value="Right_Button"
+                   width="20"/>
+               </icons_combo_box.item>
+              <icons_combo_box.item
+                 name="thumb_l"
+                 value="8">
+                 <item.columns
+                   halign="left"
+                   type="icontext"
+                   label="Thumbstick Left"
+                   value="Left_Thumb_Press"
+                   width="20"/>
+               </icons_combo_box.item>
+              <icons_combo_box.item
+                 name="thumb_r"
+                 value="9">
+                 <item.columns
+                   halign="left"
+                   type="icontext"
+                   label="Thumbstick Right"
+                   value="Right_Thumb_Press"
+                   width="20"/>
+               </icons_combo_box.item>
+          </icons_combo_box>
+        <text
+       height="18"
+       top_pad="5"
+       label_width="125"
+       layout="topleft"
+       left_delta="-90"
+       name="JoystickButtonZoomDefault"
+       width="90" >
+       Zoom Default
+       </text>
+        <icons_combo_box
+           follows="left|top|right"
+           control_name="JoystickButtonZoomDefault"
+           height="23"
+           layout="topleft"
+           left_pad="0"
+           name="JoystickButtonZoomDefault"
+           top_delta="0"
+           width="170">
+              <icons_combo_box.commit_callback
+              function="Joystick.Refresh"/>
+              <icons_combo_box.drop_down_button
+              image_overlay="None"
+              image_overlay_alignment="left"
+              imgoverlay_label_space="3"
+              pad_left="3"/>
+              <icons_combo_box.item
+                 name="none"
+                 value="-1">
+                 <item.columns
+                   halign="left"
+                   type="icontext"
+                   label="None"
+                   value="None"
+                   width="20"/>
+               </icons_combo_box.item>
+              <icons_combo_box.item
+                 name="btn_a"
+                 value="0">
+                 <item.columns
+                   halign="left"
+                   type="icontext"
+                   label="Button A"
+                   value="Button_A"
+                   width="20"/>
+               </icons_combo_box.item>
+              <icons_combo_box.item
+                 name="btn_b"
+                 value="1">
+                 <item.columns
+                   halign="left"
+                   type="icontext"
+                   label="Button B"
+                   value="Button_B"
+                   width="20"/>
+               </icons_combo_box.item>
+              <icons_combo_box.item
+                 name="btn_y"
+                 value="3">
+                 <item.columns
+                   halign="left"
+                   type="icontext"
+                   label="Button Y"
+                   value="Button_Y"
+                   width="20"/>
+               </icons_combo_box.item>
+              <icons_combo_box.item
+                 name="btn_x"
+                 value="2">
+                 <item.columns
+                   halign="left"
+                   type="icontext"
+                   label="Button X"
+                   value="Button_X"
+                   width="20"/>
+               </icons_combo_box.item>
+              <icons_combo_box.item
+                 name="back"
+                 value="6">
+                 <item.columns
+                   halign="left"
+                   type="icontext"
+                   label="Back"
+                   value="Button_Back"
+                   width="20"/>
+               </icons_combo_box.item>
+              <icons_combo_box.item
+                 name="start"
+                 value="7">
+                 <item.columns
+                   halign="left"
+                   type="icontext"
+                   label="Start"
+                   value="Button_Start"
+                   width="20"/>
+               </icons_combo_box.item>
+              <icons_combo_box.item
+                 name="button_left"
+                 value="4">
+                 <item.columns
+                   halign="left"
+                   type="icontext"
+                   label="Left Shoulder Button"
+                   value="Left_Button"
+                   width="20"/>
+               </icons_combo_box.item>
+              <icons_combo_box.item
+                 name="button_right"
+                 value="5">
+                 <item.columns
+                   halign="left"
+                   type="icontext"
+                   label="Right Shoulder Button"
+                   value="Right_Button"
+                   width="20"/>
+               </icons_combo_box.item>
+              <icons_combo_box.item
+                 name="thumb_l"
+                 value="8">
+                 <item.columns
+                   halign="left"
+                   type="icontext"
+                   label="Thumbstick Left"
+                   value="Left_Thumb_Press"
+                   width="20"/>
+               </icons_combo_box.item>
+              <icons_combo_box.item
+                 name="thumb_r"
+                 value="9">
+                 <item.columns
+                   halign="left"
+                   type="icontext"
+                   label="Thumbstick Right"
+                   value="Right_Thumb_Press"
+                   width="20"/>
+               </icons_combo_box.item>
+          </icons_combo_box>
+        <text
+        height="18"
+       top_pad="5"
+       label_width="125"
+       layout="topleft"
+       left_delta="-90"
+       name="JoystickButtonRollLeft"
+       width="90" >
+       Roll Left
+       </text>
+        <icons_combo_box
+           follows="left|top|right"
+           control_name="JoystickButtonRollLeft"
+           height="23"
+           layout="topleft"
+           left_pad="0"
+           name="JoystickButtonRollLeft"
+           top_delta="0"
+           width="170">
+              <icons_combo_box.commit_callback
+              function="Joystick.Refresh"/>
+              <icons_combo_box.drop_down_button
+              image_overlay="None"
+              image_overlay_alignment="left"
+              imgoverlay_label_space="3"
+              pad_left="3"/>
+              <icons_combo_box.item
+                 name="none"
+                 value="-1">
+                 <item.columns
+                   halign="left"
+                   type="icontext"
+                   label="None"
+                   value="None"
+                   width="20"/>
+               </icons_combo_box.item>
+              <icons_combo_box.item
+                 name="btn_a"
+                 value="0">
+                 <item.columns
+                   halign="left"
+                   type="icontext"
+                   label="Button A"
+                   value="Button_A"
+                   width="20"/>
+               </icons_combo_box.item>
+              <icons_combo_box.item
+                 name="btn_b"
+                 value="1">
+                 <item.columns
+                   halign="left"
+                   type="icontext"
+                   label="Button B"
+                   value="Button_B"
+                   width="20"/>
+               </icons_combo_box.item>
+              <icons_combo_box.item
+                 name="btn_y"
+                 value="3">
+                 <item.columns
+                   halign="left"
+                   type="icontext"
+                   label="Button Y"
+                   value="Button_Y"
+                   width="20"/>
+               </icons_combo_box.item>
+              <icons_combo_box.item
+                 name="btn_x"
+                 value="2">
+                 <item.columns
+                   halign="left"
+                   type="icontext"
+                   label="Button X"
+                   value="Button_X"
+                   width="20"/>
+               </icons_combo_box.item>
+              <icons_combo_box.item
+                 name="back"
+                 value="6">
+                 <item.columns
+                   halign="left"
+                   type="icontext"
+                   label="Back"
+                   value="Button_Back"
+                   width="20"/>
+               </icons_combo_box.item>
+              <icons_combo_box.item
+                 name="start"
+                 value="7">
+                 <item.columns
+                   halign="left"
+                   type="icontext"
+                   label="Start"
+                   value="Button_Start"
+                   width="20"/>
+               </icons_combo_box.item>
+              <icons_combo_box.item
+                 name="button_left"
+                 value="4">
+                 <item.columns
+                   halign="left"
+                   type="icontext"
+                   label="Left Shoulder Button"
+                   value="Left_Button"
+                   width="20"/>
+               </icons_combo_box.item>
+              <icons_combo_box.item
+                 name="button_right"
+                 value="5">
+                 <item.columns
+                   halign="left"
+                   type="icontext"
+                   label="Right Shoulder Button"
+                   value="Right_Button"
+                   width="20"/>
+               </icons_combo_box.item>
+              <icons_combo_box.item
+                 name="thumb_l"
+                 value="8">
+                 <item.columns
+                   halign="left"
+                   type="icontext"
+                   label="Thumbstick Left"
+                   value="Left_Thumb_Press"
+                   width="20"/>
+               </icons_combo_box.item>
+              <icons_combo_box.item
+                 name="thumb_r"
+                 value="9">
+                 <item.columns
+                   halign="left"
+                   type="icontext"
+                   label="Thumbstick Right"
+                   value="Right_Thumb_Press"
+                   width="20"/>
+               </icons_combo_box.item>
+          </icons_combo_box>
+        <text
+       height="18"
+       top_pad="5"
+       label_width="125"
+       layout="topleft"
+       left_delta="-90"
+       name="JoystickButtonRollRight"
+       width="90" >
+       Roll Right
+       </text>
+        <icons_combo_box
+           follows="left|top|right"
+           control_name="JoystickButtonRollRight"
+           height="23"
+           layout="topleft"
+           left_pad="0"
+           name="JoystickButtonRollRight"
+           top_delta="0"
+           width="170">
+              <icons_combo_box.commit_callback
+              function="Joystick.Refresh"/>
+              <icons_combo_box.drop_down_button
+              image_overlay="None"
+              image_overlay_alignment="left"
+              imgoverlay_label_space="3"
+              pad_left="3"/>
+              <icons_combo_box.item
+                 name="none"
+                 value="-1">
+                 <item.columns
+                   halign="left"
+                   type="icontext"
+                   label="None"
+                   value="None"
+                   width="20"/>
+               </icons_combo_box.item>
+              <icons_combo_box.item
+                 name="btn_a"
+                 value="0">
+                 <item.columns
+                   halign="left"
+                   type="icontext"
+                   label="Button A"
+                   value="Button_A"
+                   width="20"/>
+               </icons_combo_box.item>
+              <icons_combo_box.item
+                 name="btn_b"
+                 value="1">
+                 <item.columns
+                   halign="left"
+                   type="icontext"
+                   label="Button B"
+                   value="Button_B"
+                   width="20"/>
+               </icons_combo_box.item>
+              <icons_combo_box.item
+                 name="btn_y"
+                 value="3">
+                 <item.columns
+                   halign="left"
+                   type="icontext"
+                   label="Button Y"
+                   value="Button_Y"
+                   width="20"/>
+               </icons_combo_box.item>
+              <icons_combo_box.item
+                 name="btn_x"
+                 value="2">
+                 <item.columns
+                   halign="left"
+                   type="icontext"
+                   label="Button X"
+                   value="Button_X"
+                   width="20"/>
+               </icons_combo_box.item>
+              <icons_combo_box.item
+                 name="back"
+                 value="6">
+                 <item.columns
+                   halign="left"
+                   type="icontext"
+                   label="Back"
+                   value="Button_Back"
+                   width="20"/>
+               </icons_combo_box.item>
+              <icons_combo_box.item
+                 name="start"
+                 value="7">
+                 <item.columns
+                   halign="left"
+                   type="icontext"
+                   label="Start"
+                   value="Button_Start"
+                   width="20"/>
+               </icons_combo_box.item>
+              <icons_combo_box.item
+                 name="button_left"
+                 value="4">
+                 <item.columns
+                   halign="left"
+                   type="icontext"
+                   label="Left Shoulder Button"
+                   value="Left_Button"
+                   width="20"/>
+               </icons_combo_box.item>
+              <icons_combo_box.item
+                 name="button_right"
+                 value="5">
+                 <item.columns
+                   halign="left"
+                   type="icontext"
+                   label="Right Shoulder Button"
+                   value="Right_Button"
+                   width="20"/>
+               </icons_combo_box.item>
+              <icons_combo_box.item
+                 name="thumb_l"
+                 value="8">
+                 <item.columns
+                   halign="left"
+                   type="icontext"
+                   label="Thumbstick Left"
+                   value="Left_Thumb_Press"
+                   width="20"/>
+               </icons_combo_box.item>
+              <icons_combo_box.item
+                 name="thumb_r"
+                 value="9">
+                 <item.columns
+                   halign="left"
+                   type="icontext"
+                   label="Thumbstick Right"
+                   value="Right_Thumb_Press"
+                   width="20"/>
+               </icons_combo_box.item>
+          </icons_combo_box>
+        <text
+       height="18"
+       top_pad="5"
+       label_width="125"
+       layout="topleft"
+       left_delta="-90"
+       name="JoystickButtonRollDefault"
+       width="90" >
+       Roll Default
+       </text>
+        <icons_combo_box
+           follows="left|top|right"
+           control_name="JoystickButtonRollDefault"
+           height="23"
+           layout="topleft"
+           left_pad="0"
+           name="JoystickButtonRollDefault"
+           top_delta="0"
+           width="170">
+              <icons_combo_box.commit_callback
+              function="Joystick.Refresh"/>
+              <icons_combo_box.drop_down_button
+              image_overlay="None"
+              image_overlay_alignment="left"
+              imgoverlay_label_space="3"
+              pad_left="3"/>
+              <icons_combo_box.item
+                 name="none"
+                 value="-1">
+                 <item.columns
+                   halign="left"
+                   type="icontext"
+                   label="None"
+                   value="None"
+                   width="20"/>
+               </icons_combo_box.item>
+              <icons_combo_box.item
+                 name="btn_a"
+                 value="0">
+                 <item.columns
+                   halign="left"
+                   type="icontext"
+                   label="Button A"
+                   value="Button_A"
+                   width="20"/>
+               </icons_combo_box.item>
+              <icons_combo_box.item
+                 name="btn_b"
+                 value="1">
+                 <item.columns
+                   halign="left"
+                   type="icontext"
+                   label="Button B"
+                   value="Button_B"
+                   width="20"/>
+               </icons_combo_box.item>
+              <icons_combo_box.item
+                 name="btn_y"
+                 value="3">
+                 <item.columns
+                   halign="left"
+                   type="icontext"
+                   label="Button Y"
+                   value="Button_Y"
+                   width="20"/>
+               </icons_combo_box.item>
+              <icons_combo_box.item
+                 name="btn_x"
+                 value="2">
+                 <item.columns
+                   halign="left"
+                   type="icontext"
+                   label="Button X"
+                   value="Button_X"
+                   width="20"/>
+               </icons_combo_box.item>
+              <icons_combo_box.item
+                 name="back"
+                 value="6">
+                 <item.columns
+                   halign="left"
+                   type="icontext"
+                   label="Back"
+                   value="Button_Back"
+                   width="20"/>
+               </icons_combo_box.item>
+              <icons_combo_box.item
+                 name="start"
+                 value="7">
+                 <item.columns
+                   halign="left"
+                   type="icontext"
+                   label="Start"
+                   value="Button_Start"
+                   width="20"/>
+               </icons_combo_box.item>
+              <icons_combo_box.item
+                 name="button_left"
+                 value="4">
+                 <item.columns
+                   halign="left"
+                   type="icontext"
+                   label="Left Shoulder Button"
+                   value="Left_Button"
+                   width="20"/>
+               </icons_combo_box.item>
+              <icons_combo_box.item
+                 name="button_right"
+                 value="5">
+                 <item.columns
+                   halign="left"
+                   type="icontext"
+                   label="Right Shoulder Button"
+                   value="Right_Button"
+                   width="20"/>
+               </icons_combo_box.item>
+              <icons_combo_box.item
+                 name="thumb_l"
+                 value="8">
+                 <item.columns
+                   halign="left"
+                   type="icontext"
+                   label="Thumbstick Left"
+                   value="Left_Thumb_Press"
+                   width="20"/>
+               </icons_combo_box.item>
+              <icons_combo_box.item
+                 name="thumb_r"
+                 value="9">
+                 <item.columns
+                   halign="left"
+                   type="icontext"
+                   label="Thumbstick Right"
+                   value="Right_Thumb_Press"
+                   width="20"/>
+               </icons_combo_box.item>
+          </icons_combo_box>
+
     <button
      follows="left|top"
      height="22"
@@ -916,9 +2564,9 @@
      label="OK"
      label_selected="OK"
      layout="topleft"
-     left_delta="0"
+     left="359"
      name="ok_btn"
-     top_pad="7"
+     top="650"
      width="98" />
     <button
      follows="right|bottom"
-- 
GitLab