This folder contains modules autogenerated by `make lit_localize_build`, ran by
webpack when serving/building the extension.

Please, do not add any file to this folder other than this document and the
.gitignore file.
