From 47bf7b2aad5e2e3a8fc0f9e9918de76401acdbe7 Mon Sep 17 00:00:00 2001
From: anon <anon@anon.anon>
Date: Mon, 1 Jul 2024 23:40:15 +0200
Subject: [PATCH] --

---
 miscellaneous/game_theory/.gitignore          |   4 +
 miscellaneous/game_theory/.notgit/HEAD        |   1 +
 miscellaneous/game_theory/.notgit/config      |  11 ++
 miscellaneous/game_theory/.notgit/description |   1 +
 miscellaneous/game_theory/.notgit/gitui       |  15 ++
 .../.notgit/hooks/applypatch-msg.sample       |  15 ++
 .../.notgit/hooks/commit-msg.sample           |  24 +++
 .../.notgit/hooks/fsmonitor-watchman.sample   | 174 ++++++++++++++++++
 .../.notgit/hooks/post-update.sample          |   8 +
 .../.notgit/hooks/pre-applypatch.sample       |  14 ++
 .../.notgit/hooks/pre-commit.sample           |  49 +++++
 .../.notgit/hooks/pre-merge-commit.sample     |  13 ++
 .../game_theory/.notgit/hooks/pre-push.sample |  53 ++++++
 .../.notgit/hooks/pre-rebase.sample           | 169 +++++++++++++++++
 .../.notgit/hooks/pre-receive.sample          |  24 +++
 .../.notgit/hooks/prepare-commit-msg.sample   |  42 +++++
 .../.notgit/hooks/push-to-checkout.sample     |  78 ++++++++
 .../.notgit/hooks/sendemail-validate.sample   |  77 ++++++++
 .../game_theory/.notgit/hooks/update.sample   | 128 +++++++++++++
 miscellaneous/game_theory/.notgit/index       | Bin 0 -> 504 bytes
 .../game_theory/.notgit/info/exclude          |   6 +
 miscellaneous/game_theory/.notgit/logs/HEAD   |   4 +
 .../.notgit/logs/refs/heads/master            |   4 +
 .../.notgit/logs/refs/remotes/origin/master   |   2 +
 .../0c/a8dbb67ae88ba0a44e5e0b9f4a32e0f3eb7605 | Bin 0 -> 154 bytes
 .../0d/b64ca2f5e06b8074c2dd445cbbd6986cb9e337 | Bin 0 -> 150 bytes
 .../36/2d7f214d0f1067e4e50d83d3fef9604c6732df | Bin 0 -> 143 bytes
 .../44/8a0d2d5103b3466cb42b96ac7dd8b490434678 |   3 +
 .../45/507b846a445ae689b1ec138423adc92eaa9aa4 | Bin 0 -> 648 bytes
 .../4a/766ad60b3d3fef52e98c9bf3207d7ffd576a50 | Bin 0 -> 233 bytes
 .../52/08bd7a9e640ad49d0bb391f08b77244fb5f06e |   2 +
 .../5f/30466c883f7e24c936302527644956a384a672 | Bin 0 -> 121 bytes
 .../76/3e3cf4711a67558edcc1acda99bd6707f300ae | Bin 0 -> 58 bytes
 .../7e/67616d6f9db0ea7997d343859bf09b53589e4b |   1 +
 .../82/e79c486584799299e118dc5c46fbaa6360ca62 | Bin 0 -> 118 bytes
 .../91/90a0f97e1543b0b315f8100c08880dfdb5a9d8 | Bin 0 -> 668 bytes
 .../a6/06ce514fd748090259e07dc4f166668ac288c1 | Bin 0 -> 812 bytes
 .../bb/900a1b32d47163430c94918816646d5ed2a61f | Bin 0 -> 121 bytes
 .../bc/0f30b49248d80625d9f61501e5004bec1443e8 | Bin 0 -> 121 bytes
 .../d3/71ebb71667dea1dd1b63a8b249eef28ae3d417 |   2 +
 .../d4/0fb7950aa36cc0d0d59d5afc53624390fde28e | Bin 0 -> 76 bytes
 .../df/30b6acd40fc54f39642183c4bc3750d237245b | Bin 0 -> 118 bytes
 .../e2/6d6bd5d8e9164c37a781b2157a41d533e8d3cf | Bin 0 -> 229 bytes
 .../e3/d89504170179bdfc7d44b8dc4a6691609be854 | Bin 0 -> 663 bytes
 .../fc/f11c479e77f85d051a1738d0b6a7a2c447ddba | Bin 0 -> 118 bytes
 .../game_theory/.notgit/refs/heads/master     |   1 +
 .../.notgit/refs/remotes/origin/master        |   1 +
 miscellaneous/game_theory/Makefile            |   5 +
 miscellaneous/game_theory/README.md           |  27 +++
 miscellaneous/game_theory/source/Anon.hpp     |  29 +++
 miscellaneous/game_theory/source/Anon2.hpp    |  27 +++
 miscellaneous/game_theory/source/Doomer.hpp   |  20 ++
 miscellaneous/game_theory/source/Player.hpp   |  31 ++++
 .../game_theory/source/Profiteer.hpp          |  15 ++
 .../game_theory/source/RandomPlayer.hpp       |  17 ++
 miscellaneous/game_theory/source/Roomer.hpp   |  16 ++
 miscellaneous/game_theory/source/Segv.hpp     |  17 ++
 miscellaneous/game_theory/source/main.cpp     |  86 +++++++++
 58 files changed, 1216 insertions(+)
 create mode 100644 miscellaneous/game_theory/.gitignore
 create mode 100644 miscellaneous/game_theory/.notgit/HEAD
 create mode 100644 miscellaneous/game_theory/.notgit/config
 create mode 100644 miscellaneous/game_theory/.notgit/description
 create mode 100644 miscellaneous/game_theory/.notgit/gitui
 create mode 100755 miscellaneous/game_theory/.notgit/hooks/applypatch-msg.sample
 create mode 100755 miscellaneous/game_theory/.notgit/hooks/commit-msg.sample
 create mode 100755 miscellaneous/game_theory/.notgit/hooks/fsmonitor-watchman.sample
 create mode 100755 miscellaneous/game_theory/.notgit/hooks/post-update.sample
 create mode 100755 miscellaneous/game_theory/.notgit/hooks/pre-applypatch.sample
 create mode 100755 miscellaneous/game_theory/.notgit/hooks/pre-commit.sample
 create mode 100755 miscellaneous/game_theory/.notgit/hooks/pre-merge-commit.sample
 create mode 100755 miscellaneous/game_theory/.notgit/hooks/pre-push.sample
 create mode 100755 miscellaneous/game_theory/.notgit/hooks/pre-rebase.sample
 create mode 100755 miscellaneous/game_theory/.notgit/hooks/pre-receive.sample
 create mode 100755 miscellaneous/game_theory/.notgit/hooks/prepare-commit-msg.sample
 create mode 100755 miscellaneous/game_theory/.notgit/hooks/push-to-checkout.sample
 create mode 100755 miscellaneous/game_theory/.notgit/hooks/sendemail-validate.sample
 create mode 100755 miscellaneous/game_theory/.notgit/hooks/update.sample
 create mode 100644 miscellaneous/game_theory/.notgit/index
 create mode 100644 miscellaneous/game_theory/.notgit/info/exclude
 create mode 100644 miscellaneous/game_theory/.notgit/logs/HEAD
 create mode 100644 miscellaneous/game_theory/.notgit/logs/refs/heads/master
 create mode 100644 miscellaneous/game_theory/.notgit/logs/refs/remotes/origin/master
 create mode 100644 miscellaneous/game_theory/.notgit/objects/0c/a8dbb67ae88ba0a44e5e0b9f4a32e0f3eb7605
 create mode 100644 miscellaneous/game_theory/.notgit/objects/0d/b64ca2f5e06b8074c2dd445cbbd6986cb9e337
 create mode 100644 miscellaneous/game_theory/.notgit/objects/36/2d7f214d0f1067e4e50d83d3fef9604c6732df
 create mode 100644 miscellaneous/game_theory/.notgit/objects/44/8a0d2d5103b3466cb42b96ac7dd8b490434678
 create mode 100644 miscellaneous/game_theory/.notgit/objects/45/507b846a445ae689b1ec138423adc92eaa9aa4
 create mode 100644 miscellaneous/game_theory/.notgit/objects/4a/766ad60b3d3fef52e98c9bf3207d7ffd576a50
 create mode 100644 miscellaneous/game_theory/.notgit/objects/52/08bd7a9e640ad49d0bb391f08b77244fb5f06e
 create mode 100644 miscellaneous/game_theory/.notgit/objects/5f/30466c883f7e24c936302527644956a384a672
 create mode 100644 miscellaneous/game_theory/.notgit/objects/76/3e3cf4711a67558edcc1acda99bd6707f300ae
 create mode 100644 miscellaneous/game_theory/.notgit/objects/7e/67616d6f9db0ea7997d343859bf09b53589e4b
 create mode 100644 miscellaneous/game_theory/.notgit/objects/82/e79c486584799299e118dc5c46fbaa6360ca62
 create mode 100644 miscellaneous/game_theory/.notgit/objects/91/90a0f97e1543b0b315f8100c08880dfdb5a9d8
 create mode 100644 miscellaneous/game_theory/.notgit/objects/a6/06ce514fd748090259e07dc4f166668ac288c1
 create mode 100644 miscellaneous/game_theory/.notgit/objects/bb/900a1b32d47163430c94918816646d5ed2a61f
 create mode 100644 miscellaneous/game_theory/.notgit/objects/bc/0f30b49248d80625d9f61501e5004bec1443e8
 create mode 100644 miscellaneous/game_theory/.notgit/objects/d3/71ebb71667dea1dd1b63a8b249eef28ae3d417
 create mode 100644 miscellaneous/game_theory/.notgit/objects/d4/0fb7950aa36cc0d0d59d5afc53624390fde28e
 create mode 100644 miscellaneous/game_theory/.notgit/objects/df/30b6acd40fc54f39642183c4bc3750d237245b
 create mode 100644 miscellaneous/game_theory/.notgit/objects/e2/6d6bd5d8e9164c37a781b2157a41d533e8d3cf
 create mode 100644 miscellaneous/game_theory/.notgit/objects/e3/d89504170179bdfc7d44b8dc4a6691609be854
 create mode 100644 miscellaneous/game_theory/.notgit/objects/fc/f11c479e77f85d051a1738d0b6a7a2c447ddba
 create mode 100644 miscellaneous/game_theory/.notgit/refs/heads/master
 create mode 100644 miscellaneous/game_theory/.notgit/refs/remotes/origin/master
 create mode 100644 miscellaneous/game_theory/Makefile
 create mode 100644 miscellaneous/game_theory/README.md
 create mode 100644 miscellaneous/game_theory/source/Anon.hpp
 create mode 100644 miscellaneous/game_theory/source/Anon2.hpp
 create mode 100644 miscellaneous/game_theory/source/Doomer.hpp
 create mode 100644 miscellaneous/game_theory/source/Player.hpp
 create mode 100644 miscellaneous/game_theory/source/Profiteer.hpp
 create mode 100644 miscellaneous/game_theory/source/RandomPlayer.hpp
 create mode 100644 miscellaneous/game_theory/source/Roomer.hpp
 create mode 100644 miscellaneous/game_theory/source/Segv.hpp
 create mode 100644 miscellaneous/game_theory/source/main.cpp

diff --git a/miscellaneous/game_theory/.gitignore b/miscellaneous/game_theory/.gitignore
new file mode 100644
index 0000000..763e3cf
--- /dev/null
+++ b/miscellaneous/game_theory/.gitignore
@@ -0,0 +1,4 @@
+*.out
+*.o
+.gdb_history
+game_theory_tournament
diff --git a/miscellaneous/game_theory/.notgit/HEAD b/miscellaneous/game_theory/.notgit/HEAD
new file mode 100644
index 0000000..cb089cd
--- /dev/null
+++ b/miscellaneous/game_theory/.notgit/HEAD
@@ -0,0 +1 @@
+ref: refs/heads/master
diff --git a/miscellaneous/game_theory/.notgit/config b/miscellaneous/game_theory/.notgit/config
new file mode 100644
index 0000000..12ce00a
--- /dev/null
+++ b/miscellaneous/game_theory/.notgit/config
@@ -0,0 +1,11 @@
+[core]
+	repositoryformatversion = 0
+	filemode = true
+	bare = false
+	logallrefupdates = true
+[remote "origin"]
+	url = https://git.lain.church/anon/game_theory_tournament.git
+	fetch = +refs/heads/*:refs/remotes/origin/*
+[branch "master"]
+	remote = origin
+	merge = refs/heads/master
diff --git a/miscellaneous/game_theory/.notgit/description b/miscellaneous/game_theory/.notgit/description
new file mode 100644
index 0000000..498b267
--- /dev/null
+++ b/miscellaneous/game_theory/.notgit/description
@@ -0,0 +1 @@
+Unnamed repository; edit this file 'description' to name the repository.
diff --git a/miscellaneous/game_theory/.notgit/gitui b/miscellaneous/game_theory/.notgit/gitui
new file mode 100644
index 0000000..0920a74
--- /dev/null
+++ b/miscellaneous/game_theory/.notgit/gitui
@@ -0,0 +1,15 @@
+(
+    tab: 0,
+    diff: (
+        ignore_whitespace: false,
+        context: 3,
+        interhunk_lines: 0,
+    ),
+    status_show_untracked: None,
+    commit_msgs: [
+        "init",
+        "doomer observation",
+        "helpful comments",
+        "+readme",
+    ],
+)
\ No newline at end of file
diff --git a/miscellaneous/game_theory/.notgit/hooks/applypatch-msg.sample b/miscellaneous/game_theory/.notgit/hooks/applypatch-msg.sample
new file mode 100755
index 0000000..a5d7b84
--- /dev/null
+++ b/miscellaneous/game_theory/.notgit/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/miscellaneous/game_theory/.notgit/hooks/commit-msg.sample b/miscellaneous/game_theory/.notgit/hooks/commit-msg.sample
new file mode 100755
index 0000000..b58d118
--- /dev/null
+++ b/miscellaneous/game_theory/.notgit/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/miscellaneous/game_theory/.notgit/hooks/fsmonitor-watchman.sample b/miscellaneous/game_theory/.notgit/hooks/fsmonitor-watchman.sample
new file mode 100755
index 0000000..23e856f
--- /dev/null
+++ b/miscellaneous/game_theory/.notgit/hooks/fsmonitor-watchman.sample
@@ -0,0 +1,174 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+use IPC::Open2;
+
+# An example hook script to integrate Watchman
+# (https://facebook.github.io/watchman/) with git to speed up detecting
+# new and modified files.
+#
+# The hook is passed a version (currently 2) and last update token
+# formatted as a string and outputs to stdout a new update token and
+# all files that have been modified since the update token. Paths must
+# be relative to the root of the working tree and separated by a single NUL.
+#
+# To enable this hook, rename this file to "query-watchman" and set
+# 'git config core.fsmonitor .git/hooks/query-watchman'
+#
+my ($version, $last_update_token) = @ARGV;
+
+# Uncomment for debugging
+# print STDERR "$0 $version $last_update_token\n";
+
+# Check the hook interface version
+if ($version ne 2) {
+	die "Unsupported query-fsmonitor hook version '$version'.\n" .
+	    "Falling back to scanning...\n";
+}
+
+my $git_work_tree = get_working_dir();
+
+my $retry = 1;
+
+my $json_pkg;
+eval {
+	require JSON::XS;
+	$json_pkg = "JSON::XS";
+	1;
+} or do {
+	require JSON::PP;
+	$json_pkg = "JSON::PP";
+};
+
+launch_watchman();
+
+sub launch_watchman {
+	my $o = watchman_query();
+	if (is_work_tree_watched($o)) {
+		output_result($o->{clock}, @{$o->{files}});
+	}
+}
+
+sub output_result {
+	my ($clockid, @files) = @_;
+
+	# Uncomment for debugging watchman output
+	# open (my $fh, ">", ".git/watchman-output.out");
+	# binmode $fh, ":utf8";
+	# print $fh "$clockid\n@files\n";
+	# close $fh;
+
+	binmode STDOUT, ":utf8";
+	print $clockid;
+	print "\0";
+	local $, = "\0";
+	print @files;
+}
+
+sub watchman_clock {
+	my $response = qx/watchman clock "$git_work_tree"/;
+	die "Failed to get clock id on '$git_work_tree'.\n" .
+		"Falling back to scanning...\n" if $? != 0;
+
+	return $json_pkg->new->utf8->decode($response);
+}
+
+sub watchman_query {
+	my $pid = open2(\*CHLD_OUT, \*CHLD_IN, 'watchman -j --no-pretty')
+	or die "open2() failed: $!\n" .
+	"Falling back to scanning...\n";
+
+	# In the query expression below we're asking for names of files that
+	# changed since $last_update_token but not from the .git folder.
+	#
+	# To accomplish this, we're using the "since" generator to use the
+	# recency index to select candidate nodes and "fields" to limit the
+	# output to file names only. Then we're using the "expression" term to
+	# further constrain the results.
+	my $last_update_line = "";
+	if (substr($last_update_token, 0, 1) eq "c") {
+		$last_update_token = "\"$last_update_token\"";
+		$last_update_line = qq[\n"since": $last_update_token,];
+	}
+	my $query = <<"	END";
+		["query", "$git_work_tree", {$last_update_line
+			"fields": ["name"],
+			"expression": ["not", ["dirname", ".git"]]
+		}]
+	END
+
+	# Uncomment for debugging the watchman query
+	# open (my $fh, ">", ".git/watchman-query.json");
+	# print $fh $query;
+	# close $fh;
+
+	print CHLD_IN $query;
+	close CHLD_IN;
+	my $response = do {local $/; <CHLD_OUT>};
+
+	# Uncomment for debugging the watch response
+	# open ($fh, ">", ".git/watchman-response.json");
+	# print $fh $response;
+	# close $fh;
+
+	die "Watchman: command returned no output.\n" .
+	"Falling back to scanning...\n" if $response eq "";
+	die "Watchman: command returned invalid output: $response\n" .
+	"Falling back to scanning...\n" unless $response =~ /^\{/;
+
+	return $json_pkg->new->utf8->decode($response);
+}
+
+sub is_work_tree_watched {
+	my ($output) = @_;
+	my $error = $output->{error};
+	if ($retry > 0 and $error and $error =~ m/unable to resolve root .* directory (.*) is not watched/) {
+		$retry--;
+		my $response = qx/watchman watch "$git_work_tree"/;
+		die "Failed to make watchman watch '$git_work_tree'.\n" .
+		    "Falling back to scanning...\n" if $? != 0;
+		$output = $json_pkg->new->utf8->decode($response);
+		$error = $output->{error};
+		die "Watchman: $error.\n" .
+		"Falling back to scanning...\n" if $error;
+
+		# Uncomment for debugging watchman output
+		# open (my $fh, ">", ".git/watchman-output.out");
+		# close $fh;
+
+		# Watchman will always return all files on the first query so
+		# return the fast "everything is dirty" flag to git and do the
+		# Watchman query just to get it over with now so we won't pay
+		# the cost in git to look up each individual file.
+		my $o = watchman_clock();
+		$error = $output->{error};
+
+		die "Watchman: $error.\n" .
+		"Falling back to scanning...\n" if $error;
+
+		output_result($o->{clock}, ("/"));
+		$last_update_token = $o->{clock};
+
+		eval { launch_watchman() };
+		return 0;
+	}
+
+	die "Watchman: $error.\n" .
+	"Falling back to scanning...\n" if $error;
+
+	return 1;
+}
+
+sub get_working_dir {
+	my $working_dir;
+	if ($^O =~ 'msys' || $^O =~ 'cygwin') {
+		$working_dir = Win32::GetCwd();
+		$working_dir =~ tr/\\/\//;
+	} else {
+		require Cwd;
+		$working_dir = Cwd::cwd();
+	}
+
+	return $working_dir;
+}
diff --git a/miscellaneous/game_theory/.notgit/hooks/post-update.sample b/miscellaneous/game_theory/.notgit/hooks/post-update.sample
new file mode 100755
index 0000000..ec17ec1
--- /dev/null
+++ b/miscellaneous/game_theory/.notgit/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/miscellaneous/game_theory/.notgit/hooks/pre-applypatch.sample b/miscellaneous/game_theory/.notgit/hooks/pre-applypatch.sample
new file mode 100755
index 0000000..4142082
--- /dev/null
+++ b/miscellaneous/game_theory/.notgit/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/miscellaneous/game_theory/.notgit/hooks/pre-commit.sample b/miscellaneous/game_theory/.notgit/hooks/pre-commit.sample
new file mode 100755
index 0000000..29ed5ee
--- /dev/null
+++ b/miscellaneous/game_theory/.notgit/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/miscellaneous/game_theory/.notgit/hooks/pre-merge-commit.sample b/miscellaneous/game_theory/.notgit/hooks/pre-merge-commit.sample
new file mode 100755
index 0000000..399eab1
--- /dev/null
+++ b/miscellaneous/game_theory/.notgit/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/miscellaneous/game_theory/.notgit/hooks/pre-push.sample b/miscellaneous/game_theory/.notgit/hooks/pre-push.sample
new file mode 100755
index 0000000..4ce688d
--- /dev/null
+++ b/miscellaneous/game_theory/.notgit/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:
+#
+#   <local ref> <local oid> <remote ref> <remote oid>
+#
+# 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 </dev/null | tr '[0-9a-f]' '0')
+
+while read local_ref local_oid remote_ref remote_oid
+do
+	if test "$local_oid" = "$zero"
+	then
+		# Handle delete
+		:
+	else
+		if test "$remote_oid" = "$zero"
+		then
+			# New branch, examine all commits
+			range="$local_oid"
+		else
+			# Update to existing branch, examine new commits
+			range="$remote_oid..$local_oid"
+		fi
+
+		# Check for WIP commit
+		commit=$(git rev-list -n 1 --grep '^WIP' "$range")
+		if test -n "$commit"
+		then
+			echo >&2 "Found WIP commit in $local_ref, not pushing"
+			exit 1
+		fi
+	fi
+done
+
+exit 0
diff --git a/miscellaneous/game_theory/.notgit/hooks/pre-rebase.sample b/miscellaneous/game_theory/.notgit/hooks/pre-rebase.sample
new file mode 100755
index 0000000..6cbef5c
--- /dev/null
+++ b/miscellaneous/game_theory/.notgit/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/miscellaneous/game_theory/.notgit/hooks/pre-receive.sample b/miscellaneous/game_theory/.notgit/hooks/pre-receive.sample
new file mode 100755
index 0000000..a1fd29e
--- /dev/null
+++ b/miscellaneous/game_theory/.notgit/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/miscellaneous/game_theory/.notgit/hooks/prepare-commit-msg.sample b/miscellaneous/game_theory/.notgit/hooks/prepare-commit-msg.sample
new file mode 100755
index 0000000..10fa14c
--- /dev/null
+++ b/miscellaneous/game_theory/.notgit/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/miscellaneous/game_theory/.notgit/hooks/push-to-checkout.sample b/miscellaneous/game_theory/.notgit/hooks/push-to-checkout.sample
new file mode 100755
index 0000000..af5a0c0
--- /dev/null
+++ b/miscellaneous/game_theory/.notgit/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 </dev/null)
+fi
+
+if ! git diff-index --quiet --cached --ignore-submodules $head --
+then
+	die "Working directory has staged changes"
+fi
+
+if ! git read-tree -u -m "$commit"
+then
+	die "Could not update working tree to new HEAD"
+fi
diff --git a/miscellaneous/game_theory/.notgit/hooks/sendemail-validate.sample b/miscellaneous/game_theory/.notgit/hooks/sendemail-validate.sample
new file mode 100755
index 0000000..640bcf8
--- /dev/null
+++ b/miscellaneous/game_theory/.notgit/hooks/sendemail-validate.sample
@@ -0,0 +1,77 @@
+#!/bin/sh
+
+# An example hook script to validate a patch (and/or patch series) before
+# sending it via email.
+#
+# The hook should exit with non-zero status after issuing an appropriate
+# message if it wants to prevent the email(s) from being sent.
+#
+# To enable this hook, rename this file to "sendemail-validate".
+#
+# By default, it will only check that the patch(es) can be applied on top of
+# the default upstream branch without conflicts in a secondary worktree. After
+# validation (successful or not) of the last patch of a series, the worktree
+# will be deleted.
+#
+# The following config variables can be set to change the default remote and
+# remote ref that are used to apply the patches against:
+#
+#   sendemail.validateRemote (default: origin)
+#   sendemail.validateRemoteRef (default: HEAD)
+#
+# Replace the TODO placeholders with appropriate checks according to your
+# needs.
+
+validate_cover_letter () {
+	file="$1"
+	# TODO: Replace with appropriate checks (e.g. spell checking).
+	true
+}
+
+validate_patch () {
+	file="$1"
+	# Ensure that the patch applies without conflicts.
+	git am -3 "$file" || return
+	# TODO: Replace with appropriate checks for this patch
+	# (e.g. checkpatch.pl).
+	true
+}
+
+validate_series () {
+	# TODO: Replace with appropriate checks for the whole series
+	# (e.g. quick build, coding style checks, etc.).
+	true
+}
+
+# main -------------------------------------------------------------------------
+
+if test "$GIT_SENDEMAIL_FILE_COUNTER" = 1
+then
+	remote=$(git config --default origin --get sendemail.validateRemote) &&
+	ref=$(git config --default HEAD --get sendemail.validateRemoteRef) &&
+	worktree=$(mktemp --tmpdir -d sendemail-validate.XXXXXXX) &&
+	git worktree add -fd --checkout "$worktree" "refs/remotes/$remote/$ref" &&
+	git config --replace-all sendemail.validateWorktree "$worktree"
+else
+	worktree=$(git config --get sendemail.validateWorktree)
+fi || {
+	echo "sendemail-validate: error: failed to prepare worktree" >&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/miscellaneous/game_theory/.notgit/hooks/update.sample b/miscellaneous/game_theory/.notgit/hooks/update.sample
new file mode 100755
index 0000000..c4d426b
--- /dev/null
+++ b/miscellaneous/game_theory/.notgit/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 <ref> <oldrev> <newrev>)" >&2
+	exit 1
+fi
+
+if [ -z "$refname" -o -z "$oldrev" -o -z "$newrev" ]; then
+	echo "usage: $0 <ref> <oldrev> <newrev>" >&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 </dev/null | tr '[0-9a-f]' '0')
+if [ "$newrev" = "$zero" ]; then
+	newrev_type=delete
+else
+	newrev_type=$(git cat-file -t $newrev)
+fi
+
+case "$refname","$newrev_type" in
+	refs/tags/*,commit)
+		# un-annotated tag
+		short_refname=${refname##refs/tags/}
+		if [ "$allowunannotated" != "true" ]; then
+			echo "*** The un-annotated tag, $short_refname, is not allowed in this repository" >&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/miscellaneous/game_theory/.notgit/index b/miscellaneous/game_theory/.notgit/index
new file mode 100644
index 0000000000000000000000000000000000000000..9283802a875d642301df822f9b9ac6ca58f9f750
GIT binary patch
literal 504
zcmZ?q402{*U|<4bwzRs7pA9B3oQ2UqF$RW|4F(JhjY}99m|s9JgI<}P&6h%{^w7RL
z2iM%1xi_8tGs8LtF1_^3lFanH{GwE_J|F=!=OkO#j2JLo9VQDFPuU=aW?tkK{_Rt_
z7UvweaCL6fpWr0t34b5;F>v@MW~ZiQ<^WAgtGBe#ei%6&OkWZYhnlkz)g0!Db?J$@
z`ExhCs+@k=xpnr3*})O>ycsxyTpe9}UG;KPfaVxmaXQAI0MkaY9Z+*tpqaz((#5MA
z$h_GtXN&f<HMKXkOmKFqU=S?MFD*(=)ep!?tV}J^%P1%S`ERNIu42oyy7O<uqZs0$
z=82)2#~A5VmUWHW*8Y9a%bwYv6>97MhGzvZh(pZ_O3X{i&qXp7<X;OJ9iQxaFm0>p
z05umFe#r5_zI++mxj_Hx9-K^(4{DEmOiSxJ)Nzo3A8KxHVrHIRGSHO_4C)tTRIVMk
TDUoO3zG=Nj&)!AL4_pTT#5t>!

literal 0
HcmV?d00001

diff --git a/miscellaneous/game_theory/.notgit/info/exclude b/miscellaneous/game_theory/.notgit/info/exclude
new file mode 100644
index 0000000..a5196d1
--- /dev/null
+++ b/miscellaneous/game_theory/.notgit/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/miscellaneous/game_theory/.notgit/logs/HEAD b/miscellaneous/game_theory/.notgit/logs/HEAD
new file mode 100644
index 0000000..a027306
--- /dev/null
+++ b/miscellaneous/game_theory/.notgit/logs/HEAD
@@ -0,0 +1,4 @@
+0000000000000000000000000000000000000000 d371ebb71667dea1dd1b63a8b249eef28ae3d417 anon <anon@anon.anon> 1719587337 +0200	commit (initial): init
+d371ebb71667dea1dd1b63a8b249eef28ae3d417 0db64ca2f5e06b8074c2dd445cbbd6986cb9e337 anon <anon@anon.anon> 1719613775 +0200	commit: doomer observation
+0db64ca2f5e06b8074c2dd445cbbd6986cb9e337 5208bd7a9e640ad49d0bb391f08b77244fb5f06e anon <anon@anon.anon> 1719613787 +0200	commit: helpful comments
+5208bd7a9e640ad49d0bb391f08b77244fb5f06e 362d7f214d0f1067e4e50d83d3fef9604c6732df anon <anon@anon.anon> 1719613793 +0200	commit: +readme
diff --git a/miscellaneous/game_theory/.notgit/logs/refs/heads/master b/miscellaneous/game_theory/.notgit/logs/refs/heads/master
new file mode 100644
index 0000000..a027306
--- /dev/null
+++ b/miscellaneous/game_theory/.notgit/logs/refs/heads/master
@@ -0,0 +1,4 @@
+0000000000000000000000000000000000000000 d371ebb71667dea1dd1b63a8b249eef28ae3d417 anon <anon@anon.anon> 1719587337 +0200	commit (initial): init
+d371ebb71667dea1dd1b63a8b249eef28ae3d417 0db64ca2f5e06b8074c2dd445cbbd6986cb9e337 anon <anon@anon.anon> 1719613775 +0200	commit: doomer observation
+0db64ca2f5e06b8074c2dd445cbbd6986cb9e337 5208bd7a9e640ad49d0bb391f08b77244fb5f06e anon <anon@anon.anon> 1719613787 +0200	commit: helpful comments
+5208bd7a9e640ad49d0bb391f08b77244fb5f06e 362d7f214d0f1067e4e50d83d3fef9604c6732df anon <anon@anon.anon> 1719613793 +0200	commit: +readme
diff --git a/miscellaneous/game_theory/.notgit/logs/refs/remotes/origin/master b/miscellaneous/game_theory/.notgit/logs/refs/remotes/origin/master
new file mode 100644
index 0000000..1e2e31c
--- /dev/null
+++ b/miscellaneous/game_theory/.notgit/logs/refs/remotes/origin/master
@@ -0,0 +1,2 @@
+0000000000000000000000000000000000000000 d371ebb71667dea1dd1b63a8b249eef28ae3d417 anon <anon@anon.anon> 1719587655 +0200	update by push
+d371ebb71667dea1dd1b63a8b249eef28ae3d417 362d7f214d0f1067e4e50d83d3fef9604c6732df anon <anon@anon.anon> 1719613807 +0200	update by push
diff --git a/miscellaneous/game_theory/.notgit/objects/0c/a8dbb67ae88ba0a44e5e0b9f4a32e0f3eb7605 b/miscellaneous/game_theory/.notgit/objects/0c/a8dbb67ae88ba0a44e5e0b9f4a32e0f3eb7605
new file mode 100644
index 0000000000000000000000000000000000000000..b1d9ae9ce3df2b2e052896fcac547ca281fea481
GIT binary patch
literal 154
zcmV;L0A>Gp0V^p=O;s>7F<~$?FfcPQQP4}zEXhpI%P&f0D6_NqQYe)k+IQ#Rnp-pX
zrn7%$SO-<*o0y%NmYI{vaD{*SRIbH22QFNl8}%nR$$7%xM}1H=L9UK2zOH(?DGYV#
ziMjc6H@vExe%ZNo_J`TQ5%auF41hqPIKQ+gIhEnhM;Z5d<v(IsrNk{RY+JtQi2L1L
I0J?TQ>Vc3;+yDRo

literal 0
HcmV?d00001

diff --git a/miscellaneous/game_theory/.notgit/objects/0d/b64ca2f5e06b8074c2dd445cbbd6986cb9e337 b/miscellaneous/game_theory/.notgit/objects/0d/b64ca2f5e06b8074c2dd445cbbd6986cb9e337
new file mode 100644
index 0000000000000000000000000000000000000000..0690a26aae9d49fdc341f6751b7d18d3f2cfd40e
GIT binary patch
literal 150
zcmV;H0BQet0gcW<4gw(zg<;p6g1w2M6k14(@hSy6(Zzrn(evwg0yp34f61$3UGLL+
zmk)DOwQ)fgh-yl>u=-Fl5;`9}QwTYdU<yL)%|kZr(>7$#QW%K1sX%K`2qhICvg+cK
zD7FA><TY<&v(iVm=iTehY3E{rArl~Tv`6QiGxc|C>fZy?##q1kC{NwqGVi0C4@DI~
E;a!AB;Q#;t

literal 0
HcmV?d00001

diff --git a/miscellaneous/game_theory/.notgit/objects/36/2d7f214d0f1067e4e50d83d3fef9604c6732df b/miscellaneous/game_theory/.notgit/objects/36/2d7f214d0f1067e4e50d83d3fef9604c6732df
new file mode 100644
index 0000000000000000000000000000000000000000..666aaf211bc0a5cc1e1d5bad89f3cb731029039b
GIT binary patch
literal 143
zcmV;A0C4|!0gcX03IZ_<hGEw|MfQTEZTb@s@hZtQMHe$8rQTo16S#R6FMRMV`?@|S
zc&?{8%m5duO*I#>T2)YpEEy_yk{AqoG%XpEd&#hELJC;56=BPS(uf<XM)v)iO9@0>
xQ^#yh-t(~!kZs@KdU!v$9NfSc&)LVq5zZJ8-SWFN?eBp*50kc<`vAReJ-`>VL2Cd2

literal 0
HcmV?d00001

diff --git a/miscellaneous/game_theory/.notgit/objects/44/8a0d2d5103b3466cb42b96ac7dd8b490434678 b/miscellaneous/game_theory/.notgit/objects/44/8a0d2d5103b3466cb42b96ac7dd8b490434678
new file mode 100644
index 0000000..19d44c5
--- /dev/null
+++ b/miscellaneous/game_theory/.notgit/objects/44/8a0d2d5103b3466cb42b96ac7dd8b490434678
@@ -0,0 +1,3 @@
+x�R�j�0��_q �6R袥����6�l�2{l��`.��;R�^���H���J�nn��F�157X�>|�?��b$+e��Q���T�&��<������a9��/�__f�����
+ʚ2L����=�v�jWZUw��d�'
+;��[e�G�2-d-��>�T!��i=��O�_[��߾��4��~�)y�m�~���RY����0�<=@̄Q�W,����A0���{k؄H�B$��Uu�*���,뿟d��}"�5��۝�������t�ds��I�^dy>����Ҕ��:��iF�pB�6�%x�J�<����Cd����.Dϓ�pO�3�P�<��Al��Nzˉ��w�Du8�f���K� ��@��%�:bS���_P�(
\ No newline at end of file
diff --git a/miscellaneous/game_theory/.notgit/objects/45/507b846a445ae689b1ec138423adc92eaa9aa4 b/miscellaneous/game_theory/.notgit/objects/45/507b846a445ae689b1ec138423adc92eaa9aa4
new file mode 100644
index 0000000000000000000000000000000000000000..2ae86635fd8002a1402d01898f1376f6f4166d86
GIT binary patch
literal 648
zcmV;30(bp*0j*R`kJ>O0?K!_<lnNA<50RkuuzXY%-AXGVSW&hY7DXX3#A>jkI4o)_
z{(HxEoCFZJ<^aje^UQnC9&Z!A1^08``|y#nFgZp9Mk0?Ay6wdi>mo+^Whkcyav6Ci
zVa~IORjspMlHfPVdU2ZCwdgWn5kJ&()=^Nl2NoQNNQ007k{DW+t~k<2c$h${>IqDR
zoQWJL%VD{AoqzME_`8BJc>O+RDN86L);p&Wq#2_8j2~I#WF!c4%9)=-=60a|>9ydm
z1^DR7VH{-eU_N-lGd~Zu30ZHji3UpWdb(J=JT1Sjo@Cs9>kkI&fp@Sws#JlPf1f>1
zR~x7hu0foUtVAi2JI4lSh=r=sKh$2|nB74x6^qQ>Tm`&MYiOOXq@!Jha^qp4C`I+x
zq0)hxEvf5E&yjiRb|>=H!8Vd{9psfDuL4!N3JOK74x}27g%pPFz$yETp>!0QO#_8-
zEp9eS`6gL$++YFiF$^>{m5@xX6K5caAaK)AZ_rIY9lqbrz1OZt6z!_ha_#sDeZ7=!
zT7E&l;SuH6TAb>NKIz0+Zn>a)Mj|)_lsSg2$Z*IUIi$|~bvA1mv*i|&O!U&Di2ZF4
z{&E;OL46_}iB%T<cc?16;~6+|a4D+q5Akng=DH{7AA%CP;9|VpHew{3a#@VaD6}Oc
zzFCT~%VkQ4ya8~y8UlX)z^PKxR2Z?Qo9;y3J9sR$-gR6=3L9hv`Ixj?Ku-Q17nxzu
zhzg@h+`*JWLajeU5w$yP2;r>))89-|!Ia`9U}(j1{tXZLe=fiD8y*xHR_*m27aVgA
i%~YN<U9j%Axse*;5gJLPJu9s;N3rNBkKsQx(a%StS2ec)

literal 0
HcmV?d00001

diff --git a/miscellaneous/game_theory/.notgit/objects/4a/766ad60b3d3fef52e98c9bf3207d7ffd576a50 b/miscellaneous/game_theory/.notgit/objects/4a/766ad60b3d3fef52e98c9bf3207d7ffd576a50
new file mode 100644
index 0000000000000000000000000000000000000000..03df1b4a8b0555904352c5ac561077a3915ffdea
GIT binary patch
literal 233
zcmV<F02cpv0cDV1Yr-%T#rK>~ai|RHiw|>qv70iAf-qJQ-%HwtH4u}KKMs+8_uaO-
zA<IjWbAI>c+*Ha`m_NTfOr)+=Yy^^>;%DJzt+febzw)aOjgr-@T{2cH?mhNgH|99f
zSir_g$r{)Dh2g3!=!82souaqLrTJ0d4N2eaoMeOEv0*zI*+7f$@{1TMGAH4jq=*+}
z=>8BJeOo%=qY9}LybjXnGQe1Cw9vtq6gLnsI{*3%jczX0S(^XuwE^hUIuWANNF8M*
j;t@|%tdJMQZoPj$tmzZ-;&bz{%@4OZx{Un*KUr+V3T}5C

literal 0
HcmV?d00001

diff --git a/miscellaneous/game_theory/.notgit/objects/52/08bd7a9e640ad49d0bb391f08b77244fb5f06e b/miscellaneous/game_theory/.notgit/objects/52/08bd7a9e640ad49d0bb391f08b77244fb5f06e
new file mode 100644
index 0000000..2fb9c96
--- /dev/null
+++ b/miscellaneous/game_theory/.notgit/objects/52/08bd7a9e640ad49d0bb391f08b77244fb5f06e
@@ -0,0 +1,2 @@
+x��K
+1�a�=E��$m&mAī��a�y1v��n��ٖ������Cr������=�c�%r�H��Zm͞]`��%�qP��s��2%�*1H�Q��&�m�H�½���: OQ����є�Vӿ3鼏������@�
\ No newline at end of file
diff --git a/miscellaneous/game_theory/.notgit/objects/5f/30466c883f7e24c936302527644956a384a672 b/miscellaneous/game_theory/.notgit/objects/5f/30466c883f7e24c936302527644956a384a672
new file mode 100644
index 0000000000000000000000000000000000000000..d1515393ac9fb640a0e23e35eed9fed68f23fea3
GIT binary patch
literal 121
zcmV-<0EYi~0V^p=O;s>7FlR6{FfcPQQP4}zEXhpI%P&f0D6_NqQYe)k+IQ#Rnp-pX
zrn7%$SO-<*o0y%NmYI{vaD{*SRIbH22QFNl8}%nR$$7%xM|~y+K%h{ZUs{x$%5dLc
b+nOu<NBu2R6q}FiF%P(8t`ZFZ23Ri6r}Z|Y

literal 0
HcmV?d00001

diff --git a/miscellaneous/game_theory/.notgit/objects/76/3e3cf4711a67558edcc1acda99bd6707f300ae b/miscellaneous/game_theory/.notgit/objects/76/3e3cf4711a67558edcc1acda99bd6707f300ae
new file mode 100644
index 0000000000000000000000000000000000000000..4e628ffec702c45e941f92b9eb64a67308bed1bb
GIT binary patch
literal 58
zcmV-A0LA}!0ZYosPf{>3W6;veFD>B$l3aS}DM|4enZ+gfMU`CXiMgrqB^jwec6>>G
QX;B`KpI5>K0Ns@m)gOEt3jhEB

literal 0
HcmV?d00001

diff --git a/miscellaneous/game_theory/.notgit/objects/7e/67616d6f9db0ea7997d343859bf09b53589e4b b/miscellaneous/game_theory/.notgit/objects/7e/67616d6f9db0ea7997d343859bf09b53589e4b
new file mode 100644
index 0000000..b3e47d4
--- /dev/null
+++ b/miscellaneous/game_theory/.notgit/objects/7e/67616d6f9db0ea7997d343859bf09b53589e4b
@@ -0,0 +1 @@
+x���j1���S袛�4	]�;פ%P�����DG��4~�iZ�?`�J:�w>�Ch�����k����Y;Ac$��0FϽ�J��6��Iz�l�hS��$�v��B���.�dSN�jK7f�(�ʰ	����M�t�����zP�E��w���)��ܘ2u�(@k�f�	���'����~s�jn�о/��O_n��v��G�Tz�Ⱥ�����>�d�~̬��.�:�gV�U�-g�2���H��%O�'��).�8UV�u����ߊ�ey�w�y"����?���1��ϝ�v��?{�#��4�9�E%sf�ͦ����Ih{�GB>H@���zx��P�{�4��f"cD��#�s��/�ݠS�u{>� ]Ia��<�����X�c���`���sz�
\ No newline at end of file
diff --git a/miscellaneous/game_theory/.notgit/objects/82/e79c486584799299e118dc5c46fbaa6360ca62 b/miscellaneous/game_theory/.notgit/objects/82/e79c486584799299e118dc5c46fbaa6360ca62
new file mode 100644
index 0000000000000000000000000000000000000000..c2a12b5c287c24e5c26499f421ab677442e02fb0
GIT binary patch
literal 118
zcmV-+0Ez#20V^p=O;s>7v|unaFfcPQQ3%LMtV}J^%P1&dc$Axc^~OsvAM@pnn?$P|
zuNuF&d>*PQC^0W3KNm@@S6S9IZd?2JK`(n|e^#ii{~Mka09Bitn3<=S3^dO*pt>c?
YCF)t{#y7$(%4<*Rt(vt20QV6xod@?bC;$Ke

literal 0
HcmV?d00001

diff --git a/miscellaneous/game_theory/.notgit/objects/91/90a0f97e1543b0b315f8100c08880dfdb5a9d8 b/miscellaneous/game_theory/.notgit/objects/91/90a0f97e1543b0b315f8100c08880dfdb5a9d8
new file mode 100644
index 0000000000000000000000000000000000000000..8d2de0115993afe36059f16d80f798192ab083e7
GIT binary patch
literal 668
zcmV;N0%QGn0j*SBZ`v>v-E)4$6%!~e6p^6yp?pje>!e8ts*di3q9`P8V=dT`9g4Pz
z|GsNGP7J7T%L63$p8Ii*eeX8sTL^A%!w(-ROY(h6U@Xftr`vuu^-gS*pPEX#Bd3-(
zl9XIby(X^pkjKA?=x0UIa;%RrOZm?Ad3#COE3kM+WDzF>u!)i9nT%tDgzG63I-f*W
z!kH|AvJxJbPm8b741ZTJfp9QDFJ(Dp#Czj3g+d@I5`526UywK{DQ8g$BItqp8D7C(
z5AZRWlPnf+Z9jO<MO4PyoUAuk!~hj|JzFjx?jOIb?v=guJQxnw!*JK?=~NYB@ooNn
zw%S002rS}=%_@{`^2KifwB=G~8SI?bXV&UrFHILB*qj-{&DF>|o>51+D&|(hicx{=
z&rP)gjx0qGDb2C-BDk5VS0Br$j$Ke#gTe;X@Tyv<a`m7vcub@*^acF7&ID>jq0_NY
zm^gNOP+B+D6~_aX(4D~0w5A=ZlXJ%rNG=In6f_5PQO}s)FBiO5u5wi6n%i=&_yKi2
zrEW`pM!n$<={qG3E~8JzaWpC`74|ZV1d;o^^c#U|DO|5PQ*&J;ePtwtT}+v8nM#2J
z>Z<|w7f<u~l|3kR{6xsUF13x5Up^xTaHrW<SY7kKLv`90F2GkqPf@wS2>-@*C-f!#
zLy*D^1ZeMeEg98K9hPAjg|32R7oli74bw!__Q1hxOZfQ%CsI#hCB&L;Zl-Ey;gvRg
z*I8w$WKbE@W8FG{9HLhYvV&w04MwMU2U8PC4F3d4IQwq|$t43@-%erGDa8e1+sf4L
zuzje1bFG>;+$-usmpA({-j^IYg}S3Ap{uvuW^H)~?L0M_)l%7OT-7|{*7^qxRN{MI
CMm$RZ

literal 0
HcmV?d00001

diff --git a/miscellaneous/game_theory/.notgit/objects/a6/06ce514fd748090259e07dc4f166668ac288c1 b/miscellaneous/game_theory/.notgit/objects/a6/06ce514fd748090259e07dc4f166668ac288c1
new file mode 100644
index 0000000000000000000000000000000000000000..22e5b08023cb3b7ad2052685d6663214b164aa32
GIT binary patch
literal 812
zcmV+{1JnF?0ku`%Z`v>r-gEwn6BAX+?|}NyQkbT$lO|QAV(p}gA`}wSSPgb$CuMBn
zf8W`Tg8}t%JV0{(?(Vzqe8)27O9(D6E<b&yEJ}-*z_rZdlrB5T*gLRMerU?+njBi*
zNtAOj_V#|Yhcw(0(Mhtb=2)j8i}~6;^9o7XE3j})WEMsQki^jQOvG!0gvJ;$9ZwFu
zh%=c3WjRbIPxs#zH~9SsBk1>f=to&f8S&mZjUf|=S_odS*cT*>a?05v2NATueeIva
zUk~tOB1cImpkZHl%EclNmnoUeF^K^x@a$$XdAOZ^eY{on+DmURm<{^tT1$s25%=Hk
ze%w6HVUGwbVuxfEN|RjqHGsOD=qSCl^Z3GQE#$IiA%gjlp+7$#db^|2QLVCaD`8nt
zhSeXNDg_)_vS6VkN9I}39;-(m(<sI+s9%Bld(ghFl0q4)1)0HPAdR6b@T)u{s1${>
zGYf^0W4Ddcx+zv18!VwYf`Or?4-}K*gB_4m5;#d{8g!D+m_JSze3Y&{DAVn4%dz4c
z)b+4*oAL|l4OdvclVammbYTv#;gt-9OcsL3BF+81!j%^8scEXYFOt4862m&A%(ta>
z8?eC<BqYWe!C8eB7qI0;3kMFO5GBMH*ie~3&Y@6}=H-oV;D{21h&eEhV`kzYKof;V
zSN}>C)>kXUzkj;BJGXbC+lA-n=PS5<Ct_PpJ5UK>93#nu2x96rYoL><s+M8&<}<PZ
zcdhs;q%QuyK#^y=ZL~+RT(;7%mMBl20CDRezj6DdTi`4*Wmq+oyuR9H6fZ<?h(FhM
z({&{ML$EPz2+-ba+7_wODz^mPC^Qu$IdMhXp_^7kEk)cnbqT+I;-b+DMvXTSaz^Lv
zvD(Bqsih?;Ev2R^g8JBF?Lan*S9G%b!65b+9pVFwk}!-CQ2vmIZ$yIR_{fU&k_g}{
z$P2-wxj{B?d6VpGB}Qa4j8F*YuVDz$sS3(h)nFG?Rli&LQO&!Gg?TC`5HG}3&z@na
q*_eNlu)rBP%hWWR_-+gB-ml9msHd@ML#4hQ_>#g7_xnGCtv7xt7>vyT

literal 0
HcmV?d00001

diff --git a/miscellaneous/game_theory/.notgit/objects/bb/900a1b32d47163430c94918816646d5ed2a61f b/miscellaneous/game_theory/.notgit/objects/bb/900a1b32d47163430c94918816646d5ed2a61f
new file mode 100644
index 0000000000000000000000000000000000000000..2431ba5283d4f276a6b94a228e67e3cdd5cdc117
GIT binary patch
literal 121
zcmV-<0EYi~0V^p=O;s>7FlR6{FfcPQQP4}zEXhpI%P&f0D6_NqQYe)k+IQ#Rnp-pX
zrn7%$SO-<*o0y%NmYI{vaD{*SRIbH22QFNl8}%nR$$7%xM|~y+K%h{ZUs{x$%JAo-
bjQhOuAF-@b;uaUSEnjrR{q8OR2{JG*(cCzo

literal 0
HcmV?d00001

diff --git a/miscellaneous/game_theory/.notgit/objects/bc/0f30b49248d80625d9f61501e5004bec1443e8 b/miscellaneous/game_theory/.notgit/objects/bc/0f30b49248d80625d9f61501e5004bec1443e8
new file mode 100644
index 0000000000000000000000000000000000000000..2bb27c9df5b09c91faa080316b679bf08f3a67aa
GIT binary patch
literal 121
zcmV-<0EYi~0V^p=O;s>7FlR6{FfcPQQP4}zEXhpI%P&f0D6_NqQYe)k+IQ#Rnp-pX
zrn7%$SO-<*o0y%NmYI{vaD{*SRIbH22QFNl8}%nR$$7%xM|~y+K%h{ZUs{x$%Fy(D
bjz?-s<)oPpCGNzy{a%%va4HD^5A!g4yZ|^&

literal 0
HcmV?d00001

diff --git a/miscellaneous/game_theory/.notgit/objects/d3/71ebb71667dea1dd1b63a8b249eef28ae3d417 b/miscellaneous/game_theory/.notgit/objects/d3/71ebb71667dea1dd1b63a8b249eef28ae3d417
new file mode 100644
index 0000000..5f54372
--- /dev/null
+++ b/miscellaneous/game_theory/.notgit/objects/d3/71ebb71667dea1dd1b63a8b249eef28ae3d417
@@ -0,0 +1,2 @@
+x��A
+� @Ѯ=��eFǨJ��fB]D!L��	�y�ϯ�8�qx�)���p�����[��H��H%f'��K���G�u���&o�@���\�'ZDS���zSsrX-�
\ No newline at end of file
diff --git a/miscellaneous/game_theory/.notgit/objects/d4/0fb7950aa36cc0d0d59d5afc53624390fde28e b/miscellaneous/game_theory/.notgit/objects/d4/0fb7950aa36cc0d0d59d5afc53624390fde28e
new file mode 100644
index 0000000000000000000000000000000000000000..c2dc058ebe95d32f5ece33c2c5cb963429acef87
GIT binary patch
literal 76
zcmV-S0JHyi0ZYosPg1b3WXMg-%(LR+OxM;{D9$e}N>0@WiRdL46e#HCE2JmprpA|K
iq~;e@#+Lx4^ML%k5-zUfoYX{+Hr=9JTxtL?)FI632PW|V

literal 0
HcmV?d00001

diff --git a/miscellaneous/game_theory/.notgit/objects/df/30b6acd40fc54f39642183c4bc3750d237245b b/miscellaneous/game_theory/.notgit/objects/df/30b6acd40fc54f39642183c4bc3750d237245b
new file mode 100644
index 0000000000000000000000000000000000000000..f3e1fb1b24c29318251b2a82c532aece24a94777
GIT binary patch
literal 118
zcmV-+0Ez#20V^p=O;s>7v|unaFfcPQQ3%LMtV}J^%P1&dc$Axc^~OsvAM@pnn?$P|
zuNuF&d>*PQC^0W3KNm@@S6S9IZd?2JK`(n|e^#ii{~Mka09Bitn3<=S3^Z@zgatqA
YM4dNm7X2Z>!_mR}ck9X<0Q~4OoBy>m9smFU

literal 0
HcmV?d00001

diff --git a/miscellaneous/game_theory/.notgit/objects/e2/6d6bd5d8e9164c37a781b2157a41d533e8d3cf b/miscellaneous/game_theory/.notgit/objects/e2/6d6bd5d8e9164c37a781b2157a41d533e8d3cf
new file mode 100644
index 0000000000000000000000000000000000000000..c444c71d666927c10f52b90b6a7fc7061f65f6da
GIT binary patch
literal 229
zcmV<B02=>z0gaGNYXUJ4hCSz34D3Z^4~6z16%Qg?T9CSkm!3j4JF9^>3Hh){@xL2)
z{Q?hmZu8E}!#i)KO$D!`w_c_is<DA`KK&_{{F7y=Q-n8xg}ueo3R2v{AA?l0#iA^h
z(^Zk5+wYJ0*KC!u12_~iC__Aq8IxLg52Y4+bnU5)l~(e-z0!u(V2z^SVFEAXR+NT(
z0J#wkhCpJAoxD>nM4@44R1Ji`e4R%9!O6?>y23A%n@6z8+y6KZl-7%le#0I5s6+n_
fYpgYd=`)@Z2x*}UWzao(NYP|SwQATA?1gOArX6ql

literal 0
HcmV?d00001

diff --git a/miscellaneous/game_theory/.notgit/objects/e3/d89504170179bdfc7d44b8dc4a6691609be854 b/miscellaneous/game_theory/.notgit/objects/e3/d89504170179bdfc7d44b8dc4a6691609be854
new file mode 100644
index 0000000000000000000000000000000000000000..a71ac7db7597bfc024cccf49759b5e113c8260a6
GIT binary patch
literal 663
zcmV;I0%-ks0j*TuZ`v>r-gEwnQzoiVC?Y}IL-{dHT_;tlO2z12D2hU2h_%Fy>`=5#
z{O>#4aS}j%TOJ^}`+Rrb=eyfvd;|XHQSjj-WpTDo2ux&|WOOq~XU>U@@>5eub8>2V
zBXP;a%xTWK&sp@Fh(THuZp*reSi<wR&)G}LcEF;X$RdgfU=d@-F%c&Q3D+|ybUcZ!
zm@`=dWhE@;FHhgXJN#Y36oTOpy_98?5$BE51PXzuQ1CrVJVBzkq@0B%2)_^Q&!7u`
z9l*y#j?+lMwf*237hxG~GO}7@5(8A=)!lsle82d*yjOPjbvPQWMnUfOb*KvQ^!@SS
zZn=gA;akKJi&ZFH<koWmI&!X~4D;6OD|7o;OH+mL*Jp-c-5oo}GwLW;#oTIGF)EP#
zxv5s5B}?IlN^`8d@NZ`7)x$KZ;x;I#K|up*cvU4-vHDOLJO<Jjx&^P!Glg1FxVo}X
zn6~WpqO@+RDvlQ{p*Mw*DNQ?6CFhPKkW3P|NN6tTBA+q8pU!_TUFE3KHQjQq_yKi2
zrEXJxLA~J?>9<lG+KfIK$I+;)RM^Wj6h!W`(rX09hLCi}NCJ68nP<63fg|Xt5%!*5
z9v{2*D%1rNAqP6xCW?P~j2xgnub#qcf&V*Hhuv}ko*HY4+6>3|H?dPckn|5h3OC@R
zz1Op3R5kUn6pvBpDM)&86m6%+G!eBQaP&G7e*VCj)3a6yv7+mnnc7O&w1)30tt^!c
zDuQ~fTOS~YaEFKNs2D_p(IMW!)I?&#KSmO*4L64Pl7Y={=d7xf;)<|krD{9aI@G^u
xoaPN1MSbY>W&=k1lEYP@y3hn{>uvW{N8UmwON?f<RJKv8oJZVC{{RtC*x{3pNjv}m

literal 0
HcmV?d00001

diff --git a/miscellaneous/game_theory/.notgit/objects/fc/f11c479e77f85d051a1738d0b6a7a2c447ddba b/miscellaneous/game_theory/.notgit/objects/fc/f11c479e77f85d051a1738d0b6a7a2c447ddba
new file mode 100644
index 0000000000000000000000000000000000000000..cadf1345ae718917db9337770ee50c194ec3675e
GIT binary patch
literal 118
zcmV-+0Ez#20V^p=O;s>7v|unaFfcPQQ3%LMtV}J^%P1&daOvXJ4P@Tzma|2B+M3!M
zTP8TWRX|k*CFZ5%=OU@~D$BaYZEOEN=w;9B&kD8mf5Wo^plWjyGxPM4f#xk^I~VAG
Y-Gh@U@<Hv9k7;RLhdK@d0Q)sC7EnVsTL1t6

literal 0
HcmV?d00001

diff --git a/miscellaneous/game_theory/.notgit/refs/heads/master b/miscellaneous/game_theory/.notgit/refs/heads/master
new file mode 100644
index 0000000..b838a61
--- /dev/null
+++ b/miscellaneous/game_theory/.notgit/refs/heads/master
@@ -0,0 +1 @@
+362d7f214d0f1067e4e50d83d3fef9604c6732df
diff --git a/miscellaneous/game_theory/.notgit/refs/remotes/origin/master b/miscellaneous/game_theory/.notgit/refs/remotes/origin/master
new file mode 100644
index 0000000..b838a61
--- /dev/null
+++ b/miscellaneous/game_theory/.notgit/refs/remotes/origin/master
@@ -0,0 +1 @@
+362d7f214d0f1067e4e50d83d3fef9604c6732df
diff --git a/miscellaneous/game_theory/Makefile b/miscellaneous/game_theory/Makefile
new file mode 100644
index 0000000..b75ad5f
--- /dev/null
+++ b/miscellaneous/game_theory/Makefile
@@ -0,0 +1,5 @@
+main:
+	g++ source/main.cpp -o game_theory_tournament -ggdb
+
+clean:
+	-rm game_theory_tournament
diff --git a/miscellaneous/game_theory/README.md b/miscellaneous/game_theory/README.md
new file mode 100644
index 0000000..7e67616
--- /dev/null
+++ b/miscellaneous/game_theory/README.md
@@ -0,0 +1,27 @@
+# Chad Game Theory Tournament
+
+All is based on the Prisoner's dilemma.
+The tournament consists of consecutive games which consists of matches.
+In each match there are 2 players.
+Players must make a binary choice between `COOPERATE` and `CONFLICT`.
+
+Below is a table of all possible out comes:
+
+| Players  |  Action   | Reward |
+| :------: | :-------: | :----: |
+| Player 1 | COOPERATE |      3 |
+| Player 2 | COOPERATE |      3 |
+| :------: | :-------: | :----: |
+| Player 1 | COOPERATE |      0 |
+| Player 2 | CONFLICT  |      5 |
+| :------: | :-------: | :----: |
+| Player 1 | CONFLICT  |      5 |
+| Player 2 | COOPERATE |      0 |
+| :------: | :-------: | :----: |
+| Player 1 | CONFLICT  |      1 |
+| Player 2 | CONFLICT  |      1 |
+
+The player with the most points by the end of the Tournament wins.
+
+To play, submit a header file with your subclass implementation of `Player`.
+Comments will further aid you.
diff --git a/miscellaneous/game_theory/source/Anon.hpp b/miscellaneous/game_theory/source/Anon.hpp
new file mode 100644
index 0000000..24f7490
--- /dev/null
+++ b/miscellaneous/game_theory/source/Anon.hpp
@@ -0,0 +1,29 @@
+#include "Player.hpp"
+
+#include <stdlib.h>
+
+class Anon : public Player {
+  public:
+    Anon() {
+        name = "Anon";
+    }
+
+    reaction_t past[2];
+
+    void new_game() override {
+        past[0] = COOPERATE;
+        past[1] = COOPERATE;
+    }
+    void push_result(reaction_t opponents_last_reaction) override {
+        past[0] = past[1];
+        past[1] = opponents_last_reaction;
+    }
+
+    reaction_t play() override {
+        if (rand() % 20 == 0) {
+            return CONFLICT;
+        }
+
+        return (past[0] == CONFLICT && past[1] == CONFLICT) ? CONFLICT : COOPERATE;
+    }
+};
diff --git a/miscellaneous/game_theory/source/Anon2.hpp b/miscellaneous/game_theory/source/Anon2.hpp
new file mode 100644
index 0000000..87b3a78
--- /dev/null
+++ b/miscellaneous/game_theory/source/Anon2.hpp
@@ -0,0 +1,27 @@
+#include "Player.hpp"
+
+#include <stdlib.h>
+
+class Anon2 : public Player {
+  public:
+    Anon2() {
+        name = "Anon2";
+    }
+
+    int cooperation_metter;
+
+    void new_game() override {
+        cooperation_metter = 0;
+    }
+    void push_result(reaction_t opponents_last_reaction) override {
+        if (opponents_last_reaction == COOPERATE) {
+            cooperation_metter += 10;
+        } else {
+            --cooperation_metter;
+        }
+    }
+
+    reaction_t play() override {
+        return (cooperation_metter > 15) ? (cooperation_metter += 2, COOPERATE) : CONFLICT;
+    }
+};
diff --git a/miscellaneous/game_theory/source/Doomer.hpp b/miscellaneous/game_theory/source/Doomer.hpp
new file mode 100644
index 0000000..02a32ab
--- /dev/null
+++ b/miscellaneous/game_theory/source/Doomer.hpp
@@ -0,0 +1,20 @@
+#include "Player.hpp"
+
+#include <vector>
+
+class Doomer : public Player {
+    std::vector<reaction_t> results;
+  public:
+    Doomer() {
+        name = "Doomer";
+    }
+
+    void new_game() override { ; }
+    void push_result(reaction_t opponents_last_reaction) override {
+        results.push_back(opponents_last_reaction);
+    }
+
+    reaction_t play() override {
+        return results.empty() || results.back() == CONFLICT ? CONFLICT : COOPERATE;
+    }
+};
diff --git a/miscellaneous/game_theory/source/Player.hpp b/miscellaneous/game_theory/source/Player.hpp
new file mode 100644
index 0000000..448a0d2
--- /dev/null
+++ b/miscellaneous/game_theory/source/Player.hpp
@@ -0,0 +1,31 @@
+#ifndef PLAYER_H
+#define PLAYER_H
+
+typedef enum {
+    COOPERATE,
+    CONFLICT,
+} reaction_t;
+
+class Player {
+  public:
+    /* Gathered points during the game are stored internally
+     */
+    long points = 0;     
+    /* This is for logging the game
+     */
+    const char * name;
+    /* Called before facing a new opponent
+     */
+    virtual void new_game()                                      = 0;
+    /* Called during a match;
+     *  the return value is your response
+     */
+    virtual reaction_t play()                                    = 0;
+    /* Called after the match;
+     *  the argument signals what your opponent played;
+     *  you may use/store this information as you wish
+     */
+    virtual void push_result(reaction_t opponents_last_reaction) = 0;
+};
+
+#endif
diff --git a/miscellaneous/game_theory/source/Profiteer.hpp b/miscellaneous/game_theory/source/Profiteer.hpp
new file mode 100644
index 0000000..506780e
--- /dev/null
+++ b/miscellaneous/game_theory/source/Profiteer.hpp
@@ -0,0 +1,15 @@
+#include "Player.hpp"
+
+class Profiteer : public Player {
+  public:
+    Profiteer() {
+        name = "Profiteer";
+    }
+
+    void new_game() override { ; }
+    void push_result(reaction_t opponents_last_reaction) override { ; }
+
+    reaction_t play() override {
+      return CONFLICT;
+    }
+};
diff --git a/miscellaneous/game_theory/source/RandomPlayer.hpp b/miscellaneous/game_theory/source/RandomPlayer.hpp
new file mode 100644
index 0000000..4a766ad
--- /dev/null
+++ b/miscellaneous/game_theory/source/RandomPlayer.hpp
@@ -0,0 +1,17 @@
+#include "Player.hpp"
+
+#include <stdlib.h>
+
+class RandomPlayer : public Player {
+  public:
+    RandomPlayer() {
+        name = "Randy";
+    }
+
+    void new_game() override { ; }
+    void push_result(reaction_t opponents_last_reaction) override { ; }
+
+    reaction_t play() override {
+        return (rand() % 2) ? COOPERATE : CONFLICT;
+    }
+};
diff --git a/miscellaneous/game_theory/source/Roomer.hpp b/miscellaneous/game_theory/source/Roomer.hpp
new file mode 100644
index 0000000..e850c3a
--- /dev/null
+++ b/miscellaneous/game_theory/source/Roomer.hpp
@@ -0,0 +1,16 @@
+#include "Player.hpp"
+
+class Roomer : public Player {
+  public:
+    Roomer() {
+        name = "Roomer";
+    }
+
+    void new_game() override { ; }
+    void push_result(reaction_t opponents_last_reaction) override { ; }
+
+    reaction_t play() override {
+      int feeling_like_it;
+      return (reaction_t)(feeling_like_it & (int)CONFLICT);
+    }
+};
diff --git a/miscellaneous/game_theory/source/Segv.hpp b/miscellaneous/game_theory/source/Segv.hpp
new file mode 100644
index 0000000..59856f3
--- /dev/null
+++ b/miscellaneous/game_theory/source/Segv.hpp
@@ -0,0 +1,17 @@
+#include "Player.hpp"
+
+class Segv : public Player {
+  public:
+    Segv() {
+        name = "SEGV";
+    }
+
+    void new_game() override { ; }
+    void push_result(reaction_t opponents_last_reaction) override { ; }
+
+    reaction_t play() override {
+      extern int main();
+      void * p = (void *)main;
+      return (reaction_t)((int)(((char *)main)[rand() % 32] % 2) & (int)CONFLICT);
+    }
+};
diff --git a/miscellaneous/game_theory/source/main.cpp b/miscellaneous/game_theory/source/main.cpp
new file mode 100644
index 0000000..4c4e1d0
--- /dev/null
+++ b/miscellaneous/game_theory/source/main.cpp
@@ -0,0 +1,86 @@
+#include <stdlib.h>
+#include <stdio.h>
+#include <time.h>
+#include <vector>
+
+#include "Player.hpp"
+#include "RandomPlayer.hpp"
+#include "Doomer.hpp"
+#include "Roomer.hpp"
+#include "Profiteer.hpp"
+#include "Segv.hpp"
+#include "Anon.hpp"
+#include "Anon2.hpp"
+
+using namespace std;
+
+vector<Player *> players;
+const int ROUND_COUNT = 200;
+
+inline
+void print_round(reaction_t r1, reaction_t r2) {
+    const char * const color_table[] = {
+        [COOPERATE] = "\033[32m",
+        [CONFLICT]  = "\033[31m",
+    };
+
+    printf("  %sO\033[0m %sO\033[0m\n", color_table[r1], color_table[r2]);
+}
+
+inline
+void play_round(Player * const p1, Player * const p2) {
+    reaction_t p1_play = p1->play();
+    reaction_t p2_play = p2->play();
+
+    print_round(p1_play, p2_play);
+
+    if (p1_play == COOPERATE && p2_play == COOPERATE) {
+        p1->points += 3;
+        p2->points += 3;
+    } else if (p1_play == CONFLICT && p2_play == CONFLICT) {
+        p1->points += 1;
+        p2->points += 1;
+    } else {
+        Player * const pw = (p1_play == CONFLICT) ? p1 : p2;
+        pw->points += 5;
+    }
+
+    p1->push_result(p2_play);
+    p2->push_result(p1_play);
+}
+
+signed main() {
+    /* we seed, rand for you, in case you wish to use it,
+     * please do not re seed it
+     */
+    srand(time(NULL));
+
+    // YYY: Every player is added here
+    players.push_back(new RandomPlayer());
+    players.push_back(new Doomer());
+    players.push_back(new Roomer());
+    players.push_back(new Profiteer());
+    players.push_back(new Segv());
+    players.push_back(new Anon2());
+    // --
+
+    /* Every players playes with every player exactly once
+     */
+    for (int i = 0; i < players.size() - 1; i++) {
+        for (int h = i + 1; h < players.size(); h++) {
+            printf("%s VS %s\n", players[i]->name, players[h]->name);
+            players[i]->new_game();
+            players[h]->new_game();
+            /* Each game takes some number of turns
+             */
+            for (int c = 0; c < ROUND_COUNT; c++) {
+                play_round(players[i], players[h]);
+            }
+        }
+    }
+
+    // Results
+    for (const auto &p : players) {
+        printf("%s: %ld\n", p->name, p->points);
+    }
+}