diff --git a/indra/llui/lllayoutstack.cpp b/indra/llui/lllayoutstack.cpp
index 56fee745d54e21e5c7864341227076eb5b4b7af0..629b34307d693f5a85bbc500820f755bf074c302 100644
--- a/indra/llui/lllayoutstack.cpp
+++ b/indra/llui/lllayoutstack.cpp
@@ -343,7 +343,7 @@ void LLLayoutStack::collapsePanel(LLPanel* panel, BOOL collapsed)
 
 static LLTrace::BlockTimerStatHandle FTM_UPDATE_LAYOUT("Update LayoutStacks");
 
-class LLImagePanel : public LLPanel
+class LLImagePanel final : public LLPanel
 {
 public:
 	struct Params :	public LLInitParam::Block<Params, LLPanel::Params>
@@ -352,7 +352,7 @@ public:
 		Params() : horizontal("horizontal", false) {}
 	};
 	LLImagePanel(const Params& p) : LLPanel(p), mHorizontal(p.horizontal) {}
-	virtual ~LLImagePanel() {}
+	virtual ~LLImagePanel() = default;
 
 	void draw() override
 	{
diff --git a/indra/llui/lltoolbar.h b/indra/llui/lltoolbar.h
index 76fa1f05258b9abc661a73e78989aa9e065aa816..e91aaae464a71fc1c05844692998ba641adbb3ec 100644
--- a/indra/llui/lltoolbar.h
+++ b/indra/llui/lltoolbar.h
@@ -43,7 +43,7 @@ typedef std::function<void (S32 x, S32 y, LLToolBarButton* button)> tool_startdr
 typedef std::function<BOOL (S32 x, S32 y, const LLUUID& uuid, LLAssetType::EType type)> tool_handledrag_callback_t;
 typedef std::function<BOOL (void* data, S32 x, S32 y, LLToolBar* toolbar)> tool_handledrop_callback_t;
 
-class LLToolBarButton : public LLButton
+class LLToolBarButton final : public LLButton
 {
 	friend class LLToolBar;
 public:
@@ -173,7 +173,7 @@ namespace LLInitParam
 }
 
 
-class LLToolBar
+class LLToolBar final 
 :	public LLUICtrl
 {
 	friend class LLToolBarButton;
@@ -184,7 +184,7 @@ public:
 	public:
 		typedef std::function<void(LLToolBarEnums::EToolBarLocation tb, const LLRect& rect)> reshape_callback_t;
 
-		virtual ~LLCenterLayoutPanel() {}
+		virtual ~LLCenterLayoutPanel() = default;
 		/*virtual*/ void handleReshape(const LLRect& rect, bool by_user) override;
 
 		void setLocationId(LLToolBarEnums::EToolBarLocation id) { mLocationId = id; }
diff --git a/indra/newview/alpanelmusicticker.h b/indra/newview/alpanelmusicticker.h
index c3c3a2fab6c3b36dfd6687210aa2783eb1da22b5..6e3168330db4d2a4e9a34a237b76116c42910092 100644
--- a/indra/newview/alpanelmusicticker.h
+++ b/indra/newview/alpanelmusicticker.h
@@ -26,7 +26,7 @@
 class LLIconCtrl;
 class LLTextBox;
 
-class ALPanelMusicTicker : public LLPanel
+class ALPanelMusicTicker final : public LLPanel
 {
 public:
 	ALPanelMusicTicker();	//ctor
diff --git a/indra/newview/alpanelquicksettings.h b/indra/newview/alpanelquicksettings.h
index fe2b287fbe50a3afda19d62f886cd6735cec3ae3..dc0ae278d8c6413111dfd7218ca290445ccdf45b 100644
--- a/indra/newview/alpanelquicksettings.h
+++ b/indra/newview/alpanelquicksettings.h
@@ -34,7 +34,7 @@ class LLComboBox;
 class LLSlider;
 class LLSpinCtrl;
 
-class ALPanelQuickSettings : public LLPanel
+class ALPanelQuickSettings final : public LLPanel
 {
 public:
 	ALPanelQuickSettings();
diff --git a/indra/newview/alpanelquicksettingspulldown.h b/indra/newview/alpanelquicksettingspulldown.h
index f29679cc1cfe2acb0c95cce2f678f4a17ec21a3a..5d01317c17a19a9371b372afe9af72e3969c6d03 100644
--- a/indra/newview/alpanelquicksettingspulldown.h
+++ b/indra/newview/alpanelquicksettingspulldown.h
@@ -30,7 +30,7 @@
 
 class LLFrameTimer;
 
-class ALPanelQuickSettingsPulldown : public LLPanelMenuBarPulldown
+class ALPanelQuickSettingsPulldown final : public LLPanelMenuBarPulldown
 {
 public:
 	ALPanelQuickSettingsPulldown();
diff --git a/indra/newview/llavatarlistitem.h b/indra/newview/llavatarlistitem.h
index c9f40701ce54c5f218504362aea7f9b74ea1c08b..466ab19aea7d16186a198d33fa2e441480e0a6e2 100644
--- a/indra/newview/llavatarlistitem.h
+++ b/indra/newview/llavatarlistitem.h
@@ -82,12 +82,12 @@ public:
 	/**
 	 * Processes notification from speaker indicator to update children when indicator's visibility is changed.
 	 */
-	void onVisibilityChange ( BOOL new_visibility ) override; // <alchemy/>
-	S32	notifyParent(const LLSD& info) override;
-	void onMouseLeave(S32 x, S32 y, MASK mask) override;
-	void onMouseEnter(S32 x, S32 y, MASK mask) override;
-	void setValue(const LLSD& value) override;
-	void changed(U32 mask) override; // from LLFriendObserver
+	void onVisibilityChange ( BOOL new_visibility ) final override; // <alchemy/>
+	S32	notifyParent(const LLSD& info) final override;
+	void onMouseLeave(S32 x, S32 y, MASK mask) final override;
+	void onMouseEnter(S32 x, S32 y, MASK mask) final override;
+	void setValue(const LLSD& value) final override;
+	void changed(U32 mask) final override; // from LLFriendObserver
 
 	void setOnline(bool online);
 	void updateAvatarName(); // re-query the name cache
@@ -116,7 +116,7 @@ public:
 	void onInfoBtnClick();
 	void onProfileBtnClick();
 
-	/*virtual*/ BOOL handleDoubleClick(S32 x, S32 y, MASK mask) override;
+	/*virtual*/ BOOL handleDoubleClick(S32 x, S32 y, MASK mask) final override;
 
 protected:
 	/**
diff --git a/indra/newview/llblockedlistitem.h b/indra/newview/llblockedlistitem.h
index d2fee46423abfaa0322b2e8d17c4710c9fe4270f..21815788749d0f11bee9adebeba8f8f63ae588c4 100644
--- a/indra/newview/llblockedlistitem.h
+++ b/indra/newview/llblockedlistitem.h
@@ -44,7 +44,7 @@ class LLTextBox;
  * and appropriate block list item will be created depending on
  * LLMute type (LLMute::EType) and other LLMute's info
  */
-class LLBlockedListItem : public LLPanel
+class LLBlockedListItem final : public LLPanel
 {
 public:
 
diff --git a/indra/newview/llchiclet.h b/indra/newview/llchiclet.h
index 38d37a1596744713f9c4d8f883a3ed2f0b37e444..ba5243677f6b07300817758ee3e7c509b52edcd7 100644
--- a/indra/newview/llchiclet.h
+++ b/indra/newview/llchiclet.h
@@ -578,7 +578,7 @@ protected:
  * Storage class for all IM chiclets. Provides mechanism to display, 
  * scroll, create, remove chiclets.
  */
-class LLChicletPanel : public LLPanel
+class LLChicletPanel final : public LLPanel
 {
 public:
 
diff --git a/indra/newview/llchicletbar.h b/indra/newview/llchicletbar.h
index c295b999624f71e32fd2bbba5515000627a39fdc..a15ce02b90c1e816b007101ef5c9a3af4d42878e 100644
--- a/indra/newview/llchicletbar.h
+++ b/indra/newview/llchicletbar.h
@@ -34,7 +34,7 @@ class LLIMChiclet;
 class LLLayoutPanel;
 class LLLayoutStack;
 
-class LLChicletBar
+class LLChicletBar final
 	: public LLSingleton<LLChicletBar>
 	, public LLPanel
 {
diff --git a/indra/newview/llclassifieditem.h b/indra/newview/llclassifieditem.h
index 5707804d7ed5592799918a93bc9301d49eb5ee49..ea92581620af7510837d5f35859f714be17b4ff6 100644
--- a/indra/newview/llclassifieditem.h
+++ b/indra/newview/llclassifieditem.h
@@ -36,7 +36,7 @@ static const std::string CLASSIFIED_ID("classified_id");
 static const std::string CLASSIFIED_NAME("classified_name");
 using panel_classified_edit_map_t = std::map<LLUUID, LLPanelClassifiedEdit*>;
 
-class LLClassifiedItem : public LLPanel, public LLAvatarPropertiesObserver
+class LLClassifiedItem final : public LLPanel, public LLAvatarPropertiesObserver
 {
 public:
 
diff --git a/indra/newview/llcofwearables.h b/indra/newview/llcofwearables.h
index 96cd34dbbf2639a06ed1daa6477bec118fb4389d..e10e51729c671c4b3b7a5126b5f967297070aa49 100644
--- a/indra/newview/llcofwearables.h
+++ b/indra/newview/llcofwearables.h
@@ -41,7 +41,7 @@ class LLPanelClothingListItem;
 class LLPanelBodyPartsListItem;
 class LLPanelDeletableWearableListItem;
 
-class LLCOFWearables : public LLPanel
+class LLCOFWearables final : public LLPanel
 {
 public:
 
diff --git a/indra/newview/llconversationloglistitem.h b/indra/newview/llconversationloglistitem.h
index e8bfa33948f797a0a5c63c22193f4c63f543708e..ada3dc17a77d37b30c8d38c860145c7e06dfa059 100644
--- a/indra/newview/llconversationloglistitem.h
+++ b/indra/newview/llconversationloglistitem.h
@@ -42,7 +42,7 @@ class LLConversation;
  * Also LLConversationLogListItem holds pointer to its LLConversationLog.
  */
 
-class LLConversationLogListItem : public LLPanel
+class LLConversationLogListItem final : public LLPanel
 {
 public:
 	LLConversationLogListItem(const LLConversation* conversation);
diff --git a/indra/newview/llfloaterbulkpermission.h b/indra/newview/llfloaterbulkpermission.h
index bfe85d8ab41ae132f2c75ec446c0e827926f1a5c..b1fc5425421a4973f8d0c4453a6b9c7ecbd7a19e 100644
--- a/indra/newview/llfloaterbulkpermission.h
+++ b/indra/newview/llfloaterbulkpermission.h
@@ -47,7 +47,7 @@ public:
 private:
 	
 	LLFloaterBulkPermission(const LLSD& seed);	
-	virtual ~LLFloaterBulkPermission() {}
+	virtual ~LLFloaterBulkPermission() = default;
 
 	BOOL start(); // returns TRUE if the queue has started, otherwise FALSE.
 	BOOL nextObject();
diff --git a/indra/newview/llfloatercamera.cpp b/indra/newview/llfloatercamera.cpp
index fba2da93be8fb42c46b71010d0cb3aee4db1e3fe..24b93860d454703e681cd5d81d7bb09446b0ad46 100644
--- a/indra/newview/llfloatercamera.cpp
+++ b/indra/newview/llfloatercamera.cpp
@@ -60,7 +60,7 @@ bool LLFloaterCamera::sFreeCamera = false;
 bool LLFloaterCamera::sAppearanceEditing = false;
 
 // Zoom the camera in and out
-class LLPanelCameraZoom
+class LLPanelCameraZoom final
 :	public LLPanel
 {
 	LOG_CLASS(LLPanelCameraZoom);
diff --git a/indra/newview/llfloatercamera.h b/indra/newview/llfloatercamera.h
index f1f42feceb5b5d50f300fb52dcd7c32d42516601..01c8857844a4cc41f0a19bff44db7fca33b8a028 100644
--- a/indra/newview/llfloatercamera.h
+++ b/indra/newview/llfloatercamera.h
@@ -85,7 +85,7 @@ public:
 private:
 
 	LLFloaterCamera(const LLSD& val);
-	~LLFloaterCamera() {};
+	~LLFloaterCamera() = default;
 
 	/* return instance if it exists - created by LLFloaterReg */
 	static LLFloaterCamera* findInstance();
@@ -139,7 +139,7 @@ private:
  * are changed in setValue()). This class doesn't implement selection logic-
  * it's items are used inside of flatlist.
  */
-class LLPanelCameraItem 
+class LLPanelCameraItem final
 	: public LLPanel
 {
 public:
diff --git a/indra/newview/llfloaterfacebook.h b/indra/newview/llfloaterfacebook.h
index 83a750e7530f6692e4c4742413333427b606f8d4..2054dd1e04c5dac84e3d401bb486d27a11e051f7 100644
--- a/indra/newview/llfloaterfacebook.h
+++ b/indra/newview/llfloaterfacebook.h
@@ -38,7 +38,7 @@ class LLTextBox;
 class LLAvatarList;
 class LLFloaterBigPreview;
 
-class LLFacebookStatusPanel : public LLPanel
+class LLFacebookStatusPanel final : public LLPanel
 {
 public:
     LLFacebookStatusPanel();
@@ -73,7 +73,7 @@ private:
 	LLUICtrl* mCancelButton;
 };
 
-class LLFacebookPhotoPanel : public LLPanel
+class LLFacebookPhotoPanel final : public LLPanel
 {
 public:
 	LLFacebookPhotoPanel();
@@ -119,7 +119,7 @@ private:
     S32 mQuality;       // Compression quality
 };
 
-class LLFacebookCheckinPanel : public LLPanel
+class LLFacebookCheckinPanel final : public LLPanel
 {
 public:
     LLFacebookCheckinPanel();
@@ -144,7 +144,7 @@ private:
     bool mReloadingMapTexture;
 };
 
-class LLFacebookFriendsPanel : public LLPanel, public LLFriendObserver
+class LLFacebookFriendsPanel final : public LLPanel, public LLFriendObserver
 {
 public:
 	LLFacebookFriendsPanel();
diff --git a/indra/newview/llfloaterflickr.h b/indra/newview/llfloaterflickr.h
index 469760f4f96a820a864bae0f3bc5098d061df6d1..93814bc2da23a91002c52df68b1d9f8dfd6c521c 100644
--- a/indra/newview/llfloaterflickr.h
+++ b/indra/newview/llfloaterflickr.h
@@ -36,7 +36,7 @@ class LLSnapshotLivePreview;
 class LLTextBox;
 class LLFloaterBigPreview;
 
-class LLFlickrPhotoPanel : public LLPanel
+class LLFlickrPhotoPanel final : public LLPanel
 {
 public:
 	LLFlickrPhotoPanel();
@@ -84,7 +84,7 @@ private:
     LLFloaterBigPreview * mBigPreviewFloater;
 };
 
-class LLFlickrAccountPanel : public LLPanel
+class LLFlickrAccountPanel final : public LLPanel
 {
 public:
 	LLFlickrAccountPanel();
diff --git a/indra/newview/llfloatergesture.cpp b/indra/newview/llfloatergesture.cpp
index b7c2ad3279810f26457079a31bce207717eced7d..c0c952966e56020aef99ee9331849276639c677b 100644
--- a/indra/newview/llfloatergesture.cpp
+++ b/indra/newview/llfloatergesture.cpp
@@ -59,7 +59,7 @@ class LLFloaterGestureObserver final : public LLGestureManagerObserver
 {
 public:
 	LLFloaterGestureObserver(LLFloaterGesture* floater) : mFloater(floater) {}
-	virtual ~LLFloaterGestureObserver() {}
+	virtual ~LLFloaterGestureObserver() = default;
 	void changed() override { mFloater->refreshAll(); }
 
 private:
diff --git a/indra/newview/llfloatergodtools.h b/indra/newview/llfloatergodtools.h
index 6512379c74184199629bdbe7d3aee9d63efba702..b9ae6a183a4796f98f33739f10f168bad2e0402f 100644
--- a/indra/newview/llfloatergodtools.h
+++ b/indra/newview/llfloatergodtools.h
@@ -119,7 +119,7 @@ public:
 // LLPanelRegionTools
 //-----------------------------------------------------------------------------
 
-class LLPanelRegionTools 
+class LLPanelRegionTools final
 : public LLPanel
 {
 public:
@@ -181,7 +181,7 @@ protected:
 // LLPanelGridTools
 //-----------------------------------------------------------------------------
 
-class LLPanelGridTools
+class LLPanelGridTools final
 : public LLPanel
 {
 public:
@@ -205,7 +205,7 @@ protected:
 // LLPanelObjectTools
 //-----------------------------------------------------------------------------
 
-class LLPanelObjectTools 
+class LLPanelObjectTools final
 : public LLPanel
 {
 public:
@@ -247,7 +247,7 @@ protected:
 // LLPanelRequestTools
 //-----------------------------------------------------------------------------
 
-class LLPanelRequestTools : public LLPanel
+class LLPanelRequestTools final : public LLPanel
 {
 public:
 	LLPanelRequestTools();
diff --git a/indra/newview/llfloatergroups.h b/indra/newview/llfloatergroups.h
index f1ac34438208f7202c3cc7ce626c91cd68d3ab02..a9bef8ac07f9124afa554fcd3b6cf4c992b23da4 100644
--- a/indra/newview/llfloatergroups.h
+++ b/indra/newview/llfloatergroups.h
@@ -80,7 +80,7 @@ protected:
 	static instance_map_t sInstances;
 };
 
-class LLPanelGroups : public LLPanel, public LLOldEvents::LLSimpleListener
+class LLPanelGroups final : public LLPanel, public LLOldEvents::LLSimpleListener
 {
 public:
 	LLPanelGroups();
diff --git a/indra/newview/llfloaterimnearbychat.h b/indra/newview/llfloaterimnearbychat.h
index fbeff5e339ad5a859aeb7b57667e792b2d3a18a5..244d04f000bf4b718a38ce1c4edf7b061779dd8e 100644
--- a/indra/newview/llfloaterimnearbychat.h
+++ b/indra/newview/llfloaterimnearbychat.h
@@ -39,7 +39,7 @@ class LLFloaterIMNearbyChat final : public LLFloaterIMSessionTab
 public:
 	// constructor for inline chat-bars (e.g. hosted in chat history window)
 	LLFloaterIMNearbyChat(const LLSD& key = LLSD(LLUUID()));
-	~LLFloaterIMNearbyChat() {}
+	~LLFloaterIMNearbyChat() = default;
 
 	static LLFloaterIMNearbyChat* buildFloater(const LLSD& key);
 
diff --git a/indra/newview/llfloaterland.cpp b/indra/newview/llfloaterland.cpp
index ea03b1a0272c2e949c5309d7df1bf2773fa918b9..57beb914c2dd4c9b7ba016dc26d24d1826b8ac0c 100644
--- a/indra/newview/llfloaterland.cpp
+++ b/indra/newview/llfloaterland.cpp
@@ -116,7 +116,7 @@ public:
 };
 
 
-class LLPanelLandExperiences
+class LLPanelLandExperiences final
 	:	public LLPanel
 {
 public:	
diff --git a/indra/newview/llfloaterland.h b/indra/newview/llfloaterland.h
index 2d5b0f8552bff25a8c431c794c566ea301f33bfe..ee317623e18eab1f1be63336ed2a741e9d772aee 100644
--- a/indra/newview/llfloaterland.h
+++ b/indra/newview/llfloaterland.h
@@ -128,7 +128,7 @@ public:
 };
 
 
-class LLPanelLandGeneral
+class LLPanelLandGeneral final
 :	public LLPanel
 {
 public:
@@ -229,7 +229,7 @@ protected:
 	static LLHandle<LLFloater> sBuyPassDialogHandle;
 };
 
-class LLPanelLandObjects
+class LLPanelLandObjects final
 :	public LLPanel
 {
 public:
@@ -300,7 +300,7 @@ protected:
 };
 
 
-class LLPanelLandOptions
+class LLPanelLandOptions final
 :	public LLPanel
 {
 public:
@@ -347,7 +347,7 @@ private:
 };
 
 
-class LLPanelLandAccess
+class LLPanelLandAccess final
 :	public LLPanel
 {
 public:
@@ -380,7 +380,7 @@ protected:
 };
 
 
-class LLPanelLandCovenant
+class LLPanelLandCovenant final
 :	public LLPanel
 {
 public:
diff --git a/indra/newview/llfloatermarketplacelistings.h b/indra/newview/llfloatermarketplacelistings.h
index fa5dac1495a72e2e88bbe1a285c039a5df0bf35f..3657405f1a3fe91e3b212ff3cc319a8e88a19260 100644
--- a/indra/newview/llfloatermarketplacelistings.h
+++ b/indra/newview/llfloatermarketplacelistings.h
@@ -47,7 +47,7 @@ class LLFloaterMarketplaceListings;
 // Class LLPanelMarketplaceListings
 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-class LLPanelMarketplaceListings : public LLPanel
+class LLPanelMarketplaceListings final : public LLPanel
 {
 public:
     LLPanelMarketplaceListings();
diff --git a/indra/newview/llfloatermessagebuilder.h b/indra/newview/llfloatermessagebuilder.h
index fb52b1361a214298e8fa33e256c98184ab38c89e..8f6a9ab0114bbf92a265b11607f5889da73e5dde 100644
--- a/indra/newview/llfloatermessagebuilder.h
+++ b/indra/newview/llfloatermessagebuilder.h
@@ -43,7 +43,7 @@ class LLFloaterMessageBuilder final : public LLFloater, public LLEventTimer
 {
 public:
 	LLFloaterMessageBuilder(const LLSD &);
-	~LLFloaterMessageBuilder() {}
+	~LLFloaterMessageBuilder() = default;
 	BOOL postBuild() override;
 	void onOpen(const LLSD& key) override;
 	static void show(const std::string& initial_text);
diff --git a/indra/newview/llfloatermessagerewriter.h b/indra/newview/llfloatermessagerewriter.h
index 35417076e9b6b6f08e587cf32d2b812b36c4bdb3..eb262454a94ed7bd6ec3de214291a9f7c5617cab 100644
--- a/indra/newview/llfloatermessagerewriter.h
+++ b/indra/newview/llfloatermessagerewriter.h
@@ -25,7 +25,7 @@ class LLFloaterMessageRewriter final : public LLFloater
 {
 public:
 	LLFloaterMessageRewriter(const LLSD& key);
-	~LLFloaterMessageRewriter() {}
+	~LLFloaterMessageRewriter() = default;
 	BOOL postBuild() override;
 	
 private:
diff --git a/indra/newview/llfloaterparticleeditor.h b/indra/newview/llfloaterparticleeditor.h
index 3b0e38b1d9490d1d5366fdf6f84648a61971c78b..a4e50868ad2add61aa0e6b81d4d6cd49da50bf3d 100644
--- a/indra/newview/llfloaterparticleeditor.h
+++ b/indra/newview/llfloaterparticleeditor.h
@@ -142,7 +142,7 @@ private:
 		void fire(const LLUUID& inventoryItem) override;
 		
 	protected:
-		~LLParticleScriptCreationCallback() {}
+		~LLParticleScriptCreationCallback() = default;
 		
 		LLFloaterParticleEditor* mEditor;
 	};
diff --git a/indra/newview/llfloaterpreference.cpp b/indra/newview/llfloaterpreference.cpp
index 244fec364b17818e39a504b2a4be116270c2f90e..81b99eccbf3a618feca7c8bb50b638bd2d884a54 100644
--- a/indra/newview/llfloaterpreference.cpp
+++ b/indra/newview/llfloaterpreference.cpp
@@ -2517,7 +2517,7 @@ void LLPanelPreference::setHardwareDefaults()
 {
 }
 
-class LLPanelPreferencePrivacy : public LLPanelPreference
+class LLPanelPreferencePrivacy final : public LLPanelPreference
 {
 public:
 	LLPanelPreferencePrivacy()
diff --git a/indra/newview/llfloaterpreference.h b/indra/newview/llfloaterpreference.h
index 11e657e76f4bb0d74d86c61ef4cae0979b542f14..6cb151be75c97c2f158963653647fbcfc6e319f7 100644
--- a/indra/newview/llfloaterpreference.h
+++ b/indra/newview/llfloaterpreference.h
@@ -288,7 +288,7 @@ private:
 	LOG_CLASS(LLPanelPreference);
 };
 
-class LLPanelPreferenceGraphics : public LLPanelPreference
+class LLPanelPreferenceGraphics final : public LLPanelPreference
 {
 public:
 	BOOL postBuild() override;
diff --git a/indra/newview/llfloaterregioninfo.h b/indra/newview/llfloaterregioninfo.h
index dc5aa8c1e56019186864dba1fcef9c526ba7324f..c0ec39ee9afbf1d3a5630e9df46fd3a7da8ff36d 100644
--- a/indra/newview/llfloaterregioninfo.h
+++ b/indra/newview/llfloaterregioninfo.h
@@ -178,14 +178,14 @@ protected:
 // Actual panels start here
 /////////////////////////////////////////////////////////////////////////////
 
-class LLPanelRegionGeneralInfo : public LLPanelRegionInfo
+class LLPanelRegionGeneralInfo final : public LLPanelRegionInfo
 {
 	
 public:
 	LLPanelRegionGeneralInfo()
 		:	LLPanelRegionInfo(),
 			mObjBonusFactor(0.f) {}
-	~LLPanelRegionGeneralInfo() {}
+	~LLPanelRegionGeneralInfo() = default;
 
 	bool refreshFromRegion(LLViewerRegion* region) override;
 	
@@ -211,12 +211,12 @@ protected:
 
 /////////////////////////////////////////////////////////////////////////////
 
-class LLPanelRegionDebugInfo : public LLPanelRegionInfo
+class LLPanelRegionDebugInfo final : public LLPanelRegionInfo
 {
 public:
 	LLPanelRegionDebugInfo()
 		:	LLPanelRegionInfo(), mTargetAvatar() {}
-	~LLPanelRegionDebugInfo() {}
+	~LLPanelRegionDebugInfo() = default;
 	// LLPanel
 	BOOL postBuild() override;
 
@@ -242,7 +242,7 @@ private:
 
 /////////////////////////////////////////////////////////////////////////////
 
-class LLPanelRegionTerrainInfo : public LLPanelRegionInfo
+class LLPanelRegionTerrainInfo final : public LLPanelRegionInfo
 {
 	LOG_CLASS(LLPanelRegionTerrainInfo);
 
@@ -251,7 +251,7 @@ public:
 		: LLPanelRegionInfo(),
 		mConfirmedTextureHeights(false),
 		mAskedTextureHeights(false) {}
-	~LLPanelRegionTerrainInfo() {}
+	~LLPanelRegionTerrainInfo() = default;
 
 	BOOL postBuild() override;												// LLPanel
 
@@ -278,7 +278,7 @@ private:
 
 /////////////////////////////////////////////////////////////////////////////
 
-class LLPanelEstateInfo : public LLPanelRegionInfo
+class LLPanelEstateInfo final : public LLPanelRegionInfo
 {
 public:
 	static void initDispatch(LLDispatcher& dispatch);
@@ -302,7 +302,7 @@ public:
 	bool onMessageCommit(const LLSD& notification, const LLSD& response);
 	
 	LLPanelEstateInfo();
-	~LLPanelEstateInfo() {}
+	~LLPanelEstateInfo() = default;
 	
 	void updateControls(LLViewerRegion* region);
 	
@@ -339,11 +339,11 @@ protected:
 
 /////////////////////////////////////////////////////////////////////////////
 
-class LLPanelEstateCovenant : public LLPanelRegionInfo
+class LLPanelEstateCovenant final : public LLPanelRegionInfo
 {
 public:
 	LLPanelEstateCovenant();
-	~LLPanelEstateCovenant() {}
+	~LLPanelEstateCovenant() = default;
 	
 	// LLPanel
 	BOOL postBuild() override;
@@ -401,7 +401,7 @@ protected:
 
 /////////////////////////////////////////////////////////////////////////////
 
-class LLPanelEnvironmentInfo : public LLPanelRegionInfo
+class LLPanelEnvironmentInfo final : public LLPanelRegionInfo
 {
 	LOG_CLASS(LLPanelEnvironmentInfo);
 
@@ -461,7 +461,7 @@ private:
 	LLComboBox*		mDayCyclePresetCombo;
 };
 
-class LLPanelRegionExperiences : public LLPanelRegionInfo
+class LLPanelRegionExperiences final : public LLPanelRegionInfo
 {
 	LOG_CLASS(LLPanelEnvironmentInfo);
 
@@ -498,7 +498,7 @@ private:
 };
 
 
-class LLPanelEstateAccess : public LLPanelRegionInfo
+class LLPanelEstateAccess final : public LLPanelRegionInfo
 {
 	LOG_CLASS(LLPanelEnvironmentInfo);
 
diff --git a/indra/newview/llfloaterscriptlimits.h b/indra/newview/llfloaterscriptlimits.h
index ef79ff48d2a6b87d2450b116e0c66175b9fa612c..9c44cd402821470e34af75cd733f188e138f97bb 100644
--- a/indra/newview/llfloaterscriptlimits.h
+++ b/indra/newview/llfloaterscriptlimits.h
@@ -85,7 +85,7 @@ protected:
 // Memory panel
 /////////////////////////////////////////////////////////////////////////////
 
-class LLPanelScriptLimitsRegionMemory : public LLPanelScriptLimitsInfo, LLRemoteParcelInfoObserver
+class LLPanelScriptLimitsRegionMemory final : public LLPanelScriptLimitsInfo, LLRemoteParcelInfoObserver
 {
 	
 public:
diff --git a/indra/newview/llfloatertwitter.h b/indra/newview/llfloatertwitter.h
index 3b6ba2d22cf2da603ab641803886e5d1659617f1..6d77b20928369e92a4814612ac02095f017dc9e7 100644
--- a/indra/newview/llfloatertwitter.h
+++ b/indra/newview/llfloatertwitter.h
@@ -36,7 +36,7 @@ class LLSnapshotLivePreview;
 class LLTextBox;
 class LLFloaterBigPreview;
 
-class LLTwitterPhotoPanel : public LLPanel
+class LLTwitterPhotoPanel final : public LLPanel
 {
 public:
 	LLTwitterPhotoPanel();
@@ -88,7 +88,7 @@ private:
 	std::string mOldStatusText;
 };
 
-class LLTwitterAccountPanel : public LLPanel
+class LLTwitterAccountPanel final : public LLPanel
 {
 public:
 	LLTwitterAccountPanel();
diff --git a/indra/newview/llfloateruipreview.cpp b/indra/newview/llfloateruipreview.cpp
index 205a58dd04a77a0bba4044f1e098a14d27ccd1bf..a80ced3a18694d9c5b566da967812a34333abe01 100644
--- a/indra/newview/llfloateruipreview.cpp
+++ b/indra/newview/llfloateruipreview.cpp
@@ -99,7 +99,7 @@ class LLFadeEventTimer;
 class LLPreviewedFloater;
 
 // Implementation of custom overlapping element display panel
-class LLOverlapPanel : public LLPanel
+class LLOverlapPanel final : public LLPanel
 {
 public:
 	struct Params : public LLInitParam::Block<Params, LLPanel::Params>
diff --git a/indra/newview/llgrouplist.h b/indra/newview/llgrouplist.h
index 138aa36741b9447c409669686c4aecfa1de12923..7f95979e3485f5ac370240e5f88f96ab37e7b44a 100644
--- a/indra/newview/llgrouplist.h
+++ b/indra/newview/llgrouplist.h
@@ -44,7 +44,7 @@
  * 
  * @see setNameFilter()
  */
-class LLGroupList: public LLFlatListViewEx, public LLOldEvents::LLSimpleListener
+class LLGroupList final : public LLFlatListViewEx, public LLOldEvents::LLSimpleListener
 {
 	LOG_CLASS(LLGroupList);
 public:
@@ -87,7 +87,7 @@ class LLButton;
 class LLGroupIconCtrl;
 class LLTextBox;
 
-class LLGroupListItem : public LLPanel
+class LLGroupListItem final : public LLPanel
 	, public LLGroupMgrObserver
 {
 public:
diff --git a/indra/newview/llhints.cpp b/indra/newview/llhints.cpp
index f5f9c18b914e7a1516025add197a20c705075993..c4b4c76f5de8215fd8853244b6a1fe8c28e5fff9 100644
--- a/indra/newview/llhints.cpp
+++ b/indra/newview/llhints.cpp
@@ -36,7 +36,7 @@
 #include "lliconctrl.h"
 #include "llsdparam.h"
 
-class LLHintPopup : public LLPanel
+class LLHintPopup final : public LLPanel
 {
 public:
 
diff --git a/indra/newview/llhudview.cpp b/indra/newview/llhudview.cpp
index 88143e6b8de1cb7c1ec1dcf86154627d8fe262b4..c7577bc2e8b3a83e6ddab0af18302e84fccffd10 100644
--- a/indra/newview/llhudview.cpp
+++ b/indra/newview/llhudview.cpp
@@ -49,10 +49,6 @@ LLHUDView::LLHUDView(const LLRect& r)
 	setShape(r, true);
 }
 
-LLHUDView::~LLHUDView()
-{
-}
-
 // virtual
 void LLHUDView::draw()
 {
diff --git a/indra/newview/llhudview.h b/indra/newview/llhudview.h
index 3914be7331db8c775535c1fc1f818e2ed220e220..7d0968a3842888904da6630f8bd97127c0ad4c5c 100644
--- a/indra/newview/llhudview.h
+++ b/indra/newview/llhudview.h
@@ -32,12 +32,12 @@
 
 class LLVector3d;
 
-class LLHUDView
+class LLHUDView final
 : public LLPanel
 {
 public:
 	LLHUDView(const LLRect& rect);
-	virtual ~LLHUDView();
+	virtual ~LLHUDView() = default;
 
 	void draw() override;
 
diff --git a/indra/newview/llinventorypanel.cpp b/indra/newview/llinventorypanel.cpp
index f5470df944aa4fe51f079e416dc478a667667790..195a19d94f901e9fa36d5e9357666398c47c1100 100644
--- a/indra/newview/llinventorypanel.cpp
+++ b/indra/newview/llinventorypanel.cpp
@@ -1704,7 +1704,7 @@ class LLInventoryRecentItemsPanel;
 static LLDefaultChildRegistry::Register<LLInventoryRecentItemsPanel> t_recent_inventory_panel("recent_inventory_panel");
 
 static const LLRecentInventoryBridgeBuilder RECENT_ITEMS_BUILDER;
-class LLInventoryRecentItemsPanel : public LLInventoryPanel
+class LLInventoryRecentItemsPanel final : public LLInventoryPanel
 {
 public:
 	struct Params :	public LLInitParam::Block<Params, LLInventoryPanel::Params>
diff --git a/indra/newview/llinventorypanel.h b/indra/newview/llinventorypanel.h
index 7cd101ad720e5aaf37e9ccc287112a8de30ec00b..7d05bbd02d90874bc4727a2751baa32118d33bae 100644
--- a/indra/newview/llinventorypanel.h
+++ b/indra/newview/llinventorypanel.h
@@ -149,20 +149,20 @@ public:
 	LLFolderViewModelInventory& getRootViewModel() { return mInventoryViewModel; }
 
 	// LLView methods
-	void draw() override;
-	/*virtual*/ BOOL handleKeyHere( KEY key, MASK mask ) override;
-	BOOL handleHover(S32 x, S32 y, MASK mask) override;
+	void draw() final override;
+	/*virtual*/ BOOL handleKeyHere( KEY key, MASK mask ) final override;
+	BOOL handleHover(S32 x, S32 y, MASK mask) final override;
 	BOOL handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop,
 								   EDragAndDropType cargo_type,
 								   void* cargo_data,
 								   EAcceptance* accept,
-								   std::string& tooltip_msg) override;
+								   std::string& tooltip_msg) final override;
 	// LLUICtrl methods
-	 /*virtual*/ void onFocusLost() override;
-	 /*virtual*/ void onFocusReceived() override;
+	 /*virtual*/ void onFocusLost() final override;
+	 /*virtual*/ void onFocusReceived() final override;
 
 	// LLBadgeHolder methods
-	bool addBadge(LLBadge * badge) override;
+	bool addBadge(LLBadge * badge) final override;
 
 	// Call this method to set the selection.
 	void openAllFolders();
diff --git a/indra/newview/lllandmarklist.h b/indra/newview/lllandmarklist.h
index 4983af562ab282eaa1645fa8529086c0110deaa5..5eef70db9f8ebb59ad124ad1d32a66f6d0fffafe 100644
--- a/indra/newview/lllandmarklist.h
+++ b/indra/newview/lllandmarklist.h
@@ -40,7 +40,7 @@ class LLLandmarkList
 public:
 	typedef std::function<void(LLLandmark*)> loaded_callback_t;
 
-	LLLandmarkList() {}
+	LLLandmarkList() = default;
 	~LLLandmarkList();
 
 	//S32					getLength() { return mList.getLength(); }
diff --git a/indra/newview/lllightshare.h b/indra/newview/lllightshare.h
index 743796319cf76bdc6b5c6de7a040f5403ac6105c..da8dd693fc330981814d43d07f96a909c2bf3506 100644
--- a/indra/newview/lllightshare.h
+++ b/indra/newview/lllightshare.h
@@ -28,7 +28,7 @@
 
 struct LSColor3
 {
-	LSColor3() {};
+	LSColor3() = default;
 	LSColor3(F32 pRed, F32 pGreen, F32 pBlue)
 	{
 		red=pRed;
@@ -42,7 +42,7 @@ struct LSColor3
 
 struct LSVector3
 {
-	LSVector3() {}
+	LSVector3() = default;
 	LSVector3(F32 pX, F32 pY, F32 pZ)
 	{
 		X=pX;
@@ -56,7 +56,7 @@ struct LSVector3
 
 struct LSVector2
 {
-	LSVector2() {}
+	LSVector2() = default;
 	LSVector2(F32 pX, F32 pY)
 	{
 		X=pX;
@@ -68,7 +68,7 @@ struct LSVector2
 
 struct LSColor4
 {
-	LSColor4() {}
+	LSColor4() = default;
 	LSColor4(F32 pRed, F32 pGreen, F32 pBlue, F32 pAlpha)
 	{
 		red=pRed;
@@ -84,7 +84,7 @@ struct LSColor4
 
 struct LightsharePacket
 {
-	LightsharePacket() {}
+	LightsharePacket() = default;
 	LSColor3 waterColor;
 	F32 waterFogDensityExponent;
 	F32 underwaterFogModifier;
@@ -130,7 +130,7 @@ class LLLightshare : public LLSingleton<LLLightshare>
 {
 	friend class LLDispatchLightshare;
 	LLSINGLETON(LLLightshare);
-	~LLLightshare() {}
+	~LLLightshare() = default;
 public:
 	void processLightshareRefresh();
 	bool getState() const { return mState; };
diff --git a/indra/newview/llmediactrl.h b/indra/newview/llmediactrl.h
index ed89e4ac253176dbe31ace96bf618b681f2b4867..ccb196436c9268783b02da91c47b92c05448f565 100644
--- a/indra/newview/llmediactrl.h
+++ b/indra/newview/llmediactrl.h
@@ -38,7 +38,7 @@ class LLContextMenu;
 
 ////////////////////////////////////////////////////////////////////////////////
 //
-class LLMediaCtrl :
+class LLMediaCtrl final :
 	public LLPanel,
 	public LLViewerMediaObserver,
 	public LLViewerMediaEventEmitter,
diff --git a/indra/newview/llmoveview.h b/indra/newview/llmoveview.h
index 6530d438d356885cdddd4f4c1d4ea0d2d656e788..c2cc04a0526414ef2ce24781e15453005b99265d 100644
--- a/indra/newview/llmoveview.h
+++ b/indra/newview/llmoveview.h
@@ -115,7 +115,7 @@ private:
 /**
  * This class contains Stand Up and Stop Flying buttons displayed above Move button in bottom tray
  */
-class LLPanelStandStopFlying : public LLPanel
+class LLPanelStandStopFlying final : public LLPanel
 {
 	LOG_CLASS(LLPanelStandStopFlying);
 public:
diff --git a/indra/newview/llnavigationbar.h b/indra/newview/llnavigationbar.h
index ef023f20d3602f82886e89401721b126821db9e8..4040023c16087737955ec86017c36593d8295126 100755
--- a/indra/newview/llnavigationbar.h
+++ b/indra/newview/llnavigationbar.h
@@ -82,7 +82,7 @@ protected:
 /**
  * Web browser-like navigation bar.
  */ 
-class LLNavigationBar
+class LLNavigationBar final
 	:	public LLPanel, public LLSingleton<LLNavigationBar>, private LLDestroyClass<LLNavigationBar>
 {
 	LLSINGLETON(LLNavigationBar);
diff --git a/indra/newview/llnotificationlistitem.h b/indra/newview/llnotificationlistitem.h
index fe932a0f951c39bf0e5c798e8b5d995a7107496e..a17498f8c5ee5e5e142f824b0cfef99673341bed 100644
--- a/indra/newview/llnotificationlistitem.h
+++ b/indra/newview/llnotificationlistitem.h
@@ -190,7 +190,7 @@ private:
     LLButton*		mInfoBtn;
 };
 
-class LLGroupNoticeNotificationListItem
+class LLGroupNoticeNotificationListItem final
     : public LLGroupNotificationListItem
 {
 public:
@@ -219,7 +219,7 @@ private:
     LLOfferInfo*    mInventoryOffer;
 };
 
-class LLTransactionNotificationListItem : public LLNotificationListItem
+class LLTransactionNotificationListItem final : public LLNotificationListItem
 {
 public:
     static std::set<std::string> getTypes();
@@ -233,7 +233,7 @@ private:
     LLAvatarIconCtrl* mAvatarIconExp;
 };
 
-class LLSystemNotificationListItem : public LLNotificationListItem
+class LLSystemNotificationListItem final : public LLNotificationListItem
 {
 public:
 	BOOL postBuild() override;
diff --git a/indra/newview/lloutfitgallery.h b/indra/newview/lloutfitgallery.h
index e2b8fdae971c533057197ec52f45265239be54c2..a8c4c1df801bafd72da52e89eb1d994790fddc10 100644
--- a/indra/newview/lloutfitgallery.h
+++ b/indra/newview/lloutfitgallery.h
@@ -228,7 +228,7 @@ private:
 };
 
 
-class LLOutfitGalleryGearMenu : public LLOutfitListGearMenuBase
+class LLOutfitGalleryGearMenu final : public LLOutfitListGearMenuBase
 {
 public:
     friend class LLOutfitGallery;
diff --git a/indra/newview/llpanelaomini.h b/indra/newview/llpanelaomini.h
index 34744a141dfd3102dc0d1cb5d87af4f61c571c13..6ac501ee0c26abf5dace514d620ac82969c7c1a3 100644
--- a/indra/newview/llpanelaomini.h
+++ b/indra/newview/llpanelaomini.h
@@ -36,7 +36,7 @@
 class LLComboBox;
 //class LLUICtrl;
 
-class LLPanelAOMini : public LLPanel
+class LLPanelAOMini final : public LLPanel
 {
 public:
 	LLPanelAOMini();
diff --git a/indra/newview/llpanelaopulldown.h b/indra/newview/llpanelaopulldown.h
index 25de53c83733a35dbfa43cea7fa1de784bd750fb..56b5c1a9e4f6fabf27fa6aa4c175e471478c223d 100644
--- a/indra/newview/llpanelaopulldown.h
+++ b/indra/newview/llpanelaopulldown.h
@@ -35,7 +35,7 @@
 
 class LLFrameTimer;
 
-class LLPanelAOPulldown : public LLPanelMenuBarPulldown
+class LLPanelAOPulldown final : public LLPanelMenuBarPulldown
 {
 public:
 	LLPanelAOPulldown();
diff --git a/indra/newview/llpanelappearancetab.h b/indra/newview/llpanelappearancetab.h
index 2ed6b004977009cad0e13242f8acc6adde2c45e9..ade7695ceb8b0c50117a0c06e4cef474c0146d66 100644
--- a/indra/newview/llpanelappearancetab.h
+++ b/indra/newview/llpanelappearancetab.h
@@ -33,7 +33,7 @@ class LLPanelAppearanceTab : public LLPanel
 {
 public:
 	LLPanelAppearanceTab() : LLPanel() {}
-	virtual ~LLPanelAppearanceTab() {}
+	virtual ~LLPanelAppearanceTab() = default;
 
 	virtual void setFilterSubString(const std::string& string) = 0;
 
diff --git a/indra/newview/llpanelface.h b/indra/newview/llpanelface.h
index 6d7d53d1c7574c21c8586b8b03e092fa9e7c5105..70c65c0482f8dd4c3d2759f8ac13278c0e85c2c4 100644
--- a/indra/newview/llpanelface.h
+++ b/indra/newview/llpanelface.h
@@ -91,7 +91,7 @@ public:
 	virtual DataType get(LLTextureEntry* entry) { return (entry*(TEGetFunc)); }
 };
 
-class LLPanelFace : public LLPanel
+class LLPanelFace final : public LLPanel
 {
 public:
     BOOL	postBuild() override;
diff --git a/indra/newview/llpanelgenerictip.h b/indra/newview/llpanelgenerictip.h
index f8a3413fe4b7e5f1069106836985965ad2583d9b..1e3ea3ed16197cb7aa3180e9e6ffe9e9fdf68407 100644
--- a/indra/newview/llpanelgenerictip.h
+++ b/indra/newview/llpanelgenerictip.h
@@ -34,7 +34,7 @@
  * Represents tip toast panel that contains only one child element - message text.
  * This panel can be used for different cases of tip notifications.
  */
-class LLPanelGenericTip: public LLPanelTipToast
+class LLPanelGenericTip final : public LLPanelTipToast
 {
 	// disallow instantiation of this class
 private:
diff --git a/indra/newview/llpanelgroup.h b/indra/newview/llpanelgroup.h
index ff68931e9721a4200d2b749a980168a0dde9979c..caea6d4cad6e51abffba1a71dc5bd1252debed83 100644
--- a/indra/newview/llpanelgroup.h
+++ b/indra/newview/llpanelgroup.h
@@ -43,7 +43,7 @@ class LLAgent;
 class LLAccordionCtrl;
 
 
-class LLPanelGroup : public LLPanel,
+class LLPanelGroup final : public LLPanel,
 					 public LLGroupMgrObserver,
 					 public LLVoiceClientStatusObserver
 {
diff --git a/indra/newview/llpanelgroupbanlist.h b/indra/newview/llpanelgroupbanlist.h
index 348f8b205f6a3030cb6a9697a03f3243d2a3d5f9..9ab906d0301d46e7f08b6ceacea2e2dcde52343e 100644
--- a/indra/newview/llpanelgroupbanlist.h
+++ b/indra/newview/llpanelgroupbanlist.h
@@ -37,7 +37,7 @@
 class LLNameListCtrl;
 class LLButton;
 
-class LLPanelGroupBanlist : public LLPanelGroupTab
+class LLPanelGroupBanlist final : public LLPanelGroupTab
 {
 public:
 	LLPanelGroupBanlist();
diff --git a/indra/newview/llpanelgroupbulkban.h b/indra/newview/llpanelgroupbulkban.h
index 0c46c220daccbdacb8ee721658001933873326b3..1599ac519562fac154eb4a07d44105a645b7f457 100644
--- a/indra/newview/llpanelgroupbulkban.h
+++ b/indra/newview/llpanelgroupbulkban.h
@@ -32,11 +32,11 @@
 
 class LLAvatarName;
 
-class LLPanelGroupBulkBan : public LLPanelGroupBulk
+class LLPanelGroupBulkBan final : public LLPanelGroupBulk
 {
 public:
 	LLPanelGroupBulkBan(const LLUUID& group_id);
-	~LLPanelGroupBulkBan() {}
+	~LLPanelGroupBulkBan() = default;
 
 	BOOL postBuild() override;
 
diff --git a/indra/newview/llpanelgroupexperiences.cpp b/indra/newview/llpanelgroupexperiences.cpp
index a6006ab47fe0b465f1a52eb976ec198f0bd84d6d..0a577a3fc2e950e3d2e18876739f89fc6bcfc450 100644
--- a/indra/newview/llpanelgroupexperiences.cpp
+++ b/indra/newview/llpanelgroupexperiences.cpp
@@ -45,10 +45,6 @@ LLPanelGroupExperiences::LLPanelGroupExperiences()
 {
 }
 
-LLPanelGroupExperiences::~LLPanelGroupExperiences()
-{
-}
-
 BOOL LLPanelGroupExperiences::postBuild()
 {
 	mExperiencesList = getChild<LLFlatListView>("experiences_list");
diff --git a/indra/newview/llpanelgroupexperiences.h b/indra/newview/llpanelgroupexperiences.h
index 31a9b0cb08c180832e05068a0a22652789bc54cb..a2049438a2d71b9342c3ad818f1b7687c5f176f7 100644
--- a/indra/newview/llpanelgroupexperiences.h
+++ b/indra/newview/llpanelgroupexperiences.h
@@ -31,11 +31,11 @@
 
 class LLFlatListView;
 
-class LLPanelGroupExperiences : public LLPanelGroupTab
+class LLPanelGroupExperiences final : public LLPanelGroupTab
 {
 public:
 	LLPanelGroupExperiences();
-	virtual ~LLPanelGroupExperiences();
+	virtual ~LLPanelGroupExperiences() = default;
 
 	// LLPanelGroupTab
 	void activate() override;
diff --git a/indra/newview/llpanelgroupgeneral.cpp b/indra/newview/llpanelgroupgeneral.cpp
index df69dae37fcaafb260ee8400e82de80f86a6b776..0e4e394078b73564f149009f0dc30761956309e8 100644
--- a/indra/newview/llpanelgroupgeneral.cpp
+++ b/indra/newview/llpanelgroupgeneral.cpp
@@ -80,10 +80,6 @@ LLPanelGroupGeneral::LLPanelGroupGeneral()
 
 }
 
-LLPanelGroupGeneral::~LLPanelGroupGeneral()
-{
-}
-
 BOOL LLPanelGroupGeneral::postBuild()
 {
 	bool recurse = true;
diff --git a/indra/newview/llpanelgroupgeneral.h b/indra/newview/llpanelgroupgeneral.h
index eb942860f4d31da09896b80b09b174f126d4790a..94b071dfae996050011da4a29a898c13fefca263 100644
--- a/indra/newview/llpanelgroupgeneral.h
+++ b/indra/newview/llpanelgroupgeneral.h
@@ -44,7 +44,7 @@ class LLPanelGroupGeneral : public LLPanelGroupTab
 {
 public:
 	LLPanelGroupGeneral();
-	virtual ~LLPanelGroupGeneral();
+	virtual ~LLPanelGroupGeneral() = default;
 
 	// LLPanelGroupTab
 	void activate() override;
diff --git a/indra/newview/llpanelmarketplaceinboxinventory.h b/indra/newview/llpanelmarketplaceinboxinventory.h
index 4f348a578f1ce2bb131a0e10f8e686b52494448f..c8a1d7b9fec68cf9a3bc3988762780b18439daba 100644
--- a/indra/newview/llpanelmarketplaceinboxinventory.h
+++ b/indra/newview/llpanelmarketplaceinboxinventory.h
@@ -36,7 +36,7 @@
 
 
 
-class LLInboxInventoryPanel : public LLInventoryPanel
+class LLInboxInventoryPanel final : public LLInventoryPanel
 {
 public:
 	struct Params : public LLInitParam::Block<Params, LLInventoryPanel::Params>
diff --git a/indra/newview/llpanelobject.cpp b/indra/newview/llpanelobject.cpp
index d4f7345166797abfed2876a7826a4bb7533e5ac1..9cefcd315628e2bfb346a895bc0083a1bfd8e42a 100644
--- a/indra/newview/llpanelobject.cpp
+++ b/indra/newview/llpanelobject.cpp
@@ -311,12 +311,6 @@ LLPanelObject::LLPanelObject()
 	mCommitCallbackRegistrar.add("Build.Paste", boost::bind(&LLPanelObject::onClickBtnPasteData, this, _2));
 }
 
-
-LLPanelObject::~LLPanelObject()
-{
-	// Children all cleaned up by default view destructor.
-}
-
 void LLPanelObject::getState( )
 {
 	LLViewerObject* objectp = LLSelectMgr::getInstance()->getSelection()->getFirstRootObject();
diff --git a/indra/newview/llpanelobject.h b/indra/newview/llpanelobject.h
index 31d6539eb3c8814f050c9927ec53a94f6fef1db4..0d7d250d4326491173e12c38aa2cb2de144204b6 100644
--- a/indra/newview/llpanelobject.h
+++ b/indra/newview/llpanelobject.h
@@ -44,11 +44,11 @@ class LLTextureCtrl;
 class LLInventoryItem;
 class LLUUID;
 
-class LLPanelObject : public LLPanel
+class LLPanelObject final : public LLPanel
 {
 public:
 	LLPanelObject();
-	virtual ~LLPanelObject();
+	virtual ~LLPanelObject() = default; // Children all cleaned up by default view destructor.
 
 	BOOL	postBuild() override;
 	void	draw() override;
diff --git a/indra/newview/llpanelobjectinventory.h b/indra/newview/llpanelobjectinventory.h
index ae05628b7c3cc726c28d3c8b4cc45f28398e577d..f37db5d4c91602d71944433e45c5757e564031c3 100644
--- a/indra/newview/llpanelobjectinventory.h
+++ b/indra/newview/llpanelobjectinventory.h
@@ -45,7 +45,7 @@ class LLViewerObject;
 // particular task's inventory.
 //
 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-class LLPanelObjectInventory : public LLPanel, public LLVOInventoryListener
+class LLPanelObjectInventory final : public LLPanel, public LLVOInventoryListener
 {
 public:
 	// dummy param block for template registration purposes
diff --git a/indra/newview/llpanelonlinestatus.h b/indra/newview/llpanelonlinestatus.h
index 07883f31fb5a6fcc4854caa20b0fd449856ce84b..9c8aee73125e3328f0601dd4aaa5dc3d8922cf5b 100644
--- a/indra/newview/llpanelonlinestatus.h
+++ b/indra/newview/llpanelonlinestatus.h
@@ -32,7 +32,7 @@
 /**
  * Represents online tip toast panel.
  */
-class LLPanelOnlineStatus : public LLPanelTipToast
+class LLPanelOnlineStatus final : public LLPanelTipToast
 {
 	// disallow instantiation of this class
 private:
diff --git a/indra/newview/llpaneloutfitedit.h b/indra/newview/llpaneloutfitedit.h
index 8848dfdb12f0933d770ab89702a3022aa7ec8bfa..cd26ba23a508e65b65e6d1bd7f72c2e5fb980530 100644
--- a/indra/newview/llpaneloutfitedit.h
+++ b/indra/newview/llpaneloutfitedit.h
@@ -62,7 +62,7 @@ class LLSaveOutfitComboBtn;
 class LLWearableItemTypeNameComparator;
 class LLLoadingIndicator;
 
-class LLPanelOutfitEdit : public LLPanel
+class LLPanelOutfitEdit final : public LLPanel
 {
 	LOG_CLASS(LLPanelOutfitEdit);
 public:
diff --git a/indra/newview/llpaneloutfitsinventory.h b/indra/newview/llpaneloutfitsinventory.h
index f125b1b0bd1f7bda7611d28f32e3d56848654959..6e7d6747a3ad5d6a43088c08a40759c761bdbb29 100644
--- a/indra/newview/llpaneloutfitsinventory.h
+++ b/indra/newview/llpaneloutfitsinventory.h
@@ -40,7 +40,7 @@ class LLSidepanelAppearance;
 class LLTabContainer;
 class LLSaveOutfitComboBtn;
 
-class LLPanelOutfitsInventory : public LLPanel
+class LLPanelOutfitsInventory final : public LLPanel
 {
 	LOG_CLASS(LLPanelOutfitsInventory);
 public:
diff --git a/indra/newview/llpanelpeople.cpp b/indra/newview/llpanelpeople.cpp
index f055a6c6e22605cd44df2d0e6995981fa5dc1b09..95ecd799f40307ba2f984412069a421281720af9 100644
--- a/indra/newview/llpanelpeople.cpp
+++ b/indra/newview/llpanelpeople.cpp
@@ -258,9 +258,7 @@ public:
 	{
 	}
 
-	virtual ~Updater()
-	{
-	}
+	virtual ~Updater() = default;
 
 	/**
 	 * Activate/deactivate updater.
@@ -281,7 +279,7 @@ protected:
 /**
  * Update buttons on changes in our friend relations or voice status (STORM-557).
  */
-class LLButtonsUpdater : public LLPanelPeople::Updater, public LLFriendObserver, public LLVoiceClientStatusObserver
+class LLButtonsUpdater final : public LLPanelPeople::Updater, public LLFriendObserver, public LLVoiceClientStatusObserver
 {
 public:
 	LLButtonsUpdater(callback_t cb)
@@ -342,7 +340,7 @@ public:
  * 
  * Updates the list on external events which trigger the changed() method. 
  */
-class LLFriendListUpdater : public LLAvatarListUpdater, public LLFriendObserver
+class LLFriendListUpdater final : public LLAvatarListUpdater, public LLFriendObserver
 {
 	LOG_CLASS(LLFriendListUpdater);
 	class LLInventoryFriendCardObserver;
@@ -495,7 +493,7 @@ private:
  * 
  * The period is defined by NEARBY_LIST_UPDATE_INTERVAL constant.
  */
-class LLNearbyListUpdater : public LLAvatarListUpdater
+class LLNearbyListUpdater final : public LLAvatarListUpdater
 {
 	LOG_CLASS(LLNearbyListUpdater);
 
@@ -531,7 +529,7 @@ public:
 /**
  * Updates the recent people list (those the agent has recently interacted with).
  */
-class LLRecentListUpdater : public LLAvatarListUpdater, public boost::signals2::trackable
+class LLRecentListUpdater final : public LLAvatarListUpdater, public boost::signals2::trackable
 {
 	LOG_CLASS(LLRecentListUpdater);
 
diff --git a/indra/newview/llpanelpeople.h b/indra/newview/llpanelpeople.h
index 07e4998f3dd3c4f09c7af735cfc0999d62d1de30..0c5d3ed4bd1483af2df73dd4ca991148b74cd98c 100644
--- a/indra/newview/llpanelpeople.h
+++ b/indra/newview/llpanelpeople.h
@@ -43,7 +43,7 @@ class LLNetMap;
 class LLDragAndDropButton;
 class LLAccordionCtrlTab;
 
-class LLPanelPeople 
+class LLPanelPeople final
 	: public LLPanel
 {
 	LOG_CLASS(LLPanelPeople);
diff --git a/indra/newview/llpanelpermissions.h b/indra/newview/llpanelpermissions.h
index 64bdef8949a9450709447380d9dc6c1e3740bde1..6996d1c145d5f9570572a51f67ed0950ce6e8b50 100644
--- a/indra/newview/llpanelpermissions.h
+++ b/indra/newview/llpanelpermissions.h
@@ -47,7 +47,7 @@ class LLSpinCtrl;
 class LLTextBox;
 class LLViewerInventoryItem;
 
-class LLPanelPermissions : public LLPanel
+class LLPanelPermissions final : public LLPanel
 {
 public:
 	LLPanelPermissions();
diff --git a/indra/newview/llpanelpick.h b/indra/newview/llpanelpick.h
index cbfa1e3670cc0d74eb6570a2ccd71e03ff211cc6..5735688cb1685781f0e46c3773016837498111b3 100644
--- a/indra/newview/llpanelpick.h
+++ b/indra/newview/llpanelpick.h
@@ -164,7 +164,7 @@ protected:
 /**
  * Panel for creating/editing Pick.
  */
-class LLPanelPickEdit : public LLPanelPickInfo
+class LLPanelPickEdit final : public LLPanelPickInfo
 {
 	LOG_CLASS(LLPanelPickEdit);
 public:
diff --git a/indra/newview/llpanelpicks.h b/indra/newview/llpanelpicks.h
index c05d753943769a81d8aaef29d3c4f5debdb0a391..fcd6f9196eb0e42c93abdb4d7cff7f8b31b1419d 100644
--- a/indra/newview/llpanelpicks.h
+++ b/indra/newview/llpanelpicks.h
@@ -47,7 +47,7 @@ class LLToggleableMenu;
 class LLPanelClassifiedInfo;
 class LLPanelClassifiedEdit;
 
-class LLPanelPicks 
+class LLPanelPicks final
 	: public LLPanelProfileTab
 {
 public:
diff --git a/indra/newview/llpanelplaceprofile.h b/indra/newview/llpanelplaceprofile.h
index 6ac997ea5de26b4dcda0688c3efebf0cde397260..38653e44ac23c797a4450529cf3dfe9728b63792 100644
--- a/indra/newview/llpanelplaceprofile.h
+++ b/indra/newview/llpanelplaceprofile.h
@@ -33,7 +33,7 @@ class LLAccordionCtrl;
 class LLIconCtrl;
 class LLTextEditor;
 
-class LLPanelPlaceProfile : public LLPanelPlaceInfo
+class LLPanelPlaceProfile final : public LLPanelPlaceInfo
 {
 public:
 	LLPanelPlaceProfile();
diff --git a/indra/newview/llpanelplacestab.h b/indra/newview/llpanelplacestab.h
index 367ce46e2e0763d431cf44c8d8ae9b70c0818641..87e8860fd8c52d1464687d9736ed6dc2fbb0a9ab 100644
--- a/indra/newview/llpanelplacestab.h
+++ b/indra/newview/llpanelplacestab.h
@@ -34,8 +34,8 @@ class LLPanelPlaces;
 class LLPanelPlacesTab : public LLPanel
 {
 public:
-	LLPanelPlacesTab() : LLPanel() {}
-	virtual ~LLPanelPlacesTab() {}
+	LLPanelPlacesTab() = default;
+	virtual ~LLPanelPlacesTab() = default;
 
 	virtual void onSearchEdit(const std::string& string) = 0;
 	virtual void updateVerbs() = 0;		// Updates buttons at the bottom of Places panel
diff --git a/indra/newview/llpanelprimmediacontrols.h b/indra/newview/llpanelprimmediacontrols.h
index e72283088031e372b93f0a4e95bad4c227b608ca..754b36ce086cc953bb450209d22bd56978af2b2b 100644
--- a/indra/newview/llpanelprimmediacontrols.h
+++ b/indra/newview/llpanelprimmediacontrols.h
@@ -40,7 +40,7 @@ class LLSliderCtrl;
 class LLViewerMediaImpl;
 class LLWindowShade;
 
-class LLPanelPrimMediaControls : public LLPanel
+class LLPanelPrimMediaControls final : public LLPanel
 {
 public:
 	LLPanelPrimMediaControls();
diff --git a/indra/newview/llpanelprofilelegacy.h b/indra/newview/llpanelprofilelegacy.h
index b6223ea1b70abb1fa6f627617dc8ca0ab57a3312..21e054644439ac97a3626571b3f9ec1ccaf94ef7 100644
--- a/indra/newview/llpanelprofilelegacy.h
+++ b/indra/newview/llpanelprofilelegacy.h
@@ -47,7 +47,7 @@ class LLPickItem;
 class LLTextBase;
 class LLToggleableMenu;
 
-class LLPanelProfileLegacy : public LLPanelProfileTab
+class LLPanelProfileLegacy final : public LLPanelProfileTab
 {
 public:
 	LLPanelProfileLegacy();
@@ -109,7 +109,7 @@ private:
 	ChildStack		mChildStack;
 	
 public:
-	class LLPanelProfilePicks : public LLPanelProfileTab
+	class LLPanelProfilePicks final : public LLPanelProfileTab
 	{
 		friend class LLPanelProfileLegacy;
 	public:
@@ -175,7 +175,7 @@ public:
 		panel_classified_edit_map_t mEditClassifiedPanels;
 	};
 	
-	class LLPanelProfileGroups : public LLPanelProfileTab
+	class LLPanelProfileGroups final : public LLPanelProfileTab
 	{
 		friend class LLPanelProfileLegacy;
 	public:
@@ -200,7 +200,7 @@ private:
 	LLPanelProfileGroups* mPanelGroups;
 };
 
-class LLProfileGroupItem : public LLPanel, public LLGroupMgrObserver
+class LLProfileGroupItem final : public LLPanel, public LLGroupMgrObserver
 {
 public:
 	LLProfileGroupItem();
diff --git a/indra/newview/llpanelradaralert.h b/indra/newview/llpanelradaralert.h
index da95014f0e9fffacaae7bcc479c46a9bdcb9f6e6..3b5e455736258cfe5a7a08b42715b0c0df1fa3f3 100644
--- a/indra/newview/llpanelradaralert.h
+++ b/indra/newview/llpanelradaralert.h
@@ -33,7 +33,7 @@
 /**
  * Represents radar alert toast panel.
  */
-class LLPanelRadarAlert : public LLPanelTipToast
+class LLPanelRadarAlert final : public LLPanelTipToast
 {
 	// disallow instantiation of this class
 private:
diff --git a/indra/newview/llpanelsearchbase.h b/indra/newview/llpanelsearchbase.h
index 2a1966b89145d16adde4f1d3eed5963f1044047c..9d641e7a52acd6862c7ce73855da06c58a6c44e1 100644
--- a/indra/newview/llpanelsearchbase.h
+++ b/indra/newview/llpanelsearchbase.h
@@ -44,7 +44,7 @@ public:
 	void setSearchFloater(LLFloaterDirectory* floater);
 	
 protected:
-	virtual ~LLPanelSearch() {};
+	virtual ~LLPanelSearch() = default;
 	LLFloaterDirectory* mFloater;
 	
 private:
diff --git a/indra/newview/llpanelsearchclassifieds.h b/indra/newview/llpanelsearchclassifieds.h
index bdce2da629bb74541df0c16853b53c081aa01d3e..9a01d14526192f1a9a7f197f24fec5a343e45dc1 100644
--- a/indra/newview/llpanelsearchclassifieds.h
+++ b/indra/newview/llpanelsearchclassifieds.h
@@ -36,7 +36,7 @@
 class LLComboBox;
 class LLSearchEditor;
 
-class LLPanelSearchClassifieds : public LLPanelSearch
+class LLPanelSearchClassifieds final : public LLPanelSearch
 {
 public:
 	LLPanelSearchClassifieds();
diff --git a/indra/newview/llpanelsearchevents.h b/indra/newview/llpanelsearchevents.h
index 54667328180f3cdd9d3d2461173abf8fc3719e94..a318eb2137c2c13916cc1235858a7df9db76e948 100644
--- a/indra/newview/llpanelsearchevents.h
+++ b/indra/newview/llpanelsearchevents.h
@@ -36,7 +36,7 @@
 class LLComboBox;
 class LLSearchEditor;
 
-class LLPanelSearchEvents : public LLPanelSearch
+class LLPanelSearchEvents final : public LLPanelSearch
 {
 public:
 	LLPanelSearchEvents();
diff --git a/indra/newview/llpanelsearchgroups.h b/indra/newview/llpanelsearchgroups.h
index 65a5a90902d6fada25b00cd01ba2da777167def1..88cc43d6a1bd2becd96350c62bb53899517523a3 100644
--- a/indra/newview/llpanelsearchgroups.h
+++ b/indra/newview/llpanelsearchgroups.h
@@ -35,7 +35,7 @@
 
 class LLSearchEditor;
 
-class LLPanelSearchGroups : public LLPanelSearch
+class LLPanelSearchGroups final : public LLPanelSearch
 {
 public:
 	LLPanelSearchGroups();
diff --git a/indra/newview/llpanelsearchlandsales.h b/indra/newview/llpanelsearchlandsales.h
index 64b57b225b60f4955634cac6910d03f3f97803b0..5a2b25b9ee9494621d9c34a190d78cebdf277ec8 100644
--- a/indra/newview/llpanelsearchlandsales.h
+++ b/indra/newview/llpanelsearchlandsales.h
@@ -33,7 +33,7 @@
 
 #include "llpanelsearchbase.h"
 
-class LLPanelSearchLandSales : public LLPanelSearch
+class LLPanelSearchLandSales final : public LLPanelSearch
 {
 public:
 	LLPanelSearchLandSales();
diff --git a/indra/newview/llpanelsearchpeople.h b/indra/newview/llpanelsearchpeople.h
index c437292fb9ae669833ec4ff6ae91dc8b565ce296..363c77764b016fb0cc3e9a3e020cf9b1ea193389 100644
--- a/indra/newview/llpanelsearchpeople.h
+++ b/indra/newview/llpanelsearchpeople.h
@@ -35,7 +35,7 @@
 
 class LLSearchEditor;
 
-class LLPanelSearchPeople : public LLPanelSearch
+class LLPanelSearchPeople final : public LLPanelSearch
 {
 public:
 	LLPanelSearchPeople();
diff --git a/indra/newview/llpanelsearchplaces.h b/indra/newview/llpanelsearchplaces.h
index 5d2f6f7f058b8bfa51425eeff574c5c5aa25e831..54f35b1940d3a879ebb28f6e997e868ca1610540 100644
--- a/indra/newview/llpanelsearchplaces.h
+++ b/indra/newview/llpanelsearchplaces.h
@@ -36,7 +36,7 @@
 class LLComboBox;
 class LLSearchEditor;
 
-class LLPanelSearchPlaces : public LLPanelSearch
+class LLPanelSearchPlaces final : public LLPanelSearch
 {
 public:
 	LLPanelSearchPlaces();
diff --git a/indra/newview/llpanelsearchweb.h b/indra/newview/llpanelsearchweb.h
index 4f5695106908d5536e4b41192236d12f09301285..46954c5f7b52fbdd852729299b8e3db8f27ff955 100644
--- a/indra/newview/llpanelsearchweb.h
+++ b/indra/newview/llpanelsearchweb.h
@@ -39,7 +39,7 @@ class LLProgressBar;
 class LLTextBox;
 struct SearchQuery;
 
-class LLPanelSearchWeb : public LLPanel, public LLViewerMediaObserver
+class LLPanelSearchWeb final : public LLPanel, public LLViewerMediaObserver
 {
 public:
 	LLPanelSearchWeb();
diff --git a/indra/newview/llpanelsnapshotinventory.cpp b/indra/newview/llpanelsnapshotinventory.cpp
index 55e49b7cac603c0637c74ec69748a6d014c102b4..c2ab0d259f6bf1d9777f2dd0d5d0febb754319bf 100644
--- a/indra/newview/llpanelsnapshotinventory.cpp
+++ b/indra/newview/llpanelsnapshotinventory.cpp
@@ -55,7 +55,7 @@ protected:
     /*virtual*/ LLSnapshotModel::ESnapshotType getSnapshotType() override;
 };
 
-class LLPanelSnapshotInventory
+class LLPanelSnapshotInventory final
     : public LLPanelSnapshotInventoryBase
 {
 	LOG_CLASS(LLPanelSnapshotInventory);
@@ -77,7 +77,7 @@ private:
 
 };
 
-class LLPanelOutfitSnapshotInventory
+class LLPanelOutfitSnapshotInventory final
     : public LLPanelSnapshotInventoryBase
 {
     LOG_CLASS(LLPanelOutfitSnapshotInventory);
diff --git a/indra/newview/llpanelsnapshotlocal.cpp b/indra/newview/llpanelsnapshotlocal.cpp
index b6936b4500ecf4421958f50682bc876e6f21c4e9..2826e2fec92b0a826ee06ab0435f238138c9bba2 100644
--- a/indra/newview/llpanelsnapshotlocal.cpp
+++ b/indra/newview/llpanelsnapshotlocal.cpp
@@ -40,7 +40,7 @@
 /**
  * The panel provides UI for saving snapshot to a local folder.
  */
-class LLPanelSnapshotLocal
+class LLPanelSnapshotLocal final
 :	public LLPanelSnapshot
 {
 	LOG_CLASS(LLPanelSnapshotLocal);
diff --git a/indra/newview/llpanelsnapshotoptions.cpp b/indra/newview/llpanelsnapshotoptions.cpp
index 813d7307e4e20417e3fec3e45c68d9143b496276..5a9cbd31746c6d89de0a1753925e35ed102fcb75 100644
--- a/indra/newview/llpanelsnapshotoptions.cpp
+++ b/indra/newview/llpanelsnapshotoptions.cpp
@@ -39,7 +39,7 @@
 /**
  * Provides several ways to save a snapshot.
  */
-class LLPanelSnapshotOptions
+class LLPanelSnapshotOptions final
 :	public LLPanel
 ,	public LLEconomyObserver
 {
diff --git a/indra/newview/llpanelsnapshotpostcard.cpp b/indra/newview/llpanelsnapshotpostcard.cpp
index ccae0fe03a714bf87a3d6fcefe670dad3fa2210f..d66563a58a07d247196c716344b30de93512b330 100644
--- a/indra/newview/llpanelsnapshotpostcard.cpp
+++ b/indra/newview/llpanelsnapshotpostcard.cpp
@@ -48,7 +48,7 @@
 /**
  * Sends postcard via email.
  */
-class LLPanelSnapshotPostcard
+class LLPanelSnapshotPostcard final
 :	public LLPanelSnapshot
 {
 	LOG_CLASS(LLPanelSnapshotPostcard);
diff --git a/indra/newview/llpanelsnapshotprofile.cpp b/indra/newview/llpanelsnapshotprofile.cpp
index 3c0a3034dad2ecf18087e1d2c78139d351bb8bb5..5c49e633f63cc2d5114339f1d97ac962015cf7b9 100644
--- a/indra/newview/llpanelsnapshotprofile.cpp
+++ b/indra/newview/llpanelsnapshotprofile.cpp
@@ -41,7 +41,7 @@
 /**
  * Posts a snapshot to My Profile feed.
  */
-class LLPanelSnapshotProfile
+class LLPanelSnapshotProfile final
 :	public LLPanelSnapshot
 {
 	LOG_CLASS(LLPanelSnapshotProfile);
diff --git a/indra/newview/llpanelstreaminfo.h b/indra/newview/llpanelstreaminfo.h
index e4a28b170b18df0ce971780b6928e0c527b9d229..952faafed15a3d923ff0a54d05afde75302d5485 100644
--- a/indra/newview/llpanelstreaminfo.h
+++ b/indra/newview/llpanelstreaminfo.h
@@ -34,7 +34,7 @@
 /**
  * Represents audio steam info tip toast panel.
  */
-class LLPanelStreamInfo : public LLPanelTipToast
+class LLPanelStreamInfo final : public LLPanelTipToast
 {
 	// disallow instantiation of this class
 private:
@@ -42,7 +42,7 @@ private:
 	friend class LLToastPanel;
 	
 	LLPanelStreamInfo(const LLNotificationPtr& notification);
-	virtual ~LLPanelStreamInfo() {}
+	virtual ~LLPanelStreamInfo() = default;
 };
 
 #endif // LL_PANELSTREAMINFO_H
diff --git a/indra/newview/llpanelteleporthistory.cpp b/indra/newview/llpanelteleporthistory.cpp
index 2758f9586654031529279bcbb5188b92300a36cd..3d3bfed710094abfaf097db0bf2b6e70866add6b 100644
--- a/indra/newview/llpanelteleporthistory.cpp
+++ b/indra/newview/llpanelteleporthistory.cpp
@@ -53,7 +53,7 @@ static const U32 ADD_LIMIT = 50;
 
 static const std::string COLLAPSED_BY_USER = "collapsed_by_user";
 
-class LLTeleportHistoryFlatItem : public LLPanel
+class LLTeleportHistoryFlatItem final : public LLPanel
 {
 public:
 	LLTeleportHistoryFlatItem(S32 index, LLTeleportHistoryPanel::ContextMenu *context_menu, const std::string &region_name,
diff --git a/indra/newview/llpanelteleporthistory.h b/indra/newview/llpanelteleporthistory.h
index 613a5fe110f21854a3b16a26061d2aaa89e27e60..823f1d874a2250c0510165bade8bd311bf8960d5 100644
--- a/indra/newview/llpanelteleporthistory.h
+++ b/indra/newview/llpanelteleporthistory.h
@@ -37,7 +37,7 @@ class LLAccordionCtrlTab;
 class LLFlatListView;
 class LLMenuButton;
 
-class LLTeleportHistoryPanel : public LLPanelPlacesTab
+class LLTeleportHistoryPanel final : public LLPanelPlacesTab
 {
 public:
 	// *TODO: derive from LLListContextMenu?
diff --git a/indra/newview/llpaneltopinfobar.cpp b/indra/newview/llpaneltopinfobar.cpp
index 91357768065658de6eb0e55949c9f40d20d6744c..62ec75e0c337124e6ad865756e996907842f17af 100644
--- a/indra/newview/llpaneltopinfobar.cpp
+++ b/indra/newview/llpaneltopinfobar.cpp
@@ -46,7 +46,7 @@
 #include "llviewerparcelmgr.h"
 #include "llviewerregion.h"
 
-class LLPanelTopInfoBar::LLParcelChangeObserver : public LLParcelObserver
+class LLPanelTopInfoBar::LLParcelChangeObserver final: public LLParcelObserver
 {
 public:
 	LLParcelChangeObserver(LLPanelTopInfoBar* topInfoBar) : mTopInfoBar(topInfoBar) {}
diff --git a/indra/newview/llpaneltopinfobar.h b/indra/newview/llpaneltopinfobar.h
index b6c263e33157fc1386baccec0d0d2b68b256ac1f..ccf2f462a1a928a13ed4dbfef97c8a77a45cf22c 100644
--- a/indra/newview/llpaneltopinfobar.h
+++ b/indra/newview/llpaneltopinfobar.h
@@ -35,7 +35,7 @@ class LLTextBox;
 class LLIconCtrl;
 class LLParcelChangeObserver;
 
-class LLPanelTopInfoBar : public LLPanel, public LLSingleton<LLPanelTopInfoBar>, private LLDestroyClass<LLPanelTopInfoBar>
+class LLPanelTopInfoBar final : public LLPanel, public LLSingleton<LLPanelTopInfoBar>, private LLDestroyClass<LLPanelTopInfoBar>
 {
 	LLSINGLETON(LLPanelTopInfoBar);
 	~LLPanelTopInfoBar();
diff --git a/indra/newview/llpanelvoicedevicesettings.h b/indra/newview/llpanelvoicedevicesettings.h
index 17df31286d431877e8dbe0c211b9f2502fcfa9b4..99b677d939557614608f36c4c98d593cc5ae9e16 100644
--- a/indra/newview/llpanelvoicedevicesettings.h
+++ b/indra/newview/llpanelvoicedevicesettings.h
@@ -30,7 +30,7 @@
 
 #include "llpanel.h"
 
-class LLPanelVoiceDeviceSettings : public LLPanel
+class LLPanelVoiceDeviceSettings final : public LLPanel
 {
 public:
 	LLPanelVoiceDeviceSettings();
diff --git a/indra/newview/llpanelvoiceeffect.h b/indra/newview/llpanelvoiceeffect.h
index 80f8c5d22f06facbcacd31349cc76c5971d70b21..87c0c6eedf465125a6ea518c1cab9fe7271f78fd 100644
--- a/indra/newview/llpanelvoiceeffect.h
+++ b/indra/newview/llpanelvoiceeffect.h
@@ -33,7 +33,7 @@
 
 class LLComboBox;
 
-class LLPanelVoiceEffect
+class LLPanelVoiceEffect final
 	: public LLPanel
 	, public LLVoiceEffectObserver
 {
diff --git a/indra/newview/llpanelvolume.h b/indra/newview/llpanelvolume.h
index 2d08d3ba4e2cda4862e1c3a5880823f0852c4c74..67233eb6b6a36c913d59b3bc22980dd213021b43 100644
--- a/indra/newview/llpanelvolume.h
+++ b/indra/newview/llpanelvolume.h
@@ -42,7 +42,7 @@ class LLComboBox;
 class LLColorSwatchCtrl;
 class LLTextureCtrl;
 
-class LLPanelVolume : public LLPanel
+class LLPanelVolume final : public LLPanel
 {
 public:
 	LLPanelVolume();
diff --git a/indra/newview/llpanelvolumepulldown.h b/indra/newview/llpanelvolumepulldown.h
index 1c79fec6bef7c3ef7d12544edd1f1f7f96d9fa75..d08478ff99a52e593d4c75a60ec5a13565f46021 100644
--- a/indra/newview/llpanelvolumepulldown.h
+++ b/indra/newview/llpanelvolumepulldown.h
@@ -30,7 +30,7 @@
 
 #include "llpanelmenubarpulldown.h"
 
-class LLPanelVolumePulldown : public LLPanelMenuBarPulldown
+class LLPanelVolumePulldown final : public LLPanelMenuBarPulldown
 {
  public:
 	LLPanelVolumePulldown();
diff --git a/indra/newview/llpanelwearing.h b/indra/newview/llpanelwearing.h
index 0d2191b171523a0438e97f0722e2f670868e96e5..9f6df14826a035d256fe77cc3ba5ba0a0c85b65e 100644
--- a/indra/newview/llpanelwearing.h
+++ b/indra/newview/llpanelwearing.h
@@ -49,7 +49,7 @@ class LLWearingGearMenu;
  * a flat list view.
  * Starts fetching necessary inventory content on first opening.
  */
-class LLPanelWearing : public LLPanelAppearanceTab
+class LLPanelWearing final : public LLPanelAppearanceTab
 {
 public:
 	LLPanelWearing();
diff --git a/indra/newview/llphysicsmotion.cpp b/indra/newview/llphysicsmotion.cpp
index b8153b3e9ded035a06e7860f8e7ab1fe9c57e359..dfe6cad0cd90258898e8214e7960cb3cba5294c1 100644
--- a/indra/newview/llphysicsmotion.cpp
+++ b/indra/newview/llphysicsmotion.cpp
@@ -122,7 +122,7 @@ public:
 
         BOOL initialize();
 
-        ~LLPhysicsMotion() {}
+		~LLPhysicsMotion() = default;
 
         BOOL onUpdate(F32 time);
 
diff --git a/indra/newview/llplacesinventorypanel.h b/indra/newview/llplacesinventorypanel.h
index 6e6aa079cbbb04ad6907561d35f518344ae133a4..ae647fc7ecbb6426b9dbb66c7030966d95d2c3ac 100644
--- a/indra/newview/llplacesinventorypanel.h
+++ b/indra/newview/llplacesinventorypanel.h
@@ -32,7 +32,7 @@
 class LLLandmarksPanel;
 class LLFolderView;
 
-class LLPlacesInventoryPanel : public LLInventoryPanel
+class LLPlacesInventoryPanel final : public LLInventoryPanel
 {
 public:
 	struct Params 
diff --git a/indra/newview/llpopupview.h b/indra/newview/llpopupview.h
index a625a3e2866c13c45ea38073b36f26fcf6fcfbf5..2930bd5740358570f931443ba7f67b5e320ba6b2 100644
--- a/indra/newview/llpopupview.h
+++ b/indra/newview/llpopupview.h
@@ -29,7 +29,7 @@
 
 #include "llpanel.h"
 
-class LLPopupView : public LLPanel
+class LLPopupView final : public LLPanel
 {
 public:
 	LLPopupView(const Params& p = LLPanel::Params());
diff --git a/indra/newview/llpreviewscript.h b/indra/newview/llpreviewscript.h
index 624f91c7716e1b56e6e3e49909e2bd00188e990f..f484932cd010ae9f0c27a6a3feed493224550999 100644
--- a/indra/newview/llpreviewscript.h
+++ b/indra/newview/llpreviewscript.h
@@ -51,7 +51,7 @@ class LLFloaterGotoLine;
 class LLFloaterExperienceProfile;
 
 // Inner, implementation class.  LLPreviewScript and LLLiveLSLEditor each own one of these.
-class LLScriptEdCore : public LLPanel
+class LLScriptEdCore final : public LLPanel
 {
 	friend class LLPreviewScript;
 	friend class LLPreviewLSL;
diff --git a/indra/newview/llprogressview.h b/indra/newview/llprogressview.h
index b7152a5a82d59ce5fcea104c2a33e1af278f39ba..5511073784b4acf0382b7fd622de481b08927977 100644
--- a/indra/newview/llprogressview.h
+++ b/indra/newview/llprogressview.h
@@ -37,7 +37,7 @@ class LLButton;
 class LLProgressBar;
 class LLTextBox;
 
-class LLProgressView : 
+class LLProgressView final :
 	public LLPanel,
 	public LLViewerMediaObserver
 
diff --git a/indra/newview/llsidepanelappearance.h b/indra/newview/llsidepanelappearance.h
index 2989e69acd266597b767aaaefced5572577149e0..7f3cff27299f147c686b8701f3f63f6e26c37db3 100644
--- a/indra/newview/llsidepanelappearance.h
+++ b/indra/newview/llsidepanelappearance.h
@@ -40,7 +40,7 @@ class LLViewerWearable;
 class LLPanelOutfitsInventory;
 class LLLoadingIndicator;
 
-class LLSidepanelAppearance : public LLPanel
+class LLSidepanelAppearance final : public LLPanel
 {
 	LOG_CLASS(LLSidepanelAppearance);
 public:
diff --git a/indra/newview/llsidepanelinventory.h b/indra/newview/llsidepanelinventory.h
index 3b9d5243441c09c70010a3efa4422eb08d08e020..5a0326ca629068d4a88c5f56bc8bad88f07a277e 100644
--- a/indra/newview/llsidepanelinventory.h
+++ b/indra/newview/llsidepanelinventory.h
@@ -38,7 +38,7 @@ class LLInventoryPanel;
 class LLLayoutPanel;
 class LLPanelMainInventory;
 
-class LLSidepanelInventory : public LLPanel
+class LLSidepanelInventory final : public LLPanel
 {
 public:
 	LLSidepanelInventory();
diff --git a/indra/newview/llsidepaneltaskinfo.h b/indra/newview/llsidepaneltaskinfo.h
index 4d0a99c22aba4afe62f74c1167e2cf288286b197..d805f868521f77e772ec3a91c28aca03c7df67fc 100644
--- a/indra/newview/llsidepaneltaskinfo.h
+++ b/indra/newview/llsidepaneltaskinfo.h
@@ -45,7 +45,7 @@ class LLTextBox;
 class LLLineEditor;
 class LLSpinCtrl;
 
-class LLSidepanelTaskInfo : public LLSidepanelInventorySubpanel
+class LLSidepanelTaskInfo final : public LLSidepanelInventorySubpanel
 {
 public:
 	LLSidepanelTaskInfo(const LLPanel::Params& p = getDefaultParams());
diff --git a/indra/newview/llstatusbar.h b/indra/newview/llstatusbar.h
index 7fbe37d3f49d401cebe77ab7c9149bbd9c1fa729..cb441012951df17ee269f99f94fdb2ea5ed4f20f 100644
--- a/indra/newview/llstatusbar.h
+++ b/indra/newview/llstatusbar.h
@@ -57,7 +57,7 @@ namespace ll
 		struct SearchData;
 	}
 }
-class LLStatusBar
+class LLStatusBar final
 :	public LLPanel
 {
 public:
diff --git a/indra/newview/llsyswellwindow.h b/indra/newview/llsyswellwindow.h
index f6fff4e4e335553f113e9b7ca0b38f4c88c37bf0..8a6b147411bf571c631421bdb9bf24919a78e984 100644
--- a/indra/newview/llsyswellwindow.h
+++ b/indra/newview/llsyswellwindow.h
@@ -126,7 +126,7 @@ private:
 	bool confirmCloseAll(const LLSD& notification, const LLSD& response);
 	void closeAllImpl();
 
-	class ObjectRowPanel: public LLPanel
+	class ObjectRowPanel final : public LLPanel
 	{
 	public:
 		ObjectRowPanel(const LLUUID& notification_id, bool new_message = false);
diff --git a/indra/newview/lltransientfloatermgr.h b/indra/newview/lltransientfloatermgr.h
index 9a7551fab622e850ac0ed704cbf66fdb2833da4c..26be7e439da9acb51f76a90e46b03a2e7b1ac9cc 100644
--- a/indra/newview/lltransientfloatermgr.h
+++ b/indra/newview/lltransientfloatermgr.h
@@ -71,7 +71,7 @@ private:
 class LLTransientFloater
 {
 public:
-    virtual ~LLTransientFloater() {}
+	virtual ~LLTransientFloater() = default;
     
 protected:
 	/**
diff --git a/indra/newview/lluploaddialog.h b/indra/newview/lluploaddialog.h
index 4e9cf682618b849d384b53346ef59f7a1cd40478..3f3771bdd211233536a5d164ceed560ff0dac0bc 100644
--- a/indra/newview/lluploaddialog.h
+++ b/indra/newview/lluploaddialog.h
@@ -31,7 +31,7 @@
 
 class LLTextBox;
 			
-class LLUploadDialog : public LLPanel
+class LLUploadDialog final : public LLPanel
 {
 public:
 	// Use this function to open a modal dialog and display it until the user presses the "close" button.
diff --git a/indra/newview/llwearableitemslist.h b/indra/newview/llwearableitemslist.h
index 2027d08b0a1a9a2ee38ca5d6dba690d16fbffc4d..08a708830d7e0764acdd88e7f40e240c1f85fe89 100644
--- a/indra/newview/llwearableitemslist.h
+++ b/indra/newview/llwearableitemslist.h
@@ -71,7 +71,7 @@ protected:
  * Extends LLPanelInventoryListItemBase with handling
  * double click to wear the item.
  */
-class LLPanelWearableOutfitItem : public LLPanelInventoryListItemBase
+class LLPanelWearableOutfitItem final : public LLPanelInventoryListItemBase
 {
 	LOG_CLASS(LLPanelWearableOutfitItem);
 public:
@@ -120,7 +120,7 @@ protected:
 };
 
 /** Outfit list item for an attachment */
-class LLPanelAttachmentListItem : public LLPanelDeletableWearableListItem
+class LLPanelAttachmentListItem final : public LLPanelDeletableWearableListItem
 {
 	LOG_CLASS(LLPanelAttachmentListItem);
 public:
@@ -140,7 +140,7 @@ protected:
  *
  * Provides buttons for editing, moving, deleting a wearable.
  */
-class LLPanelClothingListItem : public LLPanelDeletableWearableListItem
+class LLPanelClothingListItem final : public LLPanelDeletableWearableListItem
 {
 	LOG_CLASS(LLPanelClothingListItem);
 public:
@@ -178,7 +178,7 @@ protected:
 
 };
 
-class LLPanelBodyPartsListItem : public LLPanelWearableListItem
+class LLPanelBodyPartsListItem final : public LLPanelWearableListItem
 {
 	LOG_CLASS(LLPanelBodyPartsListItem);
 public:
@@ -214,7 +214,7 @@ protected:
  *
  * A dummy item panel - displays grayed clothing icon, grayed title '<clothing> not worn' and 'add' button
  */
-class LLPanelDummyClothingListItem : public LLPanelWearableListItem
+class LLPanelDummyClothingListItem final : public LLPanelWearableListItem
 {
 public:
 	struct Params : public LLInitParam::Block<Params, LLPanelWearableListItem::Params>
@@ -283,8 +283,8 @@ class LLWearableItemNameComparator : public LLWearableListItemComparator
 	LOG_CLASS(LLWearableItemNameComparator);
 
 public:
-	LLWearableItemNameComparator() {};
-	virtual ~LLWearableItemNameComparator() {};
+	LLWearableItemNameComparator() = default;
+	virtual ~LLWearableItemNameComparator() = default;
 
 protected:
 	/*virtual*/ bool doCompare(const LLPanelInventoryListItemBase* wearable_item1, const LLPanelInventoryListItemBase* wearable_item2) const override;
@@ -295,14 +295,14 @@ protected:
  *
  * Comparator for sorting wearable list items by type and name.
  */
-class LLWearableItemTypeNameComparator : public LLWearableItemNameComparator
+class LLWearableItemTypeNameComparator final : public LLWearableItemNameComparator
 {
 	LOG_CLASS(LLWearableItemTypeNameComparator);
 
 public:
 
 	LLWearableItemTypeNameComparator();
-	virtual ~LLWearableItemTypeNameComparator() {};
+	virtual ~LLWearableItemTypeNameComparator() = default;;
 
 	enum ETypeListOrder
 	{
@@ -378,7 +378,7 @@ private:
  *
  * Comparator for sorting wearable list items by creation date (newest go first).
  */
-class LLWearableItemCreationDateComparator : public LLWearableItemNameComparator
+class LLWearableItemCreationDateComparator final : public LLWearableItemNameComparator
 {
 	LOG_CLASS(LLWearableItemCreationDateComparator);
 
@@ -398,7 +398,7 @@ protected:
  * an inventory category specified by UUID and displays them
  * as a flat list.
  */
-class LLWearableItemsList : public LLInventoryItemsList
+class LLWearableItemsList final : public LLInventoryItemsList
 {
 public:
 	/**
diff --git a/indra/newview/llworldmapview.h b/indra/newview/llworldmapview.h
index 4c376bbbc288e7bdb21944919da02e0319383d0e..bb708d66425f81eddd403ccdc85cb4bb435eb7b5 100644
--- a/indra/newview/llworldmapview.h
+++ b/indra/newview/llworldmapview.h
@@ -44,7 +44,7 @@ class LLVector3;
 class LLTextBox;
 
 
-class LLWorldMapView : public LLPanel
+class LLWorldMapView final : public LLPanel
 {
 public:
 	static void initClass();