diff --git a/indra/llaudio/llaudioengine_fmodstudio.h b/indra/llaudio/llaudioengine_fmodstudio.h
index 05cde8677758f960684e49179604568223197dee..16e287cd92db3f7bbe634802ba44d9b4d8ac894c 100644
--- a/indra/llaudio/llaudioengine_fmodstudio.h
+++ b/indra/llaudio/llaudioengine_fmodstudio.h
@@ -44,7 +44,7 @@ namespace FMOD
 typedef struct FMOD_DSP_DESCRIPTION FMOD_DSP_DESCRIPTION;
 
 //Interfaces
-class LLAudioEngine_FMODSTUDIO : public LLAudioEngine 
+class LLAudioEngine_FMODSTUDIO final : public LLAudioEngine 
 {
 public:
 	enum
@@ -93,7 +93,7 @@ public:
 };
 
 
-class LLAudioChannelFMODSTUDIO : public LLAudioChannel
+class LLAudioChannelFMODSTUDIO final : public LLAudioChannel
 {
 public:
 	LLAudioChannelFMODSTUDIO(FMOD::System *audioengine);
@@ -118,7 +118,7 @@ protected:
 };
 
 
-class LLAudioBufferFMODSTUDIO : public LLAudioBuffer
+class LLAudioBufferFMODSTUDIO final : public LLAudioBuffer
 {
 public:
 	LLAudioBufferFMODSTUDIO(FMOD::System *audioengine);
diff --git a/indra/llaudio/lllistener_fmodstudio.h b/indra/llaudio/lllistener_fmodstudio.h
index b189347c37b9086cbdee6081120b75f95c33fd23..94415bff87143b04efcae188345e00e5cfee85fe 100644
--- a/indra/llaudio/lllistener_fmodstudio.h
+++ b/indra/llaudio/lllistener_fmodstudio.h
@@ -37,7 +37,7 @@ namespace FMOD
 }
 
 //Interfaces
-class LLListener_FMODSTUDIO : public LLListener
+class LLListener_FMODSTUDIO final : public LLListener
 {
  public:  
 	LLListener_FMODSTUDIO(FMOD::System *system);
diff --git a/indra/llaudio/llstreamingaudio_fmodstudio.h b/indra/llaudio/llstreamingaudio_fmodstudio.h
index a90dda943e8e7d8cb437536383f07ae87b46e7bd..daf250a15c6b013f411117f3d8d71741a0d2c298 100644
--- a/indra/llaudio/llstreamingaudio_fmodstudio.h
+++ b/indra/llaudio/llstreamingaudio_fmodstudio.h
@@ -43,7 +43,7 @@ namespace FMOD
 }
 
 //Interfaces
-class LLStreamingAudio_FMODSTUDIO : public LLStreamingAudioInterface
+class LLStreamingAudio_FMODSTUDIO final : public LLStreamingAudioInterface
 {
  public:
 	LLStreamingAudio_FMODSTUDIO(FMOD::System *system);
diff --git a/indra/llcommon/llapr.h b/indra/llcommon/llapr.h
index 455f85ab0f1a4693e92339d600ec683adabe9311..2cd47d4739bccfe55671b7fbb1280a3706d83535 100644
--- a/indra/llcommon/llapr.h
+++ b/indra/llcommon/llapr.h
@@ -108,7 +108,7 @@ protected:
 //which clears memory automatically.
 //so it can not hold static data or data after memory is cleared
 //
-class LL_COMMON_API LLVolatileAPRPool : public LLAPRPool
+class LL_COMMON_API LLVolatileAPRPool final : public LLAPRPool
 {
 public:
 	LLVolatileAPRPool(std::string name, BOOL is_local = TRUE, apr_pool_t *parent = nullptr, apr_size_t size = 0, BOOL releasePoolFlag = TRUE);
diff --git a/indra/llcommon/llassettype.cpp b/indra/llcommon/llassettype.cpp
index f7a86bb8c720ddfce1058ec4773177afd51473b8..0844facf9d8df5bd1893a4244306b80730361118 100644
--- a/indra/llcommon/llassettype.cpp
+++ b/indra/llcommon/llassettype.cpp
@@ -34,7 +34,7 @@
 ///----------------------------------------------------------------------------
 /// Class LLAssetType
 ///----------------------------------------------------------------------------
-struct AssetEntry : public LLDictionaryEntry
+struct AssetEntry final : public LLDictionaryEntry
 {
 	AssetEntry(const char *desc_name,
 			   const char *type_name, 	// 8 character limit!
diff --git a/indra/llcommon/lldependencies.h b/indra/llcommon/lldependencies.h
index 3fe081a55c6b47b88ccef5f492350438c9afefda..8c3143398e5744c56491712bdded9fe7da9b1785 100644
--- a/indra/llcommon/lldependencies.h
+++ b/indra/llcommon/lldependencies.h
@@ -106,7 +106,7 @@ public:
     /**
      * Exception thrown by sort() if there's a cycle
      */
-    struct Cycle: public LLException
+    struct Cycle : public LLException
     {
         Cycle(const std::string& what): LLException(what) {}
     };
@@ -193,7 +193,7 @@ struct LLDependenciesEmpty
  */
 template<typename KEY = std::string,
          typename NODE = LLDependenciesEmpty>
-class LLDependencies: public LLDependenciesBase
+class LLDependencies final : public LLDependenciesBase
 {
     typedef LLDependencies<KEY, NODE> self_type;
 
diff --git a/indra/llcommon/llerror.cpp b/indra/llcommon/llerror.cpp
index 164bb54e60e3323b3d0048c654f78b60ee3d5b37..b8b90b1e769519b6fb2a9613faff1bef444cf768 100644
--- a/indra/llcommon/llerror.cpp
+++ b/indra/llcommon/llerror.cpp
@@ -74,7 +74,7 @@ namespace {
 		}
 	}
 #else
-	class RecordToSyslog : public LLError::Recorder
+	class RecordToSyslog final : public LLError::Recorder
 	{
 	public:
 		RecordToSyslog(const std::string& identity)
@@ -115,7 +115,7 @@ namespace {
 	};
 #endif
 
-	class RecordToFile : public LLError::Recorder
+	class RecordToFile final : public LLError::Recorder
 	{
 	public:
 		RecordToFile(const std::string& filename)
@@ -172,7 +172,7 @@ namespace {
 	};
 	
 	
-	class RecordToStderr : public LLError::Recorder
+	class RecordToStderr final : public LLError::Recorder
 	{
 	public:
 		RecordToStderr(bool timestamp) : mUseANSI(ANSI_PROBE) 
@@ -240,7 +240,7 @@ namespace {
 		};
 	};
 
-	class RecordToFixedBuffer : public LLError::Recorder
+	class RecordToFixedBuffer final : public LLError::Recorder
 	{
 	public:
 		RecordToFixedBuffer(LLLineBuffer* buffer)
@@ -267,7 +267,7 @@ namespace {
 	};
 
 #if LL_WINDOWS
-	class RecordToWinDebug: public LLError::Recorder
+	class RecordToWinDebug final : public LLError::Recorder
 	{
 	public:
 		RecordToWinDebug()
@@ -362,7 +362,7 @@ namespace
 	}
 
 
-	class LogControlFile : public LLLiveFile
+	class LogControlFile final : public LLLiveFile
 	{
 		LOG_CLASS(LogControlFile);
 	
diff --git a/indra/llcommon/llerrorthread.h b/indra/llcommon/llerrorthread.h
index bbd87223054791f5fa93d9386afb44d7fe6e7f66..dbc7fb0c9f7ef52db971a528396a504915f1d296 100644
--- a/indra/llcommon/llerrorthread.h
+++ b/indra/llcommon/llerrorthread.h
@@ -29,7 +29,7 @@
 
 #include "llthread.h"
 
-class LL_COMMON_API LLErrorThread : public LLThread
+class LL_COMMON_API LLErrorThread final : public LLThread
 {
 public:
 	LLErrorThread();
diff --git a/indra/llcommon/llevent.cpp b/indra/llcommon/llevent.cpp
index 703a6b6b345ec90b6b357fd42545bc1b1228c0c1..b390269a8050431f07da9a7870b78da4a17f2538 100644
--- a/indra/llcommon/llevent.cpp
+++ b/indra/llcommon/llevent.cpp
@@ -145,7 +145,7 @@ bool LLEventDispatcher::fireEvent(LLPointer<LLEvent> event, LLSD filter)
 	return impl->fireEvent(event, filter);
 }
 
-class LLSimpleDispatcher : public LLEventDispatcher::Impl
+class LLSimpleDispatcher final : public LLEventDispatcher::Impl
 {
 public:
 	LLSimpleDispatcher(LLEventDispatcher *parent) : mParent(parent) { }
diff --git a/indra/llcommon/llevent.h b/indra/llcommon/llevent.h
index 93806663ff6cf420e9b09d1ef646d516091353f1..36eeb6213f4409a0d59eee3f342a2999398e4b37 100644
--- a/indra/llcommon/llevent.h
+++ b/indra/llcommon/llevent.h
@@ -184,7 +184,7 @@ protected:
 	LLPointer<LLEventDispatcher> mDispatcher;
 };
 
-class LLValueChangedEvent : public LLEvent
+class LLValueChangedEvent final : public LLEvent
 {
 public:
 	LLValueChangedEvent(LLObservable* source, LLSD value) : LLEvent(source, "value_changed"), mValue(std::move(value)) { }
diff --git a/indra/llcommon/lleventdispatcher.cpp b/indra/llcommon/lleventdispatcher.cpp
index 3d0f83ee0a4cda036f709bdb0713f9746ae7a28a..67d25ffd49fea8fe8337d2e3236c0c91ce136001 100644
--- a/indra/llcommon/lleventdispatcher.cpp
+++ b/indra/llcommon/lleventdispatcher.cpp
@@ -392,7 +392,7 @@ LLEventDispatcher::LLEventDispatcher(std::string desc, std::string key):
 /**
  * DispatchEntry subclass used for callables accepting(const LLSD&)
  */
-struct LLEventDispatcher::LLSDDispatchEntry: public LLEventDispatcher::DispatchEntry
+struct LLEventDispatcher::LLSDDispatchEntry : public LLEventDispatcher::DispatchEntry
 {
     LLSDDispatchEntry(const std::string& desc, Callable func, LLSD required):
         DispatchEntry(desc),
@@ -446,7 +446,7 @@ struct LLEventDispatcher::ParamsDispatchEntry: public LLEventDispatcher::Dispatc
  * DispatchEntry subclass for dispatching LLSD::Array to functions accepting
  * arbitrary argument types (convertible via LLSDParam)
  */
-struct LLEventDispatcher::ArrayParamsDispatchEntry: public LLEventDispatcher::ParamsDispatchEntry
+struct LLEventDispatcher::ArrayParamsDispatchEntry final : public LLEventDispatcher::ParamsDispatchEntry
 {
     ArrayParamsDispatchEntry(const std::string& desc, const invoker_function& func,
                              LLSD::Integer arity):
@@ -472,7 +472,7 @@ struct LLEventDispatcher::ArrayParamsDispatchEntry: public LLEventDispatcher::Pa
  * DispatchEntry subclass for dispatching LLSD::Map to functions accepting
  * arbitrary argument types (convertible via LLSDParam)
  */
-struct LLEventDispatcher::MapParamsDispatchEntry: public LLEventDispatcher::ParamsDispatchEntry
+struct LLEventDispatcher::MapParamsDispatchEntry final : public LLEventDispatcher::ParamsDispatchEntry
 {
     MapParamsDispatchEntry(const std::string& name, const std::string& desc,
                            const invoker_function& func,
diff --git a/indra/llcommon/llhandle.h b/indra/llcommon/llhandle.h
index 870b89c27adc46dbfad0040a11ec614ca59a5355..806a9511512d0b4651b4194cffc7100d543ef3cc 100644
--- a/indra/llcommon/llhandle.h
+++ b/indra/llcommon/llhandle.h
@@ -145,7 +145,7 @@ private:
  * NULL.
  */
 template <typename T>
-class LLRootHandle : public LLHandle<T>
+class LLRootHandle final : public LLHandle<T>
 {
 public:
 	typedef LLRootHandle<T> self_t;
@@ -240,7 +240,7 @@ protected:
  * been destroyed.
  **/
 template <typename T> 
-class LLCheckedHandle: public LLCheckedHandleBase
+class LLCheckedHandle final : public LLCheckedHandleBase
 {
 public:
 
diff --git a/indra/llcommon/llleap.h b/indra/llcommon/llleap.h
index 2620d8e6602a244d9971f83e33db8498bb3dc632..9d26022245215058c7076a5f5150aa412534fa86 100644
--- a/indra/llcommon/llleap.h
+++ b/indra/llcommon/llleap.h
@@ -30,7 +30,7 @@
  * LLLeap* pointer should be validated before use by
  * LLLeap::getInstance(LLLeap*) (see LLInstanceTracker).
  */
-class LL_COMMON_API LLLeap: public LLInstanceTracker<LLLeap>
+class LL_COMMON_API LLLeap : public LLInstanceTracker<LLLeap>
 {
 public:
 
diff --git a/indra/llcommon/llprocessor.cpp b/indra/llcommon/llprocessor.cpp
index 1956de544ab1f2905f94361d377bed11a3e302f9..a21056ca367cbd98e60d14071b0ab1b35c927322 100644
--- a/indra/llcommon/llprocessor.cpp
+++ b/indra/llcommon/llprocessor.cpp
@@ -591,7 +591,7 @@ private:
 #include <mach/machine.h>
 #include <sys/sysctl.h>
 
-class LLProcessorInfoDarwinImpl : public LLProcessorInfoImpl
+class LLProcessorInfoDarwinImpl final : public LLProcessorInfoImpl
 {
 public:
 	LLProcessorInfoDarwinImpl() 
@@ -718,7 +718,7 @@ private:
 #elif LL_LINUX
 const char CPUINFO_FILE[] = "/proc/cpuinfo";
 
-class LLProcessorInfoLinuxImpl : public LLProcessorInfoImpl
+class LLProcessorInfoLinuxImpl final : public LLProcessorInfoImpl
 {
 public:
 	LLProcessorInfoLinuxImpl() 
diff --git a/indra/llmessage/lldatapacker.h b/indra/llmessage/lldatapacker.h
index 2227074eb7a49268a3b0cc324f0587981811db64..63552016e394e60fef6d0c89ec716eed711a40d9 100644
--- a/indra/llmessage/lldatapacker.h
+++ b/indra/llmessage/lldatapacker.h
@@ -103,7 +103,7 @@ protected:
 	BOOL mWriteEnabled; // disable this to do things like determine filesize without actually copying data
 };
 
-class LLDataPackerBinaryBuffer : public LLDataPacker
+class LLDataPackerBinaryBuffer final : public LLDataPacker
 {
 public:
 	LLDataPackerBinaryBuffer(U8 *bufferp, S32 size)
@@ -209,7 +209,7 @@ inline BOOL LLDataPackerBinaryBuffer::verifyLength(const S32 data_size, const ch
 	return TRUE;
 }
 
-class LLDataPackerAsciiBuffer : public LLDataPacker
+class LLDataPackerAsciiBuffer final : public LLDataPacker
 {
 public:
 	LLDataPackerAsciiBuffer(char* bufferp, S32 size)
@@ -331,7 +331,7 @@ inline BOOL LLDataPackerAsciiBuffer::verifyLength(const S32 data_size, const cha
 	return TRUE;
 }
 
-class LLDataPackerAsciiFile : public LLDataPacker
+class LLDataPackerAsciiFile final : public LLDataPacker
 {
 public:
 	LLDataPackerAsciiFile(LLFILE *fp, const S32 indent = 2)
diff --git a/indra/llmessage/llhttpnode.h b/indra/llmessage/llhttpnode.h
index f3601be773d3d0f57c3e0fd661699c192fd59ffb..54eb83902003d649200bc4b42cd27cdac8aec104 100644
--- a/indra/llmessage/llhttpnode.h
+++ b/indra/llmessage/llhttpnode.h
@@ -298,7 +298,7 @@ private:
 
 
 
-class LLSimpleResponse : public LLHTTPNode::Response
+class LLSimpleResponse final : public LLHTTPNode::Response
 {
 public:
 	static LLPointer<LLSimpleResponse> create();
@@ -370,7 +370,7 @@ public:
 	}
 
 private:
-	class ThisNodeFactory : public LLHTTPRegistrar::NodeFactory
+	class ThisNodeFactory final : public LLHTTPRegistrar::NodeFactory
 	{
 	public:
 		LLHTTPNode* build() const override { return new NodeType; }
@@ -390,7 +390,7 @@ public:
 	}
 
 private:
-	class ThisNodeFactory : public LLHTTPRegistrar::NodeFactory
+	class ThisNodeFactory final : public LLHTTPRegistrar::NodeFactory
 	{
 	public:
 		ThisNodeFactory(LLSD params) : mParams(params) {}
diff --git a/indra/llmessage/llhttpnodeadapter.h b/indra/llmessage/llhttpnodeadapter.h
index 873048003859213b3783a7c1adc1a1c1df32bfc0..725b75c89a71b7de97f887d1ee90277722cd37c7 100644
--- a/indra/llmessage/llhttpnodeadapter.h
+++ b/indra/llmessage/llhttpnodeadapter.h
@@ -30,7 +30,7 @@
 #include "llhttpnode.h"
 
 template<typename T>
-class LLHTTPNodeAdapter : public LLHTTPNode
+class LLHTTPNodeAdapter final : public LLHTTPNode
 {
 public:
 
diff --git a/indra/llmessage/lliohttpserver.cpp b/indra/llmessage/lliohttpserver.cpp
index ab52981792cb90a71654ccb5b20e30f91ed75b05..15d1203c350d82c8935adbbe36117a0d12bddde6 100644
--- a/indra/llmessage/lliohttpserver.cpp
+++ b/indra/llmessage/lliohttpserver.cpp
@@ -86,7 +86,7 @@ private:
 
 	const LLHTTPNode& mNode;
 
-	class Response : public LLHTTPNode::Response
+	class Response final : public LLHTTPNode::Response
 	{
 	public:
 
diff --git a/indra/llmessage/lliohttpserver.h b/indra/llmessage/lliohttpserver.h
index 2b37566cc11f59afd44a2b69a4225495666d6a5f..64f7bab54f05ff7be2f8d804821f6704e431c5dc 100644
--- a/indra/llmessage/lliohttpserver.h
+++ b/indra/llmessage/lliohttpserver.h
@@ -117,7 +117,7 @@ private:
 
 
 template<class Pipe>
-class LLHTTPNodeForPipe : public LLHTTPNodeForFactory<
+class LLHTTPNodeForPipe final : public LLHTTPNodeForFactory<
 						  			LLChainIOFactoryForPipe<Pipe> >
 {
 };
diff --git a/indra/llmessage/llsdappservices.cpp b/indra/llmessage/llsdappservices.cpp
index 459a724249bc7411930df3d02008a853d4fec04c..b76128634a2225160d3b113b355c5af659f8e51a 100644
--- a/indra/llmessage/llsdappservices.cpp
+++ b/indra/llmessage/llsdappservices.cpp
@@ -40,7 +40,7 @@ void LLSDAppServices::useServices()
 	*/
 }
 
-class LLHTTPConfigService : public LLHTTPNode
+class LLHTTPConfigService final : public LLHTTPNode
 {
 public:
 	void describe(Description& desc) const override
@@ -65,7 +65,7 @@ public:
 LLHTTPRegistration<LLHTTPConfigService>
 	gHTTPRegistratiAppConfig("/app/config");
 
-class LLHTTPConfigRuntimeService : public LLHTTPNode
+class LLHTTPConfigRuntimeService final : public LLHTTPNode
 {
 public:
 	void describe(Description& desc) const override
@@ -105,7 +105,7 @@ public:
 LLHTTPRegistration<LLHTTPConfigRuntimeService>
 	gHTTPRegistrationRuntimeConfig("/app/config/runtime-override");
 
-class LLHTTPConfigRuntimeSingleService : public LLHTTPNode
+class LLHTTPConfigRuntimeSingleService final : public LLHTTPNode
 {
 public:
 	void describe(Description& desc) const override
@@ -180,7 +180,7 @@ LLHTTPRegistration<LLHTTPConfigRuntimeSingleService>
 		"/app/config/runtime-override/<option-name>");
 
 template<int PRIORITY>
-class LLHTTPConfigPriorityService : public LLHTTPNode
+class LLHTTPConfigPriorityService final : public LLHTTPNode
 {
 public:
 	void describe(Description& desc) const override
@@ -210,7 +210,7 @@ LLHTTPRegistration<
 LLHTTPRegistration< LLHTTPConfigPriorityService<LLApp::PRIORITY_DEFAULT> >
 	gHTTPRegistrationDefaultConfig("/app/config/default");
 
-class LLHTTPLiveConfigService : public LLHTTPNode
+class LLHTTPLiveConfigService final : public LLHTTPNode
 {
 public:
 	void describe(Description& desc) const override
@@ -245,7 +245,7 @@ public:
 LLHTTPRegistration<LLHTTPLiveConfigService>
 	gHTTPRegistrationLiveConfig("/app/config/live");
 
-class LLHTTPLiveConfigSingleService : public LLHTTPNode
+class LLHTTPLiveConfigSingleService final : public LLHTTPNode
 {
 public:
 	void describe(Description& desc) const override
diff --git a/indra/llmessage/llsdhttpserver.cpp b/indra/llmessage/llsdhttpserver.cpp
index 5fc93e3de6e2c47d77311731fc3762970e31ba36..8fdfc833ac2c66d532ffb1547684167297945402 100644
--- a/indra/llmessage/llsdhttpserver.cpp
+++ b/indra/llmessage/llsdhttpserver.cpp
@@ -45,7 +45,7 @@ void LLHTTPStandardServices::useServices()
 
 
 
-class LLHTTPHelloService : public LLHTTPNode
+class LLHTTPHelloService final : public LLHTTPNode
 {
 public:
 	void describe(Description& desc) const override
@@ -68,7 +68,7 @@ LLHTTPRegistration<LLHTTPHelloService>
 
 
 
-class LLHTTPEchoService : public LLHTTPNode
+class LLHTTPEchoService final : public LLHTTPNode
 {
 public:
 	void describe(Description& desc) const override
@@ -91,7 +91,7 @@ LLHTTPRegistration<LLHTTPEchoService>
 
 
 
-class LLAPIService : public LLHTTPNode
+class LLAPIService final : public LLHTTPNode
 {
 public:
 	void describe(Description& desc) const override
diff --git a/indra/llmessage/message.cpp b/indra/llmessage/message.cpp
index 9bcac2e9da6ee867a9f05c5c5c108c49f85f81a6..ff77159760d8032efa27a1898bdbb5fac923f736 100644
--- a/indra/llmessage/message.cpp
+++ b/indra/llmessage/message.cpp
@@ -95,7 +95,7 @@ public:
 	apr_pollfd_t mPollFD;
 };
 
-class LLMessageHandlerBridge : public LLHTTPNode
+class LLMessageHandlerBridge final : public LLHTTPNode
 {
 	bool validate(const std::string& name, LLSD& context) const override
 	{ return true; }
diff --git a/indra/newview/llagent.cpp b/indra/newview/llagent.cpp
index 8e477355abfaa00c1433363aca519dd8e659b051..02bf9a433b90bf6a533e7929d147eb410b67ab90 100644
--- a/indra/newview/llagent.cpp
+++ b/indra/newview/llagent.cpp
@@ -3502,7 +3502,7 @@ void LLAgent::processAgentDropGroup(LLMessageSystem *msg, void **)
 	}
 }
 
-class LLAgentDropGroupViewerNode : public LLHTTPNode
+class LLAgentDropGroupViewerNode final : public LLHTTPNode
 {
 	void post(
 		LLHTTPNode::ResponsePtr response,
@@ -3634,7 +3634,7 @@ void LLAgent::processAgentGroupDataUpdate(LLMessageSystem *msg, void **)
 
 }
 
-class LLAgentGroupDataUpdateViewerNode : public LLHTTPNode
+class LLAgentGroupDataUpdateViewerNode final : public LLHTTPNode
 {
 	void post(
 		LLHTTPNode::ResponsePtr response,
diff --git a/indra/newview/llagent.h b/indra/newview/llagent.h
index 56c096664a8b99be657da01bc7b5a4787d689084..6b622bd49217bfaca4129ed201d6e2495f2fa0d3 100644
--- a/indra/newview/llagent.h
+++ b/indra/newview/llagent.h
@@ -94,7 +94,7 @@ class LLAgentImpl;
 //------------------------------------------------------------------------
 // LLAgent
 //------------------------------------------------------------------------
-class LLAgent : public LLOldEvents::LLObservable
+class LLAgent final : public LLOldEvents::LLObservable
 {
 	LOG_CLASS(LLAgent);
 
diff --git a/indra/newview/llfloaterregiondebugconsole.cpp b/indra/newview/llfloaterregiondebugconsole.cpp
index bc8b962f8e04654828349152caa98c8488d6e19a..2c1a9e8c687d3df47186194dd008215f64e16cfa 100644
--- a/indra/newview/llfloaterregiondebugconsole.cpp
+++ b/indra/newview/llfloaterregiondebugconsole.cpp
@@ -70,7 +70,7 @@ namespace
 
 	// This handles responses for console commands sent via the asynchronous
 	// API.
-	class ConsoleResponseNode : public LLHTTPNode
+	class ConsoleResponseNode final : public LLHTTPNode
 	{
 	public:
 		/* virtual */
diff --git a/indra/newview/llimview.cpp b/indra/newview/llimview.cpp
index a1b2520413463652eb56fb639323d364bf633b9c..39218d40a12ab7f9ff2e487cdd39183c4eb3d03e 100644
--- a/indra/newview/llimview.cpp
+++ b/indra/newview/llimview.cpp
@@ -3492,7 +3492,7 @@ void LLIMMgr::processIMTypingCore(const LLUUID& from_id, const EInstantMessage i
 	}
 }
 
-class LLViewerChatterBoxSessionStartReply : public LLHTTPNode
+class LLViewerChatterBoxSessionStartReply final : public LLHTTPNode
 {
 public:
 	void describe(Description& desc) const override
@@ -3548,7 +3548,7 @@ public:
 	}
 };
 
-class LLViewerChatterBoxSessionEventReply : public LLHTTPNode
+class LLViewerChatterBoxSessionEventReply final : public LLHTTPNode
 {
 public:
 	void describe(Description& desc) const override
@@ -3579,7 +3579,7 @@ public:
 	}
 };
 
-class LLViewerForceCloseChatterBoxSession: public LLHTTPNode
+class LLViewerForceCloseChatterBoxSession final : public LLHTTPNode
 {
 public:
 	void post(ResponsePtr response,
@@ -3593,7 +3593,7 @@ public:
 	}
 };
 
-class LLViewerChatterBoxSessionAgentListUpdates : public LLHTTPNode
+class LLViewerChatterBoxSessionAgentListUpdates final : public LLHTTPNode
 {
 public:
 	void post(
@@ -3606,7 +3606,7 @@ public:
 	}
 };
 
-class LLViewerChatterBoxSessionUpdate : public LLHTTPNode
+class LLViewerChatterBoxSessionUpdate final : public LLHTTPNode
 {
 public:
 	void post(
@@ -3629,7 +3629,7 @@ public:
 };
 
 
-class LLViewerChatterBoxInvitation : public LLHTTPNode
+class LLViewerChatterBoxInvitation final : public LLHTTPNode
 {
 public:
 
diff --git a/indra/newview/llmaterialmgr.cpp b/indra/newview/llmaterialmgr.cpp
index fef0096d2414c4d88db3bcea957991ce5a57a228..96f7b89120e767cd4c5e24bafdc5d910ce84c4c4 100644
--- a/indra/newview/llmaterialmgr.cpp
+++ b/indra/newview/llmaterialmgr.cpp
@@ -66,7 +66,7 @@
 
 
 
-class LLMaterialHttpHandler : public LLHttpSDHandler
+class LLMaterialHttpHandler final : public LLHttpSDHandler
 {
 public: 
 	typedef std::function<void(bool, const LLSD&)> CallbackFunction;
diff --git a/indra/newview/llviewerdisplayname.cpp b/indra/newview/llviewerdisplayname.cpp
index a35f819d4636312b211841c0ec6d47fcc41338c8..08488cc5c0551857412c64b4a5d30b1419f8f5b8 100644
--- a/indra/newview/llviewerdisplayname.cpp
+++ b/indra/newview/llviewerdisplayname.cpp
@@ -120,7 +120,7 @@ void LLViewerDisplayName::set(const std::string& display_name, const set_name_sl
 	LLCoros::instance().launch("setDisplayNameCoro", boost::bind(&LLViewerDisplayName::setDisplayNameCoro, cap_url, change_array));
 }
 
-class LLSetDisplayNameReply : public LLHTTPNode
+class LLSetDisplayNameReply final : public LLHTTPNode
 {
 	LOG_CLASS(LLSetDisplayNameReply);
 public:
@@ -160,7 +160,7 @@ public:
 };
 
 
-class LLDisplayNameUpdate : public LLHTTPNode
+class LLDisplayNameUpdate final : public LLHTTPNode
 {
 	/*virtual*/ void post(
 		LLHTTPNode::ResponsePtr response,
diff --git a/indra/newview/llviewerobject.cpp b/indra/newview/llviewerobject.cpp
index 38ebe613d01d1e491158ed0b9d55d5ef9d1a04b1..db25087bfab6e1a623ef858278797810937a831a 100644
--- a/indra/newview/llviewerobject.cpp
+++ b/indra/newview/llviewerobject.cpp
@@ -6905,7 +6905,7 @@ LLVOAvatar* LLViewerObject::getAvatar() const
 }
 
 
-class ObjectPhysicsProperties : public LLHTTPNode
+class ObjectPhysicsProperties final : public LLHTTPNode
 {
 public:
     void post(
diff --git a/indra/newview/llviewerthrottle.cpp b/indra/newview/llviewerthrottle.cpp
index c3d1113750d5ee6d98b5341ca916ea9637b45396..43bfa4de0a9b20d8d6210985706cdc30651b5474 100644
--- a/indra/newview/llviewerthrottle.cpp
+++ b/indra/newview/llviewerthrottle.cpp
@@ -184,7 +184,7 @@ void LLViewerThrottleGroup::dump()
 	LL_DEBUGS("Throttle") << "Total: " << mThrottleTotal << LL_ENDL;
 }
 
-class LLBPSListener : public LLSimpleListener
+class LLBPSListener final : public LLSimpleListener
 {
 public:
 	bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata) override
diff --git a/indra/newview/llvoavatarself.cpp b/indra/newview/llvoavatarself.cpp
index 705395ab938f96c0aba56237e431f0ed063e0ff7..ea5fe3b9aeebdc63f9fb7870aa58f9bd9c4a9a43 100644
--- a/indra/newview/llvoavatarself.cpp
+++ b/indra/newview/llvoavatarself.cpp
@@ -2550,7 +2550,7 @@ void LLVOAvatarSelf::sendViewerAppearanceChangeMetrics()
 	}
 }
 
-//class CheckAgentAppearanceServiceResponder: public LLHTTPClient::Responder
+//class CheckAgentAppearanceServiceResponder final : public LLHTTPClient::Responder
 //{
 //public:
 //	CheckAgentAppearanceServiceResponder() {}
diff --git a/indra/newview/llvoiceclient.cpp b/indra/newview/llvoiceclient.cpp
index c3b858e2441d95315df9da4ebca1c568d64f7a03..5c05b9710c132f3743bc962d076f9c68a9d9f941 100644
--- a/indra/newview/llvoiceclient.cpp
+++ b/indra/newview/llvoiceclient.cpp
@@ -880,7 +880,7 @@ LLVoiceEffectInterface* LLVoiceClient::getVoiceEffectInterface() const
 ///////////////////
 // version checking
 
-class LLViewerRequiredVoiceVersion : public LLHTTPNode
+class LLViewerRequiredVoiceVersion final : public LLHTTPNode
 {
 	static BOOL sAlertedUser;
 
@@ -912,7 +912,7 @@ class LLViewerRequiredVoiceVersion : public LLHTTPNode
 	}
 };
 
-class LLViewerParcelVoiceInfo : public LLHTTPNode
+class LLViewerParcelVoiceInfo final : public LLHTTPNode
 {
 	void post(
 					  LLHTTPNode::ResponsePtr response,
diff --git a/indra/newview/llworld.cpp b/indra/newview/llworld.cpp
index 6b11394ac314074d54c3c9654548a4c78eb8832f..34f743bc241c4d036c773ee12698d2a4095582cd 100644
--- a/indra/newview/llworld.cpp
+++ b/indra/newview/llworld.cpp
@@ -1180,7 +1180,7 @@ void process_enable_simulator(LLMessageSystem *msg, void **user_data)
 	msg->sendReliable(sim);
 }
 
-class LLEstablishAgentCommunication : public LLHTTPNode
+class LLEstablishAgentCommunication final : public LLHTTPNode
 {
 	LOG_CLASS(LLEstablishAgentCommunication);
 public: