diff --git a/.gitignore b/.gitignore
index 7701104..62bee05 100644
--- a/.gitignore
+++ b/.gitignore
@@ -2,4 +2,5 @@
/.gradle
/build
/out
-.DS_Store
\ No newline at end of file
+.DS_Store
+pubring.gpg
diff --git a/.travis.yml b/.travis.yml
new file mode 100644
index 0000000..5cd0b85
--- /dev/null
+++ b/.travis.yml
@@ -0,0 +1,44 @@
+language: java
+jdk: oraclejdk8
+before_cache:
+ - rm -f $HOME/.gradle/caches/modules-2/modules-2.lock
+ - rm -fr $HOME/.gradle/caches/*/plugin-resolution/
+cache:
+ directories:
+ - $HOME/.gradle/caches/
+ - $HOME/.gradle/wrapper/
+deploy:
+ # Publish Javadoc to GitHub Pages
+ - provider: pages
+ skip_cleanup: true
+ github_token: $GITHUB_ACCESS_TOKEN
+ local_dir: build/docs/javadoc
+ keep_history: true
+ on:
+ tags: true
+
+ # Create a GitHub release
+ - provider: releases
+ api_key: $GITHUB_ACCESS_TOKEN
+ on:
+ tags: true
+
+ # Trigger JitPack to build
+ - provider: script
+ script: .travis/jitpack.sh $JITPACK_ACCESS_TOKEN $TRAVIS_TAG
+ on:
+ tags: true
+
+ # Trigger Travis CI to deploy `extractor.java`
+ - provider: script
+ script: .travis/extractor.sh $TRAVIS_ACCESS_TOKEN
+ on:
+ tags: true
+env:
+ global:
+ # GITHUB_ACCESS_TOKEN
+ - secure: hEgt5ke7q8FouZlRjKTq6eXWSKOAzEK3Li8ffBl7WdcXgorRH7C6dY4aXldHNaG4+R2FCOSzwf8ke5XYZRJT/J45QKWAapJ/hTOqzjD2kWBf0sBcshLrSsyKWx3o6n0jaO8Owv+pgw0f4IcEIOoGW0Lj6Sq1RmErn6i8Whi9FIV9BSKG/ICpyPA+iqqpwYdZzP87D/w4wrlYzSOwLfmM08m46n/xsBiazNFH+Urj4/a9Lo2doA6FoCcFyc8wPQ0naX/y1Mj2UyJdlhVAqgmHGZ06DWpl8sUAXos/gCLOrSRgittjyDh+echRsziIJCBuIHdx1vSyUWiGpLzrb42FM6QuD0GoqqXbK84dm9rdK43rO/jBbGgib5xJK3itguqRk6BlSgMoYMZ5Fiv4uo42UDwgz+XF6xfw84eJdbwk+GtGzN5VgH9Qgnkl6sDsEkvPUAR6tlXvqP8s9Jkvkc4Xte4pXDL/m8Penv3ZBfwGsQQXB6tYEVS452HbhqPPRgrGM0LTGXIf/GyfLq2wEl1xVHZNcb7IP/I61X5A6B9szhtITqft6YEmAgyB8wdoQh8g/7pl8cFIh1kRvzS/MzMBaYhORS1kDbukYFLvscVwLwedUohsNlfpek744E1OUP26YYxwPF1NU2ym1R/hZ/M8O/C2gwAa8bZtRKQcQDDv/GY=
+ # TRAVIS_ACCESS_TOKEN
+ - secure: r2CXlCj8MkmlF+TPpBaRXy8Kl7leMAY5LrkUcQ4dU0MvCoAH1oGmGTitCIfjny0AFhCaGZu7jelTGI2SqZ115c1HYF/e4sXglrXWRU84LZjR+zro8hHmGTXrYZfhO5zYHmQYU6CfO8N5LWFlAzPgxrgRVJRKTyxv1JEc/dhIY0zjdbxE4cdCCIsLykPA6YG65w8OJbMnP4iZugmoBumh+Nr51bg8Ml72new8z6amVjKQC+xBVdwR+WWHPa7OE77B5eRd55jlLuUc9P8KZjYXm5VMVEQJnuTtI2X7roTDVszXGNT3cVCJQH44m3H4w1W8GHFU+SBOiyO4Yu0f0ecncvuH/P0LrwGvxotkpZiDK7CIfAoJKrNiCitUcU8ouuE+vX1wLio30L3CkrWxSHryp/MPYQTES1s26MeXuISf2R+twozmXQg/Cnpxw5WS8txzKNbwISlEJVXYMn80qHs7Jk9yGVzxgWEF3TZyWJwupRZbpruzQzz9+khPkyvyZd5kICb+85nL1Pxdbp3IirIoBJ40opnDahFWbx+KAkEx9OcVcxofDGr2gqRu15VW2OPhVE4NMtxMFeXFp+rhec32Pj2nhxk+IU8DwhG26yw/g/uUchIAN/7QXrppPsHY1D6hwtAkdg/42lZdzJHnivebLE58biRlFumBa24i4uyMWXU=
+ # JITPACK_ACCESS_TOKEN
+ - secure: A+f57e4haNAGvWEJCz4uN9gEZsRq0Pz1M5V4AfdguJx1IbzedngxZwFMHm9oIVFnxyhpdJGguj1oX+suW+VZjBNhQ6/xats/H2YzP10mauTB84w9KSJTVymL/SyaDs6IbAcdSjAYirCOiqQ6l4YuCMToGjbc0BHMnFPPzJpu2TduVJtqOKcXc4TpA9L/heIvpE8psFw/yl9gToXmO5bGYyaeVltaiAd+045mbieCE4z7Tvb4zPCNeqDYiY9hwwZRID1JJMw8I4RYxUTv6QebWCZPjjKqp0/yz0OCdMjdqdPWEBdnHDi59+VNgaaUd7qqZcruQiI5GzojSz2Q/1dGHveXkOmtWbS/E8c9VF36hvK3Z4oqiNfPWgXFj188+cguPTF/ABcrz9oTyIh8mwHhLYgXWQjWE9pWddJ6FDdyGqtyaAPe1lOF4SR3qqSTuxNdVsx9Ll0VZPGVhWMmrUr6kJfhIIW/eCrUwsQVGoJoeYQEcf3EGEEa/NtzHdNbITy3EZ68Gg29Pf6T+dJE/HtnuMrMvLeaKRovk/Ry60yDPIwTQohBCl3r6uL2pSj7hxacP2byeAB4CxxweBeX/pPIEP6LzqYOdmJ9Tv42JgPFYlbf8gjXS2arJTl3+sOALWgKYO9wsFnCxaP3739j1l6W01hp1Xpc2px0c9+faSMzvRE=
\ No newline at end of file
diff --git a/.travis/extractor.sh b/.travis/extractor.sh
new file mode 100755
index 0000000..06b4f15
--- /dev/null
+++ b/.travis/extractor.sh
@@ -0,0 +1,22 @@
+#!/usr/bin/env bash
+
+TRAVIS_ACCESS_TOKEN=$1
+GITHUB_USER="algorithm-visualizer"
+GITHUB_REPO="extractor.java"
+BODY="{
+ \"request\": {
+ \"branch\": \"master\"
+ }
+}"
+
+STATUS_CODE=$(curl -s -o /dev/stderr -w "%{http_code}" -X POST \
+ -H "Content-Type: application/json" \
+ -H "Accept: application/json" \
+ -H "Travis-API-Version: 3" \
+ -H "Authorization: token ${TRAVIS_ACCESS_TOKEN}" \
+ -d "${BODY}" \
+ "https://api.travis-ci.com/repo/${GITHUB_USER}%2F${GITHUB_REPO}/requests")
+
+if [[ ${STATUS_CODE} != 2* ]]; then
+ exit 1
+fi
diff --git a/.travis/jitpack.sh b/.travis/jitpack.sh
new file mode 100755
index 0000000..31b6039
--- /dev/null
+++ b/.travis/jitpack.sh
@@ -0,0 +1,27 @@
+#!/usr/bin/env bash
+
+JITPACK_ACCESS_TOKEN=$1
+TRAVIS_TAG=$2
+GROUP_ID="org.algorithm-visualizer"
+ARTIFACT_ID="tracers.java"
+MAX_RETRIES=42
+INTERVAL=5
+
+# Remove the artifact of the same version if it already exists
+curl -u${JITPACK_ACCESS_TOKEN}: -X DELETE "https://jitpack.io/api/builds/${GROUP_ID}/${ARTIFACT_ID}/${TRAVIS_TAG}"
+
+for (( i=1; i<=MAX_RETRIES; ++i)); do
+ STATUS_CODE=$(curl -s -o /dev/stderr -w "%{http_code}" \
+ -H "Content-Type: application/json" \
+ -H "Accept: application/json" \
+ -H "Travis-API-Version: 3" \
+ "https://jitpack.io/org/algorithm-visualizer/tracers.java/${TRAVIS_TAG}/tracers.java-${TRAVIS_TAG}.pom")
+ if [[ ${STATUS_CODE} == 2* ]]; then
+ exit 0
+ fi
+ echo " (${i}/${MAX_RETRIES})"
+ if [[ ${i} < ${MAX_RETRIES} ]]; then
+ sleep ${INTERVAL}
+ fi
+done
+exit 1
diff --git a/README.md b/README.md
index f1366e4..674edf6 100644
--- a/README.md
+++ b/README.md
@@ -1,30 +1,100 @@
-# tracers.java
+# tracers.java [](https://jitpack.io/#org.algorithm-visualizer/tracers.java) [](https://algorithm-visualizer.github.io/tracers.java/) [](https://travis-ci.com/algorithm-visualizer/tracers.java)
-> `tracers.java` is a visualization library for Java.
+> This repository is part of the project [Algorithm Visualizer](https://github.com/algorithm-visualizer).
-This repository is part of the project [Algorithm Visualizer](https://github.com/algorithm-visualizer).
+`tracers.java` is a visualization library for Java.
+You can use it on [algorithm-visualizer.org](https://algorithm-visualizer.org/) or locally on your machine.
## Installation
+### Gradle
+1. Add the JitPack repository to `build.gradle`.
+ ```gradle
+ allprojects {
+ repositories {
+ jcenter()
+ maven { url "https://jitpack.io" }
+ }
+ }
+ ```
+
+2. Add the dependency.
+ ```gradle
+ dependencies {
+ implementation 'org.algorithm-visualizer:tracers.java:+'
+ }
+ ```
-1. Download `algorithm-visualizer.jar` in the [latest release](https://github.com/algorithm-visualizer/tracers.java/releases/latest).
+### Maven
+1. Add the JitPack repository to `pom.xml`.
+ ```xml
+
Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.
Alternative Proxies: