From 91d31f0ceefae4b7e9f9d6e8c19af298d9c1c5d9 Mon Sep 17 00:00:00 2001 From: Chris Date: Sun, 10 May 2026 13:08:11 +0000 Subject: [PATCH] Initiales Setup: Traefik und Gitea --- gitea/data/git/.ssh/authorized_keys | 0 gitea/data/git/.ssh/environment | 1 + .../chris/vps-infrastructure.git/HEAD | 1 + .../chris/vps-infrastructure.git/config | 4 + .../chris/vps-infrastructure.git/description | 1 + .../git-daemon-export-ok | 0 .../hooks/applypatch-msg.sample | 15 ++ .../hooks/commit-msg.sample | 24 +++ .../vps-infrastructure.git/hooks/post-receive | 16 ++ .../hooks/post-receive.d/gitea | 3 + .../hooks/post-update.sample | 8 + .../hooks/pre-applypatch.sample | 14 ++ .../hooks/pre-commit.sample | 49 +++++ .../hooks/pre-merge-commit.sample | 13 ++ .../hooks/pre-push.sample | 53 ++++++ .../hooks/pre-rebase.sample | 169 ++++++++++++++++++ .../vps-infrastructure.git/hooks/pre-receive | 16 ++ .../hooks/pre-receive.d/gitea | 3 + .../hooks/pre-receive.sample | 24 +++ .../hooks/prepare-commit-msg.sample | 42 +++++ .../vps-infrastructure.git/hooks/proc-receive | 3 + .../hooks/proc-receive.d/gitea | 0 .../hooks/push-to-checkout.sample | 78 ++++++++ .../hooks/sendemail-validate.sample | 77 ++++++++ .../chris/vps-infrastructure.git/hooks/update | 15 ++ .../hooks/update.d/gitea | 3 + .../hooks/update.sample | 128 +++++++++++++ .../chris/vps-infrastructure.git/info/exclude | 6 + .../chris/vps-infrastructure.git/info/refs | 0 .../vps-infrastructure.git/objects/info/packs | 1 + .../avatars/8bdebf0f629f35ed39bf5e5e49933758 | Bin 0 -> 4788 bytes gitea/data/gitea/conf/app.ini | 97 ++++++++++ gitea/data/gitea/gitea.db | Bin 0 -> 2113536 bytes gitea/data/gitea/home/.gitconfig | 22 +++ .../indexers/issues.bleve/index_meta.json | 1 + .../indexers/issues.bleve/rupture_meta.json | 1 + .../indexers/issues.bleve/store/root.bolt | Bin 0 -> 65536 bytes gitea/data/gitea/jwt/private.pem | 52 ++++++ gitea/data/gitea/queues/common/000001.log | Bin 0 -> 1498 bytes gitea/data/gitea/queues/common/CURRENT | 1 + gitea/data/gitea/queues/common/LOCK | 0 gitea/data/gitea/queues/common/LOG | 6 + .../data/gitea/queues/common/MANIFEST-000000 | Bin 0 -> 54 bytes .../data/gitea/sessions/4/7/47bfba1613f81be2 | Bin 0 -> 115 bytes gitea/docker-compose.yml | 22 +++ traefik/docker-compose.yml | 31 ++++ traefik/letsencrypt/acme.json | 25 +++ 47 files changed, 1025 insertions(+) create mode 100644 gitea/data/git/.ssh/authorized_keys create mode 100644 gitea/data/git/.ssh/environment create mode 100644 gitea/data/git/repositories/chris/vps-infrastructure.git/HEAD create mode 100644 gitea/data/git/repositories/chris/vps-infrastructure.git/config create mode 100644 gitea/data/git/repositories/chris/vps-infrastructure.git/description create mode 100644 gitea/data/git/repositories/chris/vps-infrastructure.git/git-daemon-export-ok create mode 100755 gitea/data/git/repositories/chris/vps-infrastructure.git/hooks/applypatch-msg.sample create mode 100755 gitea/data/git/repositories/chris/vps-infrastructure.git/hooks/commit-msg.sample create mode 100755 gitea/data/git/repositories/chris/vps-infrastructure.git/hooks/post-receive create mode 100755 gitea/data/git/repositories/chris/vps-infrastructure.git/hooks/post-receive.d/gitea create mode 100755 gitea/data/git/repositories/chris/vps-infrastructure.git/hooks/post-update.sample create mode 100755 gitea/data/git/repositories/chris/vps-infrastructure.git/hooks/pre-applypatch.sample create mode 100755 gitea/data/git/repositories/chris/vps-infrastructure.git/hooks/pre-commit.sample create mode 100755 gitea/data/git/repositories/chris/vps-infrastructure.git/hooks/pre-merge-commit.sample create mode 100755 gitea/data/git/repositories/chris/vps-infrastructure.git/hooks/pre-push.sample create mode 100755 gitea/data/git/repositories/chris/vps-infrastructure.git/hooks/pre-rebase.sample create mode 100755 gitea/data/git/repositories/chris/vps-infrastructure.git/hooks/pre-receive create mode 100755 gitea/data/git/repositories/chris/vps-infrastructure.git/hooks/pre-receive.d/gitea create mode 100755 gitea/data/git/repositories/chris/vps-infrastructure.git/hooks/pre-receive.sample create mode 100755 gitea/data/git/repositories/chris/vps-infrastructure.git/hooks/prepare-commit-msg.sample create mode 100755 gitea/data/git/repositories/chris/vps-infrastructure.git/hooks/proc-receive create mode 100755 gitea/data/git/repositories/chris/vps-infrastructure.git/hooks/proc-receive.d/gitea create mode 100755 gitea/data/git/repositories/chris/vps-infrastructure.git/hooks/push-to-checkout.sample create mode 100755 gitea/data/git/repositories/chris/vps-infrastructure.git/hooks/sendemail-validate.sample create mode 100755 gitea/data/git/repositories/chris/vps-infrastructure.git/hooks/update create mode 100755 gitea/data/git/repositories/chris/vps-infrastructure.git/hooks/update.d/gitea create mode 100755 gitea/data/git/repositories/chris/vps-infrastructure.git/hooks/update.sample create mode 100644 gitea/data/git/repositories/chris/vps-infrastructure.git/info/exclude create mode 100644 gitea/data/git/repositories/chris/vps-infrastructure.git/info/refs create mode 100644 gitea/data/git/repositories/chris/vps-infrastructure.git/objects/info/packs create mode 100644 gitea/data/gitea/avatars/8bdebf0f629f35ed39bf5e5e49933758 create mode 100644 gitea/data/gitea/conf/app.ini create mode 100644 gitea/data/gitea/gitea.db create mode 100644 gitea/data/gitea/home/.gitconfig create mode 100644 gitea/data/gitea/indexers/issues.bleve/index_meta.json create mode 100644 gitea/data/gitea/indexers/issues.bleve/rupture_meta.json create mode 100644 gitea/data/gitea/indexers/issues.bleve/store/root.bolt create mode 100644 gitea/data/gitea/jwt/private.pem create mode 100644 gitea/data/gitea/queues/common/000001.log create mode 100644 gitea/data/gitea/queues/common/CURRENT create mode 100644 gitea/data/gitea/queues/common/LOCK create mode 100644 gitea/data/gitea/queues/common/LOG create mode 100644 gitea/data/gitea/queues/common/MANIFEST-000000 create mode 100644 gitea/data/gitea/sessions/4/7/47bfba1613f81be2 create mode 100644 gitea/docker-compose.yml create mode 100644 traefik/docker-compose.yml create mode 100644 traefik/letsencrypt/acme.json diff --git a/gitea/data/git/.ssh/authorized_keys b/gitea/data/git/.ssh/authorized_keys new file mode 100644 index 0000000..e69de29 diff --git a/gitea/data/git/.ssh/environment b/gitea/data/git/.ssh/environment new file mode 100644 index 0000000..f86169b --- /dev/null +++ b/gitea/data/git/.ssh/environment @@ -0,0 +1 @@ +GITEA_CUSTOM=/data/gitea diff --git a/gitea/data/git/repositories/chris/vps-infrastructure.git/HEAD b/gitea/data/git/repositories/chris/vps-infrastructure.git/HEAD new file mode 100644 index 0000000..b870d82 --- /dev/null +++ b/gitea/data/git/repositories/chris/vps-infrastructure.git/HEAD @@ -0,0 +1 @@ +ref: refs/heads/main diff --git a/gitea/data/git/repositories/chris/vps-infrastructure.git/config b/gitea/data/git/repositories/chris/vps-infrastructure.git/config new file mode 100644 index 0000000..07d359d --- /dev/null +++ b/gitea/data/git/repositories/chris/vps-infrastructure.git/config @@ -0,0 +1,4 @@ +[core] + repositoryformatversion = 0 + filemode = true + bare = true diff --git a/gitea/data/git/repositories/chris/vps-infrastructure.git/description b/gitea/data/git/repositories/chris/vps-infrastructure.git/description new file mode 100644 index 0000000..498b267 --- /dev/null +++ b/gitea/data/git/repositories/chris/vps-infrastructure.git/description @@ -0,0 +1 @@ +Unnamed repository; edit this file 'description' to name the repository. diff --git a/gitea/data/git/repositories/chris/vps-infrastructure.git/git-daemon-export-ok b/gitea/data/git/repositories/chris/vps-infrastructure.git/git-daemon-export-ok new file mode 100644 index 0000000..e69de29 diff --git a/gitea/data/git/repositories/chris/vps-infrastructure.git/hooks/applypatch-msg.sample b/gitea/data/git/repositories/chris/vps-infrastructure.git/hooks/applypatch-msg.sample new file mode 100755 index 0000000..a5d7b84 --- /dev/null +++ b/gitea/data/git/repositories/chris/vps-infrastructure.git/hooks/applypatch-msg.sample @@ -0,0 +1,15 @@ +#!/bin/sh +# +# An example hook script to check the commit log message taken by +# applypatch from an e-mail message. +# +# The hook should exit with non-zero status after issuing an +# appropriate message if it wants to stop the commit. The hook is +# allowed to edit the commit message file. +# +# To enable this hook, rename this file to "applypatch-msg". + +. git-sh-setup +commitmsg="$(git rev-parse --git-path hooks/commit-msg)" +test -x "$commitmsg" && exec "$commitmsg" ${1+"$@"} +: diff --git a/gitea/data/git/repositories/chris/vps-infrastructure.git/hooks/commit-msg.sample b/gitea/data/git/repositories/chris/vps-infrastructure.git/hooks/commit-msg.sample new file mode 100755 index 0000000..b58d118 --- /dev/null +++ b/gitea/data/git/repositories/chris/vps-infrastructure.git/hooks/commit-msg.sample @@ -0,0 +1,24 @@ +#!/bin/sh +# +# An example hook script to check the commit log message. +# Called by "git commit" with one argument, the name of the file +# that has the commit message. The hook should exit with non-zero +# status after issuing an appropriate message if it wants to stop the +# commit. The hook is allowed to edit the commit message file. +# +# To enable this hook, rename this file to "commit-msg". + +# Uncomment the below to add a Signed-off-by line to the message. +# Doing this in a hook is a bad idea in general, but the prepare-commit-msg +# hook is more suited to it. +# +# SOB=$(git var GIT_AUTHOR_IDENT | sed -n 's/^\(.*>\).*$/Signed-off-by: \1/p') +# grep -qs "^$SOB" "$1" || echo "$SOB" >> "$1" + +# This example catches duplicate Signed-off-by lines. + +test "" = "$(grep '^Signed-off-by: ' "$1" | + sort | uniq -c | sed -e '/^[ ]*1[ ]/d')" || { + echo >&2 Duplicate Signed-off-by lines. + exit 1 +} diff --git a/gitea/data/git/repositories/chris/vps-infrastructure.git/hooks/post-receive b/gitea/data/git/repositories/chris/vps-infrastructure.git/hooks/post-receive new file mode 100755 index 0000000..80ae570 --- /dev/null +++ b/gitea/data/git/repositories/chris/vps-infrastructure.git/hooks/post-receive @@ -0,0 +1,16 @@ +#!/usr/bin/env bash +# AUTO GENERATED BY GITEA, DO NOT MODIFY +data=$(cat) +exitcodes="" +hookname=$(basename $0) +GIT_DIR=${GIT_DIR:-$(dirname $0)/..} + +for hook in ${GIT_DIR}/hooks/${hookname}.d/*; do + test -x "${hook}" && test -f "${hook}" || continue + echo "${data}" | "${hook}" + exitcodes="${exitcodes} $?" +done + +for i in ${exitcodes}; do + [ ${i} -eq 0 ] || exit ${i} +done diff --git a/gitea/data/git/repositories/chris/vps-infrastructure.git/hooks/post-receive.d/gitea b/gitea/data/git/repositories/chris/vps-infrastructure.git/hooks/post-receive.d/gitea new file mode 100755 index 0000000..2a84d52 --- /dev/null +++ b/gitea/data/git/repositories/chris/vps-infrastructure.git/hooks/post-receive.d/gitea @@ -0,0 +1,3 @@ +#!/usr/bin/env bash +# AUTO GENERATED BY GITEA, DO NOT MODIFY +/usr/local/bin/gitea hook --config=/data/gitea/conf/app.ini post-receive diff --git a/gitea/data/git/repositories/chris/vps-infrastructure.git/hooks/post-update.sample b/gitea/data/git/repositories/chris/vps-infrastructure.git/hooks/post-update.sample new file mode 100755 index 0000000..ec17ec1 --- /dev/null +++ b/gitea/data/git/repositories/chris/vps-infrastructure.git/hooks/post-update.sample @@ -0,0 +1,8 @@ +#!/bin/sh +# +# An example hook script to prepare a packed repository for use over +# dumb transports. +# +# To enable this hook, rename this file to "post-update". + +exec git update-server-info diff --git a/gitea/data/git/repositories/chris/vps-infrastructure.git/hooks/pre-applypatch.sample b/gitea/data/git/repositories/chris/vps-infrastructure.git/hooks/pre-applypatch.sample new file mode 100755 index 0000000..4142082 --- /dev/null +++ b/gitea/data/git/repositories/chris/vps-infrastructure.git/hooks/pre-applypatch.sample @@ -0,0 +1,14 @@ +#!/bin/sh +# +# An example hook script to verify what is about to be committed +# by applypatch from an e-mail message. +# +# The hook should exit with non-zero status after issuing an +# appropriate message if it wants to stop the commit. +# +# To enable this hook, rename this file to "pre-applypatch". + +. git-sh-setup +precommit="$(git rev-parse --git-path hooks/pre-commit)" +test -x "$precommit" && exec "$precommit" ${1+"$@"} +: diff --git a/gitea/data/git/repositories/chris/vps-infrastructure.git/hooks/pre-commit.sample b/gitea/data/git/repositories/chris/vps-infrastructure.git/hooks/pre-commit.sample new file mode 100755 index 0000000..29ed5ee --- /dev/null +++ b/gitea/data/git/repositories/chris/vps-infrastructure.git/hooks/pre-commit.sample @@ -0,0 +1,49 @@ +#!/bin/sh +# +# An example hook script to verify what is about to be committed. +# Called by "git commit" with no arguments. The hook should +# exit with non-zero status after issuing an appropriate message if +# it wants to stop the commit. +# +# To enable this hook, rename this file to "pre-commit". + +if git rev-parse --verify HEAD >/dev/null 2>&1 +then + against=HEAD +else + # Initial commit: diff against an empty tree object + against=$(git hash-object -t tree /dev/null) +fi + +# If you want to allow non-ASCII filenames set this variable to true. +allownonascii=$(git config --type=bool hooks.allownonascii) + +# Redirect output to stderr. +exec 1>&2 + +# Cross platform projects tend to avoid non-ASCII filenames; prevent +# them from being added to the repository. We exploit the fact that the +# printable range starts at the space character and ends with tilde. +if [ "$allownonascii" != "true" ] && + # Note that the use of brackets around a tr range is ok here, (it's + # even required, for portability to Solaris 10's /usr/bin/tr), since + # the square bracket bytes happen to fall in the designated range. + test $(git diff-index --cached --name-only --diff-filter=A -z $against | + LC_ALL=C tr -d '[ -~]\0' | wc -c) != 0 +then + cat <<\EOF +Error: Attempt to add a non-ASCII file name. + +This can cause problems if you want to work with people on other platforms. + +To be portable it is advisable to rename the file. + +If you know what you are doing you can disable this check using: + + git config hooks.allownonascii true +EOF + exit 1 +fi + +# If there are whitespace errors, print the offending file names and fail. +exec git diff-index --check --cached $against -- diff --git a/gitea/data/git/repositories/chris/vps-infrastructure.git/hooks/pre-merge-commit.sample b/gitea/data/git/repositories/chris/vps-infrastructure.git/hooks/pre-merge-commit.sample new file mode 100755 index 0000000..399eab1 --- /dev/null +++ b/gitea/data/git/repositories/chris/vps-infrastructure.git/hooks/pre-merge-commit.sample @@ -0,0 +1,13 @@ +#!/bin/sh +# +# An example hook script to verify what is about to be committed. +# Called by "git merge" with no arguments. The hook should +# exit with non-zero status after issuing an appropriate message to +# stderr if it wants to stop the merge commit. +# +# To enable this hook, rename this file to "pre-merge-commit". + +. git-sh-setup +test -x "$GIT_DIR/hooks/pre-commit" && + exec "$GIT_DIR/hooks/pre-commit" +: diff --git a/gitea/data/git/repositories/chris/vps-infrastructure.git/hooks/pre-push.sample b/gitea/data/git/repositories/chris/vps-infrastructure.git/hooks/pre-push.sample new file mode 100755 index 0000000..4ce688d --- /dev/null +++ b/gitea/data/git/repositories/chris/vps-infrastructure.git/hooks/pre-push.sample @@ -0,0 +1,53 @@ +#!/bin/sh + +# An example hook script to verify what is about to be pushed. Called by "git +# push" after it has checked the remote status, but before anything has been +# pushed. If this script exits with a non-zero status nothing will be pushed. +# +# This hook is called with the following parameters: +# +# $1 -- Name of the remote to which the push is being done +# $2 -- URL to which the push is being done +# +# If pushing without using a named remote those arguments will be equal. +# +# Information about the commits which are being pushed is supplied as lines to +# the standard input in the form: +# +# +# +# This sample shows how to prevent push of commits where the log message starts +# with "WIP" (work in progress). + +remote="$1" +url="$2" + +zero=$(git hash-object --stdin &2 "Found WIP commit in $local_ref, not pushing" + exit 1 + fi + fi +done + +exit 0 diff --git a/gitea/data/git/repositories/chris/vps-infrastructure.git/hooks/pre-rebase.sample b/gitea/data/git/repositories/chris/vps-infrastructure.git/hooks/pre-rebase.sample new file mode 100755 index 0000000..6cbef5c --- /dev/null +++ b/gitea/data/git/repositories/chris/vps-infrastructure.git/hooks/pre-rebase.sample @@ -0,0 +1,169 @@ +#!/bin/sh +# +# Copyright (c) 2006, 2008 Junio C Hamano +# +# The "pre-rebase" hook is run just before "git rebase" starts doing +# its job, and can prevent the command from running by exiting with +# non-zero status. +# +# The hook is called with the following parameters: +# +# $1 -- the upstream the series was forked from. +# $2 -- the branch being rebased (or empty when rebasing the current branch). +# +# This sample shows how to prevent topic branches that are already +# merged to 'next' branch from getting rebased, because allowing it +# would result in rebasing already published history. + +publish=next +basebranch="$1" +if test "$#" = 2 +then + topic="refs/heads/$2" +else + topic=`git symbolic-ref HEAD` || + exit 0 ;# we do not interrupt rebasing detached HEAD +fi + +case "$topic" in +refs/heads/??/*) + ;; +*) + exit 0 ;# we do not interrupt others. + ;; +esac + +# Now we are dealing with a topic branch being rebased +# on top of master. Is it OK to rebase it? + +# Does the topic really exist? +git show-ref -q "$topic" || { + echo >&2 "No such branch $topic" + exit 1 +} + +# Is topic fully merged to master? +not_in_master=`git rev-list --pretty=oneline ^master "$topic"` +if test -z "$not_in_master" +then + echo >&2 "$topic is fully merged to master; better remove it." + exit 1 ;# we could allow it, but there is no point. +fi + +# Is topic ever merged to next? If so you should not be rebasing it. +only_next_1=`git rev-list ^master "^$topic" ${publish} | sort` +only_next_2=`git rev-list ^master ${publish} | sort` +if test "$only_next_1" = "$only_next_2" +then + not_in_topic=`git rev-list "^$topic" master` + if test -z "$not_in_topic" + then + echo >&2 "$topic is already up to date with master" + exit 1 ;# we could allow it, but there is no point. + else + exit 0 + fi +else + not_in_next=`git rev-list --pretty=oneline ^${publish} "$topic"` + /usr/bin/perl -e ' + my $topic = $ARGV[0]; + my $msg = "* $topic has commits already merged to public branch:\n"; + my (%not_in_next) = map { + /^([0-9a-f]+) /; + ($1 => 1); + } split(/\n/, $ARGV[1]); + for my $elem (map { + /^([0-9a-f]+) (.*)$/; + [$1 => $2]; + } split(/\n/, $ARGV[2])) { + if (!exists $not_in_next{$elem->[0]}) { + if ($msg) { + print STDERR $msg; + undef $msg; + } + print STDERR " $elem->[1]\n"; + } + } + ' "$topic" "$not_in_next" "$not_in_master" + exit 1 +fi + +<<\DOC_END + +This sample hook safeguards topic branches that have been +published from being rewound. + +The workflow assumed here is: + + * Once a topic branch forks from "master", "master" is never + merged into it again (either directly or indirectly). + + * Once a topic branch is fully cooked and merged into "master", + it is deleted. If you need to build on top of it to correct + earlier mistakes, a new topic branch is created by forking at + the tip of the "master". This is not strictly necessary, but + it makes it easier to keep your history simple. + + * Whenever you need to test or publish your changes to topic + branches, merge them into "next" branch. + +The script, being an example, hardcodes the publish branch name +to be "next", but it is trivial to make it configurable via +$GIT_DIR/config mechanism. + +With this workflow, you would want to know: + +(1) ... if a topic branch has ever been merged to "next". Young + topic branches can have stupid mistakes you would rather + clean up before publishing, and things that have not been + merged into other branches can be easily rebased without + affecting other people. But once it is published, you would + not want to rewind it. + +(2) ... if a topic branch has been fully merged to "master". + Then you can delete it. More importantly, you should not + build on top of it -- other people may already want to + change things related to the topic as patches against your + "master", so if you need further changes, it is better to + fork the topic (perhaps with the same name) afresh from the + tip of "master". + +Let's look at this example: + + o---o---o---o---o---o---o---o---o---o "next" + / / / / + / a---a---b A / / + / / / / + / / c---c---c---c B / + / / / \ / + / / / b---b C \ / + / / / / \ / + ---o---o---o---o---o---o---o---o---o---o---o "master" + + +A, B and C are topic branches. + + * A has one fix since it was merged up to "next". + + * B has finished. It has been fully merged up to "master" and "next", + and is ready to be deleted. + + * C has not merged to "next" at all. + +We would want to allow C to be rebased, refuse A, and encourage +B to be deleted. + +To compute (1): + + git rev-list ^master ^topic next + git rev-list ^master next + + if these match, topic has not merged in next at all. + +To compute (2): + + git rev-list master..topic + + if this is empty, it is fully merged to "master". + +DOC_END diff --git a/gitea/data/git/repositories/chris/vps-infrastructure.git/hooks/pre-receive b/gitea/data/git/repositories/chris/vps-infrastructure.git/hooks/pre-receive new file mode 100755 index 0000000..80ae570 --- /dev/null +++ b/gitea/data/git/repositories/chris/vps-infrastructure.git/hooks/pre-receive @@ -0,0 +1,16 @@ +#!/usr/bin/env bash +# AUTO GENERATED BY GITEA, DO NOT MODIFY +data=$(cat) +exitcodes="" +hookname=$(basename $0) +GIT_DIR=${GIT_DIR:-$(dirname $0)/..} + +for hook in ${GIT_DIR}/hooks/${hookname}.d/*; do + test -x "${hook}" && test -f "${hook}" || continue + echo "${data}" | "${hook}" + exitcodes="${exitcodes} $?" +done + +for i in ${exitcodes}; do + [ ${i} -eq 0 ] || exit ${i} +done diff --git a/gitea/data/git/repositories/chris/vps-infrastructure.git/hooks/pre-receive.d/gitea b/gitea/data/git/repositories/chris/vps-infrastructure.git/hooks/pre-receive.d/gitea new file mode 100755 index 0000000..00db788 --- /dev/null +++ b/gitea/data/git/repositories/chris/vps-infrastructure.git/hooks/pre-receive.d/gitea @@ -0,0 +1,3 @@ +#!/usr/bin/env bash +# AUTO GENERATED BY GITEA, DO NOT MODIFY +/usr/local/bin/gitea hook --config=/data/gitea/conf/app.ini pre-receive diff --git a/gitea/data/git/repositories/chris/vps-infrastructure.git/hooks/pre-receive.sample b/gitea/data/git/repositories/chris/vps-infrastructure.git/hooks/pre-receive.sample new file mode 100755 index 0000000..a1fd29e --- /dev/null +++ b/gitea/data/git/repositories/chris/vps-infrastructure.git/hooks/pre-receive.sample @@ -0,0 +1,24 @@ +#!/bin/sh +# +# An example hook script to make use of push options. +# The example simply echoes all push options that start with 'echoback=' +# and rejects all pushes when the "reject" push option is used. +# +# To enable this hook, rename this file to "pre-receive". + +if test -n "$GIT_PUSH_OPTION_COUNT" +then + i=0 + while test "$i" -lt "$GIT_PUSH_OPTION_COUNT" + do + eval "value=\$GIT_PUSH_OPTION_$i" + case "$value" in + echoback=*) + echo "echo from the pre-receive-hook: ${value#*=}" >&2 + ;; + reject) + exit 1 + esac + i=$((i + 1)) + done +fi diff --git a/gitea/data/git/repositories/chris/vps-infrastructure.git/hooks/prepare-commit-msg.sample b/gitea/data/git/repositories/chris/vps-infrastructure.git/hooks/prepare-commit-msg.sample new file mode 100755 index 0000000..10fa14c --- /dev/null +++ b/gitea/data/git/repositories/chris/vps-infrastructure.git/hooks/prepare-commit-msg.sample @@ -0,0 +1,42 @@ +#!/bin/sh +# +# An example hook script to prepare the commit log message. +# Called by "git commit" with the name of the file that has the +# commit message, followed by the description of the commit +# message's source. The hook's purpose is to edit the commit +# message file. If the hook fails with a non-zero status, +# the commit is aborted. +# +# To enable this hook, rename this file to "prepare-commit-msg". + +# This hook includes three examples. The first one removes the +# "# Please enter the commit message..." help message. +# +# The second includes the output of "git diff --name-status -r" +# into the message, just before the "git status" output. It is +# commented because it doesn't cope with --amend or with squashed +# commits. +# +# The third example adds a Signed-off-by line to the message, that can +# still be edited. This is rarely a good idea. + +COMMIT_MSG_FILE=$1 +COMMIT_SOURCE=$2 +SHA1=$3 + +/usr/bin/perl -i.bak -ne 'print unless(m/^. Please enter the commit message/..m/^#$/)' "$COMMIT_MSG_FILE" + +# case "$COMMIT_SOURCE,$SHA1" in +# ,|template,) +# /usr/bin/perl -i.bak -pe ' +# print "\n" . `git diff --cached --name-status -r` +# if /^#/ && $first++ == 0' "$COMMIT_MSG_FILE" ;; +# *) ;; +# esac + +# SOB=$(git var GIT_COMMITTER_IDENT | sed -n 's/^\(.*>\).*$/Signed-off-by: \1/p') +# git interpret-trailers --in-place --trailer "$SOB" "$COMMIT_MSG_FILE" +# if test -z "$COMMIT_SOURCE" +# then +# /usr/bin/perl -i.bak -pe 'print "\n" if !$first_line++' "$COMMIT_MSG_FILE" +# fi diff --git a/gitea/data/git/repositories/chris/vps-infrastructure.git/hooks/proc-receive b/gitea/data/git/repositories/chris/vps-infrastructure.git/hooks/proc-receive new file mode 100755 index 0000000..1974627 --- /dev/null +++ b/gitea/data/git/repositories/chris/vps-infrastructure.git/hooks/proc-receive @@ -0,0 +1,3 @@ +#!/usr/bin/env bash +# AUTO GENERATED BY GITEA, DO NOT MODIFY +/usr/local/bin/gitea hook --config=/data/gitea/conf/app.ini proc-receive diff --git a/gitea/data/git/repositories/chris/vps-infrastructure.git/hooks/proc-receive.d/gitea b/gitea/data/git/repositories/chris/vps-infrastructure.git/hooks/proc-receive.d/gitea new file mode 100755 index 0000000..e69de29 diff --git a/gitea/data/git/repositories/chris/vps-infrastructure.git/hooks/push-to-checkout.sample b/gitea/data/git/repositories/chris/vps-infrastructure.git/hooks/push-to-checkout.sample new file mode 100755 index 0000000..af5a0c0 --- /dev/null +++ b/gitea/data/git/repositories/chris/vps-infrastructure.git/hooks/push-to-checkout.sample @@ -0,0 +1,78 @@ +#!/bin/sh + +# An example hook script to update a checked-out tree on a git push. +# +# This hook is invoked by git-receive-pack(1) when it reacts to git +# push and updates reference(s) in its repository, and when the push +# tries to update the branch that is currently checked out and the +# receive.denyCurrentBranch configuration variable is set to +# updateInstead. +# +# By default, such a push is refused if the working tree and the index +# of the remote repository has any difference from the currently +# checked out commit; when both the working tree and the index match +# the current commit, they are updated to match the newly pushed tip +# of the branch. This hook is to be used to override the default +# behaviour; however the code below reimplements the default behaviour +# as a starting point for convenient modification. +# +# The hook receives the commit with which the tip of the current +# branch is going to be updated: +commit=$1 + +# It can exit with a non-zero status to refuse the push (when it does +# so, it must not modify the index or the working tree). +die () { + echo >&2 "$*" + exit 1 +} + +# Or it can make any necessary changes to the working tree and to the +# index to bring them to the desired state when the tip of the current +# branch is updated to the new commit, and exit with a zero status. +# +# For example, the hook can simply run git read-tree -u -m HEAD "$1" +# in order to emulate git fetch that is run in the reverse direction +# with git push, as the two-tree form of git read-tree -u -m is +# essentially the same as git switch or git checkout that switches +# branches while keeping the local changes in the working tree that do +# not interfere with the difference between the branches. + +# The below is a more-or-less exact translation to shell of the C code +# for the default behaviour for git's push-to-checkout hook defined in +# the push_to_deploy() function in builtin/receive-pack.c. +# +# Note that the hook will be executed from the repository directory, +# not from the working tree, so if you want to perform operations on +# the working tree, you will have to adapt your code accordingly, e.g. +# by adding "cd .." or using relative paths. + +if ! git update-index -q --ignore-submodules --refresh +then + die "Up-to-date check failed" +fi + +if ! git diff-files --quiet --ignore-submodules -- +then + die "Working directory has unstaged changes" +fi + +# This is a rough translation of: +# +# head_has_history() ? "HEAD" : EMPTY_TREE_SHA1_HEX +if git cat-file -e HEAD 2>/dev/null +then + head=HEAD +else + head=$(git hash-object -t tree --stdin &2 + exit 1 +} + +unset GIT_DIR GIT_WORK_TREE +cd "$worktree" && + +if grep -q "^diff --git " "$1" +then + validate_patch "$1" +else + validate_cover_letter "$1" +fi && + +if test "$GIT_SENDEMAIL_FILE_COUNTER" = "$GIT_SENDEMAIL_FILE_TOTAL" +then + git config --unset-all sendemail.validateWorktree && + trap 'git worktree remove -ff "$worktree"' EXIT && + validate_series +fi diff --git a/gitea/data/git/repositories/chris/vps-infrastructure.git/hooks/update b/gitea/data/git/repositories/chris/vps-infrastructure.git/hooks/update new file mode 100755 index 0000000..b3570b0 --- /dev/null +++ b/gitea/data/git/repositories/chris/vps-infrastructure.git/hooks/update @@ -0,0 +1,15 @@ +#!/usr/bin/env bash +# AUTO GENERATED BY GITEA, DO NOT MODIFY +exitcodes="" +hookname=$(basename $0) +GIT_DIR=${GIT_DIR:-$(dirname $0/..)} + +for hook in ${GIT_DIR}/hooks/${hookname}.d/*; do + test -x "${hook}" && test -f "${hook}" || continue + "${hook}" $1 $2 $3 + exitcodes="${exitcodes} $?" +done + +for i in ${exitcodes}; do + [ ${i} -eq 0 ] || exit ${i} +done diff --git a/gitea/data/git/repositories/chris/vps-infrastructure.git/hooks/update.d/gitea b/gitea/data/git/repositories/chris/vps-infrastructure.git/hooks/update.d/gitea new file mode 100755 index 0000000..3f58296 --- /dev/null +++ b/gitea/data/git/repositories/chris/vps-infrastructure.git/hooks/update.d/gitea @@ -0,0 +1,3 @@ +#!/usr/bin/env bash +# AUTO GENERATED BY GITEA, DO NOT MODIFY +/usr/local/bin/gitea hook --config=/data/gitea/conf/app.ini update $1 $2 $3 diff --git a/gitea/data/git/repositories/chris/vps-infrastructure.git/hooks/update.sample b/gitea/data/git/repositories/chris/vps-infrastructure.git/hooks/update.sample new file mode 100755 index 0000000..c4d426b --- /dev/null +++ b/gitea/data/git/repositories/chris/vps-infrastructure.git/hooks/update.sample @@ -0,0 +1,128 @@ +#!/bin/sh +# +# An example hook script to block unannotated tags from entering. +# Called by "git receive-pack" with arguments: refname sha1-old sha1-new +# +# To enable this hook, rename this file to "update". +# +# Config +# ------ +# hooks.allowunannotated +# This boolean sets whether unannotated tags will be allowed into the +# repository. By default they won't be. +# hooks.allowdeletetag +# This boolean sets whether deleting tags will be allowed in the +# repository. By default they won't be. +# hooks.allowmodifytag +# This boolean sets whether a tag may be modified after creation. By default +# it won't be. +# hooks.allowdeletebranch +# This boolean sets whether deleting branches will be allowed in the +# repository. By default they won't be. +# hooks.denycreatebranch +# This boolean sets whether remotely creating branches will be denied +# in the repository. By default this is allowed. +# + +# --- Command line +refname="$1" +oldrev="$2" +newrev="$3" + +# --- Safety check +if [ -z "$GIT_DIR" ]; then + echo "Don't run this script from the command line." >&2 + echo " (if you want, you could supply GIT_DIR then run" >&2 + echo " $0 )" >&2 + exit 1 +fi + +if [ -z "$refname" -o -z "$oldrev" -o -z "$newrev" ]; then + echo "usage: $0 " >&2 + exit 1 +fi + +# --- Config +allowunannotated=$(git config --type=bool hooks.allowunannotated) +allowdeletebranch=$(git config --type=bool hooks.allowdeletebranch) +denycreatebranch=$(git config --type=bool hooks.denycreatebranch) +allowdeletetag=$(git config --type=bool hooks.allowdeletetag) +allowmodifytag=$(git config --type=bool hooks.allowmodifytag) + +# check for no description +projectdesc=$(sed -e '1q' "$GIT_DIR/description") +case "$projectdesc" in +"Unnamed repository"* | "") + echo "*** Project description file hasn't been set" >&2 + exit 1 + ;; +esac + +# --- Check types +# if $newrev is 0000...0000, it's a commit to delete a ref. +zero=$(git hash-object --stdin &2 + echo "*** Use 'git tag [ -a | -s ]' for tags you want to propagate." >&2 + exit 1 + fi + ;; + refs/tags/*,delete) + # delete tag + if [ "$allowdeletetag" != "true" ]; then + echo "*** Deleting a tag is not allowed in this repository" >&2 + exit 1 + fi + ;; + refs/tags/*,tag) + # annotated tag + if [ "$allowmodifytag" != "true" ] && git rev-parse $refname > /dev/null 2>&1 + then + echo "*** Tag '$refname' already exists." >&2 + echo "*** Modifying a tag is not allowed in this repository." >&2 + exit 1 + fi + ;; + refs/heads/*,commit) + # branch + if [ "$oldrev" = "$zero" -a "$denycreatebranch" = "true" ]; then + echo "*** Creating a branch is not allowed in this repository" >&2 + exit 1 + fi + ;; + refs/heads/*,delete) + # delete branch + if [ "$allowdeletebranch" != "true" ]; then + echo "*** Deleting a branch is not allowed in this repository" >&2 + exit 1 + fi + ;; + refs/remotes/*,commit) + # tracking branch + ;; + refs/remotes/*,delete) + # delete tracking branch + if [ "$allowdeletebranch" != "true" ]; then + echo "*** Deleting a tracking branch is not allowed in this repository" >&2 + exit 1 + fi + ;; + *) + # Anything else (is there anything else?) + echo "*** Update hook: unknown type of update to ref $refname of type $newrev_type" >&2 + exit 1 + ;; +esac + +# --- Finished +exit 0 diff --git a/gitea/data/git/repositories/chris/vps-infrastructure.git/info/exclude b/gitea/data/git/repositories/chris/vps-infrastructure.git/info/exclude new file mode 100644 index 0000000..a5196d1 --- /dev/null +++ b/gitea/data/git/repositories/chris/vps-infrastructure.git/info/exclude @@ -0,0 +1,6 @@ +# git ls-files --others --exclude-from=.git/info/exclude +# Lines that start with '#' are comments. +# For a project mostly in C, the following would be a good set of +# exclude patterns (uncomment them if you want to use them): +# *.[oa] +# *~ diff --git a/gitea/data/git/repositories/chris/vps-infrastructure.git/info/refs b/gitea/data/git/repositories/chris/vps-infrastructure.git/info/refs new file mode 100644 index 0000000..e69de29 diff --git a/gitea/data/git/repositories/chris/vps-infrastructure.git/objects/info/packs b/gitea/data/git/repositories/chris/vps-infrastructure.git/objects/info/packs new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/gitea/data/git/repositories/chris/vps-infrastructure.git/objects/info/packs @@ -0,0 +1 @@ + diff --git a/gitea/data/gitea/avatars/8bdebf0f629f35ed39bf5e5e49933758 b/gitea/data/gitea/avatars/8bdebf0f629f35ed39bf5e5e49933758 new file mode 100644 index 0000000000000000000000000000000000000000..d172c55a7a2571516b90dca7ba92b68ca081ccc9 GIT binary patch literal 4788 zcmXX~c{r5a`+uI9VeD(K5F&*MS;sQ=2-!1UTVmupS<@(FNghi{QDkgmk8IhREM;pd z>qy4F#t>16ETc$%^Iq5Qulv5Qb3W(X_qoowKcDL)+S!nBX4!O`N9Y`rcvnO8Kq!W!p<3({G*9y4#w5*@=DM zsQ9pV&mi~iPP^E%G#({y!N0=?5nI4u-|vuLV;`EAyE}XLuM6kiXqju>j-Jb{Iyw=N zpz{mpX6u(=I)@9QgDU5n5uNiOtC&gXAvl^vvxB+!F?MO zMe*U7?nJAX-bbr&((Z{bY+dr@Vr+tOsI{FKb#y=voaf4zRy3fI{5i_7mUFrdNL$eO z3D%X9yIw5$u6>1Lu1u_sTnb8%r4&&k+#zdEr<1fw{h}5iZt?C83ompbWA}B7QeyHW z-e0&IXa z-myk6O2-W6WkA7gtj8%C`g{}O;o$U6{wVGTATxInl&%Rh(ntDABb;J56X|XTQ&>1n z8sO77r%j29Nv1}C5eqyaP#m>c8dqE~n49;%PKOB|Ft6EA#PGrlAK!0D&a9zuLD*D> zxF2YCcJ(YUeYl;COxp951tJ`sL33YzXinRUC#C(!8hCnrFM=|#H|GL8S#M{m~(Ds z9Ar2U{{`$XeUhaJzjSh6Dxu4ygZ>z2J_6lH$ne!e5S04tTn_*EZE%3C@MTamY=^(w z6lT>c>BUVy{Q-%fZMN%y7?oB*oK@#He;~4X9SfA()Yw8o-f~>RLkW$nb)}Ca*ytC> zwh%sqr=3u~>osniCBot0@FlnI%w*`WU{`i7Cv{K%mj5t zkNyE2GPXsO-v{J@+@pz&T+S5?ML=uul7uoP7B2MYj|mmZ&OhV=+|||xAc-+6Agf2h zi=9ATf&*cbO?q&QGXunx4DFl&#^(gV;F0P9DC5Q45lGj;_*nuqdUJ57?P>oOmyghL z3E$srUQ1|Fhy6*k0x*;IUb7OBhn#R=|J#pV2zgTD6naU+P@3$`Xe2Km@0$D2cd{>0 ze&}CbU1_&}`M$@Ln>*CGpNp$!FO<<>qjv>2une$`qhBlbbeXW6*pPRYo;g#p%5me| zZMos7|0NMTvJc>sMPmCs!k(7&;3)w3;c(*Hys`|GZx>pbs*q+k#TGneAtFqHTb7Lh zQwZgAp_UNDJlQN$)4!&ew&P4Oz0aBFfnPhMZlhRnR@iqi;h+qp3^pu*|k2z10}5dNC;Vag^3%NxAzWikGBmK-To=656+C-v^ur|?`fltMg4lwgsAt+o z5nkB2W|B|d$e>oS$I10)@(Y#LB2o{QcgcJ4fNNMNhq900X0wXvt4+69LUSxXarN(q zkI4XSA<_;q&4I=~%`Qa7jkc)6qDx03Wr0QOEOnfnjO0W>uW>v1VH65ou^m&uoH`UnVQ+0<$*A?Wm(K9oV7T1 z5ra>&{m0wm?3vmh1F#e;lG`&p@W$l17baZ&v*A7Y)NGbQ%j1FmV6PM^Z+p?UgHa`b z=Sy!aTSy84ZX&7N4@LGce-H*7#u(ABhS%cp9z4f~oV;JC$CU80ldAAI3&CGsX1j}nHVye=*@sdkxP@>gS+gM0*O}1pY(>?c~p0)1y zo(RQ8c%~kIl8TL#c=>FPo%YboAOoPo-X*WPOrVe{x9Sip9q4HR+&@c`@j1lTZx{;E zmcvu-V}E~&01RI#2>i6Nz5eD>dQu+ECse$m2$--pyP3IBnVZd+scc#8{i0+;D`24q z>p!9TL^bN&ZqB;`T^wy?uuJx7%)ZmD{C#cuR_)2nhEM1w-LGI}di`y~;i_%?)Hbf? zh@Mo$7ApEO5Q_*eV|)?T_QsE)p7LihxhA!kxr)wQP8;g+v9gHS_DQ0ww*YT z`IC@2ez;Xo`Sy;iy++!1Y5d`iX-QSV>;vL1HmW2*X4H(j|1H_v#h{HJwOY1sK513? zgt$9=B9(kMLfU@Jb~lxr?QoJgq0D3s4U zOZv|fQ~i?y7fy~I(gcys4{!YY-#oU$KYvv18SfCsRw_9{<(vY>5bSlRx(CE4RU?kz zQG*BOld^&{koDa3rQo3+a~G@zKkDFrv7B`x8m8210;bfdIb~)I!YKcTlZnh4Jxi*v zx=F-cK@%!wctPS6UJZCa3?Xyzt$Z&iu(AU;lPTh6LXsHKoMH+338~$vNVd3FS|U>R zV`!Llia(IgPw-Me5;O*?*ejWV55jdDtrDKEC%q|J#DPnu&EL=lJUT@^!+3GYl)e%d zR@o9nDmkAYm+gS0nXVvoIJ3y6!m}(s(wjtq^s4X}G zdz{1`c(OPMs24-63WLY{Mgi~RPktzJ(nQ1sN8mhjh}(rP4C;*{85-qtEDAO3KMcpY z4Bh;0S#Pq^3D$%J*{s2aWj>@A;+twXoX*-m6H}v2Srqa7Wdt;?^hDV#y+pYGGKGeTWdrNO4J?<)+ zu(2Jy$lQx=RXp0bV?Al06Q1*SpG1x;Lmi~0HBEo4F=OkW_ox1Sn|9kd?{FtD`d+3_ zzz%GnEaav-{{xpMt#tw5Mt=&` zj0j5{`ri84fBfBkdfxSq-$WadO4lT0x}|(Qs$YNFRmTsP^4Slh3=&7(YcsD6_*{{c zl>_*91)e91wumh6_ci1X67#A`*Zf+^N(BKgIHo&JTeP6oIC!j{{g5g~=}=oU4UKLr zC${iuvaKm&^@|@f-i}0my4>SK<#EJ@-US_k=`y-1bmFEuzSA$yX`8&ULC-sfUdwJ8 zF6C6t27?EDsFj&*!)3jr#Pw(SWd(aERnuFS`go`dzSPPJU(##l!CYlE-PTrdw&7pg zp>R*(&wrb z*sRn6=AK)y>YS@Yr65 zJL7vPPr3D$^Vop5ya1iP_*iXID!%)gIv%C3A>Mx;f<2eJim~qah#`@KTf`jSs2ciH z87L)=J6rN=f^0)i(GBKRy z7RYKu$#)e=!%53ESAXkChd7sRNu=Z`jJ=LT4z&$5gT{#B8@8vEXIbog4&{IkSImnN z79LvR)$tVr=ZE*t{);kG0vxepj+_60_C1oIqqgubNZq6!hC}0DVO+2s=d8ake6-J} zAX8dn0B7q-9AohsU{|Y9A7i8UF9B3X2^R}J*Q?jJ4?X?_DOB{t1S5PP2odx4%P;u) z2F&0&-wY)Js;#sKr=*hC*=g)j+)@^nA6iZ@9^^RawjvQJ0^R!vpL+sGFsU?vwjPcI z`t9N!g)PGsY$4X?y75S&tjmRW4HxnSO+K<_jjwdWtMpu z!b(!+l!*8E*NT$tR~8Tox-|q0rhLMuY%O8TGb-*0%P!+ zL}PZ~kOlU-Z^$B!j5hWXxDG~q762lyJ9&v}9-2*)ij2R-pI!@mOolqeJZ&fZj?(@5 zX%$xsCf;+Eu+c@5%FwfY3#2hFc;D$Wp1u;!h)rF4uIsw#+`k%p`vtA;X|^64=&}Uz z`y)x)HA+?$s*1FzXuup=KSohDQprCVS zJbMl75OvW;Ku_m_d^ymU;2Gnk3Rlj zVA%*8x~XsMN~`}B-E09ZV$%aX&9IGofxSM|rwI+UEGcH#*IjznE{Zg(#}SwCujeXQ zK9XxAXvB2U9Bpft*>NT<===zIa47WFn9vNbKYW{fcaLD z&=65i>lpmaGcfWI%h|P{!$A_67kG|}6hh-i55q|0v{7O|yuLJ`BVE#4(Dv~YW*%Sl zD6$Z<+gmbIDj&};4fx_iy#_LyILepGQ?mhaw#1JO68m9HHgFvxuB$brakN;>eUGx| zq5Dt+&se)0`>}_{N7`aF-~{#m@=^F>T*hP@x-WGfu*EXue5o2W@~Ojn^KWx+#PKo- q;plles?WQv7KV*d}TY-v8O1T|jCS1)Cov0K4;lfB&!fV;A5HHx@0|EU&lhEyFF(79J`Ti-ixC z%Y{PmzZ421V}<0S_{-v<^t@0^g8DuXdA#pWeqoOYS4$rgUyGkFeWCPUOaHm_Tcuww z{c`CSOFvio=cS)0{iD)9D1EN(`gG|*>0|0MPZmAZYSztr z3-dSimeFxHPwN}D(RB5WW7@h^m#=-v<>kuUN~OH8G+(({uJ%h(EniA6) zzpCbyA63-rqTpLW!K*haIRzW-cEhR}uGMPF8L3eXR+koTtR@xNHjBYEI$o7Z6HTsa z4^AFb)F+=TzJAm-)*7Z<1NrfzQEgV{o?Wc;wpipOs8%XhE6e5Qmlv+hE#E3XSGiT5 zTV1)nuq4u6t1PXQm#&M?)y2i*<%B3n6ofbAeU_ z-x|MryRq3P!yVMvR}-W1;=2^}(xu|-MR`>A=GwQ0kK~Tm-VA)CH$8a6RYOh|jhdkH znQ<2kg4(9hXqe57?g8izkR(jsGR5c-^GF`Hwpq7qvnG}(+scN>J)4;&n)leliu%G# z(YxF;KGT&(???kYR!oE6)qhB)kurH?yEcs!tcOxrVi-R5&<^S+&(7ZZJ-nm($$1Q_ zUnZXBjg%C1PWT-e=$Gsl(vtPij;hu1M~<{_NErlLB3SbdA5he5q7s#!xtiMQwT5Mi z{VT63rKl=>w-2e*G@n8BN(!rLuRS@Xs53LgH#(W=nbxeg#|}jG$!;K0CEn6Z3@GD` zCz^y!W2<|j#Z1{L6g9{(MgO~9L9OPxRTs9F(TH@?Eh64?R+h!SEbVE|ZL6(|+*-}L zVc*v?i%oCpD|3r4WRlBs-RY{%TimKXzF$!AaneM=gb8oo{0(kW zQI8%iJ~$i<%QRN{Xm55HrUCKr3sztG7Dnpe&~4LjHnZK6)U9hIW;C*k^z7bo_3F`L zA&_xiZiqW)f55bY=fTj4dTA!D;=Y$A6!omQn^aQITFrEvD5{tYhV*lrmuZqHs^(jnR)8z~%wkuUi7mXmPQbF-@49(j!KCmA0+AY^Z*`^+Hy8L=% zVrbsOd%|1!r}I6+vC%LbS2wMVO;@hV_%?OvPMcq!o>-bUJ|^b3=%bmSPX5_IE;bq# z{&W%ry58I`U}F1ZvNZjH}0v6>kM*(Hh{GFLz9F zROxy;nvv@Ye5z@P^YAafwk*E>#A}zu*YADpr1<(xuRSWhe(E)Gx-Q;-&=z0U9{4dA zA1sQmXCIssUynTaGVyiqgT3NN{d=AxzW%beCcgfZwtFVcim!j%dqjL~ zeO!F`n!5P1_=5Oy=92hw_{+tY_Z*xOUyG&xUJ(EDfdB#sAbBUnu=h>2H<(Qt8i>J}EBofdB#sAbmB`_8@5hek)IC(SLxYUoD2F5WWcC?lf>C;fLl?JbTT zp1fn)jwsnb|BE;M^ML>Y2q1s}0tg_000IagfB*tREa3kN0q6fA?qHgR00IagfB*sr zAb z>$Up&>AG1vWt>_+H(Ogb&t8~aKecx5Z0*d<*>k6A=ZrHmXKEKN)MqZ7J$HV6ZRTSA z^vwC$vuhV#(yA-|>;J{l?-a!Ud?0`T0tg_000IagfB*srAb`No2uzJ0olJj*5T5_P zSSWpQXc|aE5I_I{1Q0*~0R#|0009ILKtK{09i5yE&;OqZEoAlrR@BjY)=z;Gpl)k?7Zt;x|1Q0*~0R#|0009ILKmY**{!j?4 zjqWQ-m@Jeoaw;e>JF{F(K&i{`0w=T5)bVx6KW_H0z_ zhUK29CB>d-869`iICK8u=~}IJV&=>l^Te4`=gkur&eblSIBTA-U#MTK&7MAY@y!^QBLgzUvP~7gGrY5I_I{1Q0*~0R#|0009JsRN$%6)#6Tmk}>K>+{w=# zMy5wsCwKDmg7Ew={{G(=OaG0(0XU??i)JB!00IagfB*srAbcNg7#p1^j{09l zMn@-t-~S&i{hIjw|I%-ZZ+swt00IagfB*srAbGtc!&T32q1s} z0tg_000IagfWVLn@c#cH?O2+H00IagfB*srAbMf(=Zl2aRY@_Mw9mlkFt1e&r zlFQ4Lxs^(JVQIc{vs~?$q*}hdRId67{~*eUD_kuSps)oRMERHIg|E-ls{6B4z9I2P1m&3!saVi=2jP1$}@82POa58tL2r-&7{0$t6A&1 zRI^RPHS2n(Y28aRjO*8~_X*UzbMIDE{Zi3;v3tb&aCXGhN*q)gOsc@nSSS^@yV05EZ}HJsNux2et28<9Ba2Hv43_gBts4 zVpLvym!e*}RD8WCkILR$`_}N0-0|9*fsgd22XDAC$;qNo6I4Dk?t(#3+cX*tv$@ed z0Q~`ygy~zR7(HSh$-~w*>y~ZS#4>1G*$}yBGqXhV9(!0(UzjO+mwU!%y3*(!X@JLy zY4E%H56LuACXZ~_rjdg6P%29d!^a-lLH*>}*;~JdcT_()k3sdz#M8WylA_KDzasa~Vtiaj!~Dy66@eYX#( z)HI(#^-2n>YOg&xrKmGA#Wy;c>6zB7x5o}d^~r7^QYGHfObjUFjVGFfO=GKjqQy+v zDHJuxF-8BoT|uqpx>XmpmeGiG(k&w1b5@qczAWu&&TXr$i`-hxx?$hfGmA}c>ML`L zFJzL-bKU8x&Rg87KE7X3FCQ&>Pb4GRuaxe#ZktWryw?_MixcdB>E)^3A)E$g(u89r z4fH!u&af=?|Dz z@H`kgQ7_G;RowT|grc4mcauu$S*w|j6Gau1!H}L$=6FiMda?}3i2~1H0otP|>QzzL zu|9=KYr34l#CD}h>7o%NRVpZ6j-h#b#s}6zUc2RbDBILSPM2SgObpF?cu#mM|8%}b zI5rxFd3`7JW1m)X6^^$i+s(!XK~lBF=flv8u zJ}y#fuND>c@L_R-A7pvQv>kD%jJ}OzvZzK^-;#ThHtsEd=hdbrOXB>0r7*cM^{W$} z@-q|5;dCjm#H+qFlcx(m`(WSu z6!plF;%jD5>-yTdO0#eJpV zo=UjWa{LV|efDHu>@-fg#iiGRCi@%QgU62sHw&+qf?=1&NFTj7DkEC2(tx)#^78Ig z^X@&Jnr*nXO}%$zibHzuK!SZo+=kS}(00TUCC<>9RV$;M4DRiJ*732jI0}gkCOrx@ zS{qhVcUm30X6lwBHXPTwW6D>b=p7GoaGEF_4suxF8s{nQ=k^@w-uva)nV~HQJibj0 zGDAMNp_EhiP6}_&mkq3ktSjeqbenp}>GCl$F*NVMW8zRKy5oFu4v7Hri)hYUpNv~qIZFmV+G0bD-dk%+Jnu* z!QI9ij|4MUPAfnDvZ%CZ_R2wTY5uzR{U0jE8$;j2W-=$zxbcDUlzdw3#!Pa~jh(JN zdb=flTzo&8-*M#WX*uuO`o{0m{67@lP+SkB9dXtWHx$vgFU|T!SAE*sW?Vh_HcmQ7 ziJz?+)$+58*Po4l9vmE%L@JqAJMo@zb?$J#LsC?rJ`+87%-i=Riu#-wjOlOX6&@9Y?mG8~(71i#VQ+^gFDPZe%%^SZ|D@j-{c^!7lXNgtow1+OW1 z@6{Cb!?Q*2xuhfRnrr?+wyBF1E%~`h`p~N9L^$5tD><>`9R2fv|AV!hXnq$-Wd}#x zcReM>i>PKgUUCw~uR!Gl9otz2lOGQZs9GFH^Nvm{>Z+*J)q!^M7M4@9FW+I!GKZ5v z)srJ?-h2L-`02c;FW(a6 zn4Q>J&&#v8onyPEi!Kz1FXt3~xl_mx&Bx zBRE~iDI9AfB*srAbGt zc!&T32q1s}0tg_000IagfWVLn@b~|Rv}0)&0tg_000IagfB*srAbB(ZXnB^!&(=9{8OD_orUn|M~r`{a>-~PwhLh_o>Ox zPW;ZqH!J^LSsQ<2&+qNA#&nTjy>PW~DF7M2Iv#xY4qj2zYqLe~yw$9m_ZH@F>gGMy zw3|jlZ?rZl^W*BR*FVX>%G^q&yfXLfVx?ToiBT;-m0q^$)$&T^=1O_#y7*jOTs&T`1~u{n z7M4~jS1ZeMm}s4-p3~~sHB;{s$2RWjb;C8{oWoq(cI%E+H|^|IbIY(A*-K4h%gkO` zw`|ANd#^W)+{;a?b~`6_-E?ZU)po5`Gn>6}M^x6WzvXFzTCz$UJzMK0g(Wht;Kp8>%!NOd7?}6+X!V+%1BXw zVB5B~4Euh%KFn9H%&ji2lusoqh2~9uKv5S&Kb#Eu!CxVRWo1oFs@qm`Ll?8d&tLB} zt$Ue}XCsG$@_9r4ZI^Va+;>7z^AkmskD?fn=&OOR)%9wZVE zHSe+a2dmM8J(7900w2iJj`Mu;)N#=np4{D4bb$8Zi{q-M7C)Y#1v2=RSj= z6<>QIP|L>7K6`)GF&p@nW~tQNcy|k3=_ zcWB+qyS8;!ER=_e-XlRz_)D*t`0;DuX_?N68)An6zJ;8RP(F4>Q4bv| zK9~uV!)W2x3t81Phc`Vu-TQ4})y2|xgk~z3Nu|xqj;oa;{ceJcc3T(gxwzAxNgkf} z#!oBikt0R##h`&nK=R;RwwcNGc-#cH=JL`mZSA&s$I9>XR?{_`^1Y|#6=oFmlBh_! z9oN^^o!~ZI-!ff8Z>_J3;gwuG+uOZKn4BQ&;3UYecaWXvreM=si!v6S{pzW};#;@Lg)&Fq`=K11^nerBFzw$oOzeY6o%@D6)+_Ru>Pj7+eV$#s{%m?b zboZo~S;9ZPEe+Zi)MUNWXy|Rj-Apc>jwpI>+LI`Hl1l0VKRcf*4bvX%dtb;dg2W** zNuNBJ$zhN4dDD|EEx6}Y8Qfs#edX4zhS@(foR+$4ZJA<{ZMCHdo#Jn`>el-GL6J1x z|39QZ*r8bnAb$hxxCM6T91F+fBnB$`t5@FpAQ5OKmY** z5I_I{1Q0*~0R#{j4uOY8rzbN%Rp9Uc4M)e)3Iq^9009ILKmY**5I_I{1O^H4`~QP< z2txn?1Q0*~0R#|0009ILKwvlo!r%Y@^+M^_hoe2T0s#aNKmY**5I_I{1Q0*~fj`0m zYEdaXHZ?gm7XLF4FBQC>_CLel|Nq@W>39DK>(F!r5I_I{1Q0*~0R#|0009JsP+;Ha zW0UdE0r>s@A?#q9ga85vAbU{@(?{Qv?t|009ILKmY**5I_I{1cp$6 z^ZyWbDosKF0R#|0009ILKmY**5I~?yz<>XLvGgMa@jo93AbV(C{3;(tC6KmY** z5I_I{1Q0*~0R#|0VD}1q>FA~YKN#Trzk55Dnj?S!0tg_000IagfB*srARr0s;Qar^ zLg|ZA3LYYW00IagfB*srAbtcnzI$qJ|JUuG+V^dHe`~Kj`CF66CcaVm zb`ep0jEv@F_u_}g)tQ6EPgu>md2eCF zqMTReo?Wa+t*%!E&`RZMWx4$P^1`*btuC&Vr_H9%P@k3?(Ka0Cu4s981H$Y2rr~Vr zMq{JZotI&6w3??gS#5P3SFddv%?(ozlDBM$G_J)dx%5VB!)og8{dRBD!XT&BvHga` z9Wx*onLKpulWzzWH#v-Y*IaWfA9$tWjl7_!l_!hdbaqBLrt4bG4L$yT+q@slwCMTG zXjFC2u{e7CT_j6KY@C@t>*NSpWqw?}HCrqMRd8Nzh`Q-U$881Ab@QHU+D)UOhe$y+ zW^yimWqS{PezH2ING^xpXx}mogR}Q~!^pkdv}(6=V%JTlW?OB4o@MJ` zh}mh_ddE(taafT?D{rtFwVLTTy4$*KcIP97h_O+#O*dPRnA^4~resc9^IqE$VY(rb z%!}22W#L*STB_vbEZcL(#VVHV4oz!5tElIvi{8Fu{D;eoQLl^q9lay^z+bWS=)#rW zk)H|o6NE!PbJ-t6eu(Bx%_-_tQQ*a(K!5wlL=>ak-xz{xnSe@EaPRh$i6*D-QxB34Z~&v#hAkh;=|s9OU^PZL@Xx+J}23PsakLLdFU0%~ zA%c{B2*NPUd-#T;UKXvsnv|Ytf>^$SW>}eqf2eN-`XnAqa6G#hdLMXRQJ;LW_~25q zkH-tAoc(H4329%CqXl<0(sCqEh`#%K+#%^A7EWq;q0X#Caljp;(TO)-f1}pC(d%MM z5nbA~rPyX&Oxcu!1vA>I4={j;?omdQg! z?~$Z`)>{qH-@4c}#l5oVp{8{&yyV}#cb$K7;)YmZfZsE6K2@#tm5O>&6qnAPD2wo0 z`1M-fp2f zUb6%16XmIS3$t00IagfB*sr zAbO(zyDu6@RthWe?AaE009ILKmY**5I_I{1Q2+q1Ri`%@l-)or!Gw#_EwKg zOiWBoOif+8rcRBGO-vLgC&iV?iEEd{H}PG3OdXx5ZQ7QTesNpv%@1yxRM{Q0vpXD*z-aN**`)8?5o7i+T@XU|_eUq5}S ze%4$&Z`MwUi|0Prvu{;w;ljDIvuDqpK0SL{9j>n#KvEJpK>IUmP#& z`SW{DjQ+sr=E(PtEEa!7{2_)PEPSZ2G>C9~b36#%*ih87M~a?eHS6ZRh54Jh_wdduF>t$Ol&>+*7CZlzLQSemcgELZd5R?F9y%GD%Awfs~y%%rNd))n=bDClTV z(CUqfRFIRTXhdbKE-l_uLd<2k2LR;si;Se6d#;){l6iR6p=i* z9hJ2*_v~V&tJWd|(ax31)yi`D`Q?RcbIZ5N&sA=f=T=v)FD!|K*D6aZ<)!Q5b9Hg? zcsXunk|??y*Q@(_T+7ULZKIys86C&8<<9V*ztpEQq_`53e^u^`+qJMW4rMzdNE~*C z|IixT8DZ?4QsPD*uXcitIKCEk#B|ybe%c_K|6ntxBmC=rjorxS9xT3bDIxG%zuw#M-_JHTT6e|3X&PH*wY*ZfnT*xm zD|OSU*;d=NTFq=!@rOq?TekIz$RVB%(a3Ig!d1e_4cRic)=axM%xcye9Z{NYG#bGo z<5;f9-;`p`SFX&hF0PbM$!ai9iN}g}d&>}GI4+6QKL)X7rQ8iKjM}oZl)i#czJMp8nDCgdl zIgX)=PRz^xc)U1j-mw=I^|8l_542z!#0lf?MpQ(!Ajg;A(v;|#*ZtRMsgLC`t~EcR zsLvcMdTJsbjGu<#xO$_tVKwzm)4CTdRK4nXQA3^}fspUYr>dE^6!p9)Z(p{&PP;CK zeLX2m?^Bo@FI!S3L^E&Z78A~{w3v_fDMpT$EhZD9z4+mAb>?946WPWHYoq2`cT8X5 ztNRp@M9Su$Ue;dt(6~B%uy{WiuK~BeuK5pMjPmUrs!6nL&cTAHt*?q%Ec_qN=9;de ze(H}5&O42qEkU}jedf$cuo-;QbHOa|bM-%OML9>K-@o*hM!r;3wCbmKDe}snUS02q z#aIpsZ)wae!)nCaK^ptEX}0wsOmExP9Wgf3l{nfP!q8^Rwbreg;qNM9t+dT`(>9y6 zcr%Ju?dj-md`-*iecN!HyJBY!x2?4B@VdTfIGbV%*$|sR5F^RUus2%G)0wQcI%2-o zHjULScEMe9O>B^{ zSfpzk&AM1>HBmH|>cTd3>a6L3eq6NPWu^_c3t}Q5hn@HXYZtYGO4_Lvy=M z+?}-U>f&#&>6@+A?KEL}gYMGYN%@95td=cnm+SD81mV%-c{Fb;#^5w8frA;hTFOh+m*H*MWo zU)S$g=3UXK`;B;F#Zjj-YmU2VCO6&rF@jYz*b2pb=v_$TL}~3cUjHBT^9;feKmY** z5I_I{1Q0*~0R#}(-2&n3{|}xC&;R`X|L*QhYL5T{2q1s}0tg_000IagfIxqN(b0)X z|NZ}khx*4M1OWsPKmY**5I_I{1Q0*~0R(oxfdBeG=l|W`kF)>*1Q0*~0R#|0009IL zKmdV30-XN`=@5nh0tg_000IagfB*srAb`Md2yp%%j((&S2q1s}0tg_000IagfB*sr z3=-h{KS+l#1Q0*~0R#|0009ILKmY**hC_hA|2G`{NGlLP009ILKmY**5I_I{1P~Y` z!0Z2mbO=KL0R#|0009ILKmY**5I|r!1bF>_IQo%RAb_IQo%RAblnFBw1;G_Hh`~H{r7xsN--^AY6_dYuL_{29(99I7H_})E#Vb2p|-#hk! zk@LmBCz9;sZR!s@37UZoA(yxZ|b#HqhYMIY{Ru$P2D!zE#0bTE*3s{dATyT zQYkMi%~x)gt4XQ{`#!Fy)6*lbz2F*a4KtG{^Q7>4l*7v0vx}8-H4|7ZKUKBrRgwEj zxB5%5$qL*B6#V;%k+qmGaVc@wvLVc)VPV>Y1jJ!a9y=i#Ftj zZMEuV8ZckEGPk<8Qa&wbU9(NYHS2n(Y28bsM&)+e^*({xs~=O;xuYZAk%ZQ8U8AnB*fdm5Q!QU#Dp%7m-%QG~s@;24^s6X5?bkH2=+uU3IHoX3 zFBTpQEIUn-SF{wWZEPs&*&{_yNt*4N##T6xTK0x0GX?O4WW4)L^)@!Y;V8Y2` z{SyO=OjG2wQwr4@cNKM36#Q^90@HTsosL}O*G5J54#Tb_d1d-pRkhbf?kMWfqs2F_ z2g5H-mp=Mj+3d4P&dB<{1-EG|#_Za@JYXukX^>(@x8b%M{rOUoZkdY8BwiUG^ikr?Y zPQC|{GPpaqR5?{{;h6}c4y{3TkiDcj+!lv5xd^qv^qtu3*eiZavPREinhBuQ7?!9~V575?OwQu!suw^iPrhFDfa ziD#3UEyWC5xn)=l>7o-A+Pk?)kt_uNQvqmv1q8!H4ERIAJ| zO)}g5h_dlg?!CG=>A3RH@}IxlXJAQjrGE9V%7dz5h4<>=aU{9>4ibm=>i)y_;Bgej z&M75kjCKdjTi6V5)QxoL_=$sf{)1-Du<@_Ir9so()7#vr2OC&-9~rfp={S1!H0o!h z@&5mv{1}5c2q1s}0tg_000IagfB*sr>}~E zAb*eLj+)Aaq zGWYCarCg0dtL3MvR=rwYSX!xEtt^+HUtYL2w|uMYjd=$ZwK6^8Ond2eC@FcO!~rKh>BlbTDY-V5$y_Uk&~=X;jOz((JVo7JX?=N?-50vo*sFy z8sSQn&eq`1cSB1t`*A;4xmBK9UAexnBobe%EUlE6u8Ysr#l_?0YEq@7m!bd(s=QLU znMsuNQ&2g%i~YpfC%ktl>g6X!yeE?GZFihaeao`#maR7o$JIOSy5XAA<-)i0_N^2w zrwVnYz@TH(T&voH74IQMed39c*S7*uDX#Re@J(4wDd;U(=4uFI+uUloW-y$qk!6S< z1sL_ZZ8}ai%(>sJ>8++-Yi(^=ZaRtPD_7=L7gx$NaxYp<*R<~#jWk-+i#6L6%yqrf zwC?o;N*$3OX8QdlRZDx-D=6wEF<}lTJzHxv8pc}7He5^8wjCtP(d`2ZKAyH;>^vXzmx)C-F1v=itiu$yemyaa9Ck^>< z>9gw6rNTG&;z_}Airo2_z`f#?#AEJyAxG!v$MjW;!}&Kw%~L_!>u7kNZQ{n@@n z#csi<2xDi);e!{w{fc_%(8wF5U=)N=qHI4KWgG3oX>xgujc zdE?$bMZNmuh<7aM!N8(n)y$@2MjKZ+ZsdT%H}rO?9G*!Sjv+ZXSm=U1FXT27yf&NO9z~_eSr-0GcJ#|(KJV|t97yk*!fn~Vm&@$vQMKZWQv5+1 zasLUSd3!xYQ5VFPdomf14WqfyF*Z!yaSd0O`zjMs_|v`PAQK^zH0+K{xQ{01Ue&(V z8&}jhQJEusDif!VzXw$;{Hg6K5=ZY-i6mIufb8kM2Z#ehjcEL2E*AdecIC&TE?9Ik zX)|lDSM@Ny&L)ys+%p3+vq$)I zW~6)0WbThLYjGx|@F#kQN+v=kX*gUn;XZ3-I{URL4z7*dluTxYPj6QnIccBTWTI%i z{=d6_enagMKmY**5I_I{1Q0*~0R#}(i2(op-%gZ>g8%{uAb08`F|%$#6bW71Q0*~0R#|0009ILKwx(Z@b~|A zcmGj)1Q0*~0R#|0009ILKmY**b|S#*|2t744gv@ufB*srAbEAb_mX`|4x*Mg8%{uAbn)Sl!$`>0tg_000IagfB*srAb`N`7U1>&-Q9oG9svXp zKmY**5I_I{1Q0*~ft?6&{@;lbaS%WN0R#|0009ILKmY**5ZK)Uy#If9_aC)K009IL zKmY**5I_I{1Q0-ACjz|wzY`_mAbH}VZL8W?|Dxu>ZPM2-eId* zH}5UX-_&ih-Eu6qW#88=M{nEK9m6%#i-o^+dATyTQYkMi%~x)gt9_GH%h#96)ihzX z{8Tl~u&Ukjo)}PcqjlG`^`@~U7yX?Bi%yf|6)lBouX>Lw>YQlxk-S#B=2p8Q+N@jk zwDyI+F|ceYOKCpIm!AI-n!cqgUYH`k7w%fnOX146!qxQk#9Qb8fy({ z#7Q0S*P^ml=AK=w^o;9zRm_K#%GJtp`T6CAYjexD%Fk79mFHGht}iT!l-DXtE9Ir@ z;&XLz@p!qK)Ferk3Gl~#wY*ZfnIw?hqU&j9a_sbK-E?ZU)po5`Gn>_2b4|?euKZiJ zwP7`lhVGd59jj*Q?)|oi5;rQYT^y@pH?o=5&2^*GaP>9YXx29K!|qzQt=tIB&X#`H zaBG{U(^I4$=D3EPAF|%EZ|8?tj??LrU9Hh_#0(n{qupsV^0ST7_K&b-HB85CHRZDB zD_7=L7gx%sEs<&PCZz6?J^T&&Bcbab^|D7k2*8lFIC4$7d z>)!7f03yJ!Yn#>`Q<`MacobnXGUxSj3VAd>q7C{3Iz=|}Mwjhq_C>v|fN zn?oEeFBivpMVe>1$u}%l-$As-y0epLexse*ZQX48Yn{}rxa=8ulm;U-nkxDo%g}4B ztu0X>tEn5!`^jvM*NHff%t&`zZL22wLSD~WYyKei`L_%=*yp40IEQIx)0ml-tK!-n z$JMu5byKW8ae>i5FvLxYAx42*M9nsnowO%GW=HJFEgEmZCY&aXt0o#JR&mYt9#hn3 z4v%=Mw2L-O!!dQaXxj{~75-}8-q{;H-nxPif5(*bs%p2qFCAA;93HvbQ>O0~m-WB& zFUybCQ$}#n-;WO~>Vjy|$)4Pk{lVzCn=OA6jm!Eg{mbf2)KhX!6m8vmkD{Ix)lhn> z;Tjv!O<{=o9sLWBqxKY;1c)9y)UOBIowbJLYzDUraZA6we_?X;o&qz0TFv_sanmDO zH`>#>;BF_C{kHz)MKODdimz*yrz+~SC?&kH5ATt}(bkOH^OvIh^KPf2sC^4KUQHQa zSG-3R_3+`5Pt~IPryzA)%(q6xBzI0hXmA{mR-YZ+HpR{Bp0F9=?!cs?nbo0d;ANMN zuE4x?JG>#w&s!`-8>XAh(zV=1*F9G_73C!>xF-k}SZV8umbhlC`<_j#7v_vPtD0;A$x4$_5Xf9)!;e;2q1s}0tg_000IagfB*u+ zBf$B8c>0o-Ab4$?*LD z`9kUQc`>+#00IagfB*srAbL8%0tg_000IagfB*srAb*UeT}_8 zwfCcwzc{%u@f#B(%I5glJ^ysi^|8M;wmAALqwm@O(S84^^bH68>wzB>$v*9u@sf90 zQ7@_^Udd|K&3g;;H}$)QTieuYwrRL#UGFrld%=~$KfAnKnOmup7nbHLH_O#Ds<+pB zMo|~0N4%3sCbrpb>8@=wopsaJJMDUsStg|LW4)PXB4myGFxpDMgq_*?m% z)RQFbpD@VpoHWC#w(h-GQD;Tbqj^O)jV-y*zd5i_KXP7i!FA26c;^&VRYx9d1Y^K$ zwXIt4rSN}d`#iW9)bq{ubyx$rXM(|1Yjv8g)Gy({=+kLoV4n^XfkN!8qMkoE;_XYs z9M`Zjv(vv&_`zPSo`|8Bf7x$vrb^mP?~I}z6$R}H3R=BU(S!6(ko!M~a$j9qxUrh7 z0BNLb&K)tBkB8G#Jkq@Pdb5gp@ZiV;E$9qC#~|1LBij}JwYSt0etGFQ4^4x<$hn?r zbtaMaig#L3=Z=hcM-uBG7qJ4m8Svz4;RkxvlfX=pbg23Zsu&;L{_Eb1q8<~4PvsQu zB$*ce{-6@YN|7v(aWO&CphMjIZBs0dC%sdOdgRE+>&MdN(T|*#@%OU*k_5b^&WX#< zSc|1Hs7?39TC2HkZR}{h3%l89wwm|1S{+9>YBkew^sQE1tPAm?Jzu#px4O7eJ|!>G z<{i_%-)fpWO`>^^dMCw_IXmK2vYit=6Dz(Lxvr=}*iG4sh41gvVcBT9+;!O?Up+=V zUX8=T&h%>D`^1VmJM!Rm+L>{buvTGGe{WAJTKHT}2WM0LzIJu3wY4Rtkh5uIdp0gI zI~02ROncQkA!er7H?lJ`-G5wjtKG=%S${X*y*EudXEK{soMlzBz2l1dv?%?Npu+xr zkB^$>Bno%$r6OC&KCtX4eqOP0kmeooG(}w%MPAKobIZ0itftY>9n-#J z)lA(VHc|!t_P`3{rp~KQenc?{o*FO+T6deljh|GV?-^X3C_!!w;xKLM+Y2T2n7BDV z6o9ff>Y@$)3(Ag$y5F-3hwj4U;8WQk~7 zmTkA}G}pp+ZC7TPqED$&pe7Dj?^Q2(d%R1Edg#!IR|{6@PP@@E>fzVIkKgm27;rz{ zXx$Yf%XgD1_niYPmnO-pofIn8)yD^{tMLk$o#%gJVA)cdyu#&R?Tq*IxO(;INFnGG z=jDdwiaojGwu0xu8XJwd8Ncn}j5sOQKZ>W zhF7t~@BjNh$KV421Q0*~0R#|0009ILKmdVZ6yW{;!`Q2|2>}EUKmY**5I_I{1Q0*~ zfviA!{{MWT^!aQU&k#TW0R#|0009ILKmY**5I|t}3n-&wlP?t>Jj46{cYj~f0t661 z009ILKmY**5I_I{1O^HCfB%p3{~#g45I_I{1Q0*~0R#|0009IL*!=?j`~Ro>W<0d} z+d>NvKmY**5I_I{1Q0*~0R#|0pud3s`akFY{yu~tfB*srAb?@Qe!bbap9#BWG&@Ek$|kNv z#}%z~MRRjQ{VIkPT5Z=2H>uXVxo&hC?!4I$X`i)?W^HqB-8JoO=25KR;tTHmhOfC5 zH2C=AQCNszSWQ=ans%jbxpAGN7%PSla>Fu2`mifr8u6_?-+JWL$16=^tzoWMTc&Fp zwcDm0XA$J?I|zN(w$?;rZD*ym;>Yr%$MM1p=FPU*teef6Wr|+%yCmrL{YBBwlm5u@ zyV-yJf1>mgh0+&Fzgzl`rC%%k+tSaM{)M=}2LcEnfB*srAbG_@NLhY;M>?(@NIN7_%<>!HZ~dl{lAIQ_ltl3uk_pE^#89*KU4ZA zr5_d-_&@*w1Q0*~0R#|0009ILKmdVvUSMK$tmwahFW#LIK2YKZwmR`1^nFd{dzO#TQUfB*srAbf{ zzgYT0LHy4L0tg_000IagfB*srAbdc~pa1>e|9@BU z7Yil(z^@*7aq0_G`}cp_{xkc2Z1Q_2es7|w{H*d7C z@#nHCws%8OpFTR`Jz_QM=Dmgao4QeRtyWXFJ59ZHw`tnCRZlM!e(~~hWp1TXURav1 z+$>l7B&e3JFO{olvTFIMYMfbB^A38?E9!Hi)P=lKZL{6dYprIjW7}r4c0bLg@UI4z z-kmV77C{`VUOirwO3*j#R;Mj0Hs)Pd)Jvjbvq8mHZ&YNCFs<(-Rq0*8~Daq)P$>RN8Ytd>_QH-RgzH@HR;Ii zfV(aG_IjgrSB#i!PGPgUqr0}Xu_4A+#|Z{mTH&Z1r?zRT%2;~H+q>B;|&X**&zrq|~ySLRk1SIVd2jn zRgH6*o|eae9J^*TYo=ror?@h=_(DZaBr0yZrZn8*-g8^+cFy&-ZQik39Y?QsY{Oq^ z(zZn@Yqn|R<=AQ0d#`I=!MmoYbH_%!Bi)OMsF<}bW=yb_C97C`wea(O7n3+jlrS@A z<1l|o^Vdi*)-~^4-lC#j6LmP>w+`mLwq=V!)M;Ar@)2iM_`kQWiJZJ|eKL{!T0OU2 zts>LhTK(MiwUU$ftyLzH-(O#~U4Mm>AzJGarJvotKJhG)cAq%8-(OL%zX2^M>UGgy zPxtMwIGx@!w&DdizE=2|?W+>U4bu0u$;R?4_LV!XSle(nyN!POO;pTJzkS7mSeiHL zT~*Y}LhOmYV$pulU8VnP`zj?nO`m>?!!_@scSTWO5Y_lZPz`CDO(eynwCaJnScH3p z{zX)szWa5*jQUbVtHAMUk}@!pp8G?ns=fZOS5ees$3{N&VR=`NQ+2!j^QfZP{XLHD z59c?%$wxKq-iXEJ@IJ3+DURX0Q}n$B=(i0!Zp$_{%%DfIThzKGc6i5nMcjOJ?eRf~ z$WZJUjw4pi+(=^2a>W*`iyOsO-D+-RGmo`$%1wfT&dKcH@hZ|)pJ-nS*2h@4AR6m~hkFu7@A zVgIaOVRF>2!ZJbHruVEE?V@FelBpV2H~1Qs@=yCtMk#7nDe>*%@oGFeHSe}Jr>Lqr z^4e@Lv!oLKNp=rlRKU^**4e3)3Us$z*l}-mYylopo_+kO?y(g?}8?Q#z<- zB4m<=4w-PDL(W~W?Dd`*TpPL1GMN>AY`faXN&D0$6Gh|S|I7X)gJ%dJfB*srAb%lVw5I_I{1Q0*~0R#|0009JsQDDk% z)I-DAGTMXy0tg_000IagfB*srAbi0C#}a%;009ILKmY**5I_I{1Q0-Acm+8B z4{zVnG6WDn009ILKmY**5I_I{1Y!Zs|FHz$5kLR|1Q0*~0R#|0009IL7+wL+|HIq2 zvFO2@3;&&9^UHFE5rNXP8si>ExN4&#Uvu@s7n7^qTHP>o2b-UASnznA6 z?UruUGZzd0`SNmQZlzLQSemcgELZ!a`dY89sB zR3_VM{@c?kI7Pm!Y>Z$ zg(N|DnO*(|z2_D6IZ^6DUa7&*sJf5?u2=@h{kR8cvUJv->_Sq zc2)Dnyz64vi;B(WbVW4g{rMnO>0j=kE2NZz>lBn))n0$rGZb}tdgRk{uCdlI)8fR$ z$UG_h$Ef&~xn~zEIiue1|AnQM%GJtp`T6CAYjexD%Fk79mFHGht}iT!#MdfIE9Ir@ z;&XLz@p!o!4w;q8&E!hc*fOhS`N|#BcEnncy%-Ocw7e+Cm^`URbiHmmHQQ?Yt4cPf zHNz1F#v&+{-bWSnst`Dqx6JvH zwbs^_8itTY+HvkX}@|%F*I+)`)WnKEb8(^zq-Wpx2q=qe%qSF3H#L}3D>+Q zy%!br1yPGz{c6#@hIiHG*SD=rcLx1x6|YLU8^Ig5ypJfVrj7iG+g%H=KSaCg^lMR_ zdY0gLM!e}YIGRGaOQ4)tv@9gR-3g=-kXakWO0?dxZ|m(&qapUDmpi5-R>`gfw|Ch$ zT-V%c_r|;{@>*}S?&@vhexqfG)$Q5E>(9m;ia*Z%O3NEa(=_W{tEgzRBi7|?JlAk; z2Z_7t7Ei#g%eHY>OsV9?A)A+Iv=pYBcZ^0ScQut`g*OIa-Q%TtdRku9<=8c&Su=CC zfh%*1FI412;pWsf?JdjkchW8k(LB3nJr{ek`-k`R+%$-%0C{nE=|F_u+AM=IF>Lf-JK~88K(pQDZET36P{-*y4;6lCV3A$v@`~?{qFLUmqMj8sQSutx)enV#H?aJu7qZ7N zztLfU_NuocZVg0Pxwi(%aw4C43jcOsiBg)p*2=+J!+Swd&x_Lc<+U_iTBP3nHvSMIfB*srAbdxB`G5HP zm=+>{00IagfB*srAbfB*srAb&#cgAjy{?f?zj;O`<{-wzuDE!8OR|<=TpY3nv9rErd z>I+Ydcvr1v-MqIje^WPVuGMPluHoF)9k+R)8=ZOb<6QgCtf@^WQvrBYs4 zny=g}S9g%QTE4ziu1a}S%THCKQmV(RQaM%48}(d8ofDNi5mavVMkP}@w{_cW>YIkM zDdkrzMs@oC+q)C^II{b&^XMjt;stV~(WpdIBlc)SamoZWL(vpH9*@T$*+WAFfg#ke zNXb%lp}PRou)C|LyP6}z1}iA=~IRCJWZ>&aIV(y)Gs)-jma@R#(LY_qyIJrG&lUUUl1rx3Yq^Wo-&^C$MlPE8 zz1*cER}1&C*fN$Y#FkM1o&A@^?kLhq?T&IAJ)EjwP03{w|9)$EgtzoTy{ z>J^dMvmTiAq>`iiY*}f2IY=w_ftT)P!_>U_scM4{^w$*i+_~Z#1^K3vJIl)EOPM#H z+-iF_p!=+kuj7a?c~|A#hE~^meYh=dFo{tcj$=04>4#b{SsBm3 zu46bovFRl`5|=wE4#5<@*Cp%cO;GNP=Iw4`MpwiZs<(TMhS(2Y>6zX1aHMy+*goiA z?;4H7{^(zC7+ps=-p5nD-P2;$`bYX5v1r9>V`|Zc&tm`W)_wm8)@ZC?;y>nYi?MpT z{{ofqtoQnN7q(YJ>nr`$O>QH1ZrogMhp&?UlAZY7+*E=!?aiv+GGh;PbC7GesjO@v z6}#22T8UJCXG^L0EjLOfsG+^qHx=~-v9}!0*;}$6s1v`vSr*Z)D9wv+G>Z6gRA ztcBmo4V`Efi#{5A*sC~M9qQM_`?$#9yq7`V6Iwcn208p@ki*s<&2IagWTZVzcv-KmY**5I_I{1Q0*~ z0R#{j7Xi-y<1&+s0|5jOKmY**5I_I{1Q0*~fqVhZ|M@nQAbJBMFCeBjXf zp~Arr9C&5_FDoCN{L#tjeSc-&vAy53XHfhn#jg?7Uz)fQ>vM82HR)aGPY(_$>PJo& z`=-^Zn|GG3mvy7&SawUlZFDSSxnb(|dduwS9kXrgEu(2BiVMdsEtY30<$t7AR zzAd~f$gMJSaju*hOY|*Lu9UBo7fUZK&R&~Yyji+hzFC@Csw~XTi{{tL^Oe&4g7~#G zH#c1xB^Nad3c^&A*S*9`mGX^PH+91?s_Cm{x7M-Ru76nQN3C^C!!hf6uVvjCB`l@Y zYl|M!6+~;TuMQ3<>b3L5{snK2XD{Cf=h!j2x4Qamv(t5FJQzWM7%MBNfn+efoAnW! z+gMNT1cy{w|LMVgvHV18MsoSZ8cAy~GrMZvpy-9j2c+x$er3R-{fV6UQH5~)0y zpGwy;oL)DT$=kP(iQhCok)Yfq*|RB0`kwb^=51R@B)pB~ecV%UXFPtNzk5(r)T@Hz zsz)L{9ij%h59m&3isg|Yo7`tiRxkNNekAw#;$>6ShI`{5;__r z6o0TpS#0Y@mLC-UO&8{we5CkUC$C1+5kAj?2UECS5|AY9&VI3}+0CZq z=-o9#9`e48gO3_zMwg1U+x>M#eO`oDGlw3&oyx)YZX7&pk{LQG)cVKzx5aC@hsBNZ$RIKs&f9%gO_yz$45I_I{ z1Q0*~0R#|00D-X-a6kW_cw{Vx#-I>D009ILKmY**5I_I{1Q0+V5a9EFmI49@Ab;9fB*srAbF4?;pHRQBR&MzA@z(%MG(_)NUE8roP;;m*uYu=PoUlXDa1VW#-~sxm1r@ zR=rx9ov)N@gC`XA-0@<6kJYN1cV;i&xH)+5q9Y|#De{N?hE zQdP8zRjZa3=A)o)JhyFCOGk@Zb_}mr&JPn-O~r`{wC>=9qMj0gp7sJQT`xz&>4pROKoDVRe)jrOS(tlXv8wqIrhT{R zYQtU^dAE$FKpZ?bc#onUKVE#}s=NfkfMLDa|j4UrTdy)1_)OQg5la&7{JRdsOB(@@BeJDc^{7<)xmwDh(@D)-{{A z#h7b$vu!w*SnB?Qb+fo!esN}Lu2OnN&d2KNR?9IvEu*nfP0b!WuBgvGQS2X$R!7}z zH|)FmE%UA(jB0eHFr8i^qtdXxKZT>~E_Vo|H3sii)C(fwp{$5*RI5H}S~$I7K)-rc zyr4v^%HxW9MudAZT9u>T_3r5F!dC~8(ra^6N$+kDYkD-u!TSbZrKnFlQGDZV-l`n+ zF#4*X1p$M#IV#!K@(d~5eau^&{sIi$lM7Q`f_}{vtF>x&+8wcOs=@m63z~L4W4WD` zms_o48je}ldoAnEXuSnDPOn|hDb!vY98=U8F*_%s#nA38H>{es{G^OVR|`+2SH!4P zm)Zn7Nz|XqDi>>=!MhaoIT8KQtmxtWKI*)1YQxZBgRHnwnKnEYC+ zS}nb6_c}FGYzCwC6xNRIblY5dVnY`jsC z_r1Q_UiFr$)oj}xM?V|?zHqX?Z}6C+YFe>>$(!wXdHlP=`{J`6FLh@=yvM!giTu!# zoFIVl8gC zip@K1tCP388scf0v+7QLH~A?`qHwKcl=g3a75Fk7|G-L~VtjWk8~ z;mw>;qwClm@j{+ir)G8>YvpddOuIRF+obyRW5w5^b?O-1TY5PA?l*-}dilgE`D@3$ z?2vi59%~nBA_oc;)*ixKZOFwEmvKVMV=kI(*G^Pk=_vvFw(9+vr&C z*))7PPFya0ReA~&Rl=73DoGT^CbmC4IHaf_5ows-N^}oaiTc5vtG(WH;wkEg5NTZhKy|KXox@H+wsAbz9 z!1+Iv;CBQNKmY**5I_I{1Q0*~0R+ZZfb;+O&MhND009ILKmY**5I_I{1Q0+V6yW?H zO7J@Z2q1s}0tg_000IagfB*vHE5N`1KfZIz$PhpP0R#|0009ILKmY**5C{eM{6Cc7 zcLWeX009ILKmY**5I_I{1jbju{rvx36ZXWO&YlCs&lj&8{mvt+Q~!2q1z3AX=bUiFgq{WUMtU6O7jci*V5eFbg6pV>~t-=rOOSa;^l_D zoLAN|nr5|BDc^{7*s#~lj-Fjsvzu+ZYdNNV%e)&l_4Ba0dc!oN>@SyJoLQQyl%A2Z zt#wSpG3$D-W!)JKG|X4)9~qoi)GOzU{nI|{de19CU+Ot>Mc+RedxC)G2@i|eU;q!bEg^P_s*$bm+E*9K20 z>bc{^{+?9l9kXqVX$!_)cqYI9pk{0=Ziw)@wlXLw>Uj}GNky^OTVkq5VV=$p6IM;d zi3+st;Dn-{5`p|%V(EH0n!9c|kPieAmgZ-#FO|hg_huSMZG4nyRdO~X3O0*!U>P{ zSh%#sD$%`j-anqTMcd~I-kytRt+8f6PXT`ET zU;NxhV*9DwY35AM1bHR)SGk=#Me=sJrF}MZi+1PC{Vf{D#?|~yA-VJ3GR?MLvwJOP zv^8c%@hY|r$1yvtU>6SSojN6Nw;i)--!}ESakslkmqE>~blNnW+M2%7YcztVMEJZ4 zbJ)U;pINonu4ge9Jl|4Qnv@*a4-cEdKrQ%34ATr5&~;T!XBEU8+o zoA@%8YPpL_j#t%Q96UX#-aJ>F@N(?F(r}-fM$fUm@1wm@>O()9mE{YAy@L;k2gSMK z@J#GpkXmN7`-bd0L24D=2;M@J?}G4wEZ#4c?>c5z@0c~yx@~UucwaNRYkJoav#5LR zs-=r_3m3yzm5m?%B38^Vx`V=GwEpDajCeZ`FJ0-k18-Dv09mB){3a7EH%!m4%M`1j z_4f>>6}2ofIhDNteTX&V{Mir268ZW~5|P?v=OI_nK0P=sc5so!iH);}Evv$FTg>6? z#u=OyPq#gTuig^F2hV>f#_)ApOhL5UI0?6c_Ub@W)E5N9@eLT7_4Bb5p500cqR|HN z-BPVTF?dQ*pNkfy{228XWjDPFzBY)R{}v>*+#mtJ>#DXsI3=Ey(K<+_kR1Dkt;OHk z=-=qP>ze9e{<*!&h4ynpaM|J*l~+M8qR z?OYHv@m}Iibhr(N&rx|N&OP^atyjh2Eo_p0NQ&*$+bg_DOulJ^yNDQHUXf>?S17i% zbj#Ql8D$pj-i^VNiu$ZL9vn^GrK9)xfUNMrKr7=IH>w=FGh9TeNaOSWE&V|Tl@LGx z0R#|0009ILKmY**5ZKiMod0+A^pQLQ2q1s}0tg_000IagfB*tp65#y5B_=8%fB*sr zAbgKmY**5I_I{ z1Q0*~0R#}(r2?G)cj?5DHUbDBfB*srAbY@ z2j08?>y$4j@0ZdiKcQpSW@48xCLJI7q)T zxTdI@RvZ|PvD`2_X3J=rb$z*Gv}$Yd?+Ty1v{;_0luMPFi*w~tHC|dRJyo^p)za*I zrF^BlSbAx3_S($i&C=EK&C<+LWnp$+w7yoJuaxE&#IL2fxoNkHwyn#pq_UNc-K>@> zzIZklI^vuJEOpE*V=IZU{+C&9V@M{bK2K z*Ror>+;^g^@Xf(=&CXvg-zZf#YhEoa%$KT(PTbj*V^p>NV}r|zx*)Q8E;p-&y)N*B z91}ejmNri-);>3{crC4ecyLKkXGLO9=Oz~BV%5X1f+P!-&9e%dxc6NSl~hIRzin_) zQ7?#mu6p?_T`#AmuNyW9)A&e`#?t)k^`){{N#4|DHr+}R)71ph@aSMhQBR*PzWEXF z{!YYCd|Oxy(g}91MDez6{jiUm-OF2ScKpu0Tz+w8X|7UwM&1GgvGi^cA91h|N}Eac z<~OP!HVCWbn4Ol<7~RU5DKt&T5O=SkzudK3VIux6Q@7V!4cn;eHM`exHtI+F%-|ap z^@TIV{_)hZZFlUp*>Udb?!Fkpg%=Cg^OtN`$7>j0C}EL1dER!b_4f{5P}EBzgD3Md z=$I>FQ%vRX(iU>?o91T`lxzKigKtpODwp-|01oyA|q}BS9gXhG|iyYE3?{y|WfsSt zAvesx6He-R6e{}Dss!5Tw+zUBTr47OHR#j z-(W#ePn{~hdBt0n!HY-NF`QnvX4ePbq^Kv475k4x&m5yx6K_a**Z;k6Ge|T2gb6G9 zx%uC@Gu7+*Z&K6IYp2$K|KN)Enm9P=W#Ly2BHRcf1P_f-NAi}xrPtgra`KHT{rcU7)M+Yw|>Q(U+K9|~5q9r)m@xvJnpT{4~pVW-j@mUQjcsKqif>`YngJ+Y| z8pie3nEwQm_k3@y&*tZnXco`IEp(F@bz9Ze2VbkG&x>WQrc}JXmK*l6wBLL2ziE^B zL7VL0VWB48YA-12SrPhXv_xa0kKT#ApjU#R>E#-4lpQsiqk1)b74o*mY4?SFbRSnW zaoYRy;>I~ye4{Mw_OB1-6?H}{_D@7g@xz-Qti<@$f}WO&*9hDBS;x!VsR|dk)*8$y z>T}|Lel*I!KX!$O81E1loXYD$qhHE znhYkDXvW~f{$6!7S_nb9-5|opb0`22t4KgXaH0R#|0009ILKmY** z5I_KdaS)ht2l2=_jD#^DfB*srAb$ zPCb73wL`ytNI&>b58gcRiwCUze^L38^3h3a-;eBj=icF-yTvaSUn%@T;o?Mh!kM^r z&jyo&l}Wcz|LUNosEHz_boGW^yA}Rk=v`VY&s55#%FM;Na;X|#ua=&w zTJ>sacD_=+QeG^*v^aZhX7Og}YWZeqW~s6;J1^Q@E6-O-^9$nF(%js1soF8ywl24l z%Ix))*~u$x8_rs_R4Lzxx~g?d!!bnymql`w*=uDlhSq=kU|CVGoi6q-SgpEwXZG?9 z-A%b^I)-j9ziieVz1Ob0P4!;Ox|1j?IKgOV=P#FUl&YIGua*|(eG@5wOC!gqYW>Fs zhN3Qrte(rw%C+fQj@`K{5Rz$iH%}|pJ~yv;Ep2^JRn+H1UXSMHWv8?0Y@Us1m79ZG zru7dFbVa=&LO<_?UbbZWw*qTZxf&RU1qWKB=gu zPZx(X(On?TXfls>kcV_nNVT_hYj|M(0w3KkUF%hIbc;zhOMDumn^39|+#lW|m%8xp z!`SK^wHAe1|LEWoihAWjv41*R5;eQov>d(b7*4ONcYDpIAy#R3&B!b$*y-hwS<&sm zpQg-Wm(i`E^^Xs}Mch3irP1A!*+O?&#NCrwSZHlEt)Q1pQVVNo{bvRrSJaP+^ga=- z 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 J0D=FRz<*%cfF}R| literal 0 HcmV?d00001 diff --git a/gitea/data/gitea/jwt/private.pem b/gitea/data/gitea/jwt/private.pem new file mode 100644 index 0000000..f7ae6ac --- /dev/null +++ b/gitea/data/gitea/jwt/private.pem @@ -0,0 +1,52 @@ +-----BEGIN PRIVATE KEY----- +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 +wBQqOV+8qDcn3CbU68kllqfrTh1MkYe55PQ+h9ECggEAY7EK7yGLhQLeC7061fis +KE5eXgvFOm3IkaFczlXPxW1ct4mFkU7fCKo3gYjKp9jjFG8szchkVfi6tTc3fOws +djtHVT5Jio5cxg2QCnW2JWwADelU7449fEyIozOS9SoX3/mwc/IABBE+sY4GsD25 +D3i/5en+HEmVxl8Pqenpeov44K0LxxoWUdxyDn1Bg4ZMvMY/aBVrUo6gYXtTFwhz +AaAR38f3jem+z5w6X5GdZ24Xrv1XUJqZlGcUx7XrAsXnkBo7bCUVaPx9WavfGUIQ +cdZkPnYuCbHiujnG8yBOtgPzMaUvbSawncfKWITCFpaL6yYOBr/XqiwfL4tT3PM3 +3wKCAQAcxlRcIk+bn9dUdf4NrcxmrHyeMHkd6PYta/5mZVLoN6nLlqwS5uEN41aG +iemAxhQfgXmiPlxG1/MNdh+VtekeOnl0DXClw6nei9W3HtRPP4j/CjUYF+SuBXkU +Cbl0Wc32ZaWbvk4NV1m0vtVyNvxstnAxqBZw1mMq4dqt0afsUQwdC4npKfjvo6CH +3vP8R6l335KeYF47sGomUZHSSyRU06oKRHJpwPRaV0gy2fi9hkxft3HAlDhA0Pnc +ZfHMArkYokO+bKVkRi4AbNYgfJW4aKE7jdROIogoT76uGaPPfpmwj/IOwsxE8NBq +OV2Bk0cAbxM7NwJVQcdZFYiLsr9V +-----END PRIVATE KEY----- diff --git a/gitea/data/gitea/queues/common/000001.log b/gitea/data/gitea/queues/common/000001.log new file mode 100644 index 0000000000000000000000000000000000000000..9caef11c966ae1bfa34348bec726c51c9ef1aa54 GIT binary patch literal 1498 zcmaKsO=uHA7=~vW8{=P^v?iNoLy8A~F}Af@#Eam;pF>fE_Ea2ZH)D32c6XhbZ7m3T zEDD}_Eht_*SOmcqLGdPDym++LlRqeU^QKiNX$s%iN%yi0yw5y4?|!>z?dyq?2xGK< zHSV|^gwns}yHxsNP!Wtz`z|BbV-~Z@WH^)RXoVlXdi!k{;f-aJ?c0L&{F;|)vFQ6g zCs9E-(ONg*JZDi@q1^TSX_IiJdgs>Xx)d#BAUiPIccJ zzIz1WB+U2xm)8Uf$)EG8!tD?!H=c@2s@?*@NE}tEWZWQ|``r0PRk+d0dWBoCns_a{ zoH~l|4k*q=vG7_#gU`wq&#BgTLL|Q#(KHr*^igScK_=&L8n|A&4qu*n;V8{+h~zgT znkJJz@2Z!(2Qro~M9hdERM`zG9K8SD@l9?%=^UyRFm!B_uIfQUGOlP&Uw)yEq@`-Ap2gVCC z%<;moP6Si!nIz91yc-)pcrT=Sjg%()^x@aUAi_C_6(dd}D%C)^9&_tP-RSu0Z&i98 za&{X|6OJs-JywHZLC{hljb%ut7_XUr74qrWSyf2^LIo3~sV@9^e{ny;y^u;vD(Z$$ zN!sz~0fdV%+Xb@P#zk7brw(t!uua{@4^|M)XmyrMgpR?o^rK@)O`pgoS$2eSd>_jU&O?~%*ev9Y~pbaHU>r} JMrI}!1^~s!4paaD literal 0 HcmV?d00001 diff --git a/gitea/data/gitea/sessions/4/7/47bfba1613f81be2 b/gitea/data/gitea/sessions/4/7/47bfba1613f81be2 new file mode 100644 index 0000000000000000000000000000000000000000..8ab05fea18ca4f9085d20e027aed8003592c1745 GIT binary patch literal 115 zcmdF1=es2)m*f{YmX>6& vB<1JlFflPOz|^raFqdYgux93!n3=FJF)+cz*%??%^AdAYk@(3OMVZ9_B^e*~ literal 0 HcmV?d00001 diff --git a/gitea/docker-compose.yml b/gitea/docker-compose.yml new file mode 100644 index 0000000..64b0253 --- /dev/null +++ b/gitea/docker-compose.yml @@ -0,0 +1,22 @@ +services: + gitea: + image: gitea/gitea:latest + container_name: gitea + restart: unless-stopped + environment: + - USER_UID=1000 # Die Standard-ID für deinen Benutzer 'chris' + - USER_GID=1000 + volumes: + - ./data:/data # Hier speichert Gitea alle Datenbanken und Repositories ab + networks: + - webproxy + labels: + - "traefik.enable=true" # Wir sagen Traefik: "Bitte beachte diesen Container" + - "traefik.http.routers.gitea.rule=Host(`git.heinloth.online`)" # Die Domain + - "traefik.http.routers.gitea.entrypoints=websecure" # Nur über HTTPS erreichbar + - "traefik.http.routers.gitea.tls.certresolver=letsencrypt" # Traefik holt das Zertifikat + - "traefik.http.services.gitea.loadbalancer.server.port=3000" # Der interne Gitea-Port + +networks: + webproxy: + external: true diff --git a/traefik/docker-compose.yml b/traefik/docker-compose.yml new file mode 100644 index 0000000..118d6e8 --- /dev/null +++ b/traefik/docker-compose.yml @@ -0,0 +1,31 @@ +services: + traefik: + image: "traefik:v3.7" # Die neueste Version, die Docker 26+ besser versteht + container_name: "traefik" + restart: unless-stopped + environment: + - DOCKER_API_VERSION=1.41 # Der korrekte Weg, dem Docker-Client die Version zu diktieren + ports: + - "80:80" + - "443:443" + command: + - "--api.insecure=false" + - "--providers.docker=true" + - "--providers.docker.exposedbydefault=false" + - "--providers.docker.network=webproxy" + - "--entrypoints.web.address=:80" + - "--entrypoints.web.http.redirections.entryPoint.to=websecure" + - "--entrypoints.web.http.redirections.entryPoint.scheme=https" + - "--entrypoints.websecure.address=:443" + - "--certificatesresolvers.letsencrypt.acme.tlschallenge=true" + - "--certificatesresolvers.letsencrypt.acme.email=deine.email@domain.de" # <-- Hier wieder deine E-Mail eintragen! + - "--certificatesresolvers.letsencrypt.acme.storage=/letsencrypt/acme.json" + volumes: + - "/var/run/docker.sock:/var/run/docker.sock:ro" + - "./letsencrypt:/letsencrypt" + networks: + - webproxy + +networks: + webproxy: + external: true diff --git a/traefik/letsencrypt/acme.json b/traefik/letsencrypt/acme.json new file mode 100644 index 0000000..29f9753 --- /dev/null +++ b/traefik/letsencrypt/acme.json @@ -0,0 +1,25 @@ +{ + "letsencrypt": { + "Account": { + "Email": "deine.email@domain.de", + "Registration": { + "body": { + "status": "valid" + }, + "uri": "https://acme-v02.api.letsencrypt.org/acme/acct/3321556306" + }, + "PrivateKey": "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", + "KeyType": "4096" + }, + "Certificates": [ + { + "domain": { + "main": "git.heinloth.online" + }, + "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUYvekNDQk9lZ0F3SUJBZ0lTQm93RGpHZEs2RHhrZFByVlN2TnU1Vkh6TUEwR0NTcUdTSWIzRFFFQkN3VUEKTURNeEN6QUpCZ05WQkFZVEFsVlRNUll3RkFZRFZRUUtFdzFNWlhRbmN5QkZibU55ZVhCME1Rd3dDZ1lEVlFRRApFd05TTVRNd0hoY05Nall3TlRFd01URTFPREV6V2hjTk1qWXdPREE0TVRFMU9ERXlXakFlTVJ3d0dnWURWUVFECkV4Tm5hWFF1YUdWcGJteHZkR2d1YjI1c2FXNWxNSUlDSWpBTkJna3Foa2lHOXcwQkFRRUZBQU9DQWc4QU1JSUMKQ2dLQ0FnRUE3T1k0aVZucVoxNFdPWEdFRERWay9QSmxzZnQyc3FkTTJpbkZzeUpLNFo5OUJtZ3Y4UUVIWlBodgp4bWNtbEMvcnk3a21majU5OGRIK2IvSTMvYzJPbnBtaVZXRUFFd01sWTZkVTVZdXp0WmEzMG5ZTitZTkVkV21jCkJaMGNlSFBQN2FwQWs0MEJtcFFYWCtrMVJDZ0hBcXRlT0RxNDZsR05oT0k5aG1tTDVtK1JrcGNRRWdlb2kzR0sKR1pmSFR2bnhKdjNySDh4ZVlwTXU2TjRFaGhTbkFiNmdLVzdYS2NiaTVqREREWllkR0hudFpKT3JDOXlNTUlmcwpoMmpDaW95ZkJoM1hZR09ITEZVWnJPWXhoVnZBcldpV2JPSTFWWk05M2U4eFNOZDA1eStqUjN0WnV1NHJEOHNvCkUwN3VvSCtFby9DWmNWRStwYnNPWU9JL1dSdEJhSmpGMlBRL2ttTVJHdm9mVitYOXl2NkM2NlMza1JtcHNBVjkKdnUwcUFWa2cvWExWVVBkUVVDdERzWFIxbWdTR2Y3MEd6ZHZkOTErOWpKU29uZ1ZpRWNSamI1U2tDWEVIUHFHVApPMlJpMTRHcHVZbkVzYlA2VElaanhndEhyMEEwZDdLc0t4N3hIc3BqdWc2OGhEMm9odGpTSERFeG5zUjVxYjJ6ClhPUEQ5WmhyUkxhSzJDUzhXbjArSUxhVENaTXFtL2tUODFGNFhtazN6QXpIRUZSd2d2Z0MrVnlwZ3ZrcFUxWSsKOWpRS3lDWFc0bDJSakFjUDlnVVJDN1B0eUp4ZTZzbmM4TzZaTlhsNUNKWGxZMW45aTMyNTJBTFBmS1BqanhlYgpFdUpVYW1WbHNFcHNVTVVQcmc2UWFwdHJPSHcrdVFrWitlV1poc1ZUbTFyUEJFQ2ZqdlVDQXdFQUFhT0NBaUF3CmdnSWNNQTRHQTFVZER3RUIvd1FFQXdJRm9EQVRCZ05WSFNVRUREQUtCZ2dyQmdFRkJRY0RBVEFNQmdOVkhSTUIKQWY4RUFqQUFNQjBHQTFVZERnUVdCQlR1MytObWFhSEdPczhGTFBYazJ6WlJHb2YvK0RBZkJnTlZIU01FR0RBVwpnQlRucTU4UExET2dVOU5lVDNqSXNvUU9POWFTTXpBekJnZ3JCZ0VGQlFjQkFRUW5NQ1V3SXdZSUt3WUJCUVVICk1BS0dGMmgwZEhBNkx5OXlNVE11YVM1c1pXNWpjaTV2Y21jdk1CNEdBMVVkRVFRWE1CV0NFMmRwZEM1b1pXbHUKYkc5MGFDNXZibXhwYm1Vd0V3WURWUjBnQkF3d0NqQUlCZ1puZ1F3QkFnRXdMd1lEVlIwZkJDZ3dKakFrb0NLZwpJSVllYUhSMGNEb3ZMM0l4TXk1akxteGxibU55TG05eVp5OHhNVFl1WTNKc01JSUJDZ1lLS3dZQkJBSFdlUUlFCkFnU0Ird1NCK0FEMkFIVUFsRTVEaC9yc3dlK0I4eGtrSnFnWVpRSEgwMTg0QWdFL2NtZDlWVGN1R2RnQUFBR2UKRWZZZzBBQUFCQU1BUmpCRUFpQXQ4L2hBNmNXMGt6RGgrbnVRTElqdTVEcGhrbUw5M0hjRXUyeXhSbm5uU1FJZwpDNVV3Sk4ycSt4Mlo2dFRoVWZuYW1naGRNTG52eWR5aCtIM2ZNZTg2aU5zQWZRQnMvbEFaUTZoZXFSYThVdEV6CjVOekpIdkZCSEgwbGhDRFJjNENlR0Jqck9nQUFBWjRSOWlOM0FBZ0FBQVVBQ3RmYXB3UURBRVl3UkFJZ04yb2gKcXJpWmtZeFpDYlQ1eDFBdk01dkI3dllhTytEKyt2bXZpOFcySExZQ0lDQ1FHRjlXSzEvMVZkV1NmWmxWcWNiNAp1ZEc0bXl6M0hHMnJwVkJZRVdJcU1BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQ0dlYzMxbkp6cTFuUTVxYW45ClMvMU8wRTlpT05YYUUyamd4WjR4WTVBRUVqbElPb3lLUnBQVHVKTXFqZUxkQ0t4OXZKVWE5b0pIU1NIR0xCY3QKWjVwU3FMMjFEWlJscno2ajNJOE1KbWJ1R3JVUzZGcmExenVCYTUrV0lMWjdwenloV2UwaDZDSTdCRjI4d1dQbApVSG1NQklUVWNqQll2RXJXQm41TFRpUUFvQ0wzVnZqN095WkUxVUVOWllaWWZGK2lVT1FQNCt6NUVkdnB4T1A3CklCQkNtTnBVeEhRcUV2ZGRnaVphck1wMHk5YUpRL3ExS2NZVDllVEJ5NTJBK0xtVGh1OTgrNDVVR2FpK09lYlUKbmhscHBTRVNEK2RpVCtWV01nZWNVVDdXV0JhcDhIMW1YeDM1NHNMc2NLTXdhMVNoNGl4RVc1RlJldGk0ZENqNQprYlplCi0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0KCi0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQpNSUlGQlRDQ0F1MmdBd0lCQWdJUVdnRHlFdGpVdElEemtrRlg2aW1EQlRBTkJna3Foa2lHOXcwQkFRc0ZBREJQCk1Rc3dDUVlEVlFRR0V3SlZVekVwTUNjR0ExVUVDaE1nU1c1MFpYSnVaWFFnVTJWamRYSnBkSGtnVW1WelpXRnkKWTJnZ1IzSnZkWEF4RlRBVEJnTlZCQU1UREVsVFVrY2dVbTl2ZENCWU1UQWVGdzB5TkRBek1UTXdNREF3TURCYQpGdzB5TnpBek1USXlNelU1TlRsYU1ETXhDekFKQmdOVkJBWVRBbFZUTVJZd0ZBWURWUVFLRXcxTVpYUW5jeUJGCmJtTnllWEIwTVF3d0NnWURWUVFERXdOU01UTXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUsKQW9JQkFRQ2xaM0NOMEZhQlpCVVhZYzI1QnRTdEdaQ01KbEEzbUJaamtsVGIyY3lFQlpQczArd0lHNkJnVVVOSQpmU3ZIU0phZXRDM2FuY2duTzFlaG42dncxZzdVRGpES2I1dXgwZGFrblRJK1dFNDFiMFZZYUhFWC9EN1lYWUtnCkw3SlJiTEFhWGJoWnpqVmx5SXVocnhBMy8rT2NYY0pKRnpUL2pDdUxqZkM4Y1N5VERCMEZ4THJIemFySlhuelIKeVFIM25BUDIvQXBkOU5wNzV0dDJRbkRyOUUwaTJnQjNiOWJKWHhmOTJuVXVwVmNNOXVwY3R1QnpwV2pQb1hUaQpkWUorRUovQjlhTHJBZWs0c1FwRXpOUENpZlZKTllJS05MTWM2WWpDUjA2Q0RnbzI4RWRQaXZFcEJIWGF6ZUdhClhQOWVuWmlWdXBwRDBFcWlGd1VCQkREVE1yT1BBZ01CQUFHamdmZ3dnZlV3RGdZRFZSMFBBUUgvQkFRREFnR0cKTUIwR0ExVWRKUVFXTUJRR0NDc0dBUVVGQndNQ0JnZ3JCZ0VGQlFjREFUQVNCZ05WSFJNQkFmOEVDREFHQVFILwpBZ0VBTUIwR0ExVWREZ1FXQkJUbnE1OFBMRE9nVTlOZVQzaklzb1FPTzlhU016QWZCZ05WSFNNRUdEQVdnQlI1CnRGbm1lN2JsNUFGemdBaUl5QnBZOXVtYmJqQXlCZ2dyQmdFRkJRY0JBUVFtTUNRd0lnWUlLd1lCQlFVSE1BS0cKRm1oMGRIQTZMeTk0TVM1cExteGxibU55TG05eVp5OHdFd1lEVlIwZ0JBd3dDakFJQmdabmdRd0JBZ0V3SndZRApWUjBmQkNBd0hqQWNvQnFnR0lZV2FIUjBjRG92TDNneExtTXViR1Z1WTNJdWIzSm5MekFOQmdrcWhraUc5dzBCCkFRc0ZBQU9DQWdFQVVUZFlVcUVpbXpXN1Rick95cExxQ2ZMN1ZPd1lmL1E3OU9INWNITENaZWdnZlFoRGNvbmwKazdLZ2g4YjB2aSsvWHVXdTdDTjhuL1VQZWcxdm8zRyt0YVhpcnJ5dHRoUWluQUhHd2MvVWRiT3lnSmE5enVCYwpWeXFvSDNDWFRYREluVCs4YStjM2FFVk1KMlN0K3BTbjRlZCtXa0RwOGlqc2lqdkV5RndFNDdodWxXMEx0empnCjlmT1Y1UG1yZy96eFdiUnVMK2swREJESEVKZW5uQ3NBZW43YzM1UG14N2pwbUovSHRnUmhjbnoweWpTQnZ5SXcKNkwxUUl1cGtDdjJTQk9EVC94REQzZ2ZRUXlLdjZyb1Y0RzJFaGZFeUFzV3Btb2p4akNVQ0dpeWc5N0Z2RHRtLwpOSzJMU2M5bHliS3hCNzNJMitQMkczQ2FXcHZ2cEFpSENWdTMwalc4R0N4S2RmaHNYdG5JeTJpbXNrUXFWWjJtCjBQbXhvYmIyOFR1Y3I3eEJLN0N0d3ZQcmI3OW9zN3UyWFAzTzVmOWIvSDY2R055UnJnbFJYbHJZakkxb0dZTC8KZjRJMW4vU2d1c2RhNld2QTZDMTkwa3hqVTE1WTEybUhVNCtCeHlSOWN4MmhoR1M5ZkFqTVpLSnNzMjhxeHZ6NgpBeHU0Q2FEbVJOWnBLL3BRclhGMTd5WENYa21FV2d2U09FWnk2WjlwY2JMSVZFR2NrVi9pVmVxMEFPbzJwa2c5CnA0UVJJeTB0SzJkaVJFTkxTRjJLeXNGd2JZNkIyNkJGZUZzM3Yxc1lWUmhGVzluTGtPclFWcG9yQ1MwS3labWYKd1ZEODlxU1RsbmN0TGNabklhdmpLc0tVdTFuQTFpVTB5WU1kWWVwS1I3bFdibndoZHgzZXdvaz0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=", + "key": "LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlKS0FJQkFBS0NBZ0VBN09ZNGlWbnFaMTRXT1hHRUREVmsvUEpsc2Z0MnNxZE0yaW5Gc3lKSzRaOTlCbWd2CjhRRUhaUGh2eG1jbWxDL3J5N2ttZmo1OThkSCtiL0kzL2MyT25wbWlWV0VBRXdNbFk2ZFU1WXV6dFphMzBuWU4KK1lORWRXbWNCWjBjZUhQUDdhcEFrNDBCbXBRWFgrazFSQ2dIQXF0ZU9EcTQ2bEdOaE9JOWhtbUw1bStSa3BjUQpFZ2VvaTNHS0daZkhUdm54SnYzckg4eGVZcE11Nk40RWhoU25BYjZnS1c3WEtjYmk1akRERFpZZEdIbnRaSk9yCkM5eU1NSWZzaDJqQ2lveWZCaDNYWUdPSExGVVpyT1l4aFZ2QXJXaVdiT0kxVlpNOTNlOHhTTmQwNXkralIzdFoKdXU0ckQ4c29FMDd1b0grRW8vQ1pjVkUrcGJzT1lPSS9XUnRCYUpqRjJQUS9rbU1SR3ZvZlYrWDl5djZDNjZTMwprUm1wc0FWOXZ1MHFBVmtnL1hMVlVQZFFVQ3REc1hSMW1nU0dmNzBHemR2ZDkxKzlqSlNvbmdWaUVjUmpiNVNrCkNYRUhQcUdUTzJSaTE0R3B1WW5Fc2JQNlRJWmp4Z3RIcjBBMGQ3S3NLeDd4SHNwanVnNjhoRDJvaHRqU0hERXgKbnNSNXFiMnpYT1BEOVpoclJMYUsyQ1M4V24wK0lMYVRDWk1xbS9rVDgxRjRYbWszekF6SEVGUndndmdDK1Z5cApndmtwVTFZKzlqUUt5Q1hXNGwyUmpBY1A5Z1VSQzdQdHlKeGU2c25jOE82Wk5YbDVDSlhsWTFuOWkzMjUyQUxQCmZLUGpqeGViRXVKVWFtVmxzRXBzVU1VUHJnNlFhcHRyT0h3K3VRa1orZVdaaHNWVG0xclBCRUNmanZVQ0F3RUEKQVFLQ0FnQVNCVGczUUlMN2JuV0gxSm44R01Ld0dCdEN4UE5rUnlRcU0wUEI2dUdoMUpFODM4ZUgwSEY0ellvcApJRGNYemlaa1pwYm1Rd2d2RVMrRzRmaSs0bmhQR2JZMnd1eHZ4YzArRGFCQVh0WmlnWTdGb0d2VE4xaEppeWxPClp3TmZxVVdmbVZRVXRVVHlOb0lwcmxKNk53WkRmbmdxRkZOMUpaTjdrSDhvSHBiQkJtc2ZLTVVVN2dhMDVzUGYKeXdNaS81SEh5c2hzTUk1Y2RzQTZnQXI5alF3Z0xwazkxWnZoNW1wam9zRnZvdVBmTlFVcElhK0E5VHVueEdzcQphTDVscmlrNW5LTUJ4c2hsUjZydWswc2dqeGh5eUhJcTRiRTNhMzRwQi9VcWlwTXVzOW02aWdoTEZ5dG81ZVlNClEvU1VlbWJEVnIzQldESUpCdGZpNkVyejB3WXdVbmpLZFIycUdJN1JNWDQveEtEN3ZxSnRqNU1JeUlRUTlDenQKYVgyMzlpYTVMS1I2MC93WER3L2dXN3ZPdGpMVm5qWGJPNG5PYUZzakpFc25YSUduWTd6TFBUbSt1cSs3SHlWSQpEWnlyanNRUnZ1UXJaQVNrOVNYQkNYa3NhMitnaVVreEpvUWVrbWJqZjM5M3RsQmViUXhBcmczaG90MFovdm1lCmVoazV2SkFkcHFNY2JJdzdZMFpKVEVjY1pPekRYTi80SWlXZkZIUFlEOTNldHlYZ0l0SUtuMlFnaVVxNnMxV1kKUHY1amVpNlpyU1JlM25NRC80SlFFNS9xS24rWm9jaEhRMWtyRUtvUWZlWWpoYnkxUGRVZUIwWWg3REs2VTE1ZAp6SjJqbnRMTmV2RGdpR3piWVBOaXdZWWhkakpZVDRiZUV2RUVmSFRtWDNvaXpFWDY4UUtDQVFFQTg0Y1MyQi9yCjExU2RDMDl5YTQ2bUtSYmFwaHovSmZKamtkYzdqZ1F4WmhKZTZ6Y0VyM1pRdUdjZkRBRXJvNW9CRjhMY3hkVmoKVk1NbTVLSzR5YlRxUENKQzd5RUlNR1NqZXRoUWpPM0NPT0wwdk8xZjlDaXlsOFpSTVJBMTFlNkpURExZNzk0Nwp6d1BDemlnTTVDYU9VV01HQkMvTUYwUHVMaGNTcTdsUmFxeU8za2ZUTndlZ0lSU2dTQ3VFNTVuOW1CNC83V25ZCkJuMmpuTzY0SGZuMThOWHVYWVlGSU01c3ZyL2tpai9pMkxrSjRyR1MvdVpDUHdLOFBWcUhPL1VkcGFxdHBqWUkKbzBqeXA1NmFQSmkwcG51V2sra242aWpOQWg1aElZMXh5TjFqa1RuaSt4dlVQWndrZmdtQ0xrQ0M1UVVZUFdyUApQdDdXNTZmbXc5QllNUUtDQVFFQStRZytBZTJaQU5rTEZRaU1valN2ekM3T2p2WDFHS2lHR0I5ZFNUQXdEM2g5ClFzbGUyK0JjK2tRV2R5OGw0Z0dZeExHZVhUNUJsdmtKV1N3b1BSTXVyUGxzdTNDTDNkTDU1cS9kMTZOeDM5SUEKVk5aSEgydXJlclF5R0wwNWh6dW1TQlo1QWZ4MFVZR1VuS1JmMTRVa2JRNUhBaFpEajIwNW8wV3dKejArYkhwMwpUN1JwdkhiMzRQWUJXSXZRbmdBQ3pXV2xoUjB2M2hDRWY5R2psVDJNaXYrNmFySEFjOEc0T3lBa1FzTUFmUHdxCmxCeWJBUFExbytxNExBMURzUi9JeUZWSVBwaDdnTDdCL0Yya0hBOU5OREpXRzVZbCtvcExRR3QrN2NieU9GbUEKdmlqa1JGUXJyaXozMk02K3NsZi95cjhiUWVsTEhGZ1lxT1JFWU11MkJRS0NBUUVBOGtobVZTT2REZ1Nlb2N3TworRGRaMVBOcDRXNWo0cXIrcVBCTHpnVVo2SVZLYmhXMDBhU1N0b1BSL2EyRWJ5WWZCRGJZVXZMeitqYVdFVTViCkxrS1I3L1hlUmU3RktQQlhQVGJOSFFqRy9MVy82OTcyWWdIRGZRRFBjbExBWFBFUEpBSktsb3F4VWtwWm02VjQKL2R2bUo4NnZBNmRTRTZ0LzRkY091azZMVStnTjA5UDlyWGdtdGdMQlhFdi8xRFArZTBOTk1yVGxPYi94OFlZSApJN3UyRmoraEFPYi9YeDVBVHA2M2oxdjBJczRscWFZbHF2Z0czSTJxSGhoZEJ5ZmNzUi9YMTg5V1ZLMlV6WE1iCjNFSEpLUUU0VkR2WmZEdlBpdFlTcU1FQ2ZXYlZVbjBXOStFK0RYVzFVTGZCRHFjY0V5STRkWkk0VWtKOTZNZkEKN1B2eFlRS0NBUUJ0SmNPbnJLK0d3NW9yMmRkcHNKWHNkQWRzZVRpM1dnV0x4Uk5wNUlqci91OUh1bUt0RkNVcwpPM050UVdqbEtiWC9YNm45VERBTEw1TjlWZkU4ODQ5ZG1PU2pNcXpheUlGbkxtV1pBYllEVjFOMTI0VElyTFEzCno0cTFkUm9sdjJzZDVWdWNGejRVQ3l0TGpHL0ZVa0dvMnIwY21RMTdhMi83czZ1RlJ6NTQ1U1F0OXZEdy9XT2YKWWJNdFQvcGJoYjIwc0h4ZlgyOS9jTlhoLzh3bXVSZEVSTms3c2pTYmg2aHJvYWJDN0J6bXFzOHVvMnI4ZkF5VwpqMld4U1E4R0x0d2RrZU5jTEJEVldNWkZDZlhIcHAwNzUyUCtLMHp5Qm5MOUJTQllydjJ5M09la2NOKzdZdmpTCkdqdDI5d1oxdkVRTVpMNVpvUnFlamE0aE9Bc1FNYmpSQW9JQkFIZ2J5R3VCdmZLbGlDa205ckVHOFhJb1M1Y3oKY1ZaR09nZkpNUEljNExUelN1VktKcThIbmJQdFJpNVNIcUc1T3Z0V1ZzL21YTmgzeDZTTHdEMWRpbEpxVnlZaQpwMTIzMXdCVzBveTBFWXZtV3l3U2xIbmxXNEdrRndtNzBoYTRjZjJPOXB1dHF0bUtkb3F4RFQzcS9NZS9QVFFKClNlc2NIN1JXeTVVSWNUQXZ0Nnk4Ri85dHc0QWRXVlZTT2xGUDFleE1mdGVjdm5IUDFOWDZFZU94WG5TYzlFN08Kd1NHeHJ1eVl3dndXaVZvamdFZWNHM1VlUGxpYmlBS29MR3Q3bDVwN0t4MXdXbmlpd0hRNUFtQUl4R1lkUWZVbwpUUEdXcG1SQnBPNUYxdWNLUDVZMEQ3Z3VFZTdHTUdzSC9IQzduZU5HTjJ2VHdPOFRRb3orZVhDTDl3cz0KLS0tLS1FTkQgUlNBIFBSSVZBVEUgS0VZLS0tLS0K", + "Store": "default" + } + ] + } +} \ No newline at end of file