From fee66144d9300b2c1bce6765dbd59cb0f67a6503 Mon Sep 17 00:00:00 2001
From: Rye Mutt <rye@alchemyviewer.org>
Date: Fri, 13 Dec 2019 16:49:00 -0500
Subject: [PATCH] More final

---
 indra/llaudio/llaudioengine_fmodstudio.h      |  6 +++---
 indra/llaudio/lllistener_fmodstudio.h         |  2 +-
 indra/llaudio/llstreamingaudio_fmodstudio.h   |  2 +-
 indra/llcommon/llapr.h                        |  2 +-
 indra/llcommon/llassettype.cpp                |  2 +-
 indra/llcommon/lldependencies.h               |  4 ++--
 indra/llcommon/llerror.cpp                    | 12 ++++++------
 indra/llcommon/llerrorthread.h                |  2 +-
 indra/llcommon/llevent.cpp                    |  2 +-
 indra/llcommon/llevent.h                      |  2 +-
 indra/llcommon/lleventdispatcher.cpp          |  6 +++---
 indra/llcommon/llhandle.h                     |  4 ++--
 indra/llcommon/llleap.h                       |  2 +-
 indra/llcommon/llprocessor.cpp                |  4 ++--
 indra/llmessage/lldatapacker.h                |  6 +++---
 indra/llmessage/llhttpnode.h                  |  6 +++---
 indra/llmessage/llhttpnodeadapter.h           |  2 +-
 indra/llmessage/lliohttpserver.cpp            |  2 +-
 indra/llmessage/lliohttpserver.h              |  2 +-
 indra/llmessage/llsdappservices.cpp           | 12 ++++++------
 indra/llmessage/llsdhttpserver.cpp            |  6 +++---
 indra/llmessage/message.cpp                   |  2 +-
 indra/newview/llagent.cpp                     |  4 ++--
 indra/newview/llagent.h                       |  2 +-
 indra/newview/llfloaterregiondebugconsole.cpp |  2 +-
 indra/newview/llimview.cpp                    | 12 ++++++------
 indra/newview/llmaterialmgr.cpp               |  2 +-
 indra/newview/llviewerdisplayname.cpp         |  4 ++--
 indra/newview/llviewerobject.cpp              |  2 +-
 indra/newview/llviewerthrottle.cpp            |  2 +-
 indra/newview/llvoavatarself.cpp              |  2 +-
 indra/newview/llvoiceclient.cpp               |  4 ++--
 indra/newview/llworld.cpp                     |  2 +-
 33 files changed, 64 insertions(+), 64 deletions(-)

diff --git a/indra/llaudio/llaudioengine_fmodstudio.h b/indra/llaudio/llaudioengine_fmodstudio.h
index 05cde86777..16e287cd92 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 b189347c37..94415bff87 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 a90dda943e..daf250a15c 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 455f85ab0f..2cd47d4739 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 f7a86bb8c7..0844facf9d 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 3fe081a55c..8c3143398e 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 164bb54e60..b8b90b1e76 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 bbd8722305..dbc7fb0c9f 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 703a6b6b34..b390269a80 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 93806663ff..36eeb6213f 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 3d0f83ee0a..67d25ffd49 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 870b89c27a..806a951151 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 2620d8e660..9d26022245 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 1956de544a..a21056ca36 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 2227074eb7..63552016e3 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 f3601be773..54eb839020 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 8730480038..725b75c89a 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 ab52981792..15d1203c35 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 2b37566cc1..64f7bab54f 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 459a724249..b76128634a 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 5fc93e3de6..8fdfc833ac 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 9bcac2e9da..ff77159760 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 8e477355ab..02bf9a433b 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 56c096664a..6b622bd492 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 bc8b962f8e..2c1a9e8c68 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 a1b2520413..39218d40a1 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 fef0096d24..96f7b89120 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 a35f819d46..08488cc5c0 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 38ebe613d0..db25087bfa 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 c3d1113750..43bfa4de0a 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 705395ab93..ea5fe3b9ae 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 c3b858e244..5c05b9710c 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 6b11394ac3..34f743bc24 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:
-- 
GitLab