-optimizationpasses 5
-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-dontskipnonpubliclibraryclassmembers
-dontpreverify
-verbose
-dump class_files.txt
-printseeds seeds.txt
-printusage unused.txt
-printmapping mapping.txt
-optimizations !code/simplification/arithmetic,!field/removal/writeonly,!field/marking/private,!class/merging/*,!code/allocation/variable
-keeppackagenames com.adpdigital.push.**
-keeppackagenames com.adpdigital.push.location.**
-flattenpackagehierarchy
-allowaccessmodification
-renamesourcefileattribute SourceFile
-keepattributes *Annotation*
-keepattributes Signature,MethodParameters,LocalVariableTable,LocalVariableTypeTable
-keepattributes SourceFile,LineNumberTable
-keepattributes Exceptions,InnerClasses
#-adaptresourcefilenames **.properties

-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

-keep class android.os.Bundle { *; }

-keep class com.adpdigital.push.AdpPushClient { *; }
-keep class com.adpdigital.push.ForegroundManager { *; }
-keep class com.adpdigital.push.ChabokEvent { *; }
-keep class com.adpdigital.push.OnDeeplinkResponseListener { *; }
-keep class com.adpdigital.push.AppListener { *; }
-keep class com.adpdigital.push.PushMessage { *; }
-keep class com.adpdigital.push.ChabokMessage { *; }
-keep class com.adpdigital.push.ChabokNotification { *; }
-keep class com.adpdigital.push.DeliveryMessage { *; }
-keep class com.adpdigital.push.EventMessage { *; }
-keep class com.adpdigital.push.MessageSent { *; }
-keep class com.adpdigital.push.BadgeUpdate { *; }
-keep class com.adpdigital.push.Callback { *; }
-keep class com.adpdigital.push.NotificationHandler { *; }
-keep class com.adpdigital.push.ConnectionStatus { *; }
-keep enum com.adpdigital.push.AppState
-keepclassmembers enum com.adpdigital.push.AppState { *;}
-keep class com.adpdigital.push.DeferredData { *; }
-keep class com.adpdigital.push.DeferredDataListener { *; }
-keep class com.adpdigital.push.Datetime { *; }
-keep class com.adpdigital.push.ChabokNotificationAction {*; }
-keep public enum com.adpdigital.push.** { *; }

-keepclassmembernames class com.adpdigital.push.location.GeofenceParams {
    public <methods>;
    public <fields>;
}
-keep public class com.adpdigital.push.location.GeofenceParams$* {
    *;
}
-keep public class com.adpdigital.push.location.LocationParams$* {
    *;
}

-keep public class com.adpdigital.push.location.LocationParams.Builder.** { *; }

-keepclassmembers class com.adpdigital.push.location.LocationParams.** { *; }

-keep class com.adpdigital.push.location.LocationEvent { *; }
-keep class com.adpdigital.push.location.LocationMode { *; }
-keep class com.adpdigital.push.location.LocationAccuracy { *; }
-keep class com.adpdigital.push.location.OnLocationUpdateListener { *; }

-keepnames class com.adpdigital.push.location.LocationManager
-keepclassmembernames class com.adpdigital.push.location.LocationManager {
    public <methods>;
    public <fields>;
}

-keepclassmembers class * {
    public protected *;
    public void onEvent;
    private static class *;
}


# Preserve the special static methods that are required in all enumeration classes.
-keepclassmembers,allowoptimization enum * {
      public static **[] values();
      public static ** valueOf(java.lang.String);
}

-keepclassmembers class * extends java.lang.Enum {
    <fields>;
    public static **[] values();
    public static ** valueOf(java.lang.String);
}

# keep ChabokFirebaseMessaging class public methods and fields
-keepnames class com.adpdigital.push.ChabokFirebaseMessaging
-keepclassmembernames class com.adpdigital.push.ChabokFirebaseMessaging {
    public <methods>;
    public <fields>;
}

# keep ChabokBackupAgent class public methods and fields
-keepnames class com.adpdigital.push.service.ChabokBackupAgent
-keepclassmembernames class com.adpdigital.push.service.ChabokBackupAgent {
    public static ** <methods>;
}

## Remove Logging statements
#-assumenosideeffects class com.adpdigital.push.Logger {
#    public static boolean isLoggable(java.lang.String, int);
#    public static *** d(...);
#    public static *** v(...);
#    public static *** w(...);
#    public static *** e(...);
#    public static *** i(...);
#}

#-assumenosideeffects class android.util.Log {
#    public static boolean isLoggable(java.lang.String, int);
#    public static int d(...);
#    public static int w(...);
#    public static int v(...);
#    public static int i(...);
#}


#not sure if this is neccassary
# pulled from https://github.com/leolin310148/ShortcutBadger/blob/master/ShortcutBadger/proguard-rules.pro
-keep class me.leolin.shortcutbadger.impl.AdwHomeBadger { <init>(...); }
-keep class me.leolin.shortcutbadger.impl.ApexHomeBadger { <init>(...); }
-keep class me.leolin.shortcutbadger.impl.AsusHomeLauncher { <init>(...); }
-keep class me.leolin.shortcutbadger.impl.DefaultBadger { <init>(...); }
-keep class me.leolin.shortcutbadger.impl.NewHtcHomeBadger { <init>(...); }
-keep class me.leolin.shortcutbadger.impl.NovaHomeBadger { <init>(...); }
-keep class me.leolin.shortcutbadger.impl.SolidHomeBadger { <init>(...); }
-keep class me.leolin.shortcutbadger.impl.SonyHomeBadger { <init>(...); }
-keep class me.leolin.shortcutbadger.impl.XiaomiHomeBadger { <init>(...); }