IVGCVSW-7024 Add missing license info for reuse lint

Signed-off-by: Jim Flynn <jim.flynn@arm.com>
Change-Id: I97dee6982e0a7be01c13e9e803c0997547a39ff1
diff --git a/BuildGuideAndroidNDK.md.license b/BuildGuideAndroidNDK.md.license
new file mode 100644
index 0000000..739dc2d
--- /dev/null
+++ b/BuildGuideAndroidNDK.md.license
@@ -0,0 +1,4 @@
+#
+# Copyright © 2018-2022 Arm Ltd and Contributors. All rights reserved.
+# SPDX-License-Identifier: MIT
+#
diff --git a/BuildGuideCrossCompilation.md.license b/BuildGuideCrossCompilation.md.license
new file mode 100644
index 0000000..739dc2d
--- /dev/null
+++ b/BuildGuideCrossCompilation.md.license
@@ -0,0 +1,4 @@
+#
+# Copyright © 2018-2022 Arm Ltd and Contributors. All rights reserved.
+# SPDX-License-Identifier: MIT
+#
diff --git a/ContributorGuide.md.license b/ContributorGuide.md.license
new file mode 100644
index 0000000..c3a8823
--- /dev/null
+++ b/ContributorGuide.md.license
@@ -0,0 +1,4 @@
+#
+# Copyright © 2018-2021 Arm Ltd and Contributors. All rights reserved.
+# SPDX-License-Identifier: MIT
+#
diff --git a/InstallationViaAptRepository.md.license b/InstallationViaAptRepository.md.license
new file mode 100644
index 0000000..ec9b9c3
--- /dev/null
+++ b/InstallationViaAptRepository.md.license
@@ -0,0 +1,4 @@
+#
+# Copyright © 2020-2021 Arm Ltd and Contributors. All rights reserved.
+# SPDX-License-Identifier: MIT
+#
diff --git a/LICENSES/BSD-3-Clause.txt b/LICENSES/BSD-3-Clause.txt
new file mode 100644
index 0000000..ea890af
--- /dev/null
+++ b/LICENSES/BSD-3-Clause.txt
@@ -0,0 +1,11 @@
+Copyright (c) <year> <owner>. 
+
+Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
+
+1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
+
+2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
+
+3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/LICENSES/MIT.txt b/LICENSES/MIT.txt
new file mode 100644
index 0000000..2071b23
--- /dev/null
+++ b/LICENSES/MIT.txt
@@ -0,0 +1,9 @@
+MIT License
+
+Copyright (c) <year> <copyright holders>
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/README.md.license b/README.md.license
new file mode 100644
index 0000000..739dc2d
--- /dev/null
+++ b/README.md.license
@@ -0,0 +1,4 @@
+#
+# Copyright © 2018-2022 Arm Ltd and Contributors. All rights reserved.
+# SPDX-License-Identifier: MIT
+#
diff --git a/SECURITY.md.license b/SECURITY.md.license
new file mode 100644
index 0000000..344cf33
--- /dev/null
+++ b/SECURITY.md.license
@@ -0,0 +1,4 @@
+#
+# Copyright © 2020 Arm Ltd and Contributors. All rights reserved.
+# SPDX-License-Identifier: MIT
+#
diff --git a/cmake/AddDllCopyCommands.cmake b/cmake/AddDllCopyCommands.cmake
index 671bc7d..525eec4 100644
--- a/cmake/AddDllCopyCommands.cmake
+++ b/cmake/AddDllCopyCommands.cmake
@@ -1,3 +1,7 @@
+#
+# Copyright © 2018-2021 Arm Ltd and Contributors. All rights reserved.
+# SPDX-License-Identifier: MIT
+#
 macro (addDllCopyCommand target sourceDebug sourceRelease)
     add_custom_command(TARGET ${target} POST_BUILD
         COMMAND ${CMAKE_COMMAND} -E copy_if_different
diff --git a/cmake/ArmnnConfig.cmake.in b/cmake/ArmnnConfig.cmake.in
index e608f86..dfa89d5 100644
--- a/cmake/ArmnnConfig.cmake.in
+++ b/cmake/ArmnnConfig.cmake.in
@@ -1,3 +1,7 @@
+#
+# Copyright © 2020 Arm Ltd and Contributors. All rights reserved.
+# SPDX-License-Identifier: MIT
+#
 
 get_filename_component(ARMNN_CMAKE_DIR "${CMAKE_CURRENT_LIST_FILE}" DIRECTORY)
 set(ARMNN_CONFIG_FILE ${CMAKE_CURRENT_LIST_FILE})
diff --git a/cmake/Utils.cmake b/cmake/Utils.cmake
index 3a9d93a..b1cdd4c 100644
--- a/cmake/Utils.cmake
+++ b/cmake/Utils.cmake
@@ -1,3 +1,8 @@
+#
+# Copyright © 2018 Arm Ltd and Contributors. All rights reserved.
+# SPDX-License-Identifier: MIT
+#
+
 # Function which creates appropriate "source groups" (filter folders in Visual Studio) for the given list of source files
 function(createSourceGroups source1)
     set(sources ${source1} ${ARGN})
diff --git a/delegate/BuildGuideNative.md.license b/delegate/BuildGuideNative.md.license
new file mode 100644
index 0000000..6b63511
--- /dev/null
+++ b/delegate/BuildGuideNative.md.license
@@ -0,0 +1,4 @@
+#
+# Copyright © 2020-2022 Arm Ltd and Contributors. All rights reserved.
+# SPDX-License-Identifier: MIT
+#
diff --git a/delegate/DelegateQuickStartGuide.md.license b/delegate/DelegateQuickStartGuide.md.license
new file mode 100644
index 0000000..eb48c51
--- /dev/null
+++ b/delegate/DelegateQuickStartGuide.md.license
@@ -0,0 +1,4 @@
+#
+# Copyright © 2020, 2022 Arm Ltd and Contributors. All rights reserved.
+# SPDX-License-Identifier: MIT
+#
diff --git a/delegate/README.md.license b/delegate/README.md.license
new file mode 100644
index 0000000..ec9b9c3
--- /dev/null
+++ b/delegate/README.md.license
@@ -0,0 +1,4 @@
+#
+# Copyright © 2020-2021 Arm Ltd and Contributors. All rights reserved.
+# SPDX-License-Identifier: MIT
+#
diff --git a/delegate/python/test/test_data/conv2d.tflite.license b/delegate/python/test/test_data/conv2d.tflite.license
new file mode 100644
index 0000000..14e9b44
--- /dev/null
+++ b/delegate/python/test/test_data/conv2d.tflite.license
@@ -0,0 +1,4 @@
+#
+# Copyright © 2021 Arm Ltd and Contributors. All rights reserved.
+# SPDX-License-Identifier: MIT
+#
diff --git a/delegate/python/test/test_data/fallback_model.tflite.license b/delegate/python/test/test_data/fallback_model.tflite.license
new file mode 100644
index 0000000..14e9b44
--- /dev/null
+++ b/delegate/python/test/test_data/fallback_model.tflite.license
@@ -0,0 +1,4 @@
+#
+# Copyright © 2021 Arm Ltd and Contributors. All rights reserved.
+# SPDX-License-Identifier: MIT
+#
diff --git a/delegate/python/test/test_data/fp32_model.tflite.license b/delegate/python/test/test_data/fp32_model.tflite.license
new file mode 100644
index 0000000..14e9b44
--- /dev/null
+++ b/delegate/python/test/test_data/fp32_model.tflite.license
@@ -0,0 +1,4 @@
+#
+# Copyright © 2021 Arm Ltd and Contributors. All rights reserved.
+# SPDX-License-Identifier: MIT
+#
diff --git a/delegate/python/test/test_data/mock_model.tflite.license b/delegate/python/test/test_data/mock_model.tflite.license
new file mode 100644
index 0000000..344cf33
--- /dev/null
+++ b/delegate/python/test/test_data/mock_model.tflite.license
@@ -0,0 +1,4 @@
+#
+# Copyright © 2020 Arm Ltd and Contributors. All rights reserved.
+# SPDX-License-Identifier: MIT
+#
diff --git a/docker/README.md.license b/docker/README.md.license
new file mode 100644
index 0000000..b994066
--- /dev/null
+++ b/docker/README.md.license
@@ -0,0 +1,4 @@
+#
+# Copyright © 2021-2022 Arm Ltd and Contributors. All rights reserved.
+# SPDX-License-Identifier: MIT
+#
diff --git a/docker/armnn-android/Dockerfile.license b/docker/armnn-android/Dockerfile.license
new file mode 100644
index 0000000..344cf33
--- /dev/null
+++ b/docker/armnn-android/Dockerfile.license
@@ -0,0 +1,4 @@
+#
+# Copyright © 2020 Arm Ltd and Contributors. All rights reserved.
+# SPDX-License-Identifier: MIT
+#
diff --git a/docker/x86_64/Dockerfile.license b/docker/x86_64/Dockerfile.license
new file mode 100644
index 0000000..6b63511
--- /dev/null
+++ b/docker/x86_64/Dockerfile.license
@@ -0,0 +1,4 @@
+#
+# Copyright © 2020-2022 Arm Ltd and Contributors. All rights reserved.
+# SPDX-License-Identifier: MIT
+#
diff --git a/docs/Arm_NN_horizontal_blue.png.license b/docs/Arm_NN_horizontal_blue.png.license
new file mode 100644
index 0000000..344cf33
--- /dev/null
+++ b/docs/Arm_NN_horizontal_blue.png.license
@@ -0,0 +1,4 @@
+#
+# Copyright © 2020 Arm Ltd and Contributors. All rights reserved.
+# SPDX-License-Identifier: MIT
+#
diff --git a/docs/FAQ.md.license b/docs/FAQ.md.license
new file mode 100644
index 0000000..6b63511
--- /dev/null
+++ b/docs/FAQ.md.license
@@ -0,0 +1,4 @@
+#
+# Copyright © 2020-2022 Arm Ltd and Contributors. All rights reserved.
+# SPDX-License-Identifier: MIT
+#
diff --git a/docs/PerformanceChart.png.license b/docs/PerformanceChart.png.license
new file mode 100644
index 0000000..14e9b44
--- /dev/null
+++ b/docs/PerformanceChart.png.license
@@ -0,0 +1,4 @@
+#
+# Copyright © 2021 Arm Ltd and Contributors. All rights reserved.
+# SPDX-License-Identifier: MIT
+#
diff --git a/docs/pyarmnn.png.license b/docs/pyarmnn.png.license
new file mode 100644
index 0000000..14e9b44
--- /dev/null
+++ b/docs/pyarmnn.png.license
@@ -0,0 +1,4 @@
+#
+# Copyright © 2021 Arm Ltd and Contributors. All rights reserved.
+# SPDX-License-Identifier: MIT
+#
diff --git a/docs/stylesheet.css b/docs/stylesheet.css
index ea7f4dc..28fdba0 100644
--- a/docs/stylesheet.css
+++ b/docs/stylesheet.css
@@ -1,5 +1,6 @@
 /* Copyright (c) 2020 ARM Limited. */
-/* Changes to tabs.css */
+/* SPDX-License-Identifier: MIT    */
+/* Changes to tabs.css             */
 
 .tabs, .tabs2, .tabs3 {
     position: relative;
diff --git a/python/pyarmnn/.gitignore b/python/pyarmnn/.gitignore
index 69e2681..1120181 100644
--- a/python/pyarmnn/.gitignore
+++ b/python/pyarmnn/.gitignore
@@ -1,7 +1,11 @@
+#
+# Copyright © 2020 Arm Ltd and Contributors. All rights reserved.
+# SPDX-License-Identifier: MIT
+#
+
 # Generated pyarmnn files
 src/pyarmnn/_generated/*
 !src/pyarmnn/_generated/.keep
 !src/pyarmnn/_generated/*.py
 !src/pyarmnn/_generated/*.cpp
 **/include
-
diff --git a/python/pyarmnn/README.md.license b/python/pyarmnn/README.md.license
new file mode 100644
index 0000000..6b63511
--- /dev/null
+++ b/python/pyarmnn/README.md.license
@@ -0,0 +1,4 @@
+#
+# Copyright © 2020-2022 Arm Ltd and Contributors. All rights reserved.
+# SPDX-License-Identifier: MIT
+#
diff --git a/python/pyarmnn/docs_conf/config.mako b/python/pyarmnn/docs_conf/config.mako
index b26003b..0b5592d 100644
--- a/python/pyarmnn/docs_conf/config.mako
+++ b/python/pyarmnn/docs_conf/config.mako
@@ -1,3 +1,7 @@
+##
+## Copyright © 2020 Arm Ltd and Contributors. All rights reserved.
+## SPDX-License-Identifier: MIT
+##
 <%!
     # Template configuration. Copy over in your template directory
     # (used with --template-dir) and adapt as required.
diff --git a/python/pyarmnn/examples/image_classification/README.md.license b/python/pyarmnn/examples/image_classification/README.md.license
new file mode 100644
index 0000000..6b63511
--- /dev/null
+++ b/python/pyarmnn/examples/image_classification/README.md.license
@@ -0,0 +1,4 @@
+#
+# Copyright © 2020-2022 Arm Ltd and Contributors. All rights reserved.
+# SPDX-License-Identifier: MIT
+#
diff --git a/python/pyarmnn/examples/image_classification/requirements.txt b/python/pyarmnn/examples/image_classification/requirements.txt
index 289a2b5..f411e2f 100644
--- a/python/pyarmnn/examples/image_classification/requirements.txt
+++ b/python/pyarmnn/examples/image_classification/requirements.txt
@@ -1,3 +1,7 @@
+#
+# Copyright © 2020 Arm Ltd and Contributors. All rights reserved.
+# SPDX-License-Identifier: MIT
+#
 requests>=2.23.0
 urllib3>=1.25.8
 Pillow>=6.1.0
diff --git a/python/pyarmnn/examples/keyword_spotting/README.MD b/python/pyarmnn/examples/keyword_spotting/README.md
similarity index 100%
rename from python/pyarmnn/examples/keyword_spotting/README.MD
rename to python/pyarmnn/examples/keyword_spotting/README.md
diff --git a/python/pyarmnn/examples/keyword_spotting/README.md.license b/python/pyarmnn/examples/keyword_spotting/README.md.license
new file mode 100644
index 0000000..db7c467
--- /dev/null
+++ b/python/pyarmnn/examples/keyword_spotting/README.md.license
@@ -0,0 +1,4 @@
+#
+# Copyright © 2022 Arm Ltd and Contributors. All rights reserved.
+# SPDX-License-Identifier: MIT
+#
diff --git a/python/pyarmnn/examples/keyword_spotting/requirements.txt b/python/pyarmnn/examples/keyword_spotting/requirements.txt
index 96782ea..9d88f90 100644
--- a/python/pyarmnn/examples/keyword_spotting/requirements.txt
+++ b/python/pyarmnn/examples/keyword_spotting/requirements.txt
@@ -1,3 +1,7 @@
+#
+# Copyright © 2021 Arm Ltd and Contributors. All rights reserved.
+# SPDX-License-Identifier: MIT
+#
 numpy>=1.19.2
 soundfile>=0.10.3
 pytest==6.2.4
diff --git a/python/pyarmnn/examples/object_detection/README.md.license b/python/pyarmnn/examples/object_detection/README.md.license
new file mode 100644
index 0000000..6b63511
--- /dev/null
+++ b/python/pyarmnn/examples/object_detection/README.md.license
@@ -0,0 +1,4 @@
+#
+# Copyright © 2020-2022 Arm Ltd and Contributors. All rights reserved.
+# SPDX-License-Identifier: MIT
+#
diff --git a/python/pyarmnn/examples/object_detection/requirements.txt b/python/pyarmnn/examples/object_detection/requirements.txt
index 01f2d18..322bc83 100644
--- a/python/pyarmnn/examples/object_detection/requirements.txt
+++ b/python/pyarmnn/examples/object_detection/requirements.txt
@@ -1,3 +1,7 @@
+#

+# Copyright © 2020-2021 Arm Ltd and Contributors. All rights reserved.

+# SPDX-License-Identifier: MIT

+#

 --extra-index-url https://google-coral.github.io/py-repo/

 numpy>=1.19.2

 tqdm>=4.47.0

diff --git a/python/pyarmnn/examples/speech_recognition/README.md.license b/python/pyarmnn/examples/speech_recognition/README.md.license
new file mode 100644
index 0000000..6b63511
--- /dev/null
+++ b/python/pyarmnn/examples/speech_recognition/README.md.license
@@ -0,0 +1,4 @@
+#
+# Copyright © 2020-2022 Arm Ltd and Contributors. All rights reserved.
+# SPDX-License-Identifier: MIT
+#
diff --git a/python/pyarmnn/examples/speech_recognition/requirements.txt b/python/pyarmnn/examples/speech_recognition/requirements.txt
index 96782ea..c123b3d 100644
--- a/python/pyarmnn/examples/speech_recognition/requirements.txt
+++ b/python/pyarmnn/examples/speech_recognition/requirements.txt
@@ -1,3 +1,7 @@
+#
+# Copyright © 2020-2021 Arm Ltd and Contributors. All rights reserved.
+# SPDX-License-Identifier: MIT
+#
 numpy>=1.19.2
 soundfile>=0.10.3
 pytest==6.2.4
diff --git a/python/pyarmnn/examples/speech_recognition/tests/testdata/inference_output.npy.license b/python/pyarmnn/examples/speech_recognition/tests/testdata/inference_output.npy.license
new file mode 100644
index 0000000..14e9b44
--- /dev/null
+++ b/python/pyarmnn/examples/speech_recognition/tests/testdata/inference_output.npy.license
@@ -0,0 +1,4 @@
+#
+# Copyright © 2021 Arm Ltd and Contributors. All rights reserved.
+# SPDX-License-Identifier: MIT
+#
diff --git a/python/pyarmnn/examples/speech_recognition/tests/testdata/quick_brown_fox_16000khz.wav.license b/python/pyarmnn/examples/speech_recognition/tests/testdata/quick_brown_fox_16000khz.wav.license
new file mode 100644
index 0000000..b994066
--- /dev/null
+++ b/python/pyarmnn/examples/speech_recognition/tests/testdata/quick_brown_fox_16000khz.wav.license
@@ -0,0 +1,4 @@
+#
+# Copyright © 2021-2022 Arm Ltd and Contributors. All rights reserved.
+# SPDX-License-Identifier: MIT
+#
diff --git a/python/pyarmnn/examples/tests/testdata/labelmap.txt.license b/python/pyarmnn/examples/tests/testdata/labelmap.txt.license
new file mode 100644
index 0000000..14e9b44
--- /dev/null
+++ b/python/pyarmnn/examples/tests/testdata/labelmap.txt.license
@@ -0,0 +1,4 @@
+#
+# Copyright © 2021 Arm Ltd and Contributors. All rights reserved.
+# SPDX-License-Identifier: MIT
+#
diff --git a/python/pyarmnn/pylintconfig b/python/pyarmnn/pylintconfig
index f3b28d4..929d04d 100644
--- a/python/pyarmnn/pylintconfig
+++ b/python/pyarmnn/pylintconfig
@@ -1,4 +1,8 @@
 [MASTER]
+#
+# Copyright © 2020-2021 Arm Ltd and Contributors. All rights reserved.
+# SPDX-License-Identifier: MIT
+#
 
 # Add files or directories to the ignore list. They should be base names, not
 # paths.
diff --git a/python/pyarmnn/scripts/requirements.txt b/python/pyarmnn/scripts/requirements.txt
index 59477a0..192b363 100644
--- a/python/pyarmnn/scripts/requirements.txt
+++ b/python/pyarmnn/scripts/requirements.txt
@@ -1,2 +1,7 @@
+#
+# Copyright © 2020 Arm Ltd and Contributors. All rights reserved.
+# Copyright © 2020 NXP. All rights reserved.
+# SPDX-License-Identifier: MIT
+#
 requests==2.23.0
 pdoc3==0.6.3
diff --git a/python/pyarmnn/tox.ini.license b/python/pyarmnn/tox.ini.license
new file mode 100644
index 0000000..6b63511
--- /dev/null
+++ b/python/pyarmnn/tox.ini.license
@@ -0,0 +1,4 @@
+#
+# Copyright © 2020-2022 Arm Ltd and Contributors. All rights reserved.
+# SPDX-License-Identifier: MIT
+#
diff --git a/samples/CMakeLists.txt b/samples/CMakeLists.txt
index 42e5a47..31ff508 100644
--- a/samples/CMakeLists.txt
+++ b/samples/CMakeLists.txt
@@ -1,3 +1,7 @@
+#
+# Copyright © 2018-2022 Arm Ltd and Contributors. All rights reserved.
+# SPDX-License-Identifier: MIT
+#
 if (NOT BUILD_BARE_METAL)
    if(BUILD_SAMPLE_APP AND ARMNNREF)
         add_executable(SimpleSample SimpleSample.cpp)
diff --git a/samples/ImageClassification/README.md.license b/samples/ImageClassification/README.md.license
new file mode 100644
index 0000000..14e9b44
--- /dev/null
+++ b/samples/ImageClassification/README.md.license
@@ -0,0 +1,4 @@
+#
+# Copyright © 2021 Arm Ltd and Contributors. All rights reserved.
+# SPDX-License-Identifier: MIT
+#
diff --git a/samples/ImageClassification/requirements.txt b/samples/ImageClassification/requirements.txt
index 3f100b2..17b52b8 100644
--- a/samples/ImageClassification/requirements.txt
+++ b/samples/ImageClassification/requirements.txt
@@ -1,3 +1,7 @@
+#
+# Copyright © 2021 Arm Ltd and Contributors. All rights reserved.
+# SPDX-License-Identifier: MIT
+#
 numpy==1.20.2
 Pillow==8.2.0
 pybind11==2.6.2
diff --git a/samples/ImageClassification/run_classifier.py b/samples/ImageClassification/run_classifier.py
index b3f79ea..4ce8b8b 100644
--- a/samples/ImageClassification/run_classifier.py
+++ b/samples/ImageClassification/run_classifier.py
@@ -1,3 +1,7 @@
+#
+# Copyright © 2021 Arm Ltd and Contributors. All rights reserved.
+# SPDX-License-Identifier: MIT
+#
 import argparse
 from pathlib import Path
 from typing import Union
diff --git a/samples/KeywordSpotting/Readme.md.license b/samples/KeywordSpotting/Readme.md.license
new file mode 100644
index 0000000..14e9b44
--- /dev/null
+++ b/samples/KeywordSpotting/Readme.md.license
@@ -0,0 +1,4 @@
+#
+# Copyright © 2021 Arm Ltd and Contributors. All rights reserved.
+# SPDX-License-Identifier: MIT
+#
diff --git a/samples/ObjectDetection/Readme.md.license b/samples/ObjectDetection/Readme.md.license
new file mode 100644
index 0000000..6b63511
--- /dev/null
+++ b/samples/ObjectDetection/Readme.md.license
@@ -0,0 +1,4 @@
+#
+# Copyright © 2020-2022 Arm Ltd and Contributors. All rights reserved.
+# SPDX-License-Identifier: MIT
+#
diff --git a/samples/SpeechRecognition/Readme.md.license b/samples/SpeechRecognition/Readme.md.license
new file mode 100644
index 0000000..14e9b44
--- /dev/null
+++ b/samples/SpeechRecognition/Readme.md.license
@@ -0,0 +1,4 @@
+#
+# Copyright © 2021 Arm Ltd and Contributors. All rights reserved.
+# SPDX-License-Identifier: MIT
+#
diff --git a/samples/serialized/Readme.md.license b/samples/serialized/Readme.md.license
new file mode 100644
index 0000000..14e9b44
--- /dev/null
+++ b/samples/serialized/Readme.md.license
@@ -0,0 +1,4 @@
+#
+# Copyright © 2021 Arm Ltd and Contributors. All rights reserved.
+# SPDX-License-Identifier: MIT
+#
diff --git a/samples/serialized/ssd_mobilenet_v1.armnn.license b/samples/serialized/ssd_mobilenet_v1.armnn.license
new file mode 100644
index 0000000..14e9b44
--- /dev/null
+++ b/samples/serialized/ssd_mobilenet_v1.armnn.license
@@ -0,0 +1,4 @@
+#
+# Copyright © 2021 Arm Ltd and Contributors. All rights reserved.
+# SPDX-License-Identifier: MIT
+#
diff --git a/shim/sl/scripts/NeuralNetworks.patch.license b/shim/sl/scripts/NeuralNetworks.patch.license
new file mode 100644
index 0000000..db7c467
--- /dev/null
+++ b/shim/sl/scripts/NeuralNetworks.patch.license
@@ -0,0 +1,4 @@
+#
+# Copyright © 2022 Arm Ltd and Contributors. All rights reserved.
+# SPDX-License-Identifier: MIT
+#
diff --git a/shim/sl/scripts/libbase_logging_cpp.patch.license b/shim/sl/scripts/libbase_logging_cpp.patch.license
new file mode 100644
index 0000000..db7c467
--- /dev/null
+++ b/shim/sl/scripts/libbase_logging_cpp.patch.license
@@ -0,0 +1,4 @@
+#
+# Copyright © 2022 Arm Ltd and Contributors. All rights reserved.
+# SPDX-License-Identifier: MIT
+#
diff --git a/src/armnnConverter/README.md.license b/src/armnnConverter/README.md.license
new file mode 100644
index 0000000..8c65a4a
--- /dev/null
+++ b/src/armnnConverter/README.md.license
@@ -0,0 +1,4 @@
+#
+# Copyright © 2019, 2021 Arm Ltd and Contributors. All rights reserved.
+# SPDX-License-Identifier: MIT
+#
diff --git a/src/armnnDeserializer/README.md.license b/src/armnnDeserializer/README.md.license
new file mode 100644
index 0000000..8c65a4a
--- /dev/null
+++ b/src/armnnDeserializer/README.md.license
@@ -0,0 +1,4 @@
+#
+# Copyright © 2019, 2021 Arm Ltd and Contributors. All rights reserved.
+# SPDX-License-Identifier: MIT
+#
diff --git a/src/armnnOnnxParser/README.md.license b/src/armnnOnnxParser/README.md.license
new file mode 100644
index 0000000..aa3548a
--- /dev/null
+++ b/src/armnnOnnxParser/README.md.license
@@ -0,0 +1,4 @@
+#
+# Copyright © 2018, 2021 Arm Ltd and Contributors. All rights reserved.
+# SPDX-License-Identifier: MIT
+#
diff --git a/src/armnnSerializer/README.md.license b/src/armnnSerializer/README.md.license
new file mode 100644
index 0000000..8c65a4a
--- /dev/null
+++ b/src/armnnSerializer/README.md.license
@@ -0,0 +1,4 @@
+#
+# Copyright © 2019, 2021 Arm Ltd and Contributors. All rights reserved.
+# SPDX-License-Identifier: MIT
+#
diff --git a/src/armnnTfLiteParser/README.md.license b/src/armnnTfLiteParser/README.md.license
new file mode 100644
index 0000000..e7092f5
--- /dev/null
+++ b/src/armnnTfLiteParser/README.md.license
@@ -0,0 +1,4 @@
+#
+# Copyright © 2018-2019, 2021 Arm Ltd and Contributors. All rights reserved.
+# SPDX-License-Identifier: MIT
+#
diff --git a/src/backends/README.md.license b/src/backends/README.md.license
new file mode 100644
index 0000000..739dc2d
--- /dev/null
+++ b/src/backends/README.md.license
@@ -0,0 +1,4 @@
+#
+# Copyright © 2018-2022 Arm Ltd and Contributors. All rights reserved.
+# SPDX-License-Identifier: MIT
+#
diff --git a/src/dynamic/README.md.license b/src/dynamic/README.md.license
new file mode 100644
index 0000000..2ebf258
--- /dev/null
+++ b/src/dynamic/README.md.license
@@ -0,0 +1,4 @@
+#
+# Copyright © 2019-2021 Arm Ltd and Contributors. All rights reserved.
+# SPDX-License-Identifier: MIT
+#
diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
index 4cb324f..9f377c6 100644
--- a/tests/CMakeLists.txt
+++ b/tests/CMakeLists.txt
@@ -1,3 +1,8 @@
+#
+# Copyright © 2018-2022 Arm Ltd and Contributors. All rights reserved.
+# SPDX-License-Identifier: MIT
+#
+
 # UnitTests
 include(CheckIncludeFiles)
 
diff --git a/tests/ImageCSVFileGenerator/README.md.license b/tests/ImageCSVFileGenerator/README.md.license
new file mode 100644
index 0000000..c6b9825
--- /dev/null
+++ b/tests/ImageCSVFileGenerator/README.md.license
@@ -0,0 +1,4 @@
+#
+# Copyright © 2019 Arm Ltd and Contributors. All rights reserved.
+# SPDX-License-Identifier: MIT
+#
diff --git a/tests/ImageTensorGenerator/README.md.license b/tests/ImageTensorGenerator/README.md.license
new file mode 100644
index 0000000..8c65a4a
--- /dev/null
+++ b/tests/ImageTensorGenerator/README.md.license
@@ -0,0 +1,4 @@
+#
+# Copyright © 2019, 2021 Arm Ltd and Contributors. All rights reserved.
+# SPDX-License-Identifier: MIT
+#
diff --git a/tests/MemoryStrategyBenchmark/CMakeLists.txt b/tests/MemoryStrategyBenchmark/CMakeLists.txt
index 9ed79ba..e9b6477 100644
--- a/tests/MemoryStrategyBenchmark/CMakeLists.txt
+++ b/tests/MemoryStrategyBenchmark/CMakeLists.txt
@@ -1,3 +1,8 @@
+#
+# Copyright © 2021 Arm Ltd and Contributors. All rights reserved.
+# SPDX-License-Identifier: MIT
+#
+
 add_executable(MemoryStrategyBenchmark
                MemoryStrategyBenchmark.cpp
                TestBlocks.hpp
@@ -13,4 +18,4 @@
                            ../../third-party/cxxopts)
 
 
-set_target_properties(MemoryStrategyBenchmark PROPERTIES LINKER_LANGUAGE CXX)
\ No newline at end of file
+set_target_properties(MemoryStrategyBenchmark PROPERTIES LINKER_LANGUAGE CXX)
diff --git a/tests/ModelAccuracyTool-Armnn/README.md.license b/tests/ModelAccuracyTool-Armnn/README.md.license
new file mode 100644
index 0000000..8c65a4a
--- /dev/null
+++ b/tests/ModelAccuracyTool-Armnn/README.md.license
@@ -0,0 +1,4 @@
+#
+# Copyright © 2019, 2021 Arm Ltd and Contributors. All rights reserved.
+# SPDX-License-Identifier: MIT
+#
diff --git a/tests/OnnxMnist-Armnn/Validation.txt.license b/tests/OnnxMnist-Armnn/Validation.txt.license
new file mode 100644
index 0000000..1796fa8
--- /dev/null
+++ b/tests/OnnxMnist-Armnn/Validation.txt.license
@@ -0,0 +1,4 @@
+#
+# Copyright © 2018 Arm Ltd and Contributors. All rights reserved.
+# SPDX-License-Identifier: MIT
+#
diff --git a/tests/OnnxMobileNet-Armnn/Validation.txt.license b/tests/OnnxMobileNet-Armnn/Validation.txt.license
new file mode 100644
index 0000000..1796fa8
--- /dev/null
+++ b/tests/OnnxMobileNet-Armnn/Validation.txt.license
@@ -0,0 +1,4 @@
+#
+# Copyright © 2018 Arm Ltd and Contributors. All rights reserved.
+# SPDX-License-Identifier: MIT
+#
diff --git a/tests/OnnxMobileNet-Armnn/labels.txt.license b/tests/OnnxMobileNet-Armnn/labels.txt.license
new file mode 100644
index 0000000..1796fa8
--- /dev/null
+++ b/tests/OnnxMobileNet-Armnn/labels.txt.license
@@ -0,0 +1,4 @@
+#
+# Copyright © 2018 Arm Ltd and Contributors. All rights reserved.
+# SPDX-License-Identifier: MIT
+#
diff --git a/tests/TfLiteInceptionV3Quantized-Armnn/Validation.txt.license b/tests/TfLiteInceptionV3Quantized-Armnn/Validation.txt.license
new file mode 100644
index 0000000..c6b9825
--- /dev/null
+++ b/tests/TfLiteInceptionV3Quantized-Armnn/Validation.txt.license
@@ -0,0 +1,4 @@
+#
+# Copyright © 2019 Arm Ltd and Contributors. All rights reserved.
+# SPDX-License-Identifier: MIT
+#
diff --git a/tests/TfLiteInceptionV4Quantized-Armnn/Validation.txt.license b/tests/TfLiteInceptionV4Quantized-Armnn/Validation.txt.license
new file mode 100644
index 0000000..c6b9825
--- /dev/null
+++ b/tests/TfLiteInceptionV4Quantized-Armnn/Validation.txt.license
@@ -0,0 +1,4 @@
+#
+# Copyright © 2019 Arm Ltd and Contributors. All rights reserved.
+# SPDX-License-Identifier: MIT
+#
diff --git a/tests/TfLiteMobileNetQuantizedSoftmax-Armnn/Validation.txt.license b/tests/TfLiteMobileNetQuantizedSoftmax-Armnn/Validation.txt.license
new file mode 100644
index 0000000..c6b9825
--- /dev/null
+++ b/tests/TfLiteMobileNetQuantizedSoftmax-Armnn/Validation.txt.license
@@ -0,0 +1,4 @@
+#
+# Copyright © 2019 Arm Ltd and Contributors. All rights reserved.
+# SPDX-License-Identifier: MIT
+#
diff --git a/tests/TfLiteMobilenetQuantized-Armnn/Validation.txt.license b/tests/TfLiteMobilenetQuantized-Armnn/Validation.txt.license
new file mode 100644
index 0000000..1796fa8
--- /dev/null
+++ b/tests/TfLiteMobilenetQuantized-Armnn/Validation.txt.license
@@ -0,0 +1,4 @@
+#
+# Copyright © 2018 Arm Ltd and Contributors. All rights reserved.
+# SPDX-License-Identifier: MIT
+#
diff --git a/tests/TfLiteMobilenetQuantized-Armnn/labels.txt.license b/tests/TfLiteMobilenetQuantized-Armnn/labels.txt.license
new file mode 100644
index 0000000..1796fa8
--- /dev/null
+++ b/tests/TfLiteMobilenetQuantized-Armnn/labels.txt.license
@@ -0,0 +1,4 @@
+#
+# Copyright © 2018 Arm Ltd and Contributors. All rights reserved.
+# SPDX-License-Identifier: MIT
+#
diff --git a/tests/TfLiteVGG16Quantized-Armnn/Validation.txt.license b/tests/TfLiteVGG16Quantized-Armnn/Validation.txt.license
new file mode 100644
index 0000000..e8a4e6d
--- /dev/null
+++ b/tests/TfLiteVGG16Quantized-Armnn/Validation.txt.license
@@ -0,0 +1,4 @@
+#
+# Copyright © 2018-2019 Arm Ltd and Contributors. All rights reserved.
+# SPDX-License-Identifier: MIT
+#
diff --git a/third-party/cxxopts/CHANGELOG.md.license b/third-party/cxxopts/CHANGELOG.md.license
new file mode 100644
index 0000000..bf1b5b5
--- /dev/null
+++ b/third-party/cxxopts/CHANGELOG.md.license
@@ -0,0 +1,4 @@
+#
+# Copyright (c) 2014 Jarryd Beck
+# SPDX-License-Identifier: MIT
+#
diff --git a/third-party/cxxopts/README.md.license b/third-party/cxxopts/README.md.license
new file mode 100644
index 0000000..bf1b5b5
--- /dev/null
+++ b/third-party/cxxopts/README.md.license
@@ -0,0 +1,4 @@
+#
+# Copyright (c) 2014 Jarryd Beck
+# SPDX-License-Identifier: MIT
+#
diff --git a/third-party/cxxopts/cxxopts.hpp b/third-party/cxxopts/cxxopts.hpp
index 88e8a02..5cebc4b 100644
--- a/third-party/cxxopts/cxxopts.hpp
+++ b/third-party/cxxopts/cxxopts.hpp
@@ -2,6 +2,8 @@
 
 Copyright (c) 2014, 2015, 2016, 2017 Jarryd Beck
 
+SPDX-License-Identifier: MIT
+
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
 in the Software without restriction, including without limitation the rights
@@ -1228,7 +1230,7 @@
     public:
 
     ParseResult() {}
-     
+
     ParseResult(const ParseResult&) = default;
 
     ParseResult(NameHashMap&& keys, ParsedHashMap&& values, std::vector<KeyValue> sequential, std::vector<std::string>&& unmatched_args)
diff --git a/third-party/doctest/doctest.h b/third-party/doctest/doctest.h
index 42eb039..9719680 100644
--- a/third-party/doctest/doctest.h
+++ b/third-party/doctest/doctest.h
@@ -6,6 +6,8 @@
 //
 // Copyright (c) 2016-2021 Viktor Kirilov
 //
+// SPDX-License-Identifier: MIT
+//
 // Distributed under the MIT Software License
 // See accompanying file LICENSE.txt or copy at
 // https://opensource.org/licenses/MIT
@@ -607,7 +609,7 @@
         DT_WARN_THROWS_WITH    = is_throws_with | is_warn,
         DT_CHECK_THROWS_WITH   = is_throws_with | is_check,
         DT_REQUIRE_THROWS_WITH = is_throws_with | is_require,
-        
+
         DT_WARN_THROWS_WITH_AS    = is_throws_with | is_throws_as | is_warn,
         DT_CHECK_THROWS_WITH_AS   = is_throws_with | is_throws_as | is_check,
         DT_REQUIRE_THROWS_WITH_AS = is_throws_with | is_throws_as | is_require,
@@ -781,9 +783,9 @@
     template<class T> struct remove_reference<T&>  { typedef T type; };
     template<class T> struct remove_reference<T&&> { typedef T type; };
 
-    template<typename T, typename U = T&&> U declval(int); 
+    template<typename T, typename U = T&&> U declval(int);
 
-    template<typename T> T declval(long); 
+    template<typename T> T declval(long);
 
     template<typename T> auto declval() DOCTEST_NOEXCEPT -> decltype(declval<T>(0)) ;
 
@@ -1568,7 +1570,7 @@
     DOCTEST_INTERFACE void toStream(std::ostream* s, int long long in);
     DOCTEST_INTERFACE void toStream(std::ostream* s, int long long unsigned in);
 
-    // ContextScope base class used to allow implementing methods of ContextScope 
+    // ContextScope base class used to allow implementing methods of ContextScope
     // that don't depend on the template parameter in doctest.cpp.
     class DOCTEST_INTERFACE ContextScopeBase : public IContextScope {
     protected:
@@ -1620,7 +1622,7 @@
         bool log();
         void react();
     };
-    
+
     template <typename L>
     ContextScope<L> MakeContextScope(const L &lambda) {
         return ContextScope<L>(lambda);
@@ -2991,7 +2993,7 @@
 
 namespace timer_large_integer
 {
-    
+
 #if defined(DOCTEST_PLATFORM_WINDOWS)
     typedef ULONGLONG type;
 #else // DOCTEST_PLATFORM_WINDOWS
@@ -3747,7 +3749,7 @@
             if(matchesAny(m_signature.m_name.c_str(), s->filters[7], false, s->case_sensitive))
                 return;
         }
-        
+
         // if a Subcase on the same level has already been entered
         if(s->subcasesStack.size() < size_t(s->subcasesCurrentMaxLevel)) {
             s->should_reenter = true;
@@ -3769,8 +3771,8 @@
         DOCTEST_ITERATE_THROUGH_REPORTERS(subcase_start, m_signature);
     }
 
-    DOCTEST_MSVC_SUPPRESS_WARNING_WITH_PUSH(4996) // std::uncaught_exception is deprecated in C++17	
-    DOCTEST_GCC_SUPPRESS_WARNING_WITH_PUSH("-Wdeprecated-declarations")	
+    DOCTEST_MSVC_SUPPRESS_WARNING_WITH_PUSH(4996) // std::uncaught_exception is deprecated in C++17
+    DOCTEST_GCC_SUPPRESS_WARNING_WITH_PUSH("-Wdeprecated-declarations")
     DOCTEST_CLANG_SUPPRESS_WARNING_WITH_PUSH("-Wdeprecated-declarations")
 
     Subcase::~Subcase() {
@@ -3797,8 +3799,8 @@
         }
     }
 
-    DOCTEST_CLANG_SUPPRESS_WARNING_POP	
-    DOCTEST_GCC_SUPPRESS_WARNING_POP	
+    DOCTEST_CLANG_SUPPRESS_WARNING_POP
+    DOCTEST_GCC_SUPPRESS_WARNING_POP
     DOCTEST_MSVC_SUPPRESS_WARNING_POP
 
     Subcase::operator bool() const { return m_entered; }
@@ -4145,8 +4147,8 @@
         g_infoContexts.push_back(this);
     }
 
-    DOCTEST_MSVC_SUPPRESS_WARNING_WITH_PUSH(4996) // std::uncaught_exception is deprecated in C++17	
-    DOCTEST_GCC_SUPPRESS_WARNING_WITH_PUSH("-Wdeprecated-declarations")	
+    DOCTEST_MSVC_SUPPRESS_WARNING_WITH_PUSH(4996) // std::uncaught_exception is deprecated in C++17
+    DOCTEST_GCC_SUPPRESS_WARNING_WITH_PUSH("-Wdeprecated-declarations")
     DOCTEST_CLANG_SUPPRESS_WARNING_WITH_PUSH("-Wdeprecated-declarations")
 
     // destroy cannot be inlined into the destructor because that would mean calling stringify after
@@ -4165,8 +4167,8 @@
         g_infoContexts.pop_back();
     }
 
-    DOCTEST_CLANG_SUPPRESS_WARNING_POP	
-    DOCTEST_GCC_SUPPRESS_WARNING_POP	
+    DOCTEST_CLANG_SUPPRESS_WARNING_POP
+    DOCTEST_GCC_SUPPRESS_WARNING_POP
     DOCTEST_MSVC_SUPPRESS_WARNING_POP
 } // namespace detail
 namespace {
@@ -5117,7 +5119,7 @@
             test_case_start_impl(in);
             xml.ensureTagClosed();
         }
-        
+
         void test_case_reenter(const TestCaseData&) override {}
 
         void test_case_end(const CurrentTestCaseStats& st) override {
@@ -5837,7 +5839,7 @@
             subcasesStack.clear();
             currentSubcaseLevel = 0;
         }
-        
+
         void test_case_reenter(const TestCaseData&) override {
             subcasesStack.clear();
         }
@@ -6462,7 +6464,7 @@
             DOCTEST_ITERATE_THROUGH_REPORTERS(test_case_start, tc);
 
             p->timer.start();
-            
+
             bool run_test = true;
 
             do {
@@ -6502,7 +6504,7 @@
                     run_test = false;
                     p->failure_flags |= TestCaseFailureReason::TooManyFailedAsserts;
                 }
-                
+
                 if(p->should_reenter && run_test)
                     DOCTEST_ITERATE_THROUGH_REPORTERS(test_case_reenter, tc);
                 if(!p->should_reenter)
diff --git a/third-party/fmt/README.rst.license b/third-party/fmt/README.rst.license
new file mode 100644
index 0000000..3755e29
--- /dev/null
+++ b/third-party/fmt/README.rst.license
@@ -0,0 +1,4 @@
+#
+# Copyright (c) 2012 - present, Victor Zverovich
+# SPDX-License-Identifier: MIT
+#
diff --git a/third-party/fmt/core.h b/third-party/fmt/core.h
index 338e0c7..a992418 100644
--- a/third-party/fmt/core.h
+++ b/third-party/fmt/core.h
@@ -2,6 +2,7 @@
 //
 // Copyright (c) 2012 - present, Victor Zverovich
 // All rights reserved.
+// SPDX-License-Identifier: MIT
 //
 // For the license information refer to format.h.
 
diff --git a/third-party/fmt/format-inl.h b/third-party/fmt/format-inl.h
index d3970d4..f4e3392 100644
--- a/third-party/fmt/format-inl.h
+++ b/third-party/fmt/format-inl.h
@@ -2,6 +2,7 @@
 //
 // Copyright (c) 2012 - 2016, Victor Zverovich
 // All rights reserved.
+// SPDX-License-Identifier: MIT
 //
 // For the license information refer to format.h.
 
diff --git a/third-party/fmt/format.h b/third-party/fmt/format.h
index 712c6eb..20ed0bb 100644
--- a/third-party/fmt/format.h
+++ b/third-party/fmt/format.h
@@ -3,6 +3,8 @@
 
  Copyright (c) 2012 - present, Victor Zverovich
 
+ SPDX-License-Identifier: MIT
+
  Permission is hereby granted, free of charge, to any person obtaining
  a copy of this software and associated documentation files (the
  "Software"), to deal in the Software without restriction, including
diff --git a/third-party/fmt/src/format.cc b/third-party/fmt/src/format.cc
index a64a1f3..10af1f5 100644
--- a/third-party/fmt/src/format.cc
+++ b/third-party/fmt/src/format.cc
@@ -2,6 +2,7 @@
 //
 // Copyright (c) 2012 - 2016, Victor Zverovich
 // All rights reserved.
+// SPDX-License-Identifier: MIT
 //
 // For the license information refer to format.h.
 
diff --git a/third-party/ghc/README.md.license b/third-party/ghc/README.md.license
new file mode 100644
index 0000000..5da8163
--- /dev/null
+++ b/third-party/ghc/README.md.license
@@ -0,0 +1,4 @@
+#
+# Copyright (c) 2018, Steffen Schümann <s.schuemann@pobox.com>
+# SPDX-License-Identifier: MIT
+#
diff --git a/third-party/ghc/filesystem.hpp b/third-party/ghc/filesystem.hpp
index 1f0fe39..bc00025 100644
--- a/third-party/ghc/filesystem.hpp
+++ b/third-party/ghc/filesystem.hpp
@@ -6,6 +6,8 @@
 //
 // Copyright (c) 2018, Steffen Schümann <s.schuemann@pobox.com>
 //
+// SPDX-License-Identifier: MIT
+//
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // of this software and associated documentation files (the "Software"), to deal
 // in the Software without restriction, including without limitation the rights
@@ -211,7 +213,7 @@
 template <typename char_type>
 constexpr char_type path_helper_base<char_type>::preferred_separator;
 #endif
-    
+
 // 30.10.8 class path
 class GHC_FS_API_CLASS path
 #if defined(GHC_OS_WINDOWS) && defined(GHC_WIN_WSTRING_STRING_TYPE)
@@ -228,7 +230,7 @@
 #endif
     using string_type = std::basic_string<value_type>;
     using path_helper_base<value_type>::preferred_separator;
-    
+
     // 30.10.10.1 enumeration format
     /// The path format in wich the constructor argument is given.
     enum format {
@@ -1154,7 +1156,7 @@
     return std::error_code(err ? err : errno, std::system_category());
 }
 #endif
-    
+
 #endif  // GHC_EXPAND_IMPL
 
 template <typename Enum>
@@ -1277,7 +1279,7 @@
     codepoint = (state ? (codepoint << 6) | (fragment & 0x3fu) : (0xffu >> category) & fragment);
     return state == S_RJCT ? static_cast<unsigned>(S_RJCT) : static_cast<unsigned>((utf8_state_info[category + 16] >> (state << 2)) & 0xf);
 }
-    
+
 GHC_INLINE bool validUtf8(const std::string& utf8String)
 {
     std::string::const_iterator iter = utf8String.begin();
@@ -1295,9 +1297,9 @@
 }
 
 }  // namespace detail
-    
+
 #endif
-    
+
 namespace detail {
 
 template <class StringType, typename std::enable_if<(sizeof(typename StringType::value_type) == 1)>::type* = nullptr>
diff --git a/third-party/half/ChangeLog.txt.license b/third-party/half/ChangeLog.txt.license
new file mode 100644
index 0000000..771b79e
--- /dev/null
+++ b/third-party/half/ChangeLog.txt.license
@@ -0,0 +1,4 @@
+#
+# Copyright (c) 2012-2017 Christian Rau
+# SPDX-License-Identifier: MIT
+#
diff --git a/third-party/half/README.txt.license b/third-party/half/README.txt.license
new file mode 100644
index 0000000..771b79e
--- /dev/null
+++ b/third-party/half/README.txt.license
@@ -0,0 +1,4 @@
+#
+# Copyright (c) 2012-2017 Christian Rau
+# SPDX-License-Identifier: MIT
+#
diff --git a/third-party/half/half.hpp b/third-party/half/half.hpp
index 0d7459b..4e432b9 100644
--- a/third-party/half/half.hpp
+++ b/third-party/half/half.hpp
@@ -2,16 +2,18 @@
 //

 // Copyright (c) 2012-2017 Christian Rau <rauy@users.sourceforge.net>

 //

-// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation 

-// files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, 

-// modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the 

+// SPDX-License-Identifier: MIT

+//

+// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation

+// files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy,

+// modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the

 // Software is furnished to do so, subject to the following conditions:

 //

 // The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

 //

-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE 

-// WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR 

-// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 

+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE

+// WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR

+// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,

 // ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

 

 // Version 1.12.0

@@ -195,8 +197,8 @@
 

 

 /// Default rounding mode.

-/// This specifies the rounding mode used for all conversions between [half](\ref half_float::half)s and `float`s as well as 

-/// for the half_cast() if not specifying a rounding mode explicitly. It can be redefined (before including half.hpp) to one 

+/// This specifies the rounding mode used for all conversions between [half](\ref half_float::half)s and `float`s as well as

+/// for the half_cast() if not specifying a rounding mode explicitly. It can be redefined (before including half.hpp) to one

 /// of the standard rounding modes using their respective constants or the equivalent values of `std::float_round_style`:

 ///

 /// `std::float_round_style`         | value | rounding

@@ -207,30 +209,30 @@
 /// `std::round_toward_infinity`     | 2     | toward positive infinity

 /// `std::round_toward_neg_infinity` | 3     | toward negative infinity

 ///

-/// By default this is set to `-1` (`std::round_indeterminate`), which uses truncation (round toward zero, but with overflows 

-/// set to infinity) and is the fastest rounding mode possible. It can even be set to `std::numeric_limits<float>::round_style` 

+/// By default this is set to `-1` (`std::round_indeterminate`), which uses truncation (round toward zero, but with overflows

+/// set to infinity) and is the fastest rounding mode possible. It can even be set to `std::numeric_limits<float>::round_style`

 /// to synchronize the rounding mode with that of the underlying single-precision implementation.

 #ifndef HALF_ROUND_STYLE

 	#define HALF_ROUND_STYLE	-1			// = std::round_indeterminate

 #endif

 

 /// Tie-breaking behaviour for round to nearest.

-/// This specifies if ties in round to nearest should be resolved by rounding to the nearest even value. By default this is 

-/// defined to `0` resulting in the faster but slightly more biased behaviour of rounding away from zero in half-way cases (and 

-/// thus equal to the round() function), but can be redefined to `1` (before including half.hpp) if more IEEE-conformant 

+/// This specifies if ties in round to nearest should be resolved by rounding to the nearest even value. By default this is

+/// defined to `0` resulting in the faster but slightly more biased behaviour of rounding away from zero in half-way cases (and

+/// thus equal to the round() function), but can be redefined to `1` (before including half.hpp) if more IEEE-conformant

 /// behaviour is needed.

 #ifndef HALF_ROUND_TIES_TO_EVEN

 	#define HALF_ROUND_TIES_TO_EVEN	0		// ties away from zero

 #endif

 

 /// Value signaling overflow.

-/// In correspondence with `HUGE_VAL[F|L]` from `<cmath>` this symbol expands to a positive value signaling the overflow of an 

+/// In correspondence with `HUGE_VAL[F|L]` from `<cmath>` this symbol expands to a positive value signaling the overflow of an

 /// operation, in particular it just evaluates to positive infinity.

 #define HUGE_VALH	std::numeric_limits<half_float::half>::infinity()

 

 /// Fast half-precision fma function.

-/// This symbol is only defined if the fma() function generally executes as fast as, or faster than, a separate 

-/// half-precision multiplication followed by an addition. Due to the internal single-precision implementation of all 

+/// This symbol is only defined if the fma() function generally executes as fast as, or faster than, a separate

+/// half-precision multiplication followed by an addition. Due to the internal single-precision implementation of all

 /// arithmetic operations, this is in fact always the case.

 #define FP_FAST_FMAH	1

 

@@ -366,7 +368,7 @@
 		};

 

 		/// SFINAE helper for generic half-precision functions.

-		/// This class template has to be specialized for each valid combination of argument types to provide a corresponding 

+		/// This class template has to be specialized for each valid combination of argument types to provide a corresponding

 		/// `type` member equivalent to \a T.

 		/// \tparam T type to return

 		template<typename T,typename,typename=void,typename=void> struct enable {};

diff --git a/third-party/mapbox/README.md.license b/third-party/mapbox/README.md.license
new file mode 100644
index 0000000..aba8d37
--- /dev/null
+++ b/third-party/mapbox/README.md.license
@@ -0,0 +1,4 @@
+#
+# Copyright (c) MapBox 2016. All rights reserved.
+# SPDX-License-Identifier: BSD-3-Clause
+#
\ No newline at end of file
diff --git a/third-party/mapbox/optional.hpp b/third-party/mapbox/optional.hpp
index d84705c..b9e682a 100644
--- a/third-party/mapbox/optional.hpp
+++ b/third-party/mapbox/optional.hpp
@@ -1,3 +1,8 @@
+//
+// Copyright (c) MapBox All rights reserved.
+// SPDX-License-Identifier: BSD-3-Clause
+//
+
 #ifndef MAPBOX_UTIL_OPTIONAL_HPP
 #define MAPBOX_UTIL_OPTIONAL_HPP
 
diff --git a/third-party/mapbox/recursive_wrapper.hpp b/third-party/mapbox/recursive_wrapper.hpp
index 4ffcbd7..8a85d30 100644
--- a/third-party/mapbox/recursive_wrapper.hpp
+++ b/third-party/mapbox/recursive_wrapper.hpp
@@ -1,3 +1,8 @@
+//
+// Copyright (c) MapBox All rights reserved.
+// SPDX-License-Identifier: BSD-3-Clause
+//
+
 #ifndef MAPBOX_UTIL_RECURSIVE_WRAPPER_HPP
 #define MAPBOX_UTIL_RECURSIVE_WRAPPER_HPP
 
diff --git a/third-party/mapbox/variant.hpp b/third-party/mapbox/variant.hpp
index 06a46ab..7110857 100644
--- a/third-party/mapbox/variant.hpp
+++ b/third-party/mapbox/variant.hpp
@@ -1,3 +1,8 @@
+//
+// Copyright (c) MapBox All rights reserved.
+// SPDX-License-Identifier: BSD-3-Clause
+//
+
 #ifndef MAPBOX_UTIL_VARIANT_HPP
 #define MAPBOX_UTIL_VARIANT_HPP
 
diff --git a/third-party/mapbox/variant_cast.hpp b/third-party/mapbox/variant_cast.hpp
index fe1ab35..0795bcf 100644
--- a/third-party/mapbox/variant_cast.hpp
+++ b/third-party/mapbox/variant_cast.hpp
@@ -1,3 +1,8 @@
+//
+// Copyright (c) MapBox All rights reserved.
+// SPDX-License-Identifier: BSD-3-Clause
+//
+
 #ifndef VARIANT_CAST_HPP
 #define VARIANT_CAST_HPP
 
diff --git a/third-party/mapbox/variant_io.hpp b/third-party/mapbox/variant_io.hpp
index 1456cc5..7fdb818 100644
--- a/third-party/mapbox/variant_io.hpp
+++ b/third-party/mapbox/variant_io.hpp
@@ -1,3 +1,8 @@
+//
+// Copyright (c) MapBox All rights reserved.
+// SPDX-License-Identifier: BSD-3-Clause
+//
+
 #ifndef MAPBOX_UTIL_VARIANT_IO_HPP
 #define MAPBOX_UTIL_VARIANT_IO_HPP
 
diff --git a/third-party/mapbox/variant_visitor.hpp b/third-party/mapbox/variant_visitor.hpp
index 54ddba0..a5657d3 100644
--- a/third-party/mapbox/variant_visitor.hpp
+++ b/third-party/mapbox/variant_visitor.hpp
@@ -1,3 +1,8 @@
+//
+// Copyright (c) MapBox All rights reserved.
+// SPDX-License-Identifier: BSD-3-Clause
+//
+
 #ifndef MAPBOX_UTIL_VARIANT_VISITOR_HPP
 #define MAPBOX_UTIL_VARIANT_VISITOR_HPP
 
@@ -15,7 +20,7 @@
     using Fn::operator();
 
     template<typename T>
-    visitor(T&& fn) : Fn(std::forward<T>(fn)) {}    
+    visitor(T&& fn) : Fn(std::forward<T>(fn)) {}
 };
 
 template <typename Fn, typename... Fns>
@@ -36,7 +41,7 @@
     return visitor<typename std::decay<Fns>::type...>
         (std::forward<Fns>(fns)...);
 }
-    
+
 } // namespace util
 } // namespace mapbox
 
diff --git a/third-party/stb/stb_image.h b/third-party/stb/stb_image.h
index f0cc581..5d4d5cf 100644
--- a/third-party/stb/stb_image.h
+++ b/third-party/stb/stb_image.h
@@ -1,3 +1,8 @@
+//
+// Copyright (c) 2017 Sean Barrett
+// SPDX-License-Identifier: MIT
+//
+
 /* stb_image - v2.16 - public domain image loader - http://nothings.org/stb_image.h
                                      no warranty implied; use at your own risk
 
diff --git a/third-party/stb/stb_image_resize.h b/third-party/stb/stb_image_resize.h
index 858cc87..cece8ef 100644
--- a/third-party/stb/stb_image_resize.h
+++ b/third-party/stb/stb_image_resize.h
@@ -1,3 +1,8 @@
+//
+// Copyright (c) 2017 Sean Barrett
+// SPDX-License-Identifier: MIT
+//
+
 /* stb_image_resize - v0.95 - public domain image resizing
    by Jorge L Rodriguez (@VinoBS) - 2014
    http://github.com/nothings/stb
@@ -20,8 +25,8 @@
                                output_pixels, out_w, out_h, 0,
                                num_channels , alpha_chan  , 0)
       stbir_resize_uint8_srgb_edgemode(
-                               input_pixels , in_w , in_h , 0, 
-                               output_pixels, out_w, out_h, 0, 
+                               input_pixels , in_w , in_h , 0,
+                               output_pixels, out_w, out_h, 0,
                                num_channels , alpha_chan  , 0, STBIR_EDGE_CLAMP)
                                                             // WRAP/REFLECT/ZERO
 
@@ -231,7 +236,7 @@
                                      int num_channels);
 
 
-// The following functions interpret image data as gamma-corrected sRGB. 
+// The following functions interpret image data as gamma-corrected sRGB.
 // Specify STBIR_ALPHA_CHANNEL_NONE if you have no alpha channel,
 // or otherwise provide the index of the alpha channel. Flags value
 // of 0 will probably do the right thing if you're not sure what
@@ -304,19 +309,19 @@
 STBIRDEF int stbir_resize_uint8_generic( const unsigned char *input_pixels , int input_w , int input_h , int input_stride_in_bytes,
                                                unsigned char *output_pixels, int output_w, int output_h, int output_stride_in_bytes,
                                          int num_channels, int alpha_channel, int flags,
-                                         stbir_edge edge_wrap_mode, stbir_filter filter, stbir_colorspace space, 
+                                         stbir_edge edge_wrap_mode, stbir_filter filter, stbir_colorspace space,
                                          void *alloc_context);
 
 STBIRDEF int stbir_resize_uint16_generic(const stbir_uint16 *input_pixels  , int input_w , int input_h , int input_stride_in_bytes,
                                                stbir_uint16 *output_pixels , int output_w, int output_h, int output_stride_in_bytes,
                                          int num_channels, int alpha_channel, int flags,
-                                         stbir_edge edge_wrap_mode, stbir_filter filter, stbir_colorspace space, 
+                                         stbir_edge edge_wrap_mode, stbir_filter filter, stbir_colorspace space,
                                          void *alloc_context);
 
 STBIRDEF int stbir_resize_float_generic( const float *input_pixels         , int input_w , int input_h , int input_stride_in_bytes,
                                                float *output_pixels        , int output_w, int output_h, int output_stride_in_bytes,
                                          int num_channels, int alpha_channel, int flags,
-                                         stbir_edge edge_wrap_mode, stbir_filter filter, stbir_colorspace space, 
+                                         stbir_edge edge_wrap_mode, stbir_filter filter, stbir_colorspace space,
                                          void *alloc_context);
 
 
@@ -348,7 +353,7 @@
                                          void *output_pixels, int output_w, int output_h, int output_stride_in_bytes,
                                    stbir_datatype datatype,
                                    int num_channels, int alpha_channel, int flags,
-                                   stbir_edge edge_mode_horizontal, stbir_edge edge_mode_vertical, 
+                                   stbir_edge edge_mode_horizontal, stbir_edge edge_mode_vertical,
                                    stbir_filter filter_horizontal,  stbir_filter filter_vertical,
                                    stbir_colorspace space, void *alloc_context);
 
@@ -356,7 +361,7 @@
                                          void *output_pixels, int output_w, int output_h, int output_stride_in_bytes,
                                    stbir_datatype datatype,
                                    int num_channels, int alpha_channel, int flags,
-                                   stbir_edge edge_mode_horizontal, stbir_edge edge_mode_vertical, 
+                                   stbir_edge edge_mode_horizontal, stbir_edge edge_mode_vertical,
                                    stbir_filter filter_horizontal,  stbir_filter filter_vertical,
                                    stbir_colorspace space, void *alloc_context,
                                    float x_scale, float y_scale,
@@ -366,7 +371,7 @@
                                          void *output_pixels, int output_w, int output_h, int output_stride_in_bytes,
                                    stbir_datatype datatype,
                                    int num_channels, int alpha_channel, int flags,
-                                   stbir_edge edge_mode_horizontal, stbir_edge edge_mode_vertical, 
+                                   stbir_edge edge_mode_horizontal, stbir_edge edge_mode_vertical,
                                    stbir_filter filter_horizontal,  stbir_filter filter_vertical,
                                    stbir_colorspace space, void *alloc_context,
                                    float s0, float t0, float s1, float t1);
@@ -668,14 +673,14 @@
     0x44c20798, 0x488e071e, 0x4c1c06b6, 0x4f76065d, 0x52a50610, 0x55ac05cc, 0x5892058f, 0x5b590559,
     0x5e0c0a23, 0x631c0980, 0x67db08f6, 0x6c55087f, 0x70940818, 0x74a007bd, 0x787d076c, 0x7c330723,
 };
- 
+
 static stbir_uint8 stbir__linear_to_srgb_uchar(float in)
 {
     static const stbir__FP32 almostone = { 0x3f7fffff }; // 1-eps
     static const stbir__FP32 minval = { (127-13) << 23 };
     stbir_uint32 tab,bias,scale,t;
     stbir__FP32 f;
- 
+
     // Clamp to [2^(-13), 1-eps]; these two values map to 0 and 1, respectively.
     // The tests are carefully written so that NaNs map to 0, same as in the reference
     // implementation.
@@ -683,13 +688,13 @@
         in = minval.f;
     if (in > almostone.f)
         in = almostone.f;
- 
+
     // Do the table lookup and unpack bias, scale
     f.f = in;
     tab = fp32_to_srgb8_tab4[(f.u - minval.u) >> 20];
     bias = (tab >> 16) << 9;
     scale = tab & 0xffff;
- 
+
     // Grab next-highest mantissa bits and perform linear interpolation
     t = (f.u >> 12) & 0xff;
     return (unsigned char) ((bias + scale*t) >> 16);
@@ -2442,7 +2447,7 @@
         return 0;
 
     result = stbir__resize_allocated(&info, input_data, input_stride_in_bytes,
-                                            output_data, output_stride_in_bytes, 
+                                            output_data, output_stride_in_bytes,
                                             alpha_channel, flags, type,
                                             edge_horizontal, edge_vertical,
                                             colorspace, extra_memory, memory_required);
@@ -2496,7 +2501,7 @@
 STBIRDEF int stbir_resize_uint8_generic( const unsigned char *input_pixels , int input_w , int input_h , int input_stride_in_bytes,
                                                unsigned char *output_pixels, int output_w, int output_h, int output_stride_in_bytes,
                                          int num_channels, int alpha_channel, int flags,
-                                         stbir_edge edge_wrap_mode, stbir_filter filter, stbir_colorspace space, 
+                                         stbir_edge edge_wrap_mode, stbir_filter filter, stbir_colorspace space,
                                          void *alloc_context)
 {
     return stbir__resize_arbitrary(alloc_context, input_pixels, input_w, input_h, input_stride_in_bytes,
@@ -2508,7 +2513,7 @@
 STBIRDEF int stbir_resize_uint16_generic(const stbir_uint16 *input_pixels  , int input_w , int input_h , int input_stride_in_bytes,
                                                stbir_uint16 *output_pixels , int output_w, int output_h, int output_stride_in_bytes,
                                          int num_channels, int alpha_channel, int flags,
-                                         stbir_edge edge_wrap_mode, stbir_filter filter, stbir_colorspace space, 
+                                         stbir_edge edge_wrap_mode, stbir_filter filter, stbir_colorspace space,
                                          void *alloc_context)
 {
     return stbir__resize_arbitrary(alloc_context, input_pixels, input_w, input_h, input_stride_in_bytes,
@@ -2521,7 +2526,7 @@
 STBIRDEF int stbir_resize_float_generic( const float *input_pixels         , int input_w , int input_h , int input_stride_in_bytes,
                                                float *output_pixels        , int output_w, int output_h, int output_stride_in_bytes,
                                          int num_channels, int alpha_channel, int flags,
-                                         stbir_edge edge_wrap_mode, stbir_filter filter, stbir_colorspace space, 
+                                         stbir_edge edge_wrap_mode, stbir_filter filter, stbir_colorspace space,
                                          void *alloc_context)
 {
     return stbir__resize_arbitrary(alloc_context, input_pixels, input_w, input_h, input_stride_in_bytes,
@@ -2535,7 +2540,7 @@
                                          void *output_pixels, int output_w, int output_h, int output_stride_in_bytes,
                                    stbir_datatype datatype,
                                    int num_channels, int alpha_channel, int flags,
-                                   stbir_edge edge_mode_horizontal, stbir_edge edge_mode_vertical, 
+                                   stbir_edge edge_mode_horizontal, stbir_edge edge_mode_vertical,
                                    stbir_filter filter_horizontal,  stbir_filter filter_vertical,
                                    stbir_colorspace space, void *alloc_context)
 {
@@ -2550,7 +2555,7 @@
                                          void *output_pixels, int output_w, int output_h, int output_stride_in_bytes,
                                    stbir_datatype datatype,
                                    int num_channels, int alpha_channel, int flags,
-                                   stbir_edge edge_mode_horizontal, stbir_edge edge_mode_vertical, 
+                                   stbir_edge edge_mode_horizontal, stbir_edge edge_mode_vertical,
                                    stbir_filter filter_horizontal,  stbir_filter filter_vertical,
                                    stbir_colorspace space, void *alloc_context,
                                    float x_scale, float y_scale,
@@ -2571,7 +2576,7 @@
                                          void *output_pixels, int output_w, int output_h, int output_stride_in_bytes,
                                    stbir_datatype datatype,
                                    int num_channels, int alpha_channel, int flags,
-                                   stbir_edge edge_mode_horizontal, stbir_edge edge_mode_vertical, 
+                                   stbir_edge edge_mode_horizontal, stbir_edge edge_mode_vertical,
                                    stbir_filter filter_horizontal,  stbir_filter filter_vertical,
                                    stbir_colorspace space, void *alloc_context,
                                    float s0, float t0, float s1, float t1)
@@ -2588,20 +2593,20 @@
 ------------------------------------------------------------------------------
 MIT License
 Copyright (c) 2017 Sean Barrett
-Permission is hereby granted, free of charge, to any person obtaining a copy of 
-this software and associated documentation files (the "Software"), to deal in 
-the Software without restriction, including without limitation the rights to 
-use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies 
-of the Software, and to permit persons to whom the Software is furnished to do 
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
+of the Software, and to permit persons to whom the Software is furnished to do
 so, subject to the following conditions:
-The above copyright notice and this permission notice shall be included in all 
+The above copyright notice and this permission notice shall be included in all
 copies or substantial portions of the Software.
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 SOFTWARE.
 ------------------------------------------------------------------------------
 */
diff --git a/third-party/stb/stb_image_write.h b/third-party/stb/stb_image_write.h
index bcbb16f..bf5bd1d 100644
--- a/third-party/stb/stb_image_write.h
+++ b/third-party/stb/stb_image_write.h
@@ -1,3 +1,8 @@
+//
+// Copyright (c) 2017 Sean Barrett
+// SPDX-License-Identifier: MIT
+//
+
 /* stb_image_write - v1.06 - public domain - http://nothings.org/stb/stb_image_write.h
    writes out PNG/BMP/TGA/JPEG/HDR images to C stdio - Sean Barrett 2010-2015
                                      no warranty implied; use at your own risk
@@ -81,7 +86,7 @@
 
    TGA supports RLE or non-RLE compressed data. To use non-RLE-compressed
    data, set the global variable 'stbi_write_tga_with_rle' to 0.
-   
+
    JPEG does ignore alpha channels in input data; quality is between 1 and 100.
    Higher quality looks better but results in a bigger image.
    JPEG baseline (no JPEG progressive).
@@ -114,7 +119,7 @@
       Thatcher Ulrich
       github:poppolopoppo
       Patrick Boettcher
-      
+
 LICENSE
 
   See end of file for license information.
@@ -1250,7 +1255,7 @@
                              37,56,68,109,103,77,24,35,55,64,81,104,113,92,49,64,78,87,103,121,120,101,72,92,95,98,112,100,103,99};
    static const int UVQT[] = {17,18,24,47,99,99,99,99,18,21,26,66,99,99,99,99,24,26,56,99,99,99,99,99,47,66,99,99,99,99,99,99,
                               99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99};
-   static const float aasf[] = { 1.0f * 2.828427125f, 1.387039845f * 2.828427125f, 1.306562965f * 2.828427125f, 1.175875602f * 2.828427125f, 
+   static const float aasf[] = { 1.0f * 2.828427125f, 1.387039845f * 2.828427125f, 1.306562965f * 2.828427125f, 1.175875602f * 2.828427125f,
                                  1.0f * 2.828427125f, 0.785694958f * 2.828427125f, 0.541196100f * 2.828427125f, 0.275899379f * 2.828427125f };
 
    int row, col, i, k;
@@ -1417,20 +1422,20 @@
 ------------------------------------------------------------------------------
 MIT License
 Copyright (c) 2017 Sean Barrett
-Permission is hereby granted, free of charge, to any person obtaining a copy of 
-this software and associated documentation files (the "Software"), to deal in 
-the Software without restriction, including without limitation the rights to 
-use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies 
-of the Software, and to permit persons to whom the Software is furnished to do 
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
+of the Software, and to permit persons to whom the Software is furnished to do
 so, subject to the following conditions:
-The above copyright notice and this permission notice shall be included in all 
+The above copyright notice and this permission notice shall be included in all
 copies or substantial portions of the Software.
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 SOFTWARE.
 ------------------------------------------------------------------------------
 */