diff --git a/.gitignore b/.gitignore
index 4965f57..3649d6d 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,5552 +1,77 @@
-### Maven template
-target/
-pom.xml.tag
-pom.xml.releaseBackup
-pom.xml.versionsBackup
-pom.xml.next
-release.properties
-dependency-reduced-pom.xml
-buildNumber.properties
-.mvn/timing.properties
-# https://github.com/takari/maven-wrapper#usage-without-binary-jar
-.mvn/wrapper/maven-wrapper.jar
-
-# Eclipse m2e generated files
-# Eclipse Core
-.project
-# JDT-specific (Eclipse Java Development Tools)
-.classpath
-
-### CMake template
-CMakeLists.txt.user
-CMakeCache.txt
-CMakeFiles
-CMakeScripts
-Testing
-Makefile
-cmake_install.cmake
-install_manifest.txt
-compile_commands.json
-CTestTestfile.cmake
-_deps
-
-### Magento2 template
-/sitemap
-/sitemap.xml
-/pub/sitemap
-/pub/sitemap.xml
-/app/config_sandbox
-/app/etc/config.php
-/app/etc/env.php
-/app/code/Magento/TestModule*
-/lib/internal/flex/uploader/.actionScriptProperties
-/lib/internal/flex/uploader/.flexProperties
-/lib/internal/flex/uploader/.project
-/lib/internal/flex/uploader/.settings
-/lib/internal/flex/varien/.actionScriptProperties
-/lib/internal/flex/varien/.flexLibProperties
-/lib/internal/flex/varien/.project
-/lib/internal/flex/varien/.settings
-/.grunt
-/.php_cs.cache
-/grunt-config.json
-/dev/tools/grunt/configs/local-themes.js
-
-/pub/media/*.*
-!/pub/media/.htaccess
-/pub/media/attribute/*
-!/pub/media/attribute/.htaccess
-/pub/media/analytics/*
-/pub/media/catalog/*
-!/pub/media/catalog/.htaccess
-/pub/media/customer/*
-!/pub/media/customer/.htaccess
-/pub/media/downloadable/*
-!/pub/media/downloadable/.htaccess
-/pub/media/favicon/*
-/pub/media/import/*
-!/pub/media/import/.htaccess
-/pub/media/logo/*
-/pub/media/theme/*
-/pub/media/theme_customization/*
-!/pub/media/theme_customization/.htaccess
-/pub/media/wysiwyg/*
-!/pub/media/wysiwyg/.htaccess
-/pub/media/tmp/*
-!/pub/media/tmp/.htaccess
-/pub/media/captcha/*
-!/pub/media/captcha/.htaccess
-/pub/static/*
-!/pub/static/.htaccess
-
-/var/*
-!/var/.htaccess
-/vendor/*
-!/vendor/.htaccess
-/generated/*
-!/generated/.htaccess
-
-### Magento1 template
-# gitignore template for Magento v1 projects
-#
-# It is recommended that you use `Magento.gitignore` as this is the latest version
-
-/PATCH_*.sh
-
-/app/etc/local.xml
-
-/media/*
-!/media/.htaccess
-
-!/media/customer
-/media/customer/*
-!/media/customer/.htaccess
-
-!/media/dhl
-/media/dhl/*
-!/media/dhl/logo.jpg
-
-!/media/downloadable
-/media/downloadable/*
-!/media/downloadable/.htaccess
-
-!/media/xmlconnect
-/media/xmlconnect/*
-
-!/media/xmlconnect/custom
-/media/xmlconnect/custom/*
-!/media/xmlconnect/custom/ok.gif
-
-!/media/xmlconnect/original
-/media/xmlconnect/original/*
-!/media/xmlconnect/original/ok.gif
-
-!/media/xmlconnect/system
-/media/xmlconnect/system/*
-!/media/xmlconnect/system/ok.gif
-
-
-!/var/package
-/var/package/*
-!/var/package/*.xml
-
-
-### Node template
-# Logs
-logs
-*.log
-npm-debug.log*
-yarn-debug.log*
-yarn-error.log*
-lerna-debug.log*
-.pnpm-debug.log*
-
-# Diagnostic reports (https://nodejs.org/api/report.html)
-report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
-
-# Runtime data
-pids
-*.pid
-*.seed
-*.pid.lock
-
-# Directory for instrumented libs generated by jscoverage/JSCover
-lib-cov
-
-# Coverage directory used by tools like istanbul
-coverage
-*.lcov
-
-# nyc test coverage
-.nyc_output
-
-# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
-.grunt
-
-# Bower dependency directory (https://bower.io/)
-bower_components
-
-# node-waf configuration
-.lock-wscript
-
-# Compiled binary addons (https://nodejs.org/api/addons.html)
-build/Release
-
-# Dependency directories
-node_modules/
-jspm_packages/
-
-# Snowpack dependency directory (https://snowpack.dev/)
-web_modules/
-
-# TypeScript cache
-*.tsbuildinfo
-
-# Optional npm cache directory
-.npm
-
-# Optional eslint cache
-.eslintcache
-
-# Optional stylelint cache
-.stylelintcache
-
-# Microbundle cache
-.rpt2_cache/
-.rts2_cache_cjs/
-.rts2_cache_es/
-.rts2_cache_umd/
-
-# Optional REPL history
-.node_repl_history
-
-# Output of 'npm pack'
-*.tgz
-
-# Yarn Integrity file
-.yarn-integrity
-
-# dotenv environment variable files
-.env
-.env.development.local
-.env.test.local
-.env.production.local
-.env.local
-
-# parcel-bundler cache (https://parceljs.org/)
-.cache
-.parcel-cache
-
-# Next.js build output
-.next
-out
-
-# Nuxt.js build / generate output
-.nuxt
-dist
-
-# Gatsby files
-.cache/
-# Comment in the public line in if your project uses Gatsby and not Next.js
-# https://nextjs.org/blog/next-9-1#public-directory-support
-# public
-
-# vuepress build output
-.vuepress/dist
-
-# vuepress v2.x temp and cache directory
-.temp
-
-# Docusaurus cache and generated files
-.docusaurus
-
-# Serverless directories
-.serverless/
-
-# FuseBox cache
-.fusebox/
-
-# DynamoDB Local files
-.dynamodb/
-
-# TernJS port file
-.tern-port
-
-# Stores VSCode versions used for testing VSCode extensions
-.vscode-test
-
-# yarn v2
-.yarn/cache
-.yarn/unplugged
-.yarn/build-state.yml
-.yarn/install-state.gz
-.pnp.*
-
-### TwinCAT3 template
-# gitignore template for TwinCAT3
-# website: https://www.beckhoff.com/twincat3/
-#
-# Recommended: VisualStudio.gitignore
-
-# TwinCAT files
-*.tpy
-*.tclrs
-*.compiled-library
-*.compileinfo
-# Don't include the tmc-file rule if either of the following is true:
-# 1. You've got TwinCAT C++ projects, as the information in the TMC-file is created manually for the C++ projects (in that case, only (manually) ignore the tmc-files for the PLC projects)
-# 2. You've created a standalone PLC-project and added events to it, as these are stored in the TMC-file.
-*.tmc
-*.tmcRefac
-*.library
-*.project.~u
-*.tsproj.bak
-*.xti.bak
-LineIDs.dbg
-LineIDs.dbg.bak
-_Boot/
-_CompileInfo/
-_Libraries/
-_ModuleInstall/
-### Go template
-# If you prefer the allow list template instead of the deny list, see community template:
-# https://github.com/github/gitignore/blob/main/community/Golang/Go.AllowList.gitignore
-#
-# Binaries for programs and plugins
-*.exe
-*.exe~
-*.dll
-*.so
-*.dylib
-
-# Test binary, built with `go test -c`
-*.test
-
-# Output of the go coverage tool, specifically when used with LiteIDE
-*.out
-
-# Dependency directories (remove the comment below to include it)
-# vendor/
-
-# Go workspace file
-go.work
-
-### CDK template
-# CDK asset staging directory.
-# For more information about AWS-CDK, see https://docs.aws.amazon.com/cdk/
-.cdk.staging/
-cdk.out/
-
-### Leiningen template
-pom.xml
-pom.xml.asc
-*.jar
-*.class
-/lib/
-/classes/
-/target/
-/checkouts/
-.lein-deps-sum
-.lein-repl-history
-.lein-plugins/
-.lein-failures
-.nrepl-port
-.cpcache/
-
-### Erlang template
-.eunit
-*.o
-*.beam
-*.plt
-erl_crash.dump
-.concrete/DEV_MODE
-
-# rebar 2.x
-.rebar
-rel/example_project
-ebin/*.beam
-deps
-
-# rebar 3
-.rebar3
-_build/
-_checkouts/
-
-### RhodesRhomobile template
-rholog-*
-sim-*
-bin/libs
-bin/RhoBundle
-bin/tmp
-bin/target
-bin/*.ap_
-
-### FlaxEngine template
-# Ignore Flax project files
-Binaries/
-Cache/
-Logs/
-Output/
-Screenshots/
-*.HotReload.*
-
-# Ignore Visual Studio project files (generated locally)
-*.csproj
-*.sln
-
-# Ignore thumbnails created by Windows
-Thumbs.db
-
-# Ignore files built by Visual Studio
-*.obj
-*.pdb
-*.user
-*.aps
-*.pch
-*.vspscc
-*_i.c
-*_p.c
-*.ncb
-*.suo
-*.tlb
-*.tlh
-*.bak
-*.cache
-*.ilk
-[Bb]in
-[Dd]ebug*/
-*.lib
-*.sbr
-obj/
-[Rr]elease*/
-_ReSharper*/
-[Tt]est[Rr]esult*
-.vs/
-
-# Ignore Nuget packages folder
-packages/
-
-### OpenCart template
-.htaccess
-/config.php
-admin/config.php
-
-!index.html
-
-download/
-image/data/
-image/cache/
-system/cache/
-system/logs/
-
-system/storage/
-
-# vQmod log files
-vqmod/logs/*
-# vQmod cache files
-vqmod/vqcache/*
-vqmod/checked.cache
-vqmod/mods.cache
-
-### OCaml template
-*.annot
-*.cmo
-*.cma
-*.cmi
-*.a
-*.cmx
-*.cmxs
-*.cmxa
-
-# ocamlbuild working directory
-
-# ocamlbuild targets
-*.byte
-*.native
-
-# oasis generated files
-setup.data
-setup.log
-
-# Merlin configuring file for Vim and Emacs
-.merlin
-
-# Dune generated files
-*.install
-
-# Local OPAM switch
-_opam/
-
-### Yeoman template
-bower_components/
-
-build/
-dist/
-
-### Haskell template
-dist-*
-cabal-dev
-*.hi
-*.hie
-*.chi
-*.chs.h
-*.dyn_o
-*.dyn_hi
-.hpc
-.hsenv
-.cabal-sandbox/
-cabal.sandbox.config
-*.prof
-*.aux
-*.hp
-*.eventlog
-.stack-work/
-cabal.project.local
-cabal.project.local~
-.HTF/
-.ghc.environment.*
-
-### ROS2 template
-install/
-log/
-
-# Ignore generated docs
-*.dox
-*.wikidoc
-
-# eclipse stuff
-.cproject
-
-# qcreator stuff
-
-srv/_*.py
-*.pcd
-*.pyc
-qtcreator-*
-
-*~
-
-# Emacs
-.#*
-
-# Colcon custom files
-COLCON_IGNORE
-AMENT_IGNORE
-
-### JupyterNotebooks template
-# gitignore template for Jupyter Notebooks
-# website: http://jupyter.org/
-
-.ipynb_checkpoints
-*/.ipynb_checkpoints/*
-
-# IPython
-profile_default/
-ipython_config.py
-
-# Remove previous ipynb_checkpoints
-# git rm -r .ipynb_checkpoints/
-
-### Prestashop template
-# Cache, temp and personal files
-
-/.htaccess
-
-# Cache
-/cache/*
-!/cache/.htaccess
-!/cache/cachefs/index.php
-!/cache/deprecated.txt
-!/cache/index.php
-!/cache/purifier/index.php
-!/cache/push/activity
-!/cache/push/index.php
-!/cache/push/trends
-!/cache/sandbox/index.php
-!/cache/smarty/cache/index.php
-!/cache/smarty/compile/index.php
-!/cache/smarty/index.php
-!/cache/tcpdf/index.php
-
-# Download
-/download/*
-!/download/.htaccess
-!/download/index.php
-
-# Images
-/img/*
-!/img/.htaccess
-!/img/index.php
-!/img/404.gif
-!/img/bg_500.png
-!/img/bg_loader.png
-!/img/favicon.ico
-!/img/loader.gif
-!/img/loadingAnimation.gif
-!/img/logo.jpg
-!/img/logo.png
-!/img/logo_invoice.jpg
-!/img/logo_stores.png
-!/img/macFFBgHack.png
-!/img/prestashop-avatar.png
-!/img/prestashop@2x.png
-!/img/preston-login-wink@2x.png
-!/img/preston-login@2x.png
-!/img/questionmark.png
-!/img/genders/index.php
-!/img/admin/index.php
-!/img/c/index.php
-!/img/cms/index.php
-!/img/co/index.php
-!/img/jquery-ui
-!/img/l/index.php
-!/img/m/index.php
-!/img/os/index.php
-!/img/p/index.php
-!/img/s/index.php
-!/img/scenes
-!/img/st/index.php
-!/img/su/index.php
-!/img/t/index.php
-!/img/tmp/index.php
-
-# Upload
-/upload/*
-!/upload/.htaccess
-
-/docs/phpdoc-sf/
-/composer.lock
-*.hot-update.js
-*.hot-update.json
-
-
-/admin-dev/autoupgrade/*
-!/admin-dev/autoupgrade/index.php
-!/admin-dev/autoupgrade/backup/index.php
-
-/admin-dev/backups/*
-!/admin-dev/backups/.htaccess
-
-/admin-dev/import/*
-!/admin-dev/import/.htaccess
-!/admin-dev/import/index.php
-
-/admin-dev/export/*
-!/admin-dev/export/.htaccess
-!/admin-dev/export/index.php
-
-# Downloaded RTL files
-/admin-dev/themes/default/css/bundle/default_rtl.css
-/admin-dev/themes/default/css/bundle/shared_rtl.css
-/admin-dev/themes/default/css/font_rtl.css
-/admin-dev/themes/default/css/overrides_rtl.css
-/admin-dev/themes/default/css/vendor/font-awesome/font-awesome_rtl.css
-/admin-dev/themes/default/css/vendor/nv.d3_rtl.css
-/admin-dev/themes/default/css/vendor/titatoggle-min_rtl.css
-/admin-dev/themes/default/public/theme_rtl.css
-/admin-dev/themes/new-theme/css/module/drop_rtl.css
-/admin-dev/themes/new-theme/css/right-sidebar_rtl.css
-
-themes/*/cache/*
-
-# Config
-
-config/settings.inc.php
-config/settings.old.php
-config/xml/*
-config/themes/*
-!config/xml/themes/default.xml
-themes/*/config/settings_*.json
-app/config/parameters.old.yml
-app/config/config.php
-
-# Themes, modules and overrides
-
-modules/*
-override/*
-themes/*/
-!themes/classic
-!themes/_core
-!themes/_libraries
-
-# Vendors and dependencies
-
-composer.phar
-php-cs-fixer
-.grunt/*
-
-# Translations and emails templates
-
-translations/*
-mails/*
-!mails/themes/
-!mails/_partials/
-themes/default-bootstrap/lang/*
-themes/default-bootstrap/modules/*/translations/*.php
-themes/default-bootstrap/mails/*
-!themes/default-bootstrap/mails/en/
-themes/default-bootstrap/modules/*/mails/*
-!themes/default-bootstrap/modules/*/mails/en
-
-# MISC
-
-*sitemap.xml
-/robots.txt
-
-# Symfony
-
-/bin/
-/app/Resources/geoip/GeoLite2-City.mmdb
-/app/Resources/translations/*
-!/app/Resources/translations/default
-/app/config/parameters.yml
-/app/config/parameters.php
-/build/
-/phpunit.xml
-!/var/cache
-/var/cache/*
-!var/cache/.gitkeep
-!/var/logs
-/var/logs/*
-!var/logs/.gitkeep
-!/var/sessions
-/var/sessions/*
-!var/sessions/.gitkeep
-!var/SymfonyRequirements.php
-/vendor/
-/web/bundles/
-
-
-### Eagle template
-# Ignore list for Eagle, a PCB layout tool
-
-# Backup files
-*.s#?
-*.b#?
-*.l#?
-*.b$?
-*.s$?
-*.l$?
-
-# Eagle project file
-# It contains a serial number and references to the file structure
-# on your computer.
-# comment the following line if you want to have your project file included.
-eagle.epf
-
-# Autorouter files
-*.pro
-*.job
-
-# CAM files
-*.$$$
-*.cmp
-*.ly2
-*.l15
-*.sol
-*.plc
-*.stc
-*.sts
-*.crc
-*.crs
-
-*.dri
-*.drl
-*.gpi
-*.pls
-*.ger
-*.xln
-
-*.drd
-*.drd.*
-
-*.s#*
-*.b#*
-
-*.info
-
-*.eps
-
-# file locks introduced since 7.x
-*.lck
-
-### Clojure template
-
-### JBoss4 template
-# gitignore for JBoss v4 projects
-
-/server/all/data
-/server/all/log
-/server/all/tmp
-/server/all/work
-/server/default/data
-/server/default/log
-/server/default/tmp
-/server/default/work
-/server/minimal/data
-/server/minimal/log
-/server/minimal/tmp
-/server/minimal/work
-
-# Note:
-# there may be other directories that contain *.xml.failed or *.war.failed files
-/server/default/deploy/*.xml.failed
-/server/default/deploy/*.war.failed
-
-### Toit template
-.packages
-*_pb.toit
-
-### IGORPro template
-# Avoid including Experiment files: they can be created and edited locally to test the ipf files
-*.pxp
-*.pxt
-*.uxp
-*.uxt
-
-### JBoss6 template
-# gitignore for JBoss v6 projects
-#
-# Note: to ensure empty directories remain part of the repository, like
-# `/server/minimal/lib`, you should add an empty `.gitignore` or `.gitkeep` file
-# to the directory - otherwise you may have issues when starting the service.
-
-/server/jbossweb-standalone/data
-/server/jbossweb-standalone/log
-/server/jbossweb-standalone/tmp
-/server/jbossweb-standalone/work
-/server/standard/data
-/server/standard/log
-/server/standard/tmp
-/server/standard/work
-/server/default/deploy/*.jar.failed
-/server/default/deploy/*.jar.dodeploy
-/server/default/deploy/*.xml.dodeploy
-/server/default/deploy/*.war.dodeploy
-
-
-### Rust template
-# Generated by Cargo
-# will have compiled files and executables
-debug/
-
-# Remove Cargo.lock from gitignore if creating an executable, leave it for libraries
-# More information here https://doc.rust-lang.org/cargo/guide/cargo-toml-vs-cargo-lock.html
-Cargo.lock
-
-# These are backup files generated by rustfmt
-**/*.rs.bk
-
-# MSVC Windows builds of rustc generate these, which store debugging information
-
-### Nikola template
-# gitignore template for Nikola static site generator
-# website: https://getnikola.com/
-
-.doit.db
-*.py[cod]
-cache/
-output/
-
-### SPFx template
-#SharePoint Framework (SPFx)
-# Logs
-
-# Dependency directories
-node_modules
-
-# Build generated files
-lib
-solution
-temp
-*.sppkg
-
-# Coverage directory used by tools like istanbul
-
-# OSX
-.DS_Store
-
-# Visual Studio files
-.ntvs_analysis.dat
-.vs
-bin
-obj
-
-# Resx Generated Code
-*.resx.ts
-
-# Styles Generated Code
-*.scss.ts
-
-### Perl template
-!Build/
-.last_cover_stats
-/META.yml
-/META.json
-/MYMETA.*
-*.pm.tdy
-*.bs
-
-# Devel::Cover
-cover_db/
-
-# Devel::NYTProf
-nytprof.out
-
-# Dist::Zilla
-/.build/
-
-# Module::Build
-Build
-Build.bat
-
-# Module::Install
-inc/
-
-# ExtUtils::MakeMaker
-/blib/
-/_eumm/
-/*.gz
-/Makefile
-/Makefile.old
-/MANIFEST.bak
-/pm_to_blib
-/*.zip
-
-### AL template
-### AL ###
-#Template for AL projects for Dynamics 365 Business Central
-#launch.json folder
-.vscode/
-#Cache folder
-.alcache/
-#Symbols folder
-.alpackages/
-#Snapshots folder
-.snapshots/
-#Testing Output folder
-.output/
-#Extension App-file
-*.app
-#Rapid Application Development File
-rad.json
-#Translation Base-file
-*.g.xlf
-#License-file
-*.flf
-#Test results file
-TestResults.xml
-### Bazel template
-# gitignore template for Bazel build system
-# website: https://bazel.build/
-
-# Ignore all bazel-* symlinks. There is no full list since this can change
-# based on the name of the directory bazel is cloned into.
-/bazel-*
-
-# Directories for the Bazel IntelliJ plugin containing the generated
-# IntelliJ project files and plugin configuration. Seperate directories are
-# for the IntelliJ, Android Studio and CLion versions of the plugin.
-/.ijwb/
-/.aswb/
-/.clwb/
-
-### CommonLisp template
-*.FASL
-*.fasl
-*.lisp-temp
-*.dfsl
-*.pfsl
-*.d64fsl
-*.p64fsl
-*.lx64fsl
-*.lx32fsl
-*.dx64fsl
-*.dx32fsl
-*.fx64fsl
-*.fx32fsl
-*.sx64fsl
-*.sx32fsl
-*.wx64fsl
-*.wx32fsl
-
-### GNOMEShellExtension template
-# Ignored files for GNOME extension git repository
-
-*.zip
-
-### JENKINS_HOME template
-# Learn more about Jenkins and JENKINS_HOME directory for which this file is
-# intended.
-#
-# http://jenkins-ci.org/
-# https://wiki.jenkins-ci.org/display/JENKINS/Administering+Jenkins
-#
-# Note: secret.key is purposefully not tracked by git. This should be backed up
-# separately because configs may contain secrets which were encrypted using the
-# secret.key. To back up secrets use 'tar -czf /tmp/secrets.tgz secret*' and
-# save the file separate from your repository. If you want secrets backed up
-# with configuration, then see the bottom of this file for an example.
-
-# Ignore all JENKINS_HOME except jobs directory, root xml config, and
-# .gitignore file.
-/*
-!/jobs
-!/.gitignore
-!/*.xml
-
-# Ignore all files in jobs subdirectories except for folders.
-# Note: git doesn't track folders, only file content.
-jobs/**
-!jobs/**/
-
-# Uncomment the following line to save next build numbers with config.
-
-#!jobs/**/nextBuildNumber
-
-# For performance reasons, we want to ignore builds in Jenkins jobs because it
-# contains many tiny files on large installations. This can impact git
-# performance when running even basic commands like 'git status'.
-builds
-indexing
-
-# Exclude only config.xml files in repository subdirectories.
-!config.xml
-
-# Don't track workspaces (when users build on the master).
-jobs/**/*workspace
-
-# Security warning: If secrets are included with your configuration, then an
-# adversary will be able to decrypt all encrypted secrets within Jenkins
-# config. Including secrets is a bad practice, but the example is included in
-# case someone still wants it for convenience. Uncomment the following line to
-# include secrets for decryption with repository configuration in Git.
-
-#!/secret*
-
-# As a result, only Jenkins settings and job config.xml files in JENKINS_HOME
-# will be tracked by git.
-
-### ExtJs template
-.architect
-bootstrap.css
-bootstrap.js
-bootstrap.json
-bootstrap.jsonp
-classic.json
-classic.jsonp
-ext/
-modern.json
-modern.jsonp
-resources/sass/.sass-cache/
-resources/.arch-internal-preview.css
-.arch-internal-preview.css
-
-### Joomla template
-/administrator/cache/*
-/administrator/components/com_actionlogs/*
-/administrator/components/com_admin/*
-/administrator/components/com_ajax/*
-/administrator/components/com_associations/*
-/administrator/components/com_banners/*
-/administrator/components/com_cache/*
-/administrator/components/com_categories/*
-/administrator/components/com_checkin/*
-/administrator/components/com_config/*
-/administrator/components/com_contact/*
-/administrator/components/com_content/*
-/administrator/components/com_contenthistory/*
-/administrator/components/com_cpanel/*
-/administrator/components/com_fields/*
-/administrator/components/com_finder/*
-/administrator/components/com_installer/*
-/administrator/components/com_joomlaupdate/*
-/administrator/components/com_languages/*
-/administrator/components/com_login/*
-/administrator/components/com_media/*
-/administrator/components/com_menus/*
-/administrator/components/com_messages/*
-/administrator/components/com_modules/*
-/administrator/components/com_newsfeeds/*
-/administrator/components/com_plugins/*
-/administrator/components/com_postinstall/*
-/administrator/components/com_privacy/*
-/administrator/components/com_redirect/*
-/administrator/components/com_search/*
-/administrator/components/com_tags/*
-/administrator/components/com_templates/*
-/administrator/components/com_users/*
-/administrator/help/*
-/administrator/includes/*
-/administrator/index.php
-/administrator/language/en-GB/en-GB.com_actionlogs.ini
-/administrator/language/en-GB/en-GB.com_actionlogs.sys.ini
-/administrator/language/en-GB/en-GB.com_admin.ini
-/administrator/language/en-GB/en-GB.com_admin.sys.ini
-/administrator/language/en-GB/en-GB.com_ajax.ini
-/administrator/language/en-GB/en-GB.com_ajax.sys.ini
-/administrator/language/en-GB/en-GB.com_associations.ini
-/administrator/language/en-GB/en-GB.com_associations.sys.ini
-/administrator/language/en-GB/en-GB.com_banners.ini
-/administrator/language/en-GB/en-GB.com_banners.sys.ini
-/administrator/language/en-GB/en-GB.com_cache.ini
-/administrator/language/en-GB/en-GB.com_cache.sys.ini
-/administrator/language/en-GB/en-GB.com_categories.ini
-/administrator/language/en-GB/en-GB.com_categories.sys.ini
-/administrator/language/en-GB/en-GB.com_checkin.ini
-/administrator/language/en-GB/en-GB.com_checkin.sys.ini
-/administrator/language/en-GB/en-GB.com_config.ini
-/administrator/language/en-GB/en-GB.com_config.sys.ini
-/administrator/language/en-GB/en-GB.com_contact.ini
-/administrator/language/en-GB/en-GB.com_contact.sys.ini
-/administrator/language/en-GB/en-GB.com_content.ini
-/administrator/language/en-GB/en-GB.com_content.sys.ini
-/administrator/language/en-GB/en-GB.com_contenthistory.ini
-/administrator/language/en-GB/en-GB.com_contenthistory.sys.ini
-/administrator/language/en-GB/en-GB.com_cpanel.ini
-/administrator/language/en-GB/en-GB.com_cpanel.sys.ini
-/administrator/language/en-GB/en-GB.com_fields.ini
-/administrator/language/en-GB/en-GB.com_fields.sys.ini
-/administrator/language/en-GB/en-GB.com_finder.ini
-/administrator/language/en-GB/en-GB.com_finder.sys.ini
-/administrator/language/en-GB/en-GB.com_installer.ini
-/administrator/language/en-GB/en-GB.com_installer.sys.ini
-/administrator/language/en-GB/en-GB.com_joomlaupdate.ini
-/administrator/language/en-GB/en-GB.com_joomlaupdate.sys.ini
-/administrator/language/en-GB/en-GB.com_languages.ini
-/administrator/language/en-GB/en-GB.com_languages.sys.ini
-/administrator/language/en-GB/en-GB.com_login.ini
-/administrator/language/en-GB/en-GB.com_login.sys.ini
-/administrator/language/en-GB/en-GB.com_mailto.sys.ini
-/administrator/language/en-GB/en-GB.com_media.ini
-/administrator/language/en-GB/en-GB.com_media.sys.ini
-/administrator/language/en-GB/en-GB.com_menus.ini
-/administrator/language/en-GB/en-GB.com_menus.sys.ini
-/administrator/language/en-GB/en-GB.com_messages.ini
-/administrator/language/en-GB/en-GB.com_messages.sys.ini
-/administrator/language/en-GB/en-GB.com_modules.ini
-/administrator/language/en-GB/en-GB.com_modules.sys.ini
-/administrator/language/en-GB/en-GB.com_newsfeeds.ini
-/administrator/language/en-GB/en-GB.com_newsfeeds.sys.ini
-/administrator/language/en-GB/en-GB.com_plugins.ini
-/administrator/language/en-GB/en-GB.com_plugins.sys.ini
-/administrator/language/en-GB/en-GB.com_postinstall.ini
-/administrator/language/en-GB/en-GB.com_postinstall.sys.ini
-/administrator/language/en-GB/en-GB.com_privacy.ini
-/administrator/language/en-GB/en-GB.com_privacy.sys.ini
-/administrator/language/en-GB/en-GB.com_redirect.ini
-/administrator/language/en-GB/en-GB.com_redirect.sys.ini
-/administrator/language/en-GB/en-GB.com_search.ini
-/administrator/language/en-GB/en-GB.com_search.sys.ini
-/administrator/language/en-GB/en-GB.com_tags.ini
-/administrator/language/en-GB/en-GB.com_tags.sys.ini
-/administrator/language/en-GB/en-GB.com_templates.ini
-/administrator/language/en-GB/en-GB.com_templates.sys.ini
-/administrator/language/en-GB/en-GB.com_users.ini
-/administrator/language/en-GB/en-GB.com_users.sys.ini
-/administrator/language/en-GB/en-GB.com_weblinks.ini
-/administrator/language/en-GB/en-GB.com_weblinks.sys.ini
-/administrator/language/en-GB/en-GB.com_wrapper.ini
-/administrator/language/en-GB/en-GB.com_wrapper.sys.ini
-/administrator/language/en-GB/en-GB.ini
-/administrator/language/en-GB/en-GB.lib_joomla.ini
-/administrator/language/en-GB/en-GB.localise.php
-/administrator/language/en-GB/en-GB.mod_custom.ini
-/administrator/language/en-GB/en-GB.mod_custom.sys.ini
-/administrator/language/en-GB/en-GB.mod_feed.ini
-/administrator/language/en-GB/en-GB.mod_feed.sys.ini
-/administrator/language/en-GB/en-GB.mod_latest.ini
-/administrator/language/en-GB/en-GB.mod_latest.sys.ini
-/administrator/language/en-GB/en-GB.mod_latestactions.ini
-/administrator/language/en-GB/en-GB.mod_latestactions.sys.ini
-/administrator/language/en-GB/en-GB.mod_logged.ini
-/administrator/language/en-GB/en-GB.mod_logged.sys.ini
-/administrator/language/en-GB/en-GB.mod_login.ini
-/administrator/language/en-GB/en-GB.mod_login.sys.ini
-/administrator/language/en-GB/en-GB.mod_menu.ini
-/administrator/language/en-GB/en-GB.mod_menu.sys.ini
-/administrator/language/en-GB/en-GB.mod_multilangstatus.ini
-/administrator/language/en-GB/en-GB.mod_multilangstatus.sys.ini
-/administrator/language/en-GB/en-GB.mod_online.ini
-/administrator/language/en-GB/en-GB.mod_online.sys.ini
-/administrator/language/en-GB/en-GB.mod_popular.ini
-/administrator/language/en-GB/en-GB.mod_popular.sys.ini
-/administrator/language/en-GB/en-GB.mod_privacy_dashboard.ini
-/administrator/language/en-GB/en-GB.mod_privacy_dashboard.sys.ini
-/administrator/language/en-GB/en-GB.mod_quickicon.ini
-/administrator/language/en-GB/en-GB.mod_quickicon.sys.ini
-/administrator/language/en-GB/en-GB.mod_sampledata.ini
-/administrator/language/en-GB/en-GB.mod_sampledata.sys.ini
-/administrator/language/en-GB/en-GB.mod_stats_admin.ini
-/administrator/language/en-GB/en-GB.mod_stats_admin.sys.ini
-/administrator/language/en-GB/en-GB.mod_status.ini
-/administrator/language/en-GB/en-GB.mod_status.sys.ini
-/administrator/language/en-GB/en-GB.mod_submenu.ini
-/administrator/language/en-GB/en-GB.mod_submenu.sys.ini
-/administrator/language/en-GB/en-GB.mod_title.ini
-/administrator/language/en-GB/en-GB.mod_title.sys.ini
-/administrator/language/en-GB/en-GB.mod_toolbar.ini
-/administrator/language/en-GB/en-GB.mod_toolbar.sys.ini
-/administrator/language/en-GB/en-GB.mod_unread.ini
-/administrator/language/en-GB/en-GB.mod_unread.sys.ini
-/administrator/language/en-GB/en-GB.mod_version.ini
-/administrator/language/en-GB/en-GB.mod_version.sys.ini
-/administrator/language/en-GB/en-GB.plg_actionlog_joomla.ini
-/administrator/language/en-GB/en-GB.plg_actionlog_joomla.sys.ini
-/administrator/language/en-GB/en-GB.plg_authentication_cookie.ini
-/administrator/language/en-GB/en-GB.plg_authentication_cookie.sys.ini
-/administrator/language/en-GB/en-GB.plg_authentication_example.ini
-/administrator/language/en-GB/en-GB.plg_authentication_example.sys.ini
-/administrator/language/en-GB/en-GB.plg_authentication_gmail.ini
-/administrator/language/en-GB/en-GB.plg_authentication_gmail.sys.ini
-/administrator/language/en-GB/en-GB.plg_authentication_joomla.ini
-/administrator/language/en-GB/en-GB.plg_authentication_joomla.sys.ini
-/administrator/language/en-GB/en-GB.plg_authentication_ldap.ini
-/administrator/language/en-GB/en-GB.plg_authentication_ldap.sys.ini
-/administrator/language/en-GB/en-GB.plg_captcha_recaptcha.ini
-/administrator/language/en-GB/en-GB.plg_captcha_recaptcha.sys.ini
-/administrator/language/en-GB/en-GB.plg_captcha_recaptcha_invisible.ini
-/administrator/language/en-GB/en-GB.plg_captcha_recaptcha_invisible.sys.ini
-/administrator/language/en-GB/en-GB.plg_content_confirmconsent.ini
-/administrator/language/en-GB/en-GB.plg_content_confirmconsent.sys.ini
-/administrator/language/en-GB/en-GB.plg_content_contact.ini
-/administrator/language/en-GB/en-GB.plg_content_contact.sys.ini
-/administrator/language/en-GB/en-GB.plg_content_emailcloak.ini
-/administrator/language/en-GB/en-GB.plg_content_emailcloak.sys.ini
-/administrator/language/en-GB/en-GB.plg_content_fields.ini
-/administrator/language/en-GB/en-GB.plg_content_fields.sys.ini
-/administrator/language/en-GB/en-GB.plg_content_finder.ini
-/administrator/language/en-GB/en-GB.plg_content_finder.sys.ini
-/administrator/language/en-GB/en-GB.plg_content_geshi.ini
-/administrator/language/en-GB/en-GB.plg_content_geshi.sys.ini
-/administrator/language/en-GB/en-GB.plg_content_joomla.ini
-/administrator/language/en-GB/en-GB.plg_content_joomla.sys.ini
-/administrator/language/en-GB/en-GB.plg_content_loadmodule.ini
-/administrator/language/en-GB/en-GB.plg_content_loadmodule.sys.ini
-/administrator/language/en-GB/en-GB.plg_content_pagebreak.ini
-/administrator/language/en-GB/en-GB.plg_content_pagebreak.sys.ini
-/administrator/language/en-GB/en-GB.plg_content_pagenavigation.ini
-/administrator/language/en-GB/en-GB.plg_content_pagenavigation.sys.ini
-/administrator/language/en-GB/en-GB.plg_content_vote.ini
-/administrator/language/en-GB/en-GB.plg_content_vote.sys.ini
-/administrator/language/en-GB/en-GB.plg_editors-xtd_article.ini
-/administrator/language/en-GB/en-GB.plg_editors-xtd_article.sys.ini
-/administrator/language/en-GB/en-GB.plg_editors-xtd_contact.ini
-/administrator/language/en-GB/en-GB.plg_editors-xtd_contact.sys.ini
-/administrator/language/en-GB/en-GB.plg_editors-xtd_fields.ini
-/administrator/language/en-GB/en-GB.plg_editors-xtd_fields.sys.ini
-/administrator/language/en-GB/en-GB.plg_editors-xtd_image.ini
-/administrator/language/en-GB/en-GB.plg_editors-xtd_image.sys.ini
-/administrator/language/en-GB/en-GB.plg_editors-xtd_menu.ini
-/administrator/language/en-GB/en-GB.plg_editors-xtd_menu.sys.ini
-/administrator/language/en-GB/en-GB.plg_editors-xtd_module.ini
-/administrator/language/en-GB/en-GB.plg_editors-xtd_module.sys.ini
-/administrator/language/en-GB/en-GB.plg_editors-xtd_pagebreak.ini
-/administrator/language/en-GB/en-GB.plg_editors-xtd_pagebreak.sys.ini
-/administrator/language/en-GB/en-GB.plg_editors-xtd_readmore.ini
-/administrator/language/en-GB/en-GB.plg_editors-xtd_readmore.sys.ini
-/administrator/language/en-GB/en-GB.plg_editors_codemirror.ini
-/administrator/language/en-GB/en-GB.plg_editors_codemirror.sys.ini
-/administrator/language/en-GB/en-GB.plg_editors_none.ini
-/administrator/language/en-GB/en-GB.plg_editors_none.sys.ini
-/administrator/language/en-GB/en-GB.plg_editors_tinymce.ini
-/administrator/language/en-GB/en-GB.plg_editors_tinymce.sys.ini
-/administrator/language/en-GB/en-GB.plg_extension_joomla.ini
-/administrator/language/en-GB/en-GB.plg_extension_joomla.sys.ini
-/administrator/language/en-GB/en-GB.plg_fields_calendar.ini
-/administrator/language/en-GB/en-GB.plg_fields_calendar.sys.ini
-/administrator/language/en-GB/en-GB.plg_fields_checkboxes.ini
-/administrator/language/en-GB/en-GB.plg_fields_checkboxes.sys.ini
-/administrator/language/en-GB/en-GB.plg_fields_color.ini
-/administrator/language/en-GB/en-GB.plg_fields_color.sys.ini
-/administrator/language/en-GB/en-GB.plg_fields_editor.ini
-/administrator/language/en-GB/en-GB.plg_fields_editor.sys.ini
-/administrator/language/en-GB/en-GB.plg_fields_image.ini
-/administrator/language/en-GB/en-GB.plg_fields_image.sys.ini
-/administrator/language/en-GB/en-GB.plg_fields_imagelist.ini
-/administrator/language/en-GB/en-GB.plg_fields_imagelist.sys.ini
-/administrator/language/en-GB/en-GB.plg_fields_integer.ini
-/administrator/language/en-GB/en-GB.plg_fields_integer.sys.ini
-/administrator/language/en-GB/en-GB.plg_fields_list.ini
-/administrator/language/en-GB/en-GB.plg_fields_list.sys.ini
-/administrator/language/en-GB/en-GB.plg_fields_media.ini
-/administrator/language/en-GB/en-GB.plg_fields_media.sys.ini
-/administrator/language/en-GB/en-GB.plg_fields_radio.ini
-/administrator/language/en-GB/en-GB.plg_fields_radio.sys.ini
-/administrator/language/en-GB/en-GB.plg_fields_repeatable.ini
-/administrator/language/en-GB/en-GB.plg_fields_repeatable.sys.ini
-/administrator/language/en-GB/en-GB.plg_fields_sql.ini
-/administrator/language/en-GB/en-GB.plg_fields_sql.sys.ini
-/administrator/language/en-GB/en-GB.plg_fields_text.ini
-/administrator/language/en-GB/en-GB.plg_fields_text.sys.ini
-/administrator/language/en-GB/en-GB.plg_fields_textarea.ini
-/administrator/language/en-GB/en-GB.plg_fields_textarea.sys.ini
-/administrator/language/en-GB/en-GB.plg_fields_url.ini
-/administrator/language/en-GB/en-GB.plg_fields_url.sys.ini
-/administrator/language/en-GB/en-GB.plg_fields_user.ini
-/administrator/language/en-GB/en-GB.plg_fields_user.sys.ini
-/administrator/language/en-GB/en-GB.plg_fields_usergrouplist.ini
-/administrator/language/en-GB/en-GB.plg_fields_usergrouplist.sys.ini
-/administrator/language/en-GB/en-GB.plg_finder_categories.ini
-/administrator/language/en-GB/en-GB.plg_finder_categories.sys.ini
-/administrator/language/en-GB/en-GB.plg_finder_contacts.ini
-/administrator/language/en-GB/en-GB.plg_finder_contacts.sys.ini
-/administrator/language/en-GB/en-GB.plg_finder_content.ini
-/administrator/language/en-GB/en-GB.plg_finder_content.sys.ini
-/administrator/language/en-GB/en-GB.plg_finder_newsfeeds.ini
-/administrator/language/en-GB/en-GB.plg_finder_newsfeeds.sys.ini
-/administrator/language/en-GB/en-GB.plg_finder_tags.ini
-/administrator/language/en-GB/en-GB.plg_finder_tags.sys.ini
-/administrator/language/en-GB/en-GB.plg_finder_weblinks.ini
-/administrator/language/en-GB/en-GB.plg_finder_weblinks.sys.ini
-/administrator/language/en-GB/en-GB.plg_installer_folderinstaller.ini
-/administrator/language/en-GB/en-GB.plg_installer_folderinstaller.sys.ini
-/administrator/language/en-GB/en-GB.plg_installer_packageinstaller.ini
-/administrator/language/en-GB/en-GB.plg_installer_packageinstaller.sys.ini
-/administrator/language/en-GB/en-GB.plg_installer_urlinstaller.ini
-/administrator/language/en-GB/en-GB.plg_installer_urlinstaller.sys.ini
-/administrator/language/en-GB/en-GB.plg_installer_webinstaller.ini
-/administrator/language/en-GB/en-GB.plg_installer_webinstaller.sys.ini
-/administrator/language/en-GB/en-GB.plg_privacy_actionlogs.ini
-/administrator/language/en-GB/en-GB.plg_privacy_actionlogs.sys.ini
-/administrator/language/en-GB/en-GB.plg_privacy_consents.ini
-/administrator/language/en-GB/en-GB.plg_privacy_consents.sys.ini
-/administrator/language/en-GB/en-GB.plg_privacy_contact.ini
-/administrator/language/en-GB/en-GB.plg_privacy_contact.sys.ini
-/administrator/language/en-GB/en-GB.plg_privacy_content.ini
-/administrator/language/en-GB/en-GB.plg_privacy_content.sys.ini
-/administrator/language/en-GB/en-GB.plg_privacy_message.ini
-/administrator/language/en-GB/en-GB.plg_privacy_message.sys.ini
-/administrator/language/en-GB/en-GB.plg_privacy_user.ini
-/administrator/language/en-GB/en-GB.plg_privacy_user.sys.ini
-/administrator/language/en-GB/en-GB.plg_quickicon_extensionupdate.ini
-/administrator/language/en-GB/en-GB.plg_quickicon_extensionupdate.sys.ini
-/administrator/language/en-GB/en-GB.plg_quickicon_joomlaupdate.ini
-/administrator/language/en-GB/en-GB.plg_quickicon_joomlaupdate.sys.ini
-/administrator/language/en-GB/en-GB.plg_quickicon_phpversioncheck.ini
-/administrator/language/en-GB/en-GB.plg_quickicon_phpversioncheck.sys.ini
-/administrator/language/en-GB/en-GB.plg_quickicon_privacycheck.ini
-/administrator/language/en-GB/en-GB.plg_quickicon_privacycheck.sys.ini
-/administrator/language/en-GB/en-GB.plg_sampledata_blog.ini
-/administrator/language/en-GB/en-GB.plg_sampledata_blog.sys.ini
-/administrator/language/en-GB/en-GB.plg_search_categories.ini
-/administrator/language/en-GB/en-GB.plg_search_categories.sys.ini
-/administrator/language/en-GB/en-GB.plg_search_contacts.ini
-/administrator/language/en-GB/en-GB.plg_search_contacts.sys.ini
-/administrator/language/en-GB/en-GB.plg_search_content.ini
-/administrator/language/en-GB/en-GB.plg_search_content.sys.ini
-/administrator/language/en-GB/en-GB.plg_search_newsfeeds.ini
-/administrator/language/en-GB/en-GB.plg_search_newsfeeds.sys.ini
-/administrator/language/en-GB/en-GB.plg_search_tags.ini
-/administrator/language/en-GB/en-GB.plg_search_tags.sys.ini
-/administrator/language/en-GB/en-GB.plg_search_weblinks.ini
-/administrator/language/en-GB/en-GB.plg_search_weblinks.sys.ini
-/administrator/language/en-GB/en-GB.plg_system_actionlogs.ini
-/administrator/language/en-GB/en-GB.plg_system_actionlogs.sys.ini
-/administrator/language/en-GB/en-GB.plg_system_cache.ini
-/administrator/language/en-GB/en-GB.plg_system_cache.sys.ini
-/administrator/language/en-GB/en-GB.plg_system_debug.ini
-/administrator/language/en-GB/en-GB.plg_system_debug.sys.ini
-/administrator/language/en-GB/en-GB.plg_system_fields.ini
-/administrator/language/en-GB/en-GB.plg_system_fields.sys.ini
-/administrator/language/en-GB/en-GB.plg_system_highlight.ini
-/administrator/language/en-GB/en-GB.plg_system_highlight.sys.ini
-/administrator/language/en-GB/en-GB.plg_system_languagecode.ini
-/administrator/language/en-GB/en-GB.plg_system_languagecode.sys.ini
-/administrator/language/en-GB/en-GB.plg_system_languagefilter.ini
-/administrator/language/en-GB/en-GB.plg_system_languagefilter.sys.ini
-/administrator/language/en-GB/en-GB.plg_system_log.ini
-/administrator/language/en-GB/en-GB.plg_system_log.sys.ini
-/administrator/language/en-GB/en-GB.plg_system_logout.ini
-/administrator/language/en-GB/en-GB.plg_system_logout.sys.ini
-/administrator/language/en-GB/en-GB.plg_system_logrotation.ini
-/administrator/language/en-GB/en-GB.plg_system_logrotation.sys.ini
-/administrator/language/en-GB/en-GB.plg_system_p3p.ini
-/administrator/language/en-GB/en-GB.plg_system_p3p.sys.ini
-/administrator/language/en-GB/en-GB.plg_system_privacyconsent.ini
-/administrator/language/en-GB/en-GB.plg_system_privacyconsent.sys.ini
-/administrator/language/en-GB/en-GB.plg_system_redirect.ini
-/administrator/language/en-GB/en-GB.plg_system_redirect.sys.ini
-/administrator/language/en-GB/en-GB.plg_system_remember.ini
-/administrator/language/en-GB/en-GB.plg_system_remember.sys.ini
-/administrator/language/en-GB/en-GB.plg_system_sef.ini
-/administrator/language/en-GB/en-GB.plg_system_sef.sys.ini
-/administrator/language/en-GB/en-GB.plg_system_sessiongc.ini
-/administrator/language/en-GB/en-GB.plg_system_sessiongc.sys.ini
-/administrator/language/en-GB/en-GB.plg_system_stats.ini
-/administrator/language/en-GB/en-GB.plg_system_stats.sys.ini
-/administrator/language/en-GB/en-GB.plg_system_updatenotification.ini
-/administrator/language/en-GB/en-GB.plg_system_updatenotification.sys.ini
-/administrator/language/en-GB/en-GB.plg_twofactorauth_totp.ini
-/administrator/language/en-GB/en-GB.plg_twofactorauth_totp.sys.ini
-/administrator/language/en-GB/en-GB.plg_twofactorauth_yubikey.ini
-/administrator/language/en-GB/en-GB.plg_twofactorauth_yubikey.sys.ini
-/administrator/language/en-GB/en-GB.plg_user_contactcreator.ini
-/administrator/language/en-GB/en-GB.plg_user_contactcreator.sys.ini
-/administrator/language/en-GB/en-GB.plg_user_joomla.ini
-/administrator/language/en-GB/en-GB.plg_user_joomla.sys.ini
-/administrator/language/en-GB/en-GB.plg_user_profile.ini
-/administrator/language/en-GB/en-GB.plg_user_profile.sys.ini
-/administrator/language/en-GB/en-GB.plg_user_terms.ini
-/administrator/language/en-GB/en-GB.plg_user_terms.sys.ini
-/administrator/language/en-GB/en-GB.tpl_hathor.ini
-/administrator/language/en-GB/en-GB.tpl_hathor.sys.ini
-/administrator/language/en-GB/en-GB.tpl_isis.ini
-/administrator/language/en-GB/en-GB.tpl_isis.sys.ini
-/administrator/language/en-GB/en-GB.xml
-/administrator/language/en-GB/install.xml
-/administrator/language/overrides/*
-/administrator/language/index.html
-/administrator/logs/*
-/administrator/manifests/files/joomla.xml
-/administrator/manifests/libraries/fof.xml
-/administrator/manifests/libraries/idna_convert.xml
-/administrator/manifests/libraries/joomla.xml
-/administrator/manifests/libraries/phpass.xml
-/administrator/manifests/libraries/phputf8.xml
-/administrator/manifests/packages/pkg_en-GB.xml
-/administrator/manifests/packages/index.html
-/administrator/modules/mod_custom/*
-/administrator/modules/mod_feed/*
-/administrator/modules/mod_latest/*
-/administrator/modules/mod_latestactions/*
-/administrator/modules/mod_logged/*
-/administrator/modules/mod_login/*
-/administrator/modules/mod_menu/*
-/administrator/modules/mod_multilangstatus/*
-/administrator/modules/mod_online/*
-/administrator/modules/mod_popular/*
-/administrator/modules/mod_privacy_dashboard/*
-/administrator/modules/mod_quickicon/*
-/administrator/modules/mod_sampledata/*
-/administrator/modules/mod_stats_admin/*
-/administrator/modules/mod_status/*
-/administrator/modules/mod_submenu/*
-/administrator/modules/mod_title/*
-/administrator/modules/mod_toolbar/*
-/administrator/modules/mod_unread/*
-/administrator/modules/mod_version/*
-/administrator/templates/hathor/*
-/administrator/templates/isis/*
-/administrator/templates/system/*
-/bin/*
-/cli/*
-/components/com_ajax/*
-/components/com_banners/*
-/components/com_config/*
-/components/com_contact/*
-/components/com_content/*
-/components/com_contenthistory/*
-/components/com_fields/*
-/components/com_finder/*
-/components/com_mailto/*
-/components/com_media/*
-/components/com_menus/*
-/components/com_modules/*
-/components/com_newsfeeds/*
-/components/com_privacy/*
-/components/com_search/*
-/components/com_tags/*
-/components/com_users/*
-/components/com_wrapper/*
-/components/index.html
-/images/banners/*
-/images/headers/*
-/images/sampledata/*
-/images/index.html
-/images/joomla*
-/images/powered_by.png
-/includes/*
-/installation/*
-/language/en-GB/en-GB.com_ajax.ini
-/language/en-GB/en-GB.com_config.ini
-/language/en-GB/en-GB.com_contact.ini
-/language/en-GB/en-GB.com_content.ini
-/language/en-GB/en-GB.com_finder.ini
-/language/en-GB/en-GB.com_mailto.ini
-/language/en-GB/en-GB.com_media.ini
-/language/en-GB/en-GB.com_messages.ini
-/language/en-GB/en-GB.com_newsfeeds.ini
-/language/en-GB/en-GB.com_privacy.ini
-/language/en-GB/en-GB.com_search.ini
-/language/en-GB/en-GB.com_tags.ini
-/language/en-GB/en-GB.com_users.ini
-/language/en-GB/en-GB.com_weblinks.ini
-/language/en-GB/en-GB.com_wrapper.ini
-/language/en-GB/en-GB.files_joomla.sys.ini
-/language/en-GB/en-GB.finder_cli.ini
-/language/en-GB/en-GB.ini
-/language/en-GB/en-GB.lib_fof.ini
-/language/en-GB/en-GB.lib_fof.sys.ini
-/language/en-GB/en-GB.lib_idna_convert.sys.ini
-/language/en-GB/en-GB.lib_joomla.ini
-/language/en-GB/en-GB.lib_joomla.sys.ini
-/language/en-GB/en-GB.lib_phpass.sys.ini
-/language/en-GB/en-GB.lib_phpmailer.sys.ini
-/language/en-GB/en-GB.lib_phputf8.sys.ini
-/language/en-GB/en-GB.lib_simplepie.sys.ini
-/language/en-GB/en-GB.localise.php
-/language/en-GB/en-GB.mod_articles_archive.ini
-/language/en-GB/en-GB.mod_articles_archive.sys.ini
-/language/en-GB/en-GB.mod_articles_categories.ini
-/language/en-GB/en-GB.mod_articles_categories.sys.ini
-/language/en-GB/en-GB.mod_articles_category.ini
-/language/en-GB/en-GB.mod_articles_category.sys.ini
-/language/en-GB/en-GB.mod_articles_latest.ini
-/language/en-GB/en-GB.mod_articles_latest.sys.ini
-/language/en-GB/en-GB.mod_articles_news.ini
-/language/en-GB/en-GB.mod_articles_news.sys.ini
-/language/en-GB/en-GB.mod_articles_popular.ini
-/language/en-GB/en-GB.mod_articles_popular.sys.ini
-/language/en-GB/en-GB.mod_banners.ini
-/language/en-GB/en-GB.mod_banners.sys.ini
-/language/en-GB/en-GB.mod_breadcrumbs.ini
-/language/en-GB/en-GB.mod_breadcrumbs.sys.ini
-/language/en-GB/en-GB.mod_custom.ini
-/language/en-GB/en-GB.mod_custom.sys.ini
-/language/en-GB/en-GB.mod_feed.ini
-/language/en-GB/en-GB.mod_feed.sys.ini
-/language/en-GB/en-GB.mod_finder.ini
-/language/en-GB/en-GB.mod_finder.sys.ini
-/language/en-GB/en-GB.mod_footer.ini
-/language/en-GB/en-GB.mod_footer.sys.ini
-/language/en-GB/en-GB.mod_languages.ini
-/language/en-GB/en-GB.mod_languages.sys.ini
-/language/en-GB/en-GB.mod_login.ini
-/language/en-GB/en-GB.mod_login.sys.ini
-/language/en-GB/en-GB.mod_menu.ini
-/language/en-GB/en-GB.mod_menu.sys.ini
-/language/en-GB/en-GB.mod_random_image.ini
-/language/en-GB/en-GB.mod_random_image.sys.ini
-/language/en-GB/en-GB.mod_related_items.ini
-/language/en-GB/en-GB.mod_related_items.sys.ini
-/language/en-GB/en-GB.mod_search.ini
-/language/en-GB/en-GB.mod_search.sys.ini
-/language/en-GB/en-GB.mod_stats.ini
-/language/en-GB/en-GB.mod_stats.sys.ini
-/language/en-GB/en-GB.mod_syndicate.ini
-/language/en-GB/en-GB.mod_syndicate.sys.ini
-/language/en-GB/en-GB.mod_tags_popular.ini
-/language/en-GB/en-GB.mod_tags_popular.sys.ini
-/language/en-GB/en-GB.mod_tags_similar.ini
-/language/en-GB/en-GB.mod_tags_similar.sys.ini
-/language/en-GB/en-GB.mod_users_latest.ini
-/language/en-GB/en-GB.mod_users_latest.sys.ini
-/language/en-GB/en-GB.mod_weblinks.ini
-/language/en-GB/en-GB.mod_weblinks.sys.ini
-/language/en-GB/en-GB.mod_whosonline.ini
-/language/en-GB/en-GB.mod_whosonline.sys.ini
-/language/en-GB/en-GB.mod_wrapper.ini
-/language/en-GB/en-GB.mod_wrapper.sys.ini
-/language/en-GB/en-GB.tpl_atomic.ini
-/language/en-GB/en-GB.tpl_atomic.sys.ini
-/language/en-GB/en-GB.tpl_beez3.ini
-/language/en-GB/en-GB.tpl_beez3.sys.ini
-/language/en-GB/en-GB.tpl_beez5.ini
-/language/en-GB/en-GB.tpl_beez5.sys.ini
-/language/en-GB/en-GB.tpl_beez_20.ini
-/language/en-GB/en-GB.tpl_beez_20.sys.ini
-/language/en-GB/en-GB.tpl_protostar.ini
-/language/en-GB/en-GB.tpl_protostar.sys.ini
-/language/en-GB/en-GB.xml
-/language/en-GB/install.xml
-/language/overrides/*
-/language/index.html
-/layouts/joomla/*
-/layouts/libraries/*
-/layouts/plugins/*
-/layouts/index.html
-/libraries/cms/*
-/libraries/fof/*
-/libraries/idna_convert/*
-/libraries/joomla/*
-/libraries/legacy/*
-/libraries/php-encryption/*
-/libraries/phpass/*
-/libraries/phpmailer/*
-/libraries/phputf8/*
-/libraries/simplepie/*
-/libraries/src/*
-/libraries/vendor/*
-/libraries/classmap.php
-/libraries/cms.php
-/libraries/import.legacy.php
-/libraries/import.php
-/libraries/index.html
-/libraries/loader.php
-/media/cms/*
-/media/com_associations/*
-/media/com_contact/*
-/media/com_content/*
-/media/com_contenthistory/*
-/media/com_fields/*
-/media/com_finder/*
-/media/com_joomlaupdate/*
-/media/com_menus/*
-/media/com_modules/*
-/media/com_wrapper/*
-/media/contacts/*
-/media/editors/*
-/media/jui/*
-/media/mailto/*
-/media/media/*
-/media/mod_languages/*
-/media/mod_sampledata/*
-/media/overrider/*
-/media/plg_captcha_recaptcha/*
-/media/plg_captcha_recaptcha_invisible/*
-/media/plg_quickicon_extensionupdate/*
-/media/plg_quickicon_joomlaupdate/*
-/media/plg_quickicon_privacycheck/*
-/media/plg_system_highlight/*
-/media/plg_system_stats/*
-/media/plg_twofactorauth_totp/*
-/media/system/*
-/media/index.html
-/modules/mod_articles_archive/*
-/modules/mod_articles_categories/*
-/modules/mod_articles_category/*
-/modules/mod_articles_latest/*
-/modules/mod_articles_news/*
-/modules/mod_articles_popular/*
-/modules/mod_banners/*
-/modules/mod_breadcrumbs/*
-/modules/mod_custom/*
-/modules/mod_feed/*
-/modules/mod_finder/*
-/modules/mod_footer/*
-/modules/mod_languages/*
-/modules/mod_login/*
-/modules/mod_menu/*
-/modules/mod_random_image/*
-/modules/mod_related_items/*
-/modules/mod_search/*
-/modules/mod_stats/*
-/modules/mod_syndicate/*
-/modules/mod_tags_popular/*
-/modules/mod_tags_similar/*
-/modules/mod_users_latest/*
-/modules/mod_whosonline/*
-/modules/mod_wrapper/*
-/modules/index.html
-/plugins/actionlog/joomla/*
-/plugins/authentication/cookie/*
-/plugins/authentication/example/*
-/plugins/authentication/gmail/*
-/plugins/authentication/joomla/*
-/plugins/authentication/ldap/*
-/plugins/captcha/recaptcha/*
-/plugins/captcha/recaptcha_invisible/*
-/plugins/content/confirmconsent/*
-/plugins/content/contact/*
-/plugins/content/emailcloak/*
-/plugins/content/example/*
-/plugins/content/fields/*
-/plugins/content/finder/*
-/plugins/content/geshi/*
-/plugins/content/joomla/*
-/plugins/content/loadmodule/*
-/plugins/content/pagebreak/*
-/plugins/content/pagenavigation/*
-/plugins/content/vote/*
-/plugins/editors/codemirror/*
-/plugins/editors/none/*
-/plugins/editors/tinymce/*
-/plugins/editors-xtd/article/*
-/plugins/editors-xtd/contact/*
-/plugins/editors-xtd/fields/*
-/plugins/editors-xtd/image/*
-/plugins/editors-xtd/menu/*
-/plugins/editors-xtd/module/*
-/plugins/editors-xtd/pagebreak/*
-/plugins/editors-xtd/readmore/*
-/plugins/extension/example/*
-/plugins/extension/joomla/*
-/plugins/fields/calendar/*
-/plugins/fields/checkboxes/*
-/plugins/fields/color/*
-/plugins/fields/editor/*
-/plugins/fields/imagelist/*
-/plugins/fields/integer/*
-/plugins/fields/list/*
-/plugins/fields/media/*
-/plugins/fields/radio/*
-/plugins/fields/repeatable/*
-/plugins/fields/sql/*
-/plugins/fields/text/*
-/plugins/fields/textarea/*
-/plugins/fields/url/*
-/plugins/fields/user/*
-/plugins/fields/usergrouplist/*
-/plugins/finder/categories/*
-/plugins/finder/contacts/*
-/plugins/finder/content/*
-/plugins/finder/newsfeeds/*
-/plugins/finder/tags/*
-/plugins/installer/folderinstaller/*
-/plugins/installer/packageinstaller/*
-/plugins/installer/urlinstaller/*
-/plugins/privacy/actionlogs/*
-/plugins/privacy/consents/*
-/plugins/privacy/contact/*
-/plugins/privacy/content/*
-/plugins/privacy/message/*
-/plugins/privacy/user/*
-/plugins/quickicon/extensionupdate/*
-/plugins/quickicon/joomlaupdate/*
-/plugins/quickicon/phpversioncheck/*
-/plugins/quickicon/privacycheck/*
-/plugins/quickicon/index.html
-/plugins/sampledata/blog/*
-/plugins/search/categories/*
-/plugins/search/contacts/*
-/plugins/search/content/*
-/plugins/search/newsfeeds/*
-/plugins/search/tags/*
-/plugins/search/weblinks/*
-/plugins/search/index.html
-/plugins/system/actionlogs/*
-/plugins/system/cache/*
-/plugins/system/debug/*
-/plugins/system/fields/*
-/plugins/system/highlight/*
-/plugins/system/languagecode/*
-/plugins/system/languagefilter/*
-/plugins/system/log/*
-/plugins/system/logout/*
-/plugins/system/logrotation/*
-/plugins/system/p3p/*
-/plugins/system/privacyconsent/*
-/plugins/system/redirect/*
-/plugins/system/remember/*
-/plugins/system/sef/*
-/plugins/system/sessiongc/*
-/plugins/system/stats/*
-/plugins/system/updatenotification/*
-/plugins/system/index.html
-/plugins/twofactorauth/totp/*
-/plugins/twofactorauth/yubikey/*
-/plugins/user/contactcreator/*
-/plugins/user/example/*
-/plugins/user/joomla/*
-/plugins/user/profile/*
-/plugins/user/terms/*
-/plugins/user/index.html
-/plugins/index.html
-/templates/beez3/*
-/templates/protostar/*
-/templates/system/*
-/templates/index.html
-/tmp/*
-/configuration.php
-/htaccess.txt
-/index.php
-/joomla.xml
-/LICENSE.txt
-/README.txt
-/robots.txt.dist
-/web.config.txt
-
-### Drupal template
-# gitignore template for Drupal 8 projects
-#
-# earlier versions of Drupal are tracked in `community/PHP/`
-#
-# follows official upstream conventions:
-# https://www.drupal.org/docs/develop/using-composer
-
-# Ignore configuration files that may contain sensitive information
-/web/sites/*/*settings*.php
-/web/sites/*/*services*.yml
-
-# Ignore paths that may contain user-generated content
-/web/sites/*/files
-/web/sites/*/public
-/web/sites/*/private
-/web/sites/*/files-public
-/web/sites/*/files-private
-
-# Ignore paths that may contain temporary files
-/web/sites/*/translations
-/web/sites/*/tmp
-/web/sites/*/cache
-
-# Ignore drupal core (if not versioning drupal sources)
-/web/vendor
-/web/core
-/web/modules/README.txt
-/web/profiles/README.txt
-/web/sites/development.services.yml
-/web/sites/example.settings.local.php
-/web/sites/example.sites.php
-/web/sites/README.txt
-/web/themes/README.txt
-/web/.csslintrc
-/web/.editorconfig
-/web/.eslintignore
-/web/.eslintrc.json
-/web/.gitattributes
-/web/.htaccess
-/web/.ht.router.php
-/web/autoload.php
-/web/composer.json
-/web/composer.lock
-/web/example.gitignore
-/web/index.php
-/web/INSTALL.txt
-/web/LICENSE.txt
-/web/README.txt
-/web/robots.txt
-/web/update.php
-/web/web.config
-
-# Ignore vendor dependencies and scripts
-/vendor
-/composer.phar
-/composer
-/robo.phar
-/robo
-/drush.phar
-/drush
-/drupal.phar
-/drupal
-
-### GitBook template
-# Node rules:
-## Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
-
-## Dependency directory
-## Commenting this out is preferred by some people, see
-## https://docs.npmjs.com/misc/faq#should-i-check-my-node_modules-folder-into-git
-
-# Book build output
-_book
-
-# eBook build output
-*.epub
-*.mobi
-*.pdf
-
-### Idris template
-# Idris 2
-*.ttc
-*.ttm
-
-# Idris 1
-*.ibc
-
-### Symfony template
-# Cache and logs (Symfony2)
-/app/cache/*
-/app/logs/*
-!app/cache/.gitkeep
-!app/logs/.gitkeep
-
-# Email spool folder
-/app/spool/*
-
-# Cache, session files and logs (Symfony3)
-
-# Logs (Symfony4)
-/var/log/*
-!var/log/.gitkeep
-
-# Parameters
-/app/config/parameters.ini
-
-# Managed by Composer
-/app/bootstrap.php.cache
-/var/bootstrap.php.cache
-!bin/console
-!bin/symfony_requirements
-
-# Assets and user uploads
-/web/uploads/
-
-# PHPUnit
-/app/phpunit.xml
-
-# Build data
-
-# Composer PHAR
-
-# Backup entities generated with doctrine:generate:entities command
-**/Entity/*~
-
-# Embedded web-server pid file
-/.web-server-pid
-
-### Magento template
-#--------------------------#
-# Magento Default Files #
-#--------------------------#
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-### VisualStudio template
-## Ignore Visual Studio temporary files, build results, and
-## files generated by popular Visual Studio add-ons.
-##
-## Get latest from https://github.com/github/gitignore/blob/main/VisualStudio.gitignore
-
-# User-specific files
-*.rsuser
-*.userosscache
-*.sln.docstates
-
-# User-specific files (MonoDevelop/Xamarin Studio)
-*.userprefs
-
-# Mono auto generated files
-mono_crash.*
-
-# Build results
-[Dd]ebug/
-[Dd]ebugPublic/
-[Rr]elease/
-[Rr]eleases/
-x64/
-x86/
-[Ww][Ii][Nn]32/
-[Aa][Rr][Mm]/
-[Aa][Rr][Mm]64/
-bld/
-[Bb]in/
-[Oo]bj/
-[Ll]og/
-[Ll]ogs/
-
-# Visual Studio 2015/2017 cache/options directory
-# Uncomment if you have tasks that create the project's static files in wwwroot
-#wwwroot/
-
-# Visual Studio 2017 auto generated files
-Generated\ Files/
-
-# MSTest test Results
-[Tt]est[Rr]esult*/
-[Bb]uild[Ll]og.*
-
-# NUnit
-*.VisualState.xml
-TestResult.xml
-nunit-*.xml
-
-# Build Results of an ATL Project
-[Dd]ebugPS/
-[Rr]eleasePS/
-dlldata.c
-
-# Benchmark Results
-BenchmarkDotNet.Artifacts/
-
-# .NET Core
-project.lock.json
-project.fragment.lock.json
-artifacts/
-
-# ASP.NET Scaffolding
-ScaffoldingReadMe.txt
-
-# StyleCop
-StyleCopReport.xml
-
-# Files built by Visual Studio
-*_h.h
-*.meta
-*.iobj
-*.ipdb
-*.pgc
-*.pgd
-*.rsp
-*.tli
-*.tmp
-*.tmp_proj
-*_wpftmp.csproj
-*.tlog
-*.vssscc
-.builds
-*.pidb
-*.svclog
-*.scc
-
-# Chutzpah Test files
-_Chutzpah*
-
-# Visual C++ cache files
-ipch/
-*.opendb
-*.opensdf
-*.sdf
-*.cachefile
-*.VC.db
-*.VC.VC.opendb
-
-# Visual Studio profiler
-*.psess
-*.vsp
-*.vspx
-*.sap
-
-# Visual Studio Trace Files
-*.e2e
-
-# TFS 2012 Local Workspace
-$tf/
-
-# Guidance Automation Toolkit
-*.gpState
-
-# ReSharper is a .NET coding add-in
-*.[Rr]e[Ss]harper
-*.DotSettings.user
-
-# TeamCity is a build add-in
-_TeamCity*
-
-# DotCover is a Code Coverage Tool
-*.dotCover
-
-# AxoCover is a Code Coverage Tool
-.axoCover/*
-!.axoCover/settings.json
-
-# Coverlet is a free, cross platform Code Coverage Tool
-coverage*.json
-coverage*.xml
-coverage*.info
-
-# Visual Studio code coverage results
-*.coverage
-*.coveragexml
-
-# NCrunch
-_NCrunch_*
-.*crunch*.local.xml
-nCrunchTemp_*
-
-# MightyMoose
-*.mm.*
-AutoTest.Net/
-
-# Web workbench (sass)
-.sass-cache/
-
-# Installshield output folder
-[Ee]xpress/
-
-# DocProject is a documentation generator add-in
-DocProject/buildhelp/
-DocProject/Help/*.HxT
-DocProject/Help/*.HxC
-DocProject/Help/*.hhc
-DocProject/Help/*.hhk
-DocProject/Help/*.hhp
-DocProject/Help/Html2
-DocProject/Help/html
-
-# Click-Once directory
-publish/
-
-# Publish Web Output
-*.[Pp]ublish.xml
-*.azurePubxml
-# Note: Comment the next line if you want to checkin your web deploy settings,
-# but database connection strings (with potential passwords) will be unencrypted
-*.pubxml
-*.publishproj
-
-# Microsoft Azure Web App publish settings. Comment the next line if you want to
-# checkin your Azure Web App publish settings, but sensitive information contained
-# in these scripts will be unencrypted
-PublishScripts/
-
-# NuGet Packages
-*.nupkg
-# NuGet Symbol Packages
-*.snupkg
-# The packages folder can be ignored because of Package Restore
-**/[Pp]ackages/*
-# except build/, which is used as an MSBuild target.
-!**/[Pp]ackages/build/
-# Uncomment if necessary however generally it will be regenerated when needed
-#!**/[Pp]ackages/repositories.config
-# NuGet v3's project.json files produces more ignorable files
-*.nuget.props
-*.nuget.targets
-
-# Microsoft Azure Build Output
-csx/
-*.build.csdef
-
-# Microsoft Azure Emulator
-ecf/
-rcf/
-
-# Windows Store app package directories and files
-AppPackages/
-BundleArtifacts/
-Package.StoreAssociation.xml
-_pkginfo.txt
-*.appx
-*.appxbundle
-*.appxupload
-
-# Visual Studio cache files
-# files ending in .cache can be ignored
-*.[Cc]ache
-# but keep track of directories ending in .cache
-!?*.[Cc]ache/
-
-# Others
-ClientBin/
-~$*
-*.dbmdl
-*.dbproj.schemaview
-*.jfm
-*.pfx
-*.publishsettings
-orleans.codegen.cs
-
-# Including strong name files can present a security risk
-# (https://github.com/github/gitignore/pull/2483#issue-259490424)
-#*.snk
-
-# Since there are multiple workflows, uncomment next line to ignore bower_components
-# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
-#bower_components/
-
-# RIA/Silverlight projects
-Generated_Code/
-
-# Backup & report files from converting an old project file
-# to a newer Visual Studio version. Backup files are not needed,
-# because we have git ;-)
-_UpgradeReport_Files/
-Backup*/
-UpgradeLog*.XML
-UpgradeLog*.htm
-ServiceFabricBackup/
-*.rptproj.bak
-
-# SQL Server files
-*.mdf
-*.ldf
-*.ndf
-
-# Business Intelligence projects
-*.rdl.data
-*.bim.layout
-*.bim_*.settings
-*.rptproj.rsuser
-*- [Bb]ackup.rdl
-*- [Bb]ackup ([0-9]).rdl
-*- [Bb]ackup ([0-9][0-9]).rdl
-
-# Microsoft Fakes
-FakesAssemblies/
-
-# GhostDoc plugin setting file
-*.GhostDoc.xml
-
-# Node.js Tools for Visual Studio
-
-# Visual Studio 6 build log
-*.plg
-
-# Visual Studio 6 workspace options file
-*.opt
-
-# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
-*.vbw
-
-# Visual Studio 6 auto-generated project file (contains which files were open etc.)
-*.vbp
-
-# Visual Studio 6 workspace and project file (working project files containing files to include in project)
-*.dsw
-*.dsp
-
-# Visual Studio 6 technical files
-
-# Visual Studio LightSwitch build output
-**/*.HTMLClient/GeneratedArtifacts
-**/*.DesktopClient/GeneratedArtifacts
-**/*.DesktopClient/ModelManifest.xml
-**/*.Server/GeneratedArtifacts
-**/*.Server/ModelManifest.xml
-_Pvt_Extensions
-
-# Paket dependency manager
-.paket/paket.exe
-paket-files/
-
-# FAKE - F# Make
-.fake/
-
-# CodeRush personal settings
-.cr/personal
-
-# Python Tools for Visual Studio (PTVS)
-__pycache__/
-
-# Cake - Uncomment if you are using it
-# tools/**
-# !tools/packages.config
-
-# Tabs Studio
-*.tss
-
-# Telerik's JustMock configuration file
-*.jmconfig
-
-# BizTalk build output
-*.btp.cs
-*.btm.cs
-*.odx.cs
-*.xsd.cs
-
-# OpenCover UI analysis results
-OpenCover/
-
-# Azure Stream Analytics local run output
-ASALocalRun/
-
-# MSBuild Binary and Structured Log
-*.binlog
-
-# NVidia Nsight GPU debugger configuration file
-*.nvuser
-
-# MFractors (Xamarin productivity tool) working folder
-.mfractor/
-
-# Local History for Visual Studio
-.localhistory/
-
-# Visual Studio History (VSHistory) files
-.vshistory/
-
-# BeatPulse healthcheck temp database
-healthchecksdb
-
-# Backup folder for Package Reference Convert tool in Visual Studio 2017
-MigrationBackup/
-
-# Ionide (cross platform F# VS Code tools) working folder
-.ionide/
-
-# Fody - auto-generated XML schema
-FodyWeavers.xsd
-
-# VS Code files for those working on multiple tools
-.vscode/*
-!.vscode/settings.json
-!.vscode/tasks.json
-!.vscode/launch.json
-!.vscode/extensions.json
-*.code-workspace
-
-# Local History for Visual Studio Code
-.history/
-
-# Windows Installer files from build outputs
-*.cab
-*.msi
-*.msix
-*.msm
-*.msp
-
-# JetBrains Rider
-*.sln.iml
-
-### Yii template
-assets/*
-!assets/.gitignore
-protected/runtime/*
-!protected/runtime/.gitignore
-protected/data/*.db
-themes/classic/views/
-
-### AppEngine template
-# Google App Engine generated folder
-appengine-generated/
-
-### KiCad template
-# For PCBs designed using KiCad: https://www.kicad.org/
-# Format documentation: https://kicad.org/help/file-formats/
-
-# Temporary files
-*.000
-*.bck
-*.kicad_pcb-bak
-*.kicad_sch-bak
-*-backups
-*.kicad_prl
-*.sch-bak
-_autosave-*
-*-save.pro
-*-save.kicad_pcb
-fp-info-cache
-
-# Netlist files (exported from Eeschema)
-*.net
-
-# Autorouter files (exported from Pcbnew)
-*.dsn
-*.ses
-
-# Exported BOM files
-*.xml
-*.csv
-
-### Go.AllowList template
-# Allowlisting gitignore template for GO projects prevents us
-# from adding various unwanted local files, such as generated
-# files, developer configurations or IDE-specific files etc.
-#
-# Recommended: Go.AllowList.gitignore
-
-# Ignore everything
-*
-
-# But not these files...
-
-!*.go
-!go.sum
-!go.mod
-
-!README.md
-!LICENSE
-
-# !Makefile
-
-# ...even if they are in subdirectories
-!*/
-
-### Swift template
-# Xcode
-#
-# gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore
-
-## User settings
-xcuserdata/
-
-## compatibility with Xcode 8 and earlier (ignoring not required starting Xcode 9)
-*.xcscmblueprint
-*.xccheckout
-
-## compatibility with Xcode 3 and earlier (ignoring not required starting Xcode 4)
-DerivedData/
-*.moved-aside
-*.pbxuser
-!default.pbxuser
-*.mode1v3
-!default.mode1v3
-*.mode2v3
-!default.mode2v3
-*.perspectivev3
-!default.perspectivev3
-
-## Obj-C/Swift specific
-*.hmap
-
-## App packaging
-*.ipa
-*.dSYM.zip
-*.dSYM
-
-## Playgrounds
-timeline.xctimeline
-playground.xcworkspace
-
-# Swift Package Manager
-#
-# Add this line if you want to avoid checking in source code from Swift Package Manager dependencies.
-# Packages/
-# Package.pins
-# Package.resolved
-# *.xcodeproj
-#
-# Xcode automatically generates this directory with a .xcworkspacedata file and xcuserdata
-# hence it is not needed unless you have added a package configuration file to your project
-# .swiftpm
-
-.build/
-
-# CocoaPods
-#
-# We recommend against adding the Pods directory to your .gitignore. However
-# you should judge for yourself, the pros and cons are mentioned at:
-# https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control
-#
-# Pods/
-#
-# Add this line if you want to avoid checking in source code from the Xcode workspace
-# *.xcworkspace
-
-# Carthage
-#
-# Add this line if you want to avoid checking in source code from Carthage dependencies.
-# Carthage/Checkouts
-
-Carthage/Build/
-
-# Accio dependency management
-Dependencies/
-.accio/
-
-# fastlane
-#
-# It is recommended to not store the screenshots in the git repo.
-# Instead, use fastlane to re-generate the screenshots whenever they are needed.
-# For more information about the recommended setup visit:
-# https://docs.fastlane.tools/best-practices/source-control/#source-control
-
-fastlane/report.xml
-fastlane/Preview.html
-fastlane/screenshots/**/*.png
-fastlane/test_output
-
-# Code Injection
-#
-# After new code Injection tools there's a generated folder /iOSInjectionProject
-# https://github.com/johnno1962/injectionforxcode
-
-iOSInjectionProject/
-
-### ForceDotCom template
-.settings
-salesforce.schema
-Referenced Packages
-
-### LemonStand template
-boot.php
-index.php
-install.php
-/config/*
-!/config/config.php
-/controllers/*
-/init/*
-/logs/*
-/phproad/*
-/temp/*
-/uploaded/*
-/installer_files/*
-/modules/backend/*
-/modules/blog/*
-/modules/cms/*
-/modules/core/*
-/modules/session/*
-/modules/shop/*
-/modules/system/*
-/modules/users/*
-# add content_*.php if you don't want erase client changes to content
-
-### Elixir template
-/_build
-/cover
-/deps
-/doc
-/.fetch
-*.ez
-/config/*.secret.exs
-.elixir_ls/
-
-### Jigsaw template
-# gitignore template for Jigsaw Static Site Generator
-#
-# website - https://jigsaw.tighten.co
-
-# Ignore build folder
-build_*
-
-### Jekyll template
-_site/
-.jekyll-cache/
-.jekyll-metadata
-# Ignore folders generated by Bundler
-.bundle/
-vendor/
-
-### C template
-# Prerequisites
-*.d
-
-# Object files
-*.ko
-*.elf
-
-# Linker output
-*.map
-*.exp
-
-# Precompiled Headers
-*.gch
-
-# Libraries
-*.la
-*.lo
-
-# Shared objects (inc. Windows DLLs)
-*.so.*
-
-# Executables
-*.i*86
-*.x86_64
-*.hex
-
-# Debug files
-*.dSYM/
-*.su
-*.idb
-
-# Kernel Module Compile Results
-*.mod*
-*.cmd
-.tmp_versions/
-modules.order
-Module.symvers
-Mkfile.old
-dkms.conf
-
-### Qt template
-# C++ objects and libs
-*.slo
-*.lai
-
-# Qt-es
-object_script.*.Release
-object_script.*.Debug
-*_plugin_import.cpp
-/.qmake.cache
-/.qmake.stash
-*.pro.user
-*.pro.user.*
-*.qbs.user
-*.qbs.user.*
-*.moc
-moc_*.cpp
-moc_*.h
-qrc_*.cpp
-ui_*.h
-*.qmlc
-*.jsc
-Makefile*
-*build-*
-*.qm
-*.prl
-
-# Qt unit tests
-target_wrapper.*
-
-# QtCreator
-*.autosave
-
-# QtCreator Qml
-*.qmlproject.user
-*.qmlproject.user.*
-
-# QtCreator CMake
-CMakeLists.txt.user*
-
-# QtCreator 4.8< compilation database
-
-# QtCreator local machine specific files for imported projects
-*creator.user*
-
-*_qmlcache.qrc
-
-### D template
-# Compiled Object files
-
-# Compiled Dynamic libraries
-
-# Compiled Static libraries
-
-# Executables
-
-# DUB
-.dub
-docs.json
-__dummy.html
-docs/
-
-# Code coverage
-*.lst
-
-### PlayFramework template
-# Ignore Play! working directory #
-bin/
-/db
-.eclipse
-/logs/
-/modules
-/project/project
-/project/target
-/target
-tmp/
-test-result
-server.pid
-*.eml
-/dist/
-
-### Lithium template
-libraries/*
-resources/tmp/*
-
-### uVision template
-# git ignore file for Keil µVision Project
-
-# µVision 5 and µVision 4 Project screen layout file
-*.uvguix.*
-*.uvgui.*
-
-# Listing Files
-*.i
-*.m51
-*.m66
-
-# Object Files
-*.axf
-*.b[0-2][0-9]
-*.b3[0-1]
-*.build_log.htm
-*.crf
-*.dep
-*.htm
-*.iex
-*.lnp
-
-# Firmware Files
-*.bin
-*.h86
-
-# Build Files
-.bat
-
-# Debugger Files
-.ini
-
-# JLink Files
-JLinkLog.txt
-
-# Other Files
-
-### Plone template
-*.pyo
-*.tmp*
-*.mo
-*.egg
-*.EGG
-*.egg-info
-*.EGG-INFO
-.*.cfg
-develop-eggs/
-downloads/
-eggs/
-fake-eggs/
-parts/
-var/
-
-### R template
-# History files
-.Rhistory
-.Rapp.history
-
-# Session Data files
-.RData
-.RDataTmp
-
-# User-specific files
-.Ruserdata
-
-# Example code in package build process
-*-Ex.R
-
-# Output files from R CMD build
-/*.tar.gz
-
-# Output files from R CMD check
-/*.Rcheck/
-
-# RStudio files
-.Rproj.user/
-
-# produced vignettes
-vignettes/*.html
-vignettes/*.pdf
-
-# OAuth2 token, see https://github.com/hadley/httr/releases/tag/v0.3
-.httr-oauth
-
-# knitr and R markdown default cache directories
-*_cache/
-/cache/
-
-# Temporary files created by R markdown
-*.utf8.md
-*.knit.md
-
-# R Environment Variables
-.Renviron
-
-# pkgdown site
-
-# translation temp files
-po/*~
-
-# RStudio Connect folder
-rsconnect/
-
-### Strapi template
-############################
-# OS X
-############################
-
-.AppleDouble
-.LSOverride
-Icon
-.Spotlight-V100
-.Trashes
-._*
-
-
-############################
-# Linux
-############################
-
-
-
-############################
-# Windows
-############################
-
-ehthumbs.db
-Desktop.ini
-$RECYCLE.BIN/
-
-
-############################
-# Packages
-############################
-
-*.7z
-*.dat
-*.dmg
-*.gz
-*.iso
-*.rar
-*.tar
-*.com
-*.swo
-*.swp
-*.swn
-*.swm
-
-
-############################
-# Logs and databases
-############################
-
-.tmp
-*.sql
-*.sqlite
-
-
-############################
-# Misc.
-############################
-
-*#
-.idea
-nbproject
-
-
-############################
-# Node.js
-############################
-
-lcov.info
-results
-build
-.node_history
-package-lock.json
-**/package-lock.json
-!docs/package-lock.json
-*.heapsnapshot
-
-
-############################
-# Tests
-############################
-
-testApp
-cypress/screenshots
-cypress/videos
-
-
-############################
-# Documentation
-############################
-
-
-############################
-# Builds
-############################
-
-packages/strapi-generate-new/files/public/
-
-############################
-# Example app
-############################
-
-.dev
-# *.cache
-
-############################
-# Visual Studio Code
-############################
-
-front-workspace.code-workspace
-
-### Terraform template
-# Local .terraform directories
-**/.terraform/*
-
-# .tfstate files
-*.tfstate
-*.tfstate.*
-
-# Crash log files
-crash.log
-crash.*.log
-
-# Exclude all .tfvars files, which are likely to contain sensitive data, such as
-# password, private keys, and other secrets. These should not be part of version
-# control as they are data points which are potentially sensitive and subject
-# to change depending on the environment.
-*.tfvars
-*.tfvars.json
-
-# Ignore override files as they are usually used to override resources locally and so
-# are not checked in
-override.tf
-override.tf.json
-*_override.tf
-*_override.tf.json
-
-# Include override files you do wish to add to version control using negated pattern
-# !example_override.tf
-
-# Include tfplan files to ignore the plan output of command: terraform plan -out=tfplan
-# example: *tfplan*
-
-# Ignore CLI configuration files
-.terraformrc
-terraform.rc
-
-### Drupal7 template
-# gitignore template for Drupal 7 projects
-#
-# It is recommended that you use `Drupal.gitignore` as this is the latest version
-
-# Ignore configuration files that may contain sensitive information.
-sites/*/*settings*.php
-sites/example.sites.php
-
-# Ignore paths that contain generated content.
-files/
-sites/*/files
-sites/*/private
-sites/*/translations
-
-# Ignore default text files
-robots.txt
-/CHANGELOG.txt
-/COPYRIGHT.txt
-/INSTALL*.txt
-/MAINTAINERS.txt
-/UPGRADE.txt
-sites/README.txt
-sites/all/libraries/README.txt
-sites/all/modules/README.txt
-sites/all/themes/README.txt
-
-# Ignore everything but the "sites" folder ( for non core developer )
-web.config
-authorize.php
-cron.php
-update.php
-xmlrpc.php
-/includes
-/misc
-/profiles
-/scripts
-/themes
-
-### V template
-*.tmp.c
-
-### Objective-C template
-# Xcode
-#
-# gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore
-
-## User settings
-
-## compatibility with Xcode 8 and earlier (ignoring not required starting Xcode 9)
-
-## compatibility with Xcode 3 and earlier (ignoring not required starting Xcode 4)
-
-## Obj-C/Swift specific
-
-## App packaging
-
-# CocoaPods
-#
-# We recommend against adding the Pods directory to your .gitignore. However
-# you should judge for yourself, the pros and cons are mentioned at:
-# https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control
-#
-# Pods/
-#
-# Add this line if you want to avoid checking in source code from the Xcode workspace
-# *.xcworkspace
-
-# Carthage
-#
-# Add this line if you want to avoid checking in source code from Carthage dependencies.
-# Carthage/Checkouts
-
-
-# fastlane
-#
-# It is recommended to not store the screenshots in the git repo.
-# Instead, use fastlane to re-generate the screenshots whenever they are needed.
-# For more information about the recommended setup visit:
-# https://docs.fastlane.tools/best-practices/source-control/#source-control
-
-
-# Code Injection
-#
-# After new code Injection tools there's a generated folder /iOSInjectionProject
-# https://github.com/johnno1962/injectionforxcode
-
-
-### Textpattern template
-css.php
-rpc/
-sites/site*/admin/
-sites/site*/private/
-sites/site*/public/admin/
-sites/site*/public/setup/
-sites/site*/public/theme/
-textpattern/
-HISTORY.txt
-README.txt
-
-### Beef template
-recovery/
-BeefSpace_User.toml
-
-### Agda template
-*.agdai
-MAlonzo/**
-
-### Godot template
-# Godot 4+ specific ignores
-.godot/
-
-# Godot-specific ignores
-.import/
-export.cfg
-export_presets.cfg
-
-# Imported translations (automatically generated from CSV files)
-*.translation
-
-# Mono-specific ignores
-.mono/
-data_*/
-mono_crash.*.json
-
-### Pimcore template
-# gitignore template for Pimcore CMS
-
-# pimcore source files
-/pimcore
-
-# asset files
-/website/var/assets/*
-
-# backups
-/website/var/backup/*
-
-# file cache
-/website/var/cache/*
-
-# generated PHP classes, keep definition files (.psf)
-/website/var/classes/Object*
-!/website/var/classes/objectbricks
-
-# various configuration files
-/website/var/config/system.xml
-/website/var/config/cache.xml
-/website/var/config/robots.txt
-/website/var/config/Geo*
-/website/var/config/object/*
-/website/var/config/portal/*
-/website/var/config/sqlreport/*
-
-# sent e-mail log files
-/website/var/email/*
-
-# log files
-/website/var/log/*.log
-
-# serialized recyclebin files
-/website/var/recyclebin/*
-
-# search plugin
-/website/var/search/*
-
-# various temp files
-/website/var/system/*
-/website/var/tmp/*
-
-# serialized version files
-/website/var/versions/asset/*
-/website/var/versions/document/*
-/website/var/versions/object/*
-
-# user profile images
-/website/var/user-image/*
-
-# keep .dummy files
-!.dummy
-
-### Composer template
-
-# Commit your application's lock file https://getcomposer.org/doc/01-basic-usage.md#commit-your-composer-lock-file-to-version-control
-# You may choose to ignore a library lock file http://getcomposer.org/doc/02-libraries.md#lock-file
-# composer.lock
-
-### Java template
-# Compiled class file
-
-# Log file
-
-# BlueJ files
-*.ctxt
-
-# Mobile Tools for Java (J2ME)
-.mtj.tmp/
-
-# Package Files #
-*.war
-*.nar
-*.ear
-*.tar.gz
-
-# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
-hs_err_pid*
-replay_pid*
-
-### SugarCRM template
-## SugarCRM
-# Ignore custom .htaccess stuff.
-# Ignore the cache directory completely.
-# This will break the current behaviour. Which was often leading to
-# the misuse of the repository as backup replacement.
-# For development the cache directory can be safely ignored and
-# therefore it is ignored.
-!/cache/index.html
-# Ignore some files and directories from the custom directory.
-/custom/history/
-/custom/modulebuilder/
-/custom/working/
-/custom/modules/*/Ext/
-/custom/application/Ext/
-# Custom configuration should also be ignored.
-/config_override.php
-# The silent upgrade scripts aren't needed.
-/silentUpgrade*.php
-# Logs files can safely be ignored.
-# Ignore the new upload directories.
-!/upload/index.html
-/upload_backup/
-
-### Coq template
-.*.aux
-.*.d
-*.glob
-*.ml.d
-*.ml4.d
-*.mlg.d
-*.mli.d
-*.mllib.d
-*.mlpack.d
-*.v.d
-*.vio
-*.vo
-*.vok
-*.vos
-.coq-native
-.csdp.cache
-.lia.cache
-.nia.cache
-.nlia.cache
-.nra.cache
-csdp.cache
-lia.cache
-nia.cache
-nlia.cache
-nra.cache
-native_compute_profile_*.data
-
-# generated timing files
-*.timing.diff
-*.v.after-timing
-*.v.before-timing
-*.v.timing
-time-of-build-after.log
-time-of-build-before.log
-time-of-build-both.log
-time-of-build-pretty.log
-
-### GWT template
-
-# Package Files #
-
-# gwt caches and compiled units #
-war/gwt_bree/
-gwt-unitCache/
-
-# boilerplate generated classes #
-.apt_generated/
-
-# more caches and things from deploy #
-war/WEB-INF/deploy/
-war/WEB-INF/classes/
-
-#compilation logs
-.gwt/
-
-#gwt junit compilation files
-www-test/
-
-#old GWT (1.5) created this dir
-.gwt-tmp/
-
-### B4X template
-**/Objects
-**/AutoBackups
-
-### Vue template
-# gitignore template for Vue.js projects
-#
-# Recommended template: Node.gitignore
-
-# TODO: where does this rule come from?
-docs/_book
-
-# TODO: where does this rule come from?
-test/
-
-### Sass template
-*.css.map
-*.sass.map
-*.scss.map
-
-### Stella template
-# Atari 2600 (Stella) support for multiple assemblers
-# - DASM
-# - CC65
-
-# Assembled binaries and object directories
-a.out
-*.a26
-
-# Add in special Atari 7800-based binaries for good measure
-*.a78
-
-### Exercism template
-# gitignore template for Exercism project
-# website: https://exercism.io/
-
-# Ignore .exercism folder which contain sensitive data
-.exercism
-
-### Delphi template
-# Uncomment these types if you want even more clean repository. But be careful.
-# It can make harm to an existing project source. Read explanations below.
-#
-# Resource files are binaries containing manifest, project icon and version info.
-# They can not be viewed as text or compared by diff-tools. Consider replacing them with .rc files.
-#*.res
-#
-# Type library file (binary). In old Delphi versions it should be stored.
-# Since Delphi 2009 it is produced from .ridl file and can safely be ignored.
-#*.tlb
-#
-# Diagram Portfolio file. Used by the diagram editor up to Delphi 7.
-# Uncomment this if you are not using diagrams or use newer Delphi version.
-#*.ddp
-#
-# Visual LiveBindings file. Added in Delphi XE2.
-# Uncomment this if you are not using LiveBindings Designer.
-#*.vlb
-#
-# Deployment Manager configuration file for your project. Added in Delphi XE2.
-# Uncomment this if it is not mobile development and you do not use remote debug feature.
-#*.deployproj
-#
-# C++ object files produced when C/C++ Output file generation is configured.
-# Uncomment this if you are not using external objects (zlib library for example).
-#*.obj
-#
-
-# Delphi compiler-generated binaries (safe to delete)
-*.bpl
-*.bpi
-*.dcp
-*.apk
-*.drc
-*.dres
-*.rsm
-*.tds
-*.dcu
-*.ocx
-
-# Delphi autogenerated files (duplicated info)
-*.cfg
-*.hpp
-*Resource.rc
-
-# Delphi local files (user-specific info)
-*.local
-*.identcache
-*.projdata
-*.tvsconfig
-*.dsk
-
-# Delphi history and backups
-__history/
-__recovery/
-*.~*
-
-# Castalia statistics file (since XE7 Castalia is distributed with Delphi)
-*.stat
-
-# Boss dependency manager vendor folder https://github.com/HashLoad/boss
-modules/
-
-### Kotlin template
-# Compiled class file
-
-# Log file
-
-# BlueJ files
-
-# Mobile Tools for Java (J2ME)
-
-# Package Files #
-
-# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
-
-### CUDA template
-*.ii
-*.gpu
-*.ptx
-*.cubin
-*.fatbin
-
-### Julia template
-# Files generated by invoking Julia with --code-coverage
-*.jl.cov
-*.jl.*.cov
-
-# Files generated by invoking Julia with --track-allocation
-*.jl.mem
-
-# System-specific files and directories generated by the BinaryProvider and BinDeps packages
-# They contain absolute paths specific to the host computer, and so should not be committed
-deps/deps.jl
-deps/build.log
-deps/downloads/
-deps/usr/
-deps/src/
-
-# Build artifacts for creating documentation generated by the Documenter package
-docs/build/
-docs/site/
-
-# File generated by Pkg, the package manager, based on a corresponding Project.toml
-# It records a fixed state of all packages used by the project. As such, it should not be
-# committed for packages, but should be committed for applications that require a static
-# environment.
-Manifest.toml
-
-### Red template
-# gitignore template for Red programming language
-# website: http://www.red-lang.org/
-
-# Red Compiled code
-*.red
-
-# Libraries
-crush.dll
-crush.dylib
-crush.so
-
-# Files generated during test
-quick-test/quick-test.log
-quick-test/runnable/
-system/tests/source/units/auto-tests/
-tests/source/units/auto-tests/
-
-### Logtalk template
-# gitignore template for LogTalk, a programming language that builds upon Prolog
-# website: https://logtalk.org/
-
-# Logtalk temporary file directories
-.lgt_tmp/
-lgt_tmp/
-
-# Logtalk default unit testing and doclet results and logs directories
-logtalk_tester_logs/
-logtalk_doclet_logs/
-
-# backend Prolog compiler temporary files
-.pl-history
-*.xwam
-*.qo
-*.ql
-*.itf
-*.po
-
-### Nanoc template
-# For projects using Nanoc (http://nanoc.ws/)
-
-# Default location for output (needs to match output_dir's value found in nanoc.yaml)
-
-# Temporary file directory
-tmp/nanoc/
-
-# Crash Log
-
-### AtmelStudio template
-## Ignore Atmel Studio temporary files and build results
-# https://www.microchip.com/mplab/avr-support/atmel-studio-7
-
-# Atmel Studio is powered by an older version of Visual Studio,
-# so most of the project and solution files are the same as VS files,
-# only prefixed by an `at`.
-
-#Build Directories
-
-#Build Results
-*.eep
-*.srec
-
-#User Specific Files
-*.atsuo
-
-### ArchLinuxPackages template
-*.tar.*
-*.log.*
-*.sig
-
-pkg/
-src/
-
-### Puppet template
-# gitignore template for Puppet modules
-# website: https://forge.puppet.com/
-
-# Built packages
-pkg/*
-
-# Should run on multiple platforms so don't check in
-Gemfile.lock
-
-# Tests
-spec/fixtures/*
-coverage/*
-
-# Third-party
-vendor/*
-.bundle/*
-
-### Ada template
-# Object file
-
-# Ada Library Information
-*.ali
-
-### Opa template
-_build
-_tracks
-
-opa-debug-js
-
-*.opp
-*.opx
-*.opx.broken
-*.dump
-*.api
-*.api-txt
-
-### Scheme template
-*.ss~
-*.ss#*
-.#*.ss
-
-*.scm~
-*.scm#*
-.#*.scm
-
-### IAR_EWARM template
-# gitignore template for the IAR EWARM
-# website: https://www.iar.com/knowledge/support/technical-notes/ide/which-files-should-be-version-controlled/
-
-# Some tools will put the EWARM files
-# under a subdirectory with the same name
-# as the configuration.
-# Example
-# EWARM/Config1/Obj /List /Exe
-# EWARM/Config2/Obj /List /Exe
-EWARM/**/Obj
-EWARM/**/List
-EWARM/**/Exe
-
-# Autogenerated project files
-*.ewt
-
-# Autogenerated folder for debugger
-EWARM/settings
-
-### Elm template
-# elm-package generated files
-elm-stuff
-# elm-repl generated files
-repl-temp-*
-
-### Bitrix template
-# gitignore template for 1C-Bitrix, a PHP-based CMS
-# website: https://www.1c-bitrix.ru
-
-#Exclude all of core files
-/bitrix/*
-
-#But not the templates and non bitrix components
-!/bitrix/templates
-!/bitrix/components
-/bitrix/components/bitrix
-
-#Exclude bitrix gadgets
-!/bitrix/gadgets
-/bitrix/gadgets/bitrix
-
-#User can use that directory to store some stuff, but it's not really recommended, just use /local instead of this
-!/bitrix/php_interface/
-
-#Exclude database configs
-/bitrix/php_interface/dbconn.php
-
-#Exclude default file storage directory
-/upload/
-
-### DM template
-*.dmb
-*.rsc
-*.int
-*.lk
-
-### Umbraco template
-## Ignore Umbraco files/folders generated for each instance
-##
-## Get latest from https://github.com/github/gitignore/blob/main/Umbraco.gitignore
-
-# Note: VisualStudio gitignore rules may also be relevant
-
-# Umbraco
-# Ignore unimportant folders generated by Umbraco
-**/App_Data/Logs/
-**/App_Data/[Pp]review/
-**/App_Data/TEMP/
-**/App_Data/NuGetBackup/
-
-# Ignore Umbraco content cache file
-**/App_Data/umbraco.config
-
-## this [Uu]mbraco/ folder should be created by cmd like `Install-Package UmbracoCms -Version 8.5.3`
-## you can find your Umbraco version in your Web.config. (i.e. )
-## Uncomment this line if you think it fits the way you work on your project.
-## **/[Uu]mbraco/
-
-## The [Mm]edia/ folder contains content. Content may vary by environment and should therefore not be added to source control.
-## Uncomment this line if you think it fits the way you work on your project.
-## **/[Mm]edia/
-
-# Don't ignore Umbraco packages (VisualStudio.gitignore mistakes this for a NuGet packages folder)
-# Make sure to include details from VisualStudio.gitignore BEFORE this
-!**/App_Data/[Pp]ackages/*
-!**/[Uu]mbraco/[Dd]eveloper/[Pp]ackages/*
-!**/[Uu]mbraco/[Vv]iews/[Pp]ackages/*
-
-# ImageProcessor DiskCache
-**/App_Data/cache/
-
-# Ignore the Models Builder models out of date flag
-**/ood.flag
-
-# NEW for version 9 .Net 5 (Core)
-#ignore umbraco backoffice assest from wwwroot
-**/wwwroot/umbraco/
-
-# SQLite files
-*.sqlite.db*
-
-#ignore umbraco data/views/settings
-**/umbraco/
-
-#include default location for modelsbuilder output
-!**/umbraco/models
-
-#include default location for packages
-!**/umbraco/Data/packages
-
-### TurboGears2 template
-*.py[co]
-
-# Default development database
-devdata.db
-
-# Default data directory
-data/*
-
-# Packages
-
-# Installer logs
-pip-log.txt
-
-# Unit test / coverage reports
-.coverage
-.tox
-
-### Fortran template
-# Prerequisites
-
-# Compiled Object files
-
-# Precompiled Headers
-
-# Compiled Dynamic libraries
-
-# Fortran module files
-*.mod
-*.smod
-
-# Compiled Static libraries
-
-# Executables
-
-### ThinkPHP template
-# gitignore template for ThinkPHP v3.2.3
-# website: http://www.thinkphp.cn/
-
-# Logs and Cache files
-/Application/Runtime/
-
-# Common configure file
-/Application/Common/Conf/config.php
-### WordPress template
-# Wordpress - ignore core, configuration, examples, uploads and logs.
-# https://github.com/github/gitignore/blob/main/WordPress.gitignore
-
-# Core
-#
-# Note: if you want to stage/commit WP core files
-# you can delete this whole section/until Configuration.
-/wp-admin/
-/wp-content/index.php
-/wp-content/languages
-/wp-content/plugins/index.php
-/wp-content/themes/index.php
-/wp-includes/
-/license.txt
-/readme.html
-/wp-*.php
-/xmlrpc.php
-
-# Configuration
-wp-config.php
-
-# Example themes
-/wp-content/themes/twenty*/
-
-# Example plugin
-/wp-content/plugins/hello.php
-
-# Uploads
-/wp-content/uploads/
-
-# Log files
-
-# htaccess
-
-# All plugins
-#
-# Note: If you wish to whitelist plugins,
-# uncomment the next line
-#/wp-content/plugins
-
-# All themes
-#
-# Note: If you wish to whitelist themes,
-# uncomment the next line
-#/wp-content/themes
-### Racket template
-compiled/
-/doc/
-\#*
-.\#*
-
-### SCons template
-# for projects that use SCons for building: http://http://www.scons.org/
-.sconsign.dblite
-
-# When configure fails, SCons outputs these
-config.log
-.sconf_temp
-
-### Typo3 template
-## TYPO3 v6.2
-# Ignore several upload and file directories.
-/fileadmin/user_upload/
-/fileadmin/_temp_/
-/fileadmin/_processed_/
-/uploads/
-# Ignore cache
-/typo3conf/temp_CACHED*
-/typo3conf/temp_fieldInfo.php
-/typo3conf/deprecation_*.log
-/typo3conf/ENABLE_INSTALL_TOOL
-/typo3conf/realurl_autoconf.php
-/FIRST_INSTALL
-# Ignore system folders, you should have them symlinked.
-# If not comment out the following entries.
-/typo3
-/typo3_src
-/typo3_src-*
-/Packages
-# Ignore temp directory.
-/typo3temp/
-
-### CodeSniffer template
-# gitignore for the PHP Codesniffer framework
-# website: https://github.com/squizlabs/PHP_CodeSniffer
-#
-# Recommended template: PHP.gitignore
-
-/wpcs/*
-
-### UnrealEngine template
-# Visual Studio 2015 user specific files
-
-# Compiled Object files
-
-# Precompiled Headers
-
-# Compiled Dynamic libraries
-
-# Fortran module files
-
-# Compiled Static libraries
-
-# Executables
-
-# These project files can be generated by the engine
-*.xcodeproj
-*.xcworkspace
-*.VC.opendb
-
-# Precompiled Assets
-SourceArt/**/*.png
-SourceArt/**/*.tga
-
-# Binary Files
-Binaries/*
-Plugins/*/Binaries/*
-
-# Builds
-Build/*
-
-# Whitelist PakBlacklist-.txt files
-!Build/*/
-Build/*/**
-!Build/*/PakBlacklist*.txt
-
-# Don't ignore icon files in Build
-!Build/**/*.ico
-
-# Built data for maps
-*_BuiltData.uasset
-
-# Configuration files generated by the Editor
-Saved/*
-
-# Compiled source files for the engine to use
-Intermediate/*
-Plugins/*/Intermediate/*
-
-# Cache files for the editor to use
-DerivedDataCache/*
-
-### FuelPHP template
-# the composer package lock file and install directory
-# Commit your application's lock file http://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file
-# You may choose to ignore a library lock file http://getcomposer.org/doc/02-libraries.md#lock-file
-# /composer.lock
-/fuel/vendor
-
-# the fuelphp document
-/docs/
-
-# you may install these packages with `oil package`.
-# http://fuelphp.com/docs/packages/oil/package.html
-# /fuel/packages/auth/
-# /fuel/packages/email/
-# /fuel/packages/oil/
-# /fuel/packages/orm/
-# /fuel/packages/parser/
-
-# dynamically generated files
-/fuel/app/logs/*/*/*
-/fuel/app/cache/*/*
-/fuel/app/config/crypt.php
-
-### Python template
-# Byte-compiled / optimized / DLL files
-*$py.class
-
-# C extensions
-
-# Distribution / packaging
-.Python
-.eggs/
-lib/
-lib64/
-sdist/
-wheels/
-share/python-wheels/
-*.egg-info/
-.installed.cfg
-MANIFEST
-
-# PyInstaller
-# Usually these files are written by a python script from a template
-# before PyInstaller builds the exe, so as to inject date/other infos into it.
-*.manifest
-*.spec
-
-# Installer logs
-pip-delete-this-directory.txt
-
-# Unit test / coverage reports
-htmlcov/
-.tox/
-.nox/
-.coverage.*
-nosetests.xml
-coverage.xml
-*.cover
-*.py,cover
-.hypothesis/
-.pytest_cache/
-cover/
-
-# Translations
-*.pot
-
-# Django stuff:
-local_settings.py
-db.sqlite3
-db.sqlite3-journal
-
-# Flask stuff:
-instance/
-.webassets-cache
-
-# Scrapy stuff:
-.scrapy
-
-# Sphinx documentation
-docs/_build/
-
-# PyBuilder
-.pybuilder/
-
-# Jupyter Notebook
-
-# IPython
-
-# pyenv
-# For a library or package, you might want to ignore these files since the code is
-# intended to run in multiple environments; otherwise, check them in:
-# .python-version
-
-# pipenv
-# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
-# However, in case of collaboration, if having platform-specific dependencies or dependencies
-# having no cross-platform support, pipenv may install dependencies that don't work, or not
-# install all needed dependencies.
-#Pipfile.lock
-
-# poetry
-# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
-# This is especially recommended for binary packages to ensure reproducibility, and is more
-# commonly ignored for libraries.
-# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
-#poetry.lock
-
-# pdm
-# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
-#pdm.lock
-# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it
-# in version control.
-# https://pdm.fming.dev/#use-with-ide
-.pdm.toml
-
-# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
-__pypackages__/
-
-# Celery stuff
-celerybeat-schedule
-celerybeat.pid
-
-# SageMath parsed files
-*.sage.py
-
-# Environments
-.venv
-env/
-venv/
-ENV/
-env.bak/
-venv.bak/
-
-# Spyder project settings
-.spyderproject
-.spyproject
-
-# Rope project settings
-.ropeproject
-
-# mkdocs documentation
-/site
-
-# mypy
-.mypy_cache/
-.dmypy.json
-dmypy.json
-
-# Pyre type checker
-.pyre/
-
-# pytype static type analyzer
-.pytype/
-
-# Cython debug symbols
-cython_debug/
-
-# PyCharm
-# JetBrains specific template is maintained in a separate JetBrains.gitignore that can
-# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
-# and can be added to the global gitignore or merged into this file. For a more nuclear
-# option (not recommended) you can uncomment the following to ignore the entire idea folder.
-#.idea/
-
-### Elisp template
-# Compiled
-*.elc
-
-# Packaging
-.cask
-
-# Backup files
-
-# Undo-tree save-files
-*.~undo-tree
-
-### Fancy template
-*.rbc
-*.fyc
-
-### Finale template
-*.db
-*.avi
-*.ps
-*.mid
-*.midi
-*.mp3
-*.aif
-*.wav
-# Some versions of Finale have a bug and randomly save extra copies of
-# the music source as " copy.mus"
-*copy.mus
-
-### SketchUp template
-*.skb
-
-### LensStudio template
-# gitignore template for LensStudio
-# website: https://lensstudio.snapchat.com/
-
-# macOS/IDE #
-
-# js #
-yarn.lock
-
-# Python #
-[Bb]ackup*
-
-### PureScript template
-# Dependencies
-.psci_modules
-.spago
+# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider
+# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
+
+# User-specific stuff
+.idea/**/workspace.xml
+.idea/**/tasks.xml
+.idea/**/usage.statistics.xml
+.idea/**/dictionaries
+.idea/**/shelf
+
+# AWS User-specific
+.idea/**/aws.xml
# Generated files
-.psci
-output
+.idea/**/contentModel.xml
-### EPiServer template
-######################
-## EPiServer Files
-######################
-*License.config
+# Sensitive or high-churn files
+.idea/**/dataSources/
+.idea/**/dataSources.ids
+.idea/**/dataSources.local.xml
+.idea/**/sqlDataSources.xml
+.idea/**/dynamic.xml
+.idea/**/uiDesigner.xml
+.idea/**/dbnavigator.xml
-### Grails template
-# .gitignore for Grails 1.2 and 1.3
-# Although this should work for most versions of grails, it is
-# suggested that you use the "grails integrate-with --git" command
-# to generate your .gitignore file.
+# Gradle
+.idea/**/gradle.xml
+.idea/**/libraries
-# web application files
-/web-app/WEB-INF/classes
+# Gradle and Maven with auto-import
+# When using Gradle or Maven with auto-import, you should exclude module files,
+# since they will be recreated, and may cause churn. Uncomment if using
+# auto-import.
+# .idea/artifacts
+# .idea/compiler.xml
+# .idea/jarRepositories.xml
+# .idea/modules.xml
+# .idea/*.iml
+# .idea/modules
+# *.iml
+# *.ipr
-# default HSQL database files for production mode
-/prodDb.*
+# CMake
+cmake-build-*/
-# general HSQL database files
-*Db.properties
-*Db.script
+# Mongo Explorer plugin
+.idea/**/mongoSettings.xml
-# logs
-/stacktrace.log
-/test/reports
-/logs
-
-# project release file
-/*.war
-
-# plugin release files
-/plugin.xml
-
-# older plugin install locations
-/plugins
-/web-app/plugins
-
-# "temporary" build files
-
-### ZendFramework template
-# Composer files
-
-# Local configs
-config/autoload/*.local.php
-
-# Binary gettext files
-
-# Data
-data/logs/
-data/cache/
-data/sessions/
-data/tmp/
-temp/
-
-#Doctrine 2
-data/DoctrineORMModule/Proxy/
-data/DoctrineORMModule/cache/
-
-# Legacy ZF1
-demos/
-extras/documentation
-
-### VVVV template
-
-# .v4p backup files
-*~.xml
-
-# Dynamic plugins .dll
-
-### Phalcon template
-/config/development/
-
-### Qooxdoo template
-cache
-cache-downloads
-inspector
-api
-source/inspector.html
-
-### Android template
-# Gradle files
-.gradle/
-
-# Local configuration file (sdk path, etc)
-local.properties
-
-# Log/OS Files
-
-# Android Studio generated files and folders
-captures/
-.externalNativeBuild/
-.cxx/
-output.json
+# File-based project format
+*.iws
# IntelliJ
-*.iml
-.idea/
-misc.xml
-deploymentTargetDropDown.xml
-render.experimental.xml
+out/
-# Keystore files
-*.jks
-*.keystore
+# mpeltonen/sbt-idea plugin
+.idea_modules/
-# Google Services (e.g. APIs or Firebase)
-google-services.json
+# JIRA plugin
+atlassian-ide-plugin.xml
-# Android Profiling
-*.hprof
+# Cursive Clojure plugin
+.idea/replstate.xml
-### Gretl template
-# gitignore template for Gretl
-# website: http://gretl.sourceforge.net/
+# SonarLint plugin
+.idea/sonarlint/
-# Auto-generated log file is overwritten whenever you start a new session
-session.inp
-
-# Auto-generated temporary string code table
-string_table.txt
-
-### Lilypond template
-
-### OpenSSL template
-# OpenSSL-related files best not committed
-
-## Certificate Authority
-*.ca
-
-## Certificate
-*.crt
-
-## Certificate Sign Request
-*.csr
-
-## Certificate
-*.der
-
-## Key database file
-*.kdb
-
-## OSCP request data
-*.org
-
-## PKCS #12
-*.p12
-
-## PEM-encoded certificate data
-*.pem
-
-## Random number seed
-*.rnd
-
-## SSLeay data
-*.ssleay
-
-## S/MIME message
-*.smime
-
-### Packer template
-# Cache objects
-packer_cache/
-
-# Crash log
-
-# https://www.packer.io/guides/hcl/variables
-# Exclude all .pkrvars.hcl files, which are likely to contain sensitive data,
-# such as password, private keys, and other secrets. These should not be part of
-# version control as they are data points which are potentially sensitive and
-# subject to change depending on the environment.
-#
-*.pkrvars.hcl
-
-# For built boxes
-*.box
-
-### Rails template
-capybara-*.html
-.rspec
-/db/*.sqlite3
-/db/*.sqlite3-journal
-/db/*.sqlite3-[0-9]*
-/public/system
-/coverage/
-/spec/tmp
-*.orig
-rerun.txt
-pickle-email-*.html
-
-# Ignore all logfiles and tempfiles.
-/log/*
-!/log/.keep
-!/tmp/.keep
-
-# TODO Comment out this rule if you are OK with secrets being uploaded to the repo
-config/initializers/secret_token.rb
-config/master.key
-
-# Only include if you have production secrets in this file, which is no longer a Rails default
-# config/secrets.yml
-
-# dotenv, dotenv-rails
-# TODO Comment out these rules if environment variables can be committed
-.env*.local
-
-## Environment normalization:
-/.bundle
-/vendor/bundle
-
-# these should all be checked in to normalize the environment:
-# Gemfile.lock, .ruby-version, .ruby-gemset
-
-# unless supporting rvm < 1.11.0 or doing something fancy, ignore this:
-.rvmrc
-
-# if using bower-rails ignore default bower_components path bower.json files
-/vendor/assets/bower_components
-*.bowerrc
-bower.json
-
-# Ignore pow environment settings
-.powenv
-
-# Ignore Byebug command history file.
-.byebug_history
-
-# Ignore node_modules
-
-# Ignore precompiled javascript packs
-/public/packs
-/public/packs-test
-/public/assets
-
-# Ignore yarn files
-/yarn-error.log
-
-# Ignore uploaded files in development
-/storage/*
-!/storage/.keep
-/public/uploads
-
-### core template
-*.*~
-nupkg/
-
-# Visual Studio Code
-.vscode
-
-# Rider
-
-# User-specific files
-
-# Build results
-[Oo]ut/
-msbuild.log
-msbuild.err
-msbuild.wrn
-
-# Visual Studio 2015
-
-
-### esp-idf template
-# gitignore template for esp-idf, the official development framework for ESP32
-# https://github.com/espressif/esp-idf
-
-sdkconfig
-sdkconfig.old
-
-### Unity template
-# This .gitignore file should be placed at the root of your Unity project directory
-#
-# Get latest from https://github.com/github/gitignore/blob/main/Unity.gitignore
-#
-/[Ll]ibrary/
-/[Tt]emp/
-/[Oo]bj/
-/[Bb]uild/
-/[Bb]uilds/
-/[Ll]ogs/
-/[Uu]ser[Ss]ettings/
-
-# MemoryCaptures can get excessive in size.
-# They also could contain extremely sensitive data
-/[Mm]emoryCaptures/
-
-# Recordings can get excessive in size
-/[Rr]ecordings/
-
-# Uncomment this line if you wish to ignore the asset store tools plugin
-# /[Aa]ssets/AssetStoreTools*
-
-# Autogenerated Jetbrains Rider plugin
-/[Aa]ssets/Plugins/Editor/JetBrains*
-
-# Visual Studio cache directory
-
-# Gradle cache directory
-
-# Autogenerated VS/MD/Consulo solution and project files
-ExportedObj/
-.consulo/
-*.unityproj
-*.booproj
-*.svd
-*.mdb
-
-# Unity3D generated meta files
-*.pidb.meta
-*.pdb.meta
-*.mdb.meta
-
-# Unity3D generated file on crash reports
-sysinfo.txt
-
-# Builds
-*.aab
-*.unitypackage
-
-# Crashlytics generated file
+# Crashlytics plugin (for Android Studio and IntelliJ)
+com_crashlytics_export_strings.xml
+crashlytics.properties
crashlytics-build.properties
+fabric.properties
-# Packed Addressables
-/[Aa]ssets/[Aa]ddressable[Aa]ssets[Dd]ata/*/*.bin*
-
-# Temporary auto-generated Android Assets
-/[Aa]ssets/[Ss]treamingAssets/aa.meta
-/[Aa]ssets/[Ss]treamingAssets/aa/*
-
-### CodeIgniter template
-*/config/development
-*/logs/log-*.php
-!*/logs/index.html
-*/cache/*
-!system/cache/*
-!*/cache/index.html
-!*/cache/.htaccess
-
-user_guide_src/build/*
-user_guide_src/cilexer/build/*
-user_guide_src/cilexer/dist/*
-user_guide_src/cilexer/pycilexer.egg-info/*
-
-#codeigniter 3
-application/logs/*
-!application/logs/index.html
-!application/logs/.htaccess
-
-### SymphonyCMS template
-manifest/cache/
-manifest/logs/
-manifest/tmp/
-symphony/
-workspace/uploads/
-install-log.txt
-
-### Xojo template
-# Xojo (formerly REALbasic and Real Studio)
-
-Builds*
-*.debug
-*.debug.app
-Debug*.exe
-Debug*/Debug*.exe
-Debug*/Debug*\ Libs
-*.rbuistate
-*.xojo_uistate
-*.obsolete*
-
-### Sdcc template
-# SDCC stuff
-*.lnk
-*.mem
-*.rel
-*.rst
-*.sym
-
-### ROS template
-devel/
-logs/
-msg_gen/
-srv_gen/
-msg/*Action.msg
-msg/*ActionFeedback.msg
-msg/*ActionGoal.msg
-msg/*ActionResult.msg
-msg/*Feedback.msg
-msg/*Goal.msg
-msg/*Result.msg
-msg/_*.py
-build_isolated/
-devel_isolated/
-
-# Generated by dynamic reconfigure
-*.cfgc
-/cfg/cpp/
-/cfg/*.py
-
-# Ignore generated docs
-
-# eclipse stuff
-
-# qcreator stuff
-
-
-/planning/cfg
-/planning/docs
-/planning/src
-
-
-# Emacs
-
-# Catkin custom files
-CATKIN_IGNORE
-
-### Kohana template
-application/cache/*
-
-### Zephir template
-# Cache files, generates by Zephir
-.temp/
-.libs/
-
-# Object files, generates by linker
-*.loT
-
-# Files generated by configure and Zephir,
-# not required for extension compilation.
-ext/build/
-ext/modules/
-ext/Makefile*
-ext/config*
-ext/acinclude.m4
-ext/aclocal.m4
-ext/autom4te*
-ext/install-sh
-ext/ltmain.sh
-ext/missing
-ext/mkinstalldirs
-ext/run-tests.php
-ext/.deps
-ext/libtool
-
-### Xilinx template
-# gitignore template for Xilinx Vivado Design Suite
-# website: https://www.xilinx.com/support/download.html
-
-# [home]
-*.jou
-*.str
-*.os
-*.js
-*.pb
-*.hwdef
-*.vds
-*.veo
-*.wdf
-*.vdi
-*.dmp
-*.rpx
-*.rpt
-*_stub.v
-*_stub.vhdl
-*_funcsim.v
-*_funcsim.vhdl
-
-# [dir]
-.metadata
-*.data
-*.ipdefs
-.Xil
-*.sdk
-*.hw
-*.ip_user_files
-
-### IP synth
-*_synth_*
-
-.jobs
-
-### project synth
-*/*.runs/synth*/*.xml
-*/*.runs/synth*/*.txt
-*/*.runs/synth*/*.sh
-*/*.runs/synth*/*.tcl
-*/*.runs/synth*/*.bat
-*/*.runs/synth*/*.xdc
-!*/*.runs/synth*/*utilization*.rpt
-
-*.runs/synth*/*.xml
-*.runs/synth*/*.txt
-*.runs/synth*/*.sh
-*.runs/synth*/*.tcl
-*.runs/synth*/*.bat
-*.runs/synth*/*.xdc
-!*.runs/synth*/*utilization*.rpt
-
-### project impl
-*/*.runs/impl*/*.xml
-*/*.runs/impl*/*.html
-*/*.runs/impl*/*.txt
-*/*.runs/impl*/*.sh
-*/*.runs/impl*/*.tcl
-*/*.runs/impl*/*.bat
-!*/*.runs/impl*/*utilization*.rpt
-
-*.runs/impl*/*.xml
-*.runs/impl*/*.html
-*.runs/impl*/*.txt
-*.runs/impl*/*.sh
-*.runs/impl*/*.tcl
-*.runs/impl*/*.bat
-!*.runs/impl*/*utilization*.rpt
-
-### block design
-*/*/bd/*/hdl
-*/*/*/bd/*/hdl
-
-*/*/bd/*/*.xdc
-*/*/*/bd/*/*.xdc
-
-*/*/bd/*/ip/*/*.xdc
-*/*/*/bd/*/ip/*/*.xdc
-
-*/*/bd/*/ip/*/*/
-*/*/*/bd/*/ip/*/*/
-
-*/*/bd/*/ip/*/*.vhd
-*/*/*/bd/*/ip/*/*.vhd
-
-*/*/bd/*/ip/*/*.xml
-*/*/*/bd/*/ip/*/*.xml
-
-*.c
-*.h
-*.vho
-*.html
-*/*/bd/*/ip/*/*.tcl
-*/*/*/bd/*/ip/*/*.tcl
-hw_handoff
-ipshared
-
-### Waf template
-# For projects that use the Waf build system: https://waf.io/
-# Dot-hidden on Unix-like systems
-.waf-*-*/
-.waf3-*-*/
-# Hidden directory on Windows (no dot)
-waf-*-*/
-waf3-*-*/
-# Lockfile
-.lock-waf_*_build
-
-### SAM template
-# gitignore template for AWS Serverless Application Model project
-# website: https://docs.aws.amazon.com/serverless-application-model
-
-# Ignore build folder
-.aws-sam/
-
-### Dart template
-# See https://www.dartlang.org/guides/libraries/private-files
-
-# Files and directories created by pub
-.dart_tool/
-# If you're building an application, you may want to check-in your pubspec.lock
-pubspec.lock
-
-# Directory created by dartdoc
-# If you don't generate documentation locally you can remove this line.
-doc/api/
-
-# dotenv environment variables file
-.env*
-
-# Avoid committing generated Javascript files:
-*.dart.js
-*.info.json # Produced by the --dump-info flag.
-*.js # When generated by dart2js. Don't specify *.js if your
- # project includes source files written in JavaScript.
-*.js_
-*.js.deps
-*.js.map
-
-.flutter-plugins
-.flutter-plugins-dependencies
-
-### MetaProgrammingSystem template
-workspace.xml
-junitvmwatcher*.properties
-build.properties
-
-# generated java classes and java source files
-# manually add any custom artifacts that can't be generated from the models
-# http://confluence.jetbrains.com/display/MPSD25/HowTo+--+MPS+and+Git
-classes_gen
-source_gen
-source_gen.caches
-
-# generated test code and test results
-test_gen
-test_gen.caches
-TEST-*.xml
-junit*.properties
-
-### Gcov template
-# gcc coverage testing tool files
-
-*.gcno
-*.gcda
-*.gcov
-
-### Kentico template
-# gitignore template for using Kentico CMS
-# website: http://www.kentico.com/
-#
-# Recommended template: VisualStudio.gitignore
-
-# Include some Kentico folders excluded by Visual Studio rules
-!CMS/CMSAdminControls/*/
-!CMS/CMSModules/System/*/
-!CMS/App_Data/CIRepository/**
-
-# Kentico temporary/environment files
-CMS/App_Data/AzureCache
-CMS/App_Data/AzureTemp
-CMS/App_Data/CMSModules/DeviceProfile/logFiftyOne.txt
-CMS/App_Data/CMSModules/DeviceProfiles/logFiftyOne.txt
-CMS/App_Data/CMSModules/WebFarm/webfarm.sync
-CMS/App_Data/CMSTemp
-CMS/App_Data/Persistent
-CMS/CMSSiteUtils/Export
-CMS/CMSSiteUtils/Import
-
-# Ignore all smart search indexes, but not the other system folder contents
-CMS/App_Data/CMSModules/SmartSearch/**
-!CMS/App_Data/CMSModules/SmartSearch/*/
-!CMS/App_Data/CMSModules/SmartSearch/_StopWords/**
-!CMS/App_Data/CMSModules/SmartSearch/_Synonyms/**
-
-## Kentico Starter Sites
-# Starter site resource Files
-CMS/App_Data/DancingGoat
-
-# Starter site web templates
-CMS/App_Data/Templates/CommunitySite
-CMS/App_Data/Templates/CorporateSite
-CMS/App_Data/Templates/DancingGoat
-CMS/App_Data/Templates/EcommerceSite
-CMS/App_Data/Templates/IntranetPortal
-CMS/App_Data/Templates/PersonalSite
-
-# Starter site app themes
-CMS/App_Themes/CommunitySite
-CMS/App_Themes/CorporateSite
-CMS/App_Themes/EcommerceSite
-CMS/App_Themes/IntranetPortal*
-CMS/App_Themes/PersonalSite
-
-# Starter site ASPX templates
-CMS/CMSTemplates/CorporateSite
-
-# Starter site media libraries
-CMS/CommunitySite
-CMS/CorporateSite
-CMS/DancingGoat
-CMS/EcommerceSite
-CMS/IntranetPortal
-CMS/PersonalSite
-
-## Project specific ignores
-# Sensitive settings
-AppSettings.config
-ConnectionStrings.config
-
-# Project media libraries (recommend shared file storage)
-# e.g. CMS/{SiteCodeName}
-
-### InforCMS template
-# gitignore template for InforCRM (formerly SalesLogix)
-# website: https://www.infor.com/product-summary/cx/infor-crm/
-#
-# Recommended: VisualStudio.gitignore
-
-# Ignore model files that are auto-generated
-ModelIndex.xml
-ExportedFiles.xml
-
-# Ignore deployment files
-[Mm]odel/[Dd]eployment
-
-# Force include portal SupportFiles
-!Model/Portal/*/SupportFiles/[Bb]in/
-!Model/Portal/PortalTemplates/*/SupportFiles/[Bb]in
-
-### AutoIt template
-# Compiled Scripts
-*.a3x
-
-# Tidy Auto-Generated Backups
-Backup/*
-
-# Au3Stripper Auto-Generated Files
-*_stripped.au3
-
-### Laravel template
-npm-debug.log
-yarn-error.log
-
-# Laravel 4 specific
-bootstrap/compiled.php
-app/storage/
-
-# Laravel 5 & Lumen specific
-public/storage
-public/hot
-
-# Laravel 5 & Lumen specific with changed public path
-public_html/storage
-public_html/hot
-
-storage/*.key
-Homestead.yaml
-Homestead.json
-/.vagrant
-.phpunit.result.cache
-
-### Snap template
-# gitginore template for creating Snap packages
-# website: https://snapcraft.io/
-
-prime/
-stage/
-*.snap
-
-# Snapcraft global state tracking data(automatically generated)
-# https://forum.snapcraft.io/t/location-to-save-global-state/768
-/snap/.snapcraft/
-
-# Source archive packed by `snapcraft cleanbuild` before pushing to the LXD container
-/*_source.tar.bz2
-
-### Processing template
-applet
-application.linux-arm64
-application.linux-armv6hf
-application.linux32
-application.linux64
-application.windows32
-application.windows64
-application.macosx
-
-### AltiumDesigner template
-# For PCBs designed using Altium Designer
-# Website: https://www.altium.com/altium-designer/
-
-# Directories containing cache data
-History
-__Previews
-
-# Directories containing logs and generated outputs
-Project\ Logs*
-Project\ Outputs*
-
-# Misc files generated by altium
-debug.log
-Status\ Report.txt
-*.PcbDoc.htm
-*.SchDocPreview
-*.PcbDocPreview
-
-# Lock files sometimes left behind
-.~lock.*
-
-### Smalltalk template
-# changes file
-*.changes
-*.chg
-
-# system image
-*.image
-*.img7
-*.img
-
-# Pharo Smalltalk Debug log file
-PharoDebug.log
-
-# Squeak Smalltalk Debug log file
-SqueakDebug.log
-
-# Dolphin Smalltalk source file
-*.sml
-
-# Dolphin Smalltalk error file
-*.errors
-
-# Monticello package cache
-/package-cache
-
-# playground cache
-/play-cache
-/play-stash
-
-# Metacello-github cache
-/github-cache
-github-*.zip
-
-### ChefCookbook template
-.vagrant
-/cookbooks
-
-# Bundler
-bin/*
-
-.kitchen/
-.kitchen.local.yml
-
-### Lua template
-# Compiled Lua sources
-luac.out
-
-# luarocks build files
-*.src.rock
-
-# Object files
-
-# Precompiled Headers
-
-# Libraries
-*.def
-
-# Shared objects (inc. Windows DLLs)
-
-# Executables
-
-
-### Phoenix template
-# gitignore template for Phoenix projects
-# website: http://www.phoenixframework.org/
-#
-# Recommended template: Elixir.gitignore
-
-# Temporary files
-/tmp
-
-# Static artifacts
-/node_modules
-/assets/node_modules
-
-# Since we are building assets from web/static,
-# we ignore priv/static. You may want to comment
-# this depending on your deployment strategy.
-/priv/static/
-
-# Installer-related files
-/installer/_build
-/installer/tmp
-/installer/doc
-/installer/deps
-
-### CakePHP template
-# CakePHP 3
-
-/config/app.php
-
-/tmp/cache/models/*
-!/tmp/cache/models/empty
-/tmp/cache/persistent/*
-!/tmp/cache/persistent/empty
-/tmp/cache/views/*
-!/tmp/cache/views/empty
-/tmp/sessions/*
-!/tmp/sessions/empty
-/tmp/tests/*
-!/tmp/tests/empty
-
-!/logs/empty
-
-# CakePHP 2
-
-/app/tmp/*
-/app/Config/core.php
-/app/Config/database.php
-/vendors/*
-
-### SeamGen template
-/bootstrap/data
-/bootstrap/tmp
-/exploded-archives/
-/test-build/
-/test-output/
-/test-report/
-temp-testng-customsuite.xml
-
-# based on http://stackoverflow.com/a/8865858/422476 I am removing inline comments
-
-#/classes/ all class files
-#/dist/ contains generated war files for deployment
-#/exploded-archives/ war content generation during deploy (or explode)
-#/test-build/ test compilation (ant target for Seam)
-#/test-output/ test results
-#/test-report/ test report generation for, e.g., Hudson
-#/target/ maven output folder
-#temp-testng-customsuite.xml generated when running test cases under Eclipse
-
-# Thanks to @VonC and @kraftan for their helpful answers on a related question
-# on StackOverflow.com:
-# http://stackoverflow.com/questions/4176687
-# /what-is-the-recommended-source-control-ignore-pattern-for-seam-projects
-
-### Ruby template
-*.gem
-/.config
-/InstalledFiles
-/pkg/
-/spec/reports/
-/spec/examples.txt
-/test/tmp/
-/test/version_tmp/
-/tmp/
-
-# Used by dotenv library to load environment variables.
-# .env
-
-# Ignore Byebug command history file.
-
-## Specific to RubyMotion:
-.dat*
-.repl_history
-*.bridgesupport
-build-iPhoneOS/
-build-iPhoneSimulator/
-
-## Specific to RubyMotion (use of CocoaPods):
-#
-# We recommend against adding the Pods directory to your .gitignore. However
-# you should judge for yourself, the pros and cons are mentioned at:
-# https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control
-#
-# vendor/Pods/
-
-## Documentation cache and generated files:
-/.yardoc/
-/_yardoc/
-/rdoc/
-
-## Environment normalization:
-/.bundle/
-/lib/bundler/man/
-
-# for a library or gem, you might want to ignore these files since the code is
-# intended to run in multiple environments; otherwise, check them in:
-# Gemfile.lock
-# .ruby-version
-# .ruby-gemset
-
-# unless supporting rvm < 1.11.0 or doing something fancy, ignore this:
-
-# Used by RuboCop. Remote config files pulled in from inherit_from directive.
-# .rubocop-https?--*
-
-### Raku template
-# Gitignore for Raku (https://raku.org)
-# As part of https://github.com/github/gitignore
-
-# precompiled files
-.precomp
-lib/.precomp
-
-
-### ExpressionEngine template
-
-# Images
-images/avatars/
-images/captchas/
-images/smileys/
-images/member_photos/
-images/signature_attachments/
-images/pm_attachments/
-
-# For security do not publish the following files
-system/expressionengine/config/database.php
-system/expressionengine/config/config.php
-
-# Caches
-sized/
-thumbs/
-_thumbs/
-*/expressionengine/cache/*
-
-### Scrivener template
-*/Files/binder.autosave
-*/Files/binder.backup
-*/Files/search.indexes
-*/Files/user.lock
-*/Files/Docs/docs.checksum
-*/Files/Data/docs.checksum
-*/QuickLook/
-*/Settings/ui.plist
-
-### C++ template
-# Prerequisites
-
-# Compiled Object files
-
-# Precompiled Headers
-
-# Compiled Dynamic libraries
-
-# Fortran module files
-
-# Compiled Static libraries
-
-# Executables
-
-### OracleForms template
-# Compiled Form Modules
-*.fmx
-
-# Compiled Menu Modules
-*.mmx
-
-# Compiled Pre-Linked Libraries
-*.plx
-
-### JBoss template
-jboss/server/all/deploy/project.ext
-jboss/server/default/deploy/project.ext
-jboss/server/minimal/deploy/project.ext
-jboss/server/all/log/*.log
-jboss/server/all/tmp/**/*
-jboss/server/all/data/**/*
-jboss/server/all/work/**/*
-jboss/server/default/log/*.log
-jboss/server/default/tmp/**/*
-jboss/server/default/data/**/*
-jboss/server/default/work/**/*
-jboss/server/minimal/log/*.log
-jboss/server/minimal/tmp/**/*
-jboss/server/minimal/data/**/*
-jboss/server/minimal/work/**/*
-
-# deployed package files #
-
-*.DEPLOYED
-
-### Meteor template
-# gitignore template for the Meteor framework
-# website: https://www.meteor.com/
-#
-# Recommended template: Node.gitignore
-
-# protect api keys in setting json
-settings-production.json
-settings.json
-
-# protect your mup.json settings
-mup.json
-mup.js
-
-### Scala template
-
-# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
-
-### TeX template
-## Core latex/pdflatex auxiliary files:
-*.lof
-*.lot
-*.fls
-*.toc
-*.fmt
-*.fot
-*.cb
-*.cb2
-.*.lb
-
-## Intermediate documents:
-*.dvi
-*.xdv
-*-converted-to.*
-# these rules might exclude image files for figures etc.
-# *.ps
-# *.eps
-# *.pdf
-
-## Generated if empty string is given at "Please type another file name for output:"
-.pdf
-
-## Bibliography auxiliary files (bibtex/biblatex/biber):
-*.bbl
-*.bcf
-*.blg
-*-blx.aux
-*-blx.bib
-*.run.xml
-
-## Build tool auxiliary files:
-*.fdb_latexmk
-*.synctex
-*.synctex(busy)
-*.synctex.gz
-*.synctex.gz(busy)
-*.pdfsync
-
-## Build tool directories for auxiliary files
-# latexrun
-latex.out/
-
-## Auxiliary and intermediate files from other packages:
-# algorithms
-*.alg
-*.loa
-
-# achemso
-acs-*.bib
-
-# amsthm
-*.thm
-
-# beamer
-*.nav
-*.pre
-*.snm
-*.vrb
-
-# changes
-*.soc
-
-# comment
-*.cut
-
-# cprotect
-*.cpt
-
-# elsarticle (documentclass of Elsevier journals)
-*.spl
-
-# endnotes
-*.ent
-
-# fixme
-*.lox
-
-# feynmf/feynmp
-*.mf
-*.mp
-*.t[1-9]
-*.t[1-9][0-9]
-*.tfm
-
-#(r)(e)ledmac/(r)(e)ledpar
-*.end
-*.?end
-*.[1-9]
-*.[1-9][0-9]
-*.[1-9][0-9][0-9]
-*.[1-9]R
-*.[1-9][0-9]R
-*.[1-9][0-9][0-9]R
-*.eledsec[1-9]
-*.eledsec[1-9]R
-*.eledsec[1-9][0-9]
-*.eledsec[1-9][0-9]R
-*.eledsec[1-9][0-9][0-9]
-*.eledsec[1-9][0-9][0-9]R
-
-# glossaries
-*.acn
-*.acr
-*.glg
-*.glo
-*.gls
-*.glsdefs
-*.lzo
-*.lzs
-*.slg
-*.sls
-
-# uncomment this for glossaries-extra (will ignore makeindex's style files!)
-# *.ist
-
-# gnuplot
-*.gnuplot
-*.table
-
-# gnuplottex
-*-gnuplottex-*
-
-# gregoriotex
-*.gaux
-*.glog
-*.gtex
-
-# htlatex
-*.4ct
-*.4tc
-*.idv
-*.lg
-*.trc
-*.xref
-
-# hyperref
-*.brf
-
-# knitr
-*-concordance.tex
-# TODO Uncomment the next line if you use knitr and want to ignore its generated tikz files
-# *.tikz
-*-tikzDictionary
-
-# listings
-*.lol
-
-# luatexja-ruby
-*.ltjruby
-
-# makeidx
-*.idx
-*.ilg
-*.ind
-
-# minitoc
-*.maf
-*.mlf
-*.mlt
-*.mtc[0-9]*
-*.slf[0-9]*
-*.slt[0-9]*
-*.stc[0-9]*
-
-# minted
-_minted*
-*.pyg
-
-# morewrites
-*.mw
-
-# newpax
-*.newpax
-
-# nomencl
-*.nlg
-*.nlo
-*.nls
-
-# pax
-*.pax
-
-# pdfpcnotes
-*.pdfpc
-
-# sagetex
-*.sagetex.sage
-*.sagetex.py
-*.sagetex.scmd
-
-# scrwfile
-*.wrt
-
-# svg
-svg-inkscape/
-
-# sympy
-*.sout
-*.sympy
-sympy-plots-for-*.tex/
-
-# pdfcomment
-*.upa
-*.upb
-
-# pythontex
-*.pytxcode
-pythontex-files-*/
-
-# tcolorbox
-*.listing
-
-# thmtools
-*.loe
-
-# TikZ & PGF
-*.dpth
-*.md5
-*.auxlock
-
-# titletoc
-*.ptc
-
-# todonotes
-*.tdo
-
-# vhistory
-*.hst
-*.ver
-
-# easy-todo
-*.lod
-
-# xcolor
-*.xcp
-
-# xmpincl
-*.xmpi
-
-# xindy
-*.xdy
-
-# xypic precompiled matrices and outlines
-*.xyc
-*.xyd
-
-# endfloat
-*.ttt
-*.fff
-
-# Latexian
-TSWLatexianTemp*
-
-## Editors:
-# WinEdt
-*.sav
-
-# Texpad
-.texpadtmp
-
-# LyX
-*.lyx~
-
-# Kile
-*.backup
-
-# gummi
-.*.swp
-
-# KBibTeX
-*~[0-9]*
-
-# TeXnicCenter
-*.tps
-
-# auto folder when using emacs and auctex
-./auto/*
-*.el
-
-# expex forward references with \gathertags
-*-tags.tex
-
-# standalone packages
-*.sta
-
-# Makeindex log files
-*.lpz
-
-# xwatermark package
-*.xwm
-
-# REVTeX puts footnotes in the bibliography by default, unless the nofootinbib
-# option is specified. Footnotes are the stored in a file with suffix Notes.bib.
-# Uncomment the next line to have this generated file ignored.
-#*Notes.bib
-
-### CraftCMS template
-# Craft 2 Storage (https://craftcms.com/support/craft-storage-gitignore)
-# not necessary for Craft 3 (https://github.com/craftcms/craft/issues/26)
-/craft/storage/*
-!/craft/storage/rebrand
-
-### AppceleratorTitanium template
-# Build folder and log file
-build.log
-
-### Concrete5 template
-# ignore the error log and .htaccess and others
-error_log
-
-# concrete5 5.6 specific
-
-config/site.php
-files/cache/*
-files/tmp/*
-
-# concrete5 5.7 specific
-
-# ignore everything but the index.html
-/application/files/*
-!/application/files/index.html
-
-# ignore updates folder
-/updates/*
-
-# ignore sitemap.xml
-
-### Autotools template
-# http://www.gnu.org/software/automake
-
-Makefile.in
-/ar-lib
-/mdate-sh
-/py-compile
-/test-driver
-/ylwrap
-.deps/
-.dirstamp
-
-# http://www.gnu.org/software/autoconf
-
-autom4te.cache
-/autoscan.log
-/autoscan-*.log
-/aclocal.m4
-/compile
-/config.cache
-/config.guess
-/config.h.in
-/config.log
-/config.status
-/config.sub
-/configure
-/configure.scan
-/depcomp
-/install-sh
-/missing
-/stamp-h1
-
-# https://www.gnu.org/software/libtool/
-
-/ltmain.sh
-
-# http://www.gnu.org/software/texinfo
-
-/texinfo.tex
-
-# http://www.gnu.org/software/m4/
-
-m4/libtool.m4
-m4/ltoptions.m4
-m4/ltsugar.m4
-m4/ltversion.m4
-m4/lt~obsolete.m4
-
-# Generated Makefile
-# (meta build system like autotools,
-# can automatically generate from config.status script
-# (which is called by configure script))
-
-### Nim template
-nimcache/
-nimblecache/
-htmldocs/
-
-### NWjs template
-# gitignore template for NW.js projects
-# website: https://nwjs.io/
-
-# Seen in standard and sdk versions
-credits.html
-locales/
-libEGL.dll
-libGLEv2.dll
-node.dll
-nw.dll
-nw.exe
-natives_blob.bin
-nw_100_percent.pak
-nw_200_percent.pak
-nw_elf.dll
-snapshot_blob.bin
-resources.pak
-
-# Seen only in standard
-d3dcompiler_47.dll
-ffmpeg.dll
-icudtl.dat
-
-# Seen only in sdk
-pnacl/
-chromedriver.exe
-nacl_irt_x86_64.nexe
-nwjc.exe
-payload.exe
-
-### Hugo template
-# Generated files by hugo
-/public/
-/resources/_gen/
-/assets/jsconfig.json
-hugo_stats.json
-
-# Executable may be added to repository
-hugo.exe
-hugo.darwin
-hugo.linux
-
-# Temporary lock file while building
-/.hugo_build.lock
-
-### NasaSpecsIntact template
-# gitignore template for Nasa SpecsIntact (SI)
-# Website: https://specsintact.ksc.nasa.gov/
-#
-# Recommended:
-# MicrosoftOffice.gitignore
-#
-
-# SpecsIntact (SI) Locking file; this would lock everyone out.
-*.se$
-
-# SI Reports; auto-generated. They do not belong in the repository
-# as they will be re-created exactly when using a specific checkout point.
-*.RPT
-ADDRVER.*
-BRKTVER.*
-DUPEREF.*
-REFVER.*
-SECTVER.*
-SUBMVER.*
-TTLDIFFS.*
-
-# SpecsIntact files that change a lot and don't actually affect SI
-# PULL.TBL is an auto-generated file to help speed SI loading.
-PULL.TBL
-pulltbl.bck
-
-# Tailoring information.
-# Keep tailor.tag; it is a list of tailoring options in SI.
-
-# JOB.OTL informs SI where a spec section came from.
-# Keeping the old one isn't useful in git.
-JOB.OTL.OLD
-
-# OneNote TOC Files; SI Work Directories may be installed in a location co-located with OneNote
-# notebooks, and if so, OneNote will litter the SI folder with these.
-*.onetoc*
-
-# Log files, typically tagfix or other auto generated logs that aren't useful
-# outside of the user that made them and clutter up the index.
-
-### CFWheels template
-# unpacked plugin folders
-plugins/**/*
-
-# files directory where uploads go
-files
-
-# DBMigrate plugin: generated SQL
-db/sql
-
-# AssetBundler plugin: generated bundles
-javascripts/bundles
-stylesheets/bundles
-
-### Actionscript template
-# Build and Release Folders
-bin-debug/
-bin-release/
-
-# Other files and folders
-.settings/
-
-# Executables
-*.swf
-*.air
-
-# Project files, i.e. `.project`, `.actionScriptProperties` and `.flexProperties`
-# should NOT be excluded as they contain compiler settings and other important
-# information for Eclipse / Flash Builder.
-
-### Gradle template
-.gradle
-**/build/
-!src/**/build/
-
-# Ignore Gradle GUI config
-gradle-app.setting
-
-# Avoid ignoring Gradle wrapper jar file (.jar files are usually ignored)
-!gradle-wrapper.jar
-
-# Avoid ignore Gradle wrappper properties
-!gradle-wrapper.properties
-
-# Cache of project
-.gradletasknamecache
-
-# Eclipse Gradle plugin generated files
-# Eclipse Core
-# JDT-specific (Eclipse Java Development Tools)
-
-### Nix template
-# Ignore build outputs from performing a nix-build or `nix build` command
-result
-result-*
-
-### Splunk template
-# gitignore template for Splunk apps
-# documentation: http://docs.splunk.com/Documentation/Splunk/6.2.3/admin/Defaultmetaconf
-
-# Splunk local meta file
-local.meta
-
-# Splunk local folder
-local
-
-### Cordova template
-# gitignore template for the Cordova framework
-# website: https://cordova.apache.org/
-#
-# Recommended template: Node.gitignore
-
-# App platform binaries and built files
-/platforms
-
-# Optional to ignore plugin Git clones
-#/plugins
-
-### Mercury template
-Mercury/
-Mercury.modules
-*.mh
-*.err
-*.init
-*.beams
-*.c_date
-
-### LabVIEW template
-# Libraries
-*.lvlibp
-*.llb
-
-# Shared objects (inc. Windows DLLs)
-
-# Executables
-
-# Metadata
-*.aliases
-*.lvlps
+# Editor-based Rest Client
+.idea/httpRequests
+# Android studio 3.1+ serialized cache file
+.idea/caches/build_file_checksums.ser
diff --git a/.idea/.gitignore b/.idea/.gitignore
new file mode 100644
index 0000000..b58b603
--- /dev/null
+++ b/.idea/.gitignore
@@ -0,0 +1,5 @@
+# Default ignored files
+/shelf/
+/workspace.xml
+# Editor-based HTTP Client requests
+/httpRequests/
diff --git a/.idea/devops.iml b/.idea/devops.iml
new file mode 100644
index 0000000..24643cc
--- /dev/null
+++ b/.idea/devops.iml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/modules.xml b/.idea/modules.xml
new file mode 100644
index 0000000..9d5783b
--- /dev/null
+++ b/.idea/modules.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 0000000..35eb1dd
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/apps/backend/configmap.yaml b/apps/backend/configmap.yaml
new file mode 100644
index 0000000..53ca9ba
--- /dev/null
+++ b/apps/backend/configmap.yaml
@@ -0,0 +1,9 @@
+apiVersion: v1
+kind: ConfigMap
+metadata:
+ name: backend-config
+data:
+ DB_HOST: "db.yourdomain.com"
+ DB_PORT: "5432"
+ API_KEY: "your-api-key"
+
diff --git a/apps/backend/deployment.yaml b/apps/backend/deployment.yaml
new file mode 100644
index 0000000..c38e947
--- /dev/null
+++ b/apps/backend/deployment.yaml
@@ -0,0 +1,44 @@
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+ name: backend
+ labels:
+ app: backend
+spec:
+ replicas: 2
+ selector:
+ matchLabels:
+ app: backend
+ template:
+ metadata:
+ labels:
+ app: backend
+ spec:
+ containers:
+ - name: backend
+ image: your-registry/backend:v1.0.0
+ ports:
+ - containerPort: 8080
+ envFrom:
+ - configMapRef:
+ name: backend-config
+ resources:
+ requests:
+ cpu: 200m
+ memory: 256Mi
+ limits:
+ cpu: 1
+ memory: 1Gi
+ livenessProbe:
+ httpGet:
+ path: /healthz
+ port: 8080
+ initialDelaySeconds: 15
+ periodSeconds: 20
+ readinessProbe:
+ httpGet:
+ path: /ready
+ port: 8080
+ initialDelaySeconds: 5
+ periodSeconds: 10
+
diff --git a/apps/backend/service.yaml b/apps/backend/service.yaml
new file mode 100644
index 0000000..1672235
--- /dev/null
+++ b/apps/backend/service.yaml
@@ -0,0 +1,12 @@
+apiVersion: v1
+kind: Service
+metadata:
+ name: backend
+spec:
+ selector:
+ app: backend
+ ports:
+ - protocol: TCP
+ port: 8080
+ targetPort: 8080
+
diff --git a/apps/frontend/deployment.yaml b/apps/frontend/deployment.yaml
new file mode 100644
index 0000000..5f20233
--- /dev/null
+++ b/apps/frontend/deployment.yaml
@@ -0,0 +1,41 @@
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+ name: frontend
+ labels:
+ app: frontend
+spec:
+ replicas: 2
+ selector:
+ matchLabels:
+ app: frontend
+ template:
+ metadata:
+ labels:
+ app: frontend
+ spec:
+ containers:
+ - name: frontend
+ image: your-registry/frontend:v1.0.0
+ ports:
+ - containerPort: 80
+ resources:
+ requests:
+ cpu: 100m
+ memory: 128Mi
+ limits:
+ cpu: 500m
+ memory: 512Mi
+ livenessProbe:
+ httpGet:
+ path: /healthz
+ port: 80
+ initialDelaySeconds: 10
+ periodSeconds: 10
+ readinessProbe:
+ httpGet:
+ path: /ready
+ port: 80
+ initialDelaySeconds: 5
+ periodSeconds: 10
+
diff --git a/apps/frontend/ingress.yaml b/apps/frontend/ingress.yaml
new file mode 100644
index 0000000..e9ed215
--- /dev/null
+++ b/apps/frontend/ingress.yaml
@@ -0,0 +1,24 @@
+apiVersion: networking.k8s.io/v1
+kind: Ingress
+metadata:
+ name: frontend
+ annotations:
+ kubernetes.io/ingress.class: nginx
+ cert-manager.io/cluster-issuer: "letsencrypt-prod"
+spec:
+ tls:
+ - hosts:
+ - frontend.yourdomain.com
+ secretName: frontend-tls
+ rules:
+ - host: frontend.yourdomain.com
+ http:
+ paths:
+ - path: /
+ pathType: Prefix
+ backend:
+ service:
+ name: frontend
+ port:
+ number: 80
+
diff --git a/apps/frontend/service.yaml b/apps/frontend/service.yaml
new file mode 100644
index 0000000..92c42e4
--- /dev/null
+++ b/apps/frontend/service.yaml
@@ -0,0 +1,12 @@
+apiVersion: v1
+kind: Service
+metadata:
+ name: frontend
+spec:
+ selector:
+ app: frontend
+ ports:
+ - protocol: TCP
+ port: 80
+ targetPort: 80
+
diff --git a/base/kustomization.yaml b/base/kustomization.yaml
new file mode 100644
index 0000000..454cd52
--- /dev/null
+++ b/base/kustomization.yaml
@@ -0,0 +1,10 @@
+apiVersion: kustomize.config.k8s.io/v1beta1
+kind: Kustomization
+resources:
+ - ../apps/frontend/deployment.yaml
+ - ../apps/frontend/service.yaml
+ - ../apps/frontend/ingress.yaml
+ - ../apps/backend/deployment.yaml
+ - ../apps/backend/service.yaml
+ - ../apps/backend/configmap.yaml
+
diff --git a/infra/.gitignore b/infra/.gitignore
new file mode 100644
index 0000000..2faf43d
--- /dev/null
+++ b/infra/.gitignore
@@ -0,0 +1,37 @@
+# Local .terraform directories
+**/.terraform/*
+
+# .tfstate files
+*.tfstate
+*.tfstate.*
+
+# Crash log files
+crash.log
+crash.*.log
+
+# Exclude all .tfvars files, which are likely to contain sensitive data, such as
+# password, private keys, and other secrets. These should not be part of version
+# control as they are data points which are potentially sensitive and subject
+# to change depending on the environment.
+*.tfvars
+*.tfvars.json
+
+# Ignore override files as they are usually used to override resources locally and so
+# are not checked in
+override.tf
+override.tf.json
+*_override.tf
+*_override.tf.json
+
+# Ignore transient lock info files created by terraform apply
+.terraform.tfstate.lock.info
+
+# Include override files you do wish to add to version control using negated pattern
+# !example_override.tf
+
+# Include tfplan files to ignore the plan output of command: terraform plan -out=tfplan
+# example: *tfplan*
+
+# Ignore CLI configuration files
+.terraformrc
+terraform.rc
diff --git a/infra/clusters/management/bootstrap.tar.xz b/infra/clusters/management/bootstrap.tar.xz
new file mode 100644
index 0000000..ec9f172
Binary files /dev/null and b/infra/clusters/management/bootstrap.tar.xz differ
diff --git a/infra/clusters/management/bootstrap/stage1-create/.terraform.lock.hcl b/infra/clusters/management/bootstrap/stage1-create/.terraform.lock.hcl
new file mode 100644
index 0000000..c636ea6
--- /dev/null
+++ b/infra/clusters/management/bootstrap/stage1-create/.terraform.lock.hcl
@@ -0,0 +1,159 @@
+# This file is maintained automatically by "terraform init".
+# Manual edits may be lost in future updates.
+
+provider "registry.terraform.io/gavinbunney/kubectl" {
+ version = "1.14.0"
+ constraints = "1.14.0"
+ hashes = [
+ "h1:gLFn+RvP37sVzp9qnFCwngRjjFV649r6apjxvJ1E/SE=",
+ "zh:0350f3122ff711984bbc36f6093c1fe19043173fad5a904bce27f86afe3cc858",
+ "zh:07ca36c7aa7533e8325b38232c77c04d6ef1081cb0bac9d56e8ccd51f12f2030",
+ "zh:0c351afd91d9e994a71fe64bbd1662d0024006b3493bb61d46c23ea3e42a7cf5",
+ "zh:39f1a0aa1d589a7e815b62b5aa11041040903b061672c4cfc7de38622866cbc4",
+ "zh:428d3a321043b78e23c91a8d641f2d08d6b97f74c195c654f04d2c455e017de5",
+ "zh:4baf5b1de2dfe9968cc0f57fd4be5a741deb5b34ee0989519267697af5f3eee5",
+ "zh:6131a927f9dffa014ab5ca5364ac965fe9b19830d2bbf916a5b2865b956fdfcf",
+ "zh:c62e0c9fd052cbf68c5c2612af4f6408c61c7e37b615dc347918d2442dd05e93",
+ "zh:f0beffd7ce78f49ead612e4b1aefb7cb6a461d040428f514f4f9cc4e5698ac65",
+ ]
+}
+
+provider "registry.terraform.io/hashicorp/helm" {
+ version = "2.10.1"
+ constraints = "2.10.1"
+ hashes = [
+ "h1:ctDhNJU4tEcyoUgPzwKuJmbDIqUl25mCY+s/lVHP6Sg=",
+ "zh:0717312baed39fb0a00576297241b69b419880cad8771bf72dec97ebdc96b200",
+ "zh:0e0e287b4e8429a0700143c8159764502eba0b33b1d094bf0d4ef4d93c7802cb",
+ "zh:4f74605377dab4065aaad35a2c5fa6186558c6e2e57b9058bdc8a62cf91857b9",
+ "zh:505f4af4dedb7a4f8f45b4201900b8e16216bdc2a01cc84fe13cdbf937570e7e",
+ "zh:83f37fe692513c0ce307d487248765383e00f9a84ed95f993ce0d3efdf4204d3",
+ "zh:840e5a84e1b5744f0211f611a2c6890da58016a40aafd5971f12285164d4e29b",
+ "zh:8c03d8dee292fa0367b0511cf3e95b706e034f78025f5dff0388116e1798bf47",
+ "zh:937800d1860f6b3adbb20e65f11e5fcd940b21ce8bdb48198630426244691325",
+ "zh:c1853aa5cbbdd1d46f4b169e84c3482103f0e8575a9bb044dbde908e27348c5d",
+ "zh:c9b0f640590da20931c30818b0b0587aa517d5606cb6e8052e4e4bf38f97b54d",
+ "zh:f569b65999264a9416862bca5cd2a6177d94ccb0424f3a4ef424428912b9cb3c",
+ "zh:fe8bd4dd09dc7ca218959eda1ced9115408c2cdc9b4a76964bfa455f3bcadfd3",
+ ]
+}
+
+provider "registry.terraform.io/hashicorp/local" {
+ version = "2.4.0"
+ constraints = "2.4.0"
+ hashes = [
+ "h1:R97FTYETo88sT2VHfMgkPU3lzCsZLunPftjSI5vfKe8=",
+ "zh:53604cd29cb92538668fe09565c739358dc53ca56f9f11312b9d7de81e48fab9",
+ "zh:66a46e9c508716a1c98efbf793092f03d50049fa4a83cd6b2251e9a06aca2acf",
+ "zh:70a6f6a852dd83768d0778ce9817d81d4b3f073fab8fa570bff92dcb0824f732",
+ "zh:78d5eefdd9e494defcb3c68d282b8f96630502cac21d1ea161f53cfe9bb483b3",
+ "zh:82a803f2f484c8b766e2e9c32343e9c89b91997b9f8d2697f9f3837f62926b35",
+ "zh:9708a4e40d6cc4b8afd1352e5186e6e1502f6ae599867c120967aebe9d90ed04",
+ "zh:973f65ce0d67c585f4ec250c1e634c9b22d9c4288b484ee2a871d7fa1e317406",
+ "zh:c8fa0f98f9316e4cfef082aa9b785ba16e36ff754d6aba8b456dab9500e671c6",
+ "zh:cfa5342a5f5188b20db246c73ac823918c189468e1382cb3c48a9c0c08fc5bf7",
+ "zh:e0e2b477c7e899c63b06b38cd8684a893d834d6d0b5e9b033cedc06dd7ffe9e2",
+ "zh:f62d7d05ea1ee566f732505200ab38d94315a4add27947a60afa29860822d3fc",
+ "zh:fa7ce69dde358e172bd719014ad637634bbdabc49363104f4fca759b4b73f2ce",
+ ]
+}
+
+provider "registry.terraform.io/hashicorp/random" {
+ version = "3.6.2"
+ hashes = [
+ "h1:wmG0QFjQ2OfyPy6BB7mQ57WtoZZGGV07uAPQeDmIrAE=",
+ "zh:0ef01a4f81147b32c1bea3429974d4d104bbc4be2ba3cfa667031a8183ef88ec",
+ "zh:1bcd2d8161e89e39886119965ef0f37fcce2da9c1aca34263dd3002ba05fcb53",
+ "zh:37c75d15e9514556a5f4ed02e1548aaa95c0ecd6ff9af1119ac905144c70c114",
+ "zh:4210550a767226976bc7e57d988b9ce48f4411fa8a60cd74a6b246baf7589dad",
+ "zh:562007382520cd4baa7320f35e1370ffe84e46ed4e2071fdc7e4b1a9b1f8ae9b",
+ "zh:5efb9da90f665e43f22c2e13e0ce48e86cae2d960aaf1abf721b497f32025916",
+ "zh:6f71257a6b1218d02a573fc9bff0657410404fb2ef23bc66ae8cd968f98d5ff6",
+ "zh:78d5eefdd9e494defcb3c68d282b8f96630502cac21d1ea161f53cfe9bb483b3",
+ "zh:9647e18f221380a85f2f0ab387c68fdafd58af6193a932417299cdcae4710150",
+ "zh:bb6297ce412c3c2fa9fec726114e5e0508dd2638cad6a0cb433194930c97a544",
+ "zh:f83e925ed73ff8a5ef6e3608ad9225baa5376446349572c2449c0c0b3cf184b7",
+ "zh:fbef0781cb64de76b1df1ca11078aecba7800d82fd4a956302734999cfd9a4af",
+ ]
+}
+
+provider "registry.terraform.io/hashicorp/tls" {
+ version = "4.0.4"
+ constraints = "4.0.4"
+ hashes = [
+ "h1:pe9vq86dZZKCm+8k1RhzARwENslF3SXb9ErHbQfgjXU=",
+ "zh:23671ed83e1fcf79745534841e10291bbf34046b27d6e68a5d0aab77206f4a55",
+ "zh:45292421211ffd9e8e3eb3655677700e3c5047f71d8f7650d2ce30242335f848",
+ "zh:59fedb519f4433c0fdb1d58b27c210b27415fddd0cd73c5312530b4309c088be",
+ "zh:5a8eec2409a9ff7cd0758a9d818c74bcba92a240e6c5e54b99df68fff312bbd5",
+ "zh:5e6a4b39f3171f53292ab88058a59e64825f2b842760a4869e64dc1dc093d1fe",
+ "zh:810547d0bf9311d21c81cc306126d3547e7bd3f194fc295836acf164b9f8424e",
+ "zh:824a5f3617624243bed0259d7dd37d76017097dc3193dac669be342b90b2ab48",
+ "zh:9361ccc7048be5dcbc2fafe2d8216939765b3160bd52734f7a9fd917a39ecbd8",
+ "zh:aa02ea625aaf672e649296bce7580f62d724268189fe9ad7c1b36bb0fa12fa60",
+ "zh:c71b4cd40d6ec7815dfeefd57d88bc592c0c42f5e5858dcc88245d371b4b8b1e",
+ "zh:dabcd52f36b43d250a3d71ad7abfa07b5622c69068d989e60b79b2bb4f220316",
+ "zh:f569b65999264a9416862bca5cd2a6177d94ccb0424f3a4ef424428912b9cb3c",
+ ]
+}
+
+provider "registry.terraform.io/hetznercloud/hcloud" {
+ version = "1.33.2"
+ constraints = "1.33.2"
+ hashes = [
+ "h1:3Hx8p9LbcnHfBhy3nT7+unlc5rwkiSZjLt9SVQOSpB8=",
+ "zh:0a5d0f332d7dfe77fa27301094af98a185aabfb9f56d71b81936e03211e4d66f",
+ "zh:0e047859ee7296f335881933ccf8ce8c07aa47bef56d5449a81b85a2d9dac93a",
+ "zh:1d3d0896f518df9e245c3207ed231e528f5dcfe628508e7c3ceba4a2bfefaa7a",
+ "zh:1d7a31c8c490512896ce327ab220e950f1a2e30ee83cc2e58e69bbbfbbb87e72",
+ "zh:67cbb2492683cb22f6c54f26bee72aec140c8dd2d0881b2815d2ef80959fc751",
+ "zh:771062815e662979204ac2dc91c34c893f27670d67e02370e48124483d3c9838",
+ "zh:957ebb146898cd059c0cc8b4c32e574b61041d8b6a11cd854b3cc1d3baaeb3a9",
+ "zh:95dbd8634000b979213cb97b5d869cad78299ac994d0665d150c8dafc1390429",
+ "zh:a21b22b2e9d835e1b8b3b7e0b41a4d199171d62e9e9be78c444c700e96b31316",
+ "zh:aead1ba50640a51f20d574374f2c6065d9bfa4eea5ef044d1475873c33e58239",
+ "zh:cefabd0a78af40ea5cd08e1ca436c753df9b1c6496eb27281b755a2de1f167ab",
+ "zh:d98cffc5206b9a7550a23e13031a6f53566bd1ed3bf65314bc55ef12404d49ce",
+ "zh:dddaaf95b6aba701153659feff12c7bce6acc78362cb5ff8321a1a1cbf780cd9",
+ "zh:fd662b483250326a1bfbe5684c22c5083955a43e0773347eea35cd4c2cfe700e",
+ ]
+}
+
+provider "registry.terraform.io/loafoe/ssh" {
+ version = "2.6.0"
+ constraints = "2.6.0"
+ hashes = [
+ "h1:80FIBNQBLj9p0j7EMQDWxzY6Fh0VODiflCww1/Wx6rk=",
+ "zh:1285448b69bd388a4a59ed170f9c07c641207a7291057860557937807d02da95",
+ "zh:2472c5dee4265cb555a627aa4ecc5702d32cd7aebe85722820df7499b7d4502a",
+ "zh:2a9b8f0ad446febb517a7fe38de9b02bc1bcceb90843a713c546770eff44aa84",
+ "zh:66e62d5bb280af7407315a62aee2ab35f8ce1b36f7400633f75f72111deede87",
+ "zh:832fc1213c3447fa831c1b2331cde71072c95a3f3eae04ff23dd09975d7c6577",
+ "zh:a4e19d6a6e776732cce70f350e8cf1954febf1e9281b4668f567636c7d0f75d8",
+ "zh:ac18abae233fe367f164c5a4492875a25e1c1de38a181876ffdc9f87c75abacf",
+ "zh:b44203b49cdef04f3e110923017a1e80c8b5588b91605e0c0985b3c2d839d6c0",
+ "zh:bf489e0f8ebc6f1d0d28cd6eadd871d6d63b952deaf10271765609fce417a5cf",
+ "zh:c41a209c6a4bf81309e573a53ad7b9e8d655bd7e81e40685214aeac92e682333",
+ "zh:ded134d1359bd39c2261ce1ed3bd468f8fac4fff09c07a213a3d281313d99d59",
+ ]
+}
+
+provider "registry.terraform.io/rancher/rancher2" {
+ version = "3.0.0"
+ constraints = "3.0.0"
+ hashes = [
+ "h1:Qnc86BDThHGg+UqfK8Ssx7l+KcYg8wBDsMU3mCgUK6E=",
+ "zh:3f28e165f4e6dbfb3c6f57ea96571f907915cf9d3eaf0041054ec3c4e22cc14b",
+ "zh:4d71e727690d8691321c9591248599fdb38e09e27dace74da6dee16ec01351b0",
+ "zh:51dc86277205c7514cad0edd6e48a300a470a846a12927323b09fb1550891bcb",
+ "zh:5b240c5eefc5bcffcf851bd11dc913cff05a0fbf7539e966c7638894265a6297",
+ "zh:8f754482629b587083c1b9e0e0646a577a8defdf64d61ca12c853dd41ffbc1bb",
+ "zh:9a212e0dd166e2dc1ae3c13c99b07eb6f48e5ec4b6dcdca857d3f3d05b0fcabc",
+ "zh:a4e45342af8e9a8ab2be9a3ffd8a7df244519fade4901cc0b95328937e8b80ba",
+ "zh:af148901e447f97b844b5d5a81df5c7fce0432b3f0a42cb674196f0ff2ce1ded",
+ "zh:b11a97fc16b1fde2956906569bae890be59d444c192c560f00dca418b8184875",
+ "zh:b1588f6b704326ee6cf384c6d2542e4bd6f08b5324098cb6a7c126fb37112b28",
+ "zh:e63dd35d6f962e22561b3dd1b6fd8c23bb8154ca492a89e6b4693569974c971f",
+ "zh:f1eeae30b192f569f3e16061e28f1ce876a6f48eeab4c113e5f771809719090b",
+ ]
+}
diff --git a/infra/clusters/management/bootstrap/stage1-create/id_rsa b/infra/clusters/management/bootstrap/stage1-create/id_rsa
new file mode 100644
index 0000000..da16aaf
--- /dev/null
+++ b/infra/clusters/management/bootstrap/stage1-create/id_rsa
@@ -0,0 +1,27 @@
+-----BEGIN RSA PRIVATE KEY-----
+MIIEowIBAAKCAQEAujkDLDgyrzbdQRk96ucXOB9aBKZAxoEiFqlGIY3Z65kB4o0C
+4Oc8l74S5CPmQsxNJwfRWpSmzVNn3XiHGLcSpLF9NeKMYrWZ/uvZ7r/dZmeOkp+I
+073Dkz9jU09HMlLZMuB7BNzEZmpO+1BrjYj9s76DwF9sjJlUYG88xBqOVp/7mqiX
+RD+XLBdz090qx/JGOHMSxJECRq8AiWrp5Jp/garjcw7fOKiS1tQ4uiswWj+AfU3b
+b9l3HpgyAcaFbg5sHllj5iSwlsMlEGjU/AeEpUkWjQHrv3hcwMIAua5qhC8az30D
+fJ2kcjyg7J4CDqB6Jaxk9SWATO4jlQzEQd3reQIDAQABAoIBAB6AJALkGXkVNVvq
+NHf67ZSlnerRCB77G4g2pWPthdnOr75ZdjU76nK4EQQI1TfvmltgLmv1mPRcStC9
+YvMrWQRchbODrZalQ9m663DtP+f74iAlvRVhKV0+rpgAjhqx8x0gI0YCmrBjjRgg
+bd06qML92zpw5qiInIdG8N71soaBWaAHPurMxQitGEiKCMXziRyNDJdt6vvuW+ne
+K2x6CYP+4bqXDDKOLk2s8w1iG+50TMf28USSOVTORWu/fBoWzK56Ifhy3qHRRklF
+U74jyolGo2fTyGCxdsjrjmkluVy7FYiTAKiSyQ7qPeTeFswE7Bko7xF690wp9rUP
+Ecf33tkCgYEAxRCOWZX+EJ9MIqEc19lU/sWR+xMgnQoS2+I2u2KIGjCkIOqPssGj
+qcGqLglp4SzZRvOAOMfU6dGZHsw+OjY50Nj8Z5irgps68wionB7eIzCWaJ5+FtZl
+OpAquwWYUZbitdOMkn4vDoIjbkb7Lg8abK5593RHKTH7nzXmLckHG0cCgYEA8epi
+xLcWdRr7R4YrSAJm7LkvAVvOr7LGmVG5tTHCgBMmxb3ac1reKJLF871FsKkTuVE9
+LHhUvHNO3rExrRs8wzZRkykPHoL/xiuIxZagRyX3fiBU/IlxNU7S6W/fqShWyVnM
+QZdeL6GB4KyBTcVWckBdx9XRxuJxFtSjcYdAoz8CgYAnCGl5uyjwt+zHqyvgYS7h
+q9aHabl7AYTMwtjectzMezf3QR6nZI17UV3Y8opjTJPY5uBN3t8AVUDEBeaJdzYq
+dOBB0M6f9wlNHDjxe3e6dqREIqiM83hniii8lJYgCwfqxfVBCvddI0/LRwn3jIxK
+XKDR79ksgrb5SR7HkNr0fwKBgQDB/8CtGFY+GyEfvoy+9o4rkGYNpN4fMDLriQpw
+MDNWGgWh1hp1H43A49MzH7nfbfePSYLRQr5RUfcRxu+bbphPxCOu6+JgCZWsCgVo
+zt5BsETFNJBy5JWQtmGVKk4mjV7rocOXZhf2AoLw9eXLxFEK1mteci4EXFtsf6GC
+zYAcaQKBgHrx0e5NHuSUYw0AYBd6CR4zIOdVPVTUEocAhjVvglEp5ApC0SQYr2bD
+BjA2lsfYhtRrjciSAvDHRnK2pTWlbNZEQAert1z20+Hv7BLq376vgTjJCOXQYxUY
+v3uf4s04ZJkDT5msmxvGQMZfjsMPqAPNNYyajUy+RdSU5DBNPv6G
+-----END RSA PRIVATE KEY-----
diff --git a/infra/clusters/management/bootstrap/stage1-create/id_rsa.pub b/infra/clusters/management/bootstrap/stage1-create/id_rsa.pub
new file mode 100755
index 0000000..5669c94
--- /dev/null
+++ b/infra/clusters/management/bootstrap/stage1-create/id_rsa.pub
@@ -0,0 +1 @@
+ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC6OQMsODKvNt1BGT3q5xc4H1oEpkDGgSIWqUYhjdnrmQHijQLg5zyXvhLkI+ZCzE0nB9FalKbNU2fdeIcYtxKksX014oxitZn+69nuv91mZ46Sn4jTvcOTP2NTT0cyUtky4HsE3MRmak77UGuNiP2zvoPAX2yMmVRgbzzEGo5Wn/uaqJdEP5csF3PT3SrH8kY4cxLEkQJGrwCJaunkmn+BquNzDt84qJLW1Di6KzBaP4B9Tdtv2XcemDIBxoVuDmweWWPmJLCWwyUQaNT8B4SlSRaNAeu/eFzAwgC5rmqELxrPfQN8naRyPKDsngIOoHolrGT1JYBM7iOVDMRB3et5
diff --git a/infra/clusters/management/bootstrap/stage1-create/kube_config_server.yaml b/infra/clusters/management/bootstrap/stage1-create/kube_config_server.yaml
new file mode 100755
index 0000000..7ad7981
--- /dev/null
+++ b/infra/clusters/management/bootstrap/stage1-create/kube_config_server.yaml
@@ -0,0 +1,19 @@
+apiVersion: v1
+clusters:
+- cluster:
+ certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUJkekNDQVIyZ0F3SUJBZ0lCQURBS0JnZ3Foa2pPUFFRREFqQWpNU0V3SHdZRFZRUUREQmhyTTNNdGMyVnkKZG1WeUxXTmhRREUzTWpVNU56RXhNVGt3SGhjTk1qUXdPVEV3TVRJeU5URTVXaGNOTXpRd09UQTRNVEl5TlRFNQpXakFqTVNFd0h3WURWUVFEREJock0zTXRjMlZ5ZG1WeUxXTmhRREUzTWpVNU56RXhNVGt3V1RBVEJnY3Foa2pPClBRSUJCZ2dxaGtqT1BRTUJCd05DQUFSeVY2RG5UUUkwUEEzNEdNU1FlYWNKZ0l0WWJjdThzZ2ZhODBoc3AxNEgKQ2Y5YWtsSkJVOFpZaGl4WnZTOS9tKzB3MXF2RkRnM2ZVSDd4QnQ2T3A0UXZvMEl3UURBT0JnTlZIUThCQWY4RQpCQU1DQXFRd0R3WURWUjBUQVFIL0JBVXdBd0VCL3pBZEJnTlZIUTRFRmdRVXRUcEk2MXNMemkzVlp3eisxY05qClRBWTN2K0V3Q2dZSUtvWkl6ajBFQXdJRFNBQXdSUUloQUtQZjgybTA3LzBqek1sdHkrcVU5SVQ0TTA1UkNmbmIKNmlHdWYzTlRLYS9NQWlCcW5PK3ZGSUZ1QWFsTUlvNFl1eWUzb0NZbkhwd3Z3aGxJNUdTSmU2Y2F5UT09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K
+ server: https://168.119.61.8:6443
+ name: default
+contexts:
+- context:
+ cluster: default
+ user: default
+ name: default
+current-context: default
+kind: Config
+preferences: {}
+users:
+- name: default
+ user:
+ client-certificate-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUJrakNDQVRlZ0F3SUJBZ0lJRXhBYnJ5RWprUzR3Q2dZSUtvWkl6ajBFQXdJd0l6RWhNQjhHQTFVRUF3d1kKYXpOekxXTnNhV1Z1ZEMxallVQXhOekkxT1RjeE1URTVNQjRYRFRJME1Ea3hNREV5TWpVeE9Wb1hEVEkxTURreApNREV5TWpVeE9Wb3dNREVYTUJVR0ExVUVDaE1PYzNsemRHVnRPbTFoYzNSbGNuTXhGVEFUQmdOVkJBTVRESE41CmMzUmxiVHBoWkcxcGJqQlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDlBd0VIQTBJQUJFc2MwWVgxSlRqSSswR2gKd0tkRnZjU1BMK1p3dDhCN1hlNktMUVIyRU5TMkpuS3pVSG56QnhaWXVPY2RlR0I2OUZ1L3FoTCtHL1QySnA3KwoyQmRDcjdtalNEQkdNQTRHQTFVZER3RUIvd1FFQXdJRm9EQVRCZ05WSFNVRUREQUtCZ2dyQmdFRkJRY0RBakFmCkJnTlZIU01FR0RBV2dCVDMxZi84OWsrY3BoOU9YTWVPNE5hLzdaeEhiREFLQmdncWhrak9QUVFEQWdOSkFEQkcKQWlFQTROZEtiLy84K2NSbzNmN3J4aFZOWjFIbG11cTVHUE5oUHl2cFl6YWE1aFVDSVFDME9SWng5UGdLTlB6NwpIZjdlcmxmdjJaVUw1c0tRQWhrdE9sOFJxSHpYTUE9PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCi0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQpNSUlCZHpDQ0FSMmdBd0lCQWdJQkFEQUtCZ2dxaGtqT1BRUURBakFqTVNFd0h3WURWUVFEREJock0zTXRZMnhwClpXNTBMV05oUURFM01qVTVOekV4TVRrd0hoY05NalF3T1RFd01USXlOVEU1V2hjTk16UXdPVEE0TVRJeU5URTUKV2pBak1TRXdId1lEVlFRRERCaHJNM010WTJ4cFpXNTBMV05oUURFM01qVTVOekV4TVRrd1dUQVRCZ2NxaGtqTwpQUUlCQmdncWhrak9QUU1CQndOQ0FBVDVkQ2NhOU05eUFQakJjZnJGUkRwK08rclEwL3VXbDdzUjN5ODZQWlV6CmZBaUllMm5Gc2NVOEpadzVFN2svQXg3d2Z4ZWZGdjJyaHJvUmt5V0pZaHJvbzBJd1FEQU9CZ05WSFE4QkFmOEUKQkFNQ0FxUXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QWRCZ05WSFE0RUZnUVU5OVgvL1BaUG5LWWZUbHpIanVEVwp2KzJjUjJ3d0NnWUlLb1pJemowRUF3SURTQUF3UlFJaEFKSGlxa2lKQVFqT3RYK2tsQnhzbVU5WUZxb0Rud2xICkR0RnB3Rm1WM2ZVdkFpQURBbi84dVl3TkpjNU9uWE5SeDVUckVlc0JvcmRJem96dVZhRFV2a3VLM0E9PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==
+ client-key-data: LS0tLS1CRUdJTiBFQyBQUklWQVRFIEtFWS0tLS0tCk1IY0NBUUVFSUZEbVZrTFR0cjgvaGlEM0E4bXJWRkRRdTYyMCtqSU9zVHNRNlVPM21uRDZvQW9HQ0NxR1NNNDkKQXdFSG9VUURRZ0FFU3h6UmhmVWxPTWo3UWFIQXAwVzl4STh2NW5DM3dIdGQ3b290QkhZUTFMWW1jck5RZWZNSApGbGk0NXgxNFlIcjBXNytxRXY0YjlQWW1udjdZRjBLdnVRPT0KLS0tLS1FTkQgRUMgUFJJVkFURSBLRVktLS0tLQo=
diff --git a/infra/clusters/management/bootstrap/stage1-create/local.tf b/infra/clusters/management/bootstrap/stage1-create/local.tf
new file mode 100644
index 0000000..820c16f
--- /dev/null
+++ b/infra/clusters/management/bootstrap/stage1-create/local.tf
@@ -0,0 +1,7 @@
+data "local_sensitive_file" "vault_keys" {
+ filename = "${path.module}/vault.secret"
+}
+
+locals {
+ vault_keys = jsondecode(data.local_sensitive_file.vault_keys.content)
+}
diff --git a/infra/clusters/management/bootstrap/stage1-create/main.tf b/infra/clusters/management/bootstrap/stage1-create/main.tf
new file mode 100644
index 0000000..605caac
--- /dev/null
+++ b/infra/clusters/management/bootstrap/stage1-create/main.tf
@@ -0,0 +1,67 @@
+# HCloud infrastructure resources
+resource "tls_private_key" "global_key" {
+ algorithm = "RSA"
+ rsa_bits = 2048
+}
+
+resource "local_sensitive_file" "ssh_private_key_pem" {
+ filename = "${path.module}/id_rsa"
+ content = tls_private_key.global_key.private_key_pem
+ file_permission = "0600"
+}
+
+resource "local_file" "ssh_public_key_openssh" {
+ filename = "${path.module}/id_rsa.pub"
+ content = tls_private_key.global_key.public_key_openssh
+}
+
+resource "hcloud_network" "private" {
+ name = "${var.prefix}-private-network"
+ ip_range = var.network_cidr
+}
+
+resource "hcloud_network_subnet" "private" {
+ type = "cloud"
+ network_id = hcloud_network.private.id
+ network_zone = var.network_zone
+ ip_range = var.network_ip_range
+}
+
+# Temporary key pair used for SSH access
+resource "hcloud_ssh_key" "management_ssh_key" {
+ name = "${var.prefix}-instance-ssh-key"
+ public_key = tls_private_key.global_key.public_key_openssh
+}
+
+# HCloud Instance for creating a single node RKE cluster and installing the Rancher server
+resource "hcloud_server" "management_server" {
+ name = "${var.prefix}-management-server"
+ image = "ubuntu-24.04"
+ server_type = var.instance_type
+ location = var.hcloud_location
+ ssh_keys = [hcloud_ssh_key.management_ssh_key.id]
+
+ network {
+ network_id = hcloud_network.private.id
+ }
+
+ provisioner "remote-exec" {
+ inline = [
+ "echo 'Waiting for cloud-init to complete...'",
+ "cloud-init status --wait > /dev/null",
+ "echo 'Completed cloud-init!'",
+ ]
+
+ connection {
+ type = "ssh"
+ host = self.ipv4_address
+ user = local.node_username
+ private_key = tls_private_key.global_key.private_key_pem
+ }
+ }
+
+ depends_on = [
+ hcloud_network_subnet.private
+ ]
+}
+
diff --git a/infra/clusters/management/bootstrap/stage1-create/output.tf b/infra/clusters/management/bootstrap/stage1-create/output.tf
new file mode 100644
index 0000000..db030cb
--- /dev/null
+++ b/infra/clusters/management/bootstrap/stage1-create/output.tf
@@ -0,0 +1,43 @@
+output "rancher_node_ip" {
+ value = hcloud_server.management_server.ipv4_address
+}
+
+output "rancher_server_uri" {
+ value = module.rancher.rancher_uri
+}
+
+output "rancher_server_admin_password" {
+ value = module.rancher.rancher_server_admin_password
+ sensitive = true
+}
+
+output "minio_api_uri" {
+ value = module.rancher.minio_api_uri
+}
+
+output "minio_admin_uri" {
+ value = module.rancher.minio_admin_uri
+}
+
+output "minio_root_user" {
+ value = module.rancher.minio_root_user
+ sensitive = true
+}
+
+output "minio_root_password" {
+ value = module.rancher.minio_root_password
+ sensitive = true
+}
+
+output "minio_region" {
+ value = var.aws_region
+}
+
+output "vault_uri" {
+ value = module.rancher.vault_uri
+}
+
+output "vault_root_token" {
+ value = local.vault_keys.root_token
+ sensitive = true
+}
diff --git a/infra/clusters/management/bootstrap/stage1-create/provider.tf b/infra/clusters/management/bootstrap/stage1-create/provider.tf
new file mode 100644
index 0000000..55fdd90
--- /dev/null
+++ b/infra/clusters/management/bootstrap/stage1-create/provider.tf
@@ -0,0 +1,21 @@
+terraform {
+ required_providers {
+ hcloud = {
+ source = "hetznercloud/hcloud"
+ version = "1.33.2"
+ }
+ local = {
+ source = "hashicorp/local"
+ version = "2.4.0"
+ }
+ tls = {
+ source = "hashicorp/tls"
+ version = "4.0.4"
+ }
+ }
+ required_version = ">= 1.0.0"
+}
+
+provider "hcloud" {
+ token = var.hcloud_token
+}
diff --git a/infra/clusters/management/bootstrap/stage1-create/rancher.tf b/infra/clusters/management/bootstrap/stage1-create/rancher.tf
new file mode 100644
index 0000000..b0e1e59
--- /dev/null
+++ b/infra/clusters/management/bootstrap/stage1-create/rancher.tf
@@ -0,0 +1,23 @@
+module "rancher" {
+ source = "../../../../modules/rancher"
+
+ node_public_ip = hcloud_server.management_server.ipv4_address
+ node_internal_ip = one(hcloud_server.management_server.network[*]).ip
+ node_username = local.node_username
+ ssh_private_key_pem = tls_private_key.global_key.private_key_pem
+ rancher_kubernetes_version = var.rancher_kubernetes_version
+
+ cert_manager_version = var.cert_manager_version
+ rancher_version = var.rancher_version
+ rancher_helm_repository = var.rancher_helm_repository
+
+ // rancher_server_dns = join(".", ["rancher", hcloud_server.management_server.ipv4_address, "sslip.io"])
+ admin_password = var.rancher_server_admin_password
+
+ aws_access_key_id = var.aws_access_key_id
+ aws_secret_access_key = var.aws_secret_access_key
+ aws_region = var.aws_region
+ aws_kms_key_id = var.aws_kms_key_id
+
+ server_dns = join(".", [hcloud_server.management_server.ipv4_address, "sslip.io"])
+}
diff --git a/infra/clusters/management/bootstrap/stage1-create/variables.tf b/infra/clusters/management/bootstrap/stage1-create/variables.tf
new file mode 100644
index 0000000..f886981
--- /dev/null
+++ b/infra/clusters/management/bootstrap/stage1-create/variables.tf
@@ -0,0 +1,97 @@
+# Variables for Hetzner Cloud infrastructure module
+variable "hcloud_token" {
+ type = string
+ description = "Hetzner Cloud API token used to create infrastructure"
+}
+
+variable "hcloud_location" {
+ type = string
+ description = "Hetzner location used for all resources"
+ default = "fsn1"
+}
+
+variable "prefix" {
+ type = string
+ description = "Prefix added to names of all resources"
+ default = "quickstart"
+}
+
+variable "network_cidr" {
+ type = string
+ description = "Network to create for private communication"
+ default = "10.0.0.0/8"
+}
+
+variable "network_ip_range" {
+ type = string
+ description = "Subnet to create for private communication. Must be part of the CIDR defined in `network_cidr`."
+ default = "10.0.1.0/24"
+}
+
+variable "network_zone" {
+ type = string
+ description = "Zone to create the network in"
+ default = "eu-central"
+}
+
+variable "instance_type" {
+ type = string
+ description = "Type of instance to be used for all instances"
+ default = "cx21"
+}
+
+# Variables for Rancher server module
+variable "rancher_kubernetes_version" {
+ type = string
+ description = "Kubernetes version to use for Rancher server cluster"
+ default = "v1.24.14+k3s1"
+}
+
+variable "cert_manager_version" {
+ type = string
+ description = "Version of cert-manager to install alongside Rancher (format: 0.0.0)"
+ default = "1.11.0"
+}
+
+variable "rancher_version" {
+ type = string
+ description = "Rancher server version (format: v0.0.0)"
+ default = "2.7.9"
+}
+
+variable "rancher_helm_repository" {
+ type = string
+ description = "The helm repository, where the Rancher helm chart is installed from"
+ default = "https://releases.rancher.com/server-charts/latest"
+}
+
+variable "rancher_server_admin_password" {
+ type = string
+ description = "Admin password to use for Rancher server bootstrap, min. 12 characters"
+}
+
+# Local variables used to reduce repetition
+locals {
+ node_username = "root"
+}
+
+variable "aws_access_key_id" {
+ description = "AWS Access Key ID for Vault KMS access"
+ type = string
+}
+
+variable "aws_secret_access_key" {
+ description = "AWS Secret Access Key for Vault KMS access"
+ type = string
+}
+
+variable "aws_kms_key_id" {
+ description = "AWS KMS Key ID for Vault KMS access"
+ type = string
+}
+
+variable "aws_region" {
+ description = "AWS KMS Region for Vault KMS access"
+ type = string
+ default = "eu-central-1"
+}
diff --git a/infra/clusters/management/bootstrap/stage1-create/vault.secret b/infra/clusters/management/bootstrap/stage1-create/vault.secret
new file mode 100755
index 0000000..088b703
--- /dev/null
+++ b/infra/clusters/management/bootstrap/stage1-create/vault.secret
@@ -0,0 +1,23 @@
+{
+ "unseal_keys_b64": [],
+ "unseal_keys_hex": [],
+ "unseal_shares": 1,
+ "unseal_threshold": 1,
+ "recovery_keys_b64": [
+ "V2OBJfg6VFyd8My0fFnQVnX0ehUIejdkiS0wIk/yj08L",
+ "Ub3NvB8i9wylI7GUhlHu1YayvrBL71eEC7+SmkXT9AWw",
+ "rL3HQKU0AEenP4y2UBD+ZlUrIY3LJfnA+eFKXi8IIowN",
+ "MldF1Cqi2FvLs4Z7yYyAxlZgNptVcUNRv4zU3wkD1RpT",
+ "SlGl9m9bYfD/xZ0Ia1RrPEFbxDPmnMdDjpV0S26BrY8O"
+ ],
+ "recovery_keys_hex": [
+ "57638125f83a545c9df0ccb47c59d05675f47a15087a3764892d30224ff28f4f0b",
+ "51bdcdbc1f22f70ca523b1948651eed586b2beb04bef57840bbf929a45d3f405b0",
+ "acbdc740a5340047a73f8cb65010fe66552b218dcb25f9c0f9e14a5e2f08228c0d",
+ "325745d42aa2d85bcbb3867bc98c80c65660369b55714351bf8cd4df0903d51a53",
+ "4a51a5f66f5b61f0ffc59d086b546b3c415bc433e69cc7438e95744b6e81ad8f0e"
+ ],
+ "recovery_keys_shares": 5,
+ "recovery_keys_threshold": 3,
+ "root_token": "hvs.mDJwUQczuCUrK5wu9HhnKsP5"
+}
diff --git a/infra/clusters/management/bootstrap/stage2-harden/.terraform.lock.hcl b/infra/clusters/management/bootstrap/stage2-harden/.terraform.lock.hcl
new file mode 100644
index 0000000..7c6a1e6
--- /dev/null
+++ b/infra/clusters/management/bootstrap/stage2-harden/.terraform.lock.hcl
@@ -0,0 +1,41 @@
+# This file is maintained automatically by "terraform init".
+# Manual edits may be lost in future updates.
+
+provider "registry.terraform.io/aminueza/minio" {
+ version = "2.5.0"
+ constraints = "~> 2.5.0"
+ hashes = [
+ "h1:RrjfsRy+fBVh7VF3r9u7uCCSjAdR5APa6sqbc9b8GfU=",
+ "zh:066cdb289dbfd1675e22fe58c8b42e2732f24fc1528b1919a78dfe28f80e8b30",
+ "zh:26d5e55106259e69493b95058178ec3d6b2395f03a8fe832af1be0e4d89ef42c",
+ "zh:6247e19de9ec6ef719cfcb174b8f08085c0fd5118b3b0de3fb9bb150702b4ad8",
+ "zh:70c3cbab0ba8edeec0db2e175bcdb47255c92f3153f839c4e8f2b0fe8c1366f4",
+ "zh:713793b4b93ae62070b18983ff525390de6c84547cab4220aa068437149f5035",
+ "zh:72de3e532d4bc7c7a4a872aaf00d7e4dfa09f3730668a738bb881d6734248f02",
+ "zh:9090f9288d7bc9f23043c1e65d8535e91f10413a16699d4a18add811b25fa167",
+ "zh:9847284aecb52718468feccb914d67e8befb8bff8345275cb03c3209b338f68b",
+ "zh:aa09ba1aa6fec278198ff352cc7f2977cfe567d31fd948c54fba5db82b4cd7ec",
+ "zh:ca28efbf60400918b9dadd18ecbf683065bf9329b35cbf3826718d8d50f10263",
+ "zh:cb21b119202ac6a30724beb89aefbb8660762b0e9b7165f1e22d59720dd0f110",
+ "zh:f36b4c9fe4795e892b3be2c80a22461f373541f81d335b51afa963097ab29624",
+ ]
+}
+
+provider "registry.terraform.io/hashicorp/vault" {
+ version = "4.4.0"
+ hashes = [
+ "h1:+OO0KHYslvmN+mgRi+v3B6Yg7CYJUyaFh0GIW2hQcCY=",
+ "zh:12758c5afc4160355c55e808f3d0e960a69ef285ddd57f29c3a775ac63c76135",
+ "zh:190c4fbb620bbc07ff850119e17ffbca9f4d81968e69436024fcfb20c69d177e",
+ "zh:2668d3f37e41a539ddca8507a2f8100711cbe54fd7de6d9e82e191c456999674",
+ "zh:59cf5fe3a5cff561c9d15b1b0748fdaeee8966537a5121a20178a1dd265cc22c",
+ "zh:6bf7107b56132281b05932aa8fce8851cd2351d2f6c7d0de4475b5dabf755d4f",
+ "zh:77ee85a529e9ae519aa63950960bd2c2056dd622ad32b08731cb5237e28a9200",
+ "zh:78d5eefdd9e494defcb3c68d282b8f96630502cac21d1ea161f53cfe9bb483b3",
+ "zh:c3ff4d9c123cc23f95813800c4cea69d1fab29c65b96de4a5932fc328275f527",
+ "zh:c5a6dd8530f720757861da38c16da6577f30cc00423471f8bcc5682c1852027f",
+ "zh:c5acd773d7d24a6116866bf0e4449a3be6849cd6bd2f87141289d47983a0f777",
+ "zh:ede501e9979a586be279b63e0cf5ce69fa89780e37791fe87d8b4283e3716c96",
+ "zh:f5f6ae50a23a184d126832d688380e22311fa1b0192723507a790e57917c3e78",
+ ]
+}
diff --git a/infra/clusters/management/bootstrap/stage2-harden/local.tf b/infra/clusters/management/bootstrap/stage2-harden/local.tf
new file mode 100644
index 0000000..570e96b
--- /dev/null
+++ b/infra/clusters/management/bootstrap/stage2-harden/local.tf
@@ -0,0 +1,13 @@
+locals {
+ minio_uri = data.terraform_remote_state.stage1.outputs.minio_api_uri
+ minio_server = replace(
+ regex("^https?://(?:www\\.)?(.+)/?$", local.minio_uri)[0],
+ "$1",
+ "$1:443"
+ )
+ minio_region = try(data.terraform_remote_state.stage1.outputs.minio_region, "eu-central-1")
+ minio_root_user = data.terraform_remote_state.stage1.outputs.minio_root_user
+ minio_root_password = data.terraform_remote_state.stage1.outputs.minio_root_password
+ vault_uri = data.terraform_remote_state.stage1.outputs.vault_uri
+ vault_root_token = data.terraform_remote_state.stage1.outputs.vault_root_token
+}
diff --git a/infra/clusters/management/bootstrap/stage2-harden/main.tf b/infra/clusters/management/bootstrap/stage2-harden/main.tf
new file mode 100644
index 0000000..b4af08a
--- /dev/null
+++ b/infra/clusters/management/bootstrap/stage2-harden/main.tf
@@ -0,0 +1,83 @@
+resource "vault_mount" "management" {
+ path = "management"
+ type = "kv"
+ options = { version = "2" }
+ description = "KV Version 2 secret engine mount for management"
+}
+
+resource "minio_s3_bucket" "management" {
+ bucket = "management"
+ acl = "private"
+}
+
+# resource "minio_s3_bucket_server_side_encryption" "management" {
+# bucket = minio_s3_bucket.management.bucket
+# encryption_type = "aws:kms"
+# kms_key_id = var.aws_kms_key_id
+# }
+
+resource "minio_iam_user" "management" {
+ name = "management"
+}
+
+resource "minio_iam_service_account" "management_service_account" {
+ target_user = minio_iam_user.management.name
+ policy = jsonencode({
+ Version = "2012-10-17"
+ Statement = [
+ {
+ Effect = "Allow"
+ Action = ["s3:ListBucket"]
+ Resource = ["arn:aws:s3:::management"]
+ },
+ {
+ Effect = "Allow"
+ Action = ["s3:GetObject", "s3:PutObject"]
+ Resource = ["arn:aws:s3:::management/*"]
+ }
+ ]
+ })
+}
+
+resource "vault_kv_secret_v2" "minio_creds" {
+ mount = "management"
+ name = "minio"
+ delete_all_versions = true
+
+ data_json = jsonencode({
+ access_key = minio_iam_service_account.management_service_account.access_key
+ secret_key = minio_iam_service_account.management_service_account.secret_key
+ })
+
+ depends_on = [
+ vault_mount.management,
+ minio_iam_service_account.management_service_account
+ ]
+}
+
+resource "vault_policy" "management" {
+ name = "management"
+
+ policy = < /dev/null",
+ "echo 'Completed cloud-init!'",
+ ]
+
+ connection {
+ type = "ssh"
+ host = self.ipv4_address
+ user = local.node_username
+ private_key = tls_private_key.global_key.private_key_pem
+ }
+ }
+
+ depends_on = [
+ hcloud_network_subnet.private
+ ]
+}
diff --git a/infra/clusters/management/helm.tf b/infra/clusters/management/helm.tf
new file mode 100644
index 0000000..7ce96ab
--- /dev/null
+++ b/infra/clusters/management/helm.tf
@@ -0,0 +1,5 @@
+provider "helm" {
+ kubernetes {
+ config_path = "./bootstrap/stage1-initial-infra/kube_config_server.yaml"
+ }
+}
diff --git a/infra/clusters/management/main.tf b/infra/clusters/management/main.tf
new file mode 100644
index 0000000..33c3f3b
--- /dev/null
+++ b/infra/clusters/management/main.tf
@@ -0,0 +1,17 @@
+terraform {
+ backend "s3" {
+ endpoints = {
+ s3 = "https://storage.168.119.61.8.sslip.io"
+ }
+ bucket = "management"
+ key = "terraform.tfstate"
+ region = "eu-central-1"
+
+ #encrypt = false
+ skip_region_validation = true
+ skip_metadata_api_check = true
+ skip_credentials_validation = true
+ skip_requesting_account_id = true
+ use_path_style = true
+ }
+}
diff --git a/infra/clusters/management/rancher.tf b/infra/clusters/management/rancher.tf
new file mode 100644
index 0000000..3bce624
--- /dev/null
+++ b/infra/clusters/management/rancher.tf
@@ -0,0 +1,34 @@
+resource "random_password" "rancher_admin_password" {
+ length = 20
+ special = false
+}
+
+resource "vault_kv_secret_v2" "rancher_creds" {
+ mount = "management"
+ name = "rancher"
+ delete_all_versions = true
+ data_json = jsonencode({
+ admin_password = random_password.rancher_admin_password.result
+ })
+}
+
+resource "helm_release" "rancher" {
+ name = "rancher"
+ namespace = "cattle-system"
+ chart = "https://releases.rancher.com/server-charts/latest/rancher-2.9.1.tgz"
+
+ reuse_values = true
+ recreate_pods = false
+
+ set_sensitive {
+ name = "adminPassword"
+ value = vault_kv_secret_v2.rancher_creds.data["admin_password"]
+ }
+
+ lifecycle {
+ ignore_changes = [
+ set,
+ set_sensitive,
+ ]
+ }
+}
diff --git a/infra/clusters/management/scripts/generate-tf-backend-config.sh b/infra/clusters/management/scripts/generate-tf-backend-config.sh
new file mode 100755
index 0000000..44982f6
--- /dev/null
+++ b/infra/clusters/management/scripts/generate-tf-backend-config.sh
@@ -0,0 +1,11 @@
+#!/bin/bash
+MINIO_ACCESS_KEY=$(vault kv get -mount="management" -field="access_key" "minio")
+MINIO_SECRET_KEY=$(vault kv get -mount="management" -field="secret_key" "minio")
+
+cat << EOF > backend.tfvars
+access_key = "${MINIO_ACCESS_KEY}"
+secret_key = "${MINIO_SECRET_KEY}"
+bucket = "${BUCKET}"
+key = "terraform.tfstate"
+region = "eu-central-1"
+EOF
diff --git a/infra/clusters/management/scripts/rotate-secrets.sh b/infra/clusters/management/scripts/rotate-secrets.sh
new file mode 100644
index 0000000..77f9f74
--- /dev/null
+++ b/infra/clusters/management/scripts/rotate-secrets.sh
@@ -0,0 +1,13 @@
+#!/bin/bash
+
+# Generate new secrets
+NEW_MINIO_ACCESS_KEY=$(openssl rand -base64 32 | tr -dc 'a-zA-Z0-9' | fold -w 20 | head -n 1)
+NEW_MINIO_SECRET_KEY=$(openssl rand -base64 32 | tr -dc 'a-zA-Z0-9' | fold -w 40 | head -n 1)
+NEW_RANCHER_PASSWORD=$(openssl rand -base64 32 | tr -dc 'a-zA-Z0-9' | fold -w 20 | head -n 1)
+
+# Update secrets in Vault
+vault kv put kvv2/minio access_key="$NEW_MINIO_ACCESS_KEY" secret_key="$NEW_MINIO_SECRET_KEY"
+vault kv put kvv2/rancher admin_password="$NEW_RANCHER_PASSWORD"
+
+# Apply Terraform configuration
+terraform apply -var="minio_access_key=$NEW_MINIO_ACCESS_KEY" -var="minio_secret_key=$NEW_MINIO_SECRET_KEY" -var="rancher_admin_password=$NEW_RANCHER_PASSWORD"
diff --git a/infra/clusters/management/state.tf b/infra/clusters/management/state.tf
new file mode 100644
index 0000000..7a7277a
--- /dev/null
+++ b/infra/clusters/management/state.tf
@@ -0,0 +1,7 @@
+data "terraform_remote_state" "stage2" {
+ backend = "local"
+
+ config = {
+ path = "./bootstrap/stage2-harden/terraform.tfstate"
+ }
+}
diff --git a/infra/clusters/management/vault.tf b/infra/clusters/management/vault.tf
new file mode 100644
index 0000000..579d1d1
--- /dev/null
+++ b/infra/clusters/management/vault.tf
@@ -0,0 +1,4 @@
+provider "vault" {
+ address = "http://127.0.0.1:8200"
+ token = data.terraform_remote_state.stage4.outputs.vault_token
+}
diff --git a/infra/clusters/platform/bootstrap/minio.tf b/infra/clusters/platform/bootstrap/minio.tf
new file mode 100644
index 0000000..eaca998
--- /dev/null
+++ b/infra/clusters/platform/bootstrap/minio.tf
@@ -0,0 +1,47 @@
+terraform {
+ required_providers {
+ minio = {
+ source = "aminueza/minio"
+ version = "~> 2.5.0"
+ }
+ }
+}
+
+provider "minio" {
+ minio_server = "localhost:9123"
+ minio_region = "eu-central-1"
+ minio_user = data.vault_kv_secret_v2.minio_creds.data["access_key"]
+ minio_password = data.vault_kv_secret_v2.minio_creds.data["secret_key"]
+}
+
+resource "minio_s3_bucket" "platform" {
+ depends_on = [data.vault_kv_secret_v2.minio_creds]
+ bucket = "platform"
+ acl = "private"
+}
+
+resource "minio_iam_user" "platform" {
+ depends_on = [data.vault_kv_secret_v2.minio_creds]
+ name = "platform"
+}
+
+resource "minio_iam_policy" "platform" {
+ depends_on = [minio_s3_bucket.platform]
+ name = "platform-policy"
+ policy = jsonencode({
+ Version = "2012-10-17"
+ Statement = [
+ {
+ Effect = "Allow"
+ Action = ["s3:GetObject", "s3:PutObject"]
+ Resource = ["arn:aws:s3:::platform/*"]
+ }
+ ]
+ })
+}
+
+resource "minio_iam_user_policy_attachment" "policy_attachment" {
+ depends_on = [minio_iam_user.platform, minio_iam_policy.platform]
+ user_name = minio_iam_user.platform.name
+ policy_name = minio_iam_policy.platform.name
+}
diff --git a/infra/clusters/platform/bootstrap/output.tf b/infra/clusters/platform/bootstrap/output.tf
new file mode 100644
index 0000000..0cc044c
--- /dev/null
+++ b/infra/clusters/platform/bootstrap/output.tf
@@ -0,0 +1,17 @@
+output "vault_token" {
+ value = vault_token.platform.client_token
+ sensitive = true
+}
+
+output "minio_user" {
+ value = minio_iam_user.platform.id
+}
+
+output "minio_user_status" {
+ value = minio_iam_user.platform.status
+}
+
+output "minio_user_secret" {
+ value = minio_iam_user.platform.secret
+ sensitive = true
+}
diff --git a/infra/clusters/platform/bootstrap/variables.tf b/infra/clusters/platform/bootstrap/variables.tf
new file mode 100644
index 0000000..4cb800c
--- /dev/null
+++ b/infra/clusters/platform/bootstrap/variables.tf
@@ -0,0 +1,4 @@
+variable "vault_root_token" {
+ description = "Vault (root) token to create secrets"
+ type = string
+}
diff --git a/infra/clusters/platform/bootstrap/vault.tf b/infra/clusters/platform/bootstrap/vault.tf
new file mode 100644
index 0000000..03904bb
--- /dev/null
+++ b/infra/clusters/platform/bootstrap/vault.tf
@@ -0,0 +1,34 @@
+provider "vault" {
+ address = "http://127.0.0.1:8200"
+ token = var.vault_root_token
+}
+
+data "vault_kv_secret_v2" "minio_creds" {
+ mount = "management"
+ name = "minio"
+}
+
+resource "vault_mount" "platform" {
+ path = "platform"
+ type = "kv"
+ options = { version = "2" }
+ description = "KV Version 2 secret engine mount for management"
+}
+
+resource "vault_policy" "platform" {
+ name = "platform"
+
+ policy = < /dev/null",
+ "echo 'Completed cloud-init!'",
+ ]
+
+ connection {
+ type = "ssh"
+ host = self.ipv4_address
+ user = local.node_username
+ private_key = tls_private_key.global_key.private_key_pem
+ }
+ }
+
+ depends_on = [
+ hcloud_network_subnet.private
+ ]
+}
diff --git a/infra/clusters/platform/rancher_cluster.tf b/infra/clusters/platform/rancher_cluster.tf
new file mode 100644
index 0000000..d01a92e
--- /dev/null
+++ b/infra/clusters/platform/rancher_cluster.tf
@@ -0,0 +1,8 @@
+
+# Create custom managed cluster for quickstart
+resource "rancher2_cluster_v2" "quickstart_workload" {
+ provider = rancher2.admin
+
+ name = var.workload_cluster_name
+ kubernetes_version = var.workload_kubernetes_version
+}
diff --git a/infra/modules/MODULES.md b/infra/modules/MODULES.md
new file mode 100644
index 0000000..7f08ea4
--- /dev/null
+++ b/infra/modules/MODULES.md
@@ -0,0 +1,15 @@
+- consul: service discovery
+- crdb: cockroachdb, distributed postgresql database
+- jaeger: distributed tracing
+- harbor: registry
+- keda: k8s scaling using events
+- metabase: easy dashboarding
+- minio: s3 compatible object storage
+- novu: webhooks
+- rabbitmq: message broker
+- redis: in-memory key-value store
+- stack-auth: auth0 alternative
+- traefik: ingress
+- umami: analytics
+- vault: secrets management
+- victoriametrics: prometheus compatible TSDB
diff --git a/infra/modules/argocd.tf b/infra/modules/argocd.tf
new file mode 100644
index 0000000..24c80bf
--- /dev/null
+++ b/infra/modules/argocd.tf
@@ -0,0 +1,15 @@
+resource "helm_release" "argocd" {
+ name = "argocd"
+ repository = "https://argoproj.github.io/argo-helm"
+ chart = "argo-cd"
+ namespace = "argocd"
+ create_namespace = true
+
+ set {
+ name = "server.service.type"
+ value = "LoadBalancer"
+ }
+
+ # Add other configuration options as needed
+}
+
diff --git a/infra/modules/dns.tf b/infra/modules/dns.tf
new file mode 100644
index 0000000..06c1945
--- /dev/null
+++ b/infra/modules/dns.tf
@@ -0,0 +1,18 @@
+resource "http" "create_dns_record" {
+ url = "https://dns.hetzner.com/api/v1/records"
+ method = "POST"
+
+ request_headers = {
+ "Auth-API-Token" = var.hetzner_dns_token
+ "Content-Type" = "application/json"
+ }
+
+ request_body = jsonencode({
+ zone_id = var.hetzner_zone_id
+ type = "A"
+ name = "rancher"
+ value = hcloud_server.master.ipv4_address
+ ttl = 3600
+ })
+}
+
diff --git a/infra/modules/harbor/main.tf b/infra/modules/harbor/main.tf
new file mode 100644
index 0000000..c3daba1
--- /dev/null
+++ b/infra/modules/harbor/main.tf
@@ -0,0 +1,19 @@
+resource "harbor_project" "example_project" {
+ name = "example-project"
+ public = false
+ vulnerability_scanning = true
+}
+
+resource "harbor_robot_account" "example_robot" {
+ name = "example-robot"
+ description = "Robot account for example project"
+ level = "project"
+ permissions {
+ access {
+ action = "push"
+ resource = "repository"
+ }
+ kind = "project"
+ namespace = harbor_project.example_project.name
+ }
+}
diff --git a/infra/modules/harbor/provider.tf b/infra/modules/harbor/provider.tf
new file mode 100644
index 0000000..6f55663
--- /dev/null
+++ b/infra/modules/harbor/provider.tf
@@ -0,0 +1,19 @@
+terraform {
+ required_providers {
+ harbor = {
+ source = "goharbor/harbor"
+ version = "~> 3.0" # Use the latest version available
+ }
+ }
+}
+
+provider "harbor" {
+ url = "https://your-harbor-instance-url"
+ username = var.harbor_username
+ password = var.harbor_password
+ # Alternatively, you can use a bearer token:
+ # bearer_token = var.harbor_token
+
+ # If you're using a self-signed certificate, you might need:
+ # insecure = true
+}
diff --git a/infra/modules/harbor/variables.tf b/infra/modules/harbor/variables.tf
new file mode 100644
index 0000000..21591c5
--- /dev/null
+++ b/infra/modules/harbor/variables.tf
@@ -0,0 +1,17 @@
+variable "harbor_username" {
+ type = string
+ description = "Username for Harbor"
+}
+
+variable "harbor_password" {
+ type = string
+ description = "Password for Harbor"
+ sensitive = true
+}
+
+# If using bearer token instead of username/password:
+# variable "harbor_token" {
+# type = string
+# description = "Bearer token for Harbor"
+# sensitive = true
+# }
diff --git a/infra/modules/hcloud/README.md b/infra/modules/hcloud/README.md
new file mode 100644
index 0000000..0e003a5
--- /dev/null
+++ b/infra/modules/hcloud/README.md
@@ -0,0 +1,68 @@
+# Hetzner Cloud Rancher Quickstart
+
+Two single-node Kubernetes clusters will be created from two instances running Ubuntu 20.04 and Docker.
+Both instances will be accessible over SSH using the auto-generated SSH keys `id_rsa` and `id_rsa.pub`.
+
+
+## Requirements
+
+| Name | Version |
+|------|---------|
+| [terraform](#requirement\_terraform) | >= 1.0.0 |
+| [hcloud](#requirement\_hcloud) | 1.33.2 |
+| [local](#requirement\_local) | 2.4.0 |
+| [tls](#requirement\_tls) | 4.0.4 |
+
+## Providers
+
+| Name | Version |
+|------|---------|
+| [hcloud](#provider\_hcloud) | 1.33.2 |
+| [local](#provider\_local) | 2.4.0 |
+| [tls](#provider\_tls) | 4.0.4 |
+
+## Modules
+
+| Name | Source | Version |
+|------|--------|---------|
+| [rancher\_common](#module\_rancher\_common) | ../rancher-common | n/a |
+
+## Resources
+
+| Name | Type |
+|------|------|
+| [hcloud_network.private](https://registry.terraform.io/providers/hetznercloud/hcloud/1.33.2/docs/resources/network) | resource |
+| [hcloud_network_subnet.private](https://registry.terraform.io/providers/hetznercloud/hcloud/1.33.2/docs/resources/network_subnet) | resource |
+| [hcloud_server.quickstart_node](https://registry.terraform.io/providers/hetznercloud/hcloud/1.33.2/docs/resources/server) | resource |
+| [hcloud_server.rancher_server](https://registry.terraform.io/providers/hetznercloud/hcloud/1.33.2/docs/resources/server) | resource |
+| [hcloud_ssh_key.quickstart_ssh_key](https://registry.terraform.io/providers/hetznercloud/hcloud/1.33.2/docs/resources/ssh_key) | resource |
+| [local_file.ssh_public_key_openssh](https://registry.terraform.io/providers/hashicorp/local/2.4.0/docs/resources/file) | resource |
+| [local_sensitive_file.ssh_private_key_pem](https://registry.terraform.io/providers/hashicorp/local/2.4.0/docs/resources/sensitive_file) | resource |
+| [tls_private_key.global_key](https://registry.terraform.io/providers/hashicorp/tls/4.0.4/docs/resources/private_key) | resource |
+
+## Inputs
+
+| Name | Description | Type | Default | Required |
+|------|-------------|------|---------|:--------:|
+| [hcloud\_token](#input\_hcloud\_token) | Hetzner Cloud API token used to create infrastructure | `string` | n/a | yes |
+| [rancher\_server\_admin\_password](#input\_rancher\_server\_admin\_password) | Admin password to use for Rancher server bootstrap, min. 12 characters | `string` | n/a | yes |
+| [cert\_manager\_version](#input\_cert\_manager\_version) | Version of cert-manager to install alongside Rancher (format: 0.0.0) | `string` | `"1.11.0"` | no |
+| [hcloud\_location](#input\_hcloud\_location) | Hetzner location used for all resources | `string` | `"fsn1"` | no |
+| [instance\_type](#input\_instance\_type) | Type of instance to be used for all instances | `string` | `"cx21"` | no |
+| [network\_cidr](#input\_network\_cidr) | Network to create for private communication | `string` | `"10.0.0.0/8"` | no |
+| [network\_ip\_range](#input\_network\_ip\_range) | Subnet to create for private communication. Must be part of the CIDR defined in `network_cidr`. | `string` | `"10.0.1.0/24"` | no |
+| [network\_zone](#input\_network\_zone) | Zone to create the network in | `string` | `"eu-central"` | no |
+| [prefix](#input\_prefix) | Prefix added to names of all resources | `string` | `"quickstart"` | no |
+| [rancher\_helm\_repository](#input\_rancher\_helm\_repository) | The helm repository, where the Rancher helm chart is installed from | `string` | `"https://releases.rancher.com/server-charts/latest"` | no |
+| [rancher\_kubernetes\_version](#input\_rancher\_kubernetes\_version) | Kubernetes version to use for Rancher server cluster | `string` | `"v1.24.14+k3s1"` | no |
+| [rancher\_version](#input\_rancher\_version) | Rancher server version (format: v0.0.0) | `string` | `"2.7.9"` | no |
+| [workload\_kubernetes\_version](#input\_workload\_kubernetes\_version) | Kubernetes version to use for managed workload cluster | `string` | `"v1.24.14+rke2r1"` | no |
+
+## Outputs
+
+| Name | Description |
+|------|-------------|
+| [rancher\_node\_ip](#output\_rancher\_node\_ip) | n/a |
+| [rancher\_server\_url](#output\_rancher\_server\_url) | n/a |
+| [workload\_node\_ip](#output\_workload\_node\_ip) | n/a |
+
diff --git a/infra/modules/hcloud/files/userdata_quickstart_node.template b/infra/modules/hcloud/files/userdata_quickstart_node.template
new file mode 100644
index 0000000..4083d09
--- /dev/null
+++ b/infra/modules/hcloud/files/userdata_quickstart_node.template
@@ -0,0 +1,3 @@
+#!/bin/bash -x
+
+${register_command} --etcd --controlplane --worker
diff --git a/infra/modules/hcloud/infra.tf b/infra/modules/hcloud/infra.tf
new file mode 100644
index 0000000..ef89e11
--- /dev/null
+++ b/infra/modules/hcloud/infra.tf
@@ -0,0 +1,128 @@
+# HCloud infrastructure resources
+
+resource "tls_private_key" "global_key" {
+ algorithm = "RSA"
+ rsa_bits = 2048
+}
+
+resource "local_sensitive_file" "ssh_private_key_pem" {
+ filename = "${path.module}/id_rsa"
+ content = tls_private_key.global_key.private_key_pem
+ file_permission = "0600"
+}
+
+resource "local_file" "ssh_public_key_openssh" {
+ filename = "${path.module}/id_rsa.pub"
+ content = tls_private_key.global_key.public_key_openssh
+}
+
+resource "hcloud_network" "private" {
+ name = "${var.prefix}-private-network"
+ ip_range = var.network_cidr
+}
+
+resource "hcloud_network_subnet" "private" {
+ type = "cloud"
+ network_id = hcloud_network.private.id
+ network_zone = var.network_zone
+ ip_range = var.network_ip_range
+}
+
+# Temporary key pair used for SSH accesss
+resource "hcloud_ssh_key" "quickstart_ssh_key" {
+ name = "${var.prefix}-instance-ssh-key"
+ public_key = tls_private_key.global_key.public_key_openssh
+}
+
+# HCloud Instance for creating a single node RKE cluster and installing the Rancher server
+resource "hcloud_server" "rancher_server" {
+ name = "${var.prefix}-rancher-server"
+ image = "ubuntu-20.04"
+ server_type = var.instance_type
+ location = var.hcloud_location
+ ssh_keys = [hcloud_ssh_key.quickstart_ssh_key.id]
+
+ network {
+ network_id = hcloud_network.private.id
+ }
+
+ provisioner "remote-exec" {
+ inline = [
+ "echo 'Waiting for cloud-init to complete...'",
+ "cloud-init status --wait > /dev/null",
+ "echo 'Completed cloud-init!'",
+ ]
+
+ connection {
+ type = "ssh"
+ host = self.ipv4_address
+ user = local.node_username
+ private_key = tls_private_key.global_key.private_key_pem
+ }
+ }
+
+ depends_on = [
+ hcloud_network_subnet.private
+ ]
+}
+
+# Rancher resources
+module "rancher_common" {
+ source = "../rancher-common"
+
+ node_public_ip = hcloud_server.rancher_server.ipv4_address
+ node_internal_ip = one(hcloud_server.rancher_server.network[*]).ip
+ node_username = local.node_username
+ ssh_private_key_pem = tls_private_key.global_key.private_key_pem
+ rancher_kubernetes_version = var.rancher_kubernetes_version
+
+ cert_manager_version = var.cert_manager_version
+ rancher_version = var.rancher_version
+ rancher_helm_repository = var.rancher_helm_repository
+
+ rancher_server_dns = join(".", ["rancher", hcloud_server.rancher_server.ipv4_address, "sslip.io"])
+ admin_password = var.rancher_server_admin_password
+
+ workload_kubernetes_version = var.workload_kubernetes_version
+ workload_cluster_name = "quickstart-hcloud-custom"
+}
+
+# HCloud instance for creating a single node workload cluster
+resource "hcloud_server" "quickstart_node" {
+ name = "${var.prefix}-worker"
+ image = "ubuntu-20.04"
+ server_type = var.instance_type
+ location = var.hcloud_location
+ ssh_keys = [hcloud_ssh_key.quickstart_ssh_key.id]
+
+ network {
+ network_id = hcloud_network.private.id
+ }
+
+ user_data = templatefile(
+ "${path.module}/files/userdata_quickstart_node.template",
+ {
+ username = local.node_username
+ register_command = module.rancher_common.custom_cluster_command
+ }
+ )
+
+ provisioner "remote-exec" {
+ inline = [
+ "echo 'Waiting for cloud-init to complete...'",
+ "cloud-init status --wait > /dev/null",
+ "echo 'Completed cloud-init!'",
+ ]
+
+ connection {
+ type = "ssh"
+ host = self.ipv4_address
+ user = local.node_username
+ private_key = tls_private_key.global_key.private_key_pem
+ }
+ }
+
+ depends_on = [
+ hcloud_network_subnet.private
+ ]
+}
\ No newline at end of file
diff --git a/infra/modules/hcloud/output.tf b/infra/modules/hcloud/output.tf
new file mode 100644
index 0000000..0489a82
--- /dev/null
+++ b/infra/modules/hcloud/output.tf
@@ -0,0 +1,12 @@
+
+output "rancher_server_url" {
+ value = module.rancher_common.rancher_url
+}
+
+output "rancher_node_ip" {
+ value = hcloud_server.rancher_server.ipv4_address
+}
+
+output "workload_node_ip" {
+ value = hcloud_server.quickstart_node.ipv4_address
+}
diff --git a/infra/modules/hcloud/provider.tf b/infra/modules/hcloud/provider.tf
new file mode 100644
index 0000000..55fdd90
--- /dev/null
+++ b/infra/modules/hcloud/provider.tf
@@ -0,0 +1,21 @@
+terraform {
+ required_providers {
+ hcloud = {
+ source = "hetznercloud/hcloud"
+ version = "1.33.2"
+ }
+ local = {
+ source = "hashicorp/local"
+ version = "2.4.0"
+ }
+ tls = {
+ source = "hashicorp/tls"
+ version = "4.0.4"
+ }
+ }
+ required_version = ">= 1.0.0"
+}
+
+provider "hcloud" {
+ token = var.hcloud_token
+}
diff --git a/infra/modules/hcloud/terraform.tfvars.example b/infra/modules/hcloud/terraform.tfvars.example
new file mode 100644
index 0000000..50418c2
--- /dev/null
+++ b/infra/modules/hcloud/terraform.tfvars.example
@@ -0,0 +1,39 @@
+
+# Hetzner Cloud API token used to create infrastructure
+hcloud_token = ""
+
+# Admin password to use for Rancher server bootstrap, min. 12 characters
+rancher_server_admin_password = ""
+
+# Version of cert-manager to install alongside Rancher (format: 0.0.0)
+cert_manager_version = "1.11.0"
+
+# Hetzner location used for all resources
+hcloud_location = "fsn1"
+
+# Type of instance to be used for all instances
+instance_type = "cx21"
+
+# Network to create for private communication
+network_cidr = "10.0.0.0/8"
+
+# Subnet to create for private communication. Must be part of the CIDR defined in `network_cidr`.
+network_ip_range = "10.0.1.0/24"
+
+# Zone to create the network in
+network_zone = "eu-central"
+
+# Prefix added to names of all resources
+prefix = "quickstart"
+
+# The helm repository, where the Rancher helm chart is installed from
+rancher_helm_repository = "https://releases.rancher.com/server-charts/latest"
+
+# Kubernetes version to use for Rancher server cluster
+rancher_kubernetes_version = "v1.24.14+k3s1"
+
+# Rancher server version (format: v0.0.0)
+rancher_version = "2.7.9"
+
+# Kubernetes version to use for managed workload cluster
+workload_kubernetes_version = "v1.24.14+rke2r1"
\ No newline at end of file
diff --git a/infra/modules/hcloud/variables.tf b/infra/modules/hcloud/variables.tf
new file mode 100644
index 0000000..f56b418
--- /dev/null
+++ b/infra/modules/hcloud/variables.tf
@@ -0,0 +1,82 @@
+# Variables for Hetzner Cloud infrastructure module
+
+variable "hcloud_token" {
+ type = string
+ description = "Hetzner Cloud API token used to create infrastructure"
+}
+
+variable "hcloud_location" {
+ type = string
+ description = "Hetzner location used for all resources"
+ default = "fsn1"
+}
+
+variable "prefix" {
+ type = string
+ description = "Prefix added to names of all resources"
+ default = "quickstart"
+}
+
+variable "network_cidr" {
+ type = string
+ description = "Network to create for private communication"
+ default = "10.0.0.0/8"
+}
+
+variable "network_ip_range" {
+ type = string
+ description = "Subnet to create for private communication. Must be part of the CIDR defined in `network_cidr`."
+ default = "10.0.1.0/24"
+}
+
+variable "network_zone" {
+ type = string
+ description = "Zone to create the network in"
+ default = "eu-central"
+}
+
+variable "instance_type" {
+ type = string
+ description = "Type of instance to be used for all instances"
+ default = "cx21"
+}
+
+variable "rancher_kubernetes_version" {
+ type = string
+ description = "Kubernetes version to use for Rancher server cluster"
+ default = "v1.24.14+k3s1"
+}
+
+variable "workload_kubernetes_version" {
+ type = string
+ description = "Kubernetes version to use for managed workload cluster"
+ default = "v1.24.14+rke2r1"
+}
+
+variable "cert_manager_version" {
+ type = string
+ description = "Version of cert-manager to install alongside Rancher (format: 0.0.0)"
+ default = "1.11.0"
+}
+
+variable "rancher_version" {
+ type = string
+ description = "Rancher server version (format: v0.0.0)"
+ default = "2.7.9"
+}
+
+variable "rancher_helm_repository" {
+ type = string
+ description = "The helm repository, where the Rancher helm chart is installed from"
+ default = "https://releases.rancher.com/server-charts/latest"
+}
+
+variable "rancher_server_admin_password" {
+ type = string
+ description = "Admin password to use for Rancher server bootstrap, min. 12 characters"
+}
+
+# Local variables used to reduce repetition
+locals {
+ node_username = "root"
+}
diff --git a/infra/modules/minio/local.tf b/infra/modules/minio/local.tf
new file mode 100644
index 0000000..4f01c63
--- /dev/null
+++ b/infra/modules/minio/local.tf
@@ -0,0 +1,4 @@
+locals {
+ hostname_api = var.hostname
+ hostname_admin = join(".", ["admin", var.hostname])
+}
diff --git a/infra/modules/minio/main.tf b/infra/modules/minio/main.tf
new file mode 100644
index 0000000..71a0367
--- /dev/null
+++ b/infra/modules/minio/main.tf
@@ -0,0 +1,52 @@
+resource "random_password" "minio_access_key" {
+ length = 20
+ special = false
+}
+
+resource "random_password" "minio_secret_key" {
+ length = 40
+ special = true
+}
+
+resource "helm_release" "minio" {
+ name = "minio"
+ repository = "https://charts.bitnami.com/bitnami"
+ chart = "minio"
+ namespace = "minio"
+ create_namespace = true
+
+ set_sensitive {
+ name = "auth.rootUser"
+ value = random_password.minio_access_key.result
+ }
+
+ set_sensitive {
+ name = "auth.rootPassword"
+ value = random_password.minio_secret_key.result
+ }
+
+
+
+ values = [
+ <<-EOT
+ ingress:
+ enabled: false
+ ingressClassName: traefik
+ tls: true
+ hostname: ${local.hostname_admin}
+ annotations:
+ kubernetes.io/ingress.class: traefik
+ cert-manager.io/cluster-issuer: letsencrypt
+ traefik.ingress.kubernetes.io/router.entrypoints: web,websecure
+ apiIngress:
+ enabled: true
+ ingressClassName: traefik
+ tls: true
+ hostname: ${local.hostname_api}
+ annotations:
+ kubernetes.io/ingress.class: traefik
+ cert-manager.io/cluster-issuer: letsencrypt
+ traefik.ingress.kubernetes.io/router.entrypoints: web,websecure
+ EOT
+ ]
+}
diff --git a/infra/modules/minio/output.tf b/infra/modules/minio/output.tf
new file mode 100644
index 0000000..cfeb94c
--- /dev/null
+++ b/infra/modules/minio/output.tf
@@ -0,0 +1,17 @@
+output "minio_api_uri" {
+ value = "https://${local.hostname_api}"
+}
+
+output "minio_admin_uri" {
+ value = "https://${local.hostname_admin}"
+}
+
+output "minio_root_user" {
+ value = random_password.minio_access_key.result
+ sensitive = true
+}
+
+output "minio_root_password" {
+ value = random_password.minio_secret_key.result
+ sensitive = true
+}
diff --git a/infra/modules/minio/provider.tf b/infra/modules/minio/provider.tf
new file mode 100644
index 0000000..e6871fa
--- /dev/null
+++ b/infra/modules/minio/provider.tf
@@ -0,0 +1,5 @@
+provider "helm" {
+ kubernetes {
+ config_path = var.config_path
+ }
+}
diff --git a/infra/modules/minio/variables.tf b/infra/modules/minio/variables.tf
new file mode 100644
index 0000000..38e3a08
--- /dev/null
+++ b/infra/modules/minio/variables.tf
@@ -0,0 +1,9 @@
+variable "config_path" {
+ description = "Path to the kubeconfig file"
+ type = string
+}
+
+variable "hostname" {
+ description = "Hostname for the Minio server"
+ type = string
+}
diff --git a/infra/modules/rancher/README.md b/infra/modules/rancher/README.md
new file mode 100644
index 0000000..c5a68b3
--- /dev/null
+++ b/infra/modules/rancher/README.md
@@ -0,0 +1,70 @@
+# Rancher Common Terraform Module
+
+The `rancher-common` module contains all resources that do not depend on a
+specific cloud provider. RKE, Kubernetes, Helm, and Rancher providers are used
+given the necessary information about the infrastructure created in a cloud
+provider.
+
+
+## Requirements
+
+| Name | Version |
+|------|---------|
+| [terraform](#requirement\_terraform) | >= 1.0.0 |
+| [helm](#requirement\_helm) | 2.10.1 |
+| [local](#requirement\_local) | 2.4.0 |
+| [rancher2](#requirement\_rancher2) | 3.0.0 |
+| [ssh](#requirement\_ssh) | 2.6.0 |
+
+## Providers
+
+| Name | Version |
+|------|---------|
+| [helm](#provider\_helm) | 2.10.1 |
+| [local](#provider\_local) | 2.4.0 |
+| [rancher2.admin](#provider\_rancher2.admin) | 3.0.0 |
+| [rancher2.bootstrap](#provider\_rancher2.bootstrap) | 3.0.0 |
+| [ssh](#provider\_ssh) | 2.6.0 |
+
+## Modules
+
+No modules.
+
+## Resources
+
+| Name | Type |
+|------|------|
+| [helm_release.cert_manager](https://registry.terraform.io/providers/hashicorp/helm/2.10.1/docs/resources/release) | resource |
+| [helm_release.rancher_server](https://registry.terraform.io/providers/hashicorp/helm/2.10.1/docs/resources/release) | resource |
+| [local_file.kube_config_server_yaml](https://registry.terraform.io/providers/hashicorp/local/2.4.0/docs/resources/file) | resource |
+| [local_file.kube_config_workload_yaml](https://registry.terraform.io/providers/hashicorp/local/2.4.0/docs/resources/file) | resource |
+| [rancher2_bootstrap.admin](https://registry.terraform.io/providers/rancher/rancher2/3.0.0/docs/resources/bootstrap) | resource |
+| [rancher2_cluster_v2.quickstart_workload](https://registry.terraform.io/providers/rancher/rancher2/3.0.0/docs/resources/cluster_v2) | resource |
+| [ssh_resource.install_k3s](https://registry.terraform.io/providers/loafoe/ssh/2.6.0/docs/resources/resource) | resource |
+| [ssh_resource.retrieve_config](https://registry.terraform.io/providers/loafoe/ssh/2.6.0/docs/resources/resource) | resource |
+
+## Inputs
+
+| Name | Description | Type | Default | Required |
+|------|-------------|------|---------|:--------:|
+| [admin\_password](#input\_admin\_password) | Admin password to use for Rancher server bootstrap, min. 12 characters | `string` | n/a | yes |
+| [node\_public\_ip](#input\_node\_public\_ip) | Public IP of compute node for Rancher cluster | `string` | n/a | yes |
+| [node\_username](#input\_node\_username) | Username used for SSH access to the Rancher server cluster node | `string` | n/a | yes |
+| [rancher\_server\_dns](#input\_rancher\_server\_dns) | DNS host name of the Rancher server | `string` | n/a | yes |
+| [ssh\_private\_key\_pem](#input\_ssh\_private\_key\_pem) | Private key used for SSH access to the Rancher server cluster node | `string` | n/a | yes |
+| [workload\_cluster\_name](#input\_workload\_cluster\_name) | Name for created custom workload cluster | `string` | n/a | yes |
+| [cert\_manager\_version](#input\_cert\_manager\_version) | Version of cert-manager to install alongside Rancher (format: 0.0.0) | `string` | `"1.11.0"` | no |
+| [node\_internal\_ip](#input\_node\_internal\_ip) | Internal IP of compute node for Rancher cluster | `string` | `""` | no |
+| [rancher\_helm\_repository](#input\_rancher\_helm\_repository) | The helm repository, where the Rancher helm chart is installed from | `string` | `"https://releases.rancher.com/server-charts/latest"` | no |
+| [rancher\_kubernetes\_version](#input\_rancher\_kubernetes\_version) | Kubernetes version to use for Rancher server cluster | `string` | `"v1.24.14+k3s1"` | no |
+| [rancher\_version](#input\_rancher\_version) | Rancher server version (format v0.0.0) | `string` | `"2.7.9"` | no |
+| [workload\_kubernetes\_version](#input\_workload\_kubernetes\_version) | Kubernetes version to use for managed workload cluster | `string` | `"v1.24.14+rke2r1"` | no |
+
+## Outputs
+
+| Name | Description |
+|------|-------------|
+| [custom\_cluster\_command](#output\_custom\_cluster\_command) | Docker command used to add a node to the quickstart cluster |
+| [custom\_cluster\_windows\_command](#output\_custom\_cluster\_windows\_command) | Docker command used to add a windows node to the quickstart cluster |
+| [rancher\_url](#output\_rancher\_url) | n/a |
+
diff --git a/infra/modules/rancher/data.tf b/infra/modules/rancher/data.tf
new file mode 100644
index 0000000..6adf3e8
--- /dev/null
+++ b/infra/modules/rancher/data.tf
@@ -0,0 +1,14 @@
+# Data for rancher common module
+
+# Kubernetes data
+# ----------------------------------------------------------
+
+# # Rancher certificates
+# data "kubernetes_secret" "rancher_cert" {
+# depends_on = [helm_release.rancher_server]
+
+# metadata {
+# name = "tls-rancher-ingress"
+# namespace = "cattle-system"
+# }
+# }
diff --git a/infra/modules/rancher/helm.tf b/infra/modules/rancher/helm.tf
new file mode 100644
index 0000000..ac0ada1
--- /dev/null
+++ b/infra/modules/rancher/helm.tf
@@ -0,0 +1,51 @@
+# Helm resources
+
+# Install cert-manager helm chart
+resource "helm_release" "cert_manager" {
+ name = "cert-manager"
+ chart = "https://charts.jetstack.io/charts/cert-manager-v${var.cert_manager_version}.tgz"
+ namespace = "cert-manager"
+ create_namespace = true
+ wait = true
+
+ set {
+ name = "installCRDs"
+ value = "true"
+ }
+
+ set_list {
+ name = "dnsConfig.nameservers"
+ value = ["1.1.1.1", "8.8.8.8"]
+ }
+
+ set {
+ name = "email"
+ value = var.cert_manager_email
+ }
+}
+
+# Install Rancher helm chart
+resource "helm_release" "rancher_server" {
+ depends_on = [
+ helm_release.cert_manager,
+ ]
+
+ name = "rancher"
+ chart = "${var.rancher_helm_repository}/rancher-${var.rancher_version}.tgz"
+ namespace = "cattle-system"
+ create_namespace = true
+ wait = true
+
+ values = [ file("${path.module}/rancher-values.yaml") ]
+
+ set {
+ name = "hostname"
+ value = join(".", ["rancher", var.server_dns])
+ }
+
+ set {
+ name = "bootstrapPassword"
+ value = "admin" # TODO: change this once the terraform provider has been updated with the new pw bootstrap logic
+ }
+}
+
diff --git a/infra/modules/rancher/k3s.tf b/infra/modules/rancher/k3s.tf
new file mode 100644
index 0000000..9526d14
--- /dev/null
+++ b/infra/modules/rancher/k3s.tf
@@ -0,0 +1,23 @@
+# K3s cluster for Rancher
+
+resource "ssh_resource" "install_k3s" {
+ host = var.node_public_ip
+ commands = [
+ "bash -c 'curl https://get.k3s.io | INSTALL_K3S_EXEC=\"server --disable=traefik --node-external-ip ${var.node_public_ip} --node-ip ${var.node_internal_ip}\" INSTALL_K3S_VERSION=${var.rancher_kubernetes_version} sh -'"
+ ]
+ user = var.node_username
+ private_key = var.ssh_private_key_pem
+}
+
+resource "ssh_resource" "retrieve_config" {
+ depends_on = [
+ ssh_resource.install_k3s
+ ]
+ host = var.node_public_ip
+ commands = [
+ "sudo sed \"s/127.0.0.1/${var.node_public_ip}/g\" /etc/rancher/k3s/k3s.yaml"
+ ]
+ user = var.node_username
+ private_key = var.ssh_private_key_pem
+}
+
diff --git a/infra/modules/rancher/k8s.tf b/infra/modules/rancher/k8s.tf
new file mode 100644
index 0000000..6a50644
--- /dev/null
+++ b/infra/modules/rancher/k8s.tf
@@ -0,0 +1,39 @@
+resource "kubectl_manifest" "clusterissuer-letsencrypt" {
+ depends_on = [
+ ssh_resource.retrieve_config,
+ helm_release.cert_manager,
+ module.traefik,
+ ]
+
+ yaml_body = <