From 5b0729eacf4b4168fa5cd22c2d2f8f289c657acc Mon Sep 17 00:00:00 2001
From: Rye Mutt <rye@alchemyviewer.org>
Date: Mon, 27 Jul 2020 19:44:36 -0400
Subject: [PATCH] The Great Finalization

---
 indra/llappearance/llavatarappearancedefines.h       |  2 +-
 indra/llappearance/lltexlayer.h                      |  2 +-
 indra/llappearance/llwearabletype.cpp                |  2 +-
 indra/llappearance/llwearabletype.h                  |  2 +-
 indra/llcommon/llassettype.cpp                       |  2 +-
 indra/llcommon/llcoros.h                             |  2 +-
 indra/llcommon/llerror.cpp                           |  4 ++--
 indra/llcommon/llevents.h                            |  2 +-
 indra/llcommon/llinitdestroyclass.h                  |  4 ++--
 indra/llcommon/llpounceable.h                        |  2 +-
 indra/llcommon/llsafehandle.h                        |  2 +-
 indra/llcommon/llsingleton.cpp                       |  2 +-
 indra/llcommon/llsingleton.h                         |  4 ++--
 indra/llcommon/llsys.h                               |  2 +-
 indra/llcorehttp/_httpopcancel.h                     |  2 +-
 indra/llcorehttp/_httpoperation.h                    |  6 +++---
 indra/llcorehttp/_httpoprequest.h                    |  2 +-
 indra/llcorehttp/_httpopsetget.h                     |  2 +-
 indra/llcorehttp/_httpopsetpriority.h                |  2 +-
 indra/llcorehttp/_httpreadyqueue.h                   |  2 +-
 indra/llcorehttp/_httprequestqueue.h                 |  2 +-
 indra/llcorehttp/_thread.h                           |  2 +-
 indra/llcorehttp/bufferarray.h                       |  2 +-
 indra/llcorehttp/bufferstream.h                      |  4 ++--
 indra/llcorehttp/httpresponse.h                      |  2 +-
 indra/llcorehttp/httpstats.h                         |  2 +-
 indra/llimage/llimage.h                              |  4 ++--
 indra/llimage/llimagebmp.h                           |  2 +-
 indra/llimage/llimagedxt.h                           |  2 +-
 indra/llimage/llimagej2c.h                           |  4 ++--
 indra/llimage/llimagejpeg.h                          |  2 +-
 indra/llimage/llimagepng.h                           |  2 +-
 indra/llimage/llimagetga.h                           |  2 +-
 indra/llimagej2coj/llimagej2coj.h                    |  2 +-
 indra/llinventory/llfoldertype.cpp                   |  2 +-
 indra/llinventory/llinventorysettings.cpp            |  4 ++--
 indra/llinventory/llinventorytype.cpp                |  4 ++--
 indra/llmessage/llavatarnamecache.h                  |  2 +-
 indra/llmessage/llcoproceduremanager.h               |  2 +-
 indra/llmessage/llexperiencecache.h                  |  2 +-
 indra/llmessage/llproxy.h                            |  2 +-
 indra/llmessage/message.h                            |  2 +-
 indra/llrender/llrender2dutils.h                     |  2 +-
 indra/llui/llclipboard.h                             |  2 +-
 indra/llui/llcommandmanager.h                        |  2 +-
 indra/llui/llfunctorregistry.h                       |  2 +-
 indra/llui/llnotifications.h                         |  2 +-
 indra/llui/llpanel.h                                 |  2 +-
 indra/llui/llresmgr.h                                |  2 +-
 indra/llui/llspellcheck.h                            |  2 +-
 indra/llui/lltextparser.h                            |  2 +-
 indra/llui/lltooltip.h                               |  2 +-
 indra/llui/llui.h                                    |  2 +-
 indra/llui/lluicolortable.h                          |  2 +-
 indra/llui/lluictrl.h                                |  6 +++---
 indra/llui/lluictrlfactory.h                         |  6 +++---
 indra/llui/llurlregistry.h                           |  2 +-
 indra/llui/llview.cpp                                |  4 ++--
 indra/llui/llviewereventrecorder.h                   |  2 +-
 indra/llui/llviewquery.h                             | 12 ++++++------
 indra/llui/llxuiparser.h                             |  2 +-
 indra/media_plugins/cef/windows_volume_catcher.cpp   |  2 +-
 indra/newview/llaccountingcostmanager.h              |  2 +-
 indra/newview/llagentbenefits.h                      |  2 +-
 indra/newview/llagentpicksinfo.h                     |  2 +-
 indra/newview/llappearancemgr.h                      |  2 +-
 indra/newview/llappviewer.cpp                        |  2 +-
 indra/newview/llattachmentsmgr.h                     |  2 +-
 indra/newview/llautoreplace.h                        |  2 +-
 indra/newview/llavataractions.cpp                    |  2 +-
 indra/newview/llavatariconctrl.h                     |  2 +-
 indra/newview/llavatarpropertiesprocessor.h          |  2 +-
 indra/newview/llavatarrenderinfoaccountant.h         |  2 +-
 indra/newview/llavatarrendernotifier.h               |  4 ++--
 indra/newview/llchannelmanager.h                     |  2 +-
 indra/newview/llchicletbar.h                         |  2 +-
 indra/newview/llcontrolavatar.h                      |  2 +-
 indra/newview/llconversationlog.h                    |  2 +-
 indra/newview/lldebugmessagebox.h                    |  2 +-
 indra/newview/lldeferredsounds.h                     |  2 +-
 indra/newview/lldonotdisturbnotificationstorage.h    |  4 ++--
 indra/newview/llestateinfomodel.h                    |  2 +-
 indra/newview/llexperiencelog.h                      |  2 +-
 indra/newview/llfasttimerview.h                      |  2 +-
 indra/newview/llfavoritesbar.h                       |  2 +-
 indra/newview/llfeaturemanager.h                     |  2 +-
 indra/newview/llfloaterabout.cpp                     |  2 +-
 indra/newview/llfloaterauction.h                     |  2 +-
 indra/newview/llfloaterautoreplacesettings.h         |  2 +-
 indra/newview/llfloateravatar.h                      |  2 +-
 indra/newview/llfloateravatarpicker.h                |  2 +-
 indra/newview/llfloateravatarrendersettings.h        |  2 +-
 indra/newview/llfloateravatartextures.h              |  2 +-
 indra/newview/llfloaterbanduration.h                 |  2 +-
 indra/newview/llfloaterbeacons.h                     |  2 +-
 indra/newview/llfloaterbigpreview.h                  |  2 +-
 indra/newview/llfloaterbuildoptions.h                |  2 +-
 indra/newview/llfloaterbulkpermission.h              |  2 +-
 indra/newview/llfloaterbump.h                        |  2 +-
 indra/newview/llfloaterbuy.h                         |  2 +-
 indra/newview/llfloaterbuycontents.h                 |  2 +-
 indra/newview/llfloaterbuycurrency.cpp               |  2 +-
 indra/newview/llfloaterbuycurrencyhtml.h             |  2 +-
 indra/newview/llfloaterbuyland.cpp                   |  2 +-
 indra/newview/llfloaterbvhpreview.h                  |  2 +-
 indra/newview/llfloatercamera.h                      |  2 +-
 indra/newview/llfloatercamerapresets.h               |  2 +-
 indra/newview/llfloatercolorpicker.h                 |  2 +-
 indra/newview/llfloaterconversationlog.h             |  2 +-
 indra/newview/llfloaterconversationpreview.h         |  2 +-
 indra/newview/llfloaterdeleteprefpreset.h            |  2 +-
 indra/newview/llfloaterdestinations.h                |  2 +-
 indra/newview/llfloaterdisplayname.cpp               |  2 +-
 indra/newview/llfloatereditextdaycycle.h             |  2 +-
 indra/newview/llfloaterenvironmentadjust.h           |  2 +-
 indra/newview/llfloaterevent.h                       |  2 +-
 indra/newview/llfloaterexperiencepicker.h            |  2 +-
 indra/newview/llfloaterexperienceprofile.h           |  2 +-
 indra/newview/llfloaterexperiences.h                 |  2 +-
 indra/newview/llfloaterfixedenvironment.h            |  4 ++--
 indra/newview/llfloaterfonttest.h                    |  2 +-
 indra/newview/llfloaterforgetuser.h                  |  2 +-
 indra/newview/llfloatergesture.h                     |  2 +-
 indra/newview/llfloatergodtools.h                    |  2 +-
 indra/newview/llfloatergotoline.h                    |  2 +-
 indra/newview/llfloatergridstatus.h                  |  2 +-
 indra/newview/llfloatergroupbulkban.h                |  2 +-
 indra/newview/llfloatergroupinvite.h                 |  2 +-
 indra/newview/llfloatergroups.h                      |  2 +-
 indra/newview/llfloaterhelpbrowser.h                 |  2 +-
 indra/newview/llfloaterhoverheight.h                 |  2 +-
 indra/newview/llfloaterhud.h                         |  2 +-
 indra/newview/llfloaterimagepreview.h                |  2 +-
 indra/newview/llfloaterimcontainer.h                 |  2 +-
 indra/newview/llfloaterimnearbychat.h                |  2 +-
 indra/newview/llfloaterimnearbychathandler.cpp       |  2 +-
 indra/newview/llfloaterimsession.h                   |  2 +-
 indra/newview/llfloaterinspect.h                     |  2 +-
 indra/newview/llfloaterjoystick.h                    |  2 +-
 indra/newview/llfloaterlagmeter.h                    |  2 +-
 indra/newview/llfloaterland.h                        |  2 +-
 indra/newview/llfloaterlandholdings.h                |  2 +-
 indra/newview/llfloaterlinkreplace.h                 |  2 +-
 indra/newview/llfloaterloadprefpreset.h              |  2 +-
 indra/newview/llfloatermarketplacelistings.h         |  8 ++++----
 indra/newview/llfloatermediasettings.h               |  2 +-
 indra/newview/llfloatermemleak.h                     |  2 +-
 indra/newview/llfloatermodelpreview.h                |  2 +-
 indra/newview/llfloatermyenvironment.h               |  2 +-
 indra/newview/llfloatermyscripts.h                   |  2 +-
 indra/newview/llfloaternamedesc.h                    |  6 +++---
 indra/newview/llfloaternotificationsconsole.h        |  4 ++--
 indra/newview/llfloaterobjectweights.h               |  4 ++--
 indra/newview/llfloateroutfitphotopreview.h          |  2 +-
 indra/newview/llfloateroutfitsnapshot.h              |  6 +++---
 indra/newview/llfloaterpathfindingcharacters.h       |  2 +-
 indra/newview/llfloaterpathfindingconsole.h          |  2 +-
 indra/newview/llfloaterpathfindinglinksets.h         |  2 +-
 indra/newview/llfloaterpay.cpp                       |  2 +-
 indra/newview/llfloaterperms.h                       |  4 ++--
 indra/newview/llfloaterpreference.h                  |  8 ++++----
 indra/newview/llfloaterpreferenceviewadvanced.h      |  2 +-
 indra/newview/llfloaterpreviewtrash.h                |  2 +-
 indra/newview/llfloaterprofile.h                     |  2 +-
 indra/newview/llfloaterproperties.h                  |  4 ++--
 indra/newview/llfloaterregiondebugconsole.h          |  2 +-
 indra/newview/llfloaterregioninfo.h                  |  2 +-
 indra/newview/llfloaterregionrestarting.h            |  2 +-
 indra/newview/llfloaterreporter.h                    |  2 +-
 indra/newview/llfloatersaveprefpreset.h              |  2 +-
 indra/newview/llfloatersceneloadstats.h              |  2 +-
 indra/newview/llfloaterscriptdebug.h                 |  4 ++--
 indra/newview/llfloaterscriptedprefs.h               |  2 +-
 indra/newview/llfloaterscriptlimits.h                |  2 +-
 indra/newview/llfloatersearch.h                      |  2 +-
 indra/newview/llfloatersellland.cpp                  |  2 +-
 indra/newview/llfloatersettingsdebug.h               |  2 +-
 indra/newview/llfloatersidepanelcontainer.h          |  2 +-
 indra/newview/llfloatersnapshot.h                    |  6 +++---
 indra/newview/llfloaterspellchecksettings.h          |  4 ++--
 indra/newview/llfloatertelehub.h                     |  2 +-
 indra/newview/llfloatertestinspectors.h              |  2 +-
 indra/newview/llfloatertestlistview.h                |  2 +-
 indra/newview/llfloatertexturefetchdebugger.h        |  2 +-
 indra/newview/llfloatertools.h                       |  2 +-
 indra/newview/llfloatertopobjects.h                  |  2 +-
 indra/newview/llfloatertoybox.h                      |  2 +-
 indra/newview/llfloatertranslationsettings.h         |  2 +-
 indra/newview/llfloateruipreview.cpp                 |  4 ++--
 indra/newview/llfloaterurlentry.h                    |  2 +-
 indra/newview/llfloatervoiceeffect.h                 |  2 +-
 indra/newview/llfloaterwhitelistentry.h              |  2 +-
 indra/newview/llfloaterwindowsize.h                  |  2 +-
 indra/newview/llfloaterworldmap.h                    |  2 +-
 indra/newview/llfollowcam.h                          |  2 +-
 indra/newview/llfriendcard.h                         |  2 +-
 indra/newview/llgesturemgr.h                         |  2 +-
 indra/newview/llgroupmgr.h                           |  2 +-
 indra/newview/llhints.h                              |  2 +-
 indra/newview/llhudmanager.h                         |  2 +-
 indra/newview/llimagefiltersmanager.h                |  2 +-
 indra/newview/llimview.h                             |  6 +++---
 indra/newview/llinventoryicon.cpp                    |  4 ++--
 indra/newview/llinventorymodelbackgroundfetch.h      |  2 +-
 indra/newview/lllocalbitmaps.h                       |  2 +-
 indra/newview/lllocationhistory.h                    |  2 +-
 indra/newview/lllogchat.cpp                          |  2 +-
 indra/newview/lllogchat.h                            |  2 +-
 indra/newview/lllogininstance.h                      |  2 +-
 indra/newview/llmainlooprepeater.h                   |  2 +-
 indra/newview/llmarketplacefunctions.h               |  4 ++--
 indra/newview/llmenuoptionpathfindingrebakenavmesh.h |  2 +-
 indra/newview/llmoveview.h                           |  2 +-
 indra/newview/llmutelist.h                           |  4 ++--
 indra/newview/llnavigationbar.h                      |  2 +-
 indra/newview/llnotificationmanager.h                |  2 +-
 indra/newview/llnotificationstorage.cpp              |  2 +-
 indra/newview/lloutfitobserver.h                     |  2 +-
 indra/newview/llpanelblockedlist.h                   |  2 +-
 indra/newview/llpaneleditwearable.cpp                |  2 +-
 indra/newview/llpanelgenerictip.h                    |  2 +-
 indra/newview/llpanelmaininventory.cpp               |  2 +-
 indra/newview/llpanelonlinestatus.h                  |  2 +-
 indra/newview/llpanelprofileclassifieds.h            |  2 +-
 indra/newview/llpanelteleporthistory.cpp             |  2 +-
 indra/newview/llpaneltiptoast.h                      |  2 +-
 indra/newview/llpaneltopinfobar.h                    |  2 +-
 indra/newview/llpanelvolume.h                        |  2 +-
 indra/newview/llpanelvolumepulldown.h                |  2 +-
 indra/newview/llpathfindingmanager.h                 |  2 +-
 indra/newview/llpathfindingpathtool.h                |  2 +-
 indra/newview/llpersistentnotificationstorage.h      |  2 +-
 indra/newview/llpresetsmanager.h                     |  2 +-
 indra/newview/llpreview.h                            |  2 +-
 indra/newview/llpreviewanim.h                        |  2 +-
 indra/newview/llpreviewgesture.h                     |  2 +-
 indra/newview/llpreviewnotecard.h                    |  2 +-
 indra/newview/llpreviewscript.cpp                    |  2 +-
 indra/newview/llpreviewscript.h                      |  8 ++++----
 indra/newview/llpreviewsound.h                       |  2 +-
 indra/newview/llpreviewtexture.h                     |  2 +-
 indra/newview/llproductinforequest.h                 |  2 +-
 indra/newview/llrecentpeople.h                       |  2 +-
 indra/newview/llregioninfomodel.h                    |  2 +-
 indra/newview/llremoteparcelrequest.h                |  2 +-
 indra/newview/llscenemonitor.h                       |  4 ++--
 indra/newview/llsceneview.h                          |  2 +-
 indra/newview/llscriptfloater.h                      |  2 +-
 indra/newview/llsearchhistory.h                      |  2 +-
 indra/newview/llselectmgr.h                          |  2 +-
 indra/newview/llsettingspicker.h                     |  2 +-
 indra/newview/llsidepanelappearance.h                |  2 +-
 indra/newview/llspeakers.h                           |  4 ++--
 indra/newview/llspeakingindicatormanager.cpp         |  2 +-
 indra/newview/llstylemap.h                           |  2 +-
 indra/newview/llsyntaxid.h                           |  2 +-
 indra/newview/llteleporthistory.h                    |  2 +-
 indra/newview/llteleporthistorystorage.h             |  2 +-
 indra/newview/lltextureatlasmanager.h                |  2 +-
 indra/newview/lltexturectrl.h                        |  2 +-
 indra/newview/lltoastgroupnotifypanel.h              |  2 +-
 indra/newview/lltoastimpanel.h                       |  2 +-
 indra/newview/lltoastnotifypanel.h                   |  2 +-
 indra/newview/lltoastscriptquestion.h                |  2 +-
 indra/newview/lltoastscripttextbox.h                 |  2 +-
 indra/newview/lltoolbrush.h                          |  2 +-
 indra/newview/lltoolcomp.h                           | 12 ++++++------
 indra/newview/lltooldraganddrop.h                    |  4 ++--
 indra/newview/lltoolface.h                           |  2 +-
 indra/newview/lltoolfocus.h                          |  2 +-
 indra/newview/lltoolgrab.h                           |  2 +-
 indra/newview/lltoolindividual.h                     |  2 +-
 indra/newview/lltoolmgr.h                            |  2 +-
 indra/newview/lltoolobjpicker.h                      |  2 +-
 indra/newview/lltoolpie.h                            |  2 +-
 indra/newview/lltoolpipette.h                        |  2 +-
 indra/newview/lltoolselectland.h                     |  2 +-
 indra/newview/lltrackpicker.h                        |  2 +-
 indra/newview/lltransientfloatermgr.h                |  2 +-
 indra/newview/llurlwhitelist.h                       |  2 +-
 indra/newview/llversioninfo.h                        |  2 +-
 indra/newview/llviewerassettype.cpp                  |  2 +-
 indra/newview/llviewerfoldertype.cpp                 |  2 +-
 indra/newview/llviewerhelp.h                         |  2 +-
 indra/newview/llviewerinventory.cpp                  |  2 +-
 indra/newview/llviewerjoystick.h                     |  2 +-
 indra/newview/llviewerkeyboard.cpp                   |  2 +-
 indra/newview/llviewermedia.h                        |  2 +-
 indra/newview/llviewermediafocus.h                   |  2 +-
 indra/newview/llviewernetwork.h                      |  2 +-
 indra/newview/llviewerparcelaskplay.h                |  2 +-
 indra/newview/llviewerparcelmedia.h                  |  2 +-
 indra/newview/llviewerparcelmediaautoplay.h          |  2 +-
 indra/newview/llviewerstats.h                        |  2 +-
 indra/newview/llviewerstatsrecorder.h                |  2 +-
 indra/newview/llviewertexturelist.h                  |  2 +-
 indra/newview/llviewerwindow.cpp                     |  4 ++--
 indra/newview/llvlcomposition.h                      |  2 +-
 indra/newview/llvocache.cpp                          |  4 ++--
 indra/newview/llvoicechannel.h                       |  4 ++--
 indra/newview/llvoiceclient.cpp                      |  6 +++---
 indra/newview/llvoiceclient.h                        |  4 ++--
 indra/newview/llvoicevivox.h                         |  6 +++---
 indra/newview/llvosurfacepatch.cpp                   |  2 +-
 indra/newview/llwatchdog.cpp                         |  2 +-
 indra/newview/llwatchdog.h                           |  4 ++--
 indra/newview/llwearableitemslist.h                  |  2 +-
 indra/newview/llwearablelist.h                       |  2 +-
 indra/newview/llwindebug.h                           |  2 +-
 indra/newview/llwindowlistener.h                     |  2 +-
 indra/newview/llworld.cpp                            |  2 +-
 indra/newview/llworldmap.h                           |  2 +-
 indra/newview/llworldmapmessage.h                    |  2 +-
 indra/newview/llworldmapview.h                       |  2 +-
 indra/newview/rlvfloaters.h                          |  8 ++++----
 indra/newview/rlvhelper.h                            |  6 +++---
 indra/newview/rlvinventory.h                         |  2 +-
 indra/newview/rlvlocks.h                             |  4 ++--
 indra/newview/rlvmodifiers.h                         |  2 +-
 indra/newview/rlvui.h                                |  2 +-
 320 files changed, 393 insertions(+), 393 deletions(-)

diff --git a/indra/llappearance/llavatarappearancedefines.h b/indra/llappearance/llavatarappearancedefines.h
index 5663d242936..88df2392414 100644
--- a/indra/llappearance/llavatarappearancedefines.h
+++ b/indra/llappearance/llavatarappearancedefines.h
@@ -143,7 +143,7 @@ typedef std::vector<LLWearableType::EType> wearables_vec_t;
 // 
 // This holds const data - it is initialized once and the contents never change after that.
 //------------------------------------------------------------------------
-class LLAvatarAppearanceDictionary : public LLSingleton<LLAvatarAppearanceDictionary>
+class LLAvatarAppearanceDictionary final : public LLSingleton<LLAvatarAppearanceDictionary>
 {
 	//--------------------------------------------------------------------
 	// Constructors and Destructors
diff --git a/indra/llappearance/lltexlayer.h b/indra/llappearance/lltexlayer.h
index 6a5040cf0ba..b7dda4d121b 100644
--- a/indra/llappearance/lltexlayer.h
+++ b/indra/llappearance/lltexlayer.h
@@ -291,7 +291,7 @@ class LLTexLayerSetBuffer : public virtual LLRefCount
 // LLTexLayerStaticImageList
 //
 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-class LLTexLayerStaticImageList : public LLSingleton<LLTexLayerStaticImageList>
+class LLTexLayerStaticImageList final : public LLSingleton<LLTexLayerStaticImageList>
 {
 	LLSINGLETON(LLTexLayerStaticImageList);
 	~LLTexLayerStaticImageList();
diff --git a/indra/llappearance/llwearabletype.cpp b/indra/llappearance/llwearabletype.cpp
index 66a23c70165..99a66611d6b 100644
--- a/indra/llappearance/llwearabletype.cpp
+++ b/indra/llappearance/llwearabletype.cpp
@@ -57,7 +57,7 @@ struct WearableEntry : public LLDictionaryEntry
 	BOOL mAllowMultiwear;
 };
 
-class LLWearableDictionary : public LLParamSingleton<LLWearableDictionary>,
+class LLWearableDictionary final : public LLParamSingleton<LLWearableDictionary>,
 							 public LLDictionary<LLWearableType::EType, WearableEntry>
 {
 	LLSINGLETON(LLWearableDictionary, LLWearableType&);
diff --git a/indra/llappearance/llwearabletype.h b/indra/llappearance/llwearabletype.h
index 57f3ef160d6..f0b06074ab8 100644
--- a/indra/llappearance/llwearabletype.h
+++ b/indra/llappearance/llwearabletype.h
@@ -33,7 +33,7 @@
 #include "llsingleton.h"
 #include "llinvtranslationbrdg.h"
 
-class LLWearableType : public LLParamSingleton<LLWearableType>
+class LLWearableType final : public LLParamSingleton<LLWearableType>
 {
 	LLSINGLETON(LLWearableType, LLTranslationBridge* trans);
 	~LLWearableType();
diff --git a/indra/llcommon/llassettype.cpp b/indra/llcommon/llassettype.cpp
index e6cc06e8d01..09578608c8f 100644
--- a/indra/llcommon/llassettype.cpp
+++ b/indra/llcommon/llassettype.cpp
@@ -60,7 +60,7 @@ struct AssetEntry : public LLDictionaryEntry
 	bool mCanKnow;
 };
 
-class LLAssetDictionary : public LLSingleton<LLAssetDictionary>,
+class LLAssetDictionary final : public LLSingleton<LLAssetDictionary>,
 						  public LLDictionary<LLAssetType::EType, AssetEntry>
 {
 	LLSINGLETON(LLAssetDictionary);
diff --git a/indra/llcommon/llcoros.h b/indra/llcommon/llcoros.h
index 38c2356c99d..cabfd074c4b 100644
--- a/indra/llcommon/llcoros.h
+++ b/indra/llcommon/llcoros.h
@@ -85,7 +85,7 @@ namespace boost {
  * can provide diagnostic info: we can look up the name of the
  * currently-running coroutine.
  */
-class LL_COMMON_API LLCoros: public LLSingleton<LLCoros>
+class LL_COMMON_API LLCoros final : public LLSingleton<LLCoros>
 {
     LLSINGLETON(LLCoros);
     ~LLCoros();
diff --git a/indra/llcommon/llerror.cpp b/indra/llcommon/llerror.cpp
index 3ffb05f858a..4722cd1adb2 100644
--- a/indra/llcommon/llerror.cpp
+++ b/indra/llcommon/llerror.cpp
@@ -439,7 +439,7 @@ namespace
 	typedef std::vector<LLError::RecorderPtr> Recorders;
 	typedef std::vector<LLError::CallSite*> CallSiteVector;
 
-	class Globals : public LLSingleton<Globals>
+	class Globals final : public LLSingleton<Globals>
 	{
 		LLSINGLETON(Globals);
 	public:
@@ -513,7 +513,7 @@ namespace LLError
 
 	typedef LLPointer<SettingsConfig> SettingsConfigPtr;
 
-	class Settings : public LLSingleton<Settings>
+	class Settings final : public LLSingleton<Settings>
 	{
 		LLSINGLETON(Settings);
 	public:
diff --git a/indra/llcommon/llevents.h b/indra/llcommon/llevents.h
index e380c108f4d..edfcb0a4601 100644
--- a/indra/llcommon/llevents.h
+++ b/indra/llcommon/llevents.h
@@ -234,7 +234,7 @@ class LLEventPump;
 // capable of this.) In that case, instead of calling LLEventPumps::instance()
 // again -- resurrecting the deleted LLSingleton -- store an
 // LLHandle<LLEventPumps> and test it before use.
-class LL_COMMON_API LLEventPumps: public LLSingleton<LLEventPumps>,
+class LL_COMMON_API LLEventPumps final : public LLSingleton<LLEventPumps>,
                                   public LLHandleProvider<LLEventPumps>
 {
     LLSINGLETON(LLEventPumps);
diff --git a/indra/llcommon/llinitdestroyclass.h b/indra/llcommon/llinitdestroyclass.h
index 5f979614fe0..956200b1c4e 100644
--- a/indra/llcommon/llinitdestroyclass.h
+++ b/indra/llcommon/llinitdestroyclass.h
@@ -74,7 +74,7 @@ class LLCallbackRegistry
  * (before main()), requiring LLInitClassList to be fully constructed on
  * demand regardless of module initialization order.
  */
-class LLInitClassList : 
+class LLInitClassList final :
 	public LLCallbackRegistry, 
 	public LLSingleton<LLInitClassList>
 {
@@ -88,7 +88,7 @@ class LLInitClassList :
  * time (before main()), requiring LLDestroyClassList to be fully constructed
  * on demand regardless of module initialization order.
  */
-class LLDestroyClassList : 
+class LLDestroyClassList final :
 	public LLCallbackRegistry, 
 	public LLSingleton<LLDestroyClassList>
 {
diff --git a/indra/llcommon/llpounceable.h b/indra/llcommon/llpounceable.h
index 37ee88e0edc..594d02b2cba 100644
--- a/indra/llcommon/llpounceable.h
+++ b/indra/llcommon/llpounceable.h
@@ -73,7 +73,7 @@ class LLPounceableQueueImpl;
 // because we can't count on a data member queue being initialized at the time
 // we start getting callWhenReady() calls. This is that LLSingleton.
 template <typename T>
-class LLPounceableQueueSingleton:
+class LLPounceableQueueSingleton final :
     public LLSingleton<LLPounceableQueueSingleton<T> >
 {
     LLSINGLETON_EMPTY_CTOR(LLPounceableQueueSingleton);
diff --git a/indra/llcommon/llsafehandle.h b/indra/llcommon/llsafehandle.h
index 9550e6253e8..817e0de0ae4 100644
--- a/indra/llcommon/llsafehandle.h
+++ b/indra/llcommon/llsafehandle.h
@@ -178,7 +178,7 @@ class LLSafeHandle
 	// Of course, as with any LLSingleton, the "null instance" is only
 	// instantiated on demand -- in this case, if you actually try to
 	// dereference an LLSafeHandle containing null.
-	class NullInstanceHolder: public LLSingleton<NullInstanceHolder>
+	class NullInstanceHolder final : public LLSingleton<NullInstanceHolder>
 	{
 		LLSINGLETON_EMPTY_CTOR(NullInstanceHolder);
 		~NullInstanceHolder() {}
diff --git a/indra/llcommon/llsingleton.cpp b/indra/llcommon/llsingleton.cpp
index 0cc48d2e482..73ebabe7a1b 100644
--- a/indra/llcommon/llsingleton.cpp
+++ b/indra/llcommon/llsingleton.cpp
@@ -52,7 +52,7 @@ bool oktolog();
 // list is to help track inter-LLSingleton dependencies, and since we have
 // this implicit dependency from every LLSingleton to the master list, make it
 // an LLSingleton.
-class LLSingletonBase::MasterList:
+class LLSingletonBase::MasterList final :
     public LLSingleton<LLSingletonBase::MasterList>
 {
 private:
diff --git a/indra/llcommon/llsingleton.h b/indra/llcommon/llsingleton.h
index 30a5b21cf86..8f5998c1fe7 100644
--- a/indra/llcommon/llsingleton.h
+++ b/indra/llcommon/llsingleton.h
@@ -832,10 +832,10 @@ private:                                                                \
  */
 #define LLSINGLETON_EMPTY_CTOR(DERIVED_CLASS)                           \
     /* LLSINGLETON() is carefully implemented to permit exactly this */ \
-    LLSINGLETON(DERIVED_CLASS) {}
+    LLSINGLETON(DERIVED_CLASS) = default;
 
 #define LLSINGLETON_EMPTY_CTOR_C11(DERIVED_CLASS)                       \
     /* LLSINGLETON() is carefully implemented to permit exactly this */ \
-    LLSINGLETON_C11(DERIVED_CLASS) {}
+    LLSINGLETON_C11(DERIVED_CLASS) = default;
 
 #endif
diff --git a/indra/llcommon/llsys.h b/indra/llcommon/llsys.h
index 5ab97939b95..044381155b8 100644
--- a/indra/llcommon/llsys.h
+++ b/indra/llcommon/llsys.h
@@ -41,7 +41,7 @@
 #include <iosfwd>
 #include <string>
 
-class LL_COMMON_API LLOSInfo : public LLSingleton<LLOSInfo>
+class LL_COMMON_API LLOSInfo final : public LLSingleton<LLOSInfo>
 {
 	LLSINGLETON(LLOSInfo);
 public:
diff --git a/indra/llcorehttp/_httpopcancel.h b/indra/llcorehttp/_httpopcancel.h
index 86944eb159a..f1385fd3cfb 100644
--- a/indra/llcorehttp/_httpopcancel.h
+++ b/indra/llcorehttp/_httpopcancel.h
@@ -49,7 +49,7 @@ namespace LLCore
 /// its final status unchanged and *this* request will complete
 /// with an HE_HANDLE_NOT_FOUND error status.
 
-class HttpOpCancel : public HttpOperation
+class HttpOpCancel final : public HttpOperation
 {
 public:
 	/// @param	handle	Handle of previously-issued request to
diff --git a/indra/llcorehttp/_httpoperation.h b/indra/llcorehttp/_httpoperation.h
index 1a75921c09c..bcf5ad2aef1 100644
--- a/indra/llcorehttp/_httpoperation.h
+++ b/indra/llcorehttp/_httpoperation.h
@@ -217,7 +217,7 @@ class HttpOperation : private boost::noncopyable,
 /// request *does* generate a reply on the response
 /// queue, if requested.
 
-class HttpOpStop : public HttpOperation
+class HttpOpStop final : public HttpOperation
 {
 public:
 	HttpOpStop();
@@ -239,7 +239,7 @@ class HttpOpStop : public HttpOperation
 /// the servicing thread which bounces a reply back to the
 /// caller without any further delay.
 
-class HttpOpNull : public HttpOperation
+class HttpOpNull final : public HttpOperation
 {
 public:
 	HttpOpNull();
@@ -259,7 +259,7 @@ class HttpOpNull : public HttpOperation
 /// HttpOpSpin is a test-only request that puts the worker
 /// thread into a cpu spin.  Used for unit tests and cleanup
 /// evaluation.  You do not want to use this in production.
-class HttpOpSpin : public HttpOperation
+class HttpOpSpin final : public HttpOperation
 {
 public:
 	// 0 does a hard spin in the operation
diff --git a/indra/llcorehttp/_httpoprequest.h b/indra/llcorehttp/_httpoprequest.h
index cdbe3507853..29983d58b1a 100644
--- a/indra/llcorehttp/_httpoprequest.h
+++ b/indra/llcorehttp/_httpoprequest.h
@@ -63,7 +63,7 @@ class BufferArray;
 /// the information needed to make a working request which can
 /// then be enqueued to a request queue.
 ///
-class HttpOpRequest : public HttpOperation
+class HttpOpRequest final : public HttpOperation
 {
 public:
     typedef boost::shared_ptr<HttpOpRequest> ptr_t;
diff --git a/indra/llcorehttp/_httpopsetget.h b/indra/llcorehttp/_httpopsetget.h
index eabd41e79f2..16848885560 100644
--- a/indra/llcorehttp/_httpopsetget.h
+++ b/indra/llcorehttp/_httpopsetget.h
@@ -50,7 +50,7 @@ namespace LLCore
 /// *TODO:  Can't return values to caller yet.  Need to do
 /// something better with HttpResponse and visitNotifier().
 ///
-class HttpOpSetGet : public HttpOperation
+class HttpOpSetGet final : public HttpOperation
 {
 public:
     typedef boost::shared_ptr<HttpOpSetGet> ptr_t;
diff --git a/indra/llcorehttp/_httpopsetpriority.h b/indra/llcorehttp/_httpopsetpriority.h
index 43e2aa081b2..2e735db7c8d 100644
--- a/indra/llcorehttp/_httpopsetpriority.h
+++ b/indra/llcorehttp/_httpopsetpriority.h
@@ -46,7 +46,7 @@ namespace LLCore
 /// *NOTE:  This will very likely be removed in the near future
 /// when priority is removed from the library.
 
-class HttpOpSetPriority : public HttpOperation
+class HttpOpSetPriority final : public HttpOperation
 {
 public:
 	HttpOpSetPriority(HttpHandle handle, HttpRequest::priority_t priority);
diff --git a/indra/llcorehttp/_httpreadyqueue.h b/indra/llcorehttp/_httpreadyqueue.h
index 7418988ec1f..dbdebbd1b56 100644
--- a/indra/llcorehttp/_httpreadyqueue.h
+++ b/indra/llcorehttp/_httpreadyqueue.h
@@ -66,7 +66,7 @@ typedef std::priority_queue<HttpOpRequest::ptr_t,
 
 #endif // LLCORE_HTTP_READY_QUEUE_IGNORES_PRIORITY
 
-class HttpReadyQueue : public HttpReadyQueueBase
+class HttpReadyQueue final : public HttpReadyQueueBase
 {
 public:
 	HttpReadyQueue()
diff --git a/indra/llcorehttp/_httprequestqueue.h b/indra/llcorehttp/_httprequestqueue.h
index 3c3d134b07f..153c6960fa9 100644
--- a/indra/llcorehttp/_httprequestqueue.h
+++ b/indra/llcorehttp/_httprequestqueue.h
@@ -47,7 +47,7 @@ class HttpOperation;
 /// requests from all HttpRequest instances into the
 /// singleton HttpService instance.
 
-class HttpRequestQueue : public LLCoreInt::RefCounted
+class HttpRequestQueue final : public LLCoreInt::RefCounted
 {
 protected:
 	/// Caller acquires a Refcount on construction
diff --git a/indra/llcorehttp/_thread.h b/indra/llcorehttp/_thread.h
index 22b7750badb..3522658e87a 100644
--- a/indra/llcorehttp/_thread.h
+++ b/indra/llcorehttp/_thread.h
@@ -39,7 +39,7 @@
 namespace LLCoreInt
 {
 
-class HttpThread : public RefCounted
+class HttpThread final : public RefCounted
 {
 private:
 	HttpThread();							// Not defined
diff --git a/indra/llcorehttp/bufferarray.h b/indra/llcorehttp/bufferarray.h
index 320adf2b8b5..dd58bdefb4a 100644
--- a/indra/llcorehttp/bufferarray.h
+++ b/indra/llcorehttp/bufferarray.h
@@ -64,7 +64,7 @@ class BufferArrayStreamBuf;
 /// Allocation:  Refcounted, heap only.  Caller of the constructor
 /// is given a single refcount.
 ///
-class BufferArray : public LLCoreInt::RefCounted
+class BufferArray final : public LLCoreInt::RefCounted
 {
 public:
 	// BufferArrayStreamBuf has intimate knowledge of this
diff --git a/indra/llcorehttp/bufferstream.h b/indra/llcorehttp/bufferstream.h
index 9327a798aa9..eda796a94f7 100644
--- a/indra/llcorehttp/bufferstream.h
+++ b/indra/llcorehttp/bufferstream.h
@@ -82,7 +82,7 @@ namespace LLCore
 /// sometime.
 ///
 
-class BufferArrayStreamBuf : public std::streambuf
+class BufferArrayStreamBuf final : public std::streambuf
 {
 public:
 	/// Constructor increments the reference count on the
@@ -131,7 +131,7 @@ class BufferArrayStreamBuf : public std::streambuf
 /// can be applied to a BufferArray.  Very convenient for LLSD
 /// serialization and parsing as well.
 
-class BufferArrayStream : public std::iostream
+class BufferArrayStream final : public std::iostream
 {
 public:
 	/// Constructor increments the reference count on the
diff --git a/indra/llcorehttp/httpresponse.h b/indra/llcorehttp/httpresponse.h
index b834085e5cb..e04feb69da0 100644
--- a/indra/llcorehttp/httpresponse.h
+++ b/indra/llcorehttp/httpresponse.h
@@ -57,7 +57,7 @@ class HttpHeaders;
 /// Allocation:  Refcounted, heap only.  Caller of the constructor
 /// is given a refcount.
 ///
-class HttpResponse : public LLCoreInt::RefCounted
+class HttpResponse final : public LLCoreInt::RefCounted
 {
 public:
 	HttpResponse();
diff --git a/indra/llcorehttp/httpstats.h b/indra/llcorehttp/httpstats.h
index 2c713cb5487..d6f0a422cdf 100644
--- a/indra/llcorehttp/httpstats.h
+++ b/indra/llcorehttp/httpstats.h
@@ -35,7 +35,7 @@
 
 namespace LLCore
 {
-    class HTTPStats : public LLSingleton<HTTPStats>
+    class HTTPStats final : public LLSingleton<HTTPStats>
     {
         LLSINGLETON(HTTPStats);
         virtual ~HTTPStats();
diff --git a/indra/llimage/llimage.h b/indra/llimage/llimage.h
index 32d4ea9566b..e5a71f38748 100644
--- a/indra/llimage/llimage.h
+++ b/indra/llimage/llimage.h
@@ -90,7 +90,7 @@ typedef enum e_image_codec
 //============================================================================
 // library initialization class
 
-class LLImage : public LLParamSingleton<LLImage>
+class LLImage final : public LLParamSingleton<LLImage>
 {
 	LLSINGLETON(LLImage, bool use_new_byte_range = false, S32 minimal_reverse_byte_range_percent = 75);
 	~LLImage();
@@ -180,7 +180,7 @@ class LLImageBase
 };
 
 // Raw representation of an image (used for textures, and other uncompressed formats
-class LLImageRaw : public LLImageBase
+class LLImageRaw final : public LLImageBase
 {
 protected:
 	/*virtual*/ ~LLImageRaw();
diff --git a/indra/llimage/llimagebmp.h b/indra/llimage/llimagebmp.h
index 6a5fa4697d1..724e8b7eeea 100644
--- a/indra/llimage/llimagebmp.h
+++ b/indra/llimage/llimagebmp.h
@@ -31,7 +31,7 @@
 
 // This class compresses and decompressed BMP files
 
-class LLImageBMP : public LLImageFormatted
+class LLImageBMP final : public LLImageFormatted
 {
 protected:
 	virtual ~LLImageBMP();
diff --git a/indra/llimage/llimagedxt.h b/indra/llimage/llimagedxt.h
index a4a9bcf99c4..6e7126c0cf5 100644
--- a/indra/llimage/llimagedxt.h
+++ b/indra/llimage/llimagedxt.h
@@ -31,7 +31,7 @@
 
 // This class decodes and encodes LL DXT files (which may unclude uncompressed RGB or RGBA mipped data)
 
-class LLImageDXT : public LLImageFormatted
+class LLImageDXT final : public LLImageFormatted
 {
 public:
 	enum EFileFormat
diff --git a/indra/llimage/llimagej2c.h b/indra/llimage/llimagej2c.h
index e196f7479ed..1e1c91a306c 100644
--- a/indra/llimage/llimagej2c.h
+++ b/indra/llimage/llimagej2c.h
@@ -38,7 +38,7 @@ const F32 DEFAULT_COMPRESSION_RATE = 1.f/8.f;
 class LLImageJ2CImpl;
 class LLImageCompressionTester ;
 
-class LLImageJ2C : public LLImageFormatted
+class LLImageJ2C final : public LLImageFormatted
 {
 protected:
 	virtual ~LLImageJ2C();
@@ -137,7 +137,7 @@ class LLImageJ2CImpl
 // Tracks the image compression / decompression data,
 // records and outputs them to the log file.
 //
-class LLImageCompressionTester : public LLMetricPerformanceTesterBasic
+class LLImageCompressionTester final : public LLMetricPerformanceTesterBasic
 {
     public:
         LLImageCompressionTester();
diff --git a/indra/llimage/llimagejpeg.h b/indra/llimage/llimagejpeg.h
index 7a849a84212..4912f5080cc 100644
--- a/indra/llimage/llimagejpeg.h
+++ b/indra/llimage/llimagejpeg.h
@@ -42,7 +42,7 @@ extern "C" {
 #endif
 }
 
-class LLImageJPEG : public LLImageFormatted
+class LLImageJPEG final : public LLImageFormatted
 {
 protected:
 	virtual ~LLImageJPEG();
diff --git a/indra/llimage/llimagepng.h b/indra/llimage/llimagepng.h
index ef16f2996f9..109510ef9b4 100644
--- a/indra/llimage/llimagepng.h
+++ b/indra/llimage/llimagepng.h
@@ -29,7 +29,7 @@
 #include "stdtypes.h"
 #include "llimage.h"
 
-class LLImagePNG : public LLImageFormatted
+class LLImagePNG final : public LLImageFormatted
 {
 protected:
 	~LLImagePNG();
diff --git a/indra/llimage/llimagetga.h b/indra/llimage/llimagetga.h
index b1f34dcdadd..75cad685bad 100644
--- a/indra/llimage/llimagetga.h
+++ b/indra/llimage/llimagetga.h
@@ -31,7 +31,7 @@
 
 // This class compresses and decompressed TGA (targa) files
 
-class LLImageTGA : public LLImageFormatted
+class LLImageTGA final : public LLImageFormatted
 {
 protected:
 	virtual ~LLImageTGA();
diff --git a/indra/llimagej2coj/llimagej2coj.h b/indra/llimagej2coj/llimagej2coj.h
index 5c6193944e3..02b9a11ea1a 100644
--- a/indra/llimagej2coj/llimagej2coj.h
+++ b/indra/llimagej2coj/llimagej2coj.h
@@ -29,7 +29,7 @@
 
 #include "llimagej2c.h"
 
-class LLImageJ2COJ : public LLImageJ2CImpl
+class LLImageJ2COJ final : public LLImageJ2CImpl
 {	
 public:
 	LLImageJ2COJ();
diff --git a/indra/llinventory/llfoldertype.cpp b/indra/llinventory/llfoldertype.cpp
index 27bb4058a01..a41e5394554 100644
--- a/indra/llinventory/llfoldertype.cpp
+++ b/indra/llinventory/llfoldertype.cpp
@@ -48,7 +48,7 @@ struct FolderEntry : public LLDictionaryEntry
 	const bool mIsProtected;
 };
 
-class LLFolderDictionary : public LLSingleton<LLFolderDictionary>,
+class LLFolderDictionary final : public LLSingleton<LLFolderDictionary>,
 						   public LLDictionary<LLFolderType::EType, FolderEntry>
 {
 	LLSINGLETON(LLFolderDictionary);
diff --git a/indra/llinventory/llinventorysettings.cpp b/indra/llinventory/llinventorysettings.cpp
index fdad50e8d46..01299a65849 100644
--- a/indra/llinventory/llinventorysettings.cpp
+++ b/indra/llinventory/llinventorysettings.cpp
@@ -39,7 +39,7 @@ namespace {
 }
 
 //=========================================================================
-struct SettingsEntry : public LLDictionaryEntry
+struct SettingsEntry final : public LLDictionaryEntry
 {
     SettingsEntry(const std::string &name,
         const std::string& default_new_name,
@@ -61,7 +61,7 @@ struct SettingsEntry : public LLDictionaryEntry
     LLInventoryType::EIconName mIconName;
 };
 
-class LLSettingsDictionary : public LLSingleton<LLSettingsDictionary>,
+class LLSettingsDictionary final : public LLSingleton<LLSettingsDictionary>,
     public LLDictionary<LLSettingsType::type_e, SettingsEntry>
 {
     LLSINGLETON(LLSettingsDictionary);
diff --git a/indra/llinventory/llinventorytype.cpp b/indra/llinventory/llinventorytype.cpp
index 8459347ffa5..d641a3f30a9 100644
--- a/indra/llinventory/llinventorytype.cpp
+++ b/indra/llinventory/llinventorytype.cpp
@@ -36,7 +36,7 @@ static const std::string empty_string;
 ///----------------------------------------------------------------------------
 /// Class LLInventoryType
 ///----------------------------------------------------------------------------
-struct InventoryEntry : public LLDictionaryEntry
+struct InventoryEntry final : public LLDictionaryEntry
 {
 	InventoryEntry(const std::string &name, // unlike asset type names, not limited to 8 characters; need not match asset type names
 				   const std::string &human_name, // for decoding to human readable form; put any and as many printable characters you want in each one.
@@ -61,7 +61,7 @@ struct InventoryEntry : public LLDictionaryEntry
 	asset_vec_t mAssetTypes;
 };
 
-class LLInventoryDictionary : public LLSingleton<LLInventoryDictionary>,
+class LLInventoryDictionary final : public LLSingleton<LLInventoryDictionary>,
 							  public LLDictionary<LLInventoryType::EType, InventoryEntry>
 {
 	LLSINGLETON(LLInventoryDictionary);
diff --git a/indra/llmessage/llavatarnamecache.h b/indra/llmessage/llavatarnamecache.h
index 3c12d66ff61..4f249cd653f 100644
--- a/indra/llmessage/llavatarnamecache.h
+++ b/indra/llmessage/llavatarnamecache.h
@@ -39,7 +39,7 @@
 
 class LLSD;
 
-class LLAvatarNameCache : public LLSingleton<LLAvatarNameCache>
+class LLAvatarNameCache final : public LLSingleton<LLAvatarNameCache>
 {
 	LLSINGLETON(LLAvatarNameCache);
 	~LLAvatarNameCache();
diff --git a/indra/llmessage/llcoproceduremanager.h b/indra/llmessage/llcoproceduremanager.h
index 70204ba02b5..de858fb29dc 100644
--- a/indra/llmessage/llcoproceduremanager.h
+++ b/indra/llmessage/llcoproceduremanager.h
@@ -36,7 +36,7 @@
 
 class LLCoprocedurePool;
 
-class LLCoprocedureManager : public LLSingleton < LLCoprocedureManager >
+class LLCoprocedureManager final : public LLSingleton < LLCoprocedureManager >
 {
     LLSINGLETON(LLCoprocedureManager);
     virtual ~LLCoprocedureManager();
diff --git a/indra/llmessage/llexperiencecache.h b/indra/llmessage/llexperiencecache.h
index f9ff69c2b66..99cd06f2763 100644
--- a/indra/llmessage/llexperiencecache.h
+++ b/indra/llmessage/llexperiencecache.h
@@ -41,7 +41,7 @@ class LLSD;
 class LLUUID;
 
 
-class LLExperienceCache: public LLSingleton < LLExperienceCache >
+class LLExperienceCache final : public LLSingleton < LLExperienceCache >
 {
     LLSINGLETON(LLExperienceCache);
 
diff --git a/indra/llmessage/llproxy.h b/indra/llmessage/llproxy.h
index a1ffa9e5d56..59c3999e56d 100644
--- a/indra/llmessage/llproxy.h
+++ b/indra/llmessage/llproxy.h
@@ -217,7 +217,7 @@ enum LLSocks5AuthType
  * *TODO$: This should be moved into the LLCore::Http space.
  * 
  */
-class LLProxy: public LLSingleton<LLProxy>
+class LLProxy final : public LLSingleton<LLProxy>
 {
 	/*###########################################################################################
 	METHODS THAT DO NOT LOCK mProxyMutex!
diff --git a/indra/llmessage/message.h b/indra/llmessage/message.h
index 52dbf871dbc..5a07085a24b 100644
--- a/indra/llmessage/message.h
+++ b/indra/llmessage/message.h
@@ -69,7 +69,7 @@ const U32 MESSAGE_NUMBER_OF_HASH_BUCKETS = 8192;
 
 const S32 MESSAGE_MAX_PER_FRAME = 400;
 
-class LLMessageStringTable : public LLSingleton<LLMessageStringTable>
+class LLMessageStringTable final : public LLSingleton<LLMessageStringTable>
 {
 	LLSINGLETON(LLMessageStringTable);
 	~LLMessageStringTable();
diff --git a/indra/llrender/llrender2dutils.h b/indra/llrender/llrender2dutils.h
index 70ab006fd65..3428067e71f 100644
--- a/indra/llrender/llrender2dutils.h
+++ b/indra/llrender/llrender2dutils.h
@@ -121,7 +121,7 @@ inline void gl_rect_2d_offset_local( const LLRect& rect, S32 pixel_offset, BOOL
 
 class LLImageProviderInterface;
 
-class LLRender2D : public LLParamSingleton<LLRender2D>
+class LLRender2D final : public LLParamSingleton<LLRender2D>
 {
 	LLSINGLETON(LLRender2D, LLImageProviderInterface* image_provider);
 	LOG_CLASS(LLRender2D);
diff --git a/indra/llui/llclipboard.h b/indra/llui/llclipboard.h
index a668ac1ac6c..dc4e6c721bc 100644
--- a/indra/llui/llclipboard.h
+++ b/indra/llui/llclipboard.h
@@ -46,7 +46,7 @@
 // In all other cases, the text and the UUIDs are very much independent.
 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-class LLClipboard : public LLSingleton<LLClipboard>
+class LLClipboard final : public LLSingleton<LLClipboard>
 {
 	LLSINGLETON(LLClipboard);
 	~LLClipboard();
diff --git a/indra/llui/llcommandmanager.h b/indra/llui/llcommandmanager.h
index 8cec5e2b244..076ccc57a63 100644
--- a/indra/llui/llcommandmanager.h
+++ b/indra/llui/llcommandmanager.h
@@ -170,7 +170,7 @@ class LLCommand
 };
 
 
-class LLCommandManager
+class LLCommandManager final
 :	public LLSingleton<LLCommandManager>
 {
 	LLSINGLETON(LLCommandManager);
diff --git a/indra/llui/llfunctorregistry.h b/indra/llui/llfunctorregistry.h
index e43974bc52f..25ffc975b7f 100644
--- a/indra/llui/llfunctorregistry.h
+++ b/indra/llui/llfunctorregistry.h
@@ -51,7 +51,7 @@
  */
 
 template <typename FUNCTOR_TYPE>
-class LLFunctorRegistry : public LLSingleton<LLFunctorRegistry<FUNCTOR_TYPE> >
+class LLFunctorRegistry final : public LLSingleton<LLFunctorRegistry<FUNCTOR_TYPE> >
 {
 	LLSINGLETON(LLFunctorRegistry);
 	LOG_CLASS(LLFunctorRegistry);
diff --git a/indra/llui/llnotifications.h b/indra/llui/llnotifications.h
index c7277b99ba6..d1e82342798 100644
--- a/indra/llui/llnotifications.h
+++ b/indra/llui/llnotifications.h
@@ -870,7 +870,7 @@ class LLNotificationsInterface
 						LLNotificationFunctorRegistry::ResponseFunctor functor) = 0;
 };
 
-class LLNotifications : 
+class LLNotifications final :
 	public LLNotificationsInterface,
 	public LLSingleton<LLNotifications>, 
 	public LLNotificationChannelBase
diff --git a/indra/llui/llpanel.h b/indra/llui/llpanel.h
index b8f47ef6bad..0a77f8e6299 100644
--- a/indra/llui/llpanel.h
+++ b/indra/llui/llpanel.h
@@ -265,7 +265,7 @@ typedef boost::function<LLPanel* (void)> LLPanelClassCreatorFunc;
 
 // local static instance for registering a particular panel class
 
-class LLRegisterPanelClass
+class LLRegisterPanelClass final
 :	public LLSingleton< LLRegisterPanelClass >
 {
 	LLSINGLETON_EMPTY_CTOR(LLRegisterPanelClass);
diff --git a/indra/llui/llresmgr.h b/indra/llui/llresmgr.h
index b19d8d40b89..8f14d9f687c 100644
--- a/indra/llui/llresmgr.h
+++ b/indra/llui/llresmgr.h
@@ -40,7 +40,7 @@ enum LLLOCALE_ID
 	LLLOCALE_COUNT	// Number of values in this enum.  Keep at end.
 };
 
-class LLResMgr : public LLSingleton<LLResMgr>
+class LLResMgr final : public LLSingleton<LLResMgr>
 {
 	LLSINGLETON(LLResMgr);
 
diff --git a/indra/llui/llspellcheck.h b/indra/llui/llspellcheck.h
index f1964cc0919..0e4d96561cb 100644
--- a/indra/llui/llspellcheck.h
+++ b/indra/llui/llspellcheck.h
@@ -34,7 +34,7 @@
 
 class Hunspell;
 
-class LLSpellChecker : public LLSingleton<LLSpellChecker>
+class LLSpellChecker final : public LLSingleton<LLSpellChecker>
 {
 	LLSINGLETON(LLSpellChecker);
 	~LLSpellChecker();
diff --git a/indra/llui/lltextparser.h b/indra/llui/lltextparser.h
index 3d71e40452d..e76b21cfac9 100644
--- a/indra/llui/lltextparser.h
+++ b/indra/llui/lltextparser.h
@@ -35,7 +35,7 @@ class LLUUID;
 class LLVector3d;
 class LLColor4;
 
-class LLTextParser : public LLSingleton<LLTextParser>
+class LLTextParser final : public LLSingleton<LLTextParser>
 {
 	LLSINGLETON(LLTextParser);
 
diff --git a/indra/llui/lltooltip.h b/indra/llui/lltooltip.h
index 0b1fbe53674..cff582fcfb9 100644
--- a/indra/llui/lltooltip.h
+++ b/indra/llui/lltooltip.h
@@ -127,7 +127,7 @@ class LLInspector : public LLToolTip
 	{};
 };
 
-class LLToolTipMgr : public LLSingleton<LLToolTipMgr>
+class LLToolTipMgr final : public LLSingleton<LLToolTipMgr>
 {
 	LLSINGLETON(LLToolTipMgr);
 	LOG_CLASS(LLToolTipMgr);
diff --git a/indra/llui/llui.h b/indra/llui/llui.h
index 9856e551cc7..1ce436cad14 100644
--- a/indra/llui/llui.h
+++ b/indra/llui/llui.h
@@ -108,7 +108,7 @@ class LLImageProviderInterface;
 
 typedef	void (*LLUIAudioCallback)(const LLUUID& uuid);
 
-class LLUI : public LLParamSingleton<LLUI>
+class LLUI final : public LLParamSingleton<LLUI>
 {
 public:
 	typedef std::map<std::string, LLControlGroup*> settings_map_t;
diff --git a/indra/llui/lluicolortable.h b/indra/llui/lluicolortable.h
index 44472070cc4..d6f9a93f832 100644
--- a/indra/llui/lluicolortable.h
+++ b/indra/llui/lluicolortable.h
@@ -36,7 +36,7 @@
 
 class LLUIColor;
 
-class LLUIColorTable : public LLSingleton<LLUIColorTable>
+class LLUIColorTable final : public LLSingleton<LLUIColorTable>
 {
 	LLSINGLETON_EMPTY_CTOR(LLUIColorTable);
 	LOG_CLASS(LLUIColorTable);
diff --git a/indra/llui/lluictrl.h b/indra/llui/lluictrl.h
index 7360bd76598..3cca281f1ca 100644
--- a/indra/llui/lluictrl.h
+++ b/indra/llui/lluictrl.h
@@ -258,7 +258,7 @@ class LLUICtrl
 
 	LLUICtrl* findRootMostFocusRoot();
 
-	class LLTextInputFilter : public LLQueryFilter, public LLSingleton<LLTextInputFilter>
+	class LLTextInputFilter final : public LLQueryFilter, public LLSingleton<LLTextInputFilter>
 	{
 		LLSINGLETON_EMPTY_CTOR(LLTextInputFilter);
 		/*virtual*/ filterResult_t operator() (const LLView* const view, const viewList_t & children) const 
@@ -270,12 +270,12 @@ class LLUICtrl
 	template <typename F, typename DERIVED> class CallbackRegistry : public LLRegistrySingleton<std::string, F, DERIVED >
 	{};	
 
-	class CommitCallbackRegistry : public CallbackRegistry<commit_callback_t, CommitCallbackRegistry>
+	class CommitCallbackRegistry final : public CallbackRegistry<commit_callback_t, CommitCallbackRegistry>
 	{
 		LLSINGLETON_EMPTY_CTOR(CommitCallbackRegistry);
 	};
 	// the enable callback registry is also used for visiblity callbacks
-	class EnableCallbackRegistry : public CallbackRegistry<enable_callback_t, EnableCallbackRegistry>
+	class EnableCallbackRegistry final : public CallbackRegistry<enable_callback_t, EnableCallbackRegistry>
 	{
 		LLSINGLETON_EMPTY_CTOR(EnableCallbackRegistry);
 	};
diff --git a/indra/llui/lluictrlfactory.h b/indra/llui/lluictrlfactory.h
index 03d946f1b77..800ac76e993 100644
--- a/indra/llui/lluictrlfactory.h
+++ b/indra/llui/lluictrlfactory.h
@@ -57,13 +57,13 @@ class LLChildRegistry : public LLRegistrySingleton<std::string, LLWidgetCreatorF
 	LLChildRegistry() {}
 };
 
-class LLDefaultChildRegistry : public LLChildRegistry<LLDefaultChildRegistry>
+class LLDefaultChildRegistry final : public LLChildRegistry<LLDefaultChildRegistry>
 {
 	LLSINGLETON_EMPTY_CTOR(LLDefaultChildRegistry);
 };
 
 // lookup widget name by type
-class LLWidgetNameRegistry 
+class LLWidgetNameRegistry final
 :	public LLRegistrySingleton<const std::type_info*, std::string, LLWidgetNameRegistry>
 {
 	LLSINGLETON_EMPTY_CTOR(LLWidgetNameRegistry);
@@ -87,7 +87,7 @@ extern LLTrace::BlockTimerStatHandle FTM_INIT_FROM_PARAMS;
 extern template class LLUICtrlFactory* LLSingleton<class LLUICtrlFactory>::getInstance();
 #endif
 
-class LLUICtrlFactory : public LLSingleton<LLUICtrlFactory>
+class LLUICtrlFactory final : public LLSingleton<LLUICtrlFactory>
 {
 	LLSINGLETON(LLUICtrlFactory);
 	~LLUICtrlFactory();
diff --git a/indra/llui/llurlregistry.h b/indra/llui/llurlregistry.h
index efafe543abc..d52f44bec04 100644
--- a/indra/llui/llurlregistry.h
+++ b/indra/llui/llurlregistry.h
@@ -60,7 +60,7 @@ void LLUrlRegistryNullCallback(const std::string &url,
 /// As such, you can provide a callback method that will get invoked
 /// when a new label is available for one of your matched Urls.
 ///
-class LLUrlRegistry : public LLSingleton<LLUrlRegistry>
+class LLUrlRegistry final : public LLSingleton<LLUrlRegistry>
 {
 	LLSINGLETON(LLUrlRegistry);
 	~LLUrlRegistry();
diff --git a/indra/llui/llview.cpp b/indra/llui/llview.cpp
index 61db2f2d948..c914c390013 100644
--- a/indra/llui/llview.cpp
+++ b/indra/llui/llview.cpp
@@ -1940,7 +1940,7 @@ class CompareByTabOrder
 	const S32 mDefaultTabGroup;
 };
 
-class SortByTabOrder : public LLQuerySorter, public LLSingleton<SortByTabOrder>
+class SortByTabOrder final : public LLQuerySorter, public LLSingleton<SortByTabOrder>
 {
 	LLSINGLETON_EMPTY_CTOR(SortByTabOrder);
 	/*virtual*/ void sort(LLView * parent, LLView::child_list_t &children) const 
@@ -1964,7 +1964,7 @@ const LLViewQuery & LLView::getTabOrderQuery()
 }
 
 // This class is only used internally by getFocusRootsQuery below. 
-class LLFocusRootsFilter : public LLQueryFilter, public LLSingleton<LLFocusRootsFilter>
+class LLFocusRootsFilter final : public LLQueryFilter, public LLSingleton<LLFocusRootsFilter>
 {
 	LLSINGLETON_EMPTY_CTOR(LLFocusRootsFilter);
 	/*virtual*/ filterResult_t operator() (const LLView* const view, const viewList_t & children) const 
diff --git a/indra/llui/llviewereventrecorder.h b/indra/llui/llviewereventrecorder.h
index 8712b041d26..a25e656280f 100644
--- a/indra/llui/llviewereventrecorder.h
+++ b/indra/llui/llviewereventrecorder.h
@@ -44,7 +44,7 @@
 
 #include "llsingleton.h" // includes llerror which we need here so we can skip the include here
 
-class LLViewerEventRecorder : public LLSingleton<LLViewerEventRecorder>
+class LLViewerEventRecorder final : public LLSingleton<LLViewerEventRecorder>
 {
   LLSINGLETON(LLViewerEventRecorder);
   ~LLViewerEventRecorder();
diff --git a/indra/llui/llviewquery.h b/indra/llui/llviewquery.h
index 21bb1be26f8..bbd7ba30d4b 100644
--- a/indra/llui/llviewquery.h
+++ b/indra/llui/llviewquery.h
@@ -52,37 +52,37 @@ class LLQuerySorter
 	virtual void sort(LLView * parent, viewList_t &children) const;
 };
 
-class LLLeavesFilter : public LLQueryFilter, public LLSingleton<LLLeavesFilter>
+class LLLeavesFilter final : public LLQueryFilter, public LLSingleton<LLLeavesFilter>
 {
 	LLSINGLETON_EMPTY_CTOR(LLLeavesFilter);
 	/*virtual*/ filterResult_t operator() (const LLView* const view, const viewList_t & children) const;
 };
 
-class LLRootsFilter : public LLQueryFilter, public LLSingleton<LLRootsFilter>
+class LLRootsFilter final : public LLQueryFilter, public LLSingleton<LLRootsFilter>
 {
 	LLSINGLETON_EMPTY_CTOR(LLRootsFilter);
 	/*virtual*/ filterResult_t operator() (const LLView* const view, const viewList_t & children) const;
 };
 
-class LLVisibleFilter : public LLQueryFilter, public LLSingleton<LLVisibleFilter>
+class LLVisibleFilter final : public LLQueryFilter, public LLSingleton<LLVisibleFilter>
 {
 	LLSINGLETON_EMPTY_CTOR(LLVisibleFilter);
 	/*virtual*/ filterResult_t operator() (const LLView* const view, const viewList_t & children) const;
 };
 
-class LLEnabledFilter : public LLQueryFilter, public LLSingleton<LLEnabledFilter>
+class LLEnabledFilter final : public LLQueryFilter, public LLSingleton<LLEnabledFilter>
 {
 	LLSINGLETON_EMPTY_CTOR(LLEnabledFilter);
 	/*virtual*/ filterResult_t operator() (const LLView* const view, const viewList_t & children) const;
 };
 
-class LLTabStopFilter : public LLQueryFilter, public LLSingleton<LLTabStopFilter>
+class LLTabStopFilter final : public LLQueryFilter, public LLSingleton<LLTabStopFilter>
 {
 	LLSINGLETON_EMPTY_CTOR(LLTabStopFilter);
 	/*virtual*/ filterResult_t operator() (const LLView* const view, const viewList_t & children) const;
 };
 
-class LLCtrlFilter : public LLQueryFilter, public LLSingleton<LLCtrlFilter>
+class LLCtrlFilter final : public LLQueryFilter, public LLSingleton<LLCtrlFilter>
 {
 	LLSINGLETON_EMPTY_CTOR(LLCtrlFilter);
 	/*virtual*/ filterResult_t operator() (const LLView* const view, const viewList_t & children) const;
diff --git a/indra/llui/llxuiparser.h b/indra/llui/llxuiparser.h
index eb0eac8194d..16db98cd1c8 100644
--- a/indra/llui/llxuiparser.h
+++ b/indra/llui/llxuiparser.h
@@ -39,7 +39,7 @@
 class LLView;
 
 // lookup widget type by name
-class LLWidgetTypeRegistry
+class LLWidgetTypeRegistry final
 :	public LLRegistrySingleton<std::string, const std::type_info*, LLWidgetTypeRegistry>
 {
 	LLSINGLETON_EMPTY_CTOR(LLWidgetTypeRegistry);
diff --git a/indra/media_plugins/cef/windows_volume_catcher.cpp b/indra/media_plugins/cef/windows_volume_catcher.cpp
index 7a36123a116..fdb4aacb1bf 100644
--- a/indra/media_plugins/cef/windows_volume_catcher.cpp
+++ b/indra/media_plugins/cef/windows_volume_catcher.cpp
@@ -30,7 +30,7 @@
 #include "llsingleton.h"
 #include <windows.h>
 #include <mmeapi.h>
-class VolumeCatcherImpl : public LLSingleton<VolumeCatcherImpl>
+class VolumeCatcherImpl final : public LLSingleton<VolumeCatcherImpl>
 {
 	LLSINGLETON(VolumeCatcherImpl);
 	// This is a singleton class -- both callers and the component implementation should use getInstance() to find the instance.
diff --git a/indra/newview/llaccountingcostmanager.h b/indra/newview/llaccountingcostmanager.h
index 55e1d19f05f..e2c08faf620 100644
--- a/indra/newview/llaccountingcostmanager.h
+++ b/indra/newview/llaccountingcostmanager.h
@@ -56,7 +56,7 @@ class LLAccountingCostObserver
 	LLUUID		mTransactionID;
 };
 //===============================================================================
-class LLAccountingCostManager : public LLSingleton<LLAccountingCostManager>
+class LLAccountingCostManager final : public LLSingleton<LLAccountingCostManager>
 {
 	LLSINGLETON(LLAccountingCostManager);
 
diff --git a/indra/newview/llagentbenefits.h b/indra/newview/llagentbenefits.h
index 48aa6bd8698..ba6f4a91982 100644
--- a/indra/newview/llagentbenefits.h
+++ b/indra/newview/llagentbenefits.h
@@ -63,7 +63,7 @@ class LLAgentBenefits
 	bool m_initalized;
 };
 
-class LLAgentBenefitsMgr: public LLSingleton<LLAgentBenefitsMgr> 
+class LLAgentBenefitsMgr final : public LLSingleton<LLAgentBenefitsMgr>
 {
 	LLSINGLETON(LLAgentBenefitsMgr);
 	~LLAgentBenefitsMgr();
diff --git a/indra/newview/llagentpicksinfo.h b/indra/newview/llagentpicksinfo.h
index f981e08ff77..7b327e5c21f 100644
--- a/indra/newview/llagentpicksinfo.h
+++ b/indra/newview/llagentpicksinfo.h
@@ -34,7 +34,7 @@ struct LLAvatarPicks;
 /**
  * Class that provides information about Agent Picks
  */
-class LLAgentPicksInfo : public LLSingleton<LLAgentPicksInfo>
+class LLAgentPicksInfo final : public LLSingleton<LLAgentPicksInfo>
 {
 	LLSINGLETON(LLAgentPicksInfo);
 	virtual ~LLAgentPicksInfo();
diff --git a/indra/newview/llappearancemgr.h b/indra/newview/llappearancemgr.h
index b8b75538a38..c68887ba562 100644
--- a/indra/newview/llappearancemgr.h
+++ b/indra/newview/llappearancemgr.h
@@ -40,7 +40,7 @@ class LLWearableHoldingPattern;
 class LLInventoryCallback;
 class LLOutfitUnLockTimer;
 
-class LLAppearanceMgr: public LLSingleton<LLAppearanceMgr>
+class LLAppearanceMgr final : public LLSingleton<LLAppearanceMgr>
 {
 	LLSINGLETON(LLAppearanceMgr);
 	~LLAppearanceMgr();
diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp
index c4b1c9d1060..41e4dcfbe70 100644
--- a/indra/newview/llappviewer.cpp
+++ b/indra/newview/llappviewer.cpp
@@ -396,7 +396,7 @@ const char* const VIEWER_WINDOW_CLASSNAME = "Alchemy";
  * Tasks added to this list will be executed in the next LLAppViewer::idle() iteration.
  * All tasks are executed only once.
  */
-class LLDeferredTaskList: public LLSingleton<LLDeferredTaskList>
+class LLDeferredTaskList final : public LLSingleton<LLDeferredTaskList>
 {
 	LLSINGLETON_EMPTY_CTOR(LLDeferredTaskList);
 	LOG_CLASS(LLDeferredTaskList);
diff --git a/indra/newview/llattachmentsmgr.h b/indra/newview/llattachmentsmgr.h
index d9ffdca7ba6..5b4919b216a 100644
--- a/indra/newview/llattachmentsmgr.h
+++ b/indra/newview/llattachmentsmgr.h
@@ -60,7 +60,7 @@ class LLViewerInventoryItem;
 // To handle attachments that never arrive, we forget about requests
 // that exceed a timeout value.
 //--------------------------------------------------------------------------------
-class LLAttachmentsMgr: public LLSingleton<LLAttachmentsMgr>
+class LLAttachmentsMgr final : public LLSingleton<LLAttachmentsMgr>
 {
     LLSINGLETON(LLAttachmentsMgr);
 	virtual ~LLAttachmentsMgr();
diff --git a/indra/newview/llautoreplace.h b/indra/newview/llautoreplace.h
index 23cc3136468..395039f02b2 100644
--- a/indra/newview/llautoreplace.h
+++ b/indra/newview/llautoreplace.h
@@ -189,7 +189,7 @@ class LLAutoReplaceSettings
  * See the autoreplaceCallback method for how to add autoreplace functionality
  * to a text entry tool.
  */
-class LLAutoReplace : public LLSingleton<LLAutoReplace>
+class LLAutoReplace final : public LLSingleton<LLAutoReplace>
 {
     LLSINGLETON(LLAutoReplace);
 public:
diff --git a/indra/newview/llavataractions.cpp b/indra/newview/llavataractions.cpp
index 5c2c39a0e59..e8ed61cbfbd 100644
--- a/indra/newview/llavataractions.cpp
+++ b/indra/newview/llavataractions.cpp
@@ -814,7 +814,7 @@ namespace action_give_inventory
 		}
 	}
 
-	struct LLShareInfo : public LLSingleton<LLShareInfo>
+	struct LLShareInfo final : public LLSingleton<LLShareInfo>
 	{
 		LLSINGLETON_EMPTY_CTOR(LLShareInfo);
 	public:
diff --git a/indra/newview/llavatariconctrl.h b/indra/newview/llavatariconctrl.h
index 7c0e570d899..32716753088 100644
--- a/indra/newview/llavatariconctrl.h
+++ b/indra/newview/llavatariconctrl.h
@@ -35,7 +35,7 @@
 
 class LLAvatarName;
 
-class LLAvatarIconIDCache: public LLSingleton<LLAvatarIconIDCache>
+class LLAvatarIconIDCache final : public LLSingleton<LLAvatarIconIDCache>
 {
 	LLSINGLETON(LLAvatarIconIDCache);
 
diff --git a/indra/newview/llavatarpropertiesprocessor.h b/indra/newview/llavatarpropertiesprocessor.h
index 1c981d5b2e8..d72aa4a959b 100644
--- a/indra/newview/llavatarpropertiesprocessor.h
+++ b/indra/newview/llavatarpropertiesprocessor.h
@@ -196,7 +196,7 @@ class LLAvatarPropertiesObserver
 	virtual void processProperties(void* data, EAvatarProcessorType type) = 0;
 };
 
-class LLAvatarPropertiesProcessor
+class LLAvatarPropertiesProcessor final
 	: public LLSingleton<LLAvatarPropertiesProcessor>
 {
 	LLSINGLETON(LLAvatarPropertiesProcessor);
diff --git a/indra/newview/llavatarrenderinfoaccountant.h b/indra/newview/llavatarrenderinfoaccountant.h
index 6b5fa7bc35d..4bde92674f1 100644
--- a/indra/newview/llavatarrenderinfoaccountant.h
+++ b/indra/newview/llavatarrenderinfoaccountant.h
@@ -36,7 +36,7 @@ class LLViewerRegion;
 
 // Class to gather avatar rendering information 
 // that is sent to or fetched from regions.
-class LLAvatarRenderInfoAccountant : public LLSingleton<LLAvatarRenderInfoAccountant>
+class LLAvatarRenderInfoAccountant final : public LLSingleton<LLAvatarRenderInfoAccountant>
 {
 	LLSINGLETON(LLAvatarRenderInfoAccountant);
 	~LLAvatarRenderInfoAccountant();
diff --git a/indra/newview/llavatarrendernotifier.h b/indra/newview/llavatarrendernotifier.h
index ec17b3d9e62..af9a57ba20f 100644
--- a/indra/newview/llavatarrendernotifier.h
+++ b/indra/newview/llavatarrendernotifier.h
@@ -65,7 +65,7 @@ typedef std::list<LLHUDComplexity> hud_complexity_list_t;
 
 // Class to notify user about drastic changes in agent's render weights or if other agents
 // reported that user's agent is too 'heavy' for their settings
-class LLAvatarRenderNotifier : public LLSingleton<LLAvatarRenderNotifier>
+class LLAvatarRenderNotifier final : public LLSingleton<LLAvatarRenderNotifier>
 {
 	LLSINGLETON(LLAvatarRenderNotifier);
 
@@ -112,7 +112,7 @@ class LLAvatarRenderNotifier : public LLSingleton<LLAvatarRenderNotifier>
 };
 
 // Class to notify user about heavy set of HUD
-class LLHUDRenderNotifier : public LLSingleton<LLHUDRenderNotifier>
+class LLHUDRenderNotifier final : public LLSingleton<LLHUDRenderNotifier>
 {
     LLSINGLETON(LLHUDRenderNotifier);
     ~LLHUDRenderNotifier();
diff --git a/indra/newview/llchannelmanager.h b/indra/newview/llchannelmanager.h
index 8abe350196b..19dd4f34190 100644
--- a/indra/newview/llchannelmanager.h
+++ b/indra/newview/llchannelmanager.h
@@ -41,7 +41,7 @@ namespace LLNotificationsUI
  * Manager for screen channels.
  * Responsible for instantiating and retrieving screen channels.
  */
-class LLChannelManager : public LLSingleton<LLChannelManager>
+class LLChannelManager final : public LLSingleton<LLChannelManager>
 {
 	LLSINGLETON(LLChannelManager);
 	virtual ~LLChannelManager();
diff --git a/indra/newview/llchicletbar.h b/indra/newview/llchicletbar.h
index 6c521dc1d50..1f299f4e271 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/llcontrolavatar.h b/indra/newview/llcontrolavatar.h
index 18b9ba4794d..eac25600ab7 100644
--- a/indra/newview/llcontrolavatar.h
+++ b/indra/newview/llcontrolavatar.h
@@ -100,7 +100,7 @@ typedef std::map<LLUUID, S32> signaled_animation_map_t;
 typedef std::map<LLUUID, signaled_animation_map_t> object_signaled_animation_map_t;
 
 // Stores information about previously requested animations, by object id.
-class LLObjectSignaledAnimationMap: public LLSingleton<LLObjectSignaledAnimationMap>
+class LLObjectSignaledAnimationMap final : public LLSingleton<LLObjectSignaledAnimationMap>
 {
     LLSINGLETON_EMPTY_CTOR(LLObjectSignaledAnimationMap); 
 
diff --git a/indra/newview/llconversationlog.h b/indra/newview/llconversationlog.h
index 46e46a3278b..68b45de6ab0 100644
--- a/indra/newview/llconversationlog.h
+++ b/indra/newview/llconversationlog.h
@@ -107,7 +107,7 @@ class LLConversation
  * To distinguish two conversations with the same sessionID it's also needed to compare their creation date.
  */
 
-class LLConversationLog : public LLSingleton<LLConversationLog>, LLIMSessionObserver
+class LLConversationLog final : public LLSingleton<LLConversationLog>, LLIMSessionObserver
 {
 	LLSINGLETON(LLConversationLog);
 public:
diff --git a/indra/newview/lldebugmessagebox.h b/indra/newview/lldebugmessagebox.h
index 87a0910662a..2fbb78557ce 100644
--- a/indra/newview/lldebugmessagebox.h
+++ b/indra/newview/lldebugmessagebox.h
@@ -52,7 +52,7 @@ typedef enum e_debug_var_type
 	VAR_TYPE_COUNT
 } EDebugVarType;
 
-class LLDebugVarMessageBox : public LLFloater
+class LLDebugVarMessageBox final : public LLFloater
 {
 protected:
 	LLDebugVarMessageBox(const std::string& title, EDebugVarType var_type, void *var);
diff --git a/indra/newview/lldeferredsounds.h b/indra/newview/lldeferredsounds.h
index 33f02b35215..bc029848f9f 100644
--- a/indra/newview/lldeferredsounds.h
+++ b/indra/newview/lldeferredsounds.h
@@ -31,7 +31,7 @@
 
 struct SoundData;
 
-class LLDeferredSounds : public LLSingleton<LLDeferredSounds>
+class LLDeferredSounds final : public LLSingleton<LLDeferredSounds>
 {
 	LLSINGLETON_EMPTY_CTOR(LLDeferredSounds);
 	std::vector<SoundData> soundVector;
diff --git a/indra/newview/lldonotdisturbnotificationstorage.h b/indra/newview/lldonotdisturbnotificationstorage.h
index c6f0bf1ab58..42563181707 100644
--- a/indra/newview/lldonotdisturbnotificationstorage.h
+++ b/indra/newview/lldonotdisturbnotificationstorage.h
@@ -35,7 +35,7 @@
 
 class LLSD;
 
-class LLDoNotDisturbNotificationStorageTimer : public LLEventTimer
+class LLDoNotDisturbNotificationStorageTimer final : public LLEventTimer
 {
 public:
     LLDoNotDisturbNotificationStorageTimer();
@@ -45,7 +45,7 @@ class LLDoNotDisturbNotificationStorageTimer : public LLEventTimer
     BOOL tick();
 };
 
-class LLDoNotDisturbNotificationStorage : public LLParamSingleton<LLDoNotDisturbNotificationStorage>, public LLNotificationStorage
+class LLDoNotDisturbNotificationStorage final : public LLParamSingleton<LLDoNotDisturbNotificationStorage>, public LLNotificationStorage
 {
 	LLSINGLETON(LLDoNotDisturbNotificationStorage);
 	~LLDoNotDisturbNotificationStorage();
diff --git a/indra/newview/llestateinfomodel.h b/indra/newview/llestateinfomodel.h
index d6f00c573cf..8e644ea15d7 100644
--- a/indra/newview/llestateinfomodel.h
+++ b/indra/newview/llestateinfomodel.h
@@ -36,7 +36,7 @@ class LLMessageSystem;
 /**
  * Contains estate info, notifies interested parties of its changes.
  */
-class LLEstateInfoModel : public LLSingleton<LLEstateInfoModel>
+class LLEstateInfoModel final : public LLSingleton<LLEstateInfoModel>
 {
 	LLSINGLETON(LLEstateInfoModel);
 	LOG_CLASS(LLEstateInfoModel);
diff --git a/indra/newview/llexperiencelog.h b/indra/newview/llexperiencelog.h
index 5cc5bf685fd..e91bcfa5a2f 100644
--- a/indra/newview/llexperiencelog.h
+++ b/indra/newview/llexperiencelog.h
@@ -31,7 +31,7 @@
 
 #include "llsingleton.h"
 
-class LLExperienceLog : public LLSingleton<LLExperienceLog>
+class LLExperienceLog final : public LLSingleton<LLExperienceLog>
 {
 	LLSINGLETON(LLExperienceLog);
 public:
diff --git a/indra/newview/llfasttimerview.h b/indra/newview/llfasttimerview.h
index 6ce0ecea52d..bb151334e35 100644
--- a/indra/newview/llfasttimerview.h
+++ b/indra/newview/llfasttimerview.h
@@ -35,7 +35,7 @@
 
 class LLScrollbar;
 
-class LLFastTimerView : public LLFloater
+class LLFastTimerView final : public LLFloater
 {
 public:
 	LLFastTimerView(const LLSD&);
diff --git a/indra/newview/llfavoritesbar.h b/indra/newview/llfavoritesbar.h
index d93161fd7ac..02519537eea 100644
--- a/indra/newview/llfavoritesbar.h
+++ b/indra/newview/llfavoritesbar.h
@@ -171,7 +171,7 @@ class LLFavoritesBarCtrl : public LLUICtrl, public LLInventoryObserver
  * It replaced previously implemented solution to store sort index in landmark's name as a "<N>@" prefix.
  * Data are stored in user home directory.
  */
-class LLFavoritesOrderStorage : public LLSingleton<LLFavoritesOrderStorage>
+class LLFavoritesOrderStorage final : public LLSingleton<LLFavoritesOrderStorage>
 	, public LLDestroyClass<LLFavoritesOrderStorage>
 {
 	LLSINGLETON(LLFavoritesOrderStorage);
diff --git a/indra/newview/llfeaturemanager.h b/indra/newview/llfeaturemanager.h
index 42a226cd18f..e3742f16b47 100644
--- a/indra/newview/llfeaturemanager.h
+++ b/indra/newview/llfeaturemanager.h
@@ -95,7 +95,7 @@ class LLFeatureList
 };
 
 
-class LLFeatureManager : public LLFeatureList, public LLSingleton<LLFeatureManager>
+class LLFeatureManager final : public LLFeatureList, public LLSingleton<LLFeatureManager>
 {
 	LLSINGLETON(LLFeatureManager);
 	~LLFeatureManager() {cleanupFeatureTables();}
diff --git a/indra/newview/llfloaterabout.cpp b/indra/newview/llfloaterabout.cpp
index 0b2b4e1d376..e4b7bb55b28 100644
--- a/indra/newview/llfloaterabout.cpp
+++ b/indra/newview/llfloaterabout.cpp
@@ -74,7 +74,7 @@ extern U32 gPacketsIn;
 ///----------------------------------------------------------------------------
 /// Class LLFloaterAbout
 ///----------------------------------------------------------------------------
-class LLFloaterAbout 
+class LLFloaterAbout final
 	: public LLFloater
 {
 	friend class LLFloaterReg;
diff --git a/indra/newview/llfloaterauction.h b/indra/newview/llfloaterauction.h
index c83a11ba8b9..8a3edd90c64 100644
--- a/indra/newview/llfloaterauction.h
+++ b/indra/newview/llfloaterauction.h
@@ -42,7 +42,7 @@ class LLParcelSelection;
 class LLParcel;
 class LLViewerRegion;
 
-class LLFloaterAuction : public LLFloater
+class LLFloaterAuction final : public LLFloater
 {
 	friend class LLFloaterReg;
 public:
diff --git a/indra/newview/llfloaterautoreplacesettings.h b/indra/newview/llfloaterautoreplacesettings.h
index 2109aa70265..b54da0e2d76 100644
--- a/indra/newview/llfloaterautoreplacesettings.h
+++ b/indra/newview/llfloaterautoreplacesettings.h
@@ -35,7 +35,7 @@
 #include <boost/bind.hpp>
 #include "llautoreplace.h"
 
-class LLFloaterAutoReplaceSettings : public LLFloater
+class LLFloaterAutoReplaceSettings final : public LLFloater
 {
 public:
 	LLFloaterAutoReplaceSettings(const LLSD& key);
diff --git a/indra/newview/llfloateravatar.h b/indra/newview/llfloateravatar.h
index cadc5e4028b..a965ff54a94 100644
--- a/indra/newview/llfloateravatar.h
+++ b/indra/newview/llfloateravatar.h
@@ -30,7 +30,7 @@
 
 #include "llfloater.h"
 
-class LLFloaterAvatar:
+class LLFloaterAvatar final :
 	public LLFloater
 {
 	friend class LLFloaterReg;
diff --git a/indra/newview/llfloateravatarpicker.h b/indra/newview/llfloateravatarpicker.h
index fbee61b0549..4a538ce82d5 100644
--- a/indra/newview/llfloateravatarpicker.h
+++ b/indra/newview/llfloateravatarpicker.h
@@ -36,7 +36,7 @@
 class LLAvatarName;
 class LLScrollListCtrl;
 
-class LLFloaterAvatarPicker :public LLFloater
+class LLFloaterAvatarPicker final :public LLFloater
 {
 public:
 	typedef boost::signals2::signal<bool(const uuid_vec_t&), boost_boolean_combiner> validate_signal_t;
diff --git a/indra/newview/llfloateravatarrendersettings.h b/indra/newview/llfloateravatarrendersettings.h
index 00ee074f175..38c30fc6280 100644
--- a/indra/newview/llfloateravatarrendersettings.h
+++ b/indra/newview/llfloateravatarrendersettings.h
@@ -33,7 +33,7 @@
 
 class LLNameListCtrl;
 
-class LLFloaterAvatarRenderSettings : public LLFloater
+class LLFloaterAvatarRenderSettings final : public LLFloater
 {
 public:
 
diff --git a/indra/newview/llfloateravatartextures.h b/indra/newview/llfloateravatartextures.h
index 02474a10e15..9d7ac17368d 100644
--- a/indra/newview/llfloateravatartextures.h
+++ b/indra/newview/llfloateravatartextures.h
@@ -34,7 +34,7 @@
 
 class LLTextureCtrl;
 
-class LLFloaterAvatarTextures : public LLFloater
+class LLFloaterAvatarTextures final : public LLFloater
 {
 public:
 	LLFloaterAvatarTextures(const LLSD& id);
diff --git a/indra/newview/llfloaterbanduration.h b/indra/newview/llfloaterbanduration.h
index e8ec7cc669f..32c4ccec5dd 100644
--- a/indra/newview/llfloaterbanduration.h
+++ b/indra/newview/llfloaterbanduration.h
@@ -29,7 +29,7 @@
 
 #include "llfloater.h"
 
-class LLFloaterBanDuration : public LLFloater
+class LLFloaterBanDuration final : public LLFloater
 {
     typedef boost::function<void(const uuid_vec_t&, const S32 duration)> select_callback_t;
 
diff --git a/indra/newview/llfloaterbeacons.h b/indra/newview/llfloaterbeacons.h
index 47d06962962..1318d0d8156 100644
--- a/indra/newview/llfloaterbeacons.h
+++ b/indra/newview/llfloaterbeacons.h
@@ -30,7 +30,7 @@
 
 #include "llfloater.h"
 
-class LLFloaterBeacons : public LLFloater
+class LLFloaterBeacons final : public LLFloater
 {
 	friend class LLFloaterReg;
 	
diff --git a/indra/newview/llfloaterbigpreview.h b/indra/newview/llfloaterbigpreview.h
index 513ed8da6ef..9ff84937aa2 100644
--- a/indra/newview/llfloaterbigpreview.h
+++ b/indra/newview/llfloaterbigpreview.h
@@ -29,7 +29,7 @@
 
 #include "llfloater.h"
 
-class LLFloaterBigPreview : public LLFloater
+class LLFloaterBigPreview final : public LLFloater
 {
 public:
 	LLFloaterBigPreview(const LLSD& key);
diff --git a/indra/newview/llfloaterbuildoptions.h b/indra/newview/llfloaterbuildoptions.h
index 02c56cb6a92..8e25df900ac 100644
--- a/indra/newview/llfloaterbuildoptions.h
+++ b/indra/newview/llfloaterbuildoptions.h
@@ -39,7 +39,7 @@ class LLObjectSelection;
 
 typedef LLSafeHandle<LLObjectSelection> LLObjectSelectionHandle;
 
-class LLFloaterBuildOptions
+class LLFloaterBuildOptions final
 	:	public LLFloater
 {
 public:
diff --git a/indra/newview/llfloaterbulkpermission.h b/indra/newview/llfloaterbulkpermission.h
index 1afc876bba9..eeb58ddd821 100644
--- a/indra/newview/llfloaterbulkpermission.h
+++ b/indra/newview/llfloaterbulkpermission.h
@@ -36,7 +36,7 @@
 #include "llfloater.h"
 #include "llscrolllistctrl.h"
 
-class LLFloaterBulkPermission : public LLFloater, public LLVOInventoryListener
+class LLFloaterBulkPermission final : public LLFloater, public LLVOInventoryListener
 {
 	friend class LLFloaterReg;
 public:
diff --git a/indra/newview/llfloaterbump.h b/indra/newview/llfloaterbump.h
index d2f9fabdd33..5cec67b1953 100644
--- a/indra/newview/llfloaterbump.h
+++ b/indra/newview/llfloaterbump.h
@@ -34,7 +34,7 @@
 class LLMeanCollisionData;
 class LLScrollListCtrl;
 
-class LLFloaterBump 
+class LLFloaterBump final
 : public LLFloater
 {
 	friend class LLFloaterReg;
diff --git a/indra/newview/llfloaterbuy.h b/indra/newview/llfloaterbuy.h
index 3ec642dee16..5f0f9d1cff5 100644
--- a/indra/newview/llfloaterbuy.h
+++ b/indra/newview/llfloaterbuy.h
@@ -42,7 +42,7 @@ class LLViewerObject;
 class LLSaleInfo;
 class LLObjectSelection;
 
-class LLFloaterBuy
+class LLFloaterBuy final
 : public LLFloater, public LLVOInventoryListener
 {
 public:
diff --git a/indra/newview/llfloaterbuycontents.h b/indra/newview/llfloaterbuycontents.h
index 19393fb6af4..a4797c3d190 100644
--- a/indra/newview/llfloaterbuycontents.h
+++ b/indra/newview/llfloaterbuycontents.h
@@ -40,7 +40,7 @@
 class LLViewerObject;
 class LLObjectSelection;
 
-class LLFloaterBuyContents
+class LLFloaterBuyContents final
 : public LLFloater, public LLVOInventoryListener
 {
 public:
diff --git a/indra/newview/llfloaterbuycurrency.cpp b/indra/newview/llfloaterbuycurrency.cpp
index 91436e52fe6..f1cc6dfaff4 100644
--- a/indra/newview/llfloaterbuycurrency.cpp
+++ b/indra/newview/llfloaterbuycurrency.cpp
@@ -45,7 +45,7 @@
 static const S32 STANDARD_BUY_AMOUNT = 2000;
 static const S32 MINIMUM_BALANCE_AMOUNT = 0;
 
-class LLFloaterBuyCurrencyUI
+class LLFloaterBuyCurrencyUI final
 :	public LLFloater
 {
 public:
diff --git a/indra/newview/llfloaterbuycurrencyhtml.h b/indra/newview/llfloaterbuycurrencyhtml.h
index 6b1fc53f1fc..699e6debd8e 100644
--- a/indra/newview/llfloaterbuycurrencyhtml.h
+++ b/indra/newview/llfloaterbuycurrencyhtml.h
@@ -30,7 +30,7 @@
 #include "llfloater.h"
 #include "llmediactrl.h"
 
-class LLFloaterBuyCurrencyHTML : 
+class LLFloaterBuyCurrencyHTML final :
 	public LLFloater, 
 	public LLViewerMediaObserver
 {
diff --git a/indra/newview/llfloaterbuyland.cpp b/indra/newview/llfloaterbuyland.cpp
index 0a0e5ffc061..80d4ab01686 100644
--- a/indra/newview/llfloaterbuyland.cpp
+++ b/indra/newview/llfloaterbuyland.cpp
@@ -66,7 +66,7 @@
 // NOTE: This is duplicated in lldatamoney.cpp ...
 const F32 GROUP_LAND_BONUS_FACTOR = 1.1f;
 
-class LLFloaterBuyLandUI
+class LLFloaterBuyLandUI final
 :	public LLFloater
 {
 public:
diff --git a/indra/newview/llfloaterbvhpreview.h b/indra/newview/llfloaterbvhpreview.h
index 20d15d96033..3c6f442cf6c 100644
--- a/indra/newview/llfloaterbvhpreview.h
+++ b/indra/newview/llfloaterbvhpreview.h
@@ -68,7 +68,7 @@ class LLPreviewAnimation : public LLViewerDynamicTexture
 	LLPointer<LLVOAvatar>			mDummyAvatar;
 };
 
-class LLFloaterBvhPreview : public LLFloaterNameDesc
+class LLFloaterBvhPreview final : public LLFloaterNameDesc
 {
 public:
 	LLFloaterBvhPreview(const std::string& filename);
diff --git a/indra/newview/llfloatercamera.h b/indra/newview/llfloatercamera.h
index 9440f50c3fd..4fcbe63736b 100644
--- a/indra/newview/llfloatercamera.h
+++ b/indra/newview/llfloatercamera.h
@@ -45,7 +45,7 @@ enum ECameraControlMode
 	CAMERA_CTRL_MODE_PRESETS
 };
 
-class LLFloaterCamera : public LLFloater
+class LLFloaterCamera final : public LLFloater
 {
 	friend class LLFloaterReg;
 	
diff --git a/indra/newview/llfloatercamerapresets.h b/indra/newview/llfloatercamerapresets.h
index 66430fa3994..86a957596b8 100644
--- a/indra/newview/llfloatercamerapresets.h
+++ b/indra/newview/llfloatercamerapresets.h
@@ -30,7 +30,7 @@
 
 class LLFloaterReg;
 
-class LLFloaterCameraPresets : public LLFloater
+class LLFloaterCameraPresets final : public LLFloater
 {
     friend class LLFloaterReg;
 
diff --git a/indra/newview/llfloatercolorpicker.h b/indra/newview/llfloatercolorpicker.h
index 16974a872ef..816d501f900 100644
--- a/indra/newview/llfloatercolorpicker.h
+++ b/indra/newview/llfloatercolorpicker.h
@@ -40,7 +40,7 @@ class LLCheckBoxCtrl;
 
 //////////////////////////////////////////////////////////////////////////////
 // floater class
-class LLFloaterColorPicker 
+class LLFloaterColorPicker final
 	: public LLFloater
 {
 	public:
diff --git a/indra/newview/llfloaterconversationlog.h b/indra/newview/llfloaterconversationlog.h
index e971330f3d0..7a0ff93060e 100644
--- a/indra/newview/llfloaterconversationlog.h
+++ b/indra/newview/llfloaterconversationlog.h
@@ -30,7 +30,7 @@
 
 class LLConversationLogList;
 
-class LLFloaterConversationLog : public LLFloater
+class LLFloaterConversationLog final : public LLFloater
 {
 public:
 
diff --git a/indra/newview/llfloaterconversationpreview.h b/indra/newview/llfloaterconversationpreview.h
index 7ca4ee6945c..2e20bf351ed 100644
--- a/indra/newview/llfloaterconversationpreview.h
+++ b/indra/newview/llfloaterconversationpreview.h
@@ -34,7 +34,7 @@ extern const std::string LL_FCP_ACCOUNT_NAME;		//"user_name"
 
 class LLSpinCtrl;
 
-class LLFloaterConversationPreview : public LLFloater
+class LLFloaterConversationPreview final : public LLFloater
 {
 public:
 
diff --git a/indra/newview/llfloaterdeleteprefpreset.h b/indra/newview/llfloaterdeleteprefpreset.h
index 0ab3da71392..a1e7667773d 100644
--- a/indra/newview/llfloaterdeleteprefpreset.h
+++ b/indra/newview/llfloaterdeleteprefpreset.h
@@ -32,7 +32,7 @@
 
 class LLComboBox;
 
-class LLFloaterDeletePrefPreset : public LLFloater
+class LLFloaterDeletePrefPreset final : public LLFloater
 {
 
 public:
diff --git a/indra/newview/llfloaterdestinations.h b/indra/newview/llfloaterdestinations.h
index 85d9b3391e5..030464002a3 100644
--- a/indra/newview/llfloaterdestinations.h
+++ b/indra/newview/llfloaterdestinations.h
@@ -30,7 +30,7 @@
 
 #include "llfloater.h"
 
-class LLFloaterDestinations:
+class LLFloaterDestinations final :
 	public LLFloater
 {
 	friend class LLFloaterReg;
diff --git a/indra/newview/llfloaterdisplayname.cpp b/indra/newview/llfloaterdisplayname.cpp
index e6742727d6d..9bbb4a8a205 100644
--- a/indra/newview/llfloaterdisplayname.cpp
+++ b/indra/newview/llfloaterdisplayname.cpp
@@ -40,7 +40,7 @@
 #include "llagent.h"
 
 
-class LLFloaterDisplayName : public LLFloater
+class LLFloaterDisplayName final : public LLFloater
 {
 public:
 	LLFloaterDisplayName(const LLSD& key);
diff --git a/indra/newview/llfloatereditextdaycycle.h b/indra/newview/llfloatereditextdaycycle.h
index b6e9fdb14f8..a0eb9d69774 100644
--- a/indra/newview/llfloatereditextdaycycle.h
+++ b/indra/newview/llfloatereditextdaycycle.h
@@ -50,7 +50,7 @@ typedef std::shared_ptr<LLSettingsBase> LLSettingsBasePtr_t;
 /**
  * Floater for creating or editing a day cycle.
  */
-class LLFloaterEditExtDayCycle : public LLFloater
+class LLFloaterEditExtDayCycle final : public LLFloater
 {
 	LOG_CLASS(LLFloaterEditExtDayCycle);
 
diff --git a/indra/newview/llfloaterenvironmentadjust.h b/indra/newview/llfloaterenvironmentadjust.h
index cb38dbcfa80..fc36ceaebd7 100644
--- a/indra/newview/llfloaterenvironmentadjust.h
+++ b/indra/newview/llfloaterenvironmentadjust.h
@@ -40,7 +40,7 @@ class LLLineEditor;
 /**
  * Floater container for taking a snapshot of the current environment and making minor adjustments.
  */
-class LLFloaterEnvironmentAdjust : public LLFloater
+class LLFloaterEnvironmentAdjust final : public LLFloater
 {
     LOG_CLASS(LLFloaterEnvironmentAdjust);
 
diff --git a/indra/newview/llfloaterevent.h b/indra/newview/llfloaterevent.h
index ed90055d955..1698e62a912 100644
--- a/indra/newview/llfloaterevent.h
+++ b/indra/newview/llfloaterevent.h
@@ -34,7 +34,7 @@
 class LLMediaCtrl;
 class LLButton;
 
-class LLFloaterEvent : public LLFloater,
+class LLFloaterEvent final : public LLFloater,
                        public LLViewerMediaObserver
 
 {
diff --git a/indra/newview/llfloaterexperiencepicker.h b/indra/newview/llfloaterexperiencepicker.h
index 29054a57db2..4c7e5655c3a 100644
--- a/indra/newview/llfloaterexperiencepicker.h
+++ b/indra/newview/llfloaterexperiencepicker.h
@@ -34,7 +34,7 @@ class LLLineEditor;
 class LLPanelExperiencePicker;
 
 
-class LLFloaterExperiencePicker : public LLFloater
+class LLFloaterExperiencePicker final : public LLFloater
 {
 public:
 
diff --git a/indra/newview/llfloaterexperienceprofile.h b/indra/newview/llfloaterexperienceprofile.h
index 1394418d911..a9857ec3875 100644
--- a/indra/newview/llfloaterexperienceprofile.h
+++ b/indra/newview/llfloaterexperienceprofile.h
@@ -37,7 +37,7 @@ class LLLayoutPanel;
 class LLTextBox;
 class LLComboBox;
 
-class LLFloaterExperienceProfile : public LLFloater
+class LLFloaterExperienceProfile final : public LLFloater
 {
     LOG_CLASS(LLFloaterExperienceProfile);
 public:
diff --git a/indra/newview/llfloaterexperiences.h b/indra/newview/llfloaterexperiences.h
index 6d0559af7cf..53637d46fcb 100644
--- a/indra/newview/llfloaterexperiences.h
+++ b/indra/newview/llfloaterexperiences.h
@@ -32,7 +32,7 @@
 
 class LLPanelExperiences;
 
-class LLFloaterExperiences :
+class LLFloaterExperiences final :
 	public LLFloater
 {
 public:
diff --git a/indra/newview/llfloaterfixedenvironment.h b/indra/newview/llfloaterfixedenvironment.h
index 513996c4a39..08583dc6c5e 100644
--- a/indra/newview/llfloaterfixedenvironment.h
+++ b/indra/newview/llfloaterfixedenvironment.h
@@ -131,7 +131,7 @@ class LLFloaterFixedEnvironment : public LLFloater
     bool                    mIsDirty;
 };
 
-class LLFloaterFixedEnvironmentWater : public LLFloaterFixedEnvironment
+class LLFloaterFixedEnvironmentWater final : public LLFloaterFixedEnvironment
 {
     LOG_CLASS(LLFloaterFixedEnvironmentWater);
 
@@ -151,7 +151,7 @@ class LLFloaterFixedEnvironmentWater : public LLFloaterFixedEnvironment
 private:
 };
 
-class LLFloaterFixedEnvironmentSky : public LLFloaterFixedEnvironment
+class LLFloaterFixedEnvironmentSky final : public LLFloaterFixedEnvironment
 {
     LOG_CLASS(LLFloaterFixedEnvironmentSky);
 
diff --git a/indra/newview/llfloaterfonttest.h b/indra/newview/llfloaterfonttest.h
index fc82d7ef514..b5e896c63a1 100644
--- a/indra/newview/llfloaterfonttest.h
+++ b/indra/newview/llfloaterfonttest.h
@@ -30,7 +30,7 @@
 
 #include "llfloater.h"
 
-class LLFloaterFontTest:
+class LLFloaterFontTest final :
 	public LLFloater
 {
 	friend class LLFloaterReg;
diff --git a/indra/newview/llfloaterforgetuser.h b/indra/newview/llfloaterforgetuser.h
index 801fcbb4127..ab683abfe4d 100644
--- a/indra/newview/llfloaterforgetuser.h
+++ b/indra/newview/llfloaterforgetuser.h
@@ -31,7 +31,7 @@
 
 class LLScrollListCtrl;
 
-class LLFloaterForgetUser : public LLFloater
+class LLFloaterForgetUser final : public LLFloater
 {
 public:
     LLFloaterForgetUser(const LLSD &key);
diff --git a/indra/newview/llfloatergesture.h b/indra/newview/llfloatergesture.h
index 1d702c6704e..89af2c82f5a 100644
--- a/indra/newview/llfloatergesture.h
+++ b/indra/newview/llfloatergesture.h
@@ -48,7 +48,7 @@ class LLFloaterGestureInventoryObserver;
 class LLMultiGesture;
 class LLMenuGL;
 
-class LLFloaterGesture
+class LLFloaterGesture final
 :	public LLFloater, LLInventoryFetchDescendentsObserver
 {
 	LOG_CLASS(LLFloaterGesture);
diff --git a/indra/newview/llfloatergodtools.h b/indra/newview/llfloatergodtools.h
index cbaeee70518..1f8b5ff7334 100644
--- a/indra/newview/llfloatergodtools.h
+++ b/indra/newview/llfloatergodtools.h
@@ -51,7 +51,7 @@ class LLTabContainer;
 class LLTextBox;
 class LLMessageSystem;
 
-class LLFloaterGodTools
+class LLFloaterGodTools final
 	: public LLFloater
 {
 	friend class LLFloaterReg;
diff --git a/indra/newview/llfloatergotoline.h b/indra/newview/llfloatergotoline.h
index 058d6017522..62606a494ff 100644
--- a/indra/newview/llfloatergotoline.h
+++ b/indra/newview/llfloatergotoline.h
@@ -34,7 +34,7 @@
 
 class LLScriptEdCore;
 
-class LLFloaterGotoLine : public LLFloater
+class LLFloaterGotoLine final : public LLFloater
 {
 public:
         LLFloaterGotoLine(LLScriptEdCore* editor_core);
diff --git a/indra/newview/llfloatergridstatus.h b/indra/newview/llfloatergridstatus.h
index 0c3deb7d4c8..8ea3f8e3581 100644
--- a/indra/newview/llfloatergridstatus.h
+++ b/indra/newview/llfloatergridstatus.h
@@ -35,7 +35,7 @@
 class LLMediaCtrl;
 
 
-class LLFloaterGridStatus :
+class LLFloaterGridStatus final :
     public LLFloaterWebContent
 {
 public:
diff --git a/indra/newview/llfloatergroupbulkban.h b/indra/newview/llfloatergroupbulkban.h
index 5b680a1ba49..42317ffbed8 100644
--- a/indra/newview/llfloatergroupbulkban.h
+++ b/indra/newview/llfloatergroupbulkban.h
@@ -31,7 +31,7 @@
 #include "llfloater.h"
 #include "lluuid.h"
 
-class LLFloaterGroupBulkBan : public LLFloater
+class LLFloaterGroupBulkBan final : public LLFloater
 {
 public:
 	virtual ~LLFloaterGroupBulkBan();
diff --git a/indra/newview/llfloatergroupinvite.h b/indra/newview/llfloatergroupinvite.h
index 657e5711f0f..aa1d0997bfe 100644
--- a/indra/newview/llfloatergroupinvite.h
+++ b/indra/newview/llfloatergroupinvite.h
@@ -31,7 +31,7 @@
 #include "llfloater.h"
 #include "lluuid.h"
 
-class LLFloaterGroupInvite
+class LLFloaterGroupInvite final
 : public LLFloater
 {
 public:
diff --git a/indra/newview/llfloatergroups.h b/indra/newview/llfloatergroups.h
index 1ad27cea19f..90417e2acd4 100644
--- a/indra/newview/llfloatergroups.h
+++ b/indra/newview/llfloatergroups.h
@@ -50,7 +50,7 @@ class LLScrollListCtrl;
 class LLButton;
 class LLFloaterGroupPicker;
 
-class LLFloaterGroupPicker : public LLFloater
+class LLFloaterGroupPicker final : public LLFloater
 {
 public:
 	LLFloaterGroupPicker(const LLSD& seed);
diff --git a/indra/newview/llfloaterhelpbrowser.h b/indra/newview/llfloaterhelpbrowser.h
index bf4f544a14b..cd0f3bb824a 100644
--- a/indra/newview/llfloaterhelpbrowser.h
+++ b/indra/newview/llfloaterhelpbrowser.h
@@ -33,7 +33,7 @@
 
 class LLMediaCtrl;
 
-class LLFloaterHelpBrowser : 
+class LLFloaterHelpBrowser final :
 	public LLFloater, 
 	public LLViewerMediaObserver
 {
diff --git a/indra/newview/llfloaterhoverheight.h b/indra/newview/llfloaterhoverheight.h
index a643fa2516e..a570ddc9468 100644
--- a/indra/newview/llfloaterhoverheight.h
+++ b/indra/newview/llfloaterhoverheight.h
@@ -29,7 +29,7 @@
 
 #include "llfloater.h"
 
-class LLFloaterHoverHeight: public LLFloater
+class LLFloaterHoverHeight final : public LLFloater
 {
 public:
 	LLFloaterHoverHeight(const LLSD& key);
diff --git a/indra/newview/llfloaterhud.h b/indra/newview/llfloaterhud.h
index e560d6320b1..b945736298c 100644
--- a/indra/newview/llfloaterhud.h
+++ b/indra/newview/llfloaterhud.h
@@ -31,7 +31,7 @@
 
 class LLMediaCtrl;
 
-class LLFloaterHUD : public LLFloater
+class LLFloaterHUD final : public LLFloater
 {
 	friend class LLFloaterReg;
 public:
diff --git a/indra/newview/llfloaterimagepreview.h b/indra/newview/llfloaterimagepreview.h
index d034622c35f..4b139f076c8 100644
--- a/indra/newview/llfloaterimagepreview.h
+++ b/indra/newview/llfloaterimagepreview.h
@@ -107,7 +107,7 @@ class LLImagePreviewAvatar : public LLViewerDynamicTexture
 	U32			mTextureName;
 };
 
-class LLFloaterImagePreview : public LLFloaterNameDesc
+class LLFloaterImagePreview final : public LLFloaterNameDesc
 {
 public:
 	LLFloaterImagePreview(const std::string& filename);
diff --git a/indra/newview/llfloaterimcontainer.h b/indra/newview/llfloaterimcontainer.h
index 78b35721112..e4690fd5962 100644
--- a/indra/newview/llfloaterimcontainer.h
+++ b/indra/newview/llfloaterimcontainer.h
@@ -48,7 +48,7 @@ class LLFloaterIMContainer;
 class LLSpeaker;
 class LLSpeakerMgr;
 
-class LLFloaterIMContainer
+class LLFloaterIMContainer final
 	: public LLMultiFloater
 	, public LLIMSessionObserver
 {
diff --git a/indra/newview/llfloaterimnearbychat.h b/indra/newview/llfloaterimnearbychat.h
index f0daacd6a9e..42eb074224e 100644
--- a/indra/newview/llfloaterimnearbychat.h
+++ b/indra/newview/llfloaterimnearbychat.h
@@ -40,7 +40,7 @@
 
 class LLResizeBar;
 
-class LLFloaterIMNearbyChat
+class LLFloaterIMNearbyChat final
 	:	public LLFloaterIMSessionTab
 {
 public:
diff --git a/indra/newview/llfloaterimnearbychathandler.cpp b/indra/newview/llfloaterimnearbychathandler.cpp
index 53e3bf27151..90331dc006f 100644
--- a/indra/newview/llfloaterimnearbychathandler.cpp
+++ b/indra/newview/llfloaterimnearbychathandler.cpp
@@ -169,7 +169,7 @@ class LLFloaterIMNearbyChatScreenChannel: public LLScreenChannelBase
 
 // We're deriving from LLToast to be able to override onClose()
 // in order to handle closing nearby chat toasts properly.
-class LLFloaterIMNearbyChatToast : public LLToast
+class LLFloaterIMNearbyChatToast final : public LLToast
 {
 	LOG_CLASS(LLFloaterIMNearbyChatToast);
 public:
diff --git a/indra/newview/llfloaterimsession.h b/indra/newview/llfloaterimsession.h
index 28464fc14bd..a8bf9958625 100644
--- a/indra/newview/llfloaterimsession.h
+++ b/indra/newview/llfloaterimsession.h
@@ -50,7 +50,7 @@ typedef boost::signals2::signal<void(const LLUUID& session_id)> floater_showed_s
  * Individual IM window that appears at the bottom of the screen,
  * optionally "docked" to the bottom tray.
  */
-class LLFloaterIMSession
+class LLFloaterIMSession final
     : public LLVoiceClientStatusObserver
     , public LLFloaterIMSessionTab
 {
diff --git a/indra/newview/llfloaterinspect.h b/indra/newview/llfloaterinspect.h
index 7f7f7377f05..d05f9800c36 100644
--- a/indra/newview/llfloaterinspect.h
+++ b/indra/newview/llfloaterinspect.h
@@ -40,7 +40,7 @@ class LLUICtrl;
 class LLSelectNode;
 // [/RLVa:KB]
 
-class LLFloaterInspect : public LLFloater
+class LLFloaterInspect final : public LLFloater
 {
 	friend class LLFloaterReg;
 public:
diff --git a/indra/newview/llfloaterjoystick.h b/indra/newview/llfloaterjoystick.h
index a1b59513892..290e73c95ce 100644
--- a/indra/newview/llfloaterjoystick.h
+++ b/indra/newview/llfloaterjoystick.h
@@ -32,7 +32,7 @@
 
 class LLCheckBoxCtrl;
 
-class LLFloaterJoystick : public LLFloater
+class LLFloaterJoystick final : public LLFloater
 {
 	friend class LLFloaterReg;
 
diff --git a/indra/newview/llfloaterlagmeter.h b/indra/newview/llfloaterlagmeter.h
index 929ea40629a..a05ff2f0892 100644
--- a/indra/newview/llfloaterlagmeter.h
+++ b/indra/newview/llfloaterlagmeter.h
@@ -31,7 +31,7 @@
 
 class LLTextBox;
 
-class LLFloaterLagMeter : public LLFloater
+class LLFloaterLagMeter final : public LLFloater
 {
 	friend class LLFloaterReg;
 	
diff --git a/indra/newview/llfloaterland.h b/indra/newview/llfloaterland.h
index 5d9b411f045..81fbea81266 100644
--- a/indra/newview/llfloaterland.h
+++ b/indra/newview/llfloaterland.h
@@ -69,7 +69,7 @@ class LLParcel;
 class LLPanelLandExperiences;
 class LLPanelLandEnvironment;
 
-class LLFloaterLand
+class LLFloaterLand final
 :	public LLFloater
 {
 	friend class LLFloaterReg;
diff --git a/indra/newview/llfloaterlandholdings.h b/indra/newview/llfloaterlandholdings.h
index d1d510bb40a..e7b3b31ec22 100644
--- a/indra/newview/llfloaterlandholdings.h
+++ b/indra/newview/llfloaterlandholdings.h
@@ -34,7 +34,7 @@ class LLTextBox;
 class LLScrollListCtrl;
 class LLButton;
 
-class LLFloaterLandHoldings
+class LLFloaterLandHoldings final
 :	public LLFloater
 {
 public:
diff --git a/indra/newview/llfloaterlinkreplace.h b/indra/newview/llfloaterlinkreplace.h
index 060773f93e7..8c786deadd3 100644
--- a/indra/newview/llfloaterlinkreplace.h
+++ b/indra/newview/llfloaterlinkreplace.h
@@ -78,7 +78,7 @@ class LLInventoryLinkReplaceDropTarget : public LLLineEditor
 };
 
 
-class LLFloaterLinkReplace : public LLFloater, LLEventTimer
+class LLFloaterLinkReplace final : public LLFloater, LLEventTimer
 {
 	LOG_CLASS(LLFloaterLinkReplace);
 
diff --git a/indra/newview/llfloaterloadprefpreset.h b/indra/newview/llfloaterloadprefpreset.h
index 9471f6f1e1a..6716e017109 100644
--- a/indra/newview/llfloaterloadprefpreset.h
+++ b/indra/newview/llfloaterloadprefpreset.h
@@ -32,7 +32,7 @@
 
 class LLComboBox;
 
-class LLFloaterLoadPrefPreset : public LLFloater
+class LLFloaterLoadPrefPreset final : public LLFloater
 {
 
 public:
diff --git a/indra/newview/llfloatermarketplacelistings.h b/indra/newview/llfloatermarketplacelistings.h
index ffc098e28a2..c56baac1158 100644
--- a/indra/newview/llfloatermarketplacelistings.h
+++ b/indra/newview/llfloatermarketplacelistings.h
@@ -89,7 +89,7 @@ class LLPanelMarketplaceListings : public LLPanel
 // Class LLFloaterMarketplaceListings
 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-class LLFloaterMarketplaceListings : public LLFloater
+class LLFloaterMarketplaceListings final : public LLFloater
 {
 public:
 	LLFloaterMarketplaceListings(const LLSD& key);
@@ -146,7 +146,7 @@ class LLFloaterMarketplaceListings : public LLFloater
 //-----------------------------------------------------------------------------
 // LLFloaterAssociateListing
 //-----------------------------------------------------------------------------
-class LLFloaterAssociateListing : public LLFloater
+class LLFloaterAssociateListing final : public LLFloater
 {
 	friend class LLFloaterReg;
 public:
@@ -176,7 +176,7 @@ class LLFloaterAssociateListing : public LLFloater
 // get the validation triggered on the server and display the html report.
 // *TODO : morph into an html/text window using the pattern in llfloatertos
 
-class LLFloaterMarketplaceValidation : public LLFloater
+class LLFloaterMarketplaceValidation final : public LLFloater
 {
 public:
 	LLFloaterMarketplaceValidation(const LLSD& key);
@@ -211,7 +211,7 @@ class LLFloaterMarketplaceValidation : public LLFloater
 // LLFloaterItemProperties
 //-----------------------------------------------------------------------------
 
-class LLFloaterItemProperties : public LLFloater
+class LLFloaterItemProperties final : public LLFloater
 {
 public:
 	LLFloaterItemProperties(const LLSD& key);
diff --git a/indra/newview/llfloatermediasettings.h b/indra/newview/llfloatermediasettings.h
index f93512eb3a6..0796a401f1f 100644
--- a/indra/newview/llfloatermediasettings.h
+++ b/indra/newview/llfloatermediasettings.h
@@ -34,7 +34,7 @@ class LLPanelMediaSettingsGeneral;
 class LLPanelMediaSettingsSecurity;
 class LLPanelMediaSettingsPermissions;
 
-class LLFloaterMediaSettings : 
+class LLFloaterMediaSettings final :
 	public LLFloater
 {
 public: 
diff --git a/indra/newview/llfloatermemleak.h b/indra/newview/llfloatermemleak.h
index 86416eaa076..ba7cf771f2d 100644
--- a/indra/newview/llfloatermemleak.h
+++ b/indra/newview/llfloatermemleak.h
@@ -29,7 +29,7 @@
 
 #include "llfloater.h"
 
-class LLFloaterMemLeak : public LLFloater
+class LLFloaterMemLeak final : public LLFloater
 {
 	friend class LLFloaterReg;
 public:
diff --git a/indra/newview/llfloatermodelpreview.h b/indra/newview/llfloatermodelpreview.h
index 1c66570650b..1230b47d693 100644
--- a/indra/newview/llfloatermodelpreview.h
+++ b/indra/newview/llfloatermodelpreview.h
@@ -59,7 +59,7 @@ class domMesh;
 class LLMenuButton;
 class LLToggleableMenu;
 
-class LLFloaterModelPreview : public LLFloaterModelUploadBase
+class LLFloaterModelPreview final : public LLFloaterModelUploadBase
 {
 public:
 	
diff --git a/indra/newview/llfloatermyenvironment.h b/indra/newview/llfloatermyenvironment.h
index fea0981590c..909d66f43db 100644
--- a/indra/newview/llfloatermyenvironment.h
+++ b/indra/newview/llfloatermyenvironment.h
@@ -35,7 +35,7 @@
 
 class LLInventoryPanel;
 
-class LLFloaterMyEnvironment
+class LLFloaterMyEnvironment final
 :	public LLFloater, LLInventoryFetchDescendentsObserver
 {
     LOG_CLASS(LLFloaterMyEnvironment);
diff --git a/indra/newview/llfloatermyscripts.h b/indra/newview/llfloatermyscripts.h
index 3c053a0223c..c2f1a6d271d 100644
--- a/indra/newview/llfloatermyscripts.h
+++ b/indra/newview/llfloatermyscripts.h
@@ -30,7 +30,7 @@
 #include "llfloater.h"
 #include "llpanel.h"
 
-class LLFloaterMyScripts : public LLFloater
+class LLFloaterMyScripts final : public LLFloater
 {
 public:
 	LLFloaterMyScripts(const LLSD& seed);
diff --git a/indra/newview/llfloaternamedesc.h b/indra/newview/llfloaternamedesc.h
index 589f470e827..1e9fe51c9f2 100644
--- a/indra/newview/llfloaternamedesc.h
+++ b/indra/newview/llfloaternamedesc.h
@@ -60,21 +60,21 @@ class LLFloaterNameDesc : public LLFloater
 	std::string		mFilename;
 };
 
-class LLFloaterSoundPreview : public LLFloaterNameDesc
+class LLFloaterSoundPreview final : public LLFloaterNameDesc
 {
 public:
 	LLFloaterSoundPreview(const LLSD& filename );
 	virtual BOOL postBuild();
 };
 
-class LLFloaterAnimPreview : public LLFloaterNameDesc
+class LLFloaterAnimPreview final : public LLFloaterNameDesc
 {
 public:
 	LLFloaterAnimPreview(const LLSD& filename );
 	virtual BOOL postBuild();
 };
 
-class LLFloaterScriptPreview : public LLFloaterNameDesc
+class LLFloaterScriptPreview final : public LLFloaterNameDesc
 {
 public:
 	LLFloaterScriptPreview(const LLSD& filename );
diff --git a/indra/newview/llfloaternotificationsconsole.h b/indra/newview/llfloaternotificationsconsole.h
index 4e92b7d857d..41162fc6d6b 100644
--- a/indra/newview/llfloaternotificationsconsole.h
+++ b/indra/newview/llfloaternotificationsconsole.h
@@ -33,7 +33,7 @@
 
 class LLNotification;
 
-class LLFloaterNotificationConsole : 
+class LLFloaterNotificationConsole final :
 	public LLFloater
 {
 	friend class LLFloaterReg;
@@ -58,7 +58,7 @@ class LLFloaterNotificationConsole :
 /*
  * @brief Pop-up debugging view of a generic new notification.
  */
-class LLFloaterNotification : public LLFloater
+class LLFloaterNotification final : public LLFloater
 {
 public:
 	LLFloaterNotification(LLNotification* note);
diff --git a/indra/newview/llfloaterobjectweights.h b/indra/newview/llfloaterobjectweights.h
index 1a2c317bad8..5fe05f33fa5 100644
--- a/indra/newview/llfloaterobjectweights.h
+++ b/indra/newview/llfloaterobjectweights.h
@@ -41,7 +41,7 @@ class LLTextBox;
  * A functor that checks whether a bounding box for all
  * selected objects crosses a region or parcel bounds.
  */
-struct LLCrossParcelFunctor : public LLSelectedObjectFunctor
+struct LLCrossParcelFunctor final : public LLSelectedObjectFunctor
 {
 	/*virtual*/ bool apply(LLViewerObject* obj);
 
@@ -50,7 +50,7 @@ struct LLCrossParcelFunctor : public LLSelectedObjectFunctor
 };
 
 
-class LLFloaterObjectWeights : public LLFloater, LLAccountingCostObserver
+class LLFloaterObjectWeights final : public LLFloater, LLAccountingCostObserver
 {
 public:
 	LOG_CLASS(LLFloaterObjectWeights);
diff --git a/indra/newview/llfloateroutfitphotopreview.h b/indra/newview/llfloateroutfitphotopreview.h
index a1e7b58abe6..4b68c3b9bf5 100644
--- a/indra/newview/llfloateroutfitphotopreview.h
+++ b/indra/newview/llfloateroutfitphotopreview.h
@@ -35,7 +35,7 @@
 class LLComboBox;
 class LLImageRaw;
 
-class LLFloaterOutfitPhotoPreview : public LLPreview
+class LLFloaterOutfitPhotoPreview final : public LLPreview
 {
 public:
 	LLFloaterOutfitPhotoPreview(const LLSD& key);
diff --git a/indra/newview/llfloateroutfitsnapshot.h b/indra/newview/llfloateroutfitsnapshot.h
index bee386ec63b..c22bf85826e 100644
--- a/indra/newview/llfloateroutfitsnapshot.h
+++ b/indra/newview/llfloateroutfitsnapshot.h
@@ -36,7 +36,7 @@
 /// Class LLFloaterOutfitSnapshot
 ///----------------------------------------------------------------------------
 
-class LLFloaterOutfitSnapshot : public LLFloaterSnapshotBase
+class LLFloaterOutfitSnapshot final : public LLFloaterSnapshotBase
 {
     LOG_CLASS(LLFloaterOutfitSnapshot);
 
@@ -74,7 +74,7 @@ class LLFloaterOutfitSnapshot : public LLFloaterSnapshotBase
 /// Class LLFloaterOutfitSnapshot::Impl
 ///----------------------------------------------------------------------------
 
-class LLFloaterOutfitSnapshot::Impl : public LLFloaterSnapshotBase::ImplBase
+class LLFloaterOutfitSnapshot::Impl final : public LLFloaterSnapshotBase::ImplBase
 {
     LOG_CLASS(LLFloaterOutfitSnapshot::Impl);
 public:
@@ -102,7 +102,7 @@ class LLFloaterOutfitSnapshot::Impl : public LLFloaterSnapshotBase::ImplBase
 /// Class LLOutfitSnapshotFloaterView
 ///----------------------------------------------------------------------------
 
-class LLOutfitSnapshotFloaterView : public LLFloaterView
+class LLOutfitSnapshotFloaterView final : public LLFloaterView
 {
 public:
     struct Params
diff --git a/indra/newview/llfloaterpathfindingcharacters.h b/indra/newview/llfloaterpathfindingcharacters.h
index 4021f4f119a..6f5eca0a025 100644
--- a/indra/newview/llfloaterpathfindingcharacters.h
+++ b/indra/newview/llfloaterpathfindingcharacters.h
@@ -39,7 +39,7 @@ class LLQuaternion;
 class LLSD;
 class LLVector3;
 
-class LLFloaterPathfindingCharacters : public LLFloaterPathfindingObjects
+class LLFloaterPathfindingCharacters final : public LLFloaterPathfindingObjects
 {
 public:
 	virtual void                                    onClose(bool pIsAppQuitting);
diff --git a/indra/newview/llfloaterpathfindingconsole.h b/indra/newview/llfloaterpathfindingconsole.h
index e999e57741f..c728db91ba0 100644
--- a/indra/newview/llfloaterpathfindingconsole.h
+++ b/indra/newview/llfloaterpathfindingconsole.h
@@ -49,7 +49,7 @@ class LLTabContainer;
 class LLTextBase;
 class LLToolset;
 
-class LLFloaterPathfindingConsole
+class LLFloaterPathfindingConsole final
 :	public LLFloater
 {
 	friend class LLFloaterReg;
diff --git a/indra/newview/llfloaterpathfindinglinksets.h b/indra/newview/llfloaterpathfindinglinksets.h
index 7149da9215f..ada0b92c284 100644
--- a/indra/newview/llfloaterpathfindinglinksets.h
+++ b/indra/newview/llfloaterpathfindinglinksets.h
@@ -43,7 +43,7 @@ class LLTextBase;
 class LLUICtrl;
 class LLVector3;
 
-class LLFloaterPathfindingLinksets : public LLFloaterPathfindingObjects
+class LLFloaterPathfindingLinksets final : public LLFloaterPathfindingObjects
 {
 public:
 	static void  openLinksetsWithSelectedObjects();
diff --git a/indra/newview/llfloaterpay.cpp b/indra/newview/llfloaterpay.cpp
index 87973c2286e..477ae8ab6f8 100644
--- a/indra/newview/llfloaterpay.cpp
+++ b/indra/newview/llfloaterpay.cpp
@@ -78,7 +78,7 @@ typedef boost::shared_ptr<LLGiveMoneyInfo> give_money_ptr;
 /// Class LLFloaterPay
 ///----------------------------------------------------------------------------
 
-class LLFloaterPay : public LLFloater
+class LLFloaterPay final : public LLFloater
 {
 public:
 	LLFloaterPay(const LLSD& key);
diff --git a/indra/newview/llfloaterperms.h b/indra/newview/llfloaterperms.h
index 02359a256ec..d30b82e0835 100644
--- a/indra/newview/llfloaterperms.h
+++ b/indra/newview/llfloaterperms.h
@@ -32,7 +32,7 @@
 #include "lleventcoro.h"
 #include "llcoros.h"
 
-class LLFloaterPerms : public LLFloater
+class LLFloaterPerms final : public LLFloater
 {
 	friend class LLFloaterReg;
 	
@@ -50,7 +50,7 @@ class LLFloaterPerms : public LLFloater
 
 };
 
-class LLFloaterPermsDefault : public LLFloater
+class LLFloaterPermsDefault final : public LLFloater
 {
 	friend class LLFloaterReg;
 
diff --git a/indra/newview/llfloaterpreference.h b/indra/newview/llfloaterpreference.h
index c06227cf461..e30c0931c10 100644
--- a/indra/newview/llfloaterpreference.h
+++ b/indra/newview/llfloaterpreference.h
@@ -69,7 +69,7 @@ typedef enum
 	} EGraphicsSettings;
 
 // Floater to control preferences (display, audio, bandwidth, general.
-class LLFloaterPreference : public LLFloater, public LLAvatarPropertiesObserver, public LLConversationLogObserver
+class LLFloaterPreference final : public LLFloater, public LLAvatarPropertiesObserver, public LLConversationLogObserver
 {
 public: 
 	LLFloaterPreference(const LLSD& key);
@@ -287,7 +287,7 @@ class LLPanelPreference : public LLPanel
 	LOG_CLASS(LLPanelPreference);
 };
 
-class LLPanelPreferenceGraphics : public LLPanelPreference
+class LLPanelPreferenceGraphics final : public LLPanelPreference
 {
 public:
 	BOOL postBuild();
@@ -308,7 +308,7 @@ class LLPanelPreferenceGraphics : public LLPanelPreference
 	LOG_CLASS(LLPanelPreferenceGraphics);
 };
 
-class LLFloaterPreferenceGraphicsAdvanced : public LLFloater
+class LLFloaterPreferenceGraphicsAdvanced final : public LLFloater
 {
   public: 
 	LLFloaterPreferenceGraphicsAdvanced(const LLSD& key);
@@ -345,7 +345,7 @@ class LLAvatarComplexityControls
 	LOG_CLASS(LLAvatarComplexityControls);
 };
 
-class LLFloaterPreferenceProxy : public LLFloater
+class LLFloaterPreferenceProxy final : public LLFloater
 {
 public: 
 	LLFloaterPreferenceProxy(const LLSD& key);
diff --git a/indra/newview/llfloaterpreferenceviewadvanced.h b/indra/newview/llfloaterpreferenceviewadvanced.h
index 4619fdaab16..ef33ee388ce 100644
--- a/indra/newview/llfloaterpreferenceviewadvanced.h
+++ b/indra/newview/llfloaterpreferenceviewadvanced.h
@@ -30,7 +30,7 @@
 #include "llcontrol.h"
 #include "llfloater.h"
 
-class LLFloaterPreferenceViewAdvanced
+class LLFloaterPreferenceViewAdvanced final
 :	public LLFloater
 {
 	friend class LLFloaterReg;
diff --git a/indra/newview/llfloaterpreviewtrash.h b/indra/newview/llfloaterpreviewtrash.h
index 465c0c677fc..922a0f435d1 100644
--- a/indra/newview/llfloaterpreviewtrash.h
+++ b/indra/newview/llfloaterpreviewtrash.h
@@ -30,7 +30,7 @@
 
 #include "llfloater.h"
 
-class LLFloaterPreviewTrash
+class LLFloaterPreviewTrash final
 : public LLFloater
 {
 public:
diff --git a/indra/newview/llfloaterprofile.h b/indra/newview/llfloaterprofile.h
index 22ed47e54f9..259a752fbf2 100644
--- a/indra/newview/llfloaterprofile.h
+++ b/indra/newview/llfloaterprofile.h
@@ -32,7 +32,7 @@
 
 class LLPanelProfile;
 
-class LLFloaterProfile : public LLFloater
+class LLFloaterProfile final : public LLFloater
 {
     LOG_CLASS(LLFloaterProfile);
 public:
diff --git a/indra/newview/llfloaterproperties.h b/indra/newview/llfloaterproperties.h
index aa3fcec3374..755d37a1078 100644
--- a/indra/newview/llfloaterproperties.h
+++ b/indra/newview/llfloaterproperties.h
@@ -44,7 +44,7 @@ class LLTextBox;
 
 class LLPropertiesObserver;
 
-class LLFloaterProperties : public LLFloater
+class LLFloaterProperties final : public LLFloater
 {
 public:
 	LLFloaterProperties(const LLUUID& item_id);
@@ -89,7 +89,7 @@ class LLFloaterProperties : public LLFloater
 	LLPropertiesObserver* mPropertiesObserver;
 };
 
-class LLMultiProperties : public LLMultiFloater
+class LLMultiProperties final : public LLMultiFloater
 {
 public:
 	LLMultiProperties();
diff --git a/indra/newview/llfloaterregiondebugconsole.h b/indra/newview/llfloaterregiondebugconsole.h
index f55d9649243..291968cec31 100644
--- a/indra/newview/llfloaterregiondebugconsole.h
+++ b/indra/newview/llfloaterregiondebugconsole.h
@@ -37,7 +37,7 @@ class LLTextEditor;
 typedef boost::signals2::signal<
 	void (const std::string& output)> console_reply_signal_t;
 
-class LLFloaterRegionDebugConsole : public LLFloater
+class LLFloaterRegionDebugConsole final : public LLFloater
 {
 public:
 	LLFloaterRegionDebugConsole(LLSD const & key);
diff --git a/indra/newview/llfloaterregioninfo.h b/indra/newview/llfloaterregioninfo.h
index 0372ba2543e..21104315440 100644
--- a/indra/newview/llfloaterregioninfo.h
+++ b/indra/newview/llfloaterregioninfo.h
@@ -70,7 +70,7 @@ class LLPanelRegionEnvironment;
 
 class LLEventTimer;
 
-class LLFloaterRegionInfo : public LLFloater
+class LLFloaterRegionInfo final : public LLFloater
 {
 	friend class LLFloaterReg;
 public:
diff --git a/indra/newview/llfloaterregionrestarting.h b/indra/newview/llfloaterregionrestarting.h
index 46416db2c88..a1fb1a54e05 100644
--- a/indra/newview/llfloaterregionrestarting.h
+++ b/indra/newview/llfloaterregionrestarting.h
@@ -31,7 +31,7 @@
 #include "lltextbox.h"
 #include "lleventtimer.h"
 
-class LLFloaterRegionRestarting : public LLFloater,  public LLEventTimer
+class LLFloaterRegionRestarting final : public LLFloater,  public LLEventTimer
 {
 	friend class LLFloaterReg;
 
diff --git a/indra/newview/llfloaterreporter.h b/indra/newview/llfloaterreporter.h
index c678df7155a..63ad22beb68 100644
--- a/indra/newview/llfloaterreporter.h
+++ b/indra/newview/llfloaterreporter.h
@@ -74,7 +74,7 @@ enum EReportType
 	CS_REQUEST_REPORT = 4
 };
 
-class LLFloaterReporter
+class LLFloaterReporter final
 :	public LLFloater
 {
 public:
diff --git a/indra/newview/llfloatersaveprefpreset.h b/indra/newview/llfloatersaveprefpreset.h
index ae58180e7f4..78591ab1337 100644
--- a/indra/newview/llfloatersaveprefpreset.h
+++ b/indra/newview/llfloatersaveprefpreset.h
@@ -32,7 +32,7 @@
 
 class LLComboBox;
 
-class LLFloaterSavePrefPreset : public LLFloater
+class LLFloaterSavePrefPreset final : public LLFloater
 {
 
 public:
diff --git a/indra/newview/llfloatersceneloadstats.h b/indra/newview/llfloatersceneloadstats.h
index aa414bf5448..cf0ad282447 100644
--- a/indra/newview/llfloatersceneloadstats.h
+++ b/indra/newview/llfloatersceneloadstats.h
@@ -29,7 +29,7 @@
 
 #include "llfloater.h"
 
-class LLFloaterSceneLoadStats : public LLFloater
+class LLFloaterSceneLoadStats final : public LLFloater
 {
 	friend class LLFloaterReg;
 private:
diff --git a/indra/newview/llfloaterscriptdebug.h b/indra/newview/llfloaterscriptdebug.h
index 8c08b234f39..8199386093b 100644
--- a/indra/newview/llfloaterscriptdebug.h
+++ b/indra/newview/llfloaterscriptdebug.h
@@ -32,7 +32,7 @@
 class LLTextEditor;
 class LLUUID;
 
-class LLFloaterScriptDebug : public LLMultiFloater
+class LLFloaterScriptDebug final : public LLMultiFloater
 {
 public:
 	LLFloaterScriptDebug(const LLSD& key);
@@ -51,7 +51,7 @@ class LLFloaterScriptDebug : public LLMultiFloater
 	static LLFloaterScriptDebug*	sInstance;
 };
 
-class LLFloaterScriptDebugOutput : public LLFloater
+class LLFloaterScriptDebugOutput final : public LLFloater
 {
 public:
 	LLFloaterScriptDebugOutput(const LLSD& object_id);
diff --git a/indra/newview/llfloaterscriptedprefs.h b/indra/newview/llfloaterscriptedprefs.h
index 31df897aac7..ee04081335a 100644
--- a/indra/newview/llfloaterscriptedprefs.h
+++ b/indra/newview/llfloaterscriptedprefs.h
@@ -33,7 +33,7 @@
 class LLScriptEditor;
 class LLUICtrl;
 
-class LLFloaterScriptEdPrefs : public LLFloater
+class LLFloaterScriptEdPrefs final : public LLFloater
 {
 public:
 	LLFloaterScriptEdPrefs(const LLSD& key);
diff --git a/indra/newview/llfloaterscriptlimits.h b/indra/newview/llfloaterscriptlimits.h
index d2192f9d01e..7b00fae5fa8 100644
--- a/indra/newview/llfloaterscriptlimits.h
+++ b/indra/newview/llfloaterscriptlimits.h
@@ -42,7 +42,7 @@ class LLAvatarName;
 
 class LLPanelScriptLimitsRegionMemory;
 
-class LLFloaterScriptLimits : public LLFloater
+class LLFloaterScriptLimits final : public LLFloater
 {
 	friend class LLFloaterReg;
 public:
diff --git a/indra/newview/llfloatersearch.h b/indra/newview/llfloatersearch.h
index 35b268e1b28..0f9bf2f54d0 100644
--- a/indra/newview/llfloatersearch.h
+++ b/indra/newview/llfloatersearch.h
@@ -42,7 +42,7 @@ class LLMediaCtrl;
 /// web page. The browser control is explicitly marked as "trusted"
 /// so that the user can click on teleport links in search results.
 ///
-class LLFloaterSearch : 
+class LLFloaterSearch final :
 	public LLFloaterWebContent
 {
 public:
diff --git a/indra/newview/llfloatersellland.cpp b/indra/newview/llfloatersellland.cpp
index b139e5daf5c..19b5548b3f1 100644
--- a/indra/newview/llfloatersellland.cpp
+++ b/indra/newview/llfloatersellland.cpp
@@ -51,7 +51,7 @@ void send_parcel_select_objects(S32 parcel_local_id, U32 return_type,
 
 enum Badge { BADGE_OK, BADGE_NOTE, BADGE_WARN, BADGE_ERROR };
 
-class LLFloaterSellLandUI
+class LLFloaterSellLandUI final
 :	public LLFloater
 {
 public:
diff --git a/indra/newview/llfloatersettingsdebug.h b/indra/newview/llfloatersettingsdebug.h
index f07e0557e3d..ad7352a5698 100644
--- a/indra/newview/llfloatersettingsdebug.h
+++ b/indra/newview/llfloatersettingsdebug.h
@@ -30,7 +30,7 @@
 #include "llcontrol.h"
 #include "llfloater.h"
 
-class LLFloaterSettingsDebug 
+class LLFloaterSettingsDebug final
 :	public LLFloater
 {
 	friend class LLFloaterReg;
diff --git a/indra/newview/llfloatersidepanelcontainer.h b/indra/newview/llfloatersidepanelcontainer.h
index 5c37a10c38f..b481652181d 100644
--- a/indra/newview/llfloatersidepanelcontainer.h
+++ b/indra/newview/llfloatersidepanelcontainer.h
@@ -40,7 +40,7 @@
  * drag an inventory item from My Inventory window to a docked IM window,
  * i.e. share the item (see VWR-22891).
  */
-class LLFloaterSidePanelContainer : public LLFloater
+class LLFloaterSidePanelContainer final : public LLFloater
 {
 private:
 	static const std::string sMainPanelName;
diff --git a/indra/newview/llfloatersnapshot.h b/indra/newview/llfloatersnapshot.h
index bcba14d63d1..8683f4fc7cb 100644
--- a/indra/newview/llfloatersnapshot.h
+++ b/indra/newview/llfloatersnapshot.h
@@ -137,7 +137,7 @@ class LLFloaterSnapshotBase::ImplBase
 	EStatus mStatus;
 };
 
-class LLFloaterSnapshot : public LLFloaterSnapshotBase
+class LLFloaterSnapshot final : public LLFloaterSnapshotBase
 {
 	LOG_CLASS(LLFloaterSnapshot);
 
@@ -171,7 +171,7 @@ class LLFloaterSnapshot : public LLFloaterSnapshotBase
 /// Class LLFloaterSnapshot::Impl
 ///----------------------------------------------------------------------------
 
-class LLFloaterSnapshot::Impl : public LLFloaterSnapshotBase::ImplBase
+class LLFloaterSnapshot::Impl final : public LLFloaterSnapshotBase::ImplBase
 {
 	LOG_CLASS(LLFloaterSnapshot::Impl);
 public:
@@ -211,7 +211,7 @@ class LLFloaterSnapshot::Impl : public LLFloaterSnapshotBase::ImplBase
 	void setFinished(bool finished, bool ok = true, const std::string& msg = LLStringUtil::null);
 };
 
-class LLSnapshotFloaterView : public LLFloaterView
+class LLSnapshotFloaterView final : public LLFloaterView
 {
 public:
 	struct Params 
diff --git a/indra/newview/llfloaterspellchecksettings.h b/indra/newview/llfloaterspellchecksettings.h
index f9bbefafb74..200cbb203de 100644
--- a/indra/newview/llfloaterspellchecksettings.h
+++ b/indra/newview/llfloaterspellchecksettings.h
@@ -29,7 +29,7 @@
 
 #include "llfloater.h"
 
-class LLFloaterSpellCheckerSettings : public LLFloater
+class LLFloaterSpellCheckerSettings final : public LLFloater
 {
 public:
 	LLFloaterSpellCheckerSettings(const LLSD& key);
@@ -47,7 +47,7 @@ class LLFloaterSpellCheckerSettings : public LLFloater
 	void refreshDictionaries(bool from_settings);
 };
 
-class LLFloaterSpellCheckerImport : public LLFloater
+class LLFloaterSpellCheckerImport final : public LLFloater
 {
 public:
 	LLFloaterSpellCheckerImport(const LLSD& key);
diff --git a/indra/newview/llfloatertelehub.h b/indra/newview/llfloatertelehub.h
index 9b9b11fb296..505f7d22628 100644
--- a/indra/newview/llfloatertelehub.h
+++ b/indra/newview/llfloatertelehub.h
@@ -35,7 +35,7 @@ class LLObjectSelection;
 
 const S32 MAX_SPAWNPOINTS_PER_TELEHUB = 16;
 
-class LLFloaterTelehub : public LLFloater
+class LLFloaterTelehub final : public LLFloater
 {
 public:
 	LLFloaterTelehub(const LLSD& key);
diff --git a/indra/newview/llfloatertestinspectors.h b/indra/newview/llfloatertestinspectors.h
index 1724a2e076e..f80daa499c7 100644
--- a/indra/newview/llfloatertestinspectors.h
+++ b/indra/newview/llfloatertestinspectors.h
@@ -29,7 +29,7 @@
 
 class LLSD;
 
-class LLFloaterTestInspectors : public LLFloater
+class LLFloaterTestInspectors final : public LLFloater
 {
 	friend class LLFloaterReg;
 public:
diff --git a/indra/newview/llfloatertestlistview.h b/indra/newview/llfloatertestlistview.h
index 0d4c7eb7938..0d1d2975d2e 100644
--- a/indra/newview/llfloatertestlistview.h
+++ b/indra/newview/llfloatertestlistview.h
@@ -30,7 +30,7 @@
 
 class LLSD;
 
-class LLFloaterTestListView : public LLFloater
+class LLFloaterTestListView final : public LLFloater
 {
 	friend class LLFloaterReg;
 
diff --git a/indra/newview/llfloatertexturefetchdebugger.h b/indra/newview/llfloatertexturefetchdebugger.h
index 096ad88e07e..2afd6a736bf 100644
--- a/indra/newview/llfloatertexturefetchdebugger.h
+++ b/indra/newview/llfloatertexturefetchdebugger.h
@@ -30,7 +30,7 @@
 #include "llfloater.h"
 class LLTextureFetchDebugger;
 
-class LLFloaterTextureFetchDebugger : public LLFloater
+class LLFloaterTextureFetchDebugger final : public LLFloater
 {
 	friend class LLFloaterReg;
 public:
diff --git a/indra/newview/llfloatertools.h b/indra/newview/llfloatertools.h
index ffff564ad41..183201fc7d0 100644
--- a/indra/newview/llfloatertools.h
+++ b/indra/newview/llfloatertools.h
@@ -52,7 +52,7 @@ class LLLandImpactsObserver;
 
 typedef LLSafeHandle<LLObjectSelection> LLObjectSelectionHandle;
 
-class LLFloaterTools
+class LLFloaterTools final
 : public LLFloater
 {
 public:
diff --git a/indra/newview/llfloatertopobjects.h b/indra/newview/llfloatertopobjects.h
index 3138249c7ae..8c7fd41916c 100644
--- a/indra/newview/llfloatertopobjects.h
+++ b/indra/newview/llfloatertopobjects.h
@@ -47,7 +47,7 @@ enum LAND_STAT_REPORT_TYPE
 	STAT_REPORT_TOP_COLLIDERS
 };
 
-class LLFloaterTopObjects : public LLFloater
+class LLFloaterTopObjects final : public LLFloater
 {
 	friend class LLFloaterReg;
 public:
diff --git a/indra/newview/llfloatertoybox.h b/indra/newview/llfloatertoybox.h
index 10aee0e6f54..75c129fe6a6 100644
--- a/indra/newview/llfloatertoybox.h
+++ b/indra/newview/llfloatertoybox.h
@@ -34,7 +34,7 @@ class LLButton;
 class LLToolBar;
 
 
-class LLFloaterToybox : public LLFloater
+class LLFloaterToybox final : public LLFloater
 {
 public:
 	LLFloaterToybox(const LLSD& key);
diff --git a/indra/newview/llfloatertranslationsettings.h b/indra/newview/llfloatertranslationsettings.h
index 2a15eacdeda..ff7ad9c50e4 100644
--- a/indra/newview/llfloatertranslationsettings.h
+++ b/indra/newview/llfloatertranslationsettings.h
@@ -35,7 +35,7 @@ class LLComboBox;
 class LLLineEditor;
 class LLRadioGroup;
 
-class LLFloaterTranslationSettings : public LLFloater
+class LLFloaterTranslationSettings final : public LLFloater
 {
 public:
 	LLFloaterTranslationSettings(const LLSD& key);
diff --git a/indra/newview/llfloateruipreview.cpp b/indra/newview/llfloateruipreview.cpp
index e876634c41a..6872b2f1f70 100644
--- a/indra/newview/llfloateruipreview.cpp
+++ b/indra/newview/llfloateruipreview.cpp
@@ -130,7 +130,7 @@ class LLOverlapPanel : public LLPanel
 };
 
 
-class LLFloaterUIPreview : public LLFloater
+class LLFloaterUIPreview final : public LLFloater
 {
 public:
 	// Setup
@@ -263,7 +263,7 @@ class LLFadeEventTimer : public LLEventTimer
 
 // Implementation of previewed floater
 // Used to override draw and mouse handler
-class LLPreviewedFloater : public LLFloater
+class LLPreviewedFloater final : public LLFloater
 {
 public:
 	LLPreviewedFloater(LLFloaterUIPreview* floater, const Params& params)
diff --git a/indra/newview/llfloaterurlentry.h b/indra/newview/llfloaterurlentry.h
index 20f4604907a..0f53029ff2f 100644
--- a/indra/newview/llfloaterurlentry.h
+++ b/indra/newview/llfloaterurlentry.h
@@ -35,7 +35,7 @@
 class LLLineEditor;
 class LLComboBox;
 
-class LLFloaterURLEntry : public LLFloater
+class LLFloaterURLEntry final : public LLFloater
 {
 public:
 	// Can only be shown by LLPanelLandMedia, and pushes data back into
diff --git a/indra/newview/llfloatervoiceeffect.h b/indra/newview/llfloatervoiceeffect.h
index 4d432c46ccc..6db183b9be1 100644
--- a/indra/newview/llfloatervoiceeffect.h
+++ b/indra/newview/llfloatervoiceeffect.h
@@ -34,7 +34,7 @@
 class LLButton;
 class LLScrollListCtrl;
 
-class LLFloaterVoiceEffect
+class LLFloaterVoiceEffect final
 	: public LLFloater
 	, public LLVoiceEffectObserver
 {
diff --git a/indra/newview/llfloaterwhitelistentry.h b/indra/newview/llfloaterwhitelistentry.h
index deab49c5238..749faf7ee44 100644
--- a/indra/newview/llfloaterwhitelistentry.h
+++ b/indra/newview/llfloaterwhitelistentry.h
@@ -31,7 +31,7 @@
 
 class LLLineEditor;
 
-class LLFloaterWhiteListEntry : 
+class LLFloaterWhiteListEntry final :
 	public LLFloater
 {
 	public:
diff --git a/indra/newview/llfloaterwindowsize.h b/indra/newview/llfloaterwindowsize.h
index a71e5e273c9..73650ad1086 100644
--- a/indra/newview/llfloaterwindowsize.h
+++ b/indra/newview/llfloaterwindowsize.h
@@ -31,7 +31,7 @@
 ///----------------------------------------------------------------------------
 /// Class LLFloaterWindowSize
 ///----------------------------------------------------------------------------
-class LLFloaterWindowSize
+class LLFloaterWindowSize final
 	:	public LLFloater
 {
 	friend class LLFloaterReg;
diff --git a/indra/newview/llfloaterworldmap.h b/indra/newview/llfloaterworldmap.h
index b63de737faa..a7278fb0474 100644
--- a/indra/newview/llfloaterworldmap.h
+++ b/indra/newview/llfloaterworldmap.h
@@ -46,7 +46,7 @@ class LLItemInfo;
 class LLLineEditor;
 class LLTabContainer;
 
-class LLFloaterWorldMap : public LLFloater
+class LLFloaterWorldMap final : public LLFloater
 {
 public:
 	LLFloaterWorldMap(const LLSD& key);
diff --git a/indra/newview/llfollowcam.h b/indra/newview/llfollowcam.h
index 79958481605..6d16996b3f5 100644
--- a/indra/newview/llfollowcam.h
+++ b/indra/newview/llfollowcam.h
@@ -193,7 +193,7 @@ class LLFollowCam : public LLFollowCamParams
 };// end of FollowCam class
 
 
-class LLFollowCamMgr : public LLSingleton<LLFollowCamMgr>
+class LLFollowCamMgr final : public LLSingleton<LLFollowCamMgr>
 {
     LLSINGLETON(LLFollowCamMgr);
     ~LLFollowCamMgr();
diff --git a/indra/newview/llfriendcard.h b/indra/newview/llfriendcard.h
index 2fb912a9304..d8833d0f556 100644
--- a/indra/newview/llfriendcard.h
+++ b/indra/newview/llfriendcard.h
@@ -33,7 +33,7 @@
 
 class LLViewerInventoryItem;
 
-class LLFriendCardsManager
+class LLFriendCardsManager final
 	: public LLSingleton<LLFriendCardsManager>
 	, public LLFriendObserver
 {
diff --git a/indra/newview/llgesturemgr.h b/indra/newview/llgesturemgr.h
index 402bdf60399..9ec80b85465 100644
--- a/indra/newview/llgesturemgr.h
+++ b/indra/newview/llgesturemgr.h
@@ -49,7 +49,7 @@ class LLGestureManagerObserver
 	virtual void changed() = 0;
 };
 
-class LLGestureMgr : public LLSingleton<LLGestureMgr>, public LLInventoryFetchItemsObserver
+class LLGestureMgr final : public LLSingleton<LLGestureMgr>, public LLInventoryFetchItemsObserver
 {
 	LLSINGLETON(LLGestureMgr);
 	~LLGestureMgr();
diff --git a/indra/newview/llgroupmgr.h b/indra/newview/llgroupmgr.h
index cf9735e38a0..f6713fb6d27 100644
--- a/indra/newview/llgroupmgr.h
+++ b/indra/newview/llgroupmgr.h
@@ -351,7 +351,7 @@ struct LLRoleActionSet
 	std::vector<LLRoleAction*> mActions;
 };
 
-class LLGroupMgr : public LLSingleton<LLGroupMgr>
+class LLGroupMgr final : public LLSingleton<LLGroupMgr>
 {
 	LLSINGLETON(LLGroupMgr);
 	~LLGroupMgr();
diff --git a/indra/newview/llhints.h b/indra/newview/llhints.h
index 1f730734d01..3aa8449adfd 100644
--- a/indra/newview/llhints.h
+++ b/indra/newview/llhints.h
@@ -32,7 +32,7 @@
 #include "llinitdestroyclass.h"
 
 
-class LLHints :  public LLSingleton<LLHints>
+class LLHints final :  public LLSingleton<LLHints>
 {
 	LLSINGLETON(LLHints);
 	~LLHints();
diff --git a/indra/newview/llhudmanager.h b/indra/newview/llhudmanager.h
index 7782739690d..54bbd19ece0 100644
--- a/indra/newview/llhudmanager.h
+++ b/indra/newview/llhudmanager.h
@@ -34,7 +34,7 @@
 class LLHUDEffect;
 class LLMessageSystem;
 
-class LLHUDManager : public LLSingleton<LLHUDManager>
+class LLHUDManager final : public LLSingleton<LLHUDManager>
 {
 	LLSINGLETON(LLHUDManager);
 	~LLHUDManager();
diff --git a/indra/newview/llimagefiltersmanager.h b/indra/newview/llimagefiltersmanager.h
index d06212d85ae..b121a32fecc 100644
--- a/indra/newview/llimagefiltersmanager.h
+++ b/indra/newview/llimagefiltersmanager.h
@@ -32,7 +32,7 @@
 //============================================================================
 // LLImageFiltersManager class
 
-class LLImageFiltersManager : public LLSingleton<LLImageFiltersManager>
+class LLImageFiltersManager final : public LLSingleton<LLImageFiltersManager>
 {
 	LLSINGLETON(LLImageFiltersManager);
 	~LLImageFiltersManager();
diff --git a/indra/newview/llimview.h b/indra/newview/llimview.h
index 79c831ebb6a..51de8a23461 100644
--- a/indra/newview/llimview.h
+++ b/indra/newview/llimview.h
@@ -60,7 +60,7 @@ class LLSessionTimeoutTimer : public LLEventTimer
 /**
  * Model (MVC) for IM Sessions
  */
-class LLIMModel :  public LLSingleton<LLIMModel>
+class LLIMModel final :  public LLSingleton<LLIMModel>
 {
 	LLSINGLETON(LLIMModel);
 public:
@@ -312,7 +312,7 @@ class LLIMSessionObserver
 };
 
 
-class LLIMMgr : public LLSingleton<LLIMMgr>
+class LLIMMgr final : public LLSingleton<LLIMMgr>
 {
 	LLSINGLETON(LLIMMgr);
 	friend class LLIMModel;
@@ -500,7 +500,7 @@ class LLIMMgr : public LLSingleton<LLIMMgr>
 	LLSD mPendingAgentListUpdates;
 };
 
-class LLCallDialogManager : public LLSingleton<LLCallDialogManager>
+class LLCallDialogManager final : public LLSingleton<LLCallDialogManager>
 {
 	LLSINGLETON(LLCallDialogManager);
 	~LLCallDialogManager();
diff --git a/indra/newview/llinventoryicon.cpp b/indra/newview/llinventoryicon.cpp
index 81c001b8bd6..3bfe57212a8 100644
--- a/indra/newview/llinventoryicon.cpp
+++ b/indra/newview/llinventoryicon.cpp
@@ -36,7 +36,7 @@
 #include "llwearabletype.h"
 #include "llinventorysettings.h"
 
-struct IconEntry : public LLDictionaryEntry
+struct IconEntry final : public LLDictionaryEntry
 {
 	IconEntry(const std::string &item_name)
 		:
@@ -44,7 +44,7 @@ struct IconEntry : public LLDictionaryEntry
 	{}
 };
 
-class LLIconDictionary : public LLSingleton<LLIconDictionary>,
+class LLIconDictionary final : public LLSingleton<LLIconDictionary>,
 						 public LLDictionary<LLInventoryType::EIconName, IconEntry>
 {
 	LLSINGLETON(LLIconDictionary);
diff --git a/indra/newview/llinventorymodelbackgroundfetch.h b/indra/newview/llinventorymodelbackgroundfetch.h
index 00d2908c1b5..b7839cf0807 100644
--- a/indra/newview/llinventorymodelbackgroundfetch.h
+++ b/indra/newview/llinventorymodelbackgroundfetch.h
@@ -41,7 +41,7 @@
 // This class handles background fetches, which are fetches of
 // inventory folder.  Fetches can be recursive or not.
 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-class LLInventoryModelBackgroundFetch : public LLSingleton<LLInventoryModelBackgroundFetch>
+class LLInventoryModelBackgroundFetch final : public LLSingleton<LLInventoryModelBackgroundFetch>
 {
 	LLSINGLETON(LLInventoryModelBackgroundFetch);
 	~LLInventoryModelBackgroundFetch();
diff --git a/indra/newview/lllocalbitmaps.h b/indra/newview/lllocalbitmaps.h
index 226dbbe4949..94aad1471a1 100644
--- a/indra/newview/lllocalbitmaps.h
+++ b/indra/newview/lllocalbitmaps.h
@@ -111,7 +111,7 @@ class LLLocalBitmapTimer : public LLEventTimer
 
 };
 
-class LLLocalBitmapMgr : public LLSingleton<LLLocalBitmapMgr>
+class LLLocalBitmapMgr final : public LLSingleton<LLLocalBitmapMgr>
 {
 	LLSINGLETON(LLLocalBitmapMgr);
 	~LLLocalBitmapMgr();
diff --git a/indra/newview/lllocationhistory.h b/indra/newview/lllocationhistory.h
index 1cecbabd3b5..5388559415e 100644
--- a/indra/newview/lllocationhistory.h
+++ b/indra/newview/lllocationhistory.h
@@ -101,7 +101,7 @@ class LLLocationHistoryItem {
 	ELocationType mType;
 };
 
-class LLLocationHistory: public LLSingleton<LLLocationHistory>
+class LLLocationHistory final : public LLSingleton<LLLocationHistory>
 {
 	LLSINGLETON(LLLocationHistory);
 	LOG_CLASS(LLLocationHistory);
diff --git a/indra/newview/lllogchat.cpp b/indra/newview/lllogchat.cpp
index 48d7e3b07cd..530db5ce3b3 100644
--- a/indra/newview/lllogchat.cpp
+++ b/indra/newview/lllogchat.cpp
@@ -132,7 +132,7 @@ void append_to_last_message(std::list<LLSD>& messages, const std::string& line)
 	messages.back()[LL_IM_TEXT] = im_text;
 }
 
-class LLLogChatTimeScanner: public LLSingleton<LLLogChatTimeScanner>
+class LLLogChatTimeScanner final : public LLSingleton<LLLogChatTimeScanner>
 {
 	LLSINGLETON(LLLogChatTimeScanner);
 
diff --git a/indra/newview/lllogchat.h b/indra/newview/lllogchat.h
index 8b7fe14e168..d2a1566473c 100644
--- a/indra/newview/lllogchat.h
+++ b/indra/newview/lllogchat.h
@@ -79,7 +79,7 @@ class LLDeleteHistoryThread : public LLActionThread
 	static void deleteHistory();
 };
 
-class LLLogChat : public LLSingleton<LLLogChat>
+class LLLogChat final : public LLSingleton<LLLogChat>
 {
     LLSINGLETON(LLLogChat);
     ~LLLogChat();
diff --git a/indra/newview/lllogininstance.h b/indra/newview/lllogininstance.h
index b759b43474d..a502392acdc 100644
--- a/indra/newview/lllogininstance.h
+++ b/indra/newview/lllogininstance.h
@@ -39,7 +39,7 @@ class LLNotificationsInterface;
 
 // This class hosts the login module and is used to 
 // negotiate user authentication attempts.
-class LLLoginInstance : public LLSingleton<LLLoginInstance>
+class LLLoginInstance final : public LLSingleton<LLLoginInstance>
 {
 	LLSINGLETON(LLLoginInstance);
 	~LLLoginInstance();
diff --git a/indra/newview/llmainlooprepeater.h b/indra/newview/llmainlooprepeater.h
index 2ec3a74e4ae..68ac254164e 100644
--- a/indra/newview/llmainlooprepeater.h
+++ b/indra/newview/llmainlooprepeater.h
@@ -40,7 +40,7 @@
 // pump value is a string naming the pump to which the message should be
 // re-posted.  The payload value is what will be posted to the designated pump.
 //
-class LLMainLoopRepeater:
+class LLMainLoopRepeater final :
 	public LLSingleton<LLMainLoopRepeater>
 {
 	LLSINGLETON(LLMainLoopRepeater);
diff --git a/indra/newview/llmarketplacefunctions.h b/indra/newview/llmarketplacefunctions.h
index fee9225f77c..c6a69def579 100644
--- a/indra/newview/llmarketplacefunctions.h
+++ b/indra/newview/llmarketplacefunctions.h
@@ -83,7 +83,7 @@ namespace MarketplaceFetchCodes
 }
 
 
-class LLMarketplaceInventoryImporter
+class LLMarketplaceInventoryImporter final
 	: public LLSingleton<LLMarketplaceInventoryImporter>
 {
 	LLSINGLETON(LLMarketplaceInventoryImporter);
@@ -177,7 +177,7 @@ class LLSLMUpdateListingsResponder;
 class LLSLMAssociateListingsResponder;
 class LLSLMDeleteListingsResponder;
 
-class LLMarketplaceData
+class LLMarketplaceData final
     : public LLSingleton<LLMarketplaceData>
 {
     LLSINGLETON(LLMarketplaceData);
diff --git a/indra/newview/llmenuoptionpathfindingrebakenavmesh.h b/indra/newview/llmenuoptionpathfindingrebakenavmesh.h
index 649a387dd3c..b7b0310159e 100644
--- a/indra/newview/llmenuoptionpathfindingrebakenavmesh.h
+++ b/indra/newview/llmenuoptionpathfindingrebakenavmesh.h
@@ -35,7 +35,7 @@
 
 class LLPathfindingNavMeshStatus;
 
-class LLMenuOptionPathfindingRebakeNavmesh : public LLSingleton<LLMenuOptionPathfindingRebakeNavmesh>
+class LLMenuOptionPathfindingRebakeNavmesh final : public LLSingleton<LLMenuOptionPathfindingRebakeNavmesh>
 {
 	LLSINGLETON(LLMenuOptionPathfindingRebakeNavmesh);
 	virtual ~LLMenuOptionPathfindingRebakeNavmesh();
diff --git a/indra/newview/llmoveview.h b/indra/newview/llmoveview.h
index f8a14dba1ed..dbe5e1c48f4 100644
--- a/indra/newview/llmoveview.h
+++ b/indra/newview/llmoveview.h
@@ -37,7 +37,7 @@ class LLJoystickAgentSlide;
 //
 // Classes
 //
-class LLFloaterMove
+class LLFloaterMove final
 :	public LLFloater
 {
 	LOG_CLASS(LLFloaterMove);
diff --git a/indra/newview/llmutelist.h b/indra/newview/llmutelist.h
index f2fcf3dbb33..0f7e9a41193 100644
--- a/indra/newview/llmutelist.h
+++ b/indra/newview/llmutelist.h
@@ -69,7 +69,7 @@ class LLMute
 	U32			mFlags;	// flags pertaining to this mute entry
 };
 
-class LLMuteList : public LLSingleton<LLMuteList>
+class LLMuteList final : public LLSingleton<LLMuteList>
 {
 	LLSINGLETON(LLMuteList);
 	~LLMuteList();
@@ -175,7 +175,7 @@ class LLMuteListObserver
 	virtual void onChangeDetailed(const LLMute& ) { }
 };
 
-class LLRenderMuteList : public LLSingleton<LLRenderMuteList>
+class LLRenderMuteList final : public LLSingleton<LLRenderMuteList>
 {
     LLSINGLETON(LLRenderMuteList);
 public:
diff --git a/indra/newview/llnavigationbar.h b/indra/newview/llnavigationbar.h
index 997c7677cd0..7ddd28d7089 100755
--- a/indra/newview/llnavigationbar.h
+++ b/indra/newview/llnavigationbar.h
@@ -82,7 +82,7 @@ class LLPullButton: public LLButton
 /**
  * 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/llnotificationmanager.h b/indra/newview/llnotificationmanager.h
index 52c79cc6897..bb342e26bb6 100644
--- a/indra/newview/llnotificationmanager.h
+++ b/indra/newview/llnotificationmanager.h
@@ -44,7 +44,7 @@ class LLToast;
 /**
  * Responsible for registering notification handlers.
  */
-class LLNotificationManager : public LLSingleton<LLNotificationManager>
+class LLNotificationManager final : public LLSingleton<LLNotificationManager>
 {
 	LLSINGLETON(LLNotificationManager);
 	virtual ~LLNotificationManager();
diff --git a/indra/newview/llnotificationstorage.cpp b/indra/newview/llnotificationstorage.cpp
index 35fdfa88bb5..ca1a3517ac9 100644
--- a/indra/newview/llnotificationstorage.cpp
+++ b/indra/newview/llnotificationstorage.cpp
@@ -43,7 +43,7 @@
 
 typedef boost::function<LLNotificationResponderInterface * (const LLSD& pParams)> responder_constructor_t;
 
-class LLResponderRegistry : public LLRegistrySingleton<std::string, responder_constructor_t, LLResponderRegistry>
+class LLResponderRegistry final : public LLRegistrySingleton<std::string, responder_constructor_t, LLResponderRegistry>
 {
     LLSINGLETON_EMPTY_CTOR(LLResponderRegistry);
 public:
diff --git a/indra/newview/lloutfitobserver.h b/indra/newview/lloutfitobserver.h
index 77041db68d0..79c2761a687 100644
--- a/indra/newview/lloutfitobserver.h
+++ b/indra/newview/lloutfitobserver.h
@@ -34,7 +34,7 @@
  * Outfit observer facade that provides simple possibility to subscribe on
  * BOF(base outfit) replaced, BOF changed, COF(current outfit) changed events.
  */
-class LLOutfitObserver: public LLInventoryObserver, public LLSingleton<LLOutfitObserver>
+class LLOutfitObserver final : public LLInventoryObserver, public LLSingleton<LLOutfitObserver>
 {
 	LLSINGLETON(LLOutfitObserver);
 	virtual ~LLOutfitObserver();
diff --git a/indra/newview/llpanelblockedlist.h b/indra/newview/llpanelblockedlist.h
index 07f04376566..652aa0fbe92 100644
--- a/indra/newview/llpanelblockedlist.h
+++ b/indra/newview/llpanelblockedlist.h
@@ -86,7 +86,7 @@ class LLPanelBlockedList : public LLPanel
 // LLFloaterGetBlockedObjectName()
 //-----------------------------------------------------------------------------
 // Class for handling mute object by name floater.
-class LLFloaterGetBlockedObjectName : public LLFloater
+class LLFloaterGetBlockedObjectName final : public LLFloater
 {
 	friend class LLFloaterReg;
 public:
diff --git a/indra/newview/llpaneleditwearable.cpp b/indra/newview/llpaneleditwearable.cpp
index c601a6c2102..073beee8a72 100644
--- a/indra/newview/llpaneleditwearable.cpp
+++ b/indra/newview/llpaneleditwearable.cpp
@@ -113,7 +113,7 @@ typedef std::vector<ESubpart> subpart_vec_t;
 
 // Locally defined classes
 
-class LLEditWearableDictionary : public LLSingleton<LLEditWearableDictionary>
+class LLEditWearableDictionary final : public LLSingleton<LLEditWearableDictionary>
 {
         //--------------------------------------------------------------------
         // Constructors and Destructors
diff --git a/indra/newview/llpanelgenerictip.h b/indra/newview/llpanelgenerictip.h
index f8a3413fe4b..1e3ea3ed161 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/llpanelmaininventory.cpp b/indra/newview/llpanelmaininventory.cpp
index 02cd22c3071..dda145bee68 100644
--- a/indra/newview/llpanelmaininventory.cpp
+++ b/indra/newview/llpanelmaininventory.cpp
@@ -76,7 +76,7 @@ void on_file_loaded_for_save(BOOL success,
 /// LLFloaterInventoryFinder
 ///----------------------------------------------------------------------------
 
-class LLFloaterInventoryFinder : public LLFloater
+class LLFloaterInventoryFinder final : public LLFloater
 {
 public:
 	LLFloaterInventoryFinder( LLPanelMainInventory* inventory_view);
diff --git a/indra/newview/llpanelonlinestatus.h b/indra/newview/llpanelonlinestatus.h
index 7dc648f1357..1090105f214 100644
--- a/indra/newview/llpanelonlinestatus.h
+++ b/indra/newview/llpanelonlinestatus.h
@@ -33,7 +33,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/llpanelprofileclassifieds.h b/indra/newview/llpanelprofileclassifieds.h
index f71fcd5d54c..8ddef4d1112 100644
--- a/indra/newview/llpanelprofileclassifieds.h
+++ b/indra/newview/llpanelprofileclassifieds.h
@@ -48,7 +48,7 @@ class LLTextureCtrl;
 class LLUICtrl;
 
 
-class LLPublishClassifiedFloater : public LLFloater
+class LLPublishClassifiedFloater final : public LLFloater
 {
 public:
     LLPublishClassifiedFloater(const LLSD& key);
diff --git a/indra/newview/llpanelteleporthistory.cpp b/indra/newview/llpanelteleporthistory.cpp
index ab6b90501e2..8eaf88ae91f 100644
--- a/indra/newview/llpanelteleporthistory.cpp
+++ b/indra/newview/llpanelteleporthistory.cpp
@@ -104,7 +104,7 @@ class LLTeleportHistoryFlatItem : public LLPanel
 ////////////////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////////////////
 
-class LLTeleportHistoryFlatItemStorage: public LLSingleton<LLTeleportHistoryFlatItemStorage>
+class LLTeleportHistoryFlatItemStorage final : public LLSingleton<LLTeleportHistoryFlatItemStorage>
 {
 	LLSINGLETON_EMPTY_CTOR(LLTeleportHistoryFlatItemStorage);
 protected:
diff --git a/indra/newview/llpaneltiptoast.h b/indra/newview/llpaneltiptoast.h
index cb09f1dca66..3646f070e38 100644
--- a/indra/newview/llpaneltiptoast.h
+++ b/indra/newview/llpaneltiptoast.h
@@ -40,7 +40,7 @@ class LLPanelTipToast : public LLToastPanel
 	LOG_CLASS(LLPanelTipToast);
 public:
 	LLPanelTipToast(const LLNotificationPtr& notification): LLToastPanel(notification) {}
-	virtual BOOL postBuild();
+	BOOL postBuild() final;
 private:
 	void onMessageTextClick();
 	void onPanelClick(S32 x, S32 y, MASK mask);
diff --git a/indra/newview/llpaneltopinfobar.h b/indra/newview/llpaneltopinfobar.h
index 5405548ea8b..d4b0ff0ad18 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/llpanelvolume.h b/indra/newview/llpanelvolume.h
index 66117316cf2..39d876b11f3 100644
--- a/indra/newview/llpanelvolume.h
+++ b/indra/newview/llpanelvolume.h
@@ -41,7 +41,7 @@ class LLViewerObject;
 class LLComboBox;
 class LLColorSwatchCtrl;
 
-class LLPanelVolume : public LLPanel
+class LLPanelVolume final : public LLPanel
 {
 public:
 	LLPanelVolume();
diff --git a/indra/newview/llpanelvolumepulldown.h b/indra/newview/llpanelvolumepulldown.h
index e907bb0c78f..19022047611 100644
--- a/indra/newview/llpanelvolumepulldown.h
+++ b/indra/newview/llpanelvolumepulldown.h
@@ -32,7 +32,7 @@
 
 #include "llpanelpulldown.h"
 
-class LLPanelVolumePulldown : public LLPanelPulldown
+class LLPanelVolumePulldown final : public LLPanelPulldown
 {
  public:
 	LLPanelVolumePulldown();
diff --git a/indra/newview/llpathfindingmanager.h b/indra/newview/llpathfindingmanager.h
index a44cd892da6..2301a0175e7 100644
--- a/indra/newview/llpathfindingmanager.h
+++ b/indra/newview/llpathfindingmanager.h
@@ -46,7 +46,7 @@ class LLViewerRegion;
 
 class LinksetsResponder;
 
-class LLPathfindingManager : public LLSingleton<LLPathfindingManager>
+class LLPathfindingManager final : public LLSingleton<LLPathfindingManager>
 {
 	LLSINGLETON(LLPathfindingManager);
 	virtual ~LLPathfindingManager();
diff --git a/indra/newview/llpathfindingpathtool.h b/indra/newview/llpathfindingpathtool.h
index 88cb3a15f89..22dae88e0d7 100644
--- a/indra/newview/llpathfindingpathtool.h
+++ b/indra/newview/llpathfindingpathtool.h
@@ -34,7 +34,7 @@
 #include "llsingleton.h"
 #include "lltool.h"
 
-class LLPathfindingPathTool : public LLTool, public LLSingleton<LLPathfindingPathTool>
+class LLPathfindingPathTool final : public LLTool, public LLSingleton<LLPathfindingPathTool>
 {
 	LLSINGLETON(LLPathfindingPathTool);
 	virtual ~LLPathfindingPathTool();
diff --git a/indra/newview/llpersistentnotificationstorage.h b/indra/newview/llpersistentnotificationstorage.h
index 1fb44872867..7dabb691a60 100644
--- a/indra/newview/llpersistentnotificationstorage.h
+++ b/indra/newview/llpersistentnotificationstorage.h
@@ -43,7 +43,7 @@ class LLSD;
 // be a) serializable(implement LLNotificationResponderInterface),
 // b) registered with LLResponderRegistry (found in llpersistentnotificationstorage.cpp).
 
-class LLPersistentNotificationStorage : public LLParamSingleton<LLPersistentNotificationStorage>, public LLNotificationStorage
+class LLPersistentNotificationStorage final : public LLParamSingleton<LLPersistentNotificationStorage>, public LLNotificationStorage
 {
 	LLSINGLETON(LLPersistentNotificationStorage);
 	~LLPersistentNotificationStorage();
diff --git a/indra/newview/llpresetsmanager.h b/indra/newview/llpresetsmanager.h
index d5b384ceb95..643d2fb6c57 100644
--- a/indra/newview/llpresetsmanager.h
+++ b/indra/newview/llpresetsmanager.h
@@ -52,7 +52,7 @@ enum EDefaultOptions
 	DEFAULT_HIDE				// Do not display "Default" in a list
 };
 
-class LLPresetsManager : public LLSingleton<LLPresetsManager>
+class LLPresetsManager final : public LLSingleton<LLPresetsManager>
 {
 	LLSINGLETON(LLPresetsManager);
 	~LLPresetsManager();
diff --git a/indra/newview/llpreview.h b/indra/newview/llpreview.h
index b41aa2be1a6..2ee76d590ea 100644
--- a/indra/newview/llpreview.h
+++ b/indra/newview/llpreview.h
@@ -40,7 +40,7 @@ class LLLineEditor;
 class LLRadioGroup;
 class LLPreview;
 
-class LLMultiPreview : public LLMultiFloater
+class LLMultiPreview final : public LLMultiFloater
 {
 public:
 	LLMultiPreview();
diff --git a/indra/newview/llpreviewanim.h b/indra/newview/llpreviewanim.h
index 8eaed6ca1f9..ebe1f81a2fc 100644
--- a/indra/newview/llpreviewanim.h
+++ b/indra/newview/llpreviewanim.h
@@ -30,7 +30,7 @@
 #include "llpreview.h"
 #include "llcharacter.h"
 
-class LLPreviewAnim : public LLPreview
+class LLPreviewAnim final : public LLPreview
 {
 public:
 
diff --git a/indra/newview/llpreviewgesture.h b/indra/newview/llpreviewgesture.h
index 3ba4f562952..82b10d9b4cd 100644
--- a/indra/newview/llpreviewgesture.h
+++ b/indra/newview/llpreviewgesture.h
@@ -41,7 +41,7 @@ class LLButton;
 class LLRadioGroup;
 class LLVFS;
 
-class LLPreviewGesture : public LLPreview
+class LLPreviewGesture final : public LLPreview
 {
 public:
 	// Pass an object_id if this gesture is inside an object in the world,
diff --git a/indra/newview/llpreviewnotecard.h b/indra/newview/llpreviewnotecard.h
index d9c14815c17..12c4980a85f 100644
--- a/indra/newview/llpreviewnotecard.h
+++ b/indra/newview/llpreviewnotecard.h
@@ -41,7 +41,7 @@
 class LLViewerTextEditor;
 class LLButton;
 
-class LLPreviewNotecard : public LLPreview
+class LLPreviewNotecard final : public LLPreview
 {
 public:
 	LLPreviewNotecard(const LLSD& key);
diff --git a/indra/newview/llpreviewscript.cpp b/indra/newview/llpreviewscript.cpp
index 102e9393745..e0aba661060 100644
--- a/indra/newview/llpreviewscript.cpp
+++ b/indra/newview/llpreviewscript.cpp
@@ -150,7 +150,7 @@ bool LLLiveLSLFile::loadFile()
 /// ---------------------------------------------------------------------------
 /// LLFloaterScriptSearch
 /// ---------------------------------------------------------------------------
-class LLFloaterScriptSearch : public LLFloater
+class LLFloaterScriptSearch final : public LLFloater
 {
 public:
 	LLFloaterScriptSearch(LLScriptEdCore* editor_core);
diff --git a/indra/newview/llpreviewscript.h b/indra/newview/llpreviewscript.h
index 74e4c00d43b..1c85587d105 100644
--- a/indra/newview/llpreviewscript.h
+++ b/indra/newview/llpreviewscript.h
@@ -54,7 +54,7 @@ class LLScriptEdContainer;
 class LLFloaterGotoLine;
 class LLFloaterExperienceProfile;
 
-class LLLiveLSLFile : public LLLiveFile
+class LLLiveLSLFile final : public LLLiveFile
 {
 public:
     typedef boost::function<bool(const std::string& filename)> change_callback_t;
@@ -72,7 +72,7 @@ class LLLiveLSLFile : public LLLiveFile
 };
 
 // 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;
@@ -214,7 +214,7 @@ class LLScriptEdContainer : public LLPreview
 };
 
 // Used to view and edit an LSL script from your inventory.
-class LLPreviewLSL : public LLScriptEdContainer
+class LLPreviewLSL final : public LLScriptEdContainer
 {
 public:
 	LLPreviewLSL(const LLSD& key );
@@ -252,7 +252,7 @@ class LLPreviewLSL : public LLScriptEdContainer
 
 
 // Used to view and edit an LSL script that is attached to an object.
-class LLLiveLSLEditor : public LLScriptEdContainer
+class LLLiveLSLEditor final : public LLScriptEdContainer
 {
 	friend class LLLiveLSLFile;
 public: 
diff --git a/indra/newview/llpreviewsound.h b/indra/newview/llpreviewsound.h
index 0453bfd9367..d3e00b83c83 100644
--- a/indra/newview/llpreviewsound.h
+++ b/indra/newview/llpreviewsound.h
@@ -29,7 +29,7 @@
 
 #include "llpreview.h"
 
-class LLPreviewSound : public LLPreview
+class LLPreviewSound final : public LLPreview
 {
 public:
 	LLPreviewSound(const LLSD& key);
diff --git a/indra/newview/llpreviewtexture.h b/indra/newview/llpreviewtexture.h
index e8bba63cb23..b7e68cab499 100644
--- a/indra/newview/llpreviewtexture.h
+++ b/indra/newview/llpreviewtexture.h
@@ -35,7 +35,7 @@
 class LLComboBox;
 class LLImageRaw;
 
-class LLPreviewTexture : public LLPreview
+class LLPreviewTexture final : public LLPreview
 {
 public:
 	LLPreviewTexture(const LLSD& key);
diff --git a/indra/newview/llproductinforequest.h b/indra/newview/llproductinforequest.h
index d1036374e80..b10a15b2310 100644
--- a/indra/newview/llproductinforequest.h
+++ b/indra/newview/llproductinforequest.h
@@ -39,7 +39,7 @@
  * We use description in the UI, but the sku is provided in the various
  * messages; this tool provides translation between the systems.
  */
-class LLProductInfoRequestManager : public LLSingleton<LLProductInfoRequestManager>
+class LLProductInfoRequestManager final : public LLSingleton<LLProductInfoRequestManager>
 {
 	LLSINGLETON(LLProductInfoRequestManager);
 public:
diff --git a/indra/newview/llrecentpeople.h b/indra/newview/llrecentpeople.h
index 18b669ff4fc..0eedb735d9e 100644
--- a/indra/newview/llrecentpeople.h
+++ b/indra/newview/llrecentpeople.h
@@ -48,7 +48,7 @@ class LLDate;
  * 
  *TODO: purge least recently added items? 
  */
-class LLRecentPeople: public LLSingleton<LLRecentPeople>, public LLOldEvents::LLSimpleListener
+class LLRecentPeople final : public LLSingleton<LLRecentPeople>, public LLOldEvents::LLSimpleListener
 {
 	LLSINGLETON_EMPTY_CTOR(LLRecentPeople);
 	LOG_CLASS(LLRecentPeople);
diff --git a/indra/newview/llregioninfomodel.h b/indra/newview/llregioninfomodel.h
index 4bcffedfba6..075ec220ffa 100644
--- a/indra/newview/llregioninfomodel.h
+++ b/indra/newview/llregioninfomodel.h
@@ -34,7 +34,7 @@ class LLMessageSystem;
 /**
  * Contains region info, notifies interested parties of its changes.
  */
-class LLRegionInfoModel : public LLSingleton<LLRegionInfoModel>
+class LLRegionInfoModel final : public LLSingleton<LLRegionInfoModel>
 {
 	LLSINGLETON(LLRegionInfoModel);
 	LOG_CLASS(LLRegionInfoModel);
diff --git a/indra/newview/llremoteparcelrequest.h b/indra/newview/llremoteparcelrequest.h
index 5b0d1891378..e6a940624d9 100644
--- a/indra/newview/llremoteparcelrequest.h
+++ b/indra/newview/llremoteparcelrequest.h
@@ -72,7 +72,7 @@ class LLRemoteParcelInfoObserver
 	LLRootHandle<LLRemoteParcelInfoObserver> mObserverHandle;
 };
 
-class LLRemoteParcelInfoProcessor : public LLSingleton<LLRemoteParcelInfoProcessor>
+class LLRemoteParcelInfoProcessor final : public LLSingleton<LLRemoteParcelInfoProcessor>
 {
 	LLSINGLETON_EMPTY_CTOR(LLRemoteParcelInfoProcessor);
 	virtual ~LLRemoteParcelInfoProcessor() {}
diff --git a/indra/newview/llscenemonitor.h b/indra/newview/llscenemonitor.h
index 7cd531bd346..f325409e71d 100644
--- a/indra/newview/llscenemonitor.h
+++ b/indra/newview/llscenemonitor.h
@@ -37,7 +37,7 @@ class LLCharacter;
 class LLRenderTarget;
 class LLViewerTexture;
 
-class LLSceneMonitor : public LLSingleton<LLSceneMonitor>
+class LLSceneMonitor final : public LLSingleton<LLSceneMonitor>
 {
 	LLSINGLETON(LLSceneMonitor);
 	~LLSceneMonitor();
@@ -107,7 +107,7 @@ class LLSceneMonitor : public LLSingleton<LLSceneMonitor>
 	LLTrace::Recording						mMonitorRecording;
 };
 
-class LLSceneMonitorView : public LLFloater
+class LLSceneMonitorView final : public LLFloater
 {
 public:
 	LLSceneMonitorView(const LLRect& rect);
diff --git a/indra/newview/llsceneview.h b/indra/newview/llsceneview.h
index e077c358b4c..6e3c809f5c9 100644
--- a/indra/newview/llsceneview.h
+++ b/indra/newview/llsceneview.h
@@ -30,7 +30,7 @@
 #include "llfloater.h"
 
 
-class LLSceneView : public LLFloater
+class LLSceneView final : public LLFloater
 {
 public:
 	LLSceneView(const LLRect& rect);
diff --git a/indra/newview/llscriptfloater.h b/indra/newview/llscriptfloater.h
index 3695b8a3e12..4906c2f4932 100644
--- a/indra/newview/llscriptfloater.h
+++ b/indra/newview/llscriptfloater.h
@@ -36,7 +36,7 @@ class LLToastPanel;
  * Handles script notifications ("ScriptDialog" and "ScriptDialogGroup")
  * and manages Script Floaters.
  */
-class LLScriptFloaterManager : public LLSingleton<LLScriptFloaterManager>
+class LLScriptFloaterManager final : public LLSingleton<LLScriptFloaterManager>
 {
 	// *TODO
 	// LLScriptFloaterManager and LLScriptFloater will need some refactoring after we 
diff --git a/indra/newview/llsearchhistory.h b/indra/newview/llsearchhistory.h
index 4ae6122396e..1c881add643 100644
--- a/indra/newview/llsearchhistory.h
+++ b/indra/newview/llsearchhistory.h
@@ -35,7 +35,7 @@
  * Search history container able to save and load history from file.
  * History is stored in chronological order, most recent at the beginning.
  */
-class LLSearchHistory : public LLSingleton<LLSearchHistory>, private LLDestroyClass<LLSearchHistory>
+class LLSearchHistory final : public LLSingleton<LLSearchHistory>, private LLDestroyClass<LLSearchHistory>
 {
 	LLSINGLETON(LLSearchHistory);
 	friend class LLDestroyClass<LLSearchHistory>;
diff --git a/indra/newview/llselectmgr.h b/indra/newview/llselectmgr.h
index 3bed484b588..24ef216a227 100644
--- a/indra/newview/llselectmgr.h
+++ b/indra/newview/llselectmgr.h
@@ -407,7 +407,7 @@ class LLSelectionCallbackData
     LLObjectSelectionHandle					mSelectedObjects;
 };
 
-class LLSelectMgr : public LLEditMenuHandler, public LLSingleton<LLSelectMgr>
+class LLSelectMgr final : public LLEditMenuHandler, public LLSingleton<LLSelectMgr>
 {
 	LLSINGLETON(LLSelectMgr);
 	~LLSelectMgr();
diff --git a/indra/newview/llsettingspicker.h b/indra/newview/llsettingspicker.h
index 859f92fbe8e..fe8eb7e19f9 100644
--- a/indra/newview/llsettingspicker.h
+++ b/indra/newview/llsettingspicker.h
@@ -42,7 +42,7 @@ class LLFilterEditor;
 class LLInventoryPanel;
 
 //=========================================================================
-class LLFloaterSettingsPicker : public LLFloater
+class LLFloaterSettingsPicker final : public LLFloater
 {
 public:
     enum ETrackMode
diff --git a/indra/newview/llsidepanelappearance.h b/indra/newview/llsidepanelappearance.h
index 93f23a29f33..d4b924dd7c6 100644
--- a/indra/newview/llsidepanelappearance.h
+++ b/indra/newview/llsidepanelappearance.h
@@ -39,7 +39,7 @@ class LLPanelEditWearable;
 class LLViewerWearable;
 class LLPanelOutfitsInventory;
 
-class LLSidepanelAppearance : public LLPanel
+class LLSidepanelAppearance final : public LLPanel
 {
 	LOG_CLASS(LLSidepanelAppearance);
 public:
diff --git a/indra/newview/llspeakers.h b/indra/newview/llspeakers.h
index d1dbf72fe9e..97c91e534f7 100644
--- a/indra/newview/llspeakers.h
+++ b/indra/newview/llspeakers.h
@@ -340,7 +340,7 @@ class LLIMSpeakerMgr : public LLSpeakerMgr
 
 };
 
-class LLActiveSpeakerMgr : public LLSpeakerMgr, public LLSingleton<LLActiveSpeakerMgr>
+class LLActiveSpeakerMgr final : public LLSpeakerMgr, public LLSingleton<LLActiveSpeakerMgr>
 {
 	LLSINGLETON(LLActiveSpeakerMgr);
 	LOG_CLASS(LLActiveSpeakerMgr);
@@ -349,7 +349,7 @@ class LLActiveSpeakerMgr : public LLSpeakerMgr, public LLSingleton<LLActiveSpeak
 	virtual void updateSpeakerList();
 };
 
-class LLLocalSpeakerMgr : public LLSpeakerMgr, public LLSingleton<LLLocalSpeakerMgr>
+class LLLocalSpeakerMgr final : public LLSpeakerMgr, public LLSingleton<LLLocalSpeakerMgr>
 {
 	LLSINGLETON(LLLocalSpeakerMgr);
 	~LLLocalSpeakerMgr ();
diff --git a/indra/newview/llspeakingindicatormanager.cpp b/indra/newview/llspeakingindicatormanager.cpp
index 5ca1d4b4a57..04e874e90d8 100644
--- a/indra/newview/llspeakingindicatormanager.cpp
+++ b/indra/newview/llspeakingindicatormanager.cpp
@@ -46,7 +46,7 @@
  *
  * Several indicators can be registered for the same avatar.
  */
-class SpeakingIndicatorManager : public LLSingleton<SpeakingIndicatorManager>, LLVoiceClientParticipantObserver
+class SpeakingIndicatorManager final : public LLSingleton<SpeakingIndicatorManager>, LLVoiceClientParticipantObserver
 {
 	LLSINGLETON(SpeakingIndicatorManager);
 	~SpeakingIndicatorManager();
diff --git a/indra/newview/llstylemap.h b/indra/newview/llstylemap.h
index 96b39205937..619141f3365 100644
--- a/indra/newview/llstylemap.h
+++ b/indra/newview/llstylemap.h
@@ -37,7 +37,7 @@
 
 typedef std::map<LLUUID, LLStyle::Params> style_map_t;
 
-class LLStyleMap : public LLSingleton<LLStyleMap>
+class LLStyleMap final : public LLSingleton<LLStyleMap>
 {
 	LLSINGLETON_EMPTY_CTOR(LLStyleMap);
 public:
diff --git a/indra/newview/llsyntaxid.h b/indra/newview/llsyntaxid.h
index caddba55279..28eb5cf4ce4 100644
--- a/indra/newview/llsyntaxid.h
+++ b/indra/newview/llsyntaxid.h
@@ -36,7 +36,7 @@
 
 class fetchKeywordsFileResponder;
 
-class LLSyntaxIdLSL : public LLSingleton<LLSyntaxIdLSL>
+class LLSyntaxIdLSL final : public LLSingleton<LLSyntaxIdLSL>
 {
 	LLSINGLETON(LLSyntaxIdLSL);
 	friend class fetchKeywordsFileResponder;
diff --git a/indra/newview/llteleporthistory.h b/indra/newview/llteleporthistory.h
index 66875279100..da7fc4dcfc9 100644
--- a/indra/newview/llteleporthistory.h
+++ b/indra/newview/llteleporthistory.h
@@ -71,7 +71,7 @@ class LLTeleportHistoryItem
  * 
  * @see LLNavigationBar
  */
-class LLTeleportHistory: public LLSingleton<LLTeleportHistory>
+class LLTeleportHistory final : public LLSingleton<LLTeleportHistory>
 {
 	LLSINGLETON(LLTeleportHistory);
 	~LLTeleportHistory();
diff --git a/indra/newview/llteleporthistorystorage.h b/indra/newview/llteleporthistorystorage.h
index c646bb7edfd..04179f9d1a9 100644
--- a/indra/newview/llteleporthistorystorage.h
+++ b/indra/newview/llteleporthistorystorage.h
@@ -66,7 +66,7 @@ class LLTeleportHistoryPersistentItem
  * Persistent teleport history.
  *
  */
-class LLTeleportHistoryStorage: public LLSingleton<LLTeleportHistoryStorage>
+class LLTeleportHistoryStorage final : public LLSingleton<LLTeleportHistoryStorage>
 {
 	LLSINGLETON(LLTeleportHistoryStorage);
 	~LLTeleportHistoryStorage();
diff --git a/indra/newview/lltextureatlasmanager.h b/indra/newview/lltextureatlasmanager.h
index 1b8df708c62..772216676cd 100644
--- a/indra/newview/lltextureatlasmanager.h
+++ b/indra/newview/lltextureatlasmanager.h
@@ -83,7 +83,7 @@ class LLTextureAtlasSlot : public LLRefCount
 	U32             mUpdatedTime ;	
 } ;
 
-class LLTextureAtlasManager : public LLSingleton<LLTextureAtlasManager>
+class LLTextureAtlasManager final : public LLSingleton<LLTextureAtlasManager>
 {
 	LLSINGLETON(LLTextureAtlasManager);
 	~LLTextureAtlasManager();
diff --git a/indra/newview/lltexturectrl.h b/indra/newview/lltexturectrl.h
index 3e5d2c25778..a36662e65f4 100644
--- a/indra/newview/lltexturectrl.h
+++ b/indra/newview/lltexturectrl.h
@@ -252,7 +252,7 @@ typedef boost::function<void()> floater_close_callback;
 typedef boost::function<void(const LLUUID& asset_id)> set_image_asset_id_callback;
 typedef boost::function<void(LLPointer<LLViewerTexture> texture)> set_on_update_image_stats_callback;
 
-class LLFloaterTexturePicker : public LLFloater
+class LLFloaterTexturePicker final : public LLFloater
 {
 public:
 	LLFloaterTexturePicker(
diff --git a/indra/newview/lltoastgroupnotifypanel.h b/indra/newview/lltoastgroupnotifypanel.h
index 269c23798c3..a4c6f0b42fd 100644
--- a/indra/newview/lltoastgroupnotifypanel.h
+++ b/indra/newview/lltoastgroupnotifypanel.h
@@ -40,7 +40,7 @@ class LLButton;
  *
  * Replaces class LLGroupNotifyBox.
  */
-class LLToastGroupNotifyPanel
+class LLToastGroupNotifyPanel final
 :	public LLToastPanel
 {
 public:
diff --git a/indra/newview/lltoastimpanel.h b/indra/newview/lltoastimpanel.h
index 767617dabca..e63956c6864 100644
--- a/indra/newview/lltoastimpanel.h
+++ b/indra/newview/lltoastimpanel.h
@@ -35,7 +35,7 @@
 
 class LLGroupIconCtrl;
 
-class LLToastIMPanel: public LLToastPanel 
+class LLToastIMPanel final : public LLToastPanel
 {
 public:
 	struct Params
diff --git a/indra/newview/lltoastnotifypanel.h b/indra/newview/lltoastnotifypanel.h
index a5a637c6fac..8bc047c4235 100644
--- a/indra/newview/lltoastnotifypanel.h
+++ b/indra/newview/lltoastnotifypanel.h
@@ -137,7 +137,7 @@ class LLToastNotifyPanel: public LLCheckBoxToastPanel, public LLInstanceTracker<
 	static const LLFontGL* sFontSmall;
 };
 
-class LLIMToastNotifyPanel : public LLToastNotifyPanel
+class LLIMToastNotifyPanel final : public LLToastNotifyPanel
 {
 public:
 
diff --git a/indra/newview/lltoastscriptquestion.h b/indra/newview/lltoastscriptquestion.h
index a756f88415e..41634be9fa3 100644
--- a/indra/newview/lltoastscriptquestion.h
+++ b/indra/newview/lltoastscriptquestion.h
@@ -30,7 +30,7 @@
 #ifndef LLTOASTSCRIPTQUESTION_H_
 #define LLTOASTSCRIPTQUESTION_H_
 
-class LLToastScriptQuestion : public LLToastPanel
+class LLToastScriptQuestion final : public LLToastPanel
 {
 	LOG_CLASS(LLToastScriptQuestion);
 
diff --git a/indra/newview/lltoastscripttextbox.h b/indra/newview/lltoastscripttextbox.h
index a539124ef17..7df5c17b985 100644
--- a/indra/newview/lltoastscripttextbox.h
+++ b/indra/newview/lltoastscripttextbox.h
@@ -33,7 +33,7 @@
 /**
  * Toast panel for scripted llTextbox notifications.
  */
-class LLToastScriptTextbox
+class LLToastScriptTextbox final
 :	public LLToastPanel
 {
 public:
diff --git a/indra/newview/lltoolbrush.h b/indra/newview/lltoolbrush.h
index c108d832568..9c55a269777 100644
--- a/indra/newview/lltoolbrush.h
+++ b/indra/newview/lltoolbrush.h
@@ -41,7 +41,7 @@ class LLViewerRegion;
 // A toolbrush that modifies the land.
 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-class LLToolBrushLand : public LLTool, public LLEditMenuHandler, public LLSingleton<LLToolBrushLand>
+class LLToolBrushLand final : public LLTool, public LLEditMenuHandler, public LLSingleton<LLToolBrushLand>
 {
 	LLSINGLETON(LLToolBrushLand);
 	typedef std::set<LLViewerRegion*> region_list_t;
diff --git a/indra/newview/lltoolcomp.h b/indra/newview/lltoolcomp.h
index 86506f725ef..f0aa9ac76c2 100644
--- a/indra/newview/lltoolcomp.h
+++ b/indra/newview/lltoolcomp.h
@@ -101,7 +101,7 @@ class LLToolComposite : public LLTool
 //-----------------------------------------------------------------------
 // LLToolCompTranslate
 
-class LLToolCompInspect : public LLToolComposite, public LLSingleton<LLToolCompInspect>
+class LLToolCompInspect final : public LLToolComposite, public LLSingleton<LLToolCompInspect>
 {
 	LLSINGLETON(LLToolCompInspect);
 	virtual ~LLToolCompInspect();
@@ -126,7 +126,7 @@ class LLToolCompInspect : public LLToolComposite, public LLSingleton<LLToolCompI
 //-----------------------------------------------------------------------
 // LLToolCompTranslate
 
-class LLToolCompTranslate : public LLToolComposite, public LLSingleton<LLToolCompTranslate>
+class LLToolCompTranslate final : public LLToolComposite, public LLSingleton<LLToolCompTranslate>
 {
 	LLSINGLETON(LLToolCompTranslate);
 	virtual ~LLToolCompTranslate();
@@ -147,7 +147,7 @@ class LLToolCompTranslate : public LLToolComposite, public LLSingleton<LLToolCom
 //-----------------------------------------------------------------------
 // LLToolCompScale
 
-class LLToolCompScale : public LLToolComposite, public LLSingleton<LLToolCompScale>
+class LLToolCompScale final : public LLToolComposite, public LLSingleton<LLToolCompScale>
 {
 	LLSINGLETON(LLToolCompScale);
 	virtual ~LLToolCompScale();
@@ -169,7 +169,7 @@ class LLToolCompScale : public LLToolComposite, public LLSingleton<LLToolCompSca
 //-----------------------------------------------------------------------
 // LLToolCompRotate
 
-class LLToolCompRotate : public LLToolComposite, public LLSingleton<LLToolCompRotate>
+class LLToolCompRotate final : public LLToolComposite, public LLSingleton<LLToolCompRotate>
 {
 	LLSINGLETON(LLToolCompRotate);
 	virtual ~LLToolCompRotate();
@@ -192,7 +192,7 @@ class LLToolCompRotate : public LLToolComposite, public LLSingleton<LLToolCompRo
 //-----------------------------------------------------------------------
 // LLToolCompCreate
 
-class LLToolCompCreate : public LLToolComposite, public LLSingleton<LLToolCompCreate>
+class LLToolCompCreate final : public LLToolComposite, public LLSingleton<LLToolCompCreate>
 {
 	LLSINGLETON(LLToolCompCreate);
 	virtual ~LLToolCompCreate();
@@ -217,7 +217,7 @@ class LLToolGun;
 class LLToolGrabBase;
 class LLToolSelect;
 
-class LLToolCompGun : public LLToolComposite, public LLSingleton<LLToolCompGun>
+class LLToolCompGun final : public LLToolComposite, public LLSingleton<LLToolCompGun>
 {
 	LLSINGLETON(LLToolCompGun);
 	virtual ~LLToolCompGun();
diff --git a/indra/newview/lltooldraganddrop.h b/indra/newview/lltooldraganddrop.h
index 24a712029c9..d3fdb6d3c0e 100644
--- a/indra/newview/lltooldraganddrop.h
+++ b/indra/newview/lltooldraganddrop.h
@@ -41,7 +41,7 @@ class LLViewerRegion;
 class LLVOAvatar;
 class LLPickInfo;
 
-class LLToolDragAndDrop : public LLTool, public LLSingleton<LLToolDragAndDrop>
+class LLToolDragAndDrop final : public LLTool, public LLSingleton<LLToolDragAndDrop>
 {
 	LLSINGLETON(LLToolDragAndDrop);
 public:
@@ -279,7 +279,7 @@ class LLToolDragAndDrop : public LLTool, public LLSingleton<LLToolDragAndDrop>
 						 dragOrDrop3dImpl f_land);
 		dragOrDrop3dImpl mFunctions[DT_COUNT];
 	};	
-	class LLDragAndDropDictionary : public LLSingleton<LLDragAndDropDictionary>,
+	class LLDragAndDropDictionary final : public LLSingleton<LLDragAndDropDictionary>,
 									public LLDictionary<EDragAndDropType, DragAndDropEntry>
 	{
 		LLSINGLETON(LLDragAndDropDictionary);
diff --git a/indra/newview/lltoolface.h b/indra/newview/lltoolface.h
index e4b8ae12b87..0e13c5296c1 100644
--- a/indra/newview/lltoolface.h
+++ b/indra/newview/lltoolface.h
@@ -32,7 +32,7 @@
 class LLViewerObject;
 class LLPickInfo;
 
-class LLToolFace
+class LLToolFace final
 :	public LLTool, public LLSingleton<LLToolFace>
 {
 	LLSINGLETON(LLToolFace);
diff --git a/indra/newview/lltoolfocus.h b/indra/newview/lltoolfocus.h
index cfc235b6c2a..20c48425a66 100644
--- a/indra/newview/lltoolfocus.h
+++ b/indra/newview/lltoolfocus.h
@@ -31,7 +31,7 @@
 
 class LLPickInfo;
 
-class LLToolCamera
+class LLToolCamera final
 :	public LLTool, public LLSingleton<LLToolCamera>
 {
 	LLSINGLETON(LLToolCamera);
diff --git a/indra/newview/lltoolgrab.h b/indra/newview/lltoolgrab.h
index 02ed5c26d75..b1c292ed85e 100644
--- a/indra/newview/lltoolgrab.h
+++ b/indra/newview/lltoolgrab.h
@@ -146,7 +146,7 @@ class LLToolGrabBase : public LLTool
 };
 
 /// This is the LLSingleton instance of LLToolGrab.
-class LLToolGrab : public LLToolGrabBase, public LLSingleton<LLToolGrab>
+class LLToolGrab final : public LLToolGrabBase, public LLSingleton<LLToolGrab>
 {
 	LLSINGLETON_EMPTY_CTOR(LLToolGrab);
 };
diff --git a/indra/newview/lltoolindividual.h b/indra/newview/lltoolindividual.h
index e7c2060fba0..a28e6d02f4c 100644
--- a/indra/newview/lltoolindividual.h
+++ b/indra/newview/lltoolindividual.h
@@ -37,7 +37,7 @@ class LLPickInfo;
 // A tool to select individual objects rather than linked sets.
 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-class LLToolIndividual : public LLTool, public LLSingleton<LLToolIndividual>
+class LLToolIndividual final : public LLTool, public LLSingleton<LLToolIndividual>
 {
 	LLSINGLETON(LLToolIndividual);
 	virtual ~LLToolIndividual();
diff --git a/indra/newview/lltoolmgr.h b/indra/newview/lltoolmgr.h
index d5ec645949c..17bf2978d2a 100644
--- a/indra/newview/lltoolmgr.h
+++ b/indra/newview/lltoolmgr.h
@@ -40,7 +40,7 @@ const MASK MASK_ORBIT			= MASK_CONTROL;
 const MASK MASK_PAN				= MASK_CONTROL | MASK_SHIFT;
 const MASK MASK_COPY			= MASK_SHIFT;
 
-class LLToolMgr : public LLSingleton<LLToolMgr>
+class LLToolMgr final : public LLSingleton<LLToolMgr>
 {
 	LLSINGLETON(LLToolMgr);
 	~LLToolMgr();
diff --git a/indra/newview/lltoolobjpicker.h b/indra/newview/lltoolobjpicker.h
index 5ad9b67e217..1680ee53b9b 100644
--- a/indra/newview/lltoolobjpicker.h
+++ b/indra/newview/lltoolobjpicker.h
@@ -33,7 +33,7 @@
 
 class LLPickInfo;
 
-class LLToolObjPicker : public LLTool, public LLSingleton<LLToolObjPicker>
+class LLToolObjPicker final : public LLTool, public LLSingleton<LLToolObjPicker>
 {
 	LLSINGLETON(LLToolObjPicker);
 public:
diff --git a/indra/newview/lltoolpie.h b/indra/newview/lltoolpie.h
index 8b776904a2a..2ac6b352180 100644
--- a/indra/newview/lltoolpie.h
+++ b/indra/newview/lltoolpie.h
@@ -35,7 +35,7 @@
 class LLViewerObject;
 class LLObjectSelection;
 
-class LLToolPie : public LLTool, public LLSingleton<LLToolPie>
+class LLToolPie final : public LLTool, public LLSingleton<LLToolPie>
 {
 	LLSINGLETON(LLToolPie);
 	LOG_CLASS(LLToolPie);
diff --git a/indra/newview/lltoolpipette.h b/indra/newview/lltoolpipette.h
index 7575d8ad184..85c388ca80b 100644
--- a/indra/newview/lltoolpipette.h
+++ b/indra/newview/lltoolpipette.h
@@ -40,7 +40,7 @@
 class LLViewerObject;
 class LLPickInfo;
 
-class LLToolPipette
+class LLToolPipette final
 :	public LLTool, public LLSingleton<LLToolPipette>
 {
 	LLSINGLETON(LLToolPipette);
diff --git a/indra/newview/lltoolselectland.h b/indra/newview/lltoolselectland.h
index b5ba72f16d5..3306b07da5c 100644
--- a/indra/newview/lltoolselectland.h
+++ b/indra/newview/lltoolselectland.h
@@ -32,7 +32,7 @@
 
 class LLParcelSelection;
 
-class LLToolSelectLand
+class LLToolSelectLand final
 :	public LLTool, public LLSingleton<LLToolSelectLand>
 {
 	LLSINGLETON(LLToolSelectLand);
diff --git a/indra/newview/lltrackpicker.h b/indra/newview/lltrackpicker.h
index dab3b72915b..061e688b832 100644
--- a/indra/newview/lltrackpicker.h
+++ b/indra/newview/lltrackpicker.h
@@ -33,7 +33,7 @@
 
 //=========================================================================
 
-class LLFloaterTrackPicker : public LLFloater
+class LLFloaterTrackPicker final : public LLFloater
 {
 public:
     LLFloaterTrackPicker(LLView * owner, const LLSD &params = LLSD());
diff --git a/indra/newview/lltransientfloatermgr.h b/indra/newview/lltransientfloatermgr.h
index d126543f153..bd3a4a64775 100644
--- a/indra/newview/lltransientfloatermgr.h
+++ b/indra/newview/lltransientfloatermgr.h
@@ -36,7 +36,7 @@ class LLTransientFloater;
 /**
  * Provides functionality to hide transient floaters.
  */
-class LLTransientFloaterMgr: public LLSingleton<LLTransientFloaterMgr>
+class LLTransientFloaterMgr final : public LLSingleton<LLTransientFloaterMgr>
 {
 	LLSINGLETON(LLTransientFloaterMgr);
 
diff --git a/indra/newview/llurlwhitelist.h b/indra/newview/llurlwhitelist.h
index c2511b08fd8..d885d3c16b5 100644
--- a/indra/newview/llurlwhitelist.h
+++ b/indra/newview/llurlwhitelist.h
@@ -30,7 +30,7 @@
 
 #include <list>
 
-class LLUrlWhiteList : public LLSingleton<LLUrlWhiteList>
+class LLUrlWhiteList final : public LLSingleton<LLUrlWhiteList>
 {
 	LLSINGLETON(LLUrlWhiteList);
 	~LLUrlWhiteList();
diff --git a/indra/newview/llversioninfo.h b/indra/newview/llversioninfo.h
index 02ff0c094aa..b543ba7d146 100644
--- a/indra/newview/llversioninfo.h
+++ b/indra/newview/llversioninfo.h
@@ -44,7 +44,7 @@ class LLStoreListener;
 /// viewer code that wants to query the current version should 
 /// use this API.
 ///
-class LLVersionInfo: public LLSingleton<LLVersionInfo>
+class LLVersionInfo final : public LLSingleton<LLVersionInfo>
 {
 	LLSINGLETON(LLVersionInfo);
 	void initSingleton();
diff --git a/indra/newview/llviewerassettype.cpp b/indra/newview/llviewerassettype.cpp
index 4804ef6ddcb..75eed356d34 100644
--- a/indra/newview/llviewerassettype.cpp
+++ b/indra/newview/llviewerassettype.cpp
@@ -45,7 +45,7 @@ struct ViewerAssetEntry : public LLDictionaryEntry
 	EDragAndDropType mDadType;
 };
 
-class LLViewerAssetDictionary : public LLSingleton<LLViewerAssetDictionary>,
+class LLViewerAssetDictionary final : public LLSingleton<LLViewerAssetDictionary>,
 						  public LLDictionary<LLViewerAssetType::EType, ViewerAssetEntry>
 {
 	LLSINGLETON(LLViewerAssetDictionary);
diff --git a/indra/newview/llviewerfoldertype.cpp b/indra/newview/llviewerfoldertype.cpp
index 0efae1e38a4..dc95bf25c67 100644
--- a/indra/newview/llviewerfoldertype.cpp
+++ b/indra/newview/llviewerfoldertype.cpp
@@ -100,7 +100,7 @@ struct ViewerFolderEntry : public LLDictionaryEntry
 	bool mHideIfEmpty;
 };
 
-class LLViewerFolderDictionary : public LLSingleton<LLViewerFolderDictionary>,
+class LLViewerFolderDictionary final : public LLSingleton<LLViewerFolderDictionary>,
 								 public LLDictionary<LLFolderType::EType, ViewerFolderEntry>
 {
 	LLSINGLETON(LLViewerFolderDictionary);
diff --git a/indra/newview/llviewerhelp.h b/indra/newview/llviewerhelp.h
index da50e07a436..252dfedfb37 100644
--- a/indra/newview/llviewerhelp.h
+++ b/indra/newview/llviewerhelp.h
@@ -37,7 +37,7 @@
 
 class LLUICtrl;
 
-class LLViewerHelp : public LLHelp, public LLSingleton<LLViewerHelp>
+class LLViewerHelp final : public LLHelp, public LLSingleton<LLViewerHelp>
 {
 	LLSINGLETON_EMPTY_CTOR(LLViewerHelp);
 
diff --git a/indra/newview/llviewerinventory.cpp b/indra/newview/llviewerinventory.cpp
index cd2409dadbf..47cae6f6136 100644
--- a/indra/newview/llviewerinventory.cpp
+++ b/indra/newview/llviewerinventory.cpp
@@ -97,7 +97,7 @@ void doInventoryCb(LLPointer<LLInventoryCallback> cb, LLUUID id)
 ///----------------------------------------------------------------------------
 /// Helper class to store special inventory item names and their localized values.
 ///----------------------------------------------------------------------------
-class LLLocalizedInventoryItemsDictionary : public LLSingleton<LLLocalizedInventoryItemsDictionary>
+class LLLocalizedInventoryItemsDictionary final : public LLSingleton<LLLocalizedInventoryItemsDictionary>
 {
 	LLSINGLETON(LLLocalizedInventoryItemsDictionary);
 public:
diff --git a/indra/newview/llviewerjoystick.h b/indra/newview/llviewerjoystick.h
index 016b435ee84..7bf2ec83fc0 100644
--- a/indra/newview/llviewerjoystick.h
+++ b/indra/newview/llviewerjoystick.h
@@ -43,7 +43,7 @@ typedef enum e_joystick_driver_state
 	JDS_INITIALIZING
 } EJoystickDriverState;
 
-class LLViewerJoystick : public LLSingleton<LLViewerJoystick>
+class LLViewerJoystick final : public LLSingleton<LLViewerJoystick>
 {
 	LLSINGLETON(LLViewerJoystick);
 	virtual ~LLViewerJoystick();
diff --git a/indra/newview/llviewerkeyboard.cpp b/indra/newview/llviewerkeyboard.cpp
index 2d0cea41944..afbabe4c7c0 100644
--- a/indra/newview/llviewerkeyboard.cpp
+++ b/indra/newview/llviewerkeyboard.cpp
@@ -54,7 +54,7 @@ const F32 NUDGE_TIME = 0.25f;  // in seconds
 const S32 NUDGE_FRAMES = 2;
 const F32 ORBIT_NUDGE_RATE = 0.05f;  // fraction of normal speed
 
-struct LLKeyboardActionRegistry 
+struct LLKeyboardActionRegistry final
 :	public LLRegistrySingleton<std::string, boost::function<void (EKeystate keystate)>, LLKeyboardActionRegistry>
 {
 	LLSINGLETON_EMPTY_CTOR(LLKeyboardActionRegistry);
diff --git a/indra/newview/llviewermedia.h b/indra/newview/llviewermedia.h
index 512c5a82799..6729c046666 100644
--- a/indra/newview/llviewermedia.h
+++ b/indra/newview/llviewermedia.h
@@ -70,7 +70,7 @@ class LLViewerMediaEventEmitter
 
 class LLViewerMediaImpl;
 
-class LLViewerMedia: public LLSingleton<LLViewerMedia>
+class LLViewerMedia final : public LLSingleton<LLViewerMedia>
 {
 	LLSINGLETON(LLViewerMedia);
 	~LLViewerMedia();
diff --git a/indra/newview/llviewermediafocus.h b/indra/newview/llviewermediafocus.h
index fa469c36e3a..25f6e153be0 100644
--- a/indra/newview/llviewermediafocus.h
+++ b/indra/newview/llviewermediafocus.h
@@ -37,7 +37,7 @@
 class LLViewerMediaImpl;
 class LLPanelPrimMediaControls;
 
-class LLViewerMediaFocus : 
+class LLViewerMediaFocus final :
 	public LLFocusableElement, 
 	public LLSingleton<LLViewerMediaFocus>
 {
diff --git a/indra/newview/llviewernetwork.h b/indra/newview/llviewernetwork.h
index 4c87720374d..f680550ea3f 100644
--- a/indra/newview/llviewernetwork.h
+++ b/indra/newview/llviewernetwork.h
@@ -56,7 +56,7 @@ class LLInvalidGridName
  * This class maintains the currently selected grid, and provides short
  * form accessors for each of the properties of the selected grid.
  **/
-class LLGridManager : public LLSingleton<LLGridManager>
+class LLGridManager final : public LLSingleton<LLGridManager>
 {
 	/// Instantiate the grid manager, load default grids, selects the default grid
 	LLSINGLETON(LLGridManager);
diff --git a/indra/newview/llviewerparcelaskplay.h b/indra/newview/llviewerparcelaskplay.h
index dc711917d29..24457d2ef1a 100644
--- a/indra/newview/llviewerparcelaskplay.h
+++ b/indra/newview/llviewerparcelaskplay.h
@@ -30,7 +30,7 @@
 #include "llnotificationptr.h"
 #include "lluuid.h"
 
-class LLViewerParcelAskPlay : public LLSingleton<LLViewerParcelAskPlay>
+class LLViewerParcelAskPlay final : public LLSingleton<LLViewerParcelAskPlay>
 {
     LLSINGLETON(LLViewerParcelAskPlay);
     ~LLViewerParcelAskPlay();
diff --git a/indra/newview/llviewerparcelmedia.h b/indra/newview/llviewerparcelmedia.h
index 779a65bdf83..d7966665301 100644
--- a/indra/newview/llviewerparcelmedia.h
+++ b/indra/newview/llviewerparcelmedia.h
@@ -37,7 +37,7 @@ class LLViewerParcelMediaNavigationObserver;
 // This class understands land parcels, network traffic, LSL media
 // transport commands, and talks to the LLViewerMedia class to actually
 // do playback.  It allows us to remove code from LLViewerParcelMgr.
-class LLViewerParcelMedia : public LLViewerMediaObserver, public LLSingleton<LLViewerParcelMedia>
+class LLViewerParcelMedia final : public LLViewerMediaObserver, public LLSingleton<LLViewerParcelMedia>
 {
 	LLSINGLETON(LLViewerParcelMedia);
 	~LLViewerParcelMedia();
diff --git a/indra/newview/llviewerparcelmediaautoplay.h b/indra/newview/llviewerparcelmediaautoplay.h
index cf8e9a97e76..545dc1e3d52 100644
--- a/indra/newview/llviewerparcelmediaautoplay.h
+++ b/indra/newview/llviewerparcelmediaautoplay.h
@@ -31,7 +31,7 @@
 #include "lluuid.h"
 
 // timer to automatically play media
-class LLViewerParcelMediaAutoPlay : LLEventTimer, public LLSingleton<LLViewerParcelMediaAutoPlay>
+class LLViewerParcelMediaAutoPlay final : LLEventTimer, public LLSingleton<LLViewerParcelMediaAutoPlay>
 {
 	LLSINGLETON(LLViewerParcelMediaAutoPlay);
 public:
diff --git a/indra/newview/llviewerstats.h b/indra/newview/llviewerstats.h
index ad732b55f96..32e18bf25d7 100644
--- a/indra/newview/llviewerstats.h
+++ b/indra/newview/llviewerstats.h
@@ -244,7 +244,7 @@ extern LLTrace::EventStatHandle<LLUnit<F32, LLUnits::Percent> > OBJECT_CACHE_HIT
 
 }
 
-class LLViewerStats : public LLSingleton<LLViewerStats>
+class LLViewerStats final : public LLSingleton<LLViewerStats>
 {
 	LLSINGLETON(LLViewerStats);
 	~LLViewerStats();
diff --git a/indra/newview/llviewerstatsrecorder.h b/indra/newview/llviewerstatsrecorder.h
index c974bea49de..9764b50ec9d 100644
--- a/indra/newview/llviewerstatsrecorder.h
+++ b/indra/newview/llviewerstatsrecorder.h
@@ -42,7 +42,7 @@
 class LLMutex;
 class LLViewerObject;
 
-class LLViewerStatsRecorder : public LLSingleton<LLViewerStatsRecorder>
+class LLViewerStatsRecorder final : public LLSingleton<LLViewerStatsRecorder>
 {
 	LLSINGLETON(LLViewerStatsRecorder);
 	LOG_CLASS(LLViewerStatsRecorder);
diff --git a/indra/newview/llviewertexturelist.h b/indra/newview/llviewertexturelist.h
index 281d23c671c..7a6a85f580a 100644
--- a/indra/newview/llviewertexturelist.h
+++ b/indra/newview/llviewertexturelist.h
@@ -232,7 +232,7 @@ class LLViewerTextureList
     LOG_CLASS(LLViewerTextureList);
 };
 
-class LLUIImageList : public LLImageProviderInterface, public LLSingleton<LLUIImageList>
+class LLUIImageList final : public LLImageProviderInterface, public LLSingleton<LLUIImageList>
 {
 	LLSINGLETON_EMPTY_CTOR(LLUIImageList);
 public:
diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp
index 2f80a133d09..1a12d1c55d4 100644
--- a/indra/newview/llviewerwindow.cpp
+++ b/indra/newview/llviewerwindow.cpp
@@ -296,7 +296,7 @@ class RecordToChatConsoleRecorder : public LLError::Recorder
 	}
 };
 
-class RecordToChatConsole : public LLSingleton<RecordToChatConsole>
+class RecordToChatConsole final : public LLSingleton<RecordToChatConsole>
 {
 	LLSINGLETON(RecordToChatConsole);
 public:
@@ -1981,7 +1981,7 @@ void LLViewerWindow::initGLDefaults()
 	gBox.prerender();
 }
 
-struct MainPanel : public LLPanel
+struct MainPanel final : public LLPanel
 {
 };
 
diff --git a/indra/newview/llvlcomposition.h b/indra/newview/llvlcomposition.h
index 2dd04ac5a5c..75c15e7a62c 100644
--- a/indra/newview/llvlcomposition.h
+++ b/indra/newview/llvlcomposition.h
@@ -32,7 +32,7 @@
 
 class LLSurface;
 
-class LLVLComposition : public LLViewerLayer
+class LLVLComposition final : public LLViewerLayer
 {
 public:
 	LLVLComposition(LLSurface *surfacep, const U32 width, const F32 scale);
diff --git a/indra/newview/llvocache.cpp b/indra/newview/llvocache.cpp
index 07660ca6ac1..23bf2a6376b 100644
--- a/indra/newview/llvocache.cpp
+++ b/indra/newview/llvocache.cpp
@@ -677,7 +677,7 @@ void LLVOCachePartition::removeEntry(LLViewerOctreeEntry* entry)
 	llassert(!entry->getGroup());
 }
 	
-class LLVOCacheOctreeCull : public LLViewerOctreeCull
+class LLVOCacheOctreeCull final : public LLViewerOctreeCull
 {
 public:
 	LLVOCacheOctreeCull(LLCamera* camera, LLViewerRegion* regionp, 
@@ -798,7 +798,7 @@ class LLVOCacheOctreeCull : public LLViewerOctreeCull
 };
 
 //select objects behind camera
-class LLVOCacheOctreeBackCull : public LLViewerOctreeCull
+class LLVOCacheOctreeBackCull final : public LLViewerOctreeCull
 {
 public:
 	LLVOCacheOctreeBackCull(LLCamera* camera, const LLVector3& shift, LLViewerRegion* regionp, F32 pixel_threshold, bool use_occlusion) 
diff --git a/indra/newview/llvoicechannel.h b/indra/newview/llvoicechannel.h
index 309c3eebddf..d7928c262a4 100644
--- a/indra/newview/llvoicechannel.h
+++ b/indra/newview/llvoicechannel.h
@@ -165,7 +165,7 @@ class LLVoiceChannelGroup : public LLVoiceChannel
 	BOOL mIsRetrying;
 };
 
-class LLVoiceChannelProximal : public LLVoiceChannel, public LLSingleton<LLVoiceChannelProximal>
+class LLVoiceChannelProximal final : public LLVoiceChannel, public LLSingleton<LLVoiceChannelProximal>
 {
 	LLSINGLETON(LLVoiceChannelProximal);
 public:
@@ -179,7 +179,7 @@ class LLVoiceChannelProximal : public LLVoiceChannel, public LLSingleton<LLVoice
 
 };
 
-class LLVoiceChannelP2P : public LLVoiceChannelGroup
+class LLVoiceChannelP2P final : public LLVoiceChannelGroup
 {
 public:
 	LLVoiceChannelP2P(const LLUUID& session_id, const std::string& session_name, const LLUUID& other_user_id);
diff --git a/indra/newview/llvoiceclient.cpp b/indra/newview/llvoiceclient.cpp
index cc590fc947c..2cfa45584a4 100644
--- a/indra/newview/llvoiceclient.cpp
+++ b/indra/newview/llvoiceclient.cpp
@@ -46,7 +46,7 @@ const F32 LLVoiceClient::VOLUME_MAX = 1.0f;
 
 
 // Support for secondlife:///app/voice SLapps
-class LLVoiceHandler : public LLCommandHandler
+class LLVoiceHandler final : public LLCommandHandler
 {
 public:
 	// requests will be throttled from a non-trusted browser
@@ -892,7 +892,7 @@ LLVoiceEffectInterface* LLVoiceClient::getVoiceEffectInterface() const
 ///////////////////
 // version checking
 
-class LLViewerRequiredVoiceVersion : public LLHTTPNode
+class LLViewerRequiredVoiceVersion final : public LLHTTPNode
 {
 	static BOOL sAlertedUser;
 	virtual void post(
@@ -923,7 +923,7 @@ class LLViewerRequiredVoiceVersion : public LLHTTPNode
 	}
 };
 
-class LLViewerParcelVoiceInfo : public LLHTTPNode
+class LLViewerParcelVoiceInfo final : public LLHTTPNode
 {
 	virtual void post(
 					  LLHTTPNode::ResponsePtr response,
diff --git a/indra/newview/llvoiceclient.h b/indra/newview/llvoiceclient.h
index 3d04e1f0dbe..4e4cb381e3d 100644
--- a/indra/newview/llvoiceclient.h
+++ b/indra/newview/llvoiceclient.h
@@ -310,7 +310,7 @@ class LLVoiceEffectInterface
 };
 
 
-class LLVoiceClient: public LLParamSingleton<LLVoiceClient>
+class LLVoiceClient final : public LLParamSingleton<LLVoiceClient>
 {
 	LLSINGLETON(LLVoiceClient, LLPumpIO *pump);
 	LOG_CLASS(LLVoiceClient);
@@ -497,7 +497,7 @@ class LLVoiceClient: public LLParamSingleton<LLVoiceClient>
 /**
  * Speaker volume storage helper class
  **/
-class LLSpeakerVolumeStorage : public LLSingleton<LLSpeakerVolumeStorage>
+class LLSpeakerVolumeStorage final : public LLSingleton<LLSpeakerVolumeStorage>
 {
 	LLSINGLETON(LLSpeakerVolumeStorage);
 	~LLSpeakerVolumeStorage();
diff --git a/indra/newview/llvoicevivox.h b/indra/newview/llvoicevivox.h
index 6399e4132b6..bc2719dbd74 100644
--- a/indra/newview/llvoicevivox.h
+++ b/indra/newview/llvoicevivox.h
@@ -52,7 +52,7 @@ class LLAvatarName;
 class LLVivoxVoiceClientMuteListObserver;
 
 
-class LLVivoxVoiceClient :	public LLSingleton<LLVivoxVoiceClient>,
+class LLVivoxVoiceClient final : public LLSingleton<LLVivoxVoiceClient>,
 							virtual public LLVoiceModuleInterface,
 							virtual public LLVoiceEffectInterface
 {
@@ -1026,7 +1026,7 @@ class LLVivoxProtocolParser : public LLIOPipe
 
 };
 
-class LLVivoxSecurity :	public LLSingleton<LLVivoxSecurity>
+class LLVivoxSecurity final : public LLSingleton<LLVivoxSecurity>
 {
     LLSINGLETON(LLVivoxSecurity);
     virtual ~LLVivoxSecurity();
@@ -1040,7 +1040,7 @@ class LLVivoxSecurity :	public LLSingleton<LLVivoxSecurity>
     std::string     mAccountHandle;
 };
 
-class LLVoiceVivoxStats : public LLSingleton<LLVoiceVivoxStats>
+class LLVoiceVivoxStats final : public LLSingleton<LLVoiceVivoxStats>
 {
     LLSINGLETON(LLVoiceVivoxStats);
     LOG_CLASS(LLVoiceVivoxStats);
diff --git a/indra/newview/llvosurfacepatch.cpp b/indra/newview/llvosurfacepatch.cpp
index 897bace4e1c..c8db7dc42c4 100644
--- a/indra/newview/llvosurfacepatch.cpp
+++ b/indra/newview/llvosurfacepatch.cpp
@@ -47,7 +47,7 @@ F32 LLVOSurfacePatch::sLODFactor = 1.f;
 
 //============================================================================
 
-class LLVertexBufferTerrain : public LLVertexBuffer
+class LLVertexBufferTerrain final : public LLVertexBuffer
 {
 public:
 	LLVertexBufferTerrain() :
diff --git a/indra/newview/llwatchdog.cpp b/indra/newview/llwatchdog.cpp
index 6273f10c697..edb8b134438 100644
--- a/indra/newview/llwatchdog.cpp
+++ b/indra/newview/llwatchdog.cpp
@@ -41,7 +41,7 @@ void default_killer_callback()
 }
 
 // This class runs the watchdog timing thread.
-class LLWatchdogTimerThread : public LLThread
+class LLWatchdogTimerThread final : public LLThread
 {
 public:
 	LLWatchdogTimerThread() : 
diff --git a/indra/newview/llwatchdog.h b/indra/newview/llwatchdog.h
index 9a6624258e9..3630baf3d38 100644
--- a/indra/newview/llwatchdog.h
+++ b/indra/newview/llwatchdog.h
@@ -50,7 +50,7 @@ class LLWatchdogEntry
 	virtual void stop();
 };
 
-class LLWatchdogTimeout : public LLWatchdogEntry
+class LLWatchdogTimeout final : public LLWatchdogEntry
 {
 public:
 	LLWatchdogTimeout();
@@ -73,7 +73,7 @@ class LLWatchdogTimeout : public LLWatchdogEntry
 };
 
 class LLWatchdogTimerThread; // Defined in the cpp
-class LLWatchdog : public LLSingleton<LLWatchdog>
+class LLWatchdog final : public LLSingleton<LLWatchdog>
 {
 	LLSINGLETON(LLWatchdog);
 	~LLWatchdog();
diff --git a/indra/newview/llwearableitemslist.h b/indra/newview/llwearableitemslist.h
index f3182ed163b..2d6ea773755 100644
--- a/indra/newview/llwearableitemslist.h
+++ b/indra/newview/llwearableitemslist.h
@@ -409,7 +409,7 @@ class LLWearableItemsList : public LLInventoryItemsList
 	 * (e.g. for items selected across multiple wearable lists),
 	 * so making it a singleton.
 	 */
-	class ContextMenu : public LLListContextMenu, public LLSingleton<ContextMenu>
+	class ContextMenu final : public LLListContextMenu, public LLSingleton<ContextMenu>
 	{
 		LLSINGLETON(ContextMenu);
 	public:
diff --git a/indra/newview/llwearablelist.h b/indra/newview/llwearablelist.h
index 782f7751e59..8a13d1db47c 100644
--- a/indra/newview/llwearablelist.h
+++ b/indra/newview/llwearablelist.h
@@ -39,7 +39,7 @@
    inventory items pointing to the same asset (i.e. more than one ItemID
    per assetID).  EXT-6252
 */
-class LLWearableList : public LLSingleton<LLWearableList>
+class LLWearableList final : public LLSingleton<LLWearableList>
 {
 	LLSINGLETON_EMPTY_CTOR(LLWearableList);
 	~LLWearableList();
diff --git a/indra/newview/llwindebug.h b/indra/newview/llwindebug.h
index 524adba6529..5b1cbd0a4c3 100644
--- a/indra/newview/llwindebug.h
+++ b/indra/newview/llwindebug.h
@@ -35,7 +35,7 @@
 #include <dbghelp.h>
 #pragma warning (pop)
 
-class LLWinDebug:
+class LLWinDebug final :
 	public LLSingleton<LLWinDebug>
 {
 	LLSINGLETON_EMPTY_CTOR(LLWinDebug);
diff --git a/indra/newview/llwindowlistener.h b/indra/newview/llwindowlistener.h
index 7af5ab3b9f0..e870eae9300 100644
--- a/indra/newview/llwindowlistener.h
+++ b/indra/newview/llwindowlistener.h
@@ -33,7 +33,7 @@
 class LLKeyboard;
 class LLViewerWindow;
 
-class LLWindowListener : public LLEventAPI
+class LLWindowListener final : public LLEventAPI
 {
 public:
 	typedef boost::function<LLKeyboard*()> KeyboardGetter;
diff --git a/indra/newview/llworld.cpp b/indra/newview/llworld.cpp
index ec9c09e81c4..4f854b832f1 100644
--- a/indra/newview/llworld.cpp
+++ b/indra/newview/llworld.cpp
@@ -1172,7 +1172,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:
diff --git a/indra/newview/llworldmap.h b/indra/newview/llworldmap.h
index 4bb27268bb7..337d2b2a855 100644
--- a/indra/newview/llworldmap.h
+++ b/indra/newview/llworldmap.h
@@ -193,7 +193,7 @@ const S32 MAP_MAX_SIZE = 2048;
 const S32 MAP_BLOCK_SIZE = 4;
 const S32 MAP_BLOCK_RES = (MAP_MAX_SIZE / MAP_BLOCK_SIZE);
 
-class LLWorldMap : public LLSingleton<LLWorldMap>
+class LLWorldMap final : public LLSingleton<LLWorldMap>
 {
 	LLSINGLETON(LLWorldMap);
 	~LLWorldMap();
diff --git a/indra/newview/llworldmapmessage.h b/indra/newview/llworldmapmessage.h
index 65276df0682..a56930c9a56 100644
--- a/indra/newview/llworldmapmessage.h
+++ b/indra/newview/llworldmapmessage.h
@@ -32,7 +32,7 @@
 // Handling of messages (send and process) as well as SLURL callback if necessary
 class LLMessageSystem;
 
-class LLWorldMapMessage : public LLSingleton<LLWorldMapMessage>
+class LLWorldMapMessage final : public LLSingleton<LLWorldMapMessage>
 {
 	LLSINGLETON(LLWorldMapMessage);
 	~LLWorldMapMessage();
diff --git a/indra/newview/llworldmapview.h b/indra/newview/llworldmapview.h
index a2a6dc53fb5..7391a762bd7 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();
diff --git a/indra/newview/rlvfloaters.h b/indra/newview/rlvfloaters.h
index f29fa92483d..9e6fb2b6215 100644
--- a/indra/newview/rlvfloaters.h
+++ b/indra/newview/rlvfloaters.h
@@ -38,7 +38,7 @@ enum class ERlvBehaviourFilter {
 	ALL
 };
 
-class RlvFloaterBehaviours : public LLFloater
+class RlvFloaterBehaviours final : public LLFloater
 {
 	friend class LLFloaterReg;
 private:
@@ -74,7 +74,7 @@ class RlvFloaterBehaviours : public LLFloater
 // RlvFloaterLocks class declaration
 //
 
-class RlvFloaterLocks : public LLFloater
+class RlvFloaterLocks final : public LLFloater
 {
 	friend class LLFloaterReg;
 private:
@@ -106,7 +106,7 @@ class RlvFloaterLocks : public LLFloater
 // RlvFloaterStrings class declaration
 //
 
-class RlvFloaterStrings : public LLFloater
+class RlvFloaterStrings final : public LLFloater
 {
 	friend class LLFloaterReg;
 private:
@@ -135,7 +135,7 @@ class RlvFloaterStrings : public LLFloater
 // RlvFloaterConsole - debug console to allow command execution without the need for a script
 //
 
-class RlvFloaterConsole : public LLFloater
+class RlvFloaterConsole final : public LLFloater
 {
 	friend class LLFloaterReg;
 	template<ERlvParamType> friend struct RlvCommandHandlerBaseImpl;
diff --git a/indra/newview/rlvhelper.h b/indra/newview/rlvhelper.h
index cbe79ec57a0..abd0b78d765 100644
--- a/indra/newview/rlvhelper.h
+++ b/indra/newview/rlvhelper.h
@@ -89,7 +89,7 @@ class RlvBehaviourInfo
 // RlvBehaviourDictionary and related classes
 //
 
-class RlvBehaviourDictionary : public LLSingleton<RlvBehaviourDictionary>
+class RlvBehaviourDictionary final : public LLSingleton<RlvBehaviourDictionary>
 {
 	friend class RlvFloaterBehaviours;
 	LLSINGLETON(RlvBehaviourDictionary);
@@ -470,7 +470,7 @@ class RlvObject
 // RlvForceWear
 //
 
-class RlvForceWear : public LLSingleton<RlvForceWear>
+class RlvForceWear final : public LLSingleton<RlvForceWear>
 {
 	LLSINGLETON(RlvForceWear);
 public:
@@ -572,7 +572,7 @@ class RlvForceWear : public LLSingleton<RlvForceWear>
 // RlvBehaviourNotifyObserver
 //
 
-class RlvBehaviourNotifyHandler : public LLSingleton<RlvBehaviourNotifyHandler>
+class RlvBehaviourNotifyHandler final : public LLSingleton<RlvBehaviourNotifyHandler>
 {
 	LLSINGLETON(RlvBehaviourNotifyHandler);
 protected:
diff --git a/indra/newview/rlvinventory.h b/indra/newview/rlvinventory.h
index 2cb7f8bc8ed..a1f0c7d00d1 100644
--- a/indra/newview/rlvinventory.h
+++ b/indra/newview/rlvinventory.h
@@ -34,7 +34,7 @@ class LLOfferInfo;
 // RlvInventory class declaration
 //
 
-class RlvInventory : public LLSingleton<RlvInventory>, public LLInventoryObserver
+class RlvInventory final : public LLSingleton<RlvInventory>, public LLInventoryObserver
 {
 	LLSINGLETON(RlvInventory);
 public:
diff --git a/indra/newview/rlvlocks.h b/indra/newview/rlvlocks.h
index 62c4635121c..bd605ddde14 100644
--- a/indra/newview/rlvlocks.h
+++ b/indra/newview/rlvlocks.h
@@ -138,7 +138,7 @@ extern RlvAttachmentLocks gRlvAttachmentLocks;
 //
 
 // TODO-RLVa: [RLVa-1.2.1] This class really looks rather cluttered so look into cleaning it up/simplifying it a bit
-class RlvAttachmentLockWatchdog : public LLSingleton<RlvAttachmentLockWatchdog>
+class RlvAttachmentLockWatchdog final : public LLSingleton<RlvAttachmentLockWatchdog>
 {
 	LLSINGLETON(RlvAttachmentLockWatchdog);
 protected:
@@ -279,7 +279,7 @@ extern RlvWearableLocks gRlvWearableLocks;
 // RlvFolderLocks class declaration
 //
 
-class RlvFolderLocks : public LLSingleton<RlvFolderLocks>
+class RlvFolderLocks final : public LLSingleton<RlvFolderLocks>
 {
 	friend class RlvLockedDescendentsCollector;
 	LLSINGLETON(RlvFolderLocks);
diff --git a/indra/newview/rlvmodifiers.h b/indra/newview/rlvmodifiers.h
index 3ccec3e71c3..b26c1db0ebd 100644
--- a/indra/newview/rlvmodifiers.h
+++ b/indra/newview/rlvmodifiers.h
@@ -90,7 +90,7 @@ struct RlvBehaviourModifierTween
 	RlvBehaviourModifierValue endValue;
 };
 
-class RlvBehaviourModifierAnimator : public LLSingleton<RlvBehaviourModifierAnimator>
+class RlvBehaviourModifierAnimator final : public LLSingleton<RlvBehaviourModifierAnimator>
 {
 	LLSINGLETON_EMPTY_CTOR(RlvBehaviourModifierAnimator);
 public:
diff --git a/indra/newview/rlvui.h b/indra/newview/rlvui.h
index c6f945a2c5a..1a5f68e9acf 100644
--- a/indra/newview/rlvui.h
+++ b/indra/newview/rlvui.h
@@ -26,7 +26,7 @@
 // RlvUIEnabler - self-contained class that handles disabling or reenabling certain aspects of the viewer's UI
 //
 
-class RlvUIEnabler : public LLSingleton<RlvUIEnabler>
+class RlvUIEnabler final : public LLSingleton<RlvUIEnabler>
 {
 	friend class RlvHandler;
 	LLSINGLETON(RlvUIEnabler);
-- 
GitLab