Check in the proguard 6.2.2 binaries and sources

Update the proguard third_party build files to use 6.2.2

Closes: https://github.com/bazelbuild/bazel/pull/12910
diff --git a/third_party/java/proguard/proguard6.2.2/examples/android-plugin/AndroidManifest.xml b/third_party/java/proguard/proguard6.2.2/examples/android-plugin/AndroidManifest.xml
new file mode 100644
index 0000000..6b6321d
--- /dev/null
+++ b/third_party/java/proguard/proguard6.2.2/examples/android-plugin/AndroidManifest.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+          package="com.example"
+          android:versionCode="1"
+          android:versionName="1.0">
+    <uses-sdk android:minSdkVersion="4"
+              android:targetSdkVersion="15" />
+    <application android:label="@string/app_name"
+                 android:icon="@drawable/ic_launcher"
+                 android:theme="@style/AppTheme">
+       <activity android:name="HelloWorldActivity"
+                 android:label="@string/app_name">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.intent.category.LAUNCHER" />
+            </intent-filter>
+        </activity>
+    </application>
+</manifest>
diff --git a/third_party/java/proguard/proguard6.2.2/examples/android-plugin/build.gradle b/third_party/java/proguard/proguard6.2.2/examples/android-plugin/build.gradle
new file mode 100644
index 0000000..e229990
--- /dev/null
+++ b/third_party/java/proguard/proguard6.2.2/examples/android-plugin/build.gradle
@@ -0,0 +1,67 @@
+// This build file illustrates how to apply ProGuard in the Android build
+// process, with ProGuard's own plugin instead of the built-in minification
+// support of the Android Gradle plugin.
+buildscript {
+    repositories {
+        //flatDir dirs: '../../lib' // For the local copy of the ProGuard plugin.
+        google()                    // For the Android Gradle plugin.
+        jcenter()                   // For anything else.
+    }
+    dependencies {
+        //classpath ':proguard:'    // For the local copy of the ProGuard plugin.
+        classpath 'net.sf.proguard:proguard-gradle:6.2.2' // For the copy from Jcenter.
+        classpath 'com.android.tools.build:gradle:3.3.0'
+    }
+}
+
+apply plugin: 'com.android.application'
+apply plugin: 'proguard'
+
+android {
+    compileSdkVersion 28
+
+    signingConfigs {
+        debug {
+            storeFile     file('debug.keystore')
+            storePassword 'android'
+            keyAlias      'androiddebugkey'
+            keyPassword   'android'
+        }
+    }
+
+    defaultConfig {
+        signingConfig signingConfigs.debug
+    }
+
+    sourceSets {
+        main {
+            manifest.srcFile 'AndroidManifest.xml'
+            java.srcDirs         = ['src']
+            resources.srcDirs    = ['src']
+            aidl.srcDirs         = ['src']
+            renderscript.srcDirs = ['src']
+            res.srcDirs          = ['res']
+            assets.srcDirs       = ['assets']
+        }
+    }
+
+    buildTypes {
+        // We can now use ProGuard's tuned Android configuration files
+        // instead of the default ones from the Android SDK.
+        debug {
+            minifyEnabled false
+            proguardFile getTunedProGuardFile('proguard-android-debug.pro')
+            proguardFile 'proguard-project.txt'
+        }
+        release {
+            minifyEnabled false
+            proguardFile getTunedProGuardFile('proguard-android-release.pro')
+            proguardFile 'proguard-project.txt'
+        }
+    }
+}
+
+repositories {
+    google()  // For the Android plugin.
+    jcenter() // For anything else.
+}
diff --git a/third_party/java/proguard/proguard6.2.2/examples/android-plugin/debug.keystore b/third_party/java/proguard/proguard6.2.2/examples/android-plugin/debug.keystore
new file mode 100644
index 0000000..7e28347
--- /dev/null
+++ b/third_party/java/proguard/proguard6.2.2/examples/android-plugin/debug.keystore
Binary files differ
diff --git a/third_party/java/proguard/proguard6.2.2/examples/android-plugin/proguard-project.txt b/third_party/java/proguard/proguard6.2.2/examples/android-plugin/proguard-project.txt
new file mode 100644
index 0000000..5a89ed5
--- /dev/null
+++ b/third_party/java/proguard/proguard6.2.2/examples/android-plugin/proguard-project.txt
@@ -0,0 +1,127 @@
+###############################################################################
+# General settings.
+###############################################################################
+
+-verbose
+
+# We can debug the ProGuard configuration by instrumenting the code and
+# checking the log for feedback. Disable the option again for actual releases!
+
+#-addconfigurationdebugging
+
+# We can also disable the individual processing steps.
+
+#-dontshrink
+#-dontoptimize
+#-dontobfuscate
+
+# Specifically target Android.
+
+-android
+
+
+###############################################################################
+# Settings to handle reflection in the code.
+###############################################################################
+
+# Preserve annotated and generated classes for Dagger.
+
+-keepclassmembers,allowobfuscation class * {
+    @dagger.** *;
+}
+
+-keep class **$$ModuleAdapter
+-keep class **$$InjectAdapter
+-keep class **$$StaticInjection
+
+-if   class **$$ModuleAdapter
+-keep class <1>
+
+-if   class **$$InjectAdapter
+-keep class <1>
+
+-if   class **$$StaticInjection
+-keep class <1>
+
+-keepnames class dagger.Lazy
+
+# Preserve annotated and generated classes for Butterknife.
+
+-keep class **$$ViewBinder {
+    public static void bind(...);
+    public static void unbind(...);
+}
+
+-if   class **$$ViewBinder
+-keep class <1>
+
+-keep class **_ViewBinding {
+    <init>(<1>, android.view.View);
+}
+
+-if   class **_ViewBinding
+-keep class <1>
+
+# Preserve fields that are serialized with GSON.
+
+#-keepclassmembers class com.example.SerializedClass1,
+#                        com.example.SerializedClass2 {
+#    <fields>;
+#}
+
+-keepclassmembers,allowobfuscation class * {
+    @com.google.gson.annotations.SerializedName <fields>;
+}
+
+-keep,allowobfuscation @interface com.google.gson.annotations.**
+
+
+###############################################################################
+# Further optimizations.
+###############################################################################
+
+# If you wish, you can let the optimization step remove Android logging calls.
+
+#-assumenosideeffects class android.util.Log {
+#    public static boolean isLoggable(java.lang.String, int);
+#    public static int v(...);
+#    public static int i(...);
+#    public static int w(...);
+#    public static int d(...);
+#    public static int e(...);
+#}
+
+# In that case, it's especially useful to also clean up any corresponding
+# string concatenation calls.
+
+-assumenoexternalsideeffects class java.lang.StringBuilder {
+    public java.lang.StringBuilder();
+    public java.lang.StringBuilder(int);
+    public java.lang.StringBuilder(java.lang.String);
+    public java.lang.StringBuilder append(java.lang.Object);
+    public java.lang.StringBuilder append(java.lang.String);
+    public java.lang.StringBuilder append(java.lang.StringBuffer);
+    public java.lang.StringBuilder append(char[]);
+    public java.lang.StringBuilder append(char[], int, int);
+    public java.lang.StringBuilder append(boolean);
+    public java.lang.StringBuilder append(char);
+    public java.lang.StringBuilder append(int);
+    public java.lang.StringBuilder append(long);
+    public java.lang.StringBuilder append(float);
+    public java.lang.StringBuilder append(double);
+    public java.lang.String toString();
+}
+
+-assumenoexternalreturnvalues class java.lang.StringBuilder {
+    public java.lang.StringBuilder append(java.lang.Object);
+    public java.lang.StringBuilder append(java.lang.String);
+    public java.lang.StringBuilder append(java.lang.StringBuffer);
+    public java.lang.StringBuilder append(char[]);
+    public java.lang.StringBuilder append(char[], int, int);
+    public java.lang.StringBuilder append(boolean);
+    public java.lang.StringBuilder append(char);
+    public java.lang.StringBuilder append(int);
+    public java.lang.StringBuilder append(long);
+    public java.lang.StringBuilder append(float);
+    public java.lang.StringBuilder append(double);
+}
diff --git a/third_party/java/proguard/proguard6.2.2/examples/android-plugin/res/drawable/ic_launcher.png b/third_party/java/proguard/proguard6.2.2/examples/android-plugin/res/drawable/ic_launcher.png
new file mode 100644
index 0000000..d098d4c
--- /dev/null
+++ b/third_party/java/proguard/proguard6.2.2/examples/android-plugin/res/drawable/ic_launcher.png
Binary files differ
diff --git a/third_party/java/proguard/proguard6.2.2/examples/android-plugin/res/values/colors.xml b/third_party/java/proguard/proguard6.2.2/examples/android-plugin/res/values/colors.xml
new file mode 100644
index 0000000..a5109aa
--- /dev/null
+++ b/third_party/java/proguard/proguard6.2.2/examples/android-plugin/res/values/colors.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+  <color name="primary">#4B7FCE</color>
+  <color name="primary_dark">#4B7FCE</color>
+  <color name="primary_light">#7BAFCE</color>
+  <color name="accent">#4B7FCE</color>
+</resources>
diff --git a/third_party/java/proguard/proguard6.2.2/examples/android-plugin/res/values/strings.xml b/third_party/java/proguard/proguard6.2.2/examples/android-plugin/res/values/strings.xml
new file mode 100644
index 0000000..2bca769
--- /dev/null
+++ b/third_party/java/proguard/proguard6.2.2/examples/android-plugin/res/values/strings.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+    <string name="app_name">HelloWorld Sample</string>
+</resources>
diff --git a/third_party/java/proguard/proguard6.2.2/examples/android-plugin/res/values/styles.xml b/third_party/java/proguard/proguard6.2.2/examples/android-plugin/res/values/styles.xml
new file mode 100644
index 0000000..59baa69
--- /dev/null
+++ b/third_party/java/proguard/proguard6.2.2/examples/android-plugin/res/values/styles.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+    <style name="AppTheme" parent="android:Theme.Material.Light.DarkActionBar">
+        <item name="android:colorPrimary">@color/primary</item>
+        <item name="android:colorPrimaryDark">@color/primary_dark</item>
+        <item name="android:colorAccent">@color/accent</item>
+    </style>
+</resources>
diff --git a/third_party/java/proguard/proguard6.2.2/examples/android-plugin/src/com/example/HelloWorldActivity.java b/third_party/java/proguard/proguard6.2.2/examples/android-plugin/src/com/example/HelloWorldActivity.java
new file mode 100644
index 0000000..f10501e
--- /dev/null
+++ b/third_party/java/proguard/proguard6.2.2/examples/android-plugin/src/com/example/HelloWorldActivity.java
@@ -0,0 +1,29 @@
+/*
+ * Sample application to illustrate processing with ProGuard.
+ *
+ * Copyright (c) 2012-2019 Guardsquare NV
+ */
+package com.example;
+
+import android.app.Activity;
+import android.os.Bundle;
+import android.view.Gravity;
+import android.widget.TextView;
+
+/**
+ * Sample activity that displays "Hello world!".
+ */
+public class HelloWorldActivity extends Activity
+{
+    @Override
+    public void onCreate(Bundle savedInstanceState)
+    {
+        super.onCreate(savedInstanceState);
+
+        // Display the message.
+        TextView view = new TextView(this);
+        view.setText("Hello World");
+        view.setGravity(Gravity.CENTER);
+        setContentView(view);
+    }
+}
diff --git a/third_party/java/proguard/proguard6.2.2/examples/android/AndroidManifest.xml b/third_party/java/proguard/proguard6.2.2/examples/android/AndroidManifest.xml
new file mode 100644
index 0000000..6b6321d
--- /dev/null
+++ b/third_party/java/proguard/proguard6.2.2/examples/android/AndroidManifest.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+          package="com.example"
+          android:versionCode="1"
+          android:versionName="1.0">
+    <uses-sdk android:minSdkVersion="4"
+              android:targetSdkVersion="15" />
+    <application android:label="@string/app_name"
+                 android:icon="@drawable/ic_launcher"
+                 android:theme="@style/AppTheme">
+       <activity android:name="HelloWorldActivity"
+                 android:label="@string/app_name">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.intent.category.LAUNCHER" />
+            </intent-filter>
+        </activity>
+    </application>
+</manifest>
diff --git a/third_party/java/proguard/proguard6.2.2/examples/android/build.gradle b/third_party/java/proguard/proguard6.2.2/examples/android/build.gradle
new file mode 100644
index 0000000..2b6f71e
--- /dev/null
+++ b/third_party/java/proguard/proguard6.2.2/examples/android/build.gradle
@@ -0,0 +1,65 @@
+buildscript {
+    repositories {
+        google()  // For the Android plugin.
+        jcenter() // For anything else.
+    }
+    dependencies {
+        classpath 'com.android.tools.build:gradle:3.4.0'
+    }
+    configurations.all {
+        resolutionStrategy {
+            // Override the default version of ProGuard
+            // with the most recent one.
+            force 'net.sf.proguard:proguard-gradle:6.2.2'
+        }
+    }
+}
+
+apply plugin: 'com.android.application'
+
+android {
+    compileSdkVersion 28
+
+    signingConfigs {
+        debug {
+            storeFile     file('debug.keystore')
+            storePassword 'android'
+            keyAlias      'androiddebugkey'
+            keyPassword   'android'
+        }
+    }
+
+    defaultConfig {
+        signingConfig signingConfigs.debug
+    }
+
+    sourceSets {
+        main {
+            manifest.srcFile 'AndroidManifest.xml'
+            java.srcDirs         = ['src']
+            resources.srcDirs    = ['src']
+            aidl.srcDirs         = ['src']
+            renderscript.srcDirs = ['src']
+            res.srcDirs          = ['res']
+            assets.srcDirs       = ['assets']
+        }
+    }
+
+    buildTypes {
+        debug {
+            minifyEnabled   false
+            shrinkResources false
+        }
+        release {
+            minifyEnabled   true
+            shrinkResources true
+            proguardFile getDefaultProguardFile('proguard-android-optimize.txt')
+            proguardFile 'proguard-project.txt'
+        }
+    }
+}
+
+repositories {
+    google()  // For the Android plugin.
+    jcenter() // For anything else.
+}
diff --git a/third_party/java/proguard/proguard6.2.2/examples/android/debug.keystore b/third_party/java/proguard/proguard6.2.2/examples/android/debug.keystore
new file mode 100644
index 0000000..7e28347
--- /dev/null
+++ b/third_party/java/proguard/proguard6.2.2/examples/android/debug.keystore
Binary files differ
diff --git a/third_party/java/proguard/proguard6.2.2/examples/android/gradle.properties b/third_party/java/proguard/proguard6.2.2/examples/android/gradle.properties
new file mode 100644
index 0000000..c857374
--- /dev/null
+++ b/third_party/java/proguard/proguard6.2.2/examples/android/gradle.properties
@@ -0,0 +1,4 @@
+# Make sure that we use ProGuard instead of R8.
+
+android.enableR8=false
+android.enableR8.libraries=false
diff --git a/third_party/java/proguard/proguard6.2.2/examples/android/proguard-project.txt b/third_party/java/proguard/proguard6.2.2/examples/android/proguard-project.txt
new file mode 100644
index 0000000..5a89ed5
--- /dev/null
+++ b/third_party/java/proguard/proguard6.2.2/examples/android/proguard-project.txt
@@ -0,0 +1,127 @@
+###############################################################################
+# General settings.
+###############################################################################
+
+-verbose
+
+# We can debug the ProGuard configuration by instrumenting the code and
+# checking the log for feedback. Disable the option again for actual releases!
+
+#-addconfigurationdebugging
+
+# We can also disable the individual processing steps.
+
+#-dontshrink
+#-dontoptimize
+#-dontobfuscate
+
+# Specifically target Android.
+
+-android
+
+
+###############################################################################
+# Settings to handle reflection in the code.
+###############################################################################
+
+# Preserve annotated and generated classes for Dagger.
+
+-keepclassmembers,allowobfuscation class * {
+    @dagger.** *;
+}
+
+-keep class **$$ModuleAdapter
+-keep class **$$InjectAdapter
+-keep class **$$StaticInjection
+
+-if   class **$$ModuleAdapter
+-keep class <1>
+
+-if   class **$$InjectAdapter
+-keep class <1>
+
+-if   class **$$StaticInjection
+-keep class <1>
+
+-keepnames class dagger.Lazy
+
+# Preserve annotated and generated classes for Butterknife.
+
+-keep class **$$ViewBinder {
+    public static void bind(...);
+    public static void unbind(...);
+}
+
+-if   class **$$ViewBinder
+-keep class <1>
+
+-keep class **_ViewBinding {
+    <init>(<1>, android.view.View);
+}
+
+-if   class **_ViewBinding
+-keep class <1>
+
+# Preserve fields that are serialized with GSON.
+
+#-keepclassmembers class com.example.SerializedClass1,
+#                        com.example.SerializedClass2 {
+#    <fields>;
+#}
+
+-keepclassmembers,allowobfuscation class * {
+    @com.google.gson.annotations.SerializedName <fields>;
+}
+
+-keep,allowobfuscation @interface com.google.gson.annotations.**
+
+
+###############################################################################
+# Further optimizations.
+###############################################################################
+
+# If you wish, you can let the optimization step remove Android logging calls.
+
+#-assumenosideeffects class android.util.Log {
+#    public static boolean isLoggable(java.lang.String, int);
+#    public static int v(...);
+#    public static int i(...);
+#    public static int w(...);
+#    public static int d(...);
+#    public static int e(...);
+#}
+
+# In that case, it's especially useful to also clean up any corresponding
+# string concatenation calls.
+
+-assumenoexternalsideeffects class java.lang.StringBuilder {
+    public java.lang.StringBuilder();
+    public java.lang.StringBuilder(int);
+    public java.lang.StringBuilder(java.lang.String);
+    public java.lang.StringBuilder append(java.lang.Object);
+    public java.lang.StringBuilder append(java.lang.String);
+    public java.lang.StringBuilder append(java.lang.StringBuffer);
+    public java.lang.StringBuilder append(char[]);
+    public java.lang.StringBuilder append(char[], int, int);
+    public java.lang.StringBuilder append(boolean);
+    public java.lang.StringBuilder append(char);
+    public java.lang.StringBuilder append(int);
+    public java.lang.StringBuilder append(long);
+    public java.lang.StringBuilder append(float);
+    public java.lang.StringBuilder append(double);
+    public java.lang.String toString();
+}
+
+-assumenoexternalreturnvalues class java.lang.StringBuilder {
+    public java.lang.StringBuilder append(java.lang.Object);
+    public java.lang.StringBuilder append(java.lang.String);
+    public java.lang.StringBuilder append(java.lang.StringBuffer);
+    public java.lang.StringBuilder append(char[]);
+    public java.lang.StringBuilder append(char[], int, int);
+    public java.lang.StringBuilder append(boolean);
+    public java.lang.StringBuilder append(char);
+    public java.lang.StringBuilder append(int);
+    public java.lang.StringBuilder append(long);
+    public java.lang.StringBuilder append(float);
+    public java.lang.StringBuilder append(double);
+}
diff --git a/third_party/java/proguard/proguard6.2.2/examples/android/res/drawable/ic_launcher.png b/third_party/java/proguard/proguard6.2.2/examples/android/res/drawable/ic_launcher.png
new file mode 100644
index 0000000..d098d4c
--- /dev/null
+++ b/third_party/java/proguard/proguard6.2.2/examples/android/res/drawable/ic_launcher.png
Binary files differ
diff --git a/third_party/java/proguard/proguard6.2.2/examples/android/res/values/colors.xml b/third_party/java/proguard/proguard6.2.2/examples/android/res/values/colors.xml
new file mode 100644
index 0000000..a5109aa
--- /dev/null
+++ b/third_party/java/proguard/proguard6.2.2/examples/android/res/values/colors.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+  <color name="primary">#4B7FCE</color>
+  <color name="primary_dark">#4B7FCE</color>
+  <color name="primary_light">#7BAFCE</color>
+  <color name="accent">#4B7FCE</color>
+</resources>
diff --git a/third_party/java/proguard/proguard6.2.2/examples/android/res/values/strings.xml b/third_party/java/proguard/proguard6.2.2/examples/android/res/values/strings.xml
new file mode 100644
index 0000000..2bca769
--- /dev/null
+++ b/third_party/java/proguard/proguard6.2.2/examples/android/res/values/strings.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+    <string name="app_name">HelloWorld Sample</string>
+</resources>
diff --git a/third_party/java/proguard/proguard6.2.2/examples/android/res/values/styles.xml b/third_party/java/proguard/proguard6.2.2/examples/android/res/values/styles.xml
new file mode 100644
index 0000000..59baa69
--- /dev/null
+++ b/third_party/java/proguard/proguard6.2.2/examples/android/res/values/styles.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+    <style name="AppTheme" parent="android:Theme.Material.Light.DarkActionBar">
+        <item name="android:colorPrimary">@color/primary</item>
+        <item name="android:colorPrimaryDark">@color/primary_dark</item>
+        <item name="android:colorAccent">@color/accent</item>
+    </style>
+</resources>
diff --git a/third_party/java/proguard/proguard6.2.2/examples/android/src/com/example/HelloWorldActivity.java b/third_party/java/proguard/proguard6.2.2/examples/android/src/com/example/HelloWorldActivity.java
new file mode 100644
index 0000000..f10501e
--- /dev/null
+++ b/third_party/java/proguard/proguard6.2.2/examples/android/src/com/example/HelloWorldActivity.java
@@ -0,0 +1,29 @@
+/*
+ * Sample application to illustrate processing with ProGuard.
+ *
+ * Copyright (c) 2012-2019 Guardsquare NV
+ */
+package com.example;
+
+import android.app.Activity;
+import android.os.Bundle;
+import android.view.Gravity;
+import android.widget.TextView;
+
+/**
+ * Sample activity that displays "Hello world!".
+ */
+public class HelloWorldActivity extends Activity
+{
+    @Override
+    public void onCreate(Bundle savedInstanceState)
+    {
+        super.onCreate(savedInstanceState);
+
+        // Display the message.
+        TextView view = new TextView(this);
+        view.setText("Hello World");
+        view.setGravity(Gravity.CENTER);
+        setContentView(view);
+    }
+}
diff --git a/third_party/java/proguard/proguard6.2.2/examples/annotations/examples.pro b/third_party/java/proguard/proguard6.2.2/examples/annotations/examples.pro
new file mode 100644
index 0000000..7c9cf95
--- /dev/null
+++ b/third_party/java/proguard/proguard6.2.2/examples/annotations/examples.pro
@@ -0,0 +1,65 @@
+#
+# This ProGuard configuration file illustrates how to use annotations for
+# specifying which classes and class members should be kept.
+# Usage:
+#     java -jar proguard.jar @examples.pro
+#
+
+# Specify the input, output, and library jars.
+# This is assuming the code has been compiled in the examples directory.
+
+-injars  examples(*.class)
+-outjars out
+
+# Before Java 9, the runtime classes were packaged in a single jar file.
+#-libraryjars <java.home>/lib/rt.jar
+
+# As of Java 9, the runtime classes are packaged in modular jmod files.
+-libraryjars <java.home>/jmods/java.base.jmod(!**.jar;!module-info.class)
+#-libraryjars <java.home>/jmods/.....
+
+# Some important configuration is based on the annotations in the code.
+# We have to specify what the annotations mean to ProGuard.
+
+-include lib/annotations.pro
+
+#
+# We can then still add any other options that might be useful.
+#
+
+# Print out a list of what we're preserving.
+
+-printseeds
+
+# Preserve all annotations themselves.
+
+-keepattributes *Annotation*
+
+# Preserve all native method names and the names of their classes.
+
+-keepclasseswithmembernames,includedescriptorclasses class * {
+    native <methods>;
+}
+
+# Preserve the special static methods that are required in all enumeration
+# classes.
+
+-keepclassmembers,allowoptimization enum * {
+    public static **[] values();
+    public static ** valueOf(java.lang.String);
+}
+
+# Explicitly preserve all serialization members. The Serializable interface
+# is only a marker interface, so it wouldn't save them.
+# You can comment this out if your application doesn't use serialization.
+# If your code contains serializable classes that have to be backward 
+# compatible, please refer to the manual.
+
+-keepclassmembers class * implements java.io.Serializable {
+    static final long serialVersionUID;
+    static final java.io.ObjectStreamField[] serialPersistentFields;
+    private void writeObject(java.io.ObjectOutputStream);
+    private void readObject(java.io.ObjectInputStream);
+    java.lang.Object writeReplace();
+    java.lang.Object readResolve();
+}
diff --git a/third_party/java/proguard/proguard6.2.2/examples/annotations/examples/Applet.java b/third_party/java/proguard/proguard6.2.2/examples/annotations/examples/Applet.java
new file mode 100644
index 0000000..e5b7acc
--- /dev/null
+++ b/third_party/java/proguard/proguard6.2.2/examples/annotations/examples/Applet.java
@@ -0,0 +1,23 @@
+import proguard.annotation.*;
+
+/**
+ * This applet illustrates the use of annotations for configuring ProGuard.
+ *
+ * You can compile it with:
+ *     javac -classpath ../lib/annotations.jar Applet.java
+ * You can then process it with:
+ *     java -jar ../../../lib/proguard.jar @ ../examples.pro
+ *
+ * The annotation will preserve the class and its essential methods,
+ * as a result of the specifications in lib/annotations.pro.
+ */
+@Keep
+public class Applet extends java.applet.Applet
+{
+    // Implementations for Applet.
+
+    public void init()
+    {
+        // ...
+    }
+}
diff --git a/third_party/java/proguard/proguard6.2.2/examples/annotations/examples/Application.java b/third_party/java/proguard/proguard6.2.2/examples/annotations/examples/Application.java
new file mode 100644
index 0000000..777d286
--- /dev/null
+++ b/third_party/java/proguard/proguard6.2.2/examples/annotations/examples/Application.java
@@ -0,0 +1,21 @@
+import proguard.annotation.KeepApplication;
+
+/**
+ * This application illustrates the use of annotations for configuring ProGuard.
+ *
+ * You can compile it with:
+ *     javac -classpath ../lib/annotations.jar Application.java
+ * You can then process it with:
+ *     java -jar ../../../lib/proguard.jar @ ../examples.pro
+ *
+ * The annotation will preserve the class and its main method,
+ * as a result of the specifications in lib/annotations.pro.
+ */
+@KeepApplication
+public class Application
+{
+    public static void main(String[] args)
+    {
+        System.out.println("The answer is 42");
+    }
+}
diff --git a/third_party/java/proguard/proguard6.2.2/examples/annotations/examples/Bean.java b/third_party/java/proguard/proguard6.2.2/examples/annotations/examples/Bean.java
new file mode 100644
index 0000000..aacb501
--- /dev/null
+++ b/third_party/java/proguard/proguard6.2.2/examples/annotations/examples/Bean.java
@@ -0,0 +1,57 @@
+import proguard.annotation.*;
+
+/**
+ * This bean illustrates the use of annotations for configuring ProGuard.
+ *
+ * You can compile it with:
+ *     javac -classpath ../lib/annotations.jar Bean.java
+ * You can then process it with:
+ *     java -jar ../../../lib/proguard.jar @ ../examples.pro
+ *
+ * The annotations will preserve the class and its public getters and setters,
+ * as a result of the specifications in lib/annotations.pro.
+ */
+@Keep
+@KeepPublicGettersSetters
+public class Bean
+{
+    public boolean booleanProperty;
+    public int     intProperty;
+    public String  stringProperty;
+
+
+    public boolean isBooleanProperty()
+    {
+        return booleanProperty;
+    }
+
+
+    public void setBooleanProperty(boolean booleanProperty)
+    {
+        this.booleanProperty = booleanProperty;
+    }
+
+
+    public int getIntProperty()
+    {
+        return intProperty;
+    }
+
+
+    public void setIntProperty(int intProperty)
+    {
+        this.intProperty = intProperty;
+    }
+
+
+    public String getStringProperty()
+    {
+        return stringProperty;
+    }
+
+
+    public void setStringProperty(String stringProperty)
+    {
+        this.stringProperty = stringProperty;
+    }
+}
diff --git a/third_party/java/proguard/proguard6.2.2/examples/annotations/examples/NativeCallBack.java b/third_party/java/proguard/proguard6.2.2/examples/annotations/examples/NativeCallBack.java
new file mode 100644
index 0000000..a4e5583
--- /dev/null
+++ b/third_party/java/proguard/proguard6.2.2/examples/annotations/examples/NativeCallBack.java
@@ -0,0 +1,52 @@
+import proguard.annotation.*;
+
+/**
+ * This application illustrates the use of annotations for configuring ProGuard.
+ *
+ * You can compile it with:
+ *     javac -classpath ../lib/annotations.jar NativeCallBack.java
+ * You can then process it with:
+ *     java -jar ../../../lib/proguard.jar @ ../examples.pro
+ *
+ * The annotation will preserve the class and its main method,
+ * as a result of the specifications in lib/annotations.pro.
+ */
+@KeepApplication
+public class NativeCallBack
+{
+    /**
+     * Suppose this is a native method that computes an answer.
+     *
+     * The -keep option for native methods in the regular ProGuard
+     * configuration will make sure it is not removed or renamed when
+     * processing this code.
+     */
+    public native int computeAnswer();
+
+
+    /**
+     * Suppose this method is called back from the above native method.
+     *
+     * ProGuard would remove it, because it is not referenced from java.
+     * The annotation will make sure it is preserved anyhow.
+     */
+    @Keep
+    public int getAnswer()
+    {
+        return 42;
+    }
+
+
+    /**
+     * The main entry point of the application.
+     *
+     * The @KeepApplication annotation of this class will make sure it is not
+     * removed or renamed when processing this code.
+     */
+    public static void main(String[] args)
+    {
+        int answer = new NativeCallBack().computeAnswer();
+
+        System.out.println("The answer is " + answer);
+    }
+}
diff --git a/third_party/java/proguard/proguard6.2.2/examples/ant/applets.xml b/third_party/java/proguard/proguard6.2.2/examples/ant/applets.xml
new file mode 100644
index 0000000..474abbc
--- /dev/null
+++ b/third_party/java/proguard/proguard6.2.2/examples/ant/applets.xml
@@ -0,0 +1,89 @@
+<!-- This Ant build file illustrates how to process applets.
+     Usage: ant -f applets.xml -->
+
+<project name="Applets" default="obfuscate" basedir="../..">
+
+<target name="obfuscate">
+  <taskdef resource="proguard/ant/task.properties"
+           classpath="lib/proguard.jar" />
+
+  <proguard verbose="true"
+            printseeds="on"
+            printmapping="out.map"
+            renamesourcefileattribute="SourceFile">
+
+    <!-- Specify the input jars, output jars, and library jars. -->
+
+    <injar  file="in.jar" />
+    <outjar file="out.jar" />
+
+    <libraryjar file="${java.home}/lib/rt.jar" />
+
+    <!-- Optionally preserve line numbers in the obfuscated stack traces.
+    <keepattribute name="LineNumberTable">
+    <keepattribute name="SourceFile">
+    -->
+
+    <!-- Preserve all annotations. -->
+
+    <keepattribute name="*Annotation*" />
+
+    <!-- Preserve all public applets. -->
+
+    <keep access="public" extends="java.applet.Applet" />
+
+    <!-- Preserve all native method names and the names of their classes. -->
+
+    <keepclasseswithmembernames includedescriptorclasses="true">
+      <method access="native" />
+    </keepclasseswithmembernames>
+
+    <!-- Preserve the methods that are required in all enumeration classes. -->
+
+    <keepclassmembers allowoptimization="true" type="enum">
+      <method access="public static"
+              type="**[]"
+              name="values"
+              parameters="" />
+      <method access="public static"
+              type="**"
+              name="valueOf"
+              parameters="java.lang.String" />
+    </keepclassmembers>
+
+    <!-- Explicitly preserve all serialization members. The Serializable
+         interface is only a marker interface, so it wouldn't save them.
+         You can comment this out if your library doesn't use serialization.
+         If your code contains serializable classes that have to be backward
+         compatible, please refer to the manual. -->
+
+    <keepclassmembers implements="java.io.Serializable">
+      <field  access    ="static final"
+              type      ="long"
+              name      ="serialVersionUID" />
+      <field  access    ="static final"
+              type      ="java.io.ObjectStreamField[]"
+              name      ="serialPersistentFields" />
+      <method access    ="private"
+              type      ="void"
+              name      ="writeObject"
+              parameters="java.io.ObjectOutputStream" />
+      <method access    ="private"
+              type      ="void"
+              name      ="readObject"
+              parameters="java.io.ObjectInputStream" />
+      <method type      ="java.lang.Object"
+              name      ="writeReplace"
+              parameters="" />
+      <method type      ="java.lang.Object"
+              name      ="readResolve"
+              parameters="" />
+    </keepclassmembers>
+
+    <!-- Your application may contain more items that need to be preserved;
+         typically classes that are dynamically created using Class.forName -->
+
+   </proguard>
+</target>
+
+</project>
diff --git a/third_party/java/proguard/proguard6.2.2/examples/ant/applications1.xml b/third_party/java/proguard/proguard6.2.2/examples/ant/applications1.xml
new file mode 100644
index 0000000..6df5789
--- /dev/null
+++ b/third_party/java/proguard/proguard6.2.2/examples/ant/applications1.xml
@@ -0,0 +1,15 @@
+<!-- This Ant build file illustrates how to process applications,
+     by including a ProGuard-style configuration file.
+     Usage: ant -f applications1.xml -->
+
+<project name="Applications" default="obfuscate" basedir="../..">
+
+<target name="obfuscate">
+  <taskdef resource="proguard/ant/task.properties"
+           classpath="lib/proguard.jar" />
+
+  <proguard configuration="examples/applications.pro" />
+
+</target>
+
+</project>
diff --git a/third_party/java/proguard/proguard6.2.2/examples/ant/applications2.xml b/third_party/java/proguard/proguard6.2.2/examples/ant/applications2.xml
new file mode 100644
index 0000000..fa9f78c
--- /dev/null
+++ b/third_party/java/proguard/proguard6.2.2/examples/ant/applications2.xml
@@ -0,0 +1,76 @@
+<!-- This Ant build file illustrates how to process applications,
+     by including ProGuard-style configuration options.
+     Usage: ant -f applications2.xml -->
+
+<project name="Applications" default="obfuscate" basedir="../..">
+
+<target name="obfuscate">
+  <taskdef resource="proguard/ant/task.properties"
+           classpath="lib/proguard.jar" />
+
+  <proguard>
+
+    -verbose
+
+    <!-- Specify the input jars, output jars, and library jars. -->
+
+    -injars  in.jar
+    -outjars out.jar
+
+    -libraryjars ${java.home}/lib/rt.jar
+    <!-- -libraryjars junit.jar    -->
+    <!-- -libraryjars servlet.jar  -->
+    <!-- -libraryjars jai_core.jar -->
+    <!-- ...                       -->
+
+    <!-- Save the obfuscation mapping to a file, and preserve line numbers. -->
+
+    -printmapping out.map
+    -renamesourcefileattribute SourceFile
+    -keepattributes SourceFile,LineNumberTable
+
+    <!-- Preserve all annotations. -->
+
+    -keepattributes *Annotation*
+
+    <!-- Preserve all public applications. -->
+
+    -keepclasseswithmembers public class * {
+        public static void main(java.lang.String[]);
+    }
+
+    <!-- Preserve all native method names and the names of their classes. -->
+
+    -keepclasseswithmembernames class * {
+        native &lt;methods&gt;;
+    }
+
+    <!-- Preserve the methods that are required in all enumeration classes. -->
+
+    -keepclassmembers,allowoptimization enum * {
+        public static **[] values();
+        public static ** valueOf(java.lang.String);
+    }
+
+    <!-- Explicitly preserve all serialization members. The Serializable
+         interface is only a marker interface, so it wouldn't save them.
+         You can comment this out if your library doesn't use serialization.
+         If your code contains serializable classes that have to be backward
+         compatible, please refer to the manual. -->
+
+    -keepclassmembers class * implements java.io.Serializable {
+        static final long serialVersionUID;
+        static final java.io.ObjectStreamField[] serialPersistentFields;
+        private void writeObject(java.io.ObjectOutputStream);
+        private void readObject(java.io.ObjectInputStream);
+        java.lang.Object writeReplace();
+        java.lang.Object readResolve();
+    }
+
+    <!-- Your application may contain more items that need to be preserved;
+         typically classes that are dynamically created using Class.forName -->
+
+  </proguard>
+</target>
+
+</project>
diff --git a/third_party/java/proguard/proguard6.2.2/examples/ant/applications3.xml b/third_party/java/proguard/proguard6.2.2/examples/ant/applications3.xml
new file mode 100644
index 0000000..331a999
--- /dev/null
+++ b/third_party/java/proguard/proguard6.2.2/examples/ant/applications3.xml
@@ -0,0 +1,99 @@
+<!-- This Ant build file illustrates how to process applications,
+     using a full-blown XML configuration.
+     Usage: ant -f applications3.xml -->
+
+<project name="Applications" default="obfuscate" basedir="../..">
+
+<target name="obfuscate">
+  <taskdef resource="proguard/ant/task.properties"
+           classpath="lib/proguard.jar" />
+
+  <proguard verbose="true"
+            printseeds="on"
+            printmapping="out.map"
+            renamesourcefileattribute="SourceFile">
+
+    <!-- Specify the input jars, output jars, and library jars. -->
+
+    <injar  file="in.jar" />
+    <outjar file="out.jar" />
+
+    <libraryjar file="${java.home}/lib/rt.jar" />
+    <!-- libraryjar file="junit.jar"           / -->
+    <!-- libraryjar file="servlet.jar"         / -->
+    <!-- libraryjar file="jai_core.jar"        / -->
+    <!-- ...                                   / -->
+
+    <!-- Preserve line numbers in the obfuscated stack traces. -->
+
+    <keepattribute name="LineNumberTable" />
+    <keepattribute name="SourceFile" />
+
+    <!-- Preserve all annotations. -->
+
+    <keepattribute name="*Annotation*" />
+
+    <!-- Preserve all public applications. -->
+
+    <keepclasseswithmembers access="public">
+      <method access    ="public static"
+              type      ="void"
+              name      ="main"
+              parameters="java.lang.String[]" />
+    </keepclasseswithmembers>
+
+    <!-- Preserve all native method names and the names of their classes. -->
+
+    <keepclasseswithmembernames includedescriptorclasses="true">
+      <method access="native" />
+    </keepclasseswithmembernames>
+
+    <!-- Preserve the methods that are required in all enumeration classes. -->
+
+    <keepclassmembers allowoptimization="true" type="enum">
+      <method access="public static"
+              type="**[]"
+              name="values"
+              parameters="" />
+      <method access="public static"
+              type="**"
+              name="valueOf"
+              parameters="java.lang.String" />
+    </keepclassmembers>
+
+    <!-- Explicitly preserve all serialization members. The Serializable
+         interface is only a marker interface, so it wouldn't save them.
+         You can comment this out if your library doesn't use serialization.
+         If your code contains serializable classes that have to be backward
+         compatible, please refer to the manual. -->
+
+    <keepclassmembers implements="java.io.Serializable">
+      <field  access    ="static final"
+              type      ="long"
+              name      ="serialVersionUID" />
+      <field  access    ="static final"
+              type      ="java.io.ObjectStreamField[]"
+              name      ="serialPersistentFields" />
+      <method access    ="private"
+              type      ="void"
+              name      ="writeObject"
+              parameters="java.io.ObjectOutputStream" />
+      <method access    ="private"
+              type      ="void"
+              name      ="readObject"
+              parameters="java.io.ObjectInputStream" />
+      <method type      ="java.lang.Object"
+              name      ="writeReplace"
+              parameters="" />
+      <method type      ="java.lang.Object"
+              name      ="readResolve"
+              parameters="" />
+    </keepclassmembers>
+
+    <!-- Your application may contain more items that need to be preserved;
+         typically classes that are dynamically created using Class.forName -->
+
+  </proguard>
+</target>
+
+</project>
diff --git a/third_party/java/proguard/proguard6.2.2/examples/ant/library.xml b/third_party/java/proguard/proguard6.2.2/examples/ant/library.xml
new file mode 100644
index 0000000..f00be7a
--- /dev/null
+++ b/third_party/java/proguard/proguard6.2.2/examples/ant/library.xml
@@ -0,0 +1,105 @@
+<!-- This Ant build file illustrates how to process a program library,
+     such that it remains usable as a library.
+     Usage: ant -f library.xml -->
+
+<project name="Library" default="obfuscate" basedir="../..">
+
+<target name="obfuscate">
+  <taskdef resource="proguard/ant/task.properties"
+           classpath="lib/proguard.jar" />
+
+  <proguard verbose="true"
+            printmapping="out.map"
+            renamesourcefileattribute="SourceFile">
+
+    <!-- Specify the input jars, output jars, and library jars. -->
+
+    <injar  file="library.jar" />
+    <outjar file="library_out.jar" />
+
+    <libraryjar file="${java.home}/lib/rt.jar" />
+
+    <!-- Keep some useful attributes. -->
+
+    <keepattribute name="Exceptions" />
+    <keepattribute name="InnerClasses" />
+    <keepattribute name="Signature" />
+    <keepattribute name="Deprecated" />
+    <keepattribute name="SourceFile" />
+    <keepattribute name="LineNumberTable" />
+    <keepattribute name="EnclosingMethod" />
+
+    <!-- Preserve all public classes, and their public and protected fields
+        and methods. -->
+
+    <keep access="public">
+      <field  access="public protected" />
+      <method access="public protected" />
+    </keep>
+
+    <!-- Preserve all .class method names. -->
+
+    <keepclassmembernames access="public">
+      <method type      ="java.lang.Class"
+              name      ="class$"
+              parameters="java.lang.String" />
+      <method type      ="java.lang.Class"
+              name      ="class$"
+              parameters="java.lang.String,boolean" />
+    </keepclassmembernames>
+
+    <!-- Preserve all native method names and the names of their classes. -->
+
+    <keepclasseswithmembernames includedescriptorclasses="true">
+      <method access="native" />
+    </keepclasseswithmembernames>
+
+    <!-- Preserve the methods that are required in all enumeration classes. -->
+
+    <keepclassmembers allowoptimization="true" type="enum">
+      <method access="public static"
+              type="**[]"
+              name="values"
+              parameters="" />
+      <method access="public static"
+              type="**"
+              name="valueOf"
+              parameters="java.lang.String" />
+    </keepclassmembers>
+
+    <!-- Explicitly preserve all serialization members. The Serializable
+         interface is only a marker interface, so it wouldn't save them.
+         You can comment this out if your library doesn't use serialization.
+         If your code contains serializable classes that have to be backward
+         compatible, please refer to the manual. -->
+
+    <keepclassmembers implements="java.io.Serializable">
+      <field  access    ="final"
+              type      ="long"
+              name      ="serialVersionUID" />
+      <field  access    ="static final"
+              type      ="java.io.ObjectStreamField[]"
+              name      ="serialPersistentFields" />
+      <method access    ="private"
+              type      ="void"
+              name      ="writeObject"
+              parameters="java.io.ObjectOutputStream" />
+      <method access    ="private"
+              type      ="void"
+              name      ="readObject"
+              parameters="java.io.ObjectInputStream" />
+      <method type      ="java.lang.Object"
+              name      ="writeReplace"
+              parameters="" />
+      <method type      ="java.lang.Object"
+              name      ="readResolve"
+              parameters="" />
+    </keepclassmembers>
+
+    <!-- Your application may contain more items that need to be preserved;
+      typically classes that are dynamically created using Class.forName -->
+
+  </proguard>
+</target>
+
+</project>
diff --git a/third_party/java/proguard/proguard6.2.2/examples/ant/midlets.xml b/third_party/java/proguard/proguard6.2.2/examples/ant/midlets.xml
new file mode 100644
index 0000000..065c3a7
--- /dev/null
+++ b/third_party/java/proguard/proguard6.2.2/examples/ant/midlets.xml
@@ -0,0 +1,53 @@
+<!-- This Ant build file illustrates how to process J2ME midlets.
+     Usage: ant -f midlets.xml -->
+
+<project name="Midlets" default="obfuscate" basedir="../..">
+
+<target name="obfuscate">
+  <taskdef resource="proguard/ant/task.properties"
+           classpath="lib/proguard.jar" />
+
+  <proguard verbose="true"
+            microedition="on"
+            printseeds="on"
+            printmapping="out.map"
+            overloadaggressively="on"
+            repackageclasses=""
+            allowaccessmodification="on"
+            renamesourcefileattribute="SourceFile">
+
+            <!-- On Windows, you can't use mixed case class names,
+                 should you still want to use the preverify tool.
+            usemixedcaseclassnames="false">
+            -->
+
+    <!-- Specify the input jars, output jars, and library jars. -->
+
+    <injar  file="in.jar" />
+    <outjar file="out.jar" />
+
+    <libraryjar file="/usr/local/java/wtk2.5.2/lib/midpapi20.jar" />
+    <libraryjar file="/usr/local/java/wtk2.5.2/lib/cldcapi11.jar" />
+
+    <!-- Optionally preserve line numbers in the obfuscated stack traces.
+    <keepattribute name="LineNumberTable">
+    <keepattribute name="SourceFile">
+    -->
+
+    <!-- Preserve all public midlets. -->
+
+    <keep access="public" extends="javax.microedition.midlet.MIDlet" />
+
+    <!-- Preserve all native method names and the names of their classes. -->
+
+    <keepclasseswithmembernames includedescriptorclasses="true">
+      <method access="native" />
+    </keepclasseswithmembernames>
+
+    <!-- Your application may contain more items that need to be preserved;
+         typically classes that are dynamically created using Class.forName -->
+
+   </proguard>
+</target>
+
+</project>
diff --git a/third_party/java/proguard/proguard6.2.2/examples/ant/proguard.xml b/third_party/java/proguard/proguard6.2.2/examples/ant/proguard.xml
new file mode 100644
index 0000000..bd9820a
--- /dev/null
+++ b/third_party/java/proguard/proguard6.2.2/examples/ant/proguard.xml
@@ -0,0 +1,120 @@
+<!-- This Ant build file illustrates how to process ProGuard (including its
+     main application, its GUI, its Ant task, and its WTK plugin), and the
+     ReTrace tool, all in one go.
+     Usage: ant -f proguard.xml -->
+
+<project name="ProGuard" default="obfuscate" basedir="../..">
+
+<target name="obfuscate">
+  <taskdef resource="proguard/ant/task.properties"
+           classpath="lib/proguard.jar" />
+
+  <proguard verbose="true"
+            printmapping="proguard.map"
+            overloadaggressively="on"
+            repackageclasses=""
+            renamesourcefileattribute="SourceFile">
+
+    <!-- Specify the input jars, output jars, and library jars. -->
+
+    <injar  file="lib/proguard.jar" />
+    <injar  file="lib/proguardgui.jar" filter="!META-INF/**" />
+    <injar  file="lib/retrace.jar"     filter="!META-INF/**" />
+
+    <outjar file="examples/ant/proguard_out.jar" />
+
+    <libraryjar file="${java.home}/lib/rt.jar" />
+
+    <libraryjar file="/usr/local/java/ant/lib/ant.jar" />
+    <libraryjar file="/usr/local/java/wtk2.5.2/wtklib/kenv.zip" />
+
+    <libraryjar file="/usr/local/java/gradle-4.2.1/lib/plugins/gradle-plugins-4.2.1.jar" />
+    <libraryjar file="/usr/local/java/gradle-4.2.1/lib/gradle-base-services-4.2.1.jar" />
+    <libraryjar file="/usr/local/java/gradle-4.2.1/lib/gradle-logging-4.2.1.jar" />
+    <libraryjar file="/usr/local/java/gradle-4.2.1/lib/gradle-core-api-4.2.1.jar" />
+    <libraryjar file="/usr/local/java/gradle-4.2.1/lib/gradle-core-4.2.1.jar" />
+    <libraryjar file="/usr/local/java/gradle-4.2.1/lib/groovy-all-2.4.12.jar" />
+
+    <libraryjar file="${user.home}/.gradle/caches/modules-2/files-2.1/com.android.tools.build/builder/3.0.0/36884960f350cb29f1c2c93107f4fa27f4e7444e/builder-3.0.0.jar" />
+    <libraryjar file="${user.home}/.gradle/caches/modules-2/files-2.1/com.android.tools.build/gradle-api/3.0.0/e98ade5c308a99980d2a61f4ce1d9286df0105e3/gradle-api-3.0.0.jar" />
+    <libraryjar file="${user.home}/.gradle/caches/modules-2/files-2.1/com.android.tools.build/builder-model/3.0.0/a86b254415fded5297e1d849fa1884dfdf62ff42/builder-model-3.0.0.jar" />
+    <libraryjar file="${user.home}/.gradle/caches/modules-2/files-2.1/com.android.tools.build/gradle/3.0.0/2356ee8e98b68c53dafc28898e7034080e5c91aa/gradle-3.0.0.jar" />
+    <libraryjar file="${user.home}/.gradle/caches/modules-2/files-2.1/com.android.tools.build/gradle-core/3.0.0/b4b02fa623c5a618e68478d9a4a67e1e87c023c6/gradle-core-3.0.0.jar" filter="!com/android/build/gradle/tasks/TestModuleProGuardTask*.class" />
+    <libraryjar file="${user.home}/.gradle/caches/modules-2/files-2.1/com.google.guava/guava-jdk5/17.0/463f8378feba44df7ba7cd9272d01837dad62b36/guava-jdk5-17.0.jar" />
+    <libraryjar file="${user.home}/.gradle/caches/modules-2/files-2.1/org.slf4j/slf4j-api/1.7.6/562424e36df3d2327e8e9301a76027fca17d54ea/slf4j-api-1.7.6.jar" />
+
+    <!-- Don't print notes about reflection in injected code. -->
+
+    <dontnote filter="proguard.configuration.ConfigurationLogger" />
+
+    <!-- Don't print warnings about GSON dependencies. -->
+
+    <dontwarn filter="com.google.gson.**" />
+
+    <!-- Preserve injected GSON utility classes and their members. -->
+
+    <keep name="proguard.optimize.gson._*" allowobfuscation="true" />
+    <keepclassmembers name="proguard.optimize.gson._*">
+      <field name="*" />
+      <method name="*" />
+    </keepclassmembers>
+
+    <!-- Obfuscate class strings of injected GSON utility classes. -->
+    <adaptclassstrings name="proguard.optimize.gson.**" />
+
+    <!-- Adapt the resource file names, based on the corresponding obfuscated
+         class names. -->
+
+    <adaptresourcefilenames    filter="**.properties,**.gif,**.jpg"  />
+    <adaptresourcefilecontents filter="proguard/ant/task.properties" />
+
+    <!-- Optionally preserve line numbers in the obfuscated stack traces.
+    <keepattribute name="LineNumberTable">
+    <keepattribute name="SourceFile">
+    -->
+
+    <!-- The main seeds: ProGuard and its companion tool ReTrace. -->
+
+    <keep access="public" name="proguard.ProGuard">
+      <method access    ="public static"
+              type      ="void"
+              name      ="main"
+              parameters="java.lang.String[]" />
+    </keep>
+    <keep access="public" name="proguard.gui.ProGuardGUI">
+      <method access    ="public static"
+              type      ="void"
+              name      ="main"
+              parameters="java.lang.String[]" />
+    </keep>
+    <keep access="public" name="proguard.retrace.ReTrace">
+      <method access    ="public static"
+              type      ="void"
+              name      ="main"
+              parameters="java.lang.String[]" />
+    </keep>
+
+    <!-- If we have ant.jar, we can properly process the Ant task. -->
+
+    <keeppackagename name="proguard.ant" />
+    <keep name="proguard.ant.*" allowobfuscation="true" />
+    <keepclassmembers access="public" name="proguard.ant.*">
+      <constructor parameters="org.apache.tools.ant.Project" />
+      <method access="public" type="void" name="set*" parameters="***" />
+      <method access="public" type="void" name="add*" parameters="***" />
+    </keepclassmembers>
+
+    <!-- If we have the Gradle jars, we can properly process the Gradle task. -->
+
+    <keep access="public" name="proguard.gradle.*">
+      <method access="public" />
+    </keep>
+
+    <!-- If we have kenv.zip, we can process the J2ME WTK plugin. -->
+
+    <keep access="public" name="proguard.wtk.ProGuardObfuscator" />
+
+  </proguard>
+</target>
+
+</project>
diff --git a/third_party/java/proguard/proguard6.2.2/examples/ant/servlets.xml b/third_party/java/proguard/proguard6.2.2/examples/ant/servlets.xml
new file mode 100644
index 0000000..ea13981
--- /dev/null
+++ b/third_party/java/proguard/proguard6.2.2/examples/ant/servlets.xml
@@ -0,0 +1,89 @@
+<!-- This Ant build file illustrates how to process servlets.
+     Usage: ant -f servlets.xml -->
+
+<project name="Servlets" default="obfuscate" basedir="../..">
+
+<target name="obfuscate">
+  <taskdef resource="proguard/ant/task.properties"
+           classpath="lib/proguard.jar" />
+
+  <proguard verbose="true"
+            printseeds="on"
+            printmapping="proguard.map"
+            renamesourcefileattribute="SourceFile">
+
+    <!-- Specify the input jars, output jars, and library jars. -->
+
+    <injar  file="in.jar" />
+    <outjar file="out.jar" />
+
+    <libraryjar file="${java.home}/lib/rt.jar" />
+
+    <!-- Optionally preserve line numbers in the obfuscated stack traces.
+    <keepattribute name="LineNumberTable">
+    <keepattribute name="SourceFile">
+    -->
+
+    <!-- Preserve all annotations. -->
+
+    <keepattribute name="*Annotation*" />
+
+    <!-- Keep all public servlets. -->
+
+    <keep access="public" implements="javax.servlet.Servlet" />
+
+    <!-- Preserve all native method names and the names of their classes. -->
+
+    <keepclasseswithmembernames includedescriptorclasses="true">
+      <method access="native" />
+    </keepclasseswithmembernames>
+
+    <!-- Preserve the methods that are required in all enumeration classes. -->
+
+    <keepclassmembers allowoptimization="true" type="enum">
+      <method access="public static"
+              type="**[]"
+              name="values"
+              parameters="" />
+      <method access="public static"
+              type="**"
+              name="valueOf"
+              parameters="java.lang.String" />
+    </keepclassmembers>
+
+    <!-- Explicitly preserve all serialization members. The Serializable
+         interface is only a marker interface, so it wouldn't save them.
+         You can comment this out if your library doesn't use serialization.
+         If your code contains serializable classes that have to be backward
+         compatible, please refer to the manual. -->
+
+    <keepclassmembers implements="java.io.Serializable">
+      <field  access    ="static final"
+              type      ="long"
+              name      ="serialVersionUID" />
+      <field  access    ="static final"
+              type      ="java.io.ObjectStreamField[]"
+              name      ="serialPersistentFields" />
+      <method access    ="private"
+              type      ="void"
+              name      ="writeObject"
+              parameters="java.io.ObjectOutputStream" />
+      <method access    ="private"
+              type      ="void"
+              name      ="readObject"
+              parameters="java.io.ObjectInputStream" />
+      <method type      ="java.lang.Object"
+              name      ="writeReplace"
+              parameters="" />
+      <method type      ="java.lang.Object"
+              name      ="readResolve"
+              parameters="" />
+    </keepclassmembers>
+
+    <!-- Your application may contain more items that need to be preserved;
+         typically classes that are dynamically created using Class.forName -->
+
+  </proguard>
+</target>
+
+</project>
diff --git a/third_party/java/proguard/proguard6.2.2/examples/dictionaries/compact.txt b/third_party/java/proguard/proguard6.2.2/examples/dictionaries/compact.txt
new file mode 100644
index 0000000..5636a3e
--- /dev/null
+++ b/third_party/java/proguard/proguard6.2.2/examples/dictionaries/compact.txt
@@ -0,0 +1,18 @@
+#
+# This obfuscation dictionary contains strings that are already present
+# in many class files. Since these strings can be shared, the resulting
+# obfuscated class files will generally be a little bit more compact.
+# Usage:
+#     java -jar proguard.jar ..... -obfuscationdictionary compact.txt
+#
+
+Code
+V
+I
+Z
+B
+C
+S
+F
+D
+L
diff --git a/third_party/java/proguard/proguard6.2.2/examples/dictionaries/keywords.txt b/third_party/java/proguard/proguard6.2.2/examples/dictionaries/keywords.txt
new file mode 100644
index 0000000..76f5a7b
--- /dev/null
+++ b/third_party/java/proguard/proguard6.2.2/examples/dictionaries/keywords.txt
@@ -0,0 +1,58 @@
+#
+# This obfuscation dictionary contains reserved Java keywords. They can't
+# be used in Java source files, but they can be used in compiled class files.
+# Note that this hardly improves the obfuscation. Decent decompilers can
+# automatically replace reserved keywords, and the effect can fairly simply be
+# undone by obfuscating again with simpler names.
+# Usage:
+#     java -jar proguard.jar ..... -obfuscationdictionary keywords.txt
+#
+
+do
+if
+for
+int
+new
+try
+byte
+case
+char
+else
+goto
+long
+this
+void
+break
+catch
+class
+const
+final
+float
+short
+super
+throw
+while
+double
+import
+native
+public
+return
+static
+switch
+throws
+boolean
+default
+extends
+finally
+package
+private
+abstract
+continue
+strictfp
+volatile
+interface
+protected
+transient
+implements
+instanceof
+synchronized
diff --git a/third_party/java/proguard/proguard6.2.2/examples/dictionaries/shakespeare.txt b/third_party/java/proguard/proguard6.2.2/examples/dictionaries/shakespeare.txt
new file mode 100644
index 0000000..28b1cd8
--- /dev/null
+++ b/third_party/java/proguard/proguard6.2.2/examples/dictionaries/shakespeare.txt
@@ -0,0 +1,23 @@
+#
+# This obfuscation dictionary contains quotes from plays by Shakespeare.
+# It illustrates that any text can be used, for whatever flippant reasons
+# one may have.
+# Usage:
+#     java -jar proguard.jar ..... -obfuscationdictionary shakespeare.txt
+#
+
+
+"This thing of darkness I acknowledge mine."
+
+  --From The Tempest (V, i, 275-276) 
+
+
+"Though this be madness, yet there is method in 't."
+
+  --From Hamlet (II, ii, 206)
+
+
+"What's in a name? That which we call a rose
+ By any other word would smell as sweet."
+
+  --From Romeo and Juliet (II, ii, 1-2)
diff --git a/third_party/java/proguard/proguard6.2.2/examples/dictionaries/windows.txt b/third_party/java/proguard/proguard6.2.2/examples/dictionaries/windows.txt
new file mode 100644
index 0000000..fd65dc9
--- /dev/null
+++ b/third_party/java/proguard/proguard6.2.2/examples/dictionaries/windows.txt
@@ -0,0 +1,209 @@
+#
+# This obfuscation dictionary contains names that are not allowed as file names
+# in Windows, not even with extensions like .class or .java. They can however
+# be used without problems in jar archives, which just begs to apply them as
+# obfuscated class names. Trying to unpack the obfuscated archives in Windows
+# will probably generate some sparks.
+# Usage:
+#     java -jar proguard.jar ..... -classobfuscationdictionary windows.txt
+#                                  -packageobfuscationdictionary windows.txt
+#
+
+aux
+Aux
+aUx
+AUx
+auX
+AuX
+aUX
+AUX
+AUX
+con
+Con
+cOn
+COn
+coN
+CoN
+cON
+CON
+CON
+nul
+Nul
+nUl
+NUl
+nuL
+NuL
+nUL
+NUL
+NUL
+prn
+Prn
+pRn
+PRn
+prN
+PrN
+pRN
+PRN
+PRN
+com1
+Com1
+cOm1
+COm1
+coM1
+CoM1
+cOM1
+COM1
+COM1
+com2
+Com2
+cOm2
+COm2
+coM2
+CoM2
+cOM2
+COM2
+COM2
+com3
+Com3
+cOm3
+COm3
+coM3
+CoM3
+cOM3
+COM3
+COM3
+com4
+Com4
+cOm4
+COm4
+coM4
+CoM4
+cOM4
+COM4
+COM4
+com5
+Com5
+cOm5
+COm5
+coM5
+CoM5
+cOM5
+COM5
+COM5
+com6
+Com6
+cOm6
+COm6
+coM6
+CoM6
+cOM6
+COM6
+COM6
+com7
+Com7
+cOm7
+COm7
+coM7
+CoM7
+cOM7
+COM7
+COM7
+com8
+Com8
+cOm8
+COm8
+coM8
+CoM8
+cOM8
+COM8
+COM8
+com9
+Com9
+cOm9
+COm9
+coM9
+CoM9
+cOM9
+COM9
+COM9
+lpt1
+Lpt1
+lPt1
+LPt1
+lpT1
+LpT1
+lPT1
+LPT1
+LPT1
+lpt2
+Lpt2
+lPt2
+LPt2
+lpT2
+LpT2
+lPT2
+LPT2
+LPT2
+lpt3
+Lpt3
+lPt3
+LPt3
+lpT3
+LpT3
+lPT3
+LPT3
+LPT3
+lpt4
+Lpt4
+lPt4
+LPt4
+lpT4
+LpT4
+lPT4
+LPT4
+LPT4
+lpt5
+Lpt5
+lPt5
+LPt5
+lpT5
+LpT5
+lPT5
+LPT5
+LPT5
+lpt6
+Lpt6
+lPt6
+LPt6
+lpT6
+LpT6
+lPT6
+LPT6
+LPT6
+lpt7
+Lpt7
+lPt7
+LPt7
+lpT7
+LpT7
+lPT7
+LPT7
+LPT7
+lpt8
+Lpt8
+lPt8
+LPt8
+lpT8
+LpT8
+lPT8
+LPT8
+LPT8
+lpt9
+Lpt9
+lPt9
+LPt9
+lpT9
+LpT9
+lPT9
+LPT9
+LPT9
diff --git a/third_party/java/proguard/proguard6.2.2/examples/gradle/android.gradle b/third_party/java/proguard/proguard6.2.2/examples/gradle/android.gradle
new file mode 100644
index 0000000..764157a
--- /dev/null
+++ b/third_party/java/proguard/proguard6.2.2/examples/gradle/android.gradle
@@ -0,0 +1,279 @@
+//
+// This Gradle build file illustrates how to process Android
+// applications.
+//
+// If you're using the Android SDK, the provided build systems with Gradle,
+// Android Studio, Eclipse, and Ant already take care of the proper settings.
+// You only need to enable ProGuard as explained in the Android documentation.
+// You can still add project-specific configuration in proguard-project.txt.
+//
+// This configuration file is for custom, stand-alone builds.
+// Usage:
+//     gradle -b android.gradle proguard
+
+// Tell Gradle where to find the ProGuard task.
+
+buildscript {
+    repositories {
+        flatDir dirs: '../../lib'
+    }
+    dependencies {
+        classpath ':proguard'
+    }
+}
+
+// Define a ProGuard task.
+
+task ('proguard', type: proguard.gradle.ProGuardTask) {
+
+    // You should probably import a more compact ProGuard-style configuration
+    // file for all static settings, but we're specifying them all here, for
+    // the sake of the example.
+    //configuration 'configuration.pro'
+
+
+    //##############################################################################
+    // Input and output.
+    //##############################################################################
+
+    // Specify the input jars, output jars, and library jars.
+    // Note that ProGuard works with Java bytecode (.class),
+    // before the dex compiler converts it into Dalvik code (.dex).
+
+    injars  'classes'
+    injars  'libs'
+    outjars 'classes-processed.jar'
+
+    libraryjars '/usr/local/android-sdk/platforms/android-27/android.jar'
+    //libraryjars '/usr/local/java/android-sdk/extras/android/support/v4/android-support-v4.jar'
+    //libraryjars '/usr/local/java/android-sdk/add-ons/addon-google_apis-google-21/libs/maps.jar'
+    // ...
+
+    // Save the obfuscation mapping to a file, so you can de-obfuscate any stack
+    // traces later on.
+
+    printmapping 'bin/classes-processed.map'
+
+    // You can print out the seeds that are matching the keep options below.
+
+    //printseeds 'bin/classes-processed.seeds'
+
+
+    //##############################################################################
+    // General settings.
+    //##############################################################################
+
+    verbose
+
+    // We can debug the ProGuard configuration by instrumenting the code and
+    // checking the log for feedback. Disable the option again for actual releases!
+
+    //addconfigurationdebugging
+
+    // We can also disable the individual processing steps.
+
+    //dontshrink
+    //dontoptimize
+    //dontobfuscate
+
+    // Specifically target Android.
+
+    android
+
+    // The dex compiler ignores preverification information.
+
+    dontpreverify
+
+    // Reduce the size of the output some more.
+
+    repackageclasses ''
+    allowaccessmodification
+
+    // Switch off some optimizations that trip older versions of the Dalvik VM.
+
+    optimizations '!code/simplification/arithmetic'
+
+    // Keep a fixed source file attribute and all line number tables to get line
+    // numbers in the stack traces.
+
+    renamesourcefileattribute 'SourceFile'
+    keepattributes 'SourceFile,LineNumberTable'
+
+
+    //##############################################################################
+    // Settings to handle reflection in the code.
+    //##############################################################################
+
+    // RemoteViews might need annotations.
+
+    keepattributes '*Annotation*'
+
+    // Preserve all fundamental application classes.
+
+    keep 'public class * extends android.app.Activity'
+    keep 'public class * extends android.app.Application'
+    keep 'public class * extends android.app.Service'
+    keep 'public class * extends android.content.BroadcastReceiver'
+    keep 'public class * extends android.content.ContentProvider'
+
+    // Preserve all View implementations, their special context constructors, and
+    // their setters.
+
+    keep 'public class * extends android.view.View { \
+        public <init>(android.content.Context); \
+        public <init>(android.content.Context, android.util.AttributeSet); \
+        public <init>(android.content.Context, android.util.AttributeSet, int); \
+        public void set*(...); \
+    }'
+
+    // Preserve all classes that have special context constructors, and the
+    // constructors themselves.
+
+    keepclasseswithmembers 'class * { \
+        public <init>(android.content.Context, android.util.AttributeSet); \
+    }'
+
+    // Preserve all classes that have special context constructors, and the
+    // constructors themselves.
+
+    keepclasseswithmembers 'class * { \
+        public <init>(android.content.Context, android.util.AttributeSet, int); \
+    }'
+
+    // Preserve all possible onClick handlers.
+
+    keepclassmembers 'class * extends android.content.Context { \
+       public void *(android.view.View); \
+       public void *(android.view.MenuItem); \
+    }'
+
+    // Preserve the special fields of all Parcelable implementations.
+
+    keepclassmembers 'class * implements android.os.Parcelable { \
+        static android.os.Parcelable$Creator CREATOR; \
+    }'
+
+    // Preserve static fields of inner classes of R classes that might be accessed
+    // through introspection.
+
+    keepclassmembers 'class **.R$* { \
+      public static <fields>; \
+    }'
+
+    // Preserve annotated Javascript interface methods.
+
+    keepclassmembers 'class * { \
+        @android.webkit.JavascriptInterface <methods>; \
+    }'
+
+    // Preserve annotated and generated classes for Dagger.
+
+    keepclassmembers allowobfuscation: true, 'class * { \
+        @dagger.** *; \
+    }'
+
+    keep 'class **$$ModuleAdapter'
+    keep 'class **$$InjectAdapter'
+    keep 'class **$$StaticInjection'
+
+    keep if: 'class **$$ModuleAdapter', 'class <1>'
+
+    keep if: 'class **$$InjectAdapter', 'class <1>'
+
+    keep if: 'class **$$StaticInjection', 'class <1>'
+
+    keepnames 'class dagger.Lazy'
+
+    // Preserve annotated and generated classes for Butterknife.
+
+    keep 'class **$$ViewBinder { \
+        public static void bind(...); \
+        public static void unbind(...); \
+    }'
+
+    keep if: 'class **$$ViewBinder', 'class <1>'
+
+    keep 'class **_ViewBinding { \
+        <init>(<1>, android.view.View); \
+    }'
+
+    keep if: 'class **_ViewBinding', 'class <1>'
+
+    // Preserve fields that are serialized with GSON.
+
+    //keepclassmembers 'class com.example.SerializedClass1,'
+    //                        com.example.SerializedClass2 {
+    //    <fields>;
+    //}'
+
+    keepclassmembers allowobfuscation: true, 'class * { \
+        @com.google.gson.annotations.SerializedName <fields>; \
+    }'
+
+    keep allowobfuscation: true, '@interface com.google.gson.annotations.**'
+
+
+    // Preserve the required interface from the License Verification Library
+    // (but don't nag the developer if the library is not used at all).
+
+    keep 'public interface com.android.vending.licensing.ILicensingService'
+
+    dontnote 'com.android.vending.licensing.ILicensingService'
+
+    // The Android Compatibility library references some classes that may not be
+    // present in all versions of the API, but we know that's ok.
+
+    dontwarn 'android.support.**'
+
+    // Preserve all native method names and the names of their classes.
+
+    keepclasseswithmembernames includedescriptorclasses: true, 'class * { \
+        native <methods>; \
+    }'
+
+    // Preserve the special static methods that are required in all enumeration
+    // classes.
+
+    keepclassmembers allowoptimization: true, 'enum * { \
+        public static **[] values(); \
+        public static ** valueOf(java.lang.String); \
+    }'
+
+    // Explicitly preserve all serialization members. The Serializable interface
+    // is only a marker interface, so it wouldn't save them.
+    // You can comment this out if your application doesn't use serialization.
+    // If your code contains serializable classes that have to be backward
+    // compatible, please refer to the manual.
+
+    keepclassmembers 'class * implements java.io.Serializable { \
+        static final long serialVersionUID; \
+        static final java.io.ObjectStreamField[] serialPersistentFields; \
+        private void writeObject(java.io.ObjectOutputStream); \
+        private void readObject(java.io.ObjectInputStream); \
+        java.lang.Object writeReplace(); \
+        java.lang.Object readResolve(); \
+    }'
+
+    // Your application may contain more items that need to be preserved;
+    // typically classes that are dynamically created using Class.forName:
+
+    // keep 'public class com.example.MyClass'
+    // keep 'public interface com.example.MyInterface'
+    // keep 'public class * implements com.example.MyInterface'
+
+
+    //##############################################################################
+    // Further optimizations.
+    //##############################################################################
+
+    // If you wish, you can let the optimization step remove Android logging calls.
+
+    assumenosideeffects 'class android.util.Log { \
+        public static boolean isLoggable(java.lang.String, int); \
+        public static int v(...); \
+        public static int i(...); \
+        public static int w(...); \
+        public static int d(...); \
+        public static int e(...); \
+    }'
+}
diff --git a/third_party/java/proguard/proguard6.2.2/examples/gradle/applets.gradle b/third_party/java/proguard/proguard6.2.2/examples/gradle/applets.gradle
new file mode 100644
index 0000000..24fe7f2
--- /dev/null
+++ b/third_party/java/proguard/proguard6.2.2/examples/gradle/applets.gradle
@@ -0,0 +1,100 @@
+//
+// This Gradle build file illustrates how to process applets.
+// Usage:
+//     gradle -b applets.gradle proguard
+//
+
+// Tell Gradle where to find the ProGuard task.
+
+buildscript {
+    repositories {
+        flatDir dirs: '../../lib'
+    }
+    dependencies {
+        classpath ':proguard'
+    }
+}
+
+// Define a ProGuard task.
+
+task ('proguard', type: proguard.gradle.ProGuardTask) {
+
+    // You should probably import a more compact ProGuard-style configuration
+    // file for all static settings, but we're specifying them all here, for
+    // the sake of the example.
+    //configuration 'configuration.pro'
+
+    verbose
+
+    // Specify the input jars, output jars, and library jars.
+
+    injars  'in.jar'
+    outjars 'out.jar'
+
+    // Automatically handle the Java version of this build.
+    if (System.getProperty('java.version').startsWith('1.')) {
+        // Before Java 9, the runtime classes were packaged in a single jar file.
+        libraryjars "${System.getProperty('java.home')}/lib/rt.jar"
+    } else {
+        // As of Java 9, the runtime classes are packaged in modular jmod files.
+        libraryjars "${System.getProperty('java.home')}/jmods/java.base.jmod   ", jarfilter: '!**.jar', filter: '!module-info.class'
+        libraryjars "${System.getProperty('java.home')}/jmods/java.desktop.jmod", jarfilter: '!**.jar', filter: '!module-info.class'
+    }
+
+    // Save the obfuscation mapping to a file, so you can de-obfuscate any stack
+    // traces later on. Keep a fixed source file attribute and all line number
+    // tables to get line numbers in the stack traces.
+    // You can comment this out if you're not interested in stack traces.
+
+    printmapping 'out.map'
+    renamesourcefileattribute 'SourceFile'
+    keepattributes 'SourceFile,LineNumberTable'
+
+    // Preserve all annotations.
+
+    keepattributes '*Annotation*'
+
+    // You can print out the seeds that are matching the keep options below.
+
+    //printseeds 'out.seeds'
+
+    // Preserve all public applets.
+
+    keep 'public class * extends java.applet.Applet'
+
+    // Preserve all native method names and the names of their classes.
+
+    keepclasseswithmembernames,includedescriptorclasses 'class * { \
+        native <methods>; \
+    }'
+
+    // Preserve the special static methods that are required in all enumeration
+    // classes.
+
+    keepclassmembers allowoptimization: true, 'enum * { \
+        public static **[] values(); \
+        public static ** valueOf(java.lang.String); \
+    }'
+
+    // Explicitly preserve all serialization members. The Serializable interface
+    // is only a marker interface, so it wouldn't save them.
+    // You can comment this out if your library doesn't use serialization.
+    // If your code contains serializable classes that have to be backward
+    // compatible, please refer to the manual.
+
+    keepclassmembers 'class * implements java.io.Serializable { \
+        static final long serialVersionUID; \
+        static final java.io.ObjectStreamField[] serialPersistentFields; \
+        private void writeObject(java.io.ObjectOutputStream); \
+        private void readObject(java.io.ObjectInputStream); \
+        java.lang.Object writeReplace(); \
+        java.lang.Object readResolve(); \
+    }'
+
+    // Your application may contain more items that need to be preserved;
+    // typically classes that are dynamically created using Class.forName:
+
+    // keep 'public class com.example.MyClass'
+    // keep 'public interface com.example.MyInterface'
+    // keep 'public class * implements com.example.MyInterface'
+}
diff --git a/third_party/java/proguard/proguard6.2.2/examples/gradle/applications.gradle b/third_party/java/proguard/proguard6.2.2/examples/gradle/applications.gradle
new file mode 100644
index 0000000..8d482d4
--- /dev/null
+++ b/third_party/java/proguard/proguard6.2.2/examples/gradle/applications.gradle
@@ -0,0 +1,107 @@
+//
+// This Gradle build file illustrates how to process applications.
+// Usage:
+//     gradle -b applications.gradle proguard
+//
+
+// Tell Gradle where to find the ProGuard task.
+
+buildscript {
+    repositories {
+        flatDir dirs: '../../lib'
+    }
+    dependencies {
+        classpath ':proguard'
+    }
+}
+
+// Define a ProGuard task.
+
+task ('proguard', type: proguard.gradle.ProGuardTask) {
+
+    // You should probably import a more compact ProGuard-style configuration
+    // file for all static settings, but we're specifying them all here, for
+    // the sake of the example.
+    //configuration 'configuration.pro'
+
+    verbose
+
+    // Specify the input jars, output jars, and library jars.
+
+    injars  'in.jar'
+    outjars 'out.jar'
+
+    // Automatically handle the Java version of this build.
+    if (System.getProperty('java.version').startsWith('1.')) {
+        // Before Java 9, the runtime classes were packaged in a single jar file.
+        libraryjars "${System.getProperty('java.home')}/lib/rt.jar"
+    } else {
+        // As of Java 9, the runtime classes are packaged in modular jmod files.
+        libraryjars "${System.getProperty('java.home')}/jmods/java.base.jmod", jarfilter: '!**.jar', filter: '!module-info.class'
+        //libraryjars "${System.getProperty('java.home')}/jmods/....."
+    }
+
+    //libraryjars 'junit.jar'
+    //libraryjars 'servlet.jar'
+    //libraryjars 'jai_core.jar'
+    //...
+
+    // Save the obfuscation mapping to a file, so you can de-obfuscate any stack
+    // traces later on. Keep a fixed source file attribute and all line number
+    // tables to get line numbers in the stack traces.
+    // You can comment this out if you're not interested in stack traces.
+
+    printmapping 'out.map'
+    renamesourcefileattribute 'SourceFile'
+    keepattributes 'SourceFile,LineNumberTable'
+
+    // Preserve all annotations.
+
+    keepattributes '*Annotation*'
+
+    // You can print out the seeds that are matching the keep options below.
+
+    //printseeds 'out.seeds'
+
+    // Preserve all public applications.
+
+    keepclasseswithmembers 'public class * { \
+        public static void main(java.lang.String[]); \
+    }'
+
+    // Preserve all native method names and the names of their classes.
+
+    keepclasseswithmembernames,includedescriptorclasses 'class * { \
+        native <methods>; \
+    }'
+
+    // Preserve the special static methods that are required in all enumeration
+    // classes.
+
+    keepclassmembers allowoptimization: true, 'enum * { \
+        public static **[] values(); \
+        public static ** valueOf(java.lang.String); \
+    }'
+
+    // Explicitly preserve all serialization members. The Serializable interface
+    // is only a marker interface, so it wouldn't save them.
+    // You can comment this out if your application doesn't use serialization.
+    // If your code contains serializable classes that have to be backward 
+    // compatible, please refer to the manual.
+
+    keepclassmembers 'class * implements java.io.Serializable { \
+        static final long serialVersionUID; \
+        static final java.io.ObjectStreamField[] serialPersistentFields; \
+        private void writeObject(java.io.ObjectOutputStream); \
+        private void readObject(java.io.ObjectInputStream); \
+        java.lang.Object writeReplace(); \
+        java.lang.Object readResolve(); \
+    }'
+
+    // Your application may contain more items that need to be preserved; 
+    // typically classes that are dynamically created using Class.forName:
+
+    // keep 'public class com.example.MyClass'
+    // keep 'public interface com.example.MyInterface'
+    // keep 'public class * implements com.example.MyInterface'
+}
diff --git a/third_party/java/proguard/proguard6.2.2/examples/gradle/library.gradle b/third_party/java/proguard/proguard6.2.2/examples/gradle/library.gradle
new file mode 100644
index 0000000..3e23182
--- /dev/null
+++ b/third_party/java/proguard/proguard6.2.2/examples/gradle/library.gradle
@@ -0,0 +1,109 @@
+//
+// This Gradle build file illustrates how to process a program
+// library, such that it remains usable as a library.
+// Usage:
+//     gradle -b library.gradle proguard
+//
+
+// Tell Gradle where to find the ProGuard task.
+
+buildscript {
+    repositories {
+        flatDir dirs: '../../lib'
+    }
+    dependencies {
+        classpath ':proguard'
+    }
+}
+
+// Define a ProGuard task.
+
+task ('proguard', type: proguard.gradle.ProGuardTask) {
+
+    // You should probably import a more compact ProGuard-style configuration
+    // file for all static settings, but we're specifying them all here, for
+    // the sake of the example.
+    //configuration 'configuration.pro'
+
+    verbose
+
+    // Specify the input jars, output jars, and library jars.
+    // In this case, the input jar is the program library that we want to process.
+
+    injars  'in.jar'
+    outjars 'out.jar'
+
+    // Automatically handle the Java version of this build.
+    if (System.getProperty('java.version').startsWith('1.')) {
+        // Before Java 9, the runtime classes were packaged in a single jar file.
+        libraryjars "${System.getProperty('java.home')}/lib/rt.jar"
+    } else {
+        // As of Java 9, the runtime classes are packaged in modular jmod files.
+        libraryjars "${System.getProperty('java.home')}/jmods/java.base.jmod", jarfilter: '!**.jar', filter: '!module-info.class'
+        //libraryjars "${System.getProperty('java.home')}/jmods/....."
+    }
+
+    // Save the obfuscation mapping to a file, so we can de-obfuscate any stack
+    // traces later on. Keep a fixed source file attribute and all line number
+    // tables to get line numbers in the stack traces.
+    // You can comment this out if you're not interested in stack traces.
+
+    printmapping 'out.map'
+    keepparameternames
+    renamesourcefileattribute 'SourceFile'
+    keepattributes 'Exceptions,InnerClasses,Signature,Deprecated,SourceFile,LineNumberTable,EnclosingMethod'
+
+    // Preserve all annotations.
+
+    keepattributes '*Annotation*'
+
+    // Preserve all public classes, and their public and protected fields and
+    // methods.
+
+    keep 'public class * { \
+        public protected *; \
+    }'
+
+    // Preserve all .class method names.
+
+    keepclassmembernames 'class * { \
+        java.lang.Class class$(java.lang.String); \
+        java.lang.Class class$(java.lang.String, boolean); \
+    }'
+
+    // Preserve all native method names and the names of their classes.
+
+    keepclasseswithmembernames includedescriptorclasses: true, 'class * { \
+        native <methods>; \
+    }'
+
+    // Preserve the special static methods that are required in all enumeration
+    // classes.
+
+    keepclassmembers allowoptimization: true, 'enum * { \
+        public static **[] values(); \
+        public static ** valueOf(java.lang.String); \
+    }'
+
+    // Explicitly preserve all serialization members. The Serializable interface
+    // is only a marker interface, so it wouldn't save them.
+    // You can comment this out if your library doesn't use serialization.
+    // If your code contains serializable classes that have to be backward
+    // compatible, please refer to the manual.
+
+    keepclassmembers 'class * implements java.io.Serializable { \
+        static final long serialVersionUID; \
+        static final java.io.ObjectStreamField[] serialPersistentFields; \
+        private void writeObject(java.io.ObjectOutputStream); \
+        private void readObject(java.io.ObjectInputStream); \
+        java.lang.Object writeReplace(); \
+        java.lang.Object readResolve(); \
+    }'
+
+    // Your library may contain more items that need to be preserved; 
+    // typically classes that are dynamically created using Class.forName:
+
+    // keep 'public class com.example.MyClass'
+    // keep 'public interface com.example.MyInterface'
+    // keep 'public class * implements com.example.MyInterface'
+}
diff --git a/third_party/java/proguard/proguard6.2.2/examples/gradle/midlets.gradle b/third_party/java/proguard/proguard6.2.2/examples/gradle/midlets.gradle
new file mode 100644
index 0000000..843905f
--- /dev/null
+++ b/third_party/java/proguard/proguard6.2.2/examples/gradle/midlets.gradle
@@ -0,0 +1,90 @@
+//
+// This Gradle build file illustrates how to process J2ME midlets.
+// Usage:
+//     gradle -b midlets.gradle proguard
+//
+
+// Tell Gradle where to find the ProGuard task.
+
+buildscript {
+    repositories {
+        flatDir dirs: '../../lib'
+    }
+    dependencies {
+        classpath ':proguard'
+    }
+}
+
+// Define a ProGuard task.
+
+task ('proguard', type: proguard.gradle.ProGuardTask) {
+
+    // You should probably import a more compact ProGuard-style configuration
+    // file for all static settings, but we're specifying them all here, for
+    // the sake of the example.
+    //configuration 'configuration.pro'
+
+    verbose
+
+    // Specify the input jars, output jars, and library jars.
+
+    injars  'in.jar'
+    outjars 'out.jar'
+
+    libraryjars '/usr/local/java/wtk2.5.2/lib/midpapi20.jar'
+    libraryjars '/usr/local/java/wtk2.5.2/lib/cldcapi11.jar'
+
+    // Preverify the code suitably for Java Micro Edition.
+
+    microedition
+
+    // Allow methods with the same signature, except for the return type,
+    // to get the same obfuscation name.
+
+    overloadaggressively
+
+    // Put all obfuscated classes into the nameless root package.
+
+    repackageclasses ''
+
+    // Allow classes and class members to be made public.
+
+    allowaccessmodification
+
+    // On Windows, you can't use mixed case class names,
+    // should you still want to use the preverify tool.
+    //
+    // dontusemixedcaseclassnames
+
+    // Save the obfuscation mapping to a file, so you can de-obfuscate any stack
+    // traces later on.
+
+    printmapping 'out.map'
+
+    // You can keep a fixed source file attribute and all line number tables to
+    // get stack traces with line numbers.
+
+    //renamesourcefileattribute 'SourceFile'
+    //keepattributes 'SourceFile,LineNumberTable'
+
+    // You can print out the seeds that are matching the keep options below.
+
+    //printseeds 'out.seeds'
+
+    // Preserve all public midlets.
+
+    keep 'public class * extends javax.microedition.midlet.MIDlet'
+
+    // Preserve all native method names and the names of their classes.
+
+    keepclasseswithmembernames,includedescriptorclasses 'class * { \
+        native <methods>; \
+    }'
+
+    // Your midlet may contain more items that need to be preserved; 
+    // typically classes that are dynamically created using Class.forName:
+
+    // keep 'public class com.example.MyClass'
+    // keep 'public interface com.example.MyInterface'
+    // keep 'public class * implements com.example.MyInterface'
+}
diff --git a/third_party/java/proguard/proguard6.2.2/examples/gradle/proguard.gradle b/third_party/java/proguard/proguard6.2.2/examples/gradle/proguard.gradle
new file mode 100644
index 0000000..60420a7
--- /dev/null
+++ b/third_party/java/proguard/proguard6.2.2/examples/gradle/proguard.gradle
@@ -0,0 +1,119 @@
+//
+// This Gradle build file illustrates how to process ProGuard itself.
+// Configuration files for typical applications will be very similar.
+// Usage:
+//     gradle -b proguard.gradle proguard
+//
+
+// Tell Gradle where to find the ProGuard task.
+
+buildscript {
+    repositories {
+        flatDir dirs: '../../lib'
+    }
+    dependencies {
+        classpath ':proguard'
+    }
+}
+
+// Define a ProGuard task.
+
+task ('proguard', type: proguard.gradle.ProGuardTask) {
+
+    // You should probably import a more compact ProGuard-style configuration
+    // file for all static settings, but we're specifying them all here, for
+    // the sake of the example.
+    //configuration 'configuration.pro'
+
+    verbose
+
+    // Specify the input jars, output jars, and library jars.
+    // We'll filter out the Ant classes, Gradle classes, and WTK classes, keeping
+    // everything else.
+
+    injars  '../../lib/proguard.jar', filter: '!proguard/ant/**,!proguard/gradle/**,!proguard/wtk/**'
+    outjars 'proguard_out.jar'
+
+    // Automatically handle the Java version of this build.
+    if (System.getProperty('java.version').startsWith('1.')) {
+        // Before Java 9, the runtime classes were packaged in a single jar file.
+        libraryjars "${System.getProperty('java.home')}/lib/rt.jar"
+    } else {
+        // As of Java 9, the runtime classes are packaged in modular jmod files.
+        libraryjars "${System.getProperty('java.home')}/jmods/java.base.jmod", jarfilter: '!**.jar', filter: '!module-info.class'
+    }
+
+    // Write out an obfuscation mapping file, for de-obfuscating any stack traces
+    // later on, or for incremental obfuscation of extensions.
+
+    printmapping 'proguard.map'
+
+    // Don't print notes about reflection in injected code.
+
+    dontnote 'proguard.configuration.ConfigurationLogger'
+
+    // Don't print warnings about GSON dependencies.
+
+    dontwarn 'com.google.gson.**'
+
+    // Preserve injected GSON utility classes and their members.
+
+    keep allowobfuscation: true, 'class proguard.optimize.gson._*'
+    keepclassmembers 'class proguard.optimize.gson._* { \
+        *; \
+    }'
+
+    // Obfuscate class strings of injected GSON utility classes.
+
+    adaptclassstrings 'proguard.optimize.gson.**'
+
+    // Allow methods with the same signature, except for the return type,
+    // to get the same obfuscation name.
+
+    overloadaggressively
+
+    // Put all obfuscated classes into the nameless root package.
+
+    repackageclasses ''
+
+    // Allow classes and class members to be made public.
+
+    allowaccessmodification
+
+    // The entry point: ProGuard and its main method.
+
+    keep 'public class proguard.ProGuard { \
+        public static void main(java.lang.String[]); \
+    }'
+
+    // If you want to preserve the Ant task as well, you'll have to specify the
+    // main ant.jar.
+
+    //libraryjars '/usr/local/java/ant/lib/ant.jar'
+    //adaptresourcefilecontents 'proguard/ant/task.properties'
+    //
+    //keep allowobfuscation: true, 'class proguard.ant.*'
+    //keepclassmembers 'public class proguard.ant.* { \
+    //    <init>(org.apache.tools.ant.Project); \
+    //    public void set*(***); \
+    //    public void add*(***); \
+    //}'
+
+    // If you want to preserve the Gradle task, you'll have to specify the Gradle
+    // jars.
+
+    //libraryjars '/usr/local/java/gradle-4.2.1/lib/plugins/gradle-plugins-4.2.1.jar'
+    //libraryjars '/usr/local/java/gradle-4.2.1/lib/gradle-base-services-4.2.1.jar'
+    //libraryjars '/usr/local/java/gradle-4.2.1/lib/gradle-core-4.2.1.jar'
+    //libraryjars '/usr/local/java/gradle-4.2.1/lib/groovy-all-2.4.12.jar'
+
+    //keep 'public class proguard.gradle.* { \
+    //    public *; \
+    //}'
+
+    // If you want to preserve the WTK obfuscation plug-in, you'll have to specify
+    // the kenv.zip file.
+
+    //libraryjars '/usr/local/java/wtk2.5.2/wtklib/kenv.zip'
+    //keep 'public class proguard.wtk.ProGuardObfuscator'
+}
diff --git a/third_party/java/proguard/proguard6.2.2/examples/gradle/proguardall.gradle b/third_party/java/proguard/proguard6.2.2/examples/gradle/proguardall.gradle
new file mode 100644
index 0000000..56e439d
--- /dev/null
+++ b/third_party/java/proguard/proguard6.2.2/examples/gradle/proguardall.gradle
@@ -0,0 +1,134 @@
+//
+// This Gradle build file illustrates how to process ProGuard
+// (including its main application, its GUI, its Ant task, and its WTK plugin),
+// and the ReTrace tool, all in one go.
+// Configuration files for typical applications will be very similar.
+// Usage:
+//     gradle -b proguardall.gradle proguard
+//
+
+// Tell Gradle where to find the ProGuard task.
+
+buildscript {
+    repositories {
+        flatDir dirs: '../../lib'
+    }
+    dependencies {
+        classpath ':proguard'
+    }
+}
+
+// Define a ProGuard task.
+
+task ('proguard', type: proguard.gradle.ProGuardTask) {
+
+    // You should probably import a more compact ProGuard-style configuration
+    // file for all static settings, but we're specifying them all here, for
+    // the sake of the example.
+    //configuration 'configuration.pro'
+
+    verbose
+
+    // Specify the input jars, output jars, and library jars.
+    // We'll read all jars from the lib directory, process them, and write the
+    // processed jars to a new out directory.
+
+    injars  '../../lib'
+    outjars 'out'
+
+    // You may have to adapt the paths below.
+
+    // Automatically handle the Java version of this build.
+    if (System.getProperty('java.version').startsWith('1.')) {
+        // Before Java 9, the runtime classes were packaged in a single jar file.
+        libraryjars "${System.getProperty('java.home')}/lib/rt.jar"
+    } else {
+        // As of Java 9, the runtime classes are packaged in modular jmod files.
+        libraryjars "${System.getProperty('java.home')}/jmods/java.base.jmod   ", jarfilter: '!**.jar', filter: '!module-info.class'
+        libraryjars "${System.getProperty('java.home')}/jmods/java.desktop.jmod", jarfilter: '!**.jar', filter: '!module-info.class'
+    }
+
+    libraryjars '/usr/local/java/ant/lib/ant.jar'
+    libraryjars '/usr/local/java/wtk2.5.2/wtklib/kenv.zip'
+
+    libraryjars '/usr/local/java/gradle-4.2.1/lib/plugins/gradle-plugins-4.2.1.jar'
+    libraryjars '/usr/local/java/gradle-4.2.1/lib/gradle-base-services-4.2.1.jar'
+    libraryjars '/usr/local/java/gradle-4.2.1/lib/gradle-logging-4.2.1.jar'
+    libraryjars '/usr/local/java/gradle-4.2.1/lib/gradle-core-api-4.2.1.jar'
+    libraryjars '/usr/local/java/gradle-4.2.1/lib/gradle-core-4.2.1.jar'
+    libraryjars '/usr/local/java/gradle-4.2.1/lib/groovy-all-2.4.12.jar'
+
+    libraryjars "${System.getProperty('user.home')}/.gradle/caches/modules-2/files-2.1/com.android.tools.build/builder/3.0.0/36884960f350cb29f1c2c93107f4fa27f4e7444e/builder-3.0.0.jar"
+    libraryjars "${System.getProperty('user.home')}/.gradle/caches/modules-2/files-2.1/com.android.tools.build/gradle-api/3.0.0/e98ade5c308a99980d2a61f4ce1d9286df0105e3/gradle-api-3.0.0.jar"
+    libraryjars "${System.getProperty('user.home')}/.gradle/caches/modules-2/files-2.1/com.android.tools.build/builder-model/3.0.0/a86b254415fded5297e1d849fa1884dfdf62ff42/builder-model-3.0.0.jar"
+    libraryjars "${System.getProperty('user.home')}/.gradle/caches/modules-2/files-2.1/com.android.tools.build/gradle/3.0.0/2356ee8e98b68c53dafc28898e7034080e5c91aa/gradle-3.0.0.jar"
+    libraryjars "${System.getProperty('user.home')}/.gradle/caches/modules-2/files-2.1/com.android.tools.build/gradle-core/3.0.0/b4b02fa623c5a618e68478d9a4a67e1e87c023c6/gradle-core-3.0.0.jar", filter: '!com/android/build/gradle/tasks/TestModuleProGuardTask*.class'
+    libraryjars "${System.getProperty('user.home')}/.gradle/caches/modules-2/files-2.1/com.google.guava/guava-jdk5/17.0/463f8378feba44df7ba7cd9272d01837dad62b36/guava-jdk5-17.0.jar"
+    libraryjars "${System.getProperty('user.home')}/.gradle/caches/modules-2/files-2.1/org.slf4j/slf4j-api/1.7.6/562424e36df3d2327e8e9301a76027fca17d54ea/slf4j-api-1.7.6.jar"
+
+    // Don't print notes about reflection in injected code.
+
+    dontnote 'proguard.configuration.ConfigurationLogger'
+
+    // Don't print warnings about GSON dependencies.
+
+    dontwarn 'com.google.gson.**'
+
+    // Preserve injected GSON utility classes and their members.
+
+    keep allowobfuscation: true, 'class proguard.optimize.gson._*'
+    keepclassmembers 'class proguard.optimize.gson._* { \
+        *; \
+    }'
+
+    // Obfuscate class strings of injected GSON utility classes.
+
+    adaptclassstrings 'proguard.optimize.gson.**'
+
+    // Allow methods with the same signature, except for the return type,
+    // to get the same obfuscation name.
+
+    overloadaggressively
+
+    // Put all obfuscated classes into the nameless root package.
+
+    repackageclasses ''
+
+    // Adapt the names and contents of the resource files.
+
+    adaptresourcefilenames    '**.properties,**.gif,**.jpg'
+    adaptresourcefilecontents 'proguard/ant/task.properties'
+
+    // The main entry points.
+
+    keep 'public class proguard.ProGuard { \
+        public static void main(java.lang.String[]); \
+    }'
+
+    keep 'public class proguard.gui.ProGuardGUI { \
+        public static void main(java.lang.String[]); \
+    }'
+
+    keep 'public class proguard.retrace.ReTrace { \
+        public static void main(java.lang.String[]); \
+    }'
+
+    // If we have ant.jar, we can properly process the Ant task.
+
+    keep allowobfuscation: true, 'class proguard.ant.*'
+    keepclassmembers 'public class proguard.ant.* { \
+        <init>(org.apache.tools.ant.Project); \
+        public void set*(***); \
+        public void add*(***); \
+    }'
+
+    // If we have the Gradle jars, we can properly process the Gradle task.
+
+    keep 'public class proguard.gradle.* { \
+        public *; \
+    }'
+
+    // If we have kenv.zip, we can process the J2ME WTK plugin.
+
+    keep 'public class proguard.wtk.ProGuardObfuscator'
+}
diff --git a/third_party/java/proguard/proguard6.2.2/examples/gradle/proguardgui.gradle b/third_party/java/proguard/proguard6.2.2/examples/gradle/proguardgui.gradle
new file mode 100644
index 0000000..62cd026
--- /dev/null
+++ b/third_party/java/proguard/proguard6.2.2/examples/gradle/proguardgui.gradle
@@ -0,0 +1,87 @@
+//
+// This Gradle build file illustrates how to process the ProGuard GUI.
+// Configuration files for typical applications will be very similar.
+// Usage:
+//     gradle -b proguardgui.gradle proguard
+//
+
+// Tell Gradle where to find the ProGuard task.
+
+buildscript {
+    repositories {
+        flatDir dirs: '../../lib'
+    }
+    dependencies {
+        classpath ':proguard'
+    }
+}
+
+// Define a ProGuard task.
+
+task ('proguard', type: proguard.gradle.ProGuardTask) {
+
+    // You should probably import a more compact ProGuard-style configuration
+    // file for all static settings, but we're specifying them all here, for
+    // the sake of the example.
+    //configuration 'configuration.pro'
+
+    verbose
+
+    // Specify the input jars, output jars, and library jars.
+    // The input jars will be merged in a single output jar.
+    // We'll filter out the Ant classes, Gradle classes, and WTK classes, keeping
+    // everything else.
+
+    injars  '../../lib/proguardgui.jar'
+    injars  '../../lib/proguard.jar', filter: '!META-INF/**,!proguard/gradle/**,!proguard/ant/**,!proguard/wtk/**'
+    injars  '../../lib/retrace.jar ', filter: '!META-INF/**'
+    outjars 'proguardgui_out.jar'
+
+    // Automatically handle the Java version of this build.
+    if (System.getProperty('java.version').startsWith('1.')) {
+        // Before Java 9, the runtime classes were packaged in a single jar file.
+        libraryjars "${System.getProperty('java.home')}/lib/rt.jar"
+    } else {
+        // As of Java 9, the runtime classes are packaged in modular jmod files.
+        libraryjars "${System.getProperty('java.home')}/jmods/java.base.jmod   ", jarfilter: '!**.jar', filter: '!module-info.class'
+        libraryjars "${System.getProperty('java.home')}/jmods/java.desktop.jmod", jarfilter: '!**.jar', filter: '!module-info.class'
+    }
+
+    // If we wanted to reuse the previously obfuscated proguard_out.jar, we could
+    // perform incremental obfuscation based on its mapping file, and only keep the
+    // additional GUI files instead of all files.
+
+    //applymapping 'proguard.map'
+    //injars      '../../lib/proguardgui.jar'
+    //outjars     'proguardgui_out.jar'
+    //libraryjars '../../lib/proguard.jar', filter: '!proguard/ant/**,!proguard/wtk/**'
+    //libraryjars '../../lib/retrace.jar'
+    //libraryjars "${System.getProperty('java.home')}/jmods/java.base.jmod", jarfilter: '!**.jar', filter: '!module-info.class'
+    //libraryjars "${System.getProperty('java.home')}/jmods/java.desktop.jmod", jarfilter: '!**.jar', filter: '!module-info.class'
+
+
+    // Don't print notes about reflection in injected code.
+
+    dontnote 'proguard.configuration.ConfigurationLogger'
+
+    // Allow methods with the same signature, except for the return type,
+    // to get the same obfuscation name.
+
+    overloadaggressively
+
+    // Put all obfuscated classes into the nameless root package.
+
+    repackageclasses ''
+
+    // Adapt the names of resource files, based on the corresponding obfuscated
+    // class names. Notably, in this case, the GUI resource properties file will
+    // have to be renamed.
+
+    adaptresourcefilenames '**.properties,**.gif,**.jpg'
+
+    // The entry point: ProGuardGUI and its main method.
+
+    keep 'public class proguard.gui.ProGuardGUI { \
+        public static void main(java.lang.String[]); \
+    }'
+}
diff --git a/third_party/java/proguard/proguard6.2.2/examples/gradle/retrace.gradle b/third_party/java/proguard/proguard6.2.2/examples/gradle/retrace.gradle
new file mode 100644
index 0000000..ef3b4d7
--- /dev/null
+++ b/third_party/java/proguard/proguard6.2.2/examples/gradle/retrace.gradle
@@ -0,0 +1,92 @@
+//
+// This Gradle build file illustrates how to process the ReTrace tool.
+// Configuration files for typical applications will be very similar.
+// Usage:
+//     gradle -b retrace.gradle proguard
+//
+
+// Tell Gradle where to find the ProGuard task.
+
+buildscript {
+    repositories {
+        flatDir dirs: '../../lib'
+    }
+    dependencies {
+        classpath ':proguard'
+    }
+}
+
+// Define a ProGuard task.
+
+task ('proguard', type: proguard.gradle.ProGuardTask) {
+
+    // You should probably import a more compact ProGuard-style configuration
+    // file for all static settings, but we're specifying them all here, for
+    // the sake of the example.
+    //configuration 'configuration.pro'
+
+    verbose
+
+    // Specify the input jars, output jars, and library jars.
+    // The input jars will be merged in a single output jar.
+    // We'll filter out the Ant and WTK classes.
+
+    injars  '../../lib/retrace.jar'
+    injars  '../../lib/proguard.jar', filter: '!META-INF/MANIFEST.MF,!proguard/gui/**,!proguard/gradle/**,!proguard/ant/**,!proguard/wtk/**'
+    outjars 'retrace_out.jar'
+
+    // Automatically handle the Java version of this build.
+    if (System.getProperty('java.version').startsWith('1.')) {
+        // Before Java 9, the runtime classes were packaged in a single jar file.
+        libraryjars "${System.getProperty('java.home')}/lib/rt.jar"
+    } else {
+        // As of Java 9, the runtime classes are packaged in modular jmod files.
+        libraryjars "${System.getProperty('java.home')}/jmods/java.base.jmod", jarfilter: '!**.jar', filter: '!module-info.class'
+        //libraryjars "${System.getProperty('java.home')}/jmods/....."
+    }
+
+    // If we wanted to reuse the previously obfuscated proguard_out.jar, we could
+    // perform incremental obfuscation based on its mapping file, and only keep the
+    // additional ReTrace files instead of all files.
+
+    //applymapping 'proguard.map'
+    //outjars      'retrace_out.jar', filter: 'proguard/retrace/**'
+
+    // Don't print notes about reflection in injected code.
+
+    dontnote 'proguard.configuration.ConfigurationLogger'
+
+    // Don't print warnings about GSON dependencies.
+
+    dontwarn 'com.google.gson.**'
+
+    // Preserve injected GSON utility classes and their members.
+
+    keep allowobfuscation: true, 'class proguard.optimize.gson._*'
+    keepclassmembers 'class proguard.optimize.gson._* { \
+        *; \
+    }'
+
+    // Obfuscate class strings of injected GSON utility classes.
+
+    adaptclassstrings 'proguard.optimize.gson.**'
+
+    // Allow methods with the same signature, except for the return type,
+    // to get the same obfuscation name.
+
+    overloadaggressively
+
+    // Put all obfuscated classes into the nameless root package.
+
+    repackageclasses ''
+
+    // Allow classes and class members to be made public.
+
+    allowaccessmodification
+
+    // The entry point: ReTrace and its main method.
+
+    keep 'public class proguard.retrace.ReTrace { \
+        public static void main(java.lang.String[]); \
+    }'
+}
diff --git a/third_party/java/proguard/proguard6.2.2/examples/gradle/scala.gradle b/third_party/java/proguard/proguard6.2.2/examples/gradle/scala.gradle
new file mode 100644
index 0000000..091e524
--- /dev/null
+++ b/third_party/java/proguard/proguard6.2.2/examples/gradle/scala.gradle
@@ -0,0 +1,164 @@
+//
+// This Gradle build file illustrates how to process Scala
+// applications, including the Scala runtime.
+// Usage:
+//     gradle -b scala.gradle proguard
+//
+
+// Tell Gradle where to find the ProGuard task.
+
+buildscript {
+    repositories {
+        flatDir dirs: '../../lib'
+    }
+    dependencies {
+        classpath ':proguard'
+    }
+}
+
+// Define a ProGuard task.
+
+task ('proguard', type: proguard.gradle.ProGuardTask) {
+
+    // You should probably import a more compact ProGuard-style configuration
+    // file for all static settings, but we're specifying them all here, for
+    // the sake of the example.
+    //configuration 'configuration.pro'
+
+    verbose
+
+    // Specify the input jars, output jars, and library jars.
+
+    injars  'in.jar'
+    injars  '/usr/local/java/scala-2.9.1/lib/scala-library.jar'
+    //injars  '/usr/local/java/scala-2.9.1/lib/scala-compiler.jar', filter: '!META-INF/MANIFEST.MF'
+    //injars  '/usr/local/java/scala-2.9.1/lib/jline.jar', filter: '!META-INF/MANIFEST.MF'
+    outjars 'out.jar'
+
+    // Automatically handle the Java version of this build.
+    if (System.getProperty('java.version').startsWith('1.')) {
+        // Before Java 9, the runtime classes were packaged in a single jar file.
+        libraryjars "${System.getProperty('java.home')}/lib/rt.jar"
+    } else {
+        // As of Java 9, the runtime classes are packaged in modular jmod files.
+        libraryjars "${System.getProperty('java.home')}/jmods/java.base.jmod", jarfilter: '!**.jar', filter: '!module-info.class'
+        //libraryjars "${System.getProperty('java.home')}/jmods/....."
+    }
+
+    //libraryjars '/usr/local/java/ant/lib/ant.jar'
+    //...
+
+    // Ignore some compiler artefacts.
+
+    dontwarn 'scala.**'
+
+    // Save the obfuscation mapping to a file, so you can de-obfuscate any stack
+    // traces later on. Keep a fixed source file attribute and all line number
+    // tables to get line numbers in the stack traces.
+    // You can comment this out if you're not interested in stack traces.
+
+    printmapping 'out.map'
+    renamesourcefileattribute 'SourceFile'
+    keepattributes 'SourceFile,LineNumberTable'
+
+    // Preserve all annotations.
+
+    keepattributes '*Annotation*'
+
+    // You can print out the seeds that are matching the keep options below.
+
+    //printseeds 'out.seeds'
+
+    // Preserve all public applications.
+
+    keepclasseswithmembers 'public class * { \
+        public static void main(java.lang.String[]); \
+    }'
+
+    // Preserve some classes and class members that are accessed by means of
+    // introspection.
+
+    keep 'class * implements org.xml.sax.EntityResolver'
+
+    keepclassmembers 'class * { \
+        ** MODULE$; \
+    }'
+
+    keepclassmembernames 'class scala.concurrent.forkjoin.ForkJoinPool { \
+        long eventCount; \
+        int  workerCounts; \
+        int  runControl; \
+        scala.concurrent.forkjoin.ForkJoinPool$WaitQueueNode syncStack; \
+        scala.concurrent.forkjoin.ForkJoinPool$WaitQueueNode spareStack; \
+    }'
+
+    keepclassmembernames 'class scala.concurrent.forkjoin.ForkJoinWorkerThread { \
+        int base; \
+        int sp; \
+        int runState; \
+    }'
+
+    keepclassmembernames 'class scala.concurrent.forkjoin.ForkJoinTask { \
+        int status; \
+    }'
+
+    keepclassmembernames 'class scala.concurrent.forkjoin.LinkedTransferQueue { \
+        scala.concurrent.forkjoin.LinkedTransferQueue$PaddedAtomicReference head; \
+        scala.concurrent.forkjoin.LinkedTransferQueue$PaddedAtomicReference tail; \
+        scala.concurrent.forkjoin.LinkedTransferQueue$PaddedAtomicReference cleanMe; \
+    }'
+
+    // Preserve some classes and class members that are accessed by means of
+    // introspection in the Scala compiler library, if it is processed as well.
+
+    //keep 'class * implements jline.Completor'
+    //keep 'class * implements jline.Terminal'
+
+    //keep 'class scala.tools.nsc.Global'
+
+    //keepclasseswithmembers 'class * { \
+    //    <init>(scala.tools.nsc.Global); \
+    //}'
+
+    //keepclassmembers 'class * { \
+    //    *** scala_repl_value(); \
+    //    *** scala_repl_result(); \
+    //}'
+
+    // Preserve all native method names and the names of their classes.
+
+    keepclasseswithmembernames,includedescriptorclasses 'class * { \
+        native <methods>; \
+    }'
+
+    // Preserve the special static methods that are required in all enumeration
+    // classes.
+
+    keepclassmembers allowoptimization: true, 'enum * { \
+        public static **[] values(); \
+        public static ** valueOf(java.lang.String); \
+    }'
+
+    // Explicitly preserve all serialization members. The Serializable interface
+    // is only a marker interface, so it wouldn't save them.
+    // You can comment this out if your application doesn't use serialization.
+    // If your code contains serializable classes that have to be backward 
+    // compatible, please refer to the manual.
+
+    keepclassmembers 'class * implements java.io.Serializable { \
+        static final long serialVersionUID; \
+        static final java.io.ObjectStreamField[] serialPersistentFields; \
+        private void writeObject(java.io.ObjectOutputStream); \
+        private void readObject(java.io.ObjectInputStream); \
+        java.lang.Object writeReplace(); \
+        java.lang.Object readResolve(); \
+    }'
+
+    // Your application may contain more items that need to be preserved; 
+    // typically classes that are dynamically created using Class.forName:
+
+    // keep 'public class com.example.MyClass'
+    // keep 'public interface com.example.MyInterface'
+    // keep 'public class * implements com.example.MyInterface'
+
+}
diff --git a/third_party/java/proguard/proguard6.2.2/examples/gradle/servlets.gradle b/third_party/java/proguard/proguard6.2.2/examples/gradle/servlets.gradle
new file mode 100644
index 0000000..d14c149
--- /dev/null
+++ b/third_party/java/proguard/proguard6.2.2/examples/gradle/servlets.gradle
@@ -0,0 +1,101 @@
+//
+// This Gradle build file illustrates how to process servlets.
+// Usage:
+//     gradle -b servlets.gradle proguard
+//
+
+// Tell Gradle where to find the ProGuard task.
+
+buildscript {
+    repositories {
+        flatDir dirs: '../../lib'
+    }
+    dependencies {
+        classpath ':proguard'
+    }
+}
+
+// Define a ProGuard task.
+
+task ('proguard', type: proguard.gradle.ProGuardTask) {
+
+    // You should probably import a more compact ProGuard-style configuration
+    // file for all static settings, but we're specifying them all here, for
+    // the sake of the example.
+    //configuration 'configuration.pro'
+
+    verbose
+
+    // Specify the input jars, output jars, and library jars.
+
+    injars  'in.jar'
+    outjars 'out.jar'
+
+    // Automatically handle the Java version of this build.
+    if (System.getProperty('java.version').startsWith('1.')) {
+        // Before Java 9, the runtime classes were packaged in a single jar file.
+        libraryjars "${System.getProperty('java.home')}/lib/rt.jar"
+    } else {
+        // As of Java 9, the runtime classes are packaged in modular jmod files.
+        libraryjars "${System.getProperty('java.home')}/jmods/java.base.jmod", jarfilter: '!**.jar', filter: '!module-info.class'
+    }
+
+    libraryjars '/usr/local/java/servlet/servlet.jar'
+
+    // Save the obfuscation mapping to a file, so you can de-obfuscate any stack
+    // traces later on. Keep a fixed source file attribute and all line number
+    // tables to get line numbers in the stack traces.
+    // You can comment this out if you're not interested in stack traces.
+
+    printmapping 'out.map'
+    renamesourcefileattribute 'SourceFile'
+    keepattributes 'SourceFile,LineNumberTable'
+
+    // Preserve all annotations.
+
+    keepattributes '*Annotation*'
+
+    // You can print out the seeds that are matching the keep options below.
+
+    //printseeds 'out.seeds'
+
+    // Preserve all public servlets.
+
+    keep 'public class * implements javax.servlet.Servlet'
+
+    // Preserve all native method names and the names of their classes.
+
+    keepclasseswithmembernames,includedescriptorclasses 'class * { \
+        native <methods>; \
+    }'
+
+    // Preserve the special static methods that are required in all enumeration
+    // classes.
+
+    keepclassmembers allowoptimization: true, 'enum * { \
+        public static **[] values(); \
+        public static ** valueOf(java.lang.String); \
+    }'
+
+    // Explicitly preserve all serialization members. The Serializable interface
+    // is only a marker interface, so it wouldn't save them.
+    // You can comment this out if your library doesn't use serialization.
+    // If your code contains serializable classes that have to be backward
+    // compatible, please refer to the manual.
+
+    keepclassmembers 'class * implements java.io.Serializable { \
+        static final long serialVersionUID; \
+        static final java.io.ObjectStreamField[] serialPersistentFields; \
+        private void writeObject(java.io.ObjectOutputStream); \
+        private void readObject(java.io.ObjectInputStream); \
+        java.lang.Object writeReplace(); \
+        java.lang.Object readResolve(); \
+    }'
+
+    // Your application may contain more items that need to be preserved;
+    // typically classes that are dynamically created using Class.forName:
+
+    // keep 'public class com.example.MyClass'
+    // keep 'public interface com.example.MyInterface'
+    // keep 'public class * implements com.example.MyInterface'
+}
diff --git a/third_party/java/proguard/proguard6.2.2/examples/standalone/android.pro b/third_party/java/proguard/proguard6.2.2/examples/standalone/android.pro
new file mode 100644
index 0000000..472974a
--- /dev/null
+++ b/third_party/java/proguard/proguard6.2.2/examples/standalone/android.pro
@@ -0,0 +1,263 @@
+#
+# This ProGuard configuration file illustrates how to process Android
+# applications.
+#
+# If you're using the Android SDK, the provided build systems with Gradle,
+# Android Studio, Eclipse, and Ant already take care of the proper settings.
+# You only need to enable ProGuard as explained in the Android documentation.
+# You can still add project-specific configuration in proguard-project.txt.
+#
+# This configuration file is for custom, stand-alone builds.
+# Usage:
+#     java -jar proguard.jar @android.pro
+
+
+###############################################################################
+# Input and output.
+###############################################################################
+
+# Specify the input jars, output jars, and library jars.
+# Note that ProGuard works with Java bytecode (.class),
+# before the dex compiler converts it into Dalvik code (.dex).
+
+-injars  bin/classes
+-injars  libs
+-outjars bin/classes-processed.jar
+
+-libraryjars /usr/local/android-sdk/platforms/android-27/android.jar
+#-libraryjars /usr/local/java/android-sdk/extras/android/support/v4/android-support-v4.jar
+#-libraryjars /usr/local/java/android-sdk/add-ons/addon-google_apis-google-21/libs/maps.jar
+# ...
+
+# Save the obfuscation mapping to a file, so you can de-obfuscate any stack
+# traces later on.
+
+-printmapping bin/classes-processed.map
+
+# You can print out the seeds that are matching the keep options below.
+
+#-printseeds bin/classes-processed.seeds
+
+
+###############################################################################
+# General settings.
+###############################################################################
+
+-verbose
+
+# We can debug the ProGuard configuration by instrumenting the code and
+# checking the log for feedback. Disable the option again for actual releases!
+
+#-addconfigurationdebugging
+
+# We can also disable the individual processing steps.
+
+#-dontshrink
+#-dontoptimize
+#-dontobfuscate
+
+# Specifically target Android.
+
+-android
+
+# The dex compiler ignores preverification information.
+
+-dontpreverify
+
+# Reduce the size of the output some more.
+
+-repackageclasses ''
+-allowaccessmodification
+
+# Switch off some optimizations that trip older versions of the Dalvik VM.
+
+-optimizations !code/simplification/arithmetic
+
+# Keep a fixed source file attribute and all line number tables to get line
+# numbers in the stack traces.
+
+-renamesourcefileattribute SourceFile
+-keepattributes SourceFile,LineNumberTable
+
+
+###############################################################################
+# Settings to handle reflection in the code.
+###############################################################################
+
+# RemoteViews might need annotations.
+
+-keepattributes *Annotation*
+
+# Preserve all fundamental application classes.
+
+-keep public class * extends android.app.Activity
+-keep public class * extends android.app.Application
+-keep public class * extends android.app.Service
+-keep public class * extends android.content.BroadcastReceiver
+-keep public class * extends android.content.ContentProvider
+
+# Preserve all View implementations, their special context constructors, and
+# their setters.
+
+-keep public class * extends android.view.View {
+    public <init>(android.content.Context);
+    public <init>(android.content.Context, android.util.AttributeSet);
+    public <init>(android.content.Context, android.util.AttributeSet, int);
+    public void set*(...);
+}
+
+# Preserve all classes that have special context constructors, and the
+# constructors themselves.
+
+-keepclasseswithmembers class * {
+    public <init>(android.content.Context, android.util.AttributeSet);
+}
+
+# Preserve all classes that have special context constructors, and the
+# constructors themselves.
+
+-keepclasseswithmembers class * {
+    public <init>(android.content.Context, android.util.AttributeSet, int);
+}
+
+# Preserve all possible onClick handlers.
+
+-keepclassmembers class * extends android.content.Context {
+   public void *(android.view.View);
+   public void *(android.view.MenuItem);
+}
+
+# Preserve the special fields of all Parcelable implementations.
+
+-keepclassmembers class * implements android.os.Parcelable {
+    static android.os.Parcelable$Creator CREATOR;
+}
+
+# Preserve static fields of inner classes of R classes that might be accessed
+# through introspection.
+
+-keepclassmembers class **.R$* {
+  public static <fields>;
+}
+
+# Preserve annotated Javascript interface methods.
+
+-keepclassmembers class * {
+    @android.webkit.JavascriptInterface <methods>;
+}
+
+# Preserve annotated and generated classes for Dagger.
+
+-keepclassmembers,allowobfuscation class * {
+    @dagger.** *;
+}
+
+-keep class **$$ModuleAdapter
+-keep class **$$InjectAdapter
+-keep class **$$StaticInjection
+
+-if   class **$$ModuleAdapter
+-keep class <1>
+
+-if   class **$$InjectAdapter
+-keep class <1>
+
+-if   class **$$StaticInjection
+-keep class <1>
+
+-keepnames class dagger.Lazy
+
+# Preserve annotated and generated classes for Butterknife.
+
+-keep class **$$ViewBinder {
+    public static void bind(...);
+    public static void unbind(...);
+}
+
+-if   class **$$ViewBinder
+-keep class <1>
+
+-keep class **_ViewBinding {
+    <init>(<1>, android.view.View);
+}
+
+-if   class **_ViewBinding
+-keep class <1>
+
+# Preserve fields that are serialized with GSON.
+
+#-keepclassmembers class com.example.SerializedClass1,
+#                        com.example.SerializedClass2 {
+#    <fields>;
+#}
+
+-keepclassmembers,allowobfuscation class * {
+    @com.google.gson.annotations.SerializedName <fields>;
+}
+
+-keep,allowobfuscation @interface com.google.gson.annotations.**
+
+
+# Preserve the required interface from the License Verification Library
+# (but don't nag the developer if the library is not used at all).
+
+-keep public interface com.android.vending.licensing.ILicensingService
+
+-dontnote com.android.vending.licensing.ILicensingService
+
+# The Android Compatibility library references some classes that may not be
+# present in all versions of the API, but we know that's ok.
+
+-dontwarn android.support.**
+
+# Preserve all native method names and the names of their classes.
+
+-keepclasseswithmembernames,includedescriptorclasses class * {
+    native <methods>;
+}
+
+# Preserve the special static methods that are required in all enumeration
+# classes.
+
+-keepclassmembers,allowoptimization enum * {
+    public static **[] values();
+    public static ** valueOf(java.lang.String);
+}
+
+# Explicitly preserve all serialization members. The Serializable interface
+# is only a marker interface, so it wouldn't save them.
+# You can comment this out if your application doesn't use serialization.
+# If your code contains serializable classes that have to be backward 
+# compatible, please refer to the manual.
+
+-keepclassmembers class * implements java.io.Serializable {
+    static final long serialVersionUID;
+    static final java.io.ObjectStreamField[] serialPersistentFields;
+    private void writeObject(java.io.ObjectOutputStream);
+    private void readObject(java.io.ObjectInputStream);
+    java.lang.Object writeReplace();
+    java.lang.Object readResolve();
+}
+
+# Your application may contain more items that need to be preserved; 
+# typically classes that are dynamically created using Class.forName:
+
+# -keep public class com.example.MyClass
+# -keep public interface com.example.MyInterface
+# -keep public class * implements com.example.MyInterface
+
+
+###############################################################################
+# Further optimizations.
+###############################################################################
+
+# If you wish, you can let the optimization step remove Android logging calls.
+
+#-assumenosideeffects class android.util.Log {
+#    public static boolean isLoggable(java.lang.String, int);
+#    public static int v(...);
+#    public static int i(...);
+#    public static int w(...);
+#    public static int d(...);
+#    public static int e(...);
+#}
diff --git a/third_party/java/proguard/proguard6.2.2/examples/standalone/applets.pro b/third_party/java/proguard/proguard6.2.2/examples/standalone/applets.pro
new file mode 100644
index 0000000..0dc4628
--- /dev/null
+++ b/third_party/java/proguard/proguard6.2.2/examples/standalone/applets.pro
@@ -0,0 +1,76 @@
+#
+# This ProGuard configuration file illustrates how to process applets.
+# Usage:
+#     java -jar proguard.jar @applets.pro
+#
+
+-verbose
+
+# Specify the input jars, output jars, and library jars.
+
+-injars  in.jar
+-outjars out.jar
+
+# Before Java 9, the runtime classes were packaged in a single jar file.
+#-libraryjars <java.home>/lib/rt.jar
+
+# As of Java 9, the runtime classes are packaged in modular jmod files.
+-libraryjars <java.home>/jmods/java.base.jmod   (!**.jar;!module-info.class)
+-libraryjars <java.home>/jmods/java.desktop.jmod(!**.jar;!module-info.class)
+
+# Save the obfuscation mapping to a file, so you can de-obfuscate any stack
+# traces later on. Keep a fixed source file attribute and all line number
+# tables to get line numbers in the stack traces.
+# You can comment this out if you're not interested in stack traces.
+
+-printmapping out.map
+-renamesourcefileattribute SourceFile
+-keepattributes SourceFile,LineNumberTable
+
+# Preserve all annotations.
+
+-keepattributes *Annotation*
+
+# You can print out the seeds that are matching the keep options below.
+
+#-printseeds out.seeds
+
+# Preserve all public applets.
+
+-keep public class * extends java.applet.Applet
+
+# Preserve all native method names and the names of their classes.
+
+-keepclasseswithmembernames,includedescriptorclasses class * {
+    native <methods>;
+}
+
+# Preserve the special static methods that are required in all enumeration
+# classes.
+
+-keepclassmembers,allowoptimization enum * {
+    public static **[] values();
+    public static ** valueOf(java.lang.String);
+}
+
+# Explicitly preserve all serialization members. The Serializable interface
+# is only a marker interface, so it wouldn't save them.
+# You can comment this out if your library doesn't use serialization.
+# If your code contains serializable classes that have to be backward
+# compatible, please refer to the manual.
+
+-keepclassmembers class * implements java.io.Serializable {
+    static final long serialVersionUID;
+    static final java.io.ObjectStreamField[] serialPersistentFields;
+    private void writeObject(java.io.ObjectOutputStream);
+    private void readObject(java.io.ObjectInputStream);
+    java.lang.Object writeReplace();
+    java.lang.Object readResolve();
+}
+
+# Your application may contain more items that need to be preserved;
+# typically classes that are dynamically created using Class.forName:
+
+# -keep public class com.example.MyClass
+# -keep public interface com.example.MyInterface
+# -keep public class * implements com.example.MyInterface
diff --git a/third_party/java/proguard/proguard6.2.2/examples/standalone/applications.pro b/third_party/java/proguard/proguard6.2.2/examples/standalone/applications.pro
new file mode 100644
index 0000000..734377d
--- /dev/null
+++ b/third_party/java/proguard/proguard6.2.2/examples/standalone/applications.pro
@@ -0,0 +1,83 @@
+#
+# This ProGuard configuration file illustrates how to process applications.
+# Usage:
+#     java -jar proguard.jar @applications.pro
+#
+
+-verbose
+
+# Specify the input jars, output jars, and library jars.
+
+-injars  in.jar
+-outjars out.jar
+
+# Before Java 9, the runtime classes were packaged in a single jar file.
+#-libraryjars <java.home>/lib/rt.jar
+
+# As of Java 9, the runtime classes are packaged in modular jmod files.
+-libraryjars <java.home>/jmods/java.base.jmod(!**.jar;!module-info.class)
+#-libraryjars <java.home>/jmods/.....
+
+#-libraryjars junit.jar
+#-libraryjars servlet.jar
+#-libraryjars jai_core.jar
+#...
+
+# Save the obfuscation mapping to a file, so you can de-obfuscate any stack
+# traces later on. Keep a fixed source file attribute and all line number
+# tables to get line numbers in the stack traces.
+# You can comment this out if you're not interested in stack traces.
+
+-printmapping out.map
+-renamesourcefileattribute SourceFile
+-keepattributes SourceFile,LineNumberTable
+
+# Preserve all annotations.
+
+-keepattributes *Annotation*
+
+# You can print out the seeds that are matching the keep options below.
+
+#-printseeds out.seeds
+
+# Preserve all public applications.
+
+-keepclasseswithmembers public class * {
+    public static void main(java.lang.String[]);
+}
+
+# Preserve all native method names and the names of their classes.
+
+-keepclasseswithmembernames,includedescriptorclasses class * {
+    native <methods>;
+}
+
+# Preserve the special static methods that are required in all enumeration
+# classes.
+
+-keepclassmembers,allowoptimization enum * {
+    public static **[] values();
+    public static ** valueOf(java.lang.String);
+}
+
+# Explicitly preserve all serialization members. The Serializable interface
+# is only a marker interface, so it wouldn't save them.
+# You can comment this out if your application doesn't use serialization.
+# If your code contains serializable classes that have to be backward 
+# compatible, please refer to the manual.
+
+-keepclassmembers class * implements java.io.Serializable {
+    static final long serialVersionUID;
+    static final java.io.ObjectStreamField[] serialPersistentFields;
+    private void writeObject(java.io.ObjectOutputStream);
+    private void readObject(java.io.ObjectInputStream);
+    java.lang.Object writeReplace();
+    java.lang.Object readResolve();
+}
+
+# Your application may contain more items that need to be preserved; 
+# typically classes that are dynamically created using Class.forName:
+
+# -keep public class com.example.MyClass
+# -keep public interface com.example.MyInterface
+# -keep public class * implements com.example.MyInterface
diff --git a/third_party/java/proguard/proguard6.2.2/examples/standalone/library.pro b/third_party/java/proguard/proguard6.2.2/examples/standalone/library.pro
new file mode 100644
index 0000000..84374dd
--- /dev/null
+++ b/third_party/java/proguard/proguard6.2.2/examples/standalone/library.pro
@@ -0,0 +1,86 @@
+#
+# This ProGuard configuration file illustrates how to process a program
+# library, such that it remains usable as a library.
+# Usage:
+#     java -jar proguard.jar @library.pro
+#
+
+-verbose
+
+# Specify the input jars, output jars, and library jars.
+# In this case, the input jar is the program library that we want to process.
+
+-injars  in.jar
+-outjars out.jar
+
+# Before Java 9, the runtime classes were packaged in a single jar file.
+#-libraryjars <java.home>/lib/rt.jar
+
+# As of Java 9, the runtime classes are packaged in modular jmod files.
+-libraryjars <java.home>/jmods/java.base.jmod(!**.jar;!module-info.class)
+#-libraryjars <java.home>/jmods/.....
+
+# Save the obfuscation mapping to a file, so we can de-obfuscate any stack
+# traces later on. Keep a fixed source file attribute and all line number
+# tables to get line numbers in the stack traces.
+# You can comment this out if you're not interested in stack traces.
+
+-printmapping out.map
+-keepparameternames
+-renamesourcefileattribute SourceFile
+-keepattributes Exceptions,InnerClasses,Signature,Deprecated,
+                SourceFile,LineNumberTable,EnclosingMethod
+
+# Preserve all annotations.
+
+-keepattributes *Annotation*
+
+# Preserve all public classes, and their public and protected fields and
+# methods.
+
+-keep public class * {
+    public protected *;
+}
+
+# Preserve all .class method names.
+
+-keepclassmembernames class * {
+    java.lang.Class class$(java.lang.String);
+    java.lang.Class class$(java.lang.String, boolean);
+}
+
+# Preserve all native method names and the names of their classes.
+
+-keepclasseswithmembernames,includedescriptorclasses class * {
+    native <methods>;
+}
+
+# Preserve the special static methods that are required in all enumeration
+# classes.
+
+-keepclassmembers,allowoptimization enum * {
+    public static **[] values();
+    public static ** valueOf(java.lang.String);
+}
+
+# Explicitly preserve all serialization members. The Serializable interface
+# is only a marker interface, so it wouldn't save them.
+# You can comment this out if your library doesn't use serialization.
+# If your code contains serializable classes that have to be backward
+# compatible, please refer to the manual.
+
+-keepclassmembers class * implements java.io.Serializable {
+    static final long serialVersionUID;
+    static final java.io.ObjectStreamField[] serialPersistentFields;
+    private void writeObject(java.io.ObjectOutputStream);
+    private void readObject(java.io.ObjectInputStream);
+    java.lang.Object writeReplace();
+    java.lang.Object readResolve();
+}
+
+# Your library may contain more items that need to be preserved; 
+# typically classes that are dynamically created using Class.forName:
+
+# -keep public class com.example.MyClass
+# -keep public interface com.example.MyInterface
+# -keep public class * implements com.example.MyInterface
diff --git a/third_party/java/proguard/proguard6.2.2/examples/standalone/midlets.pro b/third_party/java/proguard/proguard6.2.2/examples/standalone/midlets.pro
new file mode 100644
index 0000000..8561cdc
--- /dev/null
+++ b/third_party/java/proguard/proguard6.2.2/examples/standalone/midlets.pro
@@ -0,0 +1,69 @@
+#
+# This ProGuard configuration file illustrates how to process J2ME midlets.
+# Usage:
+#     java -jar proguard.jar @midlets.pro
+#
+
+-verbose
+
+# Specify the input jars, output jars, and library jars.
+
+-injars  in.jar
+-outjars out.jar
+
+-libraryjars /usr/local/java/wtk2.5.2/lib/midpapi20.jar
+-libraryjars /usr/local/java/wtk2.5.2/lib/cldcapi11.jar
+
+# Preverify the code suitably for Java Micro Edition.
+
+-microedition
+
+# Allow methods with the same signature, except for the return type,
+# to get the same obfuscation name.
+
+-overloadaggressively
+
+# Put all obfuscated classes into the nameless root package.
+
+-repackageclasses ''
+
+# Allow classes and class members to be made public.
+
+-allowaccessmodification
+
+# On Windows, you can't use mixed case class names,
+# should you still want to use the preverify tool.
+#
+# -dontusemixedcaseclassnames
+
+# Save the obfuscation mapping to a file, so you can de-obfuscate any stack
+# traces later on.
+
+-printmapping out.map
+
+# You can keep a fixed source file attribute and all line number tables to
+# get stack traces with line numbers.
+
+#-renamesourcefileattribute SourceFile
+#-keepattributes SourceFile,LineNumberTable
+
+# You can print out the seeds that are matching the keep options below.
+
+#-printseeds out.seeds
+
+# Preserve all public midlets.
+
+-keep public class * extends javax.microedition.midlet.MIDlet
+
+# Preserve all native method names and the names of their classes.
+
+-keepclasseswithmembernames,includedescriptorclasses class * {
+    native <methods>;
+}
+
+# Your midlet may contain more items that need to be preserved; 
+# typically classes that are dynamically created using Class.forName:
+
+# -keep public class com.example.MyClass
+# -keep public interface com.example.MyInterface
+# -keep public class * implements com.example.MyInterface
diff --git a/third_party/java/proguard/proguard6.2.2/examples/standalone/proguard.pro b/third_party/java/proguard/proguard6.2.2/examples/standalone/proguard.pro
new file mode 100644
index 0000000..e2e44e3
--- /dev/null
+++ b/third_party/java/proguard/proguard6.2.2/examples/standalone/proguard.pro
@@ -0,0 +1,95 @@
+#
+# This ProGuard configuration file illustrates how to process ProGuard itself.
+# Configuration files for typical applications will be very similar.
+# Usage:
+#     java -jar proguard.jar @proguard.pro
+#
+
+-verbose
+
+# Specify the input jars, output jars, and library jars.
+# We'll filter out the Ant classes, Gradle classes, and WTK classes, keeping
+# everything else.
+
+-injars  ../../lib/proguard.jar(!proguard/ant/**,!proguard/gradle/**,!proguard/wtk/**)
+-outjars proguard_out.jar
+
+# Before Java 9, the runtime classes were packaged in a single jar file.
+#-libraryjars <java.home>/lib/rt.jar
+
+# As of Java 9, the runtime classes are packaged in modular jmod files.
+-libraryjars <java.home>/jmods/java.base.jmod(!**.jar;!module-info.class)
+
+# Write out an obfuscation mapping file, for de-obfuscating any stack traces
+# later on, or for incremental obfuscation of extensions.
+
+-printmapping proguard.map
+
+# Don't print notes about reflection in injected code.
+
+-dontnote proguard.configuration.ConfigurationLogger
+
+# Don't print warnings about GSON dependencies.
+
+-dontwarn com.google.gson.**
+
+# Preserve injected GSON utility classes and their members.
+
+-keep,allowobfuscation class proguard.optimize.gson._*
+-keepclassmembers class proguard.optimize.gson._* {
+    *;
+}
+
+# Obfuscate class strings of injected GSON utility classes.
+
+-adaptclassstrings proguard.optimize.gson.**
+
+# Allow methods with the same signature, except for the return type,
+# to get the same obfuscation name.
+
+-overloadaggressively
+
+# Put all obfuscated classes into the nameless root package.
+
+-repackageclasses ''
+
+# Allow classes and class members to be made public.
+
+-allowaccessmodification
+
+# The entry point: ProGuard and its main method.
+
+-keep public class proguard.ProGuard {
+    public static void main(java.lang.String[]);
+}
+
+# If you want to preserve the Ant task as well, you'll have to specify the
+# main ant.jar.
+
+#-libraryjars /usr/local/java/ant/lib/ant.jar
+#-adaptresourcefilecontents proguard/ant/task.properties
+#
+#-keep,allowobfuscation class proguard.ant.*
+#-keepclassmembers public class proguard.ant.* {
+#    <init>(org.apache.tools.ant.Project);
+#    public void set*(***);
+#    public void add*(***);
+#}
+
+# If you want to preserve the Gradle task, you'll have to specify the Gradle
+# jars.
+
+#-libraryjars /usr/local/java/gradle-4.2.1/lib/plugins/gradle-plugins-4.2.1.jar
+#-libraryjars /usr/local/java/gradle-4.2.1/lib/gradle-base-services-4.2.1.jar
+#-libraryjars /usr/local/java/gradle-4.2.1/lib/gradle-core-4.2.1.jar
+#-libraryjars /usr/local/java/gradle-4.2.1/lib/groovy-all-2.4.12.jar
+
+#-keep public class proguard.gradle.* {
+#    public *;
+#}
+
+# If you want to preserve the WTK obfuscation plug-in, you'll have to specify
+# the kenv.zip file.
+
+#-libraryjars /usr/local/java/wtk2.5.2/wtklib/kenv.zip
+#-keep public class proguard.wtk.ProGuardObfuscator
diff --git a/third_party/java/proguard/proguard6.2.2/examples/standalone/proguardall.pro b/third_party/java/proguard/proguard6.2.2/examples/standalone/proguardall.pro
new file mode 100644
index 0000000..29b9cb6
--- /dev/null
+++ b/third_party/java/proguard/proguard6.2.2/examples/standalone/proguardall.pro
@@ -0,0 +1,110 @@
+#
+# This ProGuard configuration file illustrates how to process ProGuard
+# (including its main application, its GUI, its Ant task, and its WTK plugin),
+# and the ReTrace tool, all in one go.
+# Configuration files for typical applications will be very similar.
+# Usage:
+#     java -jar proguard.jar @proguardall.pro
+#
+
+-verbose
+
+# Specify the input jars, output jars, and library jars.
+# We'll read all jars from the lib directory, process them, and write the
+# processed jars to a new out directory.
+
+-injars  ../../lib
+-outjars out
+
+# You may have to adapt the paths below.
+
+# Before Java 9, the runtime classes were packaged in a single jar file.
+#-libraryjars <java.home>/lib/rt.jar
+
+# As of Java 9, the runtime classes are packaged in modular jmod files.
+-libraryjars <java.home>/jmods/java.base.jmod   (!**.jar;!module-info.class)
+-libraryjars <java.home>/jmods/java.desktop.jmod(!**.jar;!module-info.class)
+
+-libraryjars /usr/local/java/ant/lib/ant.jar
+-libraryjars /usr/local/java/wtk2.5.2/wtklib/kenv.zip
+
+-libraryjars /usr/local/java/gradle-4.2.1/lib/plugins/gradle-plugins-4.2.1.jar
+-libraryjars /usr/local/java/gradle-4.2.1/lib/gradle-base-services-4.2.1.jar
+-libraryjars /usr/local/java/gradle-4.2.1/lib/gradle-logging-4.2.1.jar
+-libraryjars /usr/local/java/gradle-4.2.1/lib/gradle-core-api-4.2.1.jar
+-libraryjars /usr/local/java/gradle-4.2.1/lib/gradle-core-4.2.1.jar
+-libraryjars /usr/local/java/gradle-4.2.1/lib/groovy-all-2.4.12.jar
+
+-libraryjars <user.home>/.gradle/caches/modules-2/files-2.1/com.android.tools.build/builder/3.0.0/36884960f350cb29f1c2c93107f4fa27f4e7444e/builder-3.0.0.jar
+-libraryjars <user.home>/.gradle/caches/modules-2/files-2.1/com.android.tools.build/gradle-api/3.0.0/e98ade5c308a99980d2a61f4ce1d9286df0105e3/gradle-api-3.0.0.jar
+-libraryjars <user.home>/.gradle/caches/modules-2/files-2.1/com.android.tools.build/builder-model/3.0.0/a86b254415fded5297e1d849fa1884dfdf62ff42/builder-model-3.0.0.jar
+-libraryjars <user.home>/.gradle/caches/modules-2/files-2.1/com.android.tools.build/gradle/3.0.0/2356ee8e98b68c53dafc28898e7034080e5c91aa/gradle-3.0.0.jar
+-libraryjars <user.home>/.gradle/caches/modules-2/files-2.1/com.android.tools.build/gradle-core/3.0.0/b4b02fa623c5a618e68478d9a4a67e1e87c023c6/gradle-core-3.0.0.jar(!com/android/build/gradle/tasks/TestModuleProGuardTask*.class)
+-libraryjars <user.home>/.gradle/caches/modules-2/files-2.1/com.google.guava/guava-jdk5/17.0/463f8378feba44df7ba7cd9272d01837dad62b36/guava-jdk5-17.0.jar
+-libraryjars <user.home>/.gradle/caches/modules-2/files-2.1/org.slf4j/slf4j-api/1.7.6/562424e36df3d2327e8e9301a76027fca17d54ea/slf4j-api-1.7.6.jar
+
+# Don't print notes about reflection in injected code.
+
+-dontnote proguard.configuration.ConfigurationLogger
+
+# Don't print warnings about GSON dependencies.
+
+-dontwarn com.google.gson.**
+
+# Preserve injected GSON utility classes and their members.
+
+-keep,allowobfuscation class proguard.optimize.gson._*
+-keepclassmembers class proguard.optimize.gson._* {
+    *;
+}
+
+# Obfuscate class strings of injected GSON utility classes.
+
+-adaptclassstrings proguard.optimize.gson.**
+
+# Allow methods with the same signature, except for the return type,
+# to get the same obfuscation name.
+
+-overloadaggressively
+
+# Put all obfuscated classes into the nameless root package.
+
+-repackageclasses ''
+
+# Adapt the names and contents of the resource files.
+
+-adaptresourcefilenames    **.properties,**.gif,**.jpg
+-adaptresourcefilecontents proguard/ant/task.properties
+
+# The main entry points.
+
+-keep public class proguard.ProGuard {
+    public static void main(java.lang.String[]);
+}
+
+-keep public class proguard.gui.ProGuardGUI {
+    public static void main(java.lang.String[]);
+}
+
+-keep public class proguard.retrace.ReTrace {
+    public static void main(java.lang.String[]);
+}
+
+# If we have ant.jar, we can properly process the Ant task.
+
+-keep,allowobfuscation class proguard.ant.*
+-keepclassmembers public class proguard.ant.* {
+    <init>(org.apache.tools.ant.Project);
+    public void set*(***);
+    public void add*(***);
+}
+
+# If we have the Gradle jars, we can properly process the Gradle task.
+
+-keep public class proguard.gradle.* {
+    public *;
+}
+
+# If we have kenv.zip, we can process the J2ME WTK plugin.
+
+-keep public class proguard.wtk.ProGuardObfuscator
diff --git a/third_party/java/proguard/proguard6.2.2/examples/standalone/proguardgui.pro b/third_party/java/proguard/proguard6.2.2/examples/standalone/proguardgui.pro
new file mode 100644
index 0000000..41ea3f7
--- /dev/null
+++ b/third_party/java/proguard/proguard6.2.2/examples/standalone/proguardgui.pro
@@ -0,0 +1,62 @@
+#
+# This ProGuard configuration file illustrates how to process the ProGuard GUI.
+# Configuration files for typical applications will be very similar.
+# Usage:
+#     java -jar proguard.jar @proguardgui.pro
+#
+
+-verbose
+
+# Specify the input jars, output jars, and library jars.
+# The input jars will be merged in a single output jar.
+# We'll filter out the Ant classes, Gradle classes, and WTK classes, keeping
+# everything else.
+
+-injars  ../../lib/proguardgui.jar
+-injars  ../../lib/proguard.jar(!META-INF/**,!proguard/gradle/**,!proguard/ant/**,!proguard/wtk/**)
+-injars  ../../lib/retrace.jar (!META-INF/**)
+-outjars proguardgui_out.jar
+
+# Before Java 9, the runtime classes were packaged in a single jar file.
+#-libraryjars <java.home>/lib/rt.jar
+
+# As of Java 9, the runtime classes are packaged in modular jmod files.
+-libraryjars <java.home>/jmods/java.base.jmod   (!**.jar;!module-info.class)
+-libraryjars <java.home>/jmods/java.desktop.jmod(!**.jar;!module-info.class)
+
+# If we wanted to reuse the previously obfuscated proguard_out.jar, we could
+# perform incremental obfuscation based on its mapping file, and only keep the
+# additional GUI files instead of all files.
+
+#-applymapping proguard.map
+#-injars      ../../lib/proguardgui.jar
+#-outjars     proguardgui_out.jar
+#-libraryjars ../../lib/proguard.jar(!proguard/ant/**,!proguard/wtk/**)
+#-libraryjars ../../lib/retrace.jar
+#-libraryjars <java.home>/jmods/java.base.jmod(!**.jar;!module-info.class)
+#-libraryjars <java.home>/jmods/java.desktop.jmod(!**.jar;!module-info.class)
+
+# Don't print notes about reflection in injected code.
+
+-dontnote proguard.configuration.ConfigurationLogger
+
+# Allow methods with the same signature, except for the return type,
+# to get the same obfuscation name.
+
+-overloadaggressively
+
+# Put all obfuscated classes into the nameless root package.
+
+-repackageclasses ''
+
+# Adapt the names of resource files, based on the corresponding obfuscated
+# class names. Notably, in this case, the GUI resource properties file will
+# have to be renamed.
+
+-adaptresourcefilenames **.properties,**.gif,**.jpg
+
+# The entry point: ProGuardGUI and its main method.
+
+-keep public class proguard.gui.ProGuardGUI {
+    public static void main(java.lang.String[]);
+}
diff --git a/third_party/java/proguard/proguard6.2.2/examples/standalone/retrace.pro b/third_party/java/proguard/proguard6.2.2/examples/standalone/retrace.pro
new file mode 100644
index 0000000..a7403bf
--- /dev/null
+++ b/third_party/java/proguard/proguard6.2.2/examples/standalone/retrace.pro
@@ -0,0 +1,68 @@
+#
+# This ProGuard configuration file illustrates how to process the ReTrace tool.
+# Configuration files for typical applications will be very similar.
+# Usage:
+#     java -jar proguard.jar @retrace.pro
+#
+
+-verbose
+
+# Specify the input jars, output jars, and library jars.
+# The input jars will be merged in a single output jar.
+# We'll filter out the Ant and WTK classes.
+
+-injars  ../../lib/retrace.jar
+-injars  ../../lib/proguard.jar(!META-INF/MANIFEST.MF,!proguard/gui/**,!proguard/gradle/**,!proguard/ant/**,!proguard/wtk/**)
+-outjars retrace_out.jar
+
+# Before Java 9, the runtime classes were packaged in a single jar file.
+#-libraryjars <java.home>/lib/rt.jar
+
+# As of Java 9, the runtime classes are packaged in modular jmod files.
+-libraryjars <java.home>/jmods/java.base.jmod(!**.jar;!module-info.class)
+#-libraryjars <java.home>/jmods/.....
+
+# If we wanted to reuse the previously obfuscated proguard_out.jar, we could
+# perform incremental obfuscation based on its mapping file, and only keep the
+# additional ReTrace files instead of all files.
+
+#-applymapping proguard.map
+#-outjars      retrace_out.jar(proguard/retrace/**)
+
+# Don't print notes about reflection in injected code.
+
+-dontnote proguard.configuration.ConfigurationLogger
+
+# Don't print warnings about GSON dependencies.
+
+-dontwarn com.google.gson.**
+
+# Preserve injected GSON utility classes and their members.
+
+-keep,allowobfuscation class proguard.optimize.gson._*
+-keepclassmembers class proguard.optimize.gson._* {
+    *;
+}
+
+# Obfuscate class strings of injected GSON utility classes.
+
+-adaptclassstrings proguard.optimize.gson.**
+
+# Allow methods with the same signature, except for the return type,
+# to get the same obfuscation name.
+
+-overloadaggressively
+
+# Put all obfuscated classes into the nameless root package.
+
+-repackageclasses ''
+
+# Allow classes and class members to be made public.
+
+-allowaccessmodification
+
+# The entry point: ReTrace and its main method.
+
+-keep public class proguard.retrace.ReTrace {
+    public static void main(java.lang.String[]);
+}
diff --git a/third_party/java/proguard/proguard6.2.2/examples/standalone/scala.pro b/third_party/java/proguard/proguard6.2.2/examples/standalone/scala.pro
new file mode 100644
index 0000000..279a674
--- /dev/null
+++ b/third_party/java/proguard/proguard6.2.2/examples/standalone/scala.pro
@@ -0,0 +1,140 @@
+#
+# This ProGuard configuration file illustrates how to process Scala
+# applications, including the Scala runtime.
+# Usage:
+#     java -jar proguard.jar @scala.pro
+#
+
+-verbose
+
+# Specify the input jars, output jars, and library jars.
+
+-injars  in.jar
+-injars  /usr/local/java/scala-2.9.1/lib/scala-library.jar
+#-injars  /usr/local/java/scala-2.9.1/lib/scala-compiler.jar(!META-INF/MANIFEST.MF)
+#-injars  /usr/local/java/scala-2.9.1/lib/jline.jar(!META-INF/MANIFEST.MF)
+-outjars out.jar
+
+# Before Java 9, the runtime classes were packaged in a single jar file.
+#-libraryjars <java.home>/lib/rt.jar
+
+# As of Java 9, the runtime classes are packaged in modular jmod files.
+-libraryjars <java.home>/jmods/java.base.jmod(!**.jar;!module-info.class)
+#-libraryjars <java.home>/jmods/.....
+
+#-libraryjars /usr/local/java/ant/lib/ant.jar
+#...
+
+# Ignore some compiler artefacts.
+
+-dontwarn scala.**
+
+# Save the obfuscation mapping to a file, so you can de-obfuscate any stack
+# traces later on. Keep a fixed source file attribute and all line number
+# tables to get line numbers in the stack traces.
+# You can comment this out if you're not interested in stack traces.
+
+-printmapping out.map
+-renamesourcefileattribute SourceFile
+-keepattributes SourceFile,LineNumberTable
+
+# Preserve all annotations.
+
+-keepattributes *Annotation*
+
+# You can print out the seeds that are matching the keep options below.
+
+#-printseeds out.seeds
+
+# Preserve all public applications.
+
+-keepclasseswithmembers public class * {
+    public static void main(java.lang.String[]);
+}
+
+# Preserve some classes and class members that are accessed by means of
+# introspection.
+
+-keep class * implements org.xml.sax.EntityResolver
+
+-keepclassmembers class * {
+    ** MODULE$;
+}
+
+-keepclassmembernames class scala.concurrent.forkjoin.ForkJoinPool {
+    long eventCount;
+    int  workerCounts;
+    int  runControl;
+    scala.concurrent.forkjoin.ForkJoinPool$WaitQueueNode syncStack;
+    scala.concurrent.forkjoin.ForkJoinPool$WaitQueueNode spareStack;
+}
+
+-keepclassmembernames class scala.concurrent.forkjoin.ForkJoinWorkerThread {
+    int base;
+    int sp;
+    int runState;
+}
+
+-keepclassmembernames class scala.concurrent.forkjoin.ForkJoinTask {
+    int status;
+}
+
+-keepclassmembernames class scala.concurrent.forkjoin.LinkedTransferQueue {
+    scala.concurrent.forkjoin.LinkedTransferQueue$PaddedAtomicReference head;
+    scala.concurrent.forkjoin.LinkedTransferQueue$PaddedAtomicReference tail;
+    scala.concurrent.forkjoin.LinkedTransferQueue$PaddedAtomicReference cleanMe;
+}
+
+# Preserve some classes and class members that are accessed by means of
+# introspection in the Scala compiler library, if it is processed as well.
+
+#-keep class * implements jline.Completor
+#-keep class * implements jline.Terminal
+
+#-keep class scala.tools.nsc.Global
+
+#-keepclasseswithmembers class * {
+#    <init>(scala.tools.nsc.Global);
+#}
+
+#-keepclassmembers class * {
+#    *** scala_repl_value();
+#    *** scala_repl_result();
+#}
+
+# Preserve all native method names and the names of their classes.
+
+-keepclasseswithmembernames,includedescriptorclasses class * {
+    native <methods>;
+}
+
+# Preserve the special static methods that are required in all enumeration
+# classes.
+
+-keepclassmembers,allowoptimization enum * {
+    public static **[] values();
+    public static ** valueOf(java.lang.String);
+}
+
+# Explicitly preserve all serialization members. The Serializable interface
+# is only a marker interface, so it wouldn't save them.
+# You can comment this out if your application doesn't use serialization.
+# If your code contains serializable classes that have to be backward 
+# compatible, please refer to the manual.
+
+-keepclassmembers class * implements java.io.Serializable {
+    static final long serialVersionUID;
+    static final java.io.ObjectStreamField[] serialPersistentFields;
+    private void writeObject(java.io.ObjectOutputStream);
+    private void readObject(java.io.ObjectInputStream);
+    java.lang.Object writeReplace();
+    java.lang.Object readResolve();
+}
+
+# Your application may contain more items that need to be preserved; 
+# typically classes that are dynamically created using Class.forName:
+
+# -keep public class com.example.MyClass
+# -keep public interface com.example.MyInterface
+# -keep public class * implements com.example.MyInterface
+
diff --git a/third_party/java/proguard/proguard6.2.2/examples/standalone/servlets.pro b/third_party/java/proguard/proguard6.2.2/examples/standalone/servlets.pro
new file mode 100644
index 0000000..5d74fc9
--- /dev/null
+++ b/third_party/java/proguard/proguard6.2.2/examples/standalone/servlets.pro
@@ -0,0 +1,77 @@
+#
+# This ProGuard configuration file illustrates how to process servlets.
+# Usage:
+#     java -jar proguard.jar @servlets.pro
+#
+
+-verbose
+
+# Specify the input jars, output jars, and library jars.
+
+-injars  in.jar
+-outjars out.jar
+
+# Before Java 9, the runtime classes were packaged in a single jar file.
+#-libraryjars <java.home>/lib/rt.jar
+
+# As of Java 9, the runtime classes are packaged in modular jmod files.
+-libraryjars <java.home>/jmods/java.base.jmod(!**.jar;!module-info.class)
+
+-libraryjars /usr/local/java/servlet/servlet.jar
+
+# Save the obfuscation mapping to a file, so you can de-obfuscate any stack
+# traces later on. Keep a fixed source file attribute and all line number
+# tables to get line numbers in the stack traces.
+# You can comment this out if you're not interested in stack traces.
+
+-printmapping out.map
+-renamesourcefileattribute SourceFile
+-keepattributes SourceFile,LineNumberTable
+
+# Preserve all annotations.
+
+-keepattributes *Annotation*
+
+# You can print out the seeds that are matching the keep options below.
+
+#-printseeds out.seeds
+
+# Preserve all public servlets.
+
+-keep public class * implements javax.servlet.Servlet
+
+# Preserve all native method names and the names of their classes.
+
+-keepclasseswithmembernames,includedescriptorclasses class * {
+    native <methods>;
+}
+
+# Preserve the special static methods that are required in all enumeration
+# classes.
+
+-keepclassmembers,allowoptimization enum * {
+    public static **[] values();
+    public static ** valueOf(java.lang.String);
+}
+
+# Explicitly preserve all serialization members. The Serializable interface
+# is only a marker interface, so it wouldn't save them.
+# You can comment this out if your library doesn't use serialization.
+# If your code contains serializable classes that have to be backward
+# compatible, please refer to the manual.
+
+-keepclassmembers class * implements java.io.Serializable {
+    static final long serialVersionUID;
+    static final java.io.ObjectStreamField[] serialPersistentFields;
+    private void writeObject(java.io.ObjectOutputStream);
+    private void readObject(java.io.ObjectInputStream);
+    java.lang.Object writeReplace();
+    java.lang.Object readResolve();
+}
+
+# Your application may contain more items that need to be preserved;
+# typically classes that are dynamically created using Class.forName:
+
+# -keep public class com.example.MyClass
+# -keep public interface com.example.MyInterface
+# -keep public class * implements com.example.MyInterface