diff --git a/.git/COMMIT_EDITMSG b/.git/COMMIT_EDITMSG
new file mode 100644
--- /dev/null
+++ b/.git/COMMIT_EDITMSG
@@ -0,0 +1,1 @@
+-Math+Data
diff --git a/.git/HEAD b/.git/HEAD
new file mode 100644
--- /dev/null
+++ b/.git/HEAD
@@ -0,0 +1,1 @@
+ref: refs/heads/master
diff --git a/.git/ORIG_HEAD b/.git/ORIG_HEAD
new file mode 100644
--- /dev/null
+++ b/.git/ORIG_HEAD
@@ -0,0 +1,1 @@
+99aa7053731bd1edc38de046779e8c96964e8f33
diff --git a/.git/config b/.git/config
new file mode 100644
--- /dev/null
+++ b/.git/config
@@ -0,0 +1,11 @@
+[core]
+	repositoryformatversion = 0
+	filemode = true
+	bare = false
+	logallrefupdates = true
+[remote "origin"]
+	url = git@github.com:exFalso/ProxN.git
+	fetch = +refs/heads/*:refs/remotes/origin/*
+[branch "master"]
+	remote = origin
+	merge = refs/heads/master
diff --git a/.git/description b/.git/description
new file mode 100644
--- /dev/null
+++ b/.git/description
@@ -0,0 +1,1 @@
+Unnamed repository; edit this file 'description' to name the repository.
diff --git a/.git/hooks/applypatch-msg.sample b/.git/hooks/applypatch-msg.sample
new file mode 100644
--- /dev/null
+++ b/.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
+test -x "$GIT_DIR/hooks/commit-msg" &&
+	exec "$GIT_DIR/hooks/commit-msg" ${1+"$@"}
+:
diff --git a/.git/hooks/commit-msg.sample b/.git/hooks/commit-msg.sample
new file mode 100644
--- /dev/null
+++ b/.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/.git/hooks/post-update.sample b/.git/hooks/post-update.sample
new file mode 100644
--- /dev/null
+++ b/.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/.git/hooks/pre-applypatch.sample b/.git/hooks/pre-applypatch.sample
new file mode 100644
--- /dev/null
+++ b/.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
+test -x "$GIT_DIR/hooks/pre-commit" &&
+	exec "$GIT_DIR/hooks/pre-commit" ${1+"$@"}
+:
diff --git a/.git/hooks/pre-commit.sample b/.git/hooks/pre-commit.sample
new file mode 100644
--- /dev/null
+++ b/.git/hooks/pre-commit.sample
@@ -0,0 +1,50 @@
+#!/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=4b825dc642cb6eb9a060e54bf8d69288fbee4904
+fi
+
+# If you want to allow non-ascii filenames set this variable to true.
+allownonascii=$(git config 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 --cached --name-only --diff-filter=A -z $against |
+	  LC_ALL=C tr -d '[ -~]\0' | wc -c) != 0
+then
+	echo "Error: Attempt to add a non-ascii file name."
+	echo
+	echo "This can cause problems if you want to work"
+	echo "with people on other platforms."
+	echo
+	echo "To be portable it is advisable to rename the file ..."
+	echo
+	echo "If you know what you are doing you can disable this"
+	echo "check using:"
+	echo
+	echo "  git config hooks.allownonascii true"
+	echo
+	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/.git/hooks/pre-rebase.sample b/.git/hooks/pre-rebase.sample
new file mode 100644
--- /dev/null
+++ b/.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
+
+exit 0
+
+################################################################
+
+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".
diff --git a/.git/hooks/prepare-commit-msg.sample b/.git/hooks/prepare-commit-msg.sample
new file mode 100644
--- /dev/null
+++ b/.git/hooks/prepare-commit-msg.sample
@@ -0,0 +1,36 @@
+#!/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 comments out the
+# "Conflicts:" part of a merge commit.
+#
+# 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.
+
+case "$2,$3" in
+  merge,)
+    /usr/bin/perl -i.bak -ne 's/^/# /, s/^# #/#/ if /^Conflicts/ .. /#/; print' "$1" ;;
+
+# ,|template,)
+#   /usr/bin/perl -i.bak -pe '
+#      print "\n" . `git diff --cached --name-status -r`
+#	 if /^#/ && $first++ == 0' "$1" ;;
+
+  *) ;;
+esac
+
+# SOB=$(git var GIT_AUTHOR_IDENT | sed -n 's/^\(.*>\).*$/Signed-off-by: \1/p')
+# grep -qs "^$SOB" "$1" || echo "$SOB" >> "$1"
diff --git a/.git/hooks/update.sample b/.git/hooks/update.sample
new file mode 100644
--- /dev/null
+++ b/.git/hooks/update.sample
@@ -0,0 +1,128 @@
+#!/bin/sh
+#
+# An example hook script to blocks 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 --bool hooks.allowunannotated)
+allowdeletebranch=$(git config --bool hooks.allowdeletebranch)
+denycreatebranch=$(git config --bool hooks.denycreatebranch)
+allowdeletetag=$(git config --bool hooks.allowdeletetag)
+allowmodifytag=$(git config --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="0000000000000000000000000000000000000000"
+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/.git/index b/.git/index
new file mode 100644
Binary files /dev/null and b/.git/index differ
diff --git a/.git/info/exclude b/.git/info/exclude
new file mode 100644
--- /dev/null
+++ b/.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/.git/logs/HEAD b/.git/logs/HEAD
new file mode 100644
--- /dev/null
+++ b/.git/logs/HEAD
@@ -0,0 +1,7 @@
+0000000000000000000000000000000000000000 99aa7053731bd1edc38de046779e8c96964e8f33 Ex Falso <0slemi0@gmail.com> 1327686767 +0000	commit (initial): gitignore
+99aa7053731bd1edc38de046779e8c96964e8f33 a641bc6c77212e090f4a550220875c5169bc1f32 Ex Falso <0slemi0@gmail.com> 1327687092 +0000	commit: works
+a641bc6c77212e090f4a550220875c5169bc1f32 b4aab4150265d809e9c0bcd437da8c76baf13058 Ex Falso <0slemi0@gmail.com> 1327708686 +0000	commit: cleaned up a bit
+b4aab4150265d809e9c0bcd437da8c76baf13058 8dfda0fd31f3cd684948aa52d50595feea7c01f7 Ex Falso <0slemi0@gmail.com> 1327775249 +0000	commit: added nicer Pretty printing, removed UndecidableInstances
+8dfda0fd31f3cd684948aa52d50595feea7c01f7 857c54c007917e49cf3ff111f0d6a93f248183f0 Ex Falso <0slemi0@gmail.com> 1327777658 +0000	commit: cabalised
+857c54c007917e49cf3ff111f0d6a93f248183f0 d96c73c3864fa48a1d500d232d8949d5d5978746 Ex Falso <0slemi0@gmail.com> 1327777872 +0000	commit: trallala
+d96c73c3864fa48a1d500d232d8949d5d5978746 a5de91949523b3162cf69f3365b5914deb6c7b01 Ex Falso <0slemi0@gmail.com> 1327782730 +0000	commit: -Math+Data
diff --git a/.git/logs/refs/heads/master b/.git/logs/refs/heads/master
new file mode 100644
--- /dev/null
+++ b/.git/logs/refs/heads/master
@@ -0,0 +1,7 @@
+0000000000000000000000000000000000000000 99aa7053731bd1edc38de046779e8c96964e8f33 Ex Falso <0slemi0@gmail.com> 1327686767 +0000	commit (initial): gitignore
+99aa7053731bd1edc38de046779e8c96964e8f33 a641bc6c77212e090f4a550220875c5169bc1f32 Ex Falso <0slemi0@gmail.com> 1327687092 +0000	commit: works
+a641bc6c77212e090f4a550220875c5169bc1f32 b4aab4150265d809e9c0bcd437da8c76baf13058 Ex Falso <0slemi0@gmail.com> 1327708686 +0000	commit: cleaned up a bit
+b4aab4150265d809e9c0bcd437da8c76baf13058 8dfda0fd31f3cd684948aa52d50595feea7c01f7 Ex Falso <0slemi0@gmail.com> 1327775249 +0000	commit: added nicer Pretty printing, removed UndecidableInstances
+8dfda0fd31f3cd684948aa52d50595feea7c01f7 857c54c007917e49cf3ff111f0d6a93f248183f0 Ex Falso <0slemi0@gmail.com> 1327777658 +0000	commit: cabalised
+857c54c007917e49cf3ff111f0d6a93f248183f0 d96c73c3864fa48a1d500d232d8949d5d5978746 Ex Falso <0slemi0@gmail.com> 1327777872 +0000	commit: trallala
+d96c73c3864fa48a1d500d232d8949d5d5978746 a5de91949523b3162cf69f3365b5914deb6c7b01 Ex Falso <0slemi0@gmail.com> 1327782730 +0000	commit: -Math+Data
diff --git a/.git/logs/refs/remotes/origin/master b/.git/logs/refs/remotes/origin/master
new file mode 100644
--- /dev/null
+++ b/.git/logs/refs/remotes/origin/master
@@ -0,0 +1,5 @@
+0000000000000000000000000000000000000000 99aa7053731bd1edc38de046779e8c96964e8f33 Ex Falso <0slemi0@gmail.com> 1327686779 +0000	update by push
+99aa7053731bd1edc38de046779e8c96964e8f33 a641bc6c77212e090f4a550220875c5169bc1f32 Ex Falso <0slemi0@gmail.com> 1327687099 +0000	update by push
+a641bc6c77212e090f4a550220875c5169bc1f32 b4aab4150265d809e9c0bcd437da8c76baf13058 Ex Falso <0slemi0@gmail.com> 1327708697 +0000	update by push
+b4aab4150265d809e9c0bcd437da8c76baf13058 857c54c007917e49cf3ff111f0d6a93f248183f0 Ex Falso <0slemi0@gmail.com> 1327777669 +0000	update by push
+857c54c007917e49cf3ff111f0d6a93f248183f0 d96c73c3864fa48a1d500d232d8949d5d5978746 Ex Falso <0slemi0@gmail.com> 1327777879 +0000	update by push
diff --git a/.git/objects/00/b10b39f0cc77308f54f0fbb2b028397aac6a10 b/.git/objects/00/b10b39f0cc77308f54f0fbb2b028397aac6a10
new file mode 100644
--- /dev/null
+++ b/.git/objects/00/b10b39f0cc77308f54f0fbb2b028397aac6a10
@@ -0,0 +1,4 @@
+xT]kÛ0Ý³Å¡D¦Á0öBX·0XBY×·ÂPcusd!+í²±ÿÞ«§ãd&¶uÏ½÷£+ßWõ=·oWÆçø<[Îogó%¯äoQ.ÅÝjq%|ê;ÎÇd]Jà[_ú×þµ[xÏó4Á_A;Ò¾äõÆ¨0ËêOªêx¥O?I"×º6ïkeM]å3­+¹âV>~hQ+^æ_/ÝXn©¤
+FÕpLwÏÌc¾îÆ¹;¾Dx:nw¾`ÙQ/ö÷ã03MÁúÀ°÷ÌkÎðq£V¶6:önëOp0 Md7L¢1Î¢0d°´h¬éfT>lñ,sÁËÊU<¨CËS59È¾eªLñnÞü¤Ü«ÌFwjIÜãw¤ÃÀu»ð.uGvÜ}ãª^ñ
+ìQ÷[%m¤Aª÷V\¨mIµI³Q-GÒv¸½{íÝãÙnÚ:É±1X[M¯SLÉJX0:Zå´[Jqõlë¥7©¥1ggäÒªâMMÇ$Ä}G®é0Xçî¦íè
+éÂ1zA·ª¦hTIÎÎ»Ý»­nè«°cÓ+ìcÓÁÃ¾¼ºXx	ÁehrôÒOHH8â@,ÓãZ¸õó¿.}(´{Í1MIØ­­5ÏÜÈ
diff --git a/.git/objects/06/fd435aaf8a10558151c4be78128eb5788611c3 b/.git/objects/06/fd435aaf8a10558151c4be78128eb5788611c3
new file mode 100644
Binary files /dev/null and b/.git/objects/06/fd435aaf8a10558151c4be78128eb5788611c3 differ
diff --git a/.git/objects/07/e90904d0b1fdba9607654a71ca9a19ba89eafa b/.git/objects/07/e90904d0b1fdba9607654a71ca9a19ba89eafa
new file mode 100644
Binary files /dev/null and b/.git/objects/07/e90904d0b1fdba9607654a71ca9a19ba89eafa differ
diff --git a/.git/objects/0d/557788667f248ca931e7028bc7ba397c87fcb1 b/.git/objects/0d/557788667f248ca931e7028bc7ba397c87fcb1
new file mode 100644
Binary files /dev/null and b/.git/objects/0d/557788667f248ca931e7028bc7ba397c87fcb1 differ
diff --git a/.git/objects/0f/32ae80b78ab303c463382b06b91fff13506053 b/.git/objects/0f/32ae80b78ab303c463382b06b91fff13506053
new file mode 100644
Binary files /dev/null and b/.git/objects/0f/32ae80b78ab303c463382b06b91fff13506053 differ
diff --git a/.git/objects/12/3e534b572f11b5e49b4af896ee0e25ba1262ec b/.git/objects/12/3e534b572f11b5e49b4af896ee0e25ba1262ec
new file mode 100644
Binary files /dev/null and b/.git/objects/12/3e534b572f11b5e49b4af896ee0e25ba1262ec differ
diff --git a/.git/objects/19/c89282b62be0fc9fedb582157b41630bef329b b/.git/objects/19/c89282b62be0fc9fedb582157b41630bef329b
new file mode 100644
Binary files /dev/null and b/.git/objects/19/c89282b62be0fc9fedb582157b41630bef329b differ
diff --git a/.git/objects/26/c273af232d38a327bf30c0ea9f8c6d4659da6c b/.git/objects/26/c273af232d38a327bf30c0ea9f8c6d4659da6c
new file mode 100644
Binary files /dev/null and b/.git/objects/26/c273af232d38a327bf30c0ea9f8c6d4659da6c differ
diff --git a/.git/objects/29/b8366661b78592e9b944f9c27a2fd7a1defb2d b/.git/objects/29/b8366661b78592e9b944f9c27a2fd7a1defb2d
new file mode 100644
Binary files /dev/null and b/.git/objects/29/b8366661b78592e9b944f9c27a2fd7a1defb2d differ
diff --git a/.git/objects/2a/7fef7cbb1c9a8c7d4c9c77fab7dee5e6332de2 b/.git/objects/2a/7fef7cbb1c9a8c7d4c9c77fab7dee5e6332de2
new file mode 100644
Binary files /dev/null and b/.git/objects/2a/7fef7cbb1c9a8c7d4c9c77fab7dee5e6332de2 differ
diff --git a/.git/objects/37/e47c18313d1c919fcfe7ddd731b3f841dbe47b b/.git/objects/37/e47c18313d1c919fcfe7ddd731b3f841dbe47b
new file mode 100644
Binary files /dev/null and b/.git/objects/37/e47c18313d1c919fcfe7ddd731b3f841dbe47b differ
diff --git a/.git/objects/39/8e74abe25c3c58fbc771798c5c1b7c27c58d24 b/.git/objects/39/8e74abe25c3c58fbc771798c5c1b7c27c58d24
new file mode 100644
Binary files /dev/null and b/.git/objects/39/8e74abe25c3c58fbc771798c5c1b7c27c58d24 differ
diff --git a/.git/objects/3c/588612900da0a6c88dc3f9c1c7b45d2e72a653 b/.git/objects/3c/588612900da0a6c88dc3f9c1c7b45d2e72a653
new file mode 100644
Binary files /dev/null and b/.git/objects/3c/588612900da0a6c88dc3f9c1c7b45d2e72a653 differ
diff --git a/.git/objects/42/3628620e0e687b7198d457b74588f4caa2afec b/.git/objects/42/3628620e0e687b7198d457b74588f4caa2afec
new file mode 100644
Binary files /dev/null and b/.git/objects/42/3628620e0e687b7198d457b74588f4caa2afec differ
diff --git a/.git/objects/46/e67c4f953106736bc602cd65a2abce6d606cef b/.git/objects/46/e67c4f953106736bc602cd65a2abce6d606cef
new file mode 100644
Binary files /dev/null and b/.git/objects/46/e67c4f953106736bc602cd65a2abce6d606cef differ
diff --git a/.git/objects/5a/d9178110928a7042ec30a847242040c926edd1 b/.git/objects/5a/d9178110928a7042ec30a847242040c926edd1
new file mode 100644
Binary files /dev/null and b/.git/objects/5a/d9178110928a7042ec30a847242040c926edd1 differ
diff --git a/.git/objects/5f/b1a0bc8779cc8740d5ef3ede513c645a6e8a3d b/.git/objects/5f/b1a0bc8779cc8740d5ef3ede513c645a6e8a3d
new file mode 100644
Binary files /dev/null and b/.git/objects/5f/b1a0bc8779cc8740d5ef3ede513c645a6e8a3d differ
diff --git a/.git/objects/62/20fb07d9b4d91d13edfbb84e8ba7d02ed6dd92 b/.git/objects/62/20fb07d9b4d91d13edfbb84e8ba7d02ed6dd92
new file mode 100644
Binary files /dev/null and b/.git/objects/62/20fb07d9b4d91d13edfbb84e8ba7d02ed6dd92 differ
diff --git a/.git/objects/65/0a8fe94d7394d3715fbf93a7497a4486b05cbd b/.git/objects/65/0a8fe94d7394d3715fbf93a7497a4486b05cbd
new file mode 100644
--- /dev/null
+++ b/.git/objects/65/0a8fe94d7394d3715fbf93a7497a4486b05cbd
@@ -0,0 +1,5 @@
+xAoÛ8÷¬_1è©Yé6@/Û-Ñ6YÔT\enXb Ñ	òï÷q-°ØBä¼yóÍÛÝ¾~»ûöGæ_¦þç§ÏíÍÝ__ïRbc753é£;%	;)>i²³lw$Êvýì§~ò½©;:ÍúfwZ¿ìû±^èà¦aNé¹÷ä¦øß|2¸®?ômRj&KvzïmG{ê;üCãñc!r<ºç~üI­»>Í±h°þï$!üýI]ÍäovZ×YN³Ç¾Í ÙìÝÞA!ï[âE?ÓSë¦õ£# hM\ ó{'èxEãÍ	ÆìNu1s¶p±ôÿÍÞ-ýÎµ§Á>òëù]8ÜL44ÞN}s/ÜÏ*qe±øjÙK¢<<ÁNÓûï×q±áeÊñ5Anááö6tÙ±ÃWHNÁÓà<Òaù:E
+Ï*\Ãv5»9
+¶0m"Ò>o
+á_c6ÏHF1k¡IË¥Ù2Å	çJÉ{ó;2kN¬vJ¬ÖÖ²È¹ÒÄÊ_K£Ä¢6RéäÓ¨ü/X¹#þ£R\kÄ¦*Ä ®Xi×)2+ê\« @¥4I!6ÂàilúkÉ%m¸ÊÖPaQ³ýÂ¡×RªQÅY]0EU­*©9±r¡³ÏoÑßóÒ^³¢ø8e"·%WÁúõ´àT¶(xhÆ;h*0Íû)8Ø+ÒDW<8¦véYSój<Â%ålÃV\Óçÿ dµâ`t½ÐFÚpZIGÎ«{qý
+È/©Ö<MrfXl	Â5Ü/j-"3Q®T]!Ë¬w*¡4peFEF¸T» Dö)m×ß±áò04Bëgèä}F*ùª+^f<¸Ae+4¿Áª­d ¼eè o"\%ñxXðÅ"I,å÷ÐÈßcõZc"]gë3îÛä_ÞÀØã
diff --git a/.git/objects/76/84b63d04b74e58f9f9205681a63eae283d36bb b/.git/objects/76/84b63d04b74e58f9f9205681a63eae283d36bb
new file mode 100644
--- /dev/null
+++ b/.git/objects/76/84b63d04b74e58f9f9205681a63eae283d36bb
@@ -0,0 +1,3 @@
+xMKÃ@=çW¼Ð	´,¶P?/%
+~\J)i2¥ÛlØlcEüïÎfc4©`÷yßg²j³óA³itÿ2½¿ÅS¢rJßszµW>î$í^«ÌÐÞè>=o«Ò$<jµ[aÞñ¶!M'¶¹ÒÏ(¾o¯DMÊöÑJ§y.EQò³û`4oK¯e\Èúuú`<ñPµcIL` C+`§·bóVÕÂ3J()±åcXÎK;3_8}.Ç"×JÇR"-·RÝø¿f¿#ÚíÊÓµÄ²æ5£xÍvDú+Û8òÝf®t%0©5RQcRâöçÌ2ø%Fì]¦ÞÖ)ü|§	þ0`¸dAÁôRE*¥
+»ÎåîÇ±~µdÊ¼²=Å¤ÓÊþÒIw0!#A¦:RæË=?Fì­iÀ8Öt¿ÙnÅ·öh!ý
diff --git a/.git/objects/82/e3a754b6a0fcb238b03c0e47d05219fbf9cf89 b/.git/objects/82/e3a754b6a0fcb238b03c0e47d05219fbf9cf89
new file mode 100644
Binary files /dev/null and b/.git/objects/82/e3a754b6a0fcb238b03c0e47d05219fbf9cf89 differ
diff --git a/.git/objects/83/4e1c743de59f4940c7533b3e3b7c848dbee19b b/.git/objects/83/4e1c743de59f4940c7533b3e3b7c848dbee19b
new file mode 100644
Binary files /dev/null and b/.git/objects/83/4e1c743de59f4940c7533b3e3b7c848dbee19b differ
diff --git a/.git/objects/85/7c54c007917e49cf3ff111f0d6a93f248183f0 b/.git/objects/85/7c54c007917e49cf3ff111f0d6a93f248183f0
new file mode 100644
Binary files /dev/null and b/.git/objects/85/7c54c007917e49cf3ff111f0d6a93f248183f0 differ
diff --git a/.git/objects/85/c62c1e8f074244a50ba454157738eae96a0ae2 b/.git/objects/85/c62c1e8f074244a50ba454157738eae96a0ae2
new file mode 100644
Binary files /dev/null and b/.git/objects/85/c62c1e8f074244a50ba454157738eae96a0ae2 differ
diff --git a/.git/objects/8d/50d2c1e71e4d35746b2e246f4dbc2c6dbdc6ad b/.git/objects/8d/50d2c1e71e4d35746b2e246f4dbc2c6dbdc6ad
new file mode 100644
Binary files /dev/null and b/.git/objects/8d/50d2c1e71e4d35746b2e246f4dbc2c6dbdc6ad differ
diff --git a/.git/objects/8d/fda0fd31f3cd684948aa52d50595feea7c01f7 b/.git/objects/8d/fda0fd31f3cd684948aa52d50595feea7c01f7
new file mode 100644
Binary files /dev/null and b/.git/objects/8d/fda0fd31f3cd684948aa52d50595feea7c01f7 differ
diff --git a/.git/objects/90/c82970b4a64430b234a38430ce6334d9fc5a20 b/.git/objects/90/c82970b4a64430b234a38430ce6334d9fc5a20
new file mode 100644
Binary files /dev/null and b/.git/objects/90/c82970b4a64430b234a38430ce6334d9fc5a20 differ
diff --git a/.git/objects/93/c52a9c1add5c6dc6497e866c19a4c779c96e90 b/.git/objects/93/c52a9c1add5c6dc6497e866c19a4c779c96e90
new file mode 100644
Binary files /dev/null and b/.git/objects/93/c52a9c1add5c6dc6497e866c19a4c779c96e90 differ
diff --git a/.git/objects/94/414d3c0c39187c9d654ea727bf9a8844077827 b/.git/objects/94/414d3c0c39187c9d654ea727bf9a8844077827
new file mode 100644
Binary files /dev/null and b/.git/objects/94/414d3c0c39187c9d654ea727bf9a8844077827 differ
diff --git a/.git/objects/99/aa7053731bd1edc38de046779e8c96964e8f33 b/.git/objects/99/aa7053731bd1edc38de046779e8c96964e8f33
new file mode 100644
Binary files /dev/null and b/.git/objects/99/aa7053731bd1edc38de046779e8c96964e8f33 differ
diff --git a/.git/objects/9a/aeda6a684e8d2bbaf610ece69dce0aa14cafb9 b/.git/objects/9a/aeda6a684e8d2bbaf610ece69dce0aa14cafb9
new file mode 100644
Binary files /dev/null and b/.git/objects/9a/aeda6a684e8d2bbaf610ece69dce0aa14cafb9 differ
diff --git a/.git/objects/a3/d98a5a5638a76009521993f83ca7831f8daf79 b/.git/objects/a3/d98a5a5638a76009521993f83ca7831f8daf79
new file mode 100644
Binary files /dev/null and b/.git/objects/a3/d98a5a5638a76009521993f83ca7831f8daf79 differ
diff --git a/.git/objects/a4/8da3430018abd5c0ccf471d5876843406589ef b/.git/objects/a4/8da3430018abd5c0ccf471d5876843406589ef
new file mode 100644
Binary files /dev/null and b/.git/objects/a4/8da3430018abd5c0ccf471d5876843406589ef differ
diff --git a/.git/objects/a5/4dd0c4585cd807a1eea43857fbf3c020612315 b/.git/objects/a5/4dd0c4585cd807a1eea43857fbf3c020612315
new file mode 100644
Binary files /dev/null and b/.git/objects/a5/4dd0c4585cd807a1eea43857fbf3c020612315 differ
diff --git a/.git/objects/a5/de91949523b3162cf69f3365b5914deb6c7b01 b/.git/objects/a5/de91949523b3162cf69f3365b5914deb6c7b01
new file mode 100644
Binary files /dev/null and b/.git/objects/a5/de91949523b3162cf69f3365b5914deb6c7b01 differ
diff --git a/.git/objects/a6/41bc6c77212e090f4a550220875c5169bc1f32 b/.git/objects/a6/41bc6c77212e090f4a550220875c5169bc1f32
new file mode 100644
--- /dev/null
+++ b/.git/objects/a6/41bc6c77212e090f4a550220875c5169bc1f32
@@ -0,0 +1,2 @@
+xK
+Â0@]ç³$éä7 âFï1M¦Zl¤=¾½oùàÁKµ¹Ã`ô®7%[KDÁ³1M"!?Zë³;'dõâ&ÏDÌA;hÆl$'Y´õ!ÄD¼8!*~÷{mpùÂµÂQ¯Yoçåj9Á!ø4°×j³Û];õ©í±ªM@¡
diff --git a/.git/objects/a7/e3ec3b8e91966177e7fc8282031439724012a3 b/.git/objects/a7/e3ec3b8e91966177e7fc8282031439724012a3
new file mode 100644
--- /dev/null
+++ b/.git/objects/a7/e3ec3b8e91966177e7fc8282031439724012a3
@@ -0,0 +1,4 @@
+xË
+Â0DÝ¯¸ +Ü¸ºTÄ
+-ºNbbinIRðóM»9Ãt$aw:.êgÛTøÎÖX¡½¤Æ¬Jh¬vR¤!ec"í!a×ÛýÒT/­¼Ð­÷35Òe÷ÌßNp^JëË^XëÍô]äG
+ÆÓÂg9ôùÐÀw6±?3þ
diff --git a/.git/objects/a9/1990e597f74fb4530f1832879dcf34802c7ffb b/.git/objects/a9/1990e597f74fb4530f1832879dcf34802c7ffb
new file mode 100644
Binary files /dev/null and b/.git/objects/a9/1990e597f74fb4530f1832879dcf34802c7ffb differ
diff --git a/.git/objects/ab/35f9ca0d521602a819057c6b5854cb02e10f77 b/.git/objects/ab/35f9ca0d521602a819057c6b5854cb02e10f77
new file mode 100644
Binary files /dev/null and b/.git/objects/ab/35f9ca0d521602a819057c6b5854cb02e10f77 differ
diff --git a/.git/objects/ab/db1d36582253483bd1cecd8131398539ffd675 b/.git/objects/ab/db1d36582253483bd1cecd8131398539ffd675
new file mode 100644
--- /dev/null
+++ b/.git/objects/ab/db1d36582253483bd1cecd8131398539ffd675
@@ -0,0 +1,3 @@
+xKKÃ@]çWpa6H\YT¨º©QP»irK¦0Føß½©µ;ÀÜ×óÝÌáìôäàspÉ(?Æ·xÌtEùÓª¢©0RÌÕ8|ÁBçKE¸¶þHÛ¯\H»Â{A@.*mìvÉ!JÒ)eé¦áZÖhªJÉLXÙð°ßÀpÐ^+Q×(á®¯..¬Ï^²X.áP¢p}ØK§êÕ?gµJÐPëÊ/à4xÝÌË«×çs,r®P
+e¼·ÜVuGâÿÃhg¶Z#^×ÞÖ¼&$ælGæ[Ù£Ð3½2¢Ì
+4°©Ê9rY[gÒà®s¶ aa½«¼Å»¡u°ZBG,×ªiÌ0+´®)Õ9µØÝã\î'Ghk$SæýÙã^Lz£¼á_(½tH0<¿7©¶{XvÜù5ân¼?p5Ý¶Ûrã­}çö&Â
diff --git a/.git/objects/af/33d1ad16cfb32309ba703dd720591faae18a75 b/.git/objects/af/33d1ad16cfb32309ba703dd720591faae18a75
new file mode 100644
Binary files /dev/null and b/.git/objects/af/33d1ad16cfb32309ba703dd720591faae18a75 differ
diff --git a/.git/objects/b0/a19fe6ac543d144ff54c62c3e255592fefc824 b/.git/objects/b0/a19fe6ac543d144ff54c62c3e255592fefc824
new file mode 100644
Binary files /dev/null and b/.git/objects/b0/a19fe6ac543d144ff54c62c3e255592fefc824 differ
diff --git a/.git/objects/b4/aab4150265d809e9c0bcd437da8c76baf13058 b/.git/objects/b4/aab4150265d809e9c0bcd437da8c76baf13058
new file mode 100644
Binary files /dev/null and b/.git/objects/b4/aab4150265d809e9c0bcd437da8c76baf13058 differ
diff --git a/.git/objects/b4/fc60fc8dd90d22930683fae609f7d3661ca571 b/.git/objects/b4/fc60fc8dd90d22930683fae609f7d3661ca571
new file mode 100644
Binary files /dev/null and b/.git/objects/b4/fc60fc8dd90d22930683fae609f7d3661ca571 differ
diff --git a/.git/objects/b6/aef187ba379602722f4a62cde5621c23634f1d b/.git/objects/b6/aef187ba379602722f4a62cde5621c23634f1d
new file mode 100644
Binary files /dev/null and b/.git/objects/b6/aef187ba379602722f4a62cde5621c23634f1d differ
diff --git a/.git/objects/bb/4251f0ad31bd03b9479cc582162eeff7c7255e b/.git/objects/bb/4251f0ad31bd03b9479cc582162eeff7c7255e
new file mode 100644
Binary files /dev/null and b/.git/objects/bb/4251f0ad31bd03b9479cc582162eeff7c7255e differ
diff --git a/.git/objects/bd/8de172513662ff38c63599dcaf544606e17846 b/.git/objects/bd/8de172513662ff38c63599dcaf544606e17846
new file mode 100644
Binary files /dev/null and b/.git/objects/bd/8de172513662ff38c63599dcaf544606e17846 differ
diff --git a/.git/objects/be/d4499975954938cfeefa9196b446deea51df3a b/.git/objects/be/d4499975954938cfeefa9196b446deea51df3a
new file mode 100644
Binary files /dev/null and b/.git/objects/be/d4499975954938cfeefa9196b446deea51df3a differ
diff --git a/.git/objects/c2/81c8ebc9cd4d512e6383de5d7201c3e0a59e8e b/.git/objects/c2/81c8ebc9cd4d512e6383de5d7201c3e0a59e8e
new file mode 100644
Binary files /dev/null and b/.git/objects/c2/81c8ebc9cd4d512e6383de5d7201c3e0a59e8e differ
diff --git a/.git/objects/c9/0db81e7bf359e9f4d65993d39462e403a1c6d3 b/.git/objects/c9/0db81e7bf359e9f4d65993d39462e403a1c6d3
new file mode 100644
Binary files /dev/null and b/.git/objects/c9/0db81e7bf359e9f4d65993d39462e403a1c6d3 differ
diff --git a/.git/objects/d6/b9dc0d1415d869aeb957352de64c138d32e1b1 b/.git/objects/d6/b9dc0d1415d869aeb957352de64c138d32e1b1
new file mode 100644
Binary files /dev/null and b/.git/objects/d6/b9dc0d1415d869aeb957352de64c138d32e1b1 differ
diff --git a/.git/objects/d8/8c0a87ef2830d566e48dc3a32204feb57c3198 b/.git/objects/d8/8c0a87ef2830d566e48dc3a32204feb57c3198
new file mode 100644
Binary files /dev/null and b/.git/objects/d8/8c0a87ef2830d566e48dc3a32204feb57c3198 differ
diff --git a/.git/objects/d9/6a9d2f81e91ad399aae42719effb5a87550f29 b/.git/objects/d9/6a9d2f81e91ad399aae42719effb5a87550f29
new file mode 100644
Binary files /dev/null and b/.git/objects/d9/6a9d2f81e91ad399aae42719effb5a87550f29 differ
diff --git a/.git/objects/d9/6c73c3864fa48a1d500d232d8949d5d5978746 b/.git/objects/d9/6c73c3864fa48a1d500d232d8949d5d5978746
new file mode 100644
--- /dev/null
+++ b/.git/objects/d9/6c73c3864fa48a1d500d232d8949d5d5978746
@@ -0,0 +1,4 @@
+xÁ
+B!E[ûîÑñ©Ñ¦þc²±hÏ ÏÏ_è,/çÂI­Öuhv7º.-&¡;¸19Bç½Â£ÞÜå5¦ï£à#z¡²Í3Ü6
+lÅñl]_¾úÊekú[ºÂùQy-ÔêI£5~¼Ñ{¨¹Îº!ÿþÔè\
+V?D²@
diff --git a/.git/objects/dc/f9fbfc7ff756f42ee7eac86f48e1edf4e3f327 b/.git/objects/dc/f9fbfc7ff756f42ee7eac86f48e1edf4e3f327
new file mode 100644
Binary files /dev/null and b/.git/objects/dc/f9fbfc7ff756f42ee7eac86f48e1edf4e3f327 differ
diff --git a/.git/objects/e0/2d6d61db4c1f442b4703825d9efe2a1c9d637e b/.git/objects/e0/2d6d61db4c1f442b4703825d9efe2a1c9d637e
new file mode 100644
Binary files /dev/null and b/.git/objects/e0/2d6d61db4c1f442b4703825d9efe2a1c9d637e differ
diff --git a/.git/objects/e6/9de29bb2d1d6434b8b29ae775ad8c2e48c5391 b/.git/objects/e6/9de29bb2d1d6434b8b29ae775ad8c2e48c5391
new file mode 100644
Binary files /dev/null and b/.git/objects/e6/9de29bb2d1d6434b8b29ae775ad8c2e48c5391 differ
diff --git a/.git/objects/e6/ffd01a5f6d51978d3a00b7948159107f28d2e2 b/.git/objects/e6/ffd01a5f6d51978d3a00b7948159107f28d2e2
new file mode 100644
Binary files /dev/null and b/.git/objects/e6/ffd01a5f6d51978d3a00b7948159107f28d2e2 differ
diff --git a/.git/objects/e7/f93b04ffa5eddafe27e79bc5e5c01de8bfeb20 b/.git/objects/e7/f93b04ffa5eddafe27e79bc5e5c01de8bfeb20
new file mode 100644
Binary files /dev/null and b/.git/objects/e7/f93b04ffa5eddafe27e79bc5e5c01de8bfeb20 differ
diff --git a/.git/objects/e8/0c4d1d8769cd6de088435182a6cb83cb43c021 b/.git/objects/e8/0c4d1d8769cd6de088435182a6cb83cb43c021
new file mode 100644
--- /dev/null
+++ b/.git/objects/e8/0c4d1d8769cd6de088435182a6cb83cb43c021
@@ -0,0 +1,4 @@
+xT]kÛ0Ý³Å¡D¦Á0öBØG,¡¬ë[a¨±º)²vÙØï,§ãd&¶uÏ½÷£+ß©êÅÛ7Å«?ãs|-ç7³ùGÌ+ù[Kñä¶F|V>Jýçã¿I²®ÊXp÷_Ùê×þs[xÏó4Á_A;2¡äÕÆ¨Ô`êÏºúx¥OÂ$kSY÷v¶RùÌ%WÜÉGÑ-*ÍËü«à¥°Ã±kÇÔQõÓÝ3o »õî/Ñ<·/¸Ê¾`ÙQ/ö÷ã03MÁúÀfïYÐáÓF¯\e3tì9Ý6$à<`@&Én0Dc¼EÍ-ÀÒ¢v¶clQy¿Åk°Ì/.^J.¯xP§(+r}Ï uâÝ¼þI+-¸WnõyÀïH7×íÂ»ÔydaÆsUµâ
+ìQ÷-]¤Aª÷V|¨mIM»Ñ-GÒv¸½{íýãÙnÚ:É±1X[Í¬SLÉ%Ê÷5­rÚ-¥Ç8ÉfI¶uÈÒÔÞÒ³3ri¥x]GSaâñ	ñß+:Î{gº¤i»ºIÍ1zA·ª¦¨uIÎÎ»Ý»­®é«°cÓ+bÓÁÃ¾¼¦X	Ë0äè¥<pÄX¦Çµð#&ç](ú6Ph9÷yc
+f·
+´Ö<oXÜØ
diff --git a/.git/objects/ea/026c3c3470364bb1c01a3d8712aeb4ceed35b8 b/.git/objects/ea/026c3c3470364bb1c01a3d8712aeb4ceed35b8
new file mode 100644
Binary files /dev/null and b/.git/objects/ea/026c3c3470364bb1c01a3d8712aeb4ceed35b8 differ
diff --git a/.git/objects/ed/84f27853725aa00bb2a896cba49bfc5b4686a0 b/.git/objects/ed/84f27853725aa00bb2a896cba49bfc5b4686a0
new file mode 100644
Binary files /dev/null and b/.git/objects/ed/84f27853725aa00bb2a896cba49bfc5b4686a0 differ
diff --git a/.git/objects/ee/c1eebf3349cf071fe2ae94229557093ca9c16c b/.git/objects/ee/c1eebf3349cf071fe2ae94229557093ca9c16c
new file mode 100644
Binary files /dev/null and b/.git/objects/ee/c1eebf3349cf071fe2ae94229557093ca9c16c differ
diff --git a/.git/objects/f0/556be7f3e7351cbf07029cde18588c7fc146f7 b/.git/objects/f0/556be7f3e7351cbf07029cde18588c7fc146f7
new file mode 100644
--- /dev/null
+++ b/.git/objects/f0/556be7f3e7351cbf07029cde18588c7fc146f7
@@ -0,0 +1,3 @@
+xT]kÛ0Ý³Å¡D¦ÁeBØG,!¬ë[a¨±º)²lì¿ïÊ]ÅñÂBÀ²î=÷ståY? ¸~sýê÷ôëåÝbùK¡á²ú%Êµx¶-ÞS=Uê;.§dW{)°1ÂÚëy&Yl$¤[ðfoXËñýOªjIñüC$ÕN×Æâ]­¬©e¾ÐZV[n«'1­jÅËüà¥0ã±[Ë-T^P²Ç¼_³6ç+èi7ÓøÕÀØ·f¾/Ø)0;V=Döï§È4ëKýÉ±Vs{µµµÉÙs¾m<ÃyÄ4Mþ1cE~jV`iÑX&¬z<à5XæWW/%×ÒU<©CÛs59È¾e¨Tâí¼ùI;]ò 2Ü«	f)ò6¿'í§,îÂcê<0iÚqoËzË%Ø=£îwª²©>Úq¡®%iÔ&IÌ^uIÛéñµw/gý´EàÐ¬«¦w)æäî\Çv@îHi&YïPmYz«³4@qqA.m%o`*t¸~ !î°¡Ë`w:&MÇÐßç¸ð¸Èä¯ÑKv§jFäÜà<î·º¥¯BÏfP¸Í;Nl7Çò
+èbL`ÑJð.C£7.ñäÀ?e\7¢íäü¯ÅÐ
+çA3gLASâO«@gÍ_ÿ?Ò!
diff --git a/.git/objects/f6/edc26af0f6b0d0c9dbda2d7da11d6f4009e4eb b/.git/objects/f6/edc26af0f6b0d0c9dbda2d7da11d6f4009e4eb
new file mode 100644
--- /dev/null
+++ b/.git/objects/f6/edc26af0f6b0d0c9dbda2d7da11d6f4009e4eb
@@ -0,0 +1,4 @@
+xM±
+@DSßWLç$"öéÛ4jäà<sø÷Q³©vy¼éÜØ!ÏòÓ0Þ_PGb^´45g5vó")Õ»vÄE
+1QÐWÏ¸Th8Zÿ0Û+$X©£z}V±îÕZûËÿ{åwEßüfD
+Îö-<$ÙM½Bþ
diff --git a/.git/refs/heads/master b/.git/refs/heads/master
new file mode 100644
--- /dev/null
+++ b/.git/refs/heads/master
@@ -0,0 +1,1 @@
+a5de91949523b3162cf69f3365b5914deb6c7b01
diff --git a/.git/refs/remotes/origin/master b/.git/refs/remotes/origin/master
new file mode 100644
--- /dev/null
+++ b/.git/refs/remotes/origin/master
@@ -0,0 +1,1 @@
+d96c73c3864fa48a1d500d232d8949d5d5978746
diff --git a/.gitignore b/.gitignore
new file mode 100644
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,4 @@
+*.hi
+*.o
+*.bak
+bin/
diff --git a/LICENSE b/LICENSE
new file mode 100644
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,30 @@
+Copyright (c)2012, Andras Slemmer
+
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright
+      notice, this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above
+      copyright notice, this list of conditions and the following
+      disclaimer in the documentation and/or other materials provided
+      with the distribution.
+
+    * Neither the name of Andras Slemmer nor the names of other
+      contributors may be used to endorse or promote products derived
+      from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/ProxN.cabal b/ProxN.cabal
new file mode 100644
--- /dev/null
+++ b/ProxN.cabal
@@ -0,0 +1,71 @@
+-- ProxN.cabal auto-generated by cabal init. For additional options,
+-- see
+-- http://www.haskell.org/cabal/release/cabal-latest/doc/users-guide/authors.html#pkg-descr.
+-- The name of the package.
+Name:                ProxN
+
+-- The package version. See the Haskell package versioning policy
+-- (http://www.haskell.org/haskellwiki/Package_versioning_policy) for
+-- standards guiding when and how versions should be incremented.
+Version:             0.0.1
+
+-- A short (one-line) description of the package.
+Synopsis: Proximity sets in N dimensions
+
+-- A longer description of the package.
+-- Description:         
+
+Homepage:            https://github.com/exFalso/ProxN
+
+-- The license under which the package is released.
+License:             BSD3
+
+-- The file containing the license text.
+License-file:        LICENSE
+
+-- The package author(s).
+Author:              Andras Slemmer
+
+-- An email address to which users can send suggestions, bug reports,
+-- and patches.
+Maintainer:          0slemi0@gmail.com
+
+-- A copyright notice.
+-- Copyright:           
+
+Category:            Math
+
+Build-type:          Simple
+
+-- Extra files to be distributed with the package, such as examples or
+-- a README.
+-- Extra-source-files:  
+
+-- Constraint on the version of Cabal needed to build this package.
+Cabal-version:       >=1.2
+
+
+Library
+  Hs-Source-Dirs:
+        src
+  -- Modules exported by the library.
+  Exposed-modules:
+        Data.ProxN.Peano
+        Data.ProxN.Pretty
+        Data.ProxN.Proximity
+        Data.ProxN.Show1
+        Data.ProxN.Tree2N
+        Data.ProxN.VecN
+  
+  -- Packages needed in order to build this package.
+  Build-depends:
+    base < 5,
+    mtl
+
+  Ghc-Options: -Wall
+  -- Modules not exported by this package.
+  -- Other-modules:       
+  
+  -- Extra tools (e.g. alex, hsc2hs, ...) needed to build the source.
+  -- Build-tools:         
+  
diff --git a/Setup.hs b/Setup.hs
new file mode 100644
--- /dev/null
+++ b/Setup.hs
@@ -0,0 +1,2 @@
+import Distribution.Simple
+main = defaultMain
diff --git a/core b/core
new file mode 100644
# file too large to diff: core
diff --git a/dist/build/Data/ProxN/Peano.hi b/dist/build/Data/ProxN/Peano.hi
new file mode 100644
Binary files /dev/null and b/dist/build/Data/ProxN/Peano.hi differ
diff --git a/dist/build/Data/ProxN/Peano.o b/dist/build/Data/ProxN/Peano.o
new file mode 100644
Binary files /dev/null and b/dist/build/Data/ProxN/Peano.o differ
diff --git a/dist/build/Data/ProxN/Peano.p_hi b/dist/build/Data/ProxN/Peano.p_hi
new file mode 100644
Binary files /dev/null and b/dist/build/Data/ProxN/Peano.p_hi differ
diff --git a/dist/build/Data/ProxN/Peano.p_o b/dist/build/Data/ProxN/Peano.p_o
new file mode 100644
Binary files /dev/null and b/dist/build/Data/ProxN/Peano.p_o differ
diff --git a/dist/build/Data/ProxN/Pretty.hi b/dist/build/Data/ProxN/Pretty.hi
new file mode 100644
Binary files /dev/null and b/dist/build/Data/ProxN/Pretty.hi differ
diff --git a/dist/build/Data/ProxN/Pretty.o b/dist/build/Data/ProxN/Pretty.o
new file mode 100644
Binary files /dev/null and b/dist/build/Data/ProxN/Pretty.o differ
diff --git a/dist/build/Data/ProxN/Pretty.p_hi b/dist/build/Data/ProxN/Pretty.p_hi
new file mode 100644
Binary files /dev/null and b/dist/build/Data/ProxN/Pretty.p_hi differ
diff --git a/dist/build/Data/ProxN/Pretty.p_o b/dist/build/Data/ProxN/Pretty.p_o
new file mode 100644
Binary files /dev/null and b/dist/build/Data/ProxN/Pretty.p_o differ
diff --git a/dist/build/Data/ProxN/Proximity.hi b/dist/build/Data/ProxN/Proximity.hi
new file mode 100644
Binary files /dev/null and b/dist/build/Data/ProxN/Proximity.hi differ
diff --git a/dist/build/Data/ProxN/Proximity.o b/dist/build/Data/ProxN/Proximity.o
new file mode 100644
Binary files /dev/null and b/dist/build/Data/ProxN/Proximity.o differ
diff --git a/dist/build/Data/ProxN/Proximity.p_hi b/dist/build/Data/ProxN/Proximity.p_hi
new file mode 100644
Binary files /dev/null and b/dist/build/Data/ProxN/Proximity.p_hi differ
diff --git a/dist/build/Data/ProxN/Proximity.p_o b/dist/build/Data/ProxN/Proximity.p_o
new file mode 100644
Binary files /dev/null and b/dist/build/Data/ProxN/Proximity.p_o differ
diff --git a/dist/build/Data/ProxN/Show1.hi b/dist/build/Data/ProxN/Show1.hi
new file mode 100644
Binary files /dev/null and b/dist/build/Data/ProxN/Show1.hi differ
diff --git a/dist/build/Data/ProxN/Show1.o b/dist/build/Data/ProxN/Show1.o
new file mode 100644
Binary files /dev/null and b/dist/build/Data/ProxN/Show1.o differ
diff --git a/dist/build/Data/ProxN/Show1.p_hi b/dist/build/Data/ProxN/Show1.p_hi
new file mode 100644
Binary files /dev/null and b/dist/build/Data/ProxN/Show1.p_hi differ
diff --git a/dist/build/Data/ProxN/Show1.p_o b/dist/build/Data/ProxN/Show1.p_o
new file mode 100644
Binary files /dev/null and b/dist/build/Data/ProxN/Show1.p_o differ
diff --git a/dist/build/Data/ProxN/Tree2N.hi b/dist/build/Data/ProxN/Tree2N.hi
new file mode 100644
Binary files /dev/null and b/dist/build/Data/ProxN/Tree2N.hi differ
diff --git a/dist/build/Data/ProxN/Tree2N.o b/dist/build/Data/ProxN/Tree2N.o
new file mode 100644
Binary files /dev/null and b/dist/build/Data/ProxN/Tree2N.o differ
diff --git a/dist/build/Data/ProxN/Tree2N.p_hi b/dist/build/Data/ProxN/Tree2N.p_hi
new file mode 100644
Binary files /dev/null and b/dist/build/Data/ProxN/Tree2N.p_hi differ
diff --git a/dist/build/Data/ProxN/Tree2N.p_o b/dist/build/Data/ProxN/Tree2N.p_o
new file mode 100644
Binary files /dev/null and b/dist/build/Data/ProxN/Tree2N.p_o differ
diff --git a/dist/build/Data/ProxN/VecN.hi b/dist/build/Data/ProxN/VecN.hi
new file mode 100644
Binary files /dev/null and b/dist/build/Data/ProxN/VecN.hi differ
diff --git a/dist/build/Data/ProxN/VecN.o b/dist/build/Data/ProxN/VecN.o
new file mode 100644
Binary files /dev/null and b/dist/build/Data/ProxN/VecN.o differ
diff --git a/dist/build/Data/ProxN/VecN.p_hi b/dist/build/Data/ProxN/VecN.p_hi
new file mode 100644
Binary files /dev/null and b/dist/build/Data/ProxN/VecN.p_hi differ
diff --git a/dist/build/Data/ProxN/VecN.p_o b/dist/build/Data/ProxN/VecN.p_o
new file mode 100644
Binary files /dev/null and b/dist/build/Data/ProxN/VecN.p_o differ
diff --git a/dist/build/HSProxN-0.0.1.o b/dist/build/HSProxN-0.0.1.o
new file mode 100644
Binary files /dev/null and b/dist/build/HSProxN-0.0.1.o differ
diff --git a/dist/build/autogen/Paths_ProxN.hs b/dist/build/autogen/Paths_ProxN.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Paths_ProxN.hs
@@ -0,0 +1,29 @@
+module Paths_ProxN (
+    version,
+    getBinDir, getLibDir, getDataDir, getLibexecDir,
+    getDataFileName
+  ) where
+
+import Data.Version (Version(..))
+import System.Environment (getEnv)
+
+version :: Version
+version = Version {versionBranch = [0,0,1], versionTags = []}
+
+bindir, libdir, datadir, libexecdir :: FilePath
+
+bindir     = "/home/exfalso/.cabal/bin"
+libdir     = "/home/exfalso/.cabal/lib/ProxN-0.0.1/ghc-7.2.2"
+datadir    = "/home/exfalso/.cabal/share/ProxN-0.0.1"
+libexecdir = "/home/exfalso/.cabal/libexec"
+
+getBinDir, getLibDir, getDataDir, getLibexecDir :: IO FilePath
+getBinDir = catch (getEnv "ProxN_bindir") (\_ -> return bindir)
+getLibDir = catch (getEnv "ProxN_libdir") (\_ -> return libdir)
+getDataDir = catch (getEnv "ProxN_datadir") (\_ -> return datadir)
+getLibexecDir = catch (getEnv "ProxN_libexecdir") (\_ -> return libexecdir)
+
+getDataFileName :: FilePath -> IO FilePath
+getDataFileName name = do
+  dir <- getDataDir
+  return (dir ++ "/" ++ name)
diff --git a/dist/build/autogen/cabal_macros.h b/dist/build/autogen/cabal_macros.h
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/cabal_macros.h
@@ -0,0 +1,16 @@
+/* DO NOT EDIT: This file is automatically generated by Cabal */
+
+/* package base-4.4.1.0 */
+#define VERSION_base "4.4.1.0"
+#define MIN_VERSION_base(major1,major2,minor) (\
+  (major1) <  4 || \
+  (major1) == 4 && (major2) <  4 || \
+  (major1) == 4 && (major2) == 4 && (minor) <= 1)
+
+/* package mtl-2.0.1.0 */
+#define VERSION_mtl "2.0.1.0"
+#define MIN_VERSION_mtl(major1,major2,minor) (\
+  (major1) <  2 || \
+  (major1) == 2 && (major2) <  0 || \
+  (major1) == 2 && (major2) == 0 && (minor) <= 1)
+
diff --git a/dist/build/libHSProxN-0.0.1.a b/dist/build/libHSProxN-0.0.1.a
new file mode 100644
Binary files /dev/null and b/dist/build/libHSProxN-0.0.1.a differ
diff --git a/dist/build/libHSProxN-0.0.1_p.a b/dist/build/libHSProxN-0.0.1_p.a
new file mode 100644
Binary files /dev/null and b/dist/build/libHSProxN-0.0.1_p.a differ
diff --git a/dist/package.conf.inplace b/dist/package.conf.inplace
new file mode 100644
--- /dev/null
+++ b/dist/package.conf.inplace
@@ -0,0 +1,2 @@
+[InstalledPackageInfo {installedPackageId = InstalledPackageId "ProxN-0.0.1-inplace", sourcePackageId = PackageIdentifier {pkgName = PackageName "ProxN", pkgVersion = Version {versionBranch = [0,0,1], versionTags = []}}, license = BSD3, copyright = "", maintainer = "0slemi0@gmail.com", author = "Andras Slemmer", stability = "", homepage = "https://github.com/exFalso/ProxN", pkgUrl = "", synopsis = "", description = "", category = "Math", exposed = True, exposedModules = ["Data.ProxN.Peano","Data.ProxN.Pretty","Data.ProxN.Proximity","Data.ProxN.Show1","Data.ProxN.Tree2N","Data.ProxN.VecN"], hiddenModules = [], trusted = True, importDirs = ["/data/home/pater/Programming/Haskell/ProxN/dist/build"], libraryDirs = ["/data/home/pater/Programming/Haskell/ProxN/dist/build"], hsLibraries = ["HSProxN-0.0.1"], extraLibraries = [], extraGHCiLibraries = [], includeDirs = [], includes = [], depends = [InstalledPackageId "base-4.4.1.0-0b74da1b5cceb1549c5473c9b76bf860",InstalledPackageId "mtl-2.0.1.0-f81ce3282fa6adb03e0cd48bfcccec53"], hugsOptions = [], ccOptions = [], ldOptions = [], frameworkDirs = [], frameworks = [], haddockInterfaces = ["/data/home/pater/Programming/Haskell/ProxN/dist/doc/html/ProxN/ProxN.haddock"], haddockHTMLs = ["/data/home/pater/Programming/Haskell/ProxN/dist/doc/html/ProxN"]}
+]
diff --git a/dist/setup-config b/dist/setup-config
new file mode 100644
--- /dev/null
+++ b/dist/setup-config
@@ -0,0 +1,2 @@
+Saved package config for ProxN-0.0.1 written by Cabal-1.10.1.0 using ghc-7.0
+LocalBuildInfo {configFlags = ConfigFlags {configPrograms = [], configProgramPaths = [], configProgramArgs = [], configHcFlavor = Flag GHC, configHcPath = NoFlag, configHcPkg = NoFlag, configVanillaLib = Flag True, configProfLib = Flag True, configSharedLib = Flag False, configProfExe = Flag True, configConfigureArgs = [], configOptimization = Flag NormalOptimisation, configProgPrefix = Flag "", configProgSuffix = Flag "", configInstallDirs = InstallDirs {prefix = Flag "/home/exfalso/.cabal", bindir = NoFlag, libdir = NoFlag, libsubdir = NoFlag, dynlibdir = NoFlag, libexecdir = NoFlag, progdir = NoFlag, includedir = NoFlag, datadir = NoFlag, datasubdir = NoFlag, docdir = NoFlag, mandir = NoFlag, htmldir = NoFlag, haddockdir = NoFlag}, configScratchDir = NoFlag, configExtraLibDirs = [], configExtraIncludeDirs = [], configDistPref = Flag "dist", configVerbosity = Flag Normal, configUserInstall = Flag True, configPackageDB = NoFlag, configGHCiLib = Flag True, configSplitObjs = Flag False, configStripExes = Flag True, configConstraints = [Dependency (PackageName "base") (ThisVersion (Version {versionBranch = [4,4,1,0], versionTags = []})),Dependency (PackageName "mtl") (ThisVersion (Version {versionBranch = [2,0,1,0], versionTags = []}))], configConfigurationsFlags = [], configTests = Flag False}, extraConfigArgs = [], installDirTemplates = InstallDirs {prefix = "/home/exfalso/.cabal", bindir = "$prefix/bin", libdir = "$prefix/lib", libsubdir = "$pkgid/$compiler", dynlibdir = "$libdir", libexecdir = "$prefix/libexec", progdir = "$libdir/hugs/programs", includedir = "$libdir/$libsubdir/include", datadir = "$prefix/share", datasubdir = "$pkgid", docdir = "$datadir/doc/$pkgid", mandir = "$datadir/man", htmldir = "$docdir/html", haddockdir = "$htmldir"}, compiler = Compiler {compilerId = CompilerId GHC (Version {versionBranch = [7,2,2], versionTags = []}), compilerLanguages = [(Haskell98,"-XHaskell98"),(Haskell2010,"-XHaskell2010")], compilerExtensions = [(UnknownExtension "Haskell98","-XHaskell98"),(UnknownExtension "Haskell2010","-XHaskell2010"),(UnknownExtension "SafeImports","-XSafeImports"),(UnknownExtension "Trustworthy","-XTrustworthy"),(UnknownExtension "Safe","-XSafe"),(CPP,"-XCPP"),(UnknownExtension "NoCPP","-XNoCPP"),(PostfixOperators,"-XPostfixOperators"),(UnknownExtension "NoPostfixOperators","-XNoPostfixOperators"),(TupleSections,"-XTupleSections"),(UnknownExtension "NoTupleSections","-XNoTupleSections"),(PatternGuards,"-XPatternGuards"),(UnknownExtension "NoPatternGuards","-XNoPatternGuards"),(UnicodeSyntax,"-XUnicodeSyntax"),(UnknownExtension "NoUnicodeSyntax","-XNoUnicodeSyntax"),(MagicHash,"-XMagicHash"),(UnknownExtension "NoMagicHash","-XNoMagicHash"),(PolymorphicComponents,"-XPolymorphicComponents"),(UnknownExtension "NoPolymorphicComponents","-XNoPolymorphicComponents"),(ExistentialQuantification,"-XExistentialQuantification"),(UnknownExtension "NoExistentialQuantification","-XNoExistentialQuantification"),(KindSignatures,"-XKindSignatures"),(UnknownExtension "NoKindSignatures","-XNoKindSignatures"),(EmptyDataDecls,"-XEmptyDataDecls"),(UnknownExtension "NoEmptyDataDecls","-XNoEmptyDataDecls"),(ParallelListComp,"-XParallelListComp"),(UnknownExtension "NoParallelListComp","-XNoParallelListComp"),(TransformListComp,"-XTransformListComp"),(UnknownExtension "NoTransformListComp","-XNoTransformListComp"),(UnknownExtension "MonadComprehensions","-XMonadComprehensions"),(UnknownExtension "NoMonadComprehensions","-XNoMonadComprehensions"),(ForeignFunctionInterface,"-XForeignFunctionInterface"),(UnknownExtension "NoForeignFunctionInterface","-XNoForeignFunctionInterface"),(UnliftedFFITypes,"-XUnliftedFFITypes"),(UnknownExtension "NoUnliftedFFITypes","-XNoUnliftedFFITypes"),(UnknownExtension "InterruptibleFFI","-XInterruptibleFFI"),(UnknownExtension "NoInterruptibleFFI","-XNoInterruptibleFFI"),(GHCForeignImportPrim,"-XGHCForeignImportPrim"),(UnknownExtension "NoGHCForeignImportPrim","-XNoGHCForeignImportPrim"),(LiberalTypeSynonyms,"-XLiberalTypeSynonyms"),(UnknownExtension "NoLiberalTypeSynonyms","-XNoLiberalTypeSynonyms"),(Rank2Types,"-XRank2Types"),(UnknownExtension "NoRank2Types","-XNoRank2Types"),(RankNTypes,"-XRankNTypes"),(UnknownExtension "NoRankNTypes","-XNoRankNTypes"),(ImpredicativeTypes,"-XImpredicativeTypes"),(UnknownExtension "NoImpredicativeTypes","-XNoImpredicativeTypes"),(TypeOperators,"-XTypeOperators"),(UnknownExtension "NoTypeOperators","-XNoTypeOperators"),(RecursiveDo,"-XRecursiveDo"),(UnknownExtension "NoRecursiveDo","-XNoRecursiveDo"),(DoRec,"-XDoRec"),(UnknownExtension "NoDoRec","-XNoDoRec"),(Arrows,"-XArrows"),(UnknownExtension "NoArrows","-XNoArrows"),(UnknownExtension "ParallelArrays","-XParallelArrays"),(UnknownExtension "NoParallelArrays","-XNoParallelArrays"),(TemplateHaskell,"-XTemplateHaskell"),(UnknownExtension "NoTemplateHaskell","-XNoTemplateHaskell"),(QuasiQuotes,"-XQuasiQuotes"),(UnknownExtension "NoQuasiQuotes","-XNoQuasiQuotes"),(NoImplicitPrelude,"-XNoImplicitPrelude"),(NoImplicitPrelude,"-XNoImplicitPrelude"),(RecordWildCards,"-XRecordWildCards"),(UnknownExtension "NoRecordWildCards","-XNoRecordWildCards"),(NamedFieldPuns,"-XNamedFieldPuns"),(UnknownExtension "NoNamedFieldPuns","-XNoNamedFieldPuns"),(RecordPuns,"-XRecordPuns"),(UnknownExtension "NoRecordPuns","-XNoRecordPuns"),(DisambiguateRecordFields,"-XDisambiguateRecordFields"),(UnknownExtension "NoDisambiguateRecordFields","-XNoDisambiguateRecordFields"),(OverloadedStrings,"-XOverloadedStrings"),(UnknownExtension "NoOverloadedStrings","-XNoOverloadedStrings"),(GADTs,"-XGADTs"),(UnknownExtension "NoGADTs","-XNoGADTs"),(UnknownExtension "GADTSyntax","-XGADTSyntax"),(UnknownExtension "NoGADTSyntax","-XNoGADTSyntax"),(ViewPatterns,"-XViewPatterns"),(UnknownExtension "NoViewPatterns","-XNoViewPatterns"),(TypeFamilies,"-XTypeFamilies"),(UnknownExtension "NoTypeFamilies","-XNoTypeFamilies"),(BangPatterns,"-XBangPatterns"),(UnknownExtension "NoBangPatterns","-XNoBangPatterns"),(NoMonomorphismRestriction,"-XNoMonomorphismRestriction"),(NoMonomorphismRestriction,"-XNoMonomorphismRestriction"),(NPlusKPatterns,"-XNPlusKPatterns"),(UnknownExtension "NoNPlusKPatterns","-XNoNPlusKPatterns"),(DoAndIfThenElse,"-XDoAndIfThenElse"),(UnknownExtension "NoDoAndIfThenElse","-XNoDoAndIfThenElse"),(RebindableSyntax,"-XRebindableSyntax"),(UnknownExtension "NoRebindableSyntax","-XNoRebindableSyntax"),(NoMonoPatBinds,"-XNoMonoPatBinds"),(NoMonoPatBinds,"-XNoMonoPatBinds"),(ExplicitForAll,"-XExplicitForAll"),(UnknownExtension "NoExplicitForAll","-XNoExplicitForAll"),(UnknownExtension "AlternativeLayoutRule","-XAlternativeLayoutRule"),(UnknownExtension "NoAlternativeLayoutRule","-XNoAlternativeLayoutRule"),(UnknownExtension "AlternativeLayoutRuleTransitional","-XAlternativeLayoutRuleTransitional"),(UnknownExtension "NoAlternativeLayoutRuleTransitional","-XNoAlternativeLayoutRuleTransitional"),(DatatypeContexts,"-XDatatypeContexts"),(UnknownExtension "NoDatatypeContexts","-XNoDatatypeContexts"),(UnknownExtension "NondecreasingIndentation","-XNondecreasingIndentation"),(UnknownExtension "NoNondecreasingIndentation","-XNoNondecreasingIndentation"),(UnknownExtension "RelaxedLayout","-XRelaxedLayout"),(UnknownExtension "NoRelaxedLayout","-XNoRelaxedLayout"),(MonoLocalBinds,"-XMonoLocalBinds"),(UnknownExtension "NoMonoLocalBinds","-XNoMonoLocalBinds"),(RelaxedPolyRec,"-XRelaxedPolyRec"),(UnknownExtension "NoRelaxedPolyRec","-XNoRelaxedPolyRec"),(ExtendedDefaultRules,"-XExtendedDefaultRules"),(UnknownExtension "NoExtendedDefaultRules","-XNoExtendedDefaultRules"),(ImplicitParams,"-XImplicitParams"),(UnknownExtension "NoImplicitParams","-XNoImplicitParams"),(ScopedTypeVariables,"-XScopedTypeVariables"),(UnknownExtension "NoScopedTypeVariables","-XNoScopedTypeVariables"),(PatternSignatures,"-XPatternSignatures"),(UnknownExtension "NoPatternSignatures","-XNoPatternSignatures"),(UnboxedTuples,"-XUnboxedTuples"),(UnknownExtension "NoUnboxedTuples","-XNoUnboxedTuples"),(StandaloneDeriving,"-XStandaloneDeriving"),(UnknownExtension "NoStandaloneDeriving","-XNoStandaloneDeriving"),(DeriveDataTypeable,"-XDeriveDataTypeable"),(UnknownExtension "NoDeriveDataTypeable","-XNoDeriveDataTypeable"),(DeriveFunctor,"-XDeriveFunctor"),(UnknownExtension "NoDeriveFunctor","-XNoDeriveFunctor"),(DeriveTraversable,"-XDeriveTraversable"),(UnknownExtension "NoDeriveTraversable","-XNoDeriveTraversable"),(DeriveFoldable,"-XDeriveFoldable"),(UnknownExtension "NoDeriveFoldable","-XNoDeriveFoldable"),(UnknownExtension "DeriveGeneric","-XDeriveGeneric"),(UnknownExtension "NoDeriveGeneric","-XNoDeriveGeneric"),(UnknownExtension "DefaultSignatures","-XDefaultSignatures"),(UnknownExtension "NoDefaultSignatures","-XNoDefaultSignatures"),(TypeSynonymInstances,"-XTypeSynonymInstances"),(UnknownExtension "NoTypeSynonymInstances","-XNoTypeSynonymInstances"),(FlexibleContexts,"-XFlexibleContexts"),(UnknownExtension "NoFlexibleContexts","-XNoFlexibleContexts"),(FlexibleInstances,"-XFlexibleInstances"),(UnknownExtension "NoFlexibleInstances","-XNoFlexibleInstances"),(ConstrainedClassMethods,"-XConstrainedClassMethods"),(UnknownExtension "NoConstrainedClassMethods","-XNoConstrainedClassMethods"),(MultiParamTypeClasses,"-XMultiParamTypeClasses"),(UnknownExtension "NoMultiParamTypeClasses","-XNoMultiParamTypeClasses"),(FunctionalDependencies,"-XFunctionalDependencies"),(UnknownExtension "NoFunctionalDependencies","-XNoFunctionalDependencies"),(GeneralizedNewtypeDeriving,"-XGeneralizedNewtypeDeriving"),(UnknownExtension "NoGeneralizedNewtypeDeriving","-XNoGeneralizedNewtypeDeriving"),(OverlappingInstances,"-XOverlappingInstances"),(UnknownExtension "NoOverlappingInstances","-XNoOverlappingInstances"),(UndecidableInstances,"-XUndecidableInstances"),(UnknownExtension "NoUndecidableInstances","-XNoUndecidableInstances"),(IncoherentInstances,"-XIncoherentInstances"),(UnknownExtension "NoIncoherentInstances","-XNoIncoherentInstances"),(PackageImports,"-XPackageImports"),(UnknownExtension "NoPackageImports","-XNoPackageImports")]}, buildDir = "dist/build", scratchDir = "dist/scratch", libraryConfig = Just (ComponentLocalBuildInfo {componentPackageDeps = [(InstalledPackageId "base-4.4.1.0-0b74da1b5cceb1549c5473c9b76bf860",PackageIdentifier {pkgName = PackageName "base", pkgVersion = Version {versionBranch = [4,4,1,0], versionTags = []}}),(InstalledPackageId "mtl-2.0.1.0-f81ce3282fa6adb03e0cd48bfcccec53",PackageIdentifier {pkgName = PackageName "mtl", pkgVersion = Version {versionBranch = [2,0,1,0], versionTags = []}})]}), executableConfigs = [], testSuiteConfigs = [], installedPkgs = PackageIndex (fromList [(InstalledPackageId "base-4.4.1.0-0b74da1b5cceb1549c5473c9b76bf860",InstalledPackageInfo {installedPackageId = InstalledPackageId "base-4.4.1.0-0b74da1b5cceb1549c5473c9b76bf860", sourcePackageId = PackageIdentifier {pkgName = PackageName "base", pkgVersion = Version {versionBranch = [4,4,1,0], versionTags = []}}, license = BSD3, copyright = "", maintainer = "libraries@haskell.org", author = "", stability = "", homepage = "", pkgUrl = "", description = "This package contains the Prelude and its support libraries,\nand a large collection of useful libraries ranging from data\nstructures to parsing combinators and debugging utilities.", category = "", exposed = True, exposedModules = [ModuleName ["Foreign","Concurrent"],ModuleName ["GHC","Arr"],ModuleName ["GHC","Base"],ModuleName ["GHC","Classes"],ModuleName ["GHC","Conc"],ModuleName ["GHC","Conc","IO"],ModuleName ["GHC","Conc","Signal"],ModuleName ["GHC","Conc","Sync"],ModuleName ["GHC","ConsoleHandler"],ModuleName ["GHC","Constants"],ModuleName ["GHC","Desugar"],ModuleName ["GHC","Enum"],ModuleName ["GHC","Environment"],ModuleName ["GHC","Err"],ModuleName ["GHC","Exception"],ModuleName ["GHC","Exts"],ModuleName ["GHC","Fingerprint"],ModuleName ["GHC","Fingerprint","Type"],ModuleName ["GHC","Float"],ModuleName ["GHC","Float","ConversionUtils"],ModuleName ["GHC","Float","RealFracMethods"],ModuleName ["GHC","Foreign"],ModuleName ["GHC","ForeignPtr"],ModuleName ["GHC","Handle"],ModuleName ["GHC","IO"],ModuleName ["GHC","IO","Buffer"],ModuleName ["GHC","IO","BufferedIO"],ModuleName ["GHC","IO","Device"],ModuleName ["GHC","IO","Encoding"],ModuleName ["GHC","IO","Encoding","CodePage"],ModuleName ["GHC","IO","Encoding","Failure"],ModuleName ["GHC","IO","Encoding","Iconv"],ModuleName ["GHC","IO","Encoding","Latin1"],ModuleName ["GHC","IO","Encoding","Types"],ModuleName ["GHC","IO","Encoding","UTF16"],ModuleName ["GHC","IO","Encoding","UTF32"],ModuleName ["GHC","IO","Encoding","UTF8"],ModuleName ["GHC","IO","Exception"],ModuleName ["GHC","IO","FD"],ModuleName ["GHC","IO","Handle"],ModuleName ["GHC","IO","Handle","FD"],ModuleName ["GHC","IO","Handle","Internals"],ModuleName ["GHC","IO","Handle","Text"],ModuleName ["GHC","IO","Handle","Types"],ModuleName ["GHC","IO","IOMode"],ModuleName ["GHC","IOArray"],ModuleName ["GHC","IOBase"],ModuleName ["GHC","IORef"],ModuleName ["GHC","Int"],ModuleName ["GHC","List"],ModuleName ["GHC","MVar"],ModuleName ["GHC","Num"],ModuleName ["GHC","PArr"],ModuleName ["GHC","Pack"],ModuleName ["GHC","Ptr"],ModuleName ["GHC","Read"],ModuleName ["GHC","Real"],ModuleName ["GHC","ST"],ModuleName ["GHC","Show"],ModuleName ["GHC","Stable"],ModuleName ["GHC","Storable"],ModuleName ["GHC","STRef"],ModuleName ["GHC","TopHandler"],ModuleName ["GHC","Unicode"],ModuleName ["GHC","Weak"],ModuleName ["GHC","Word"],ModuleName ["System","Timeout"],ModuleName ["GHC","Event"],ModuleName ["Control","Applicative"],ModuleName ["Control","Arrow"],ModuleName ["Control","Category"],ModuleName ["Control","Concurrent"],ModuleName ["Control","Concurrent","Chan"],ModuleName ["Control","Concurrent","MVar"],ModuleName ["Control","Concurrent","QSem"],ModuleName ["Control","Concurrent","QSemN"],ModuleName ["Control","Concurrent","SampleVar"],ModuleName ["Control","Exception"],ModuleName ["Control","Exception","Base"],ModuleName ["Control","OldException"],ModuleName ["Control","Monad"],ModuleName ["Control","Monad","Fix"],ModuleName ["Control","Monad","Instances"],ModuleName ["Control","Monad","ST"],ModuleName ["Control","Monad","ST","Safe"],ModuleName ["Control","Monad","ST","Unsafe"],ModuleName ["Control","Monad","ST","Lazy"],ModuleName ["Control","Monad","ST","Lazy","Safe"],ModuleName ["Control","Monad","ST","Lazy","Unsafe"],ModuleName ["Control","Monad","ST","Strict"],ModuleName ["Control","Monad","Group"],ModuleName ["Control","Monad","Zip"],ModuleName ["Data","Bits"],ModuleName ["Data","Bool"],ModuleName ["Data","Char"],ModuleName ["Data","Complex"],ModuleName ["Data","Dynamic"],ModuleName ["Data","Either"],ModuleName ["Data","Eq"],ModuleName ["Data","Data"],ModuleName ["Data","Fixed"],ModuleName ["Data","Foldable"],ModuleName ["Data","Function"],ModuleName ["Data","Functor"],ModuleName ["Data","HashTable"],ModuleName ["Data","IORef"],ModuleName ["Data","Int"],ModuleName ["Data","Ix"],ModuleName ["Data","List"],ModuleName ["Data","Maybe"],ModuleName ["Data","Monoid"],ModuleName ["Data","Ord"],ModuleName ["Data","Ratio"],ModuleName ["Data","STRef"],ModuleName ["Data","STRef","Lazy"],ModuleName ["Data","STRef","Strict"],ModuleName ["Data","String"],ModuleName ["Data","Traversable"],ModuleName ["Data","Tuple"],ModuleName ["Data","Typeable"],ModuleName ["Data","Typeable","Internal"],ModuleName ["Data","Unique"],ModuleName ["Data","Version"],ModuleName ["Data","Word"],ModuleName ["Debug","Trace"],ModuleName ["Foreign"],ModuleName ["Foreign","C"],ModuleName ["Foreign","C","Error"],ModuleName ["Foreign","C","String"],ModuleName ["Foreign","C","Types"],ModuleName ["Foreign","ForeignPtr"],ModuleName ["Foreign","ForeignPtr","Safe"],ModuleName ["Foreign","ForeignPtr","Unsafe"],ModuleName ["Foreign","Marshal"],ModuleName ["Foreign","Marshal","Alloc"],ModuleName ["Foreign","Marshal","Array"],ModuleName ["Foreign","Marshal","Error"],ModuleName ["Foreign","Marshal","Pool"],ModuleName ["Foreign","Marshal","Safe"],ModuleName ["Foreign","Marshal","Utils"],ModuleName ["Foreign","Marshal","Unsafe"],ModuleName ["Foreign","Ptr"],ModuleName ["Foreign","Safe"],ModuleName ["Foreign","StablePtr"],ModuleName ["Foreign","Storable"],ModuleName ["Numeric"],ModuleName ["Prelude"],ModuleName ["System","Console","GetOpt"],ModuleName ["System","CPUTime"],ModuleName ["System","Environment"],ModuleName ["System","Exit"],ModuleName ["System","IO"],ModuleName ["System","IO","Error"],ModuleName ["System","IO","Unsafe"],ModuleName ["System","Info"],ModuleName ["System","Mem"],ModuleName ["System","Mem","StableName"],ModuleName ["System","Mem","Weak"],ModuleName ["System","Posix","Internals"],ModuleName ["System","Posix","Types"],ModuleName ["Text","ParserCombinators","ReadP"],ModuleName ["Text","ParserCombinators","ReadPrec"],ModuleName ["Text","Printf"],ModuleName ["Text","Read"],ModuleName ["Text","Read","Lex"],ModuleName ["Text","Show"],ModuleName ["Text","Show","Functions"],ModuleName ["Unsafe","Coerce"]], hiddenModules = [ModuleName ["GHC","Event","Array"],ModuleName ["GHC","Event","Clock"],ModuleName ["GHC","Event","Control"],ModuleName ["GHC","Event","EPoll"],ModuleName ["GHC","Event","IntMap"],ModuleName ["GHC","Event","Internal"],ModuleName ["GHC","Event","KQueue"],ModuleName ["GHC","Event","Manager"],ModuleName ["GHC","Event","PSQ"],ModuleName ["GHC","Event","Poll"],ModuleName ["GHC","Event","Thread"],ModuleName ["GHC","Event","Unique"],ModuleName ["Control","Monad","ST","Imp"],ModuleName ["Control","Monad","ST","Lazy","Imp"],ModuleName ["Foreign","ForeignPtr","Imp"]], importDirs = ["/usr/lib/ghc-7.2.2/base-4.4.1.0"], libraryDirs = ["/usr/lib/ghc-7.2.2/base-4.4.1.0"], hsLibraries = ["HSbase-4.4.1.0"], extraLibraries = [], extraGHCiLibraries = [], includeDirs = ["/usr/lib/ghc-7.2.2/base-4.4.1.0/include"], includes = ["HsBase.h"], depends = [InstalledPackageId "ghc-prim-0.2.0.0-14e0c022e5d4efa3a40ab5991f2b2a1b",InstalledPackageId "integer-gmp-0.3.0.0-2e2b0fd56be1a5f60c50913e615691d9",InstalledPackageId "builtin_rts"], hugsOptions = [], ccOptions = [], ldOptions = [], frameworkDirs = [], frameworks = [], haddockInterfaces = ["/usr/share/doc/ghc/html/libraries/base-4.4.1.0/base.haddock"], haddockHTMLs = ["/usr/share/doc/ghc/html/libraries/base-4.4.1.0"]}),(InstalledPackageId "builtin_ffi",InstalledPackageInfo {installedPackageId = InstalledPackageId "builtin_ffi", sourcePackageId = PackageIdentifier {pkgName = PackageName "ffi", pkgVersion = Version {versionBranch = [1,0], versionTags = []}}, license = BSD3, copyright = "", maintainer = "glasgow-haskell-users@haskell.org", author = "", stability = "", homepage = "", pkgUrl = "", description = "", category = "", exposed = True, exposedModules = [], hiddenModules = [], importDirs = [], libraryDirs = ["/usr/lib/ghc-7.2.2"], hsLibraries = ["HSffi"], extraLibraries = [], extraGHCiLibraries = [], includeDirs = ["/usr/lib/ghc-7.2.2/include"], includes = [], depends = [], hugsOptions = [], ccOptions = [], ldOptions = [], frameworkDirs = [], frameworks = [], haddockInterfaces = [], haddockHTMLs = []}),(InstalledPackageId "builtin_rts",InstalledPackageInfo {installedPackageId = InstalledPackageId "builtin_rts", sourcePackageId = PackageIdentifier {pkgName = PackageName "rts", pkgVersion = Version {versionBranch = [1,0], versionTags = []}}, license = BSD3, copyright = "", maintainer = "glasgow-haskell-users@haskell.org", author = "", stability = "", homepage = "", pkgUrl = "", description = "", category = "", exposed = True, exposedModules = [], hiddenModules = [], importDirs = [], libraryDirs = ["/usr/lib/ghc-7.2.2"], hsLibraries = ["HSrts"], extraLibraries = ["m","rt","dl"], extraGHCiLibraries = [], includeDirs = ["/usr/lib/ghc-7.2.2/include"], includes = ["Stg.h"], depends = [InstalledPackageId "builtin_ffi"], hugsOptions = [], ccOptions = [], ldOptions = ["-u","ghczmprim_GHCziTypes_Izh_static_info","-u","ghczmprim_GHCziTypes_Czh_static_info","-u","ghczmprim_GHCziTypes_Fzh_static_info","-u","ghczmprim_GHCziTypes_Dzh_static_info","-u","base_GHCziPtr_Ptr_static_info","-u","base_GHCziWord_Wzh_static_info","-u","base_GHCziInt_I8zh_static_info","-u","base_GHCziInt_I16zh_static_info","-u","base_GHCziInt_I32zh_static_info","-u","base_GHCziInt_I64zh_static_info","-u","base_GHCziWord_W8zh_static_info","-u","base_GHCziWord_W16zh_static_info","-u","base_GHCziWord_W32zh_static_info","-u","base_GHCziWord_W64zh_static_info","-u","base_GHCziStable_StablePtr_static_info","-u","ghczmprim_GHCziTypes_Izh_con_info","-u","ghczmprim_GHCziTypes_Czh_con_info","-u","ghczmprim_GHCziTypes_Fzh_con_info","-u","ghczmprim_GHCziTypes_Dzh_con_info","-u","base_GHCziPtr_Ptr_con_info","-u","base_GHCziPtr_FunPtr_con_info","-u","base_GHCziStable_StablePtr_con_info","-u","ghczmprim_GHCziTypes_False_closure","-u","ghczmprim_GHCziTypes_True_closure","-u","base_GHCziPack_unpackCString_closure","-u","base_GHCziIOziException_stackOverflow_closure","-u","base_GHCziIOziException_heapOverflow_closure","-u","base_ControlziExceptionziBase_nonTermination_closure","-u","base_GHCziIOziException_blockedIndefinitelyOnMVar_closure","-u","base_GHCziIOziException_blockedIndefinitelyOnSTM_closure","-u","base_ControlziExceptionziBase_nestedAtomically_closure","-u","base_GHCziWeak_runFinalizzerBatch_closure","-u","base_GHCziTopHandler_runIO_closure","-u","base_GHCziTopHandler_runNonIO_closure","-u","base_GHCziConcziIO_ensureIOManagerIsRunning_closure","-u","base_GHCziConcziSync_runSparks_closure","-u","base_GHCziConcziSignal_runHandlers_closure"], frameworkDirs = [], frameworks = [], haddockInterfaces = [], haddockHTMLs = []}),(InstalledPackageId "ghc-prim-0.2.0.0-14e0c022e5d4efa3a40ab5991f2b2a1b",InstalledPackageInfo {installedPackageId = InstalledPackageId "ghc-prim-0.2.0.0-14e0c022e5d4efa3a40ab5991f2b2a1b", sourcePackageId = PackageIdentifier {pkgName = PackageName "ghc-prim", pkgVersion = Version {versionBranch = [0,2,0,0], versionTags = []}}, license = BSD3, copyright = "", maintainer = "libraries@haskell.org", author = "", stability = "", homepage = "", pkgUrl = "", description = "GHC primitives.", category = "", exposed = True, exposedModules = [ModuleName ["GHC","Prim"],ModuleName ["GHC","Debug"],ModuleName ["GHC","Generics"],ModuleName ["GHC","Magic"],ModuleName ["GHC","Ordering"],ModuleName ["GHC","PrimopWrappers"],ModuleName ["GHC","IntWord32"],ModuleName ["GHC","IntWord64"],ModuleName ["GHC","Tuple"],ModuleName ["GHC","Types"],ModuleName ["GHC","Unit"],ModuleName ["GHC","CString"]], hiddenModules = [], importDirs = ["/usr/lib/ghc-7.2.2/ghc-prim-0.2.0.0"], libraryDirs = ["/usr/lib/ghc-7.2.2/ghc-prim-0.2.0.0"], hsLibraries = ["HSghc-prim-0.2.0.0"], extraLibraries = [], extraGHCiLibraries = [], includeDirs = [], includes = [], depends = [InstalledPackageId "builtin_rts"], hugsOptions = [], ccOptions = [], ldOptions = [], frameworkDirs = [], frameworks = [], haddockInterfaces = ["/usr/share/doc/ghc/html/libraries/ghc-prim-0.2.0.0/ghc-prim.haddock"], haddockHTMLs = ["/usr/share/doc/ghc/html/libraries/ghc-prim-0.2.0.0"]}),(InstalledPackageId "integer-gmp-0.3.0.0-2e2b0fd56be1a5f60c50913e615691d9",InstalledPackageInfo {installedPackageId = InstalledPackageId "integer-gmp-0.3.0.0-2e2b0fd56be1a5f60c50913e615691d9", sourcePackageId = PackageIdentifier {pkgName = PackageName "integer-gmp", pkgVersion = Version {versionBranch = [0,3,0,0], versionTags = []}}, license = BSD3, copyright = "", maintainer = "libraries@haskell.org", author = "", stability = "", homepage = "", pkgUrl = "", description = "This package contains an Integer library based on GMP.", category = "", exposed = True, exposedModules = [ModuleName ["GHC","Integer"],ModuleName ["GHC","Integer","GMP","Internals"],ModuleName ["GHC","Integer","Logarithms"],ModuleName ["GHC","Integer","Logarithms","Internals"]], hiddenModules = [ModuleName ["GHC","Integer","Type"]], importDirs = ["/usr/lib/ghc-7.2.2/integer-gmp-0.3.0.0"], libraryDirs = ["/usr/lib/ghc-7.2.2/integer-gmp-0.3.0.0"], hsLibraries = ["HSinteger-gmp-0.3.0.0"], extraLibraries = ["gmp"], extraGHCiLibraries = [], includeDirs = [], includes = [], depends = [InstalledPackageId "ghc-prim-0.2.0.0-14e0c022e5d4efa3a40ab5991f2b2a1b"], hugsOptions = [], ccOptions = [], ldOptions = [], frameworkDirs = [], frameworks = [], haddockInterfaces = ["/usr/share/doc/ghc/html/libraries/integer-gmp-0.3.0.0/integer-gmp.haddock"], haddockHTMLs = ["/usr/share/doc/ghc/html/libraries/integer-gmp-0.3.0.0"]}),(InstalledPackageId "mtl-2.0.1.0-f81ce3282fa6adb03e0cd48bfcccec53",InstalledPackageInfo {installedPackageId = InstalledPackageId "mtl-2.0.1.0-f81ce3282fa6adb03e0cd48bfcccec53", sourcePackageId = PackageIdentifier {pkgName = PackageName "mtl", pkgVersion = Version {versionBranch = [2,0,1,0], versionTags = []}}, license = BSD3, copyright = "", maintainer = "libraries@haskell.org", author = "Andy Gill", stability = "", homepage = "", pkgUrl = "", description = "Monad classes using functional dependencies, with instances\nfor various monad transformers, inspired by the paper\n/Functional Programming with Overloading and Higher-Order Polymorphism/,\nby Mark P Jones, in /Advanced School of Functional Programming/, 1995\n(<http://web.cecs.pdx.edu/~mpj/pubs/springschool.html>).", category = "Control", exposed = True, exposedModules = [ModuleName ["Control","Monad","Cont"],ModuleName ["Control","Monad","Cont","Class"],ModuleName ["Control","Monad","Error"],ModuleName ["Control","Monad","Error","Class"],ModuleName ["Control","Monad","Identity"],ModuleName ["Control","Monad","List"],ModuleName ["Control","Monad","RWS"],ModuleName ["Control","Monad","RWS","Class"],ModuleName ["Control","Monad","RWS","Lazy"],ModuleName ["Control","Monad","RWS","Strict"],ModuleName ["Control","Monad","Reader"],ModuleName ["Control","Monad","Reader","Class"],ModuleName ["Control","Monad","State"],ModuleName ["Control","Monad","State","Class"],ModuleName ["Control","Monad","State","Lazy"],ModuleName ["Control","Monad","State","Strict"],ModuleName ["Control","Monad","Trans"],ModuleName ["Control","Monad","Writer"],ModuleName ["Control","Monad","Writer","Class"],ModuleName ["Control","Monad","Writer","Lazy"],ModuleName ["Control","Monad","Writer","Strict"]], hiddenModules = [], importDirs = ["/home/exfalso/.cabal/lib/mtl-2.0.1.0/ghc-7.2.2"], libraryDirs = ["/home/exfalso/.cabal/lib/mtl-2.0.1.0/ghc-7.2.2"], hsLibraries = ["HSmtl-2.0.1.0"], extraLibraries = [], extraGHCiLibraries = [], includeDirs = [], includes = [], depends = [InstalledPackageId "base-4.4.1.0-0b74da1b5cceb1549c5473c9b76bf860",InstalledPackageId "transformers-0.2.2.0-dedda34a47952e7f82f2724797f0b70f"], hugsOptions = [], ccOptions = [], ldOptions = [], frameworkDirs = [], frameworks = [], haddockInterfaces = ["/home/exfalso/.cabal/share/doc/mtl-2.0.1.0/html/mtl.haddock"], haddockHTMLs = ["/home/exfalso/.cabal/share/doc/mtl-2.0.1.0/html"]}),(InstalledPackageId "transformers-0.2.2.0-dedda34a47952e7f82f2724797f0b70f",InstalledPackageInfo {installedPackageId = InstalledPackageId "transformers-0.2.2.0-dedda34a47952e7f82f2724797f0b70f", sourcePackageId = PackageIdentifier {pkgName = PackageName "transformers", pkgVersion = Version {versionBranch = [0,2,2,0], versionTags = []}}, license = BSD3, copyright = "", maintainer = "Ross Paterson <ross@soi.city.ac.uk>", author = "Andy Gill, Ross Paterson", stability = "", homepage = "", pkgUrl = "", description = "Haskell 98 part of a monad transformer library, inspired by the paper\n\\\"Functional Programming with Overloading and Higher-Order Polymorphism\\\",\nby Mark P Jones, in /Advanced School of Functional Programming/, 1995\n(<http://web.cecs.pdx.edu/~mpj/pubs/springschool.html>).\n\nThis part contains the monad transformer class, the concrete monad\ntransformers, operations and liftings.  It can be used on its own\nin Haskell 98 code, or with the monad classes in the @monads-fd@ or\n@monads-tf@ packages, which automatically lift operations introduced\nby monad transformers through other transformers.", category = "Control", exposed = True, exposedModules = [ModuleName ["Control","Monad","IO","Class"],ModuleName ["Control","Monad","Trans","Class"],ModuleName ["Control","Monad","Trans","Cont"],ModuleName ["Control","Monad","Trans","Error"],ModuleName ["Control","Monad","Trans","Identity"],ModuleName ["Control","Monad","Trans","List"],ModuleName ["Control","Monad","Trans","Maybe"],ModuleName ["Control","Monad","Trans","Reader"],ModuleName ["Control","Monad","Trans","RWS"],ModuleName ["Control","Monad","Trans","RWS","Lazy"],ModuleName ["Control","Monad","Trans","RWS","Strict"],ModuleName ["Control","Monad","Trans","State"],ModuleName ["Control","Monad","Trans","State","Lazy"],ModuleName ["Control","Monad","Trans","State","Strict"],ModuleName ["Control","Monad","Trans","Writer"],ModuleName ["Control","Monad","Trans","Writer","Lazy"],ModuleName ["Control","Monad","Trans","Writer","Strict"],ModuleName ["Data","Functor","Compose"],ModuleName ["Data","Functor","Constant"],ModuleName ["Data","Functor","Identity"],ModuleName ["Data","Functor","Product"]], hiddenModules = [], importDirs = ["/home/exfalso/.cabal/lib/transformers-0.2.2.0/ghc-7.2.2"], libraryDirs = ["/home/exfalso/.cabal/lib/transformers-0.2.2.0/ghc-7.2.2"], hsLibraries = ["HStransformers-0.2.2.0"], extraLibraries = [], extraGHCiLibraries = [], includeDirs = [], includes = [], depends = [InstalledPackageId "base-4.4.1.0-0b74da1b5cceb1549c5473c9b76bf860"], hugsOptions = [], ccOptions = [], ldOptions = [], frameworkDirs = [], frameworks = [], haddockInterfaces = ["/home/exfalso/.cabal/share/doc/transformers-0.2.2.0/html/transformers.haddock"], haddockHTMLs = ["/home/exfalso/.cabal/share/doc/transformers-0.2.2.0/html"]})]) (fromList [(PackageName "base",fromList [(Version {versionBranch = [4,4,1,0], versionTags = []},[InstalledPackageInfo {installedPackageId = InstalledPackageId "base-4.4.1.0-0b74da1b5cceb1549c5473c9b76bf860", sourcePackageId = PackageIdentifier {pkgName = PackageName "base", pkgVersion = Version {versionBranch = [4,4,1,0], versionTags = []}}, license = BSD3, copyright = "", maintainer = "libraries@haskell.org", author = "", stability = "", homepage = "", pkgUrl = "", description = "This package contains the Prelude and its support libraries,\nand a large collection of useful libraries ranging from data\nstructures to parsing combinators and debugging utilities.", category = "", exposed = True, exposedModules = [ModuleName ["Foreign","Concurrent"],ModuleName ["GHC","Arr"],ModuleName ["GHC","Base"],ModuleName ["GHC","Classes"],ModuleName ["GHC","Conc"],ModuleName ["GHC","Conc","IO"],ModuleName ["GHC","Conc","Signal"],ModuleName ["GHC","Conc","Sync"],ModuleName ["GHC","ConsoleHandler"],ModuleName ["GHC","Constants"],ModuleName ["GHC","Desugar"],ModuleName ["GHC","Enum"],ModuleName ["GHC","Environment"],ModuleName ["GHC","Err"],ModuleName ["GHC","Exception"],ModuleName ["GHC","Exts"],ModuleName ["GHC","Fingerprint"],ModuleName ["GHC","Fingerprint","Type"],ModuleName ["GHC","Float"],ModuleName ["GHC","Float","ConversionUtils"],ModuleName ["GHC","Float","RealFracMethods"],ModuleName ["GHC","Foreign"],ModuleName ["GHC","ForeignPtr"],ModuleName ["GHC","Handle"],ModuleName ["GHC","IO"],ModuleName ["GHC","IO","Buffer"],ModuleName ["GHC","IO","BufferedIO"],ModuleName ["GHC","IO","Device"],ModuleName ["GHC","IO","Encoding"],ModuleName ["GHC","IO","Encoding","CodePage"],ModuleName ["GHC","IO","Encoding","Failure"],ModuleName ["GHC","IO","Encoding","Iconv"],ModuleName ["GHC","IO","Encoding","Latin1"],ModuleName ["GHC","IO","Encoding","Types"],ModuleName ["GHC","IO","Encoding","UTF16"],ModuleName ["GHC","IO","Encoding","UTF32"],ModuleName ["GHC","IO","Encoding","UTF8"],ModuleName ["GHC","IO","Exception"],ModuleName ["GHC","IO","FD"],ModuleName ["GHC","IO","Handle"],ModuleName ["GHC","IO","Handle","FD"],ModuleName ["GHC","IO","Handle","Internals"],ModuleName ["GHC","IO","Handle","Text"],ModuleName ["GHC","IO","Handle","Types"],ModuleName ["GHC","IO","IOMode"],ModuleName ["GHC","IOArray"],ModuleName ["GHC","IOBase"],ModuleName ["GHC","IORef"],ModuleName ["GHC","Int"],ModuleName ["GHC","List"],ModuleName ["GHC","MVar"],ModuleName ["GHC","Num"],ModuleName ["GHC","PArr"],ModuleName ["GHC","Pack"],ModuleName ["GHC","Ptr"],ModuleName ["GHC","Read"],ModuleName ["GHC","Real"],ModuleName ["GHC","ST"],ModuleName ["GHC","Show"],ModuleName ["GHC","Stable"],ModuleName ["GHC","Storable"],ModuleName ["GHC","STRef"],ModuleName ["GHC","TopHandler"],ModuleName ["GHC","Unicode"],ModuleName ["GHC","Weak"],ModuleName ["GHC","Word"],ModuleName ["System","Timeout"],ModuleName ["GHC","Event"],ModuleName ["Control","Applicative"],ModuleName ["Control","Arrow"],ModuleName ["Control","Category"],ModuleName ["Control","Concurrent"],ModuleName ["Control","Concurrent","Chan"],ModuleName ["Control","Concurrent","MVar"],ModuleName ["Control","Concurrent","QSem"],ModuleName ["Control","Concurrent","QSemN"],ModuleName ["Control","Concurrent","SampleVar"],ModuleName ["Control","Exception"],ModuleName ["Control","Exception","Base"],ModuleName ["Control","OldException"],ModuleName ["Control","Monad"],ModuleName ["Control","Monad","Fix"],ModuleName ["Control","Monad","Instances"],ModuleName ["Control","Monad","ST"],ModuleName ["Control","Monad","ST","Safe"],ModuleName ["Control","Monad","ST","Unsafe"],ModuleName ["Control","Monad","ST","Lazy"],ModuleName ["Control","Monad","ST","Lazy","Safe"],ModuleName ["Control","Monad","ST","Lazy","Unsafe"],ModuleName ["Control","Monad","ST","Strict"],ModuleName ["Control","Monad","Group"],ModuleName ["Control","Monad","Zip"],ModuleName ["Data","Bits"],ModuleName ["Data","Bool"],ModuleName ["Data","Char"],ModuleName ["Data","Complex"],ModuleName ["Data","Dynamic"],ModuleName ["Data","Either"],ModuleName ["Data","Eq"],ModuleName ["Data","Data"],ModuleName ["Data","Fixed"],ModuleName ["Data","Foldable"],ModuleName ["Data","Function"],ModuleName ["Data","Functor"],ModuleName ["Data","HashTable"],ModuleName ["Data","IORef"],ModuleName ["Data","Int"],ModuleName ["Data","Ix"],ModuleName ["Data","List"],ModuleName ["Data","Maybe"],ModuleName ["Data","Monoid"],ModuleName ["Data","Ord"],ModuleName ["Data","Ratio"],ModuleName ["Data","STRef"],ModuleName ["Data","STRef","Lazy"],ModuleName ["Data","STRef","Strict"],ModuleName ["Data","String"],ModuleName ["Data","Traversable"],ModuleName ["Data","Tuple"],ModuleName ["Data","Typeable"],ModuleName ["Data","Typeable","Internal"],ModuleName ["Data","Unique"],ModuleName ["Data","Version"],ModuleName ["Data","Word"],ModuleName ["Debug","Trace"],ModuleName ["Foreign"],ModuleName ["Foreign","C"],ModuleName ["Foreign","C","Error"],ModuleName ["Foreign","C","String"],ModuleName ["Foreign","C","Types"],ModuleName ["Foreign","ForeignPtr"],ModuleName ["Foreign","ForeignPtr","Safe"],ModuleName ["Foreign","ForeignPtr","Unsafe"],ModuleName ["Foreign","Marshal"],ModuleName ["Foreign","Marshal","Alloc"],ModuleName ["Foreign","Marshal","Array"],ModuleName ["Foreign","Marshal","Error"],ModuleName ["Foreign","Marshal","Pool"],ModuleName ["Foreign","Marshal","Safe"],ModuleName ["Foreign","Marshal","Utils"],ModuleName ["Foreign","Marshal","Unsafe"],ModuleName ["Foreign","Ptr"],ModuleName ["Foreign","Safe"],ModuleName ["Foreign","StablePtr"],ModuleName ["Foreign","Storable"],ModuleName ["Numeric"],ModuleName ["Prelude"],ModuleName ["System","Console","GetOpt"],ModuleName ["System","CPUTime"],ModuleName ["System","Environment"],ModuleName ["System","Exit"],ModuleName ["System","IO"],ModuleName ["System","IO","Error"],ModuleName ["System","IO","Unsafe"],ModuleName ["System","Info"],ModuleName ["System","Mem"],ModuleName ["System","Mem","StableName"],ModuleName ["System","Mem","Weak"],ModuleName ["System","Posix","Internals"],ModuleName ["System","Posix","Types"],ModuleName ["Text","ParserCombinators","ReadP"],ModuleName ["Text","ParserCombinators","ReadPrec"],ModuleName ["Text","Printf"],ModuleName ["Text","Read"],ModuleName ["Text","Read","Lex"],ModuleName ["Text","Show"],ModuleName ["Text","Show","Functions"],ModuleName ["Unsafe","Coerce"]], hiddenModules = [ModuleName ["GHC","Event","Array"],ModuleName ["GHC","Event","Clock"],ModuleName ["GHC","Event","Control"],ModuleName ["GHC","Event","EPoll"],ModuleName ["GHC","Event","IntMap"],ModuleName ["GHC","Event","Internal"],ModuleName ["GHC","Event","KQueue"],ModuleName ["GHC","Event","Manager"],ModuleName ["GHC","Event","PSQ"],ModuleName ["GHC","Event","Poll"],ModuleName ["GHC","Event","Thread"],ModuleName ["GHC","Event","Unique"],ModuleName ["Control","Monad","ST","Imp"],ModuleName ["Control","Monad","ST","Lazy","Imp"],ModuleName ["Foreign","ForeignPtr","Imp"]], importDirs = ["/usr/lib/ghc-7.2.2/base-4.4.1.0"], libraryDirs = ["/usr/lib/ghc-7.2.2/base-4.4.1.0"], hsLibraries = ["HSbase-4.4.1.0"], extraLibraries = [], extraGHCiLibraries = [], includeDirs = ["/usr/lib/ghc-7.2.2/base-4.4.1.0/include"], includes = ["HsBase.h"], depends = [InstalledPackageId "ghc-prim-0.2.0.0-14e0c022e5d4efa3a40ab5991f2b2a1b",InstalledPackageId "integer-gmp-0.3.0.0-2e2b0fd56be1a5f60c50913e615691d9",InstalledPackageId "builtin_rts"], hugsOptions = [], ccOptions = [], ldOptions = [], frameworkDirs = [], frameworks = [], haddockInterfaces = ["/usr/share/doc/ghc/html/libraries/base-4.4.1.0/base.haddock"], haddockHTMLs = ["/usr/share/doc/ghc/html/libraries/base-4.4.1.0"]}])]),(PackageName "ffi",fromList [(Version {versionBranch = [1,0], versionTags = []},[InstalledPackageInfo {installedPackageId = InstalledPackageId "builtin_ffi", sourcePackageId = PackageIdentifier {pkgName = PackageName "ffi", pkgVersion = Version {versionBranch = [1,0], versionTags = []}}, license = BSD3, copyright = "", maintainer = "glasgow-haskell-users@haskell.org", author = "", stability = "", homepage = "", pkgUrl = "", description = "", category = "", exposed = True, exposedModules = [], hiddenModules = [], importDirs = [], libraryDirs = ["/usr/lib/ghc-7.2.2"], hsLibraries = ["HSffi"], extraLibraries = [], extraGHCiLibraries = [], includeDirs = ["/usr/lib/ghc-7.2.2/include"], includes = [], depends = [], hugsOptions = [], ccOptions = [], ldOptions = [], frameworkDirs = [], frameworks = [], haddockInterfaces = [], haddockHTMLs = []}])]),(PackageName "ghc-prim",fromList [(Version {versionBranch = [0,2,0,0], versionTags = []},[InstalledPackageInfo {installedPackageId = InstalledPackageId "ghc-prim-0.2.0.0-14e0c022e5d4efa3a40ab5991f2b2a1b", sourcePackageId = PackageIdentifier {pkgName = PackageName "ghc-prim", pkgVersion = Version {versionBranch = [0,2,0,0], versionTags = []}}, license = BSD3, copyright = "", maintainer = "libraries@haskell.org", author = "", stability = "", homepage = "", pkgUrl = "", description = "GHC primitives.", category = "", exposed = True, exposedModules = [ModuleName ["GHC","Prim"],ModuleName ["GHC","Debug"],ModuleName ["GHC","Generics"],ModuleName ["GHC","Magic"],ModuleName ["GHC","Ordering"],ModuleName ["GHC","PrimopWrappers"],ModuleName ["GHC","IntWord32"],ModuleName ["GHC","IntWord64"],ModuleName ["GHC","Tuple"],ModuleName ["GHC","Types"],ModuleName ["GHC","Unit"],ModuleName ["GHC","CString"]], hiddenModules = [], importDirs = ["/usr/lib/ghc-7.2.2/ghc-prim-0.2.0.0"], libraryDirs = ["/usr/lib/ghc-7.2.2/ghc-prim-0.2.0.0"], hsLibraries = ["HSghc-prim-0.2.0.0"], extraLibraries = [], extraGHCiLibraries = [], includeDirs = [], includes = [], depends = [InstalledPackageId "builtin_rts"], hugsOptions = [], ccOptions = [], ldOptions = [], frameworkDirs = [], frameworks = [], haddockInterfaces = ["/usr/share/doc/ghc/html/libraries/ghc-prim-0.2.0.0/ghc-prim.haddock"], haddockHTMLs = ["/usr/share/doc/ghc/html/libraries/ghc-prim-0.2.0.0"]}])]),(PackageName "integer-gmp",fromList [(Version {versionBranch = [0,3,0,0], versionTags = []},[InstalledPackageInfo {installedPackageId = InstalledPackageId "integer-gmp-0.3.0.0-2e2b0fd56be1a5f60c50913e615691d9", sourcePackageId = PackageIdentifier {pkgName = PackageName "integer-gmp", pkgVersion = Version {versionBranch = [0,3,0,0], versionTags = []}}, license = BSD3, copyright = "", maintainer = "libraries@haskell.org", author = "", stability = "", homepage = "", pkgUrl = "", description = "This package contains an Integer library based on GMP.", category = "", exposed = True, exposedModules = [ModuleName ["GHC","Integer"],ModuleName ["GHC","Integer","GMP","Internals"],ModuleName ["GHC","Integer","Logarithms"],ModuleName ["GHC","Integer","Logarithms","Internals"]], hiddenModules = [ModuleName ["GHC","Integer","Type"]], importDirs = ["/usr/lib/ghc-7.2.2/integer-gmp-0.3.0.0"], libraryDirs = ["/usr/lib/ghc-7.2.2/integer-gmp-0.3.0.0"], hsLibraries = ["HSinteger-gmp-0.3.0.0"], extraLibraries = ["gmp"], extraGHCiLibraries = [], includeDirs = [], includes = [], depends = [InstalledPackageId "ghc-prim-0.2.0.0-14e0c022e5d4efa3a40ab5991f2b2a1b"], hugsOptions = [], ccOptions = [], ldOptions = [], frameworkDirs = [], frameworks = [], haddockInterfaces = ["/usr/share/doc/ghc/html/libraries/integer-gmp-0.3.0.0/integer-gmp.haddock"], haddockHTMLs = ["/usr/share/doc/ghc/html/libraries/integer-gmp-0.3.0.0"]}])]),(PackageName "mtl",fromList [(Version {versionBranch = [2,0,1,0], versionTags = []},[InstalledPackageInfo {installedPackageId = InstalledPackageId "mtl-2.0.1.0-f81ce3282fa6adb03e0cd48bfcccec53", sourcePackageId = PackageIdentifier {pkgName = PackageName "mtl", pkgVersion = Version {versionBranch = [2,0,1,0], versionTags = []}}, license = BSD3, copyright = "", maintainer = "libraries@haskell.org", author = "Andy Gill", stability = "", homepage = "", pkgUrl = "", description = "Monad classes using functional dependencies, with instances\nfor various monad transformers, inspired by the paper\n/Functional Programming with Overloading and Higher-Order Polymorphism/,\nby Mark P Jones, in /Advanced School of Functional Programming/, 1995\n(<http://web.cecs.pdx.edu/~mpj/pubs/springschool.html>).", category = "Control", exposed = True, exposedModules = [ModuleName ["Control","Monad","Cont"],ModuleName ["Control","Monad","Cont","Class"],ModuleName ["Control","Monad","Error"],ModuleName ["Control","Monad","Error","Class"],ModuleName ["Control","Monad","Identity"],ModuleName ["Control","Monad","List"],ModuleName ["Control","Monad","RWS"],ModuleName ["Control","Monad","RWS","Class"],ModuleName ["Control","Monad","RWS","Lazy"],ModuleName ["Control","Monad","RWS","Strict"],ModuleName ["Control","Monad","Reader"],ModuleName ["Control","Monad","Reader","Class"],ModuleName ["Control","Monad","State"],ModuleName ["Control","Monad","State","Class"],ModuleName ["Control","Monad","State","Lazy"],ModuleName ["Control","Monad","State","Strict"],ModuleName ["Control","Monad","Trans"],ModuleName ["Control","Monad","Writer"],ModuleName ["Control","Monad","Writer","Class"],ModuleName ["Control","Monad","Writer","Lazy"],ModuleName ["Control","Monad","Writer","Strict"]], hiddenModules = [], importDirs = ["/home/exfalso/.cabal/lib/mtl-2.0.1.0/ghc-7.2.2"], libraryDirs = ["/home/exfalso/.cabal/lib/mtl-2.0.1.0/ghc-7.2.2"], hsLibraries = ["HSmtl-2.0.1.0"], extraLibraries = [], extraGHCiLibraries = [], includeDirs = [], includes = [], depends = [InstalledPackageId "base-4.4.1.0-0b74da1b5cceb1549c5473c9b76bf860",InstalledPackageId "transformers-0.2.2.0-dedda34a47952e7f82f2724797f0b70f"], hugsOptions = [], ccOptions = [], ldOptions = [], frameworkDirs = [], frameworks = [], haddockInterfaces = ["/home/exfalso/.cabal/share/doc/mtl-2.0.1.0/html/mtl.haddock"], haddockHTMLs = ["/home/exfalso/.cabal/share/doc/mtl-2.0.1.0/html"]}])]),(PackageName "rts",fromList [(Version {versionBranch = [1,0], versionTags = []},[InstalledPackageInfo {installedPackageId = InstalledPackageId "builtin_rts", sourcePackageId = PackageIdentifier {pkgName = PackageName "rts", pkgVersion = Version {versionBranch = [1,0], versionTags = []}}, license = BSD3, copyright = "", maintainer = "glasgow-haskell-users@haskell.org", author = "", stability = "", homepage = "", pkgUrl = "", description = "", category = "", exposed = True, exposedModules = [], hiddenModules = [], importDirs = [], libraryDirs = ["/usr/lib/ghc-7.2.2"], hsLibraries = ["HSrts"], extraLibraries = ["m","rt","dl"], extraGHCiLibraries = [], includeDirs = ["/usr/lib/ghc-7.2.2/include"], includes = ["Stg.h"], depends = [InstalledPackageId "builtin_ffi"], hugsOptions = [], ccOptions = [], ldOptions = ["-u","ghczmprim_GHCziTypes_Izh_static_info","-u","ghczmprim_GHCziTypes_Czh_static_info","-u","ghczmprim_GHCziTypes_Fzh_static_info","-u","ghczmprim_GHCziTypes_Dzh_static_info","-u","base_GHCziPtr_Ptr_static_info","-u","base_GHCziWord_Wzh_static_info","-u","base_GHCziInt_I8zh_static_info","-u","base_GHCziInt_I16zh_static_info","-u","base_GHCziInt_I32zh_static_info","-u","base_GHCziInt_I64zh_static_info","-u","base_GHCziWord_W8zh_static_info","-u","base_GHCziWord_W16zh_static_info","-u","base_GHCziWord_W32zh_static_info","-u","base_GHCziWord_W64zh_static_info","-u","base_GHCziStable_StablePtr_static_info","-u","ghczmprim_GHCziTypes_Izh_con_info","-u","ghczmprim_GHCziTypes_Czh_con_info","-u","ghczmprim_GHCziTypes_Fzh_con_info","-u","ghczmprim_GHCziTypes_Dzh_con_info","-u","base_GHCziPtr_Ptr_con_info","-u","base_GHCziPtr_FunPtr_con_info","-u","base_GHCziStable_StablePtr_con_info","-u","ghczmprim_GHCziTypes_False_closure","-u","ghczmprim_GHCziTypes_True_closure","-u","base_GHCziPack_unpackCString_closure","-u","base_GHCziIOziException_stackOverflow_closure","-u","base_GHCziIOziException_heapOverflow_closure","-u","base_ControlziExceptionziBase_nonTermination_closure","-u","base_GHCziIOziException_blockedIndefinitelyOnMVar_closure","-u","base_GHCziIOziException_blockedIndefinitelyOnSTM_closure","-u","base_ControlziExceptionziBase_nestedAtomically_closure","-u","base_GHCziWeak_runFinalizzerBatch_closure","-u","base_GHCziTopHandler_runIO_closure","-u","base_GHCziTopHandler_runNonIO_closure","-u","base_GHCziConcziIO_ensureIOManagerIsRunning_closure","-u","base_GHCziConcziSync_runSparks_closure","-u","base_GHCziConcziSignal_runHandlers_closure"], frameworkDirs = [], frameworks = [], haddockInterfaces = [], haddockHTMLs = []}])]),(PackageName "transformers",fromList [(Version {versionBranch = [0,2,2,0], versionTags = []},[InstalledPackageInfo {installedPackageId = InstalledPackageId "transformers-0.2.2.0-dedda34a47952e7f82f2724797f0b70f", sourcePackageId = PackageIdentifier {pkgName = PackageName "transformers", pkgVersion = Version {versionBranch = [0,2,2,0], versionTags = []}}, license = BSD3, copyright = "", maintainer = "Ross Paterson <ross@soi.city.ac.uk>", author = "Andy Gill, Ross Paterson", stability = "", homepage = "", pkgUrl = "", description = "Haskell 98 part of a monad transformer library, inspired by the paper\n\\\"Functional Programming with Overloading and Higher-Order Polymorphism\\\",\nby Mark P Jones, in /Advanced School of Functional Programming/, 1995\n(<http://web.cecs.pdx.edu/~mpj/pubs/springschool.html>).\n\nThis part contains the monad transformer class, the concrete monad\ntransformers, operations and liftings.  It can be used on its own\nin Haskell 98 code, or with the monad classes in the @monads-fd@ or\n@monads-tf@ packages, which automatically lift operations introduced\nby monad transformers through other transformers.", category = "Control", exposed = True, exposedModules = [ModuleName ["Control","Monad","IO","Class"],ModuleName ["Control","Monad","Trans","Class"],ModuleName ["Control","Monad","Trans","Cont"],ModuleName ["Control","Monad","Trans","Error"],ModuleName ["Control","Monad","Trans","Identity"],ModuleName ["Control","Monad","Trans","List"],ModuleName ["Control","Monad","Trans","Maybe"],ModuleName ["Control","Monad","Trans","Reader"],ModuleName ["Control","Monad","Trans","RWS"],ModuleName ["Control","Monad","Trans","RWS","Lazy"],ModuleName ["Control","Monad","Trans","RWS","Strict"],ModuleName ["Control","Monad","Trans","State"],ModuleName ["Control","Monad","Trans","State","Lazy"],ModuleName ["Control","Monad","Trans","State","Strict"],ModuleName ["Control","Monad","Trans","Writer"],ModuleName ["Control","Monad","Trans","Writer","Lazy"],ModuleName ["Control","Monad","Trans","Writer","Strict"],ModuleName ["Data","Functor","Compose"],ModuleName ["Data","Functor","Constant"],ModuleName ["Data","Functor","Identity"],ModuleName ["Data","Functor","Product"]], hiddenModules = [], importDirs = ["/home/exfalso/.cabal/lib/transformers-0.2.2.0/ghc-7.2.2"], libraryDirs = ["/home/exfalso/.cabal/lib/transformers-0.2.2.0/ghc-7.2.2"], hsLibraries = ["HStransformers-0.2.2.0"], extraLibraries = [], extraGHCiLibraries = [], includeDirs = [], includes = [], depends = [InstalledPackageId "base-4.4.1.0-0b74da1b5cceb1549c5473c9b76bf860"], hugsOptions = [], ccOptions = [], ldOptions = [], frameworkDirs = [], frameworks = [], haddockInterfaces = ["/home/exfalso/.cabal/share/doc/transformers-0.2.2.0/html/transformers.haddock"], haddockHTMLs = ["/home/exfalso/.cabal/share/doc/transformers-0.2.2.0/html"]}])])]), pkgDescrFile = Just "./ProxN.cabal", localPkgDescr = PackageDescription {package = PackageIdentifier {pkgName = PackageName "ProxN", pkgVersion = Version {versionBranch = [0,0,1], versionTags = []}}, license = BSD3, licenseFile = "LICENSE", copyright = "", maintainer = "0slemi0@gmail.com", author = "Andras Slemmer", stability = "", testedWith = [], homepage = "https://github.com/exFalso/ProxN", pkgUrl = "", bugReports = "", sourceRepos = [], synopsis = "Proximity sets in N dimensions", description = "", category = "Math", customFieldsPD = [], buildDepends = [Dependency (PackageName "base") (IntersectVersionRanges (EarlierVersion (Version {versionBranch = [5], versionTags = []})) (ThisVersion (Version {versionBranch = [4,4,1,0], versionTags = []}))),Dependency (PackageName "mtl") (IntersectVersionRanges AnyVersion (ThisVersion (Version {versionBranch = [2,0,1,0], versionTags = []})))], specVersionRaw = Right (UnionVersionRanges (ThisVersion (Version {versionBranch = [1,2], versionTags = []})) (LaterVersion (Version {versionBranch = [1,2], versionTags = []}))), buildType = Just Simple, library = Just (Library {exposedModules = [ModuleName ["Data","ProxN","Peano"],ModuleName ["Data","ProxN","Pretty"],ModuleName ["Data","ProxN","Proximity"],ModuleName ["Data","ProxN","Show1"],ModuleName ["Data","ProxN","Tree2N"],ModuleName ["Data","ProxN","VecN"]], libExposed = True, libBuildInfo = BuildInfo {buildable = True, buildTools = [], cppOptions = [], ccOptions = [], ldOptions = [], pkgconfigDepends = [], frameworks = [], cSources = [], hsSourceDirs = ["src"], otherModules = [], defaultLanguage = Nothing, otherLanguages = [], defaultExtensions = [], otherExtensions = [], oldExtensions = [], extraLibs = [], extraLibDirs = [], includeDirs = [], includes = [], installIncludes = [], options = [(GHC,["-Wall"])], ghcProfOptions = [], ghcSharedOptions = [], customFieldsBI = [], targetBuildDepends = [Dependency (PackageName "base") (IntersectVersionRanges (EarlierVersion (Version {versionBranch = [5], versionTags = []})) (ThisVersion (Version {versionBranch = [4,4,1,0], versionTags = []}))),Dependency (PackageName "mtl") (IntersectVersionRanges AnyVersion (ThisVersion (Version {versionBranch = [2,0,1,0], versionTags = []})))]}}), executables = [], testSuites = [], dataFiles = [], dataDir = "", extraSrcFiles = [], extraTmpFiles = []}, withPrograms = [("alex",ConfiguredProgram {programId = "alex", programVersion = Just (Version {versionBranch = [2,3,5], versionTags = []}), programDefaultArgs = [], programOverrideArgs = [], programLocation = FoundOnSystem {locationPath = "/usr/bin/alex"}}),("ar",ConfiguredProgram {programId = "ar", programVersion = Nothing, programDefaultArgs = [], programOverrideArgs = [], programLocation = FoundOnSystem {locationPath = "/usr/bin/ar"}}),("gcc",ConfiguredProgram {programId = "gcc", programVersion = Just (Version {versionBranch = [4,6,2], versionTags = []}), programDefaultArgs = [], programOverrideArgs = [], programLocation = FoundOnSystem {locationPath = "/usr/bin/gcc"}}),("ghc",ConfiguredProgram {programId = "ghc", programVersion = Just (Version {versionBranch = [7,2,2], versionTags = []}), programDefaultArgs = [], programOverrideArgs = [], programLocation = FoundOnSystem {locationPath = "/usr/bin/ghc"}}),("ghc-pkg",ConfiguredProgram {programId = "ghc-pkg", programVersion = Just (Version {versionBranch = [7,2,2], versionTags = []}), programDefaultArgs = [], programOverrideArgs = [], programLocation = FoundOnSystem {locationPath = "/usr/bin/ghc-pkg"}}),("haddock",ConfiguredProgram {programId = "haddock", programVersion = Just (Version {versionBranch = [2,9,4], versionTags = []}), programDefaultArgs = [], programOverrideArgs = [], programLocation = FoundOnSystem {locationPath = "/usr/bin/haddock"}}),("happy",ConfiguredProgram {programId = "happy", programVersion = Just (Version {versionBranch = [1,18,6], versionTags = []}), programDefaultArgs = [], programOverrideArgs = [], programLocation = FoundOnSystem {locationPath = "/usr/bin/happy"}}),("hsc2hs",ConfiguredProgram {programId = "hsc2hs", programVersion = Just (Version {versionBranch = [0,67], versionTags = []}), programDefaultArgs = [], programOverrideArgs = [], programLocation = FoundOnSystem {locationPath = "/usr/bin/hsc2hs"}}),("ld",ConfiguredProgram {programId = "ld", programVersion = Nothing, programDefaultArgs = ["-x"], programOverrideArgs = [], programLocation = FoundOnSystem {locationPath = "/usr/bin/ld"}}),("pkg-config",ConfiguredProgram {programId = "pkg-config", programVersion = Just (Version {versionBranch = [0,26], versionTags = []}), programDefaultArgs = [], programOverrideArgs = [], programLocation = FoundOnSystem {locationPath = "/usr/bin/pkg-config"}}),("ranlib",ConfiguredProgram {programId = "ranlib", programVersion = Nothing, programDefaultArgs = [], programOverrideArgs = [], programLocation = FoundOnSystem {locationPath = "/usr/bin/ranlib"}}),("strip",ConfiguredProgram {programId = "strip", programVersion = Nothing, programDefaultArgs = [], programOverrideArgs = [], programLocation = FoundOnSystem {locationPath = "/usr/bin/strip"}}),("tar",ConfiguredProgram {programId = "tar", programVersion = Nothing, programDefaultArgs = [], programOverrideArgs = [], programLocation = FoundOnSystem {locationPath = "/bin/tar"}})], withPackageDB = [GlobalPackageDB,UserPackageDB], withVanillaLib = True, withProfLib = True, withSharedLib = False, withProfExe = True, withOptimization = NormalOptimisation, withGHCiLib = True, splitObjs = False, stripExes = True, progPrefix = "", progSuffix = ""}
diff --git a/example/Example.hs b/example/Example.hs
new file mode 100644
--- /dev/null
+++ b/example/Example.hs
@@ -0,0 +1,62 @@
+module Main where
+
+import Math.ProxN.VecN as Vec
+import Math.ProxN.Tree2N as Tree
+import Math.ProxN.Peano
+import Math.ProxN.Pretty
+import Math.ProxN.Proximity
+
+import System.Random
+import Control.Applicative
+import Control.Monad.Random(runRandT, RandT, getRandomR)
+import Control.Monad.IO.Class
+import Control.Monad
+import Data.Maybe
+
+-- number of points
+_NUM :: Int
+_NUM = 2000
+
+-- range of one coordinate
+_RANGE :: (Double, Double)
+_RANGE = (0, 100)
+
+-- r^2
+_TOLERANCE2 :: Double
+_TOLERANCE2 = 500.0
+
+-- dimension
+type Dim = Five
+
+
+------------
+
+
+randomList :: Int -> IO [Double]
+randomList n = withStdGen (replicateM n (getRandomR _RANGE))
+
+withStdGen :: (MonadIO m) => RandT StdGen m a -> m a
+withStdGen r = do
+  gen <- liftIO getStdGen
+  (a, nextGen) <- runRandT r gen
+  liftIO $ setStdGen nextGen
+  return a
+
+-- generates a random vector, then 20 random vector-trees of _NUM vectors and calculates the proximity sets of the vector
+main :: IO ()
+main = do
+  let peano = undefined :: Dim
+  ranVec <- fromJust . Vec.fromList <$> randomList (fromPeano peano)
+  mapM_ putStrLn
+    [ "Dimension: " ++ show (fromPeano peano)
+    , "Number of points: " ++ show _NUM
+    , "Random Vector: " ++ prettySimp (ranVec :: VecN Dim Double)
+    , "Tolerance^2: " ++ show _TOLERANCE2
+    , "Depth lower bound: " ++ show (logarithm peano (fromIntegral _NUM))
+    ]
+  replicateM_ 20 $ do
+    let vecM = Vec.fromList <$> randomList (fromPeano peano)
+    tr <- Tree.fromList <$> replicateM _NUM (fromJust <$> vecM)
+    putStrLn $ "Depth: " ++ show (depth tr)
+    putStrLn $ "Vecs in proximity: "
+      ++ show ((prox _TOLERANCE2 ranVec tr))
diff --git a/src/Data/ProxN/Peano.hs b/src/Data/ProxN/Peano.hs
new file mode 100644
--- /dev/null
+++ b/src/Data/ProxN/Peano.hs
@@ -0,0 +1,34 @@
+{-# LANGUAGE ScopedTypeVariables, EmptyDataDecls #-}
+
+module Data.ProxN.Peano where
+
+data Zero
+data Succ n
+
+type One = Succ Zero
+type Two = Succ One
+type Three = Succ Two
+type Four = Succ Three
+type Five = Succ Four
+type Six = Succ Five
+type Seven = Succ Six
+type Eight = Succ Seven
+type Nine = Succ Eight
+type Ten = Succ Nine
+
+class Peano p where
+  fromPeano :: p -> Int
+
+instance Peano Zero where
+  fromPeano _ = 0
+
+instance (Peano p) => Peano (Succ p) where
+  fromPeano _ = 1 + (fromPeano (undefined :: p))
+
+class (Peano p) => Logarithm p where
+  logarithm :: p -> Double -> Double
+  logarithm _ a = log a / log (fromIntegral (fromPeano (undefined :: p)))
+
+instance Logarithm Zero
+
+instance (Peano a) => Logarithm (Succ a)
diff --git a/src/Data/ProxN/Pretty.hs b/src/Data/ProxN/Pretty.hs
new file mode 100644
--- /dev/null
+++ b/src/Data/ProxN/Pretty.hs
@@ -0,0 +1,53 @@
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+
+module Data.ProxN.Pretty( Pretty(..)
+                        , Pretty1(..)
+                        , prettyPut
+                        , prettyNl
+                        , prettyIndent
+                        ) where
+
+import Control.Applicative
+import Control.Monad.Reader
+import Control.Monad.State
+
+newtype PrettyM a = PrettyM (StateT (String -> String)
+                             (Reader ((String -> String),
+                                      (String -> String))) a)
+                  deriving (Monad, Functor, Applicative,
+                            MonadReader ((String -> String), (String -> String)))
+
+prettyPut :: String -> PrettyM ()
+prettyPut str = PrettyM . modify $ (. (str ++))
+
+prettyNl :: PrettyM ()
+prettyNl = do
+  (_, ind) <- ask
+  PrettyM . modify $ (. (('\n' :) . ind))
+
+prettyIndent :: PrettyM a -> PrettyM a
+prettyIndent pr = do
+  local (\(indUnit, ind) -> (indUnit, indUnit . ind)) $ pr
+
+runPrettyM :: (String -> String) -> PrettyM a -> (a, String)
+runPrettyM indUnit (PrettyM pm) =
+  let (ret, fs) = runReader (runStateT pm id) (indUnit, id) in
+  (ret, fs "")
+
+class Pretty p where
+  prettyPrint :: p -> PrettyM ()
+  
+  pretty :: (String -> String) -> p -> String
+  pretty indUnit = snd . runPrettyM indUnit . prettyPrint
+  
+  prettySimp :: p -> String
+  prettySimp = pretty (' ' :)
+
+class Pretty1 p1 where
+  prettyPrint1 :: (Pretty p) => p1 p -> PrettyM ()
+  
+  pretty1 :: (Pretty p) => (String -> String) -> p1 p -> String
+  pretty1 indUnit = snd . runPrettyM indUnit . prettyPrint1
+  
+  prettySimp1 :: (Pretty p) => p1 p -> String
+  prettySimp1 = pretty1 (' ' :)
diff --git a/src/Data/ProxN/Proximity.hs b/src/Data/ProxN/Proximity.hs
new file mode 100644
--- /dev/null
+++ b/src/Data/ProxN/Proximity.hs
@@ -0,0 +1,26 @@
+{-# LANGUAGE ScopedTypeVariables #-}
+
+module Data.ProxN.Proximity where
+
+import Data.ProxN.Tree2N
+import Data.ProxN.VecN
+
+import Control.Applicative
+
+prox :: (VecNClass n, Tree2NClass n) =>
+        Double -> VecN n Double -> VecTree n Double -> [VecN n Double]
+prox tol2 vec tree = proximity tol2 vec tree []
+
+proximity :: forall n. (VecNClass n, Tree2NClass n) =>
+             Double -> VecN n Double -> VecTree n Double -> ([VecN n Double] -> [VecN n Double])
+proximity _ _ Tree2NLeaf = id
+proximity tol2 vec (Tree2NBranch v t) =
+  if distance2 vec v < tol2
+  then (v :) . foldTree proximity' (pure (.)) t
+  else proximity tol2 vec (chooseNode vec v t)
+  where
+    proximity' :: VecTree n Double -> ([VecN n Double] -> [VecN n Double])
+    proximity' Tree2NLeaf = id
+    proximity' (Tree2NBranch v2 t2) = addOrNot . foldTree proximity' (pure (.)) t2
+      where
+        addOrNot = if distance2 vec v2 < tol2 then (v2 :) else id
diff --git a/src/Data/ProxN/Show1.hs b/src/Data/ProxN/Show1.hs
new file mode 100644
--- /dev/null
+++ b/src/Data/ProxN/Show1.hs
@@ -0,0 +1,4 @@
+module Data.ProxN.Show1 where
+
+class Show1 v where
+  show1 :: (Show a) => v a -> String
diff --git a/src/Data/ProxN/Tree2N.hs b/src/Data/ProxN/Tree2N.hs
new file mode 100644
--- /dev/null
+++ b/src/Data/ProxN/Tree2N.hs
@@ -0,0 +1,172 @@
+{-# LANGUAGE ScopedTypeVariables, FlexibleInstances, MultiParamTypeClasses, FlexibleContexts, TypeFamilies, BangPatterns #-}
+
+{-# OPTIONS_GHC -funbox-strict-fields #-}
+
+module Data.ProxN.Tree2N ( Tree2N(..)
+                         , Tree2NClass(..)
+                         , Treed(..)
+                         , VecTree
+                         , fold2NTree
+                         , Data.ProxN.Tree2N.fromList
+                         , depth
+                         , size
+                         , tree0
+                         , tree1
+                         , tree2
+                         , tree3 ) where
+
+import Data.ProxN.VecN
+import Data.ProxN.Pretty
+import Data.ProxN.Show1
+
+import Data.Functor
+import Control.Applicative
+
+import qualified Data.ProxN.Peano as P
+
+  -- Tree with branching factor 2^N
+data Tree2N n a = Tree2NBranch !a !(Treed n (Tree2N n a))
+                | Tree2NLeaf
+
+instance (Tree2NClass n) => Functor (Tree2N n) where
+  fmap _ Tree2NLeaf = Tree2NLeaf
+  fmap f (Tree2NBranch a t) = Tree2NBranch (f a) (fmap (fmap f) t)
+
+instance (Tree2NClass n) => Applicative (Tree2N n) where
+  pure a = Tree2NBranch a (pure Tree2NLeaf)
+  Tree2NLeaf <*> _ = Tree2NLeaf
+  _ <*> Tree2NLeaf = Tree2NLeaf
+  (Tree2NBranch f tf) <*> (Tree2NBranch a ta) = Tree2NBranch (f a) (fmap (<*>) tf <*> ta)
+
+instance (Show a, Tree2NClass n) => Show (Tree2N n a) where
+  show Tree2NLeaf = "Tree2NLeaf"
+  show (Tree2NBranch a t) = "Tree2NBranch " ++ show a ++ " " ++ show1 t
+
+instance (Tree2NClass n) => Pretty1 (Tree2N n) where
+  prettyPrint1 Tree2NLeaf = prettyPut "_" >> prettyNl
+  prettyPrint1 (Tree2NBranch a tr) = do
+    prettyPrint a
+    prettyNl
+    prettyIndent (prettyPrint1 tr)
+
+instance (Tree2NClass n, Pretty a) => Pretty (Tree2N n a) where
+  prettyPrint = prettyPrint1
+
+instance Functor (Treed P.Zero) where
+  fmap f (TreeNil a) = TreeNil (f a)
+
+instance (Functor (Treed n)) => Functor (Treed (P.Succ n)) where
+  fmap f (t1 :/\: t2) = fmap f t1 :/\: fmap f t2
+
+instance Applicative (Treed P.Zero) where
+  pure = TreeNil
+  (TreeNil f) <*> (TreeNil a) = TreeNil (f a)
+
+instance (Applicative (Treed n)) => Applicative (Treed (P.Succ n)) where
+  pure a = pure a :/\: pure a
+  (f1 :/\: f2) <*> (a :/\: b) = (f1 <*> a) :/\: (f2 <*> b)
+
+instance Show1 (Treed P.Zero) where
+  show1 (TreeNil a) = show a
+
+instance (Show1 (Treed n)) => Show1 (Treed (P.Succ n)) where
+  show1 (t1 :/\: t2) = "(" ++ show1 t1 ++ " :/\\: " ++ show1 t2 ++ ")"
+
+instance Pretty1 (Treed P.Zero) where
+  prettyPrint1 (TreeNil a) = prettyPrint a
+
+instance (Pretty1 (Treed n)) => Pretty1 (Treed (P.Succ n)) where
+  prettyPrint1 (t1 :/\: t2) = do
+    prettyPut "(" >> prettyNl
+    prettyIndent $ do
+      prettyPrint1 t1
+      prettyNl
+      prettyPrint1 t2
+    prettyNl
+    prettyPut ")" >> prettyNl
+
+insertNode :: (Ord a, Tree2NClass n) =>
+              VecN n a -> VecTree n a -> VecTree n a
+insertNode v Tree2NLeaf = Tree2NBranch v (pure Tree2NLeaf)
+insertNode v1 (Tree2NBranch v2 r) = Tree2NBranch v2 $ swapNode (insertNode v1) v1 v2 r
+
+class (Functor (Treed n), Applicative (Treed n),
+       Show1 (Treed n), Pretty1 (Treed n)) => Tree2NClass n where
+  data Treed n :: * -> *
+  swapNode :: (Ord a) => (b -> b) -> VecN n a -> VecN n a -> Treed n b -> Treed n b
+  foldTree :: (a -> b) -> VecN n (b -> b -> b) -> Treed n a -> b
+  chooseNode :: (Ord a) => VecN n a -> VecN n a -> Treed n b -> b
+
+instance Tree2NClass P.Zero where
+  data Treed P.Zero a = TreeNil a
+  swapNode f VecNil VecNil (TreeNil !b) = TreeNil (f b)
+  foldTree f VecNil (TreeNil !a) = f a
+  chooseNode VecNil VecNil (TreeNil !b) = b
+
+instance (Tree2NClass n) => Tree2NClass (P.Succ n) where
+  data Treed (P.Succ n) a = Treed n a :/\: Treed n a
+  swapNode f (!a1 :<: (!v1)) (!a2 :<: (!v2)) (!t1 :/\: (!t2)) =
+    if a1 < a2 then swap t1 :/\: t2 else t1 :/\: swap t2
+    where swap = swapNode f v1 v2
+  foldTree f (g :<: v) (t1 :/\: t2) = g (foldTree f v t1) (foldTree f v t2)
+  chooseNode (!a1 :<: (!v1)) (!a2 :<: (!v2)) (!t1 :/\: (!t2)) =
+    if a1 < a2 then choose t1 else choose t2
+    where choose = chooseNode v1 v2
+
+fromList :: (Ord a, Tree2NClass n) =>
+            [VecN n a] -> VecTree n a
+fromList = foldl (flip insertNode) Tree2NLeaf
+
+tree0 :: Tree2N P.Zero Int
+tree0 = Tree2NLeaf
+
+tree1 :: Tree2N P.One Int
+tree1 = Tree2NBranch 0
+        (TreeNil Tree2NLeaf :/\: TreeNil Tree2NLeaf)
+
+tree2 :: Tree2N P.Two Int
+tree2 = Tree2NBranch 0
+        (
+          (TreeNil Tree2NLeaf :/\:
+           TreeNil Tree2NLeaf
+          ) :/\:
+          (TreeNil Tree2NLeaf :/\:
+           TreeNil Tree2NLeaf
+          )
+        )
+
+tree3 :: Tree2N P.Three Int
+tree3 = Tree2NBranch 0
+        (
+          (
+            (TreeNil Tree2NLeaf :/\:
+             TreeNil Tree2NLeaf
+            ) :/\:
+            (TreeNil Tree2NLeaf :/\:
+             TreeNil Tree2NLeaf
+            )
+          ) :/\:
+          (
+            (TreeNil Tree2NLeaf :/\:
+             TreeNil Tree2NLeaf
+            ) :/\:
+            (TreeNil Tree2NLeaf :/\:
+             TreeNil Tree2NLeaf
+            )
+          )
+        )
+
+
+type VecTree n a = Tree2N n (VecN n a)
+
+fold2NTree :: (Tree2NClass n) =>
+              b -> VecN n (b -> b -> b) -> (a -> b -> b) -> Tree2N n a -> b
+fold2NTree b _ _ Tree2NLeaf = b
+fold2NTree b fs g (Tree2NBranch a t) =
+  g a . foldTree id fs . fmap (fold2NTree b fs g) $ t
+
+depth :: (Tree2NClass n, VecNClass n) => Tree2N n a -> Int
+depth = fold2NTree 0 (pure max) (const succ)
+
+size :: (Tree2NClass n, VecNClass n) => Tree2N n a -> Int
+size = fold2NTree 0 (pure (+)) (const succ)
diff --git a/src/Data/ProxN/VecN.hs b/src/Data/ProxN/VecN.hs
new file mode 100644
--- /dev/null
+++ b/src/Data/ProxN/VecN.hs
@@ -0,0 +1,73 @@
+{-# LANGUAGE FlexibleContexts, TypeFamilies, MultiParamTypeClasses, FunctionalDependencies, FlexibleInstances, GADTs, UndecidableInstances #-}
+
+module Data.ProxN.VecN ( VecNClass(..)
+                       , VecN(..)
+                       ) where
+
+import Data.ProxN.Pretty
+
+import Control.Applicative
+import Control.Monad(liftM2)
+import Data.Functor
+import Data.Foldable
+import Data.Monoid
+
+import qualified Data.ProxN.Peano as P
+
+--data VecNil a = VecNil
+--data VecTCons v a = !a :<: !(v a)
+
+instance Show (VecN P.Zero a) where
+  show = const "[]"
+
+instance (Show a, Show (VecN n a)) => Show (VecN (P.Succ n) a) where
+  show (a :<: v) = "[" ++ show a ++ "]" ++ show v
+
+instance Functor (VecN P.Zero) where
+  fmap _ VecNil = VecNil
+
+instance (Functor (VecN n)) => Functor (VecN (P.Succ n)) where
+  fmap f (a :<: v) = f a :<: fmap f v
+
+instance Foldable (VecN P.Zero) where
+  foldMap _ VecNil = mempty
+
+instance (Foldable (VecN n)) => Foldable (VecN (P.Succ n)) where
+  foldMap f (a :<: v) = f a `mappend` foldMap f v
+
+instance Applicative (VecN P.Zero) where
+  pure _ = VecNil
+  (<*>) _ _ = VecNil
+
+instance (Applicative (VecN n)) => Applicative (VecN (P.Succ n)) where
+  pure a = a :<: pure a
+  (f :<: v1) <*> (a :<: v2) = f a :<: (v1 <*> v2)
+
+instance (Show a) => Pretty (VecN P.Zero a) where
+  prettyPrint = prettyPut . show
+
+instance (Show a, Show (VecN n a)) => Pretty (VecN (P.Succ n) a) where
+  prettyPrint = prettyPut . show
+
+class ( P.Peano n
+      , Applicative (VecN n)
+      , Functor (VecN n)) => VecNClass n where
+  data VecN n :: * -> *
+  distance2 :: (Num a) => VecN n a -> VecN n a -> a  
+  vecCartProd :: VecN n [a] -> [VecN n a]
+  fromList :: [a] -> Maybe (VecN n a)
+
+instance (VecNClass r) => VecNClass (P.Succ r) where
+  data VecN (P.Succ r) a = !a :<: !(VecN r a)
+  distance2 (a :<: v1) (b :<: v2) = (a - b) ^ (2 :: Int) + distance2 v1 v2
+  vecCartProd (as :<: vs) = liftM2 (:<:) as (vecCartProd vs)
+                        -- [ a :<: v | a <- as
+                        --           , v <- vecCartProd vs ]
+  fromList [] = Nothing
+  fromList (a : as) = (a :<:) <$> fromList as
+
+instance VecNClass P.Zero where
+  data VecN P.Zero a = VecNil
+  distance2 _ _ = 0
+  vecCartProd VecNil = [VecNil]
+  fromList _ = Just VecNil
